summaryrefslogtreecommitdiffstats
path: root/recipes-kernel/linux/linux-ti33x-psp-3.2
diff options
context:
space:
mode:
authorKoen Kooi <koen@dominion.thruhere.net>2012-02-14 19:11:39 +0100
committerDenys Dmytriyenko <denys@ti.com>2012-02-27 09:04:29 -0500
commit2425d6e457b51e756a742c58494e86d36fca0839 (patch)
tree0013e371ff581acbd79945cd409a0d18b5a388b9 /recipes-kernel/linux/linux-ti33x-psp-3.2
parentc4eefd753012467261cf221babd2e8639b81d3ca (diff)
downloadmeta-ti-2425d6e457b51e756a742c58494e86d36fca0839.tar.gz
linux-ti335x-psp 3.2: update to 3.2.6
Readahead fixed! Signed-off-by: Koen Kooi <koen@dominion.thruhere.net> Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Diffstat (limited to 'recipes-kernel/linux/linux-ti33x-psp-3.2')
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0001-readahead-fix-pipeline-break-caused-by-block-plug.patch99
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0002-ALSA-hda-Fix-the-logic-to-detect-VIA-analog-low-curr.patch35
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0003-ALSA-HDA-Remove-quirk-for-Asus-N53Jq.patch35
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0004-ALSA-hda-Apply-0x0f-VREF-fix-to-all-ASUS-laptops-wit.patch117
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0005-ALSA-hda-Fix-calling-cs_automic-twice-for-Cirrus-cod.patch45
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0006-ALSA-hda-Allow-analog-low-current-mode-when-dynamic-.patch105
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0007-ALSA-HDA-Fix-duplicated-output-to-more-than-one-code.patch36
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0008-ALSA-hda-Disable-dynamic-power-control-for-VIA-as-de.patch34
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0009-ASoC-wm_hubs-Enable-line-out-VMID-buffer-for-single-.patch57
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0010-ASoC-wm_hubs-fix-wrong-bits-for-LINEOUT2-N-P-mixer.patch32
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0011-ARM-7306-1-vfp-flush-thread-hwstate-before-restoring.patch60
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0012-ARM-7307-1-vfp-fix-ptrace-regset-modification-race.patch68
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0013-ARM-7308-1-vfp-flush-thread-hwstate-before-copying-p.patch41
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0014-ARM-OMAP2-GPMC-fix-device-size-setup.patch43
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0015-drivers-tty-vt-vt_ioctl.c-fix-KDFONTOP-32bit-compati.patch44
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0016-proc-mem_release-should-check-mm-NULL.patch34
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0017-proc-unify-mem_read-and-mem_write.patch148
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0018-proc-make-sure-mem_open-doesn-t-pin-the-target-s-mem.patch79
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0019-firewire-ohci-add-reset-packet-quirk-for-SB-Audigy.patch43
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0020-firewire-ohci-disable-MSI-on-Ricoh-controllers.patch43
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0021-IB-mlx4-pass-SMP-vendor-specific-attribute-MADs-to-f.patch90
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0022-RDMA-core-Fix-kernel-panic-by-always-initializing-qp.patch68
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0023-kprobes-fix-a-memory-leak-in-function-pre_handler_kr.patch52
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0024-mtd-gpmi-nand-bugfix-reset-the-BCH-module-when-it-is.patch72
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0025-Revert-mtd-atmel_nand-optimize-read-write-buffer-fun.patch113
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0026-at_hdmac-bugfix-for-enabling-channel-irq.patch92
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0027-mm-filemap_xip.c-fix-race-condition-in-xip_file_faul.patch58
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0028-mm-compaction-check-pfn_valid-when-entering-a-new-MA.patch112
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0029-PM-Hibernate-Fix-s2disk-regression-related-to-freezi.patch100
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0030-PM-QoS-CPU-C-state-breakage-with-PM-Qos-change.patch57
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0031-drm-radeon-Set-DESKTOP_HEIGHT-register-to-the-frameb.patch55
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0032-drm-nouveau-gem-fix-fence_sync-race-oops.patch108
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0033-drm-radeon-kms-disable-output-polling-when-suspended.patch44
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0034-drm-radeon-kms-fix-TRAVIS-panel-setup.patch53
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0035-sched-rt-Fix-task-stack-corruption-under-__ARCH_WANT.patch94
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0036-PM-Hibernate-Thaw-processes-in-SNAPSHOT_CREATE_IMAGE.patch83
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0037-PM-Hibernate-Thaw-kernel-threads-in-SNAPSHOT_CREATE_.patch48
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0038-8139cp-fix-missing-napi_gro_flush.patch33
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0039-udf-Mark-LVID-buffer-as-uptodate-before-marking-it-d.patch40
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0040-drm-i915-HDMI-hot-remove-notification-to-audio-drive.patch53
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0041-drm-i915-DisplayPort-hot-remove-notification-to-audi.patch40
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0042-drm-i915-check-ACTHD-of-all-rings.patch92
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0043-drm-i915-Fix-TV-Out-refresh-rate.patch98
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0044-drm-i915-handle-3rd-pipe.patch37
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0045-drm-i915-convert-force_wake_get-to-func-pointer-in-t.patch42
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0046-drm-i915-protect-force_wake_-get-put-with-the-gt_loc.patch163
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0047-eCryptfs-Infinite-loop-due-to-overflow-in-ecryptfs_w.patch51
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0048-hwmon-w83627ehf-Fix-number-of-fans-for-NCT6776F.patch55
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0049-cifs-Fix-oops-in-session-setup-code-for-null-user-mo.patch47
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0050-atmel_lcdfb-fix-usage-of-CONTRAST_CTR-in-suspend-res.patch36
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0051-lockdep-bug-Exclude-TAINT_FIRMWARE_WORKAROUND-from-d.patch56
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0052-lockdep-bug-Exclude-TAINT_OOT_MODULE-from-disabling-.patch56
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0053-iscsi-target-Fix-reject-release-handling-in-iscsit_f.patch79
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0054-iscsi-target-Fix-double-list_add-with-iscsit_alloc_b.patch35
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0055-iscsi-target-Fix-discovery-with-INADDR_ANY-and-IN6AD.patch176
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0056-ASoC-wm_hubs-Fix-routing-of-input-PGAs-to-line-outpu.patch46
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0057-ASoC-wm_hubs-Correct-line-input-to-line-output-2-pat.patch35
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0058-ASoC-wm8962-Fix-word-length-configuration.patch38
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0059-ASoC-wm8994-Enabling-VMID-should-take-a-runtime-PM-r.patch42
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0060-ASoC-wm8994-Fix-typo-in-VMID-ramp-setting.patch31
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0061-pcmcia-fix-socket-refcount-decrementing-on-each-resu.patch179
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0062-ALSA-oxygen-virtuoso-fix-exchanged-L-R-volumes-of-au.patch67
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0063-iommu-amd-Work-around-broken-IVRS-tables.patch37
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0064-iommu-msm-Fix-error-handling-in-msm_iommu_unmap.patch62
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0065-mm-compaction-check-for-overlapping-nodes-during-iso.patch111
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0066-mm-fix-UP-THP-spin_is_locked-BUGs.patch63
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0067-target-Use-correct-preempted-registration-sense-code.patch59
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0068-target-Allow-PERSISTENT-RESERVE-IN-for-non-reservati.patch35
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0069-target-Correct-sense-key-for-INVALID-FIELD-IN-PARAME.patch69
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0070-target-Add-workaround-for-zero-length-control-CDB-ha.patch62
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0071-target-Return-correct-ASC-for-unimplemented-VPD-page.patch37
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0072-target-Fail-INQUIRY-commands-with-EVPD-0-but-PAGE-CO.patch43
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0073-Staging-asus_oled-fix-image-processing.patch59
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0074-Staging-asus_oled-fix-NULL-ptr-crash-on-unloading.patch59
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0075-staging-r8712u-Add-new-Sitecom-UsB-ID.patch32
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0076-staging-r8712u-Use-asynchronous-firmware-loading.patch285
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0077-usb-ch9.h-usb_endpoint_maxp-uses-__le16_to_cpu.patch37
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0078-usb-gadget-zero-fix-bug-in-loopback-autoresume-handl.patch36
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0079-usb-Skip-PCI-USB-quirk-handling-for-Netlogic-XLP.patch45
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0080-USB-usbserial-add-new-PID-number-0xa951-to-the-ftdi-.patch45
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0081-USB-add-new-zte-3g-dongle-s-pid-to-option.c.patch181
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0082-zcache-Set-SWIZ_BITS-to-8-to-reduce-tmem-bucket-lock.patch46
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0083-zcache-fix-deadlock-condition.patch55
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0084-mmc-cb710-core-Add-missing-spin_lock_init-for-irq_lo.patch33
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0085-powernow-k8-Avoid-Pstate-MSR-accesses-on-systems-sup.patch60
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0086-powernow-k8-Fix-indexing-issue.patch86
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0087-Linux-3.2.6.patch24
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/src.txt295
88 files changed, 5785 insertions, 295 deletions
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
new file mode 100644
index 00000000..b6dcc0f5
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0001-readahead-fix-pipeline-break-caused-by-block-plug.patch
@@ -0,0 +1,99 @@
1From 76af79f393ad562077f79627a4c719219ef09ee8 Mon Sep 17 00:00:00 2001
2From: Shaohua Li <shaohua.li@intel.com>
3Date: Fri, 3 Feb 2012 15:37:17 -0800
4Subject: [PATCH 01/87] readahead: fix pipeline break caused by block plug
5
6commit 3deaa7190a8da38453c4fabd9dec7f66d17fff67 upstream.
7
8Herbert Poetzl reported a performance regression since 2.6.39. The test
9is a simple dd read, but with big block size. The reason is:
10
11T1: ra (A, A+128k), (A+128k, A+256k)
12T2: lock_page for page A, submit the 256k
13T3: hit page A+128K, ra (A+256k, A+384). the range isn't submitted
14because of plug and there isn't any lock_page till we hit page A+256k
15because all pages from A to A+256k is in memory
16T4: hit page A+256k, ra (A+384, A+ 512). Because of plug, the range isn't
17submitted again.
18T5: lock_page A+256k, so (A+256k, A+512k) will be submitted. The task is
19waitting for (A+256k, A+512k) finish.
20
21There is no request to disk in T3 and T4, so readahead pipeline breaks.
22
23We really don't need block plug for generic_file_aio_read() for buffered
24I/O. The readahead already has plug and has fine grained control when I/O
25should be submitted. Deleting plug for buffered I/O fixes the regression.
26
27One side effect is plug makes the request size 256k, the size is 128k
28without it. This is because default ra size is 128k and not a reason we
29need plug here.
30
31Vivek said:
32
33: We submit some readahead IO to device request queue but because of nested
34: plug, queue never gets unplugged. When read logic reaches a page which is
35: not in page cache, it waits for page to be read from the disk
36: (lock_page_killable()) and that time we flush the plug list.
37:
38: So effectively read ahead logic is kind of broken in parts because of
39: nested plugging. Removing top level plug (generic_file_aio_read()) for
40: buffered reads, will allow unplugging queue earlier for readahead.
41
42Signed-off-by: Shaohua Li <shaohua.li@intel.com>
43Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
44Reported-by: Herbert Poetzl <herbert@13thfloor.at>
45Tested-by: Eric Dumazet <eric.dumazet@gmail.com>
46Cc: Christoph Hellwig <hch@infradead.org>
47Cc: Jens Axboe <axboe@kernel.dk>
48Cc: Vivek Goyal <vgoyal@redhat.com>
49Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
50Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
51Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
52---
53 mm/filemap.c | 8 ++++----
54 1 files changed, 4 insertions(+), 4 deletions(-)
55
56diff --git a/mm/filemap.c b/mm/filemap.c
57index 90286a4..03c5b0e 100644
58--- a/mm/filemap.c
59+++ b/mm/filemap.c
60@@ -1400,15 +1400,12 @@ generic_file_aio_read(struct kiocb *iocb, const struct iovec *iov,
61 unsigned long seg = 0;
62 size_t count;
63 loff_t *ppos = &iocb->ki_pos;
64- struct blk_plug plug;
65
66 count = 0;
67 retval = generic_segment_checks(iov, &nr_segs, &count, VERIFY_WRITE);
68 if (retval)
69 return retval;
70
71- blk_start_plug(&plug);
72-
73 /* coalesce the iovecs and go direct-to-BIO for O_DIRECT */
74 if (filp->f_flags & O_DIRECT) {
75 loff_t size;
76@@ -1424,8 +1421,12 @@ generic_file_aio_read(struct kiocb *iocb, const struct iovec *iov,
77 retval = filemap_write_and_wait_range(mapping, pos,
78 pos + iov_length(iov, nr_segs) - 1);
79 if (!retval) {
80+ struct blk_plug plug;
81+
82+ blk_start_plug(&plug);
83 retval = mapping->a_ops->direct_IO(READ, iocb,
84 iov, pos, nr_segs);
85+ blk_finish_plug(&plug);
86 }
87 if (retval > 0) {
88 *ppos = pos + retval;
89@@ -1481,7 +1482,6 @@ generic_file_aio_read(struct kiocb *iocb, const struct iovec *iov,
90 break;
91 }
92 out:
93- blk_finish_plug(&plug);
94 return retval;
95 }
96 EXPORT_SYMBOL(generic_file_aio_read);
97--
981.7.7.4
99
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
new file mode 100644
index 00000000..a25fadf5
--- /dev/null
+++ 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
@@ -0,0 +1,35 @@
1From 02e85499ffcb080ef11c8cc1b092e033f90651f5 Mon Sep 17 00:00:00 2001
2From: Takashi Iwai <tiwai@suse.de>
3Date: Tue, 24 Jan 2012 13:58:36 +0100
4Subject: [PATCH 02/87] ALSA: hda - Fix the logic to detect VIA analog
5 low-current mode
6
7commit 924339239fd5ba3e505f9420d41f0939196f3530 upstream.
8
9The analog low-current mode must be enabled when the no stream is
10running but the current detection checks it in a wrong way.
11
12Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=741128
13
14Signed-off-by: Takashi Iwai <tiwai@suse.de>
15Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
16---
17 sound/pci/hda/patch_via.c | 2 +-
18 1 files changed, 1 insertions(+), 1 deletions(-)
19
20diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c
21index 8d69e59..0684542 100644
22--- a/sound/pci/hda/patch_via.c
23+++ b/sound/pci/hda/patch_via.c
24@@ -1041,7 +1041,7 @@ static void analog_low_current_mode(struct hda_codec *codec)
25 bool enable;
26 unsigned int verb, parm;
27
28- enable = is_aa_path_mute(codec) && (spec->opened_streams != 0);
29+ enable = is_aa_path_mute(codec) && !spec->opened_streams;
30
31 /* decide low current mode's verb & parameter */
32 switch (spec->codec_type) {
33--
341.7.7.4
35
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
new file mode 100644
index 00000000..13ad2bca
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0003-ALSA-HDA-Remove-quirk-for-Asus-N53Jq.patch
@@ -0,0 +1,35 @@
1From ab692dfced98f2967cf710941d686e66cf519afb Mon Sep 17 00:00:00 2001
2From: David Henningsson <david.henningsson@canonical.com>
3Date: Fri, 27 Jan 2012 14:31:19 +0100
4Subject: [PATCH 03/87] ALSA: HDA: Remove quirk for Asus N53Jq
5
6commit a389d67cf9849aff1722ed73186a584e2196a873 upstream.
7
8The user reports that he needs to add model=auto for audio to
9work properly. In fact, since node 0x15 is not even a pin node,
10the existing fixup is definitely wrong. Relevant information can
11be found in the buglink below.
12
13BugLink: https://bugs.launchpad.net/bugs/918254
14Signed-off-by: David Henningsson <david.henningsson@canonical.com>
15Signed-off-by: Takashi Iwai <tiwai@suse.de>
16Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17---
18 sound/pci/hda/patch_realtek.c | 1 -
19 1 files changed, 0 insertions(+), 1 deletions(-)
20
21diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
22index 5f03c40..d02e8e0 100644
23--- a/sound/pci/hda/patch_realtek.c
24+++ b/sound/pci/hda/patch_realtek.c
25@@ -5011,7 +5011,6 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
26 SND_PCI_QUIRK(0x1043, 0x8330, "ASUS Eeepc P703 P900A",
27 ALC269_FIXUP_AMIC),
28 SND_PCI_QUIRK(0x1043, 0x1013, "ASUS N61Da", ALC269_FIXUP_AMIC),
29- SND_PCI_QUIRK(0x1043, 0x1113, "ASUS N63Jn", ALC269_FIXUP_AMIC),
30 SND_PCI_QUIRK(0x1043, 0x1143, "ASUS B53f", ALC269_FIXUP_AMIC),
31 SND_PCI_QUIRK(0x1043, 0x1133, "ASUS UJ20ft", ALC269_FIXUP_AMIC),
32 SND_PCI_QUIRK(0x1043, 0x1183, "ASUS K72DR", ALC269_FIXUP_AMIC),
33--
341.7.7.4
35
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
new file mode 100644
index 00000000..e25d66c9
--- /dev/null
+++ 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
@@ -0,0 +1,117 @@
1From 4f53e64f2effdcbd8f563411031fdc5172f876ce Mon Sep 17 00:00:00 2001
2From: Takashi Iwai <tiwai@suse.de>
3Date: Mon, 30 Jan 2012 10:54:08 +0100
4Subject: [PATCH 04/87] ALSA: hda - Apply 0x0f-VREF fix to all ASUS laptops
5 with ALC861/660
6
7commit 31150f2327cbb66363f38e13ca1be973d2f9203a upstream.
8
9It turned out that other ASUS laptops require the similar fix to
10enable the VREF on the pin 0x0f for the secret output amp, not only
11ASUS A6Rp. Moreover, it's required even when the pin is being used
12as the output. Thus, writing a fixed value doesn't work always.
13
14This patch applies the VREF-fix for all ASUS laptops with ALC861/660
15in a fixup function that checks the current value and turns on only
16the VREF value no matter whether input or output direction is set.
17
18The automute function is modified as well to keep the pin VREF upon
19muting/unmuting via pin-control; otherwise the pin VREF is reset at
20plugging/unplugging a jack.
21
22Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42588
23
24Signed-off-by: Takashi Iwai <tiwai@suse.de>
25Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
26---
27 sound/pci/hda/patch_realtek.c | 43 +++++++++++++++++++++++++++++++++-------
28 1 files changed, 35 insertions(+), 8 deletions(-)
29
30diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
31index d02e8e0..34e5fcc 100644
32--- a/sound/pci/hda/patch_realtek.c
33+++ b/sound/pci/hda/patch_realtek.c
34@@ -176,6 +176,7 @@ struct alc_spec {
35 unsigned int detect_lo:1; /* Line-out detection enabled */
36 unsigned int automute_speaker_possible:1; /* there are speakers and either LO or HP */
37 unsigned int automute_lo_possible:1; /* there are line outs and HP */
38+ unsigned int keep_vref_in_automute:1; /* Don't clear VREF in automute */
39
40 /* other flags */
41 unsigned int no_analog :1; /* digital I/O only */
42@@ -519,13 +520,24 @@ static void do_automute(struct hda_codec *codec, int num_pins, hda_nid_t *pins,
43
44 for (i = 0; i < num_pins; i++) {
45 hda_nid_t nid = pins[i];
46+ unsigned int val;
47 if (!nid)
48 break;
49 switch (spec->automute_mode) {
50 case ALC_AUTOMUTE_PIN:
51+ /* don't reset VREF value in case it's controlling
52+ * the amp (see alc861_fixup_asus_amp_vref_0f())
53+ */
54+ if (spec->keep_vref_in_automute) {
55+ val = snd_hda_codec_read(codec, nid, 0,
56+ AC_VERB_GET_PIN_WIDGET_CONTROL, 0);
57+ val &= ~PIN_HP;
58+ } else
59+ val = 0;
60+ val |= pin_bits;
61 snd_hda_codec_write(codec, nid, 0,
62 AC_VERB_SET_PIN_WIDGET_CONTROL,
63- pin_bits);
64+ val);
65 break;
66 case ALC_AUTOMUTE_AMP:
67 snd_hda_codec_amp_stereo(codec, nid, HDA_OUTPUT, 0,
68@@ -5225,6 +5237,25 @@ enum {
69 PINFIX_ASUS_A6RP,
70 };
71
72+/* On some laptops, VREF of pin 0x0f is abused for controlling the main amp */
73+static void alc861_fixup_asus_amp_vref_0f(struct hda_codec *codec,
74+ const struct alc_fixup *fix, int action)
75+{
76+ struct alc_spec *spec = codec->spec;
77+ unsigned int val;
78+
79+ if (action != ALC_FIXUP_ACT_INIT)
80+ return;
81+ val = snd_hda_codec_read(codec, 0x0f, 0,
82+ AC_VERB_GET_PIN_WIDGET_CONTROL, 0);
83+ if (!(val & (AC_PINCTL_IN_EN | AC_PINCTL_OUT_EN)))
84+ val |= AC_PINCTL_IN_EN;
85+ val |= AC_PINCTL_VREF_50;
86+ snd_hda_codec_write(codec, 0x0f, 0,
87+ AC_VERB_SET_PIN_WIDGET_CONTROL, val);
88+ spec->keep_vref_in_automute = 1;
89+}
90+
91 static const struct alc_fixup alc861_fixups[] = {
92 [PINFIX_FSC_AMILO_PI1505] = {
93 .type = ALC_FIXUP_PINS,
94@@ -5235,17 +5266,13 @@ static const struct alc_fixup alc861_fixups[] = {
95 }
96 },
97 [PINFIX_ASUS_A6RP] = {
98- .type = ALC_FIXUP_VERBS,
99- .v.verbs = (const struct hda_verb[]) {
100- /* node 0x0f VREF seems controlling the master output */
101- { 0x0f, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF50 },
102- { }
103- },
104+ .type = ALC_FIXUP_FUNC,
105+ .v.func = alc861_fixup_asus_amp_vref_0f,
106 },
107 };
108
109 static const struct snd_pci_quirk alc861_fixup_tbl[] = {
110- SND_PCI_QUIRK(0x1043, 0x1393, "ASUS A6Rp", PINFIX_ASUS_A6RP),
111+ SND_PCI_QUIRK_VENDOR(0x1043, "ASUS laptop", PINFIX_ASUS_A6RP),
112 SND_PCI_QUIRK(0x1584, 0x2b01, "Haier W18", PINFIX_ASUS_A6RP),
113 SND_PCI_QUIRK(0x1734, 0x10c7, "FSC Amilo Pi1505", PINFIX_FSC_AMILO_PI1505),
114 {}
115--
1161.7.7.4
117
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
new file mode 100644
index 00000000..db90e5db
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0005-ALSA-hda-Fix-calling-cs_automic-twice-for-Cirrus-cod.patch
@@ -0,0 +1,45 @@
1From d0f03303d8a9c7c82856c50e6c7ea137c8ca7c83 Mon Sep 17 00:00:00 2001
2From: Dylan Reid <dgreid@chromium.org>
3Date: Tue, 31 Jan 2012 13:04:41 -0800
4Subject: [PATCH 05/87] ALSA: hda - Fix calling cs_automic twice for Cirrus
5 codecs.
6
7commit f70eecde3bca92630d3886496e73316ff353f185 upstream.
8
9If cs_automic is called twice (like it is during init) while the mic
10is present, it will over-write the last_input with the new one,
11causing it to switch back to the automic input when the mic is
12unplugged. This leaves the driver in a state (cur_input, last_input,
13and automix_idx the same) where the internal mic can not be selected
14until it is rebooted without the mic attached.
15
16Check that the mic hasn't already been switched to before setting
17last_input.
18
19Signed-off-by: Dylan Reid <dgreid@chromium.org>
20Signed-off-by: Takashi Iwai <tiwai@suse.de>
21Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
22---
23 sound/pci/hda/patch_cirrus.c | 6 ++++--
24 1 files changed, 4 insertions(+), 2 deletions(-)
25
26diff --git a/sound/pci/hda/patch_cirrus.c b/sound/pci/hda/patch_cirrus.c
27index 5b0a9bb..ec0518e 100644
28--- a/sound/pci/hda/patch_cirrus.c
29+++ b/sound/pci/hda/patch_cirrus.c
30@@ -976,8 +976,10 @@ static void cs_automic(struct hda_codec *codec)
31 /* specific to CS421x, single ADC */
32 if (spec->vendor_nid == CS421X_VENDOR_NID) {
33 if (present) {
34- spec->last_input = spec->cur_input;
35- spec->cur_input = spec->automic_idx;
36+ if (spec->cur_input != spec->automic_idx) {
37+ spec->last_input = spec->cur_input;
38+ spec->cur_input = spec->automic_idx;
39+ }
40 } else {
41 spec->cur_input = spec->last_input;
42 }
43--
441.7.7.4
45
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
new file mode 100644
index 00000000..fba2b6de
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0006-ALSA-hda-Allow-analog-low-current-mode-when-dynamic-.patch
@@ -0,0 +1,105 @@
1From cb935a3a4ffa533491976365aa430ad9d586718f Mon Sep 17 00:00:00 2001
2From: Takashi Iwai <tiwai@suse.de>
3Date: Wed, 1 Feb 2012 10:33:23 +0100
4Subject: [PATCH 06/87] ALSA: hda - Allow analog low-current mode when dynamic
5 power-control is on
6
7commit e9d010c2e8f03952e67a6fd8aed0f0dc92084ccc upstream.
8
9VIA codecs have several different power-saving features, and one of
10them is the analog low-current mode. But it turned out that the ALC
11mode causes pop-noises at each on/off time on some machines. As a
12quick workaround, disable the ALC when another power-saving feature,
13the dynamic pin power-control, is turned off, too, since the dynamic
14power-control is already exposed as a mixer enum element so that user
15can turn it on/off freely.
16
17Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=741128
18
19Signed-off-by: Takashi Iwai <tiwai@suse.de>
20Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
21---
22 sound/pci/hda/patch_via.c | 27 +++++++++++++++++++++------
23 1 files changed, 21 insertions(+), 6 deletions(-)
24
25diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c
26index 0684542..d2a477d 100644
27--- a/sound/pci/hda/patch_via.c
28+++ b/sound/pci/hda/patch_via.c
29@@ -198,6 +198,9 @@ struct via_spec {
30 unsigned int no_pin_power_ctl;
31 enum VIA_HDA_CODEC codec_type;
32
33+ /* analog low-power control */
34+ bool alc_mode;
35+
36 /* smart51 setup */
37 unsigned int smart51_nums;
38 hda_nid_t smart51_pins[2];
39@@ -748,6 +751,7 @@ static int via_pin_power_ctl_put(struct snd_kcontrol *kcontrol,
40 return 0;
41 spec->no_pin_power_ctl = val;
42 set_widgets_power_state(codec);
43+ analog_low_current_mode(codec);
44 return 1;
45 }
46
47@@ -1035,13 +1039,19 @@ static bool is_aa_path_mute(struct hda_codec *codec)
48 }
49
50 /* enter/exit analog low-current mode */
51-static void analog_low_current_mode(struct hda_codec *codec)
52+static void __analog_low_current_mode(struct hda_codec *codec, bool force)
53 {
54 struct via_spec *spec = codec->spec;
55 bool enable;
56 unsigned int verb, parm;
57
58- enable = is_aa_path_mute(codec) && !spec->opened_streams;
59+ if (spec->no_pin_power_ctl)
60+ enable = false;
61+ else
62+ enable = is_aa_path_mute(codec) && !spec->opened_streams;
63+ if (enable == spec->alc_mode && !force)
64+ return;
65+ spec->alc_mode = enable;
66
67 /* decide low current mode's verb & parameter */
68 switch (spec->codec_type) {
69@@ -1073,6 +1083,11 @@ static void analog_low_current_mode(struct hda_codec *codec)
70 snd_hda_codec_write(codec, codec->afg, 0, verb, parm);
71 }
72
73+static void analog_low_current_mode(struct hda_codec *codec)
74+{
75+ return __analog_low_current_mode(codec, false);
76+}
77+
78 /*
79 * generic initialization of ADC, input mixers and output mixers
80 */
81@@ -1498,10 +1513,6 @@ static int via_build_controls(struct hda_codec *codec)
82 return err;
83 }
84
85- /* init power states */
86- set_widgets_power_state(codec);
87- analog_low_current_mode(codec);
88-
89 via_free_kctls(codec); /* no longer needed */
90 return 0;
91 }
92@@ -2771,6 +2782,10 @@ static int via_init(struct hda_codec *codec)
93 for (i = 0; i < spec->num_iverbs; i++)
94 snd_hda_sequence_write(codec, spec->init_verbs[i]);
95
96+ /* init power states */
97+ set_widgets_power_state(codec);
98+ __analog_low_current_mode(codec, true);
99+
100 via_auto_init_multi_out(codec);
101 via_auto_init_hp_out(codec);
102 via_auto_init_speaker_out(codec);
103--
1041.7.7.4
105
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
new file mode 100644
index 00000000..e3e4e6df
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0007-ALSA-HDA-Fix-duplicated-output-to-more-than-one-code.patch
@@ -0,0 +1,36 @@
1From b23a6ba81e42ad2d95afc04840d08b558092ba24 Mon Sep 17 00:00:00 2001
2From: David Henningsson <david.henningsson@canonical.com>
3Date: Wed, 1 Feb 2012 12:05:41 +0100
4Subject: [PATCH 07/87] ALSA: HDA: Fix duplicated output to more than one
5 codec
6
7commit 54c2a89f60fd71b924d0f848ac892442951401a6 upstream.
8
9This typo caused the wrong codec's nid to be checked for wcaps type.
10As a result, sometimes speakers would duplicate the output sent to
11HDMI output.
12
13BugLink: https://bugs.launchpad.net/bugs/924320
14Signed-off-by: David Henningsson <david.henningsson@canonical.com>
15Signed-off-by: Takashi Iwai <tiwai@suse.de>
16Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17---
18 sound/pci/hda/hda_codec.c | 2 +-
19 1 files changed, 1 insertions(+), 1 deletions(-)
20
21diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
22index 4562e9d..05c8768 100644
23--- a/sound/pci/hda/hda_codec.c
24+++ b/sound/pci/hda/hda_codec.c
25@@ -1446,7 +1446,7 @@ void snd_hda_codec_setup_stream(struct hda_codec *codec, hda_nid_t nid,
26 for (i = 0; i < c->cvt_setups.used; i++) {
27 p = snd_array_elem(&c->cvt_setups, i);
28 if (!p->active && p->stream_tag == stream_tag &&
29- get_wcaps_type(get_wcaps(codec, p->nid)) == type)
30+ get_wcaps_type(get_wcaps(c, p->nid)) == type)
31 p->dirty = 1;
32 }
33 }
34--
351.7.7.4
36
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
new file mode 100644
index 00000000..e8afd511
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0008-ALSA-hda-Disable-dynamic-power-control-for-VIA-as-de.patch
@@ -0,0 +1,34 @@
1From 1e7c37777276bcae0ead904309644422bace8608 Mon Sep 17 00:00:00 2001
2From: Takashi Iwai <tiwai@suse.de>
3Date: Thu, 2 Feb 2012 10:30:17 +0100
4Subject: [PATCH 08/87] ALSA: hda - Disable dynamic-power control for VIA as
5 default
6
7commit b5bcc189401c815988b7dd37611fc56f40c9139d upstream.
8
9Since the dynamic pin power-control and the analog low-current mode
10may lead to pop-noise, it's safer to set it off as default.
11
12Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=741128
13
14Signed-off-by: Takashi Iwai <tiwai@suse.de>
15Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
16---
17 sound/pci/hda/patch_via.c | 1 +
18 1 files changed, 1 insertions(+), 0 deletions(-)
19
20diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c
21index d2a477d..a0a3f50 100644
22--- a/sound/pci/hda/patch_via.c
23+++ b/sound/pci/hda/patch_via.c
24@@ -1460,6 +1460,7 @@ static int via_build_controls(struct hda_codec *codec)
25 struct snd_kcontrol *kctl;
26 int err, i;
27
28+ spec->no_pin_power_ctl = 1;
29 if (spec->set_widgets_power_state)
30 if (!via_clone_control(spec, &via_pin_power_ctl_enum))
31 return -ENOMEM;
32--
331.7.7.4
34
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
new file mode 100644
index 00000000..6e82d4b9
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0009-ASoC-wm_hubs-Enable-line-out-VMID-buffer-for-single-.patch
@@ -0,0 +1,57 @@
1From 7e1a603295915f189e0b1b2207f5c9297ee65250 Mon Sep 17 00:00:00 2001
2From: Mark Brown <broonie@opensource.wolfsonmicro.com>
3Date: Fri, 20 Jan 2012 12:19:43 +0000
4Subject: [PATCH 09/87] ASoC: wm_hubs: Enable line out VMID buffer for single
5 ended line outputs
6
7commit 77231abe55433aa17eca712718745275853fa66d upstream.
8
9For optimal performance the single ended line outputs require that the
10line output VMID buffer be enabled.
11
12Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
14---
15 sound/soc/codecs/wm_hubs.c | 6 ++++++
16 1 files changed, 6 insertions(+), 0 deletions(-)
17
18diff --git a/sound/soc/codecs/wm_hubs.c b/sound/soc/codecs/wm_hubs.c
19index 48e61e9..8c26c6d 100644
20--- a/sound/soc/codecs/wm_hubs.c
21+++ b/sound/soc/codecs/wm_hubs.c
22@@ -614,6 +614,8 @@ SND_SOC_DAPM_INPUT("IN2RP:VXRP"),
23 SND_SOC_DAPM_MICBIAS("MICBIAS2", WM8993_POWER_MANAGEMENT_1, 5, 0),
24 SND_SOC_DAPM_MICBIAS("MICBIAS1", WM8993_POWER_MANAGEMENT_1, 4, 0),
25
26+SND_SOC_DAPM_SUPPLY("LINEOUT_VMID_BUF", WM8993_ANTIPOP1, 7, 0, NULL, 0),
27+
28 SND_SOC_DAPM_MIXER("IN1L PGA", WM8993_POWER_MANAGEMENT_2, 6, 0,
29 in1l_pga, ARRAY_SIZE(in1l_pga)),
30 SND_SOC_DAPM_MIXER("IN1R PGA", WM8993_POWER_MANAGEMENT_2, 4, 0,
31@@ -832,9 +834,11 @@ static const struct snd_soc_dapm_route lineout1_diff_routes[] = {
32 };
33
34 static const struct snd_soc_dapm_route lineout1_se_routes[] = {
35+ { "LINEOUT1N Mixer", NULL, "LINEOUT_VMID_BUF" },
36 { "LINEOUT1N Mixer", "Left Output Switch", "Left Output PGA" },
37 { "LINEOUT1N Mixer", "Right Output Switch", "Right Output PGA" },
38
39+ { "LINEOUT1P Mixer", NULL, "LINEOUT_VMID_BUF" },
40 { "LINEOUT1P Mixer", "Left Output Switch", "Left Output PGA" },
41
42 { "LINEOUT1N Driver", NULL, "LINEOUT1N Mixer" },
43@@ -851,9 +855,11 @@ static const struct snd_soc_dapm_route lineout2_diff_routes[] = {
44 };
45
46 static const struct snd_soc_dapm_route lineout2_se_routes[] = {
47+ { "LINEOUT2N Mixer", NULL, "LINEOUT_VMID_BUF" },
48 { "LINEOUT2N Mixer", "Left Output Switch", "Left Output PGA" },
49 { "LINEOUT2N Mixer", "Right Output Switch", "Right Output PGA" },
50
51+ { "LINEOUT2P Mixer", NULL, "LINEOUT_VMID_BUF" },
52 { "LINEOUT2P Mixer", "Right Output Switch", "Right Output PGA" },
53
54 { "LINEOUT2N Driver", NULL, "LINEOUT2N Mixer" },
55--
561.7.7.4
57
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
new file mode 100644
index 00000000..13e59365
--- /dev/null
+++ 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
@@ -0,0 +1,32 @@
1From f886b09222d9ae6a977aa75e7b1e924fddca2d5f Mon Sep 17 00:00:00 2001
2From: UK KIM <w0806.kim@samsung.com>
3Date: Sat, 28 Jan 2012 01:52:22 +0900
4Subject: [PATCH 10/87] ASoC: wm_hubs: fix wrong bits for LINEOUT2 N/P mixer
5
6commit 114395c61ad2eb5a7a5cd163fcadb2414e48245a upstream.
7
8Signed-off-by: UK KIM <w0806.kim@samsung.com>
9Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
10Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11---
12 sound/soc/codecs/wm_hubs.c | 4 ++--
13 1 files changed, 2 insertions(+), 2 deletions(-)
14
15diff --git a/sound/soc/codecs/wm_hubs.c b/sound/soc/codecs/wm_hubs.c
16index 8c26c6d..8547191 100644
17--- a/sound/soc/codecs/wm_hubs.c
18+++ b/sound/soc/codecs/wm_hubs.c
19@@ -593,8 +593,8 @@ SOC_DAPM_SINGLE("Output Switch", WM8993_LINE_MIXER2, 0, 1, 0),
20 };
21
22 static const struct snd_kcontrol_new line2n_mix[] = {
23-SOC_DAPM_SINGLE("Left Output Switch", WM8993_LINE_MIXER2, 6, 1, 0),
24-SOC_DAPM_SINGLE("Right Output Switch", WM8993_LINE_MIXER2, 5, 1, 0),
25+SOC_DAPM_SINGLE("Left Output Switch", WM8993_LINE_MIXER2, 5, 1, 0),
26+SOC_DAPM_SINGLE("Right Output Switch", WM8993_LINE_MIXER2, 6, 1, 0),
27 };
28
29 static const struct snd_kcontrol_new line2p_mix[] = {
30--
311.7.7.4
32
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
new file mode 100644
index 00000000..116be5f5
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0011-ARM-7306-1-vfp-flush-thread-hwstate-before-restoring.patch
@@ -0,0 +1,60 @@
1From 04c6e8a2521ffa7049aa6df835d48d4bfce37a8e Mon Sep 17 00:00:00 2001
2From: Will Deacon <will.deacon@arm.com>
3Date: Mon, 30 Jan 2012 20:21:42 +0100
4Subject: [PATCH 11/87] ARM: 7306/1: vfp: flush thread hwstate before
5 restoring context from sigframe
6
7commit 2af276dfb1722e97b190bd2e646b079a2aa674db upstream.
8
9Following execution of a signal handler, we currently restore the VFP
10context from the ucontext in the signal frame. This involves copying
11from the user stack into the current thread's vfp_hard_struct and then
12flushing the new data out to the hardware registers.
13
14This is problematic when using a preemptible kernel because we could be
15context switched whilst updating the vfp_hard_struct. If the current
16thread has made use of VFP since the last context switch, the VFP
17notifier will copy from the hardware registers into the vfp_hard_struct,
18overwriting any data that had been partially copied by the signal code.
19
20Disabling preemption across copy_from_user calls is a terrible idea, so
21instead we move the VFP thread flush *before* we update the
22vfp_hard_struct. Since the flushing is performed lazily, this has the
23effect of disabling VFP and clearing the CPU's VFP state pointer,
24therefore preventing the thread from being updated with stale data on
25the next context switch.
26
27Tested-by: Peter Maydell <peter.maydell@linaro.org>
28Signed-off-by: Will Deacon <will.deacon@arm.com>
29Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
30Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
31---
32 arch/arm/kernel/signal.c | 5 ++---
33 1 files changed, 2 insertions(+), 3 deletions(-)
34
35diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c
36index 0340224..9e617bd 100644
37--- a/arch/arm/kernel/signal.c
38+++ b/arch/arm/kernel/signal.c
39@@ -227,6 +227,8 @@ static int restore_vfp_context(struct vfp_sigframe __user *frame)
40 if (magic != VFP_MAGIC || size != VFP_STORAGE_SIZE)
41 return -EINVAL;
42
43+ vfp_flush_hwstate(thread);
44+
45 /*
46 * Copy the floating point registers. There can be unused
47 * registers see asm/hwcap.h for details.
48@@ -251,9 +253,6 @@ static int restore_vfp_context(struct vfp_sigframe __user *frame)
49 __get_user_error(h->fpinst, &frame->ufp_exc.fpinst, err);
50 __get_user_error(h->fpinst2, &frame->ufp_exc.fpinst2, err);
51
52- if (!err)
53- vfp_flush_hwstate(thread);
54-
55 return err ? -EFAULT : 0;
56 }
57
58--
591.7.7.4
60
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
new file mode 100644
index 00000000..139c7668
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0012-ARM-7307-1-vfp-fix-ptrace-regset-modification-race.patch
@@ -0,0 +1,68 @@
1From c85ca4cdfafaee9fd428b934fea18e5c2d850fb6 Mon Sep 17 00:00:00 2001
2From: Dave Martin <dave.martin@linaro.org>
3Date: Mon, 30 Jan 2012 20:22:28 +0100
4Subject: [PATCH 12/87] ARM: 7307/1: vfp: fix ptrace regset modification race
5
6commit 247f4993a5974e6759606c4d380748eecfd273ff upstream.
7
8In a preemptible kernel, vfp_set() can be preempted, causing the
9hardware VFP context to be switched while the thread vfp state is
10being read and modified. This leads to a race condition which can
11cause the thread vfp state to become corrupted if lazy VFP context
12save occurs due to preemption in between the time thread->vfpstate
13is read and the time the modified state is written back.
14
15This may occur if preemption occurs during the execution of a
16ptrace() call which modifies the VFP register state of a thread.
17Such instances should be very rare in most realistic scenarios --
18none has been reported, so far as I am aware. Only uniprocessor
19systems should be affected, since VFP context save is not currently
20lazy in SMP kernels.
21
22The problem was introduced by my earlier patch migrating to use
23regsets to implement ptrace.
24
25This patch does a vfp_sync_hwstate() before reading
26thread->vfpstate, to make sure that the thread's VFP state is not
27live in the hardware registers while the registers are modified.
28
29Thanks to Will Deacon for spotting this.
30
31Signed-off-by: Dave Martin <dave.martin@linaro.org>
32Signed-off-by: Will Deacon <will.deacon@arm.com>
33Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
34Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
35---
36 arch/arm/kernel/ptrace.c | 6 ++++--
37 1 files changed, 4 insertions(+), 2 deletions(-)
38
39diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c
40index 483727a..8b17fb4 100644
41--- a/arch/arm/kernel/ptrace.c
42+++ b/arch/arm/kernel/ptrace.c
43@@ -699,10 +699,13 @@ static int vfp_set(struct task_struct *target,
44 {
45 int ret;
46 struct thread_info *thread = task_thread_info(target);
47- struct vfp_hard_struct new_vfp = thread->vfpstate.hard;
48+ struct vfp_hard_struct new_vfp;
49 const size_t user_fpregs_offset = offsetof(struct user_vfp, fpregs);
50 const size_t user_fpscr_offset = offsetof(struct user_vfp, fpscr);
51
52+ vfp_sync_hwstate(thread);
53+ new_vfp = thread->vfpstate.hard;
54+
55 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
56 &new_vfp.fpregs,
57 user_fpregs_offset,
58@@ -723,7 +726,6 @@ static int vfp_set(struct task_struct *target,
59 if (ret)
60 return ret;
61
62- vfp_sync_hwstate(thread);
63 thread->vfpstate.hard = new_vfp;
64 vfp_flush_hwstate(thread);
65
66--
671.7.7.4
68
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
new file mode 100644
index 00000000..df943e4a
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0013-ARM-7308-1-vfp-flush-thread-hwstate-before-copying-p.patch
@@ -0,0 +1,41 @@
1From a4e4a6ee0cc6e069926d006b7a6efd73d33edfcc Mon Sep 17 00:00:00 2001
2From: Will Deacon <will.deacon@arm.com>
3Date: Mon, 30 Jan 2012 20:23:29 +0100
4Subject: [PATCH 13/87] ARM: 7308/1: vfp: flush thread hwstate before copying
5 ptrace registers
6
7commit 8130b9d7b9d858aa04ce67805e8951e3cb6e9b2f upstream.
8
9If we are context switched whilst copying into a thread's
10vfp_hard_struct then the partial copy may be corrupted by the VFP
11context switching code (see "ARM: vfp: flush thread hwstate before
12restoring context from sigframe").
13
14This patch updates the ptrace VFP set code so that the thread state is
15flushed before the copy, therefore disabling VFP and preventing
16corruption from occurring.
17
18Signed-off-by: Will Deacon <will.deacon@arm.com>
19Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
20Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
21---
22 arch/arm/kernel/ptrace.c | 2 +-
23 1 files changed, 1 insertions(+), 1 deletions(-)
24
25diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c
26index 8b17fb4..90fa8b3 100644
27--- a/arch/arm/kernel/ptrace.c
28+++ b/arch/arm/kernel/ptrace.c
29@@ -726,8 +726,8 @@ static int vfp_set(struct task_struct *target,
30 if (ret)
31 return ret;
32
33- thread->vfpstate.hard = new_vfp;
34 vfp_flush_hwstate(thread);
35+ thread->vfpstate.hard = new_vfp;
36
37 return 0;
38 }
39--
401.7.7.4
41
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
new file mode 100644
index 00000000..a2f52fe5
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0014-ARM-OMAP2-GPMC-fix-device-size-setup.patch
@@ -0,0 +1,43 @@
1From 04712489fde65768a46fa4a4b240fff446c17aa6 Mon Sep 17 00:00:00 2001
2From: Yegor Yefremov <yegor_sub1@visionsystems.de>
3Date: Mon, 23 Jan 2012 08:32:23 +0100
4Subject: [PATCH 14/87] ARM: OMAP2+: GPMC: fix device size setup
5
6commit 8ef5d844cc3a644ea6f7665932a4307e9fad01fa upstream.
7
8following statement can only change device size from 8-bit(0) to 16-bit(1),
9but not vice versa:
10
11regval |= GPMC_CONFIG1_DEVICESIZE(wval);
12
13so as this field has 1 reserved bit, that could be used in future,
14just clear both bits and then OR with the desired value
15
16Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
17Signed-off-by: Tony Lindgren <tony@atomide.com>
18Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
19---
20 arch/arm/mach-omap2/gpmc.c | 6 ++++++
21 1 files changed, 6 insertions(+), 0 deletions(-)
22
23diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c
24index 130034b..dfffbbf 100644
25--- a/arch/arm/mach-omap2/gpmc.c
26+++ b/arch/arm/mach-omap2/gpmc.c
27@@ -528,7 +528,13 @@ int gpmc_cs_configure(int cs, int cmd, int wval)
28
29 case GPMC_CONFIG_DEV_SIZE:
30 regval = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG1);
31+
32+ /* clear 2 target bits */
33+ regval &= ~GPMC_CONFIG1_DEVICESIZE(3);
34+
35+ /* set the proper value */
36 regval |= GPMC_CONFIG1_DEVICESIZE(wval);
37+
38 gpmc_cs_write_reg(cs, GPMC_CS_CONFIG1, regval);
39 break;
40
41--
421.7.7.4
43
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
new file mode 100644
index 00000000..9b0e85e6
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0015-drivers-tty-vt-vt_ioctl.c-fix-KDFONTOP-32bit-compati.patch
@@ -0,0 +1,44 @@
1From 58f75a56e37352b7dea174ee75f2ca52218370a7 Mon Sep 17 00:00:00 2001
2From: Samuel Thibault <samuel.thibault@ens-lyon.org>
3Date: Fri, 3 Feb 2012 15:37:15 -0800
4Subject: [PATCH 15/87] drivers/tty/vt/vt_ioctl.c: fix KDFONTOP 32bit
5 compatibility layer
6
7commit cbcb8346054073d000ecac324763372d6abd44ac upstream.
8
9KDFONTOP(GET) currently fails with EIO when being run in a 32bit userland
10with a 64bit kernel if the font width is not 8.
11
12This is because of the setting of the KD_FONT_FLAG_OLD flag, which makes
13con_font_get return EIO in such case.
14
15This flag should *not* be set for KDFONTOP, since it's actually the whole
16point of this flag (see comment in con_font_set for instance).
17
18Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
19Reviewed-by: Arnd Bergmann <arnd@arndb.de>
20Cc: Arthur Taylor <art@ified.ca>
21Cc: Jiri Slaby <jslaby@suse.cz>
22Cc: Jiri Olsa <jolsa@redhat.com>
23Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
24Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
25Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
26---
27 drivers/tty/vt/vt_ioctl.c | 1 -
28 1 files changed, 0 insertions(+), 1 deletions(-)
29
30diff --git a/drivers/tty/vt/vt_ioctl.c b/drivers/tty/vt/vt_ioctl.c
31index 5e096f4..65447c5 100644
32--- a/drivers/tty/vt/vt_ioctl.c
33+++ b/drivers/tty/vt/vt_ioctl.c
34@@ -1463,7 +1463,6 @@ compat_kdfontop_ioctl(struct compat_console_font_op __user *fontop,
35 if (!perm && op->op != KD_FONT_OP_GET)
36 return -EPERM;
37 op->data = compat_ptr(((struct compat_console_font_op *)op)->data);
38- op->flags |= KD_FONT_FLAG_OLD;
39 i = con_font_op(vc, op);
40 if (i)
41 return i;
42--
431.7.7.4
44
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
new file mode 100644
index 00000000..200bc682
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0016-proc-mem_release-should-check-mm-NULL.patch
@@ -0,0 +1,34 @@
1From 3a196fbe2650a4465d49f6e84d9360eab60e3bcb Mon Sep 17 00:00:00 2001
2From: Oleg Nesterov <oleg@redhat.com>
3Date: Tue, 31 Jan 2012 17:14:38 +0100
4Subject: [PATCH 16/87] proc: mem_release() should check mm != NULL
5
6commit 71879d3cb3dd8f2dfdefb252775c1b3ea04a3dd4 upstream.
7
8mem_release() can hit mm == NULL, add the necessary check.
9
10Signed-off-by: Oleg Nesterov <oleg@redhat.com>
11Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
12Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
13---
14 fs/proc/base.c | 4 ++--
15 1 files changed, 2 insertions(+), 2 deletions(-)
16
17diff --git a/fs/proc/base.c b/fs/proc/base.c
18index 1fc1dca..a43c70a 100644
19--- a/fs/proc/base.c
20+++ b/fs/proc/base.c
21@@ -886,8 +886,8 @@ loff_t mem_lseek(struct file *file, loff_t offset, int orig)
22 static int mem_release(struct inode *inode, struct file *file)
23 {
24 struct mm_struct *mm = file->private_data;
25-
26- mmput(mm);
27+ if (mm)
28+ mmput(mm);
29 return 0;
30 }
31
32--
331.7.7.4
34
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
new file mode 100644
index 00000000..1c26c7fa
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0017-proc-unify-mem_read-and-mem_write.patch
@@ -0,0 +1,148 @@
1From 034089b6f4e2ae0d0df38f3409cd73c386ad069a Mon Sep 17 00:00:00 2001
2From: Oleg Nesterov <oleg@redhat.com>
3Date: Tue, 31 Jan 2012 17:14:54 +0100
4Subject: [PATCH 17/87] proc: unify mem_read() and mem_write()
5
6commit 572d34b946bae070debd42db1143034d9687e13f upstream.
7
8No functional changes, cleanup and preparation.
9
10mem_read() and mem_write() are very similar. Move this code into the
11new common helper, mem_rw(), which takes the additional "int write"
12argument.
13
14Signed-off-by: Oleg Nesterov <oleg@redhat.com>
15Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
16Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17---
18 fs/proc/base.c | 90 ++++++++++++++++++++------------------------------------
19 1 files changed, 32 insertions(+), 58 deletions(-)
20
21diff --git a/fs/proc/base.c b/fs/proc/base.c
22index a43c70a..0d3a4d1 100644
23--- a/fs/proc/base.c
24+++ b/fs/proc/base.c
25@@ -782,57 +782,13 @@ static int mem_open(struct inode* inode, struct file* file)
26 return 0;
27 }
28
29-static ssize_t mem_read(struct file * file, char __user * buf,
30- size_t count, loff_t *ppos)
31+static ssize_t mem_rw(struct file *file, char __user *buf,
32+ size_t count, loff_t *ppos, int write)
33 {
34- int ret;
35- char *page;
36- unsigned long src = *ppos;
37 struct mm_struct *mm = file->private_data;
38-
39- if (!mm)
40- return 0;
41-
42- page = (char *)__get_free_page(GFP_TEMPORARY);
43- if (!page)
44- return -ENOMEM;
45-
46- ret = 0;
47-
48- while (count > 0) {
49- int this_len, retval;
50-
51- this_len = (count > PAGE_SIZE) ? PAGE_SIZE : count;
52- retval = access_remote_vm(mm, src, page, this_len, 0);
53- if (!retval) {
54- if (!ret)
55- ret = -EIO;
56- break;
57- }
58-
59- if (copy_to_user(buf, page, retval)) {
60- ret = -EFAULT;
61- break;
62- }
63-
64- ret += retval;
65- src += retval;
66- buf += retval;
67- count -= retval;
68- }
69- *ppos = src;
70-
71- free_page((unsigned long) page);
72- return ret;
73-}
74-
75-static ssize_t mem_write(struct file * file, const char __user *buf,
76- size_t count, loff_t *ppos)
77-{
78- int copied;
79+ unsigned long addr = *ppos;
80+ ssize_t copied;
81 char *page;
82- unsigned long dst = *ppos;
83- struct mm_struct *mm = file->private_data;
84
85 if (!mm)
86 return 0;
87@@ -843,30 +799,48 @@ static ssize_t mem_write(struct file * file, const char __user *buf,
88
89 copied = 0;
90 while (count > 0) {
91- int this_len, retval;
92+ int this_len = min_t(int, count, PAGE_SIZE);
93
94- this_len = (count > PAGE_SIZE) ? PAGE_SIZE : count;
95- if (copy_from_user(page, buf, this_len)) {
96+ if (write && copy_from_user(page, buf, this_len)) {
97 copied = -EFAULT;
98 break;
99 }
100- retval = access_remote_vm(mm, dst, page, this_len, 1);
101- if (!retval) {
102+
103+ this_len = access_remote_vm(mm, addr, page, this_len, write);
104+ if (!this_len) {
105 if (!copied)
106 copied = -EIO;
107 break;
108 }
109- copied += retval;
110- buf += retval;
111- dst += retval;
112- count -= retval;
113+
114+ if (!write && copy_to_user(buf, page, this_len)) {
115+ copied = -EFAULT;
116+ break;
117+ }
118+
119+ buf += this_len;
120+ addr += this_len;
121+ copied += this_len;
122+ count -= this_len;
123 }
124- *ppos = dst;
125+ *ppos = addr;
126
127 free_page((unsigned long) page);
128 return copied;
129 }
130
131+static ssize_t mem_read(struct file *file, char __user *buf,
132+ size_t count, loff_t *ppos)
133+{
134+ return mem_rw(file, buf, count, ppos, 0);
135+}
136+
137+static ssize_t mem_write(struct file *file, const char __user *buf,
138+ size_t count, loff_t *ppos)
139+{
140+ return mem_rw(file, (char __user*)buf, count, ppos, 1);
141+}
142+
143 loff_t mem_lseek(struct file *file, loff_t offset, int orig)
144 {
145 switch (orig) {
146--
1471.7.7.4
148
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
new file mode 100644
index 00000000..836e3029
--- /dev/null
+++ 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
@@ -0,0 +1,79 @@
1From 43904e95ba660b59db5899a4d58a00e4ac4d3663 Mon Sep 17 00:00:00 2001
2From: Oleg Nesterov <oleg@redhat.com>
3Date: Tue, 31 Jan 2012 17:15:11 +0100
4Subject: [PATCH 18/87] proc: make sure mem_open() doesn't pin the target's
5 memory
6
7commit 6d08f2c7139790c268820a2e590795cb8333181a upstream.
8
9Once /proc/pid/mem is opened, the memory can't be released until
10mem_release() even if its owner exits.
11
12Change mem_open() to do atomic_inc(mm_count) + mmput(), this only
13pins mm_struct. Change mem_rw() to do atomic_inc_not_zero(mm_count)
14before access_remote_vm(), this verifies that this mm is still alive.
15
16I am not sure what should mem_rw() return if atomic_inc_not_zero()
17fails. With this patch it returns zero to match the "mm == NULL" case,
18may be it should return -EINVAL like it did before e268337d.
19
20Perhaps it makes sense to add the additional fatal_signal_pending()
21check into the main loop, to ensure we do not hold this memory if
22the target task was oom-killed.
23
24Signed-off-by: Oleg Nesterov <oleg@redhat.com>
25Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
26Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
27---
28 fs/proc/base.c | 14 +++++++++++++-
29 1 files changed, 13 insertions(+), 1 deletions(-)
30
31diff --git a/fs/proc/base.c b/fs/proc/base.c
32index 0d3a4d1..1ace83d 100644
33--- a/fs/proc/base.c
34+++ b/fs/proc/base.c
35@@ -775,6 +775,13 @@ static int mem_open(struct inode* inode, struct file* file)
36 if (IS_ERR(mm))
37 return PTR_ERR(mm);
38
39+ if (mm) {
40+ /* ensure this mm_struct can't be freed */
41+ atomic_inc(&mm->mm_count);
42+ /* but do not pin its memory */
43+ mmput(mm);
44+ }
45+
46 /* OK to pass negative loff_t, we can catch out-of-range */
47 file->f_mode |= FMODE_UNSIGNED_OFFSET;
48 file->private_data = mm;
49@@ -798,6 +805,9 @@ static ssize_t mem_rw(struct file *file, char __user *buf,
50 return -ENOMEM;
51
52 copied = 0;
53+ if (!atomic_inc_not_zero(&mm->mm_users))
54+ goto free;
55+
56 while (count > 0) {
57 int this_len = min_t(int, count, PAGE_SIZE);
58
59@@ -825,6 +835,8 @@ static ssize_t mem_rw(struct file *file, char __user *buf,
60 }
61 *ppos = addr;
62
63+ mmput(mm);
64+free:
65 free_page((unsigned long) page);
66 return copied;
67 }
68@@ -861,7 +873,7 @@ static int mem_release(struct inode *inode, struct file *file)
69 {
70 struct mm_struct *mm = file->private_data;
71 if (mm)
72- mmput(mm);
73+ mmdrop(mm);
74 return 0;
75 }
76
77--
781.7.7.4
79
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
new file mode 100644
index 00000000..d8f6fa03
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0019-firewire-ohci-add-reset-packet-quirk-for-SB-Audigy.patch
@@ -0,0 +1,43 @@
1From 49b7e22b82d73e58a5335820b3f0441b2606515b Mon Sep 17 00:00:00 2001
2From: Clemens Ladisch <clemens@ladisch.de>
3Date: Thu, 26 Jan 2012 22:05:58 +0100
4Subject: [PATCH 19/87] firewire: ohci: add reset packet quirk for SB Audigy
5
6commit d1bb399ad03c11e792f6dea198d3b1e23061f094 upstream.
7
8The Audigy's SB1394 controller is actually from Texas Instruments
9and has the same bus reset packet generation bug, so it needs the
10same quirk entry.
11
12Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
13Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
14Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
15---
16 drivers/firewire/ohci.c | 4 ++++
17 1 files changed, 4 insertions(+), 0 deletions(-)
18
19diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c
20index 6628fea..21250ec 100644
21--- a/drivers/firewire/ohci.c
22+++ b/drivers/firewire/ohci.c
23@@ -263,6 +263,7 @@ static inline struct fw_ohci *fw_ohci(struct fw_card *card)
24 static char ohci_driver_name[] = KBUILD_MODNAME;
25
26 #define PCI_DEVICE_ID_AGERE_FW643 0x5901
27+#define PCI_DEVICE_ID_CREATIVE_SB1394 0x4001
28 #define PCI_DEVICE_ID_JMICRON_JMB38X_FW 0x2380
29 #define PCI_DEVICE_ID_TI_TSB12LV22 0x8009
30 #define PCI_DEVICE_ID_TI_TSB12LV26 0x8020
31@@ -289,6 +290,9 @@ static const struct {
32 {PCI_VENDOR_ID_ATT, PCI_DEVICE_ID_AGERE_FW643, 6,
33 QUIRK_NO_MSI},
34
35+ {PCI_VENDOR_ID_CREATIVE, PCI_DEVICE_ID_CREATIVE_SB1394, PCI_ANY_ID,
36+ QUIRK_RESET_PACKET},
37+
38 {PCI_VENDOR_ID_JMICRON, PCI_DEVICE_ID_JMICRON_JMB38X_FW, PCI_ANY_ID,
39 QUIRK_NO_MSI},
40
41--
421.7.7.4
43
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
new file mode 100644
index 00000000..e758debf
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0020-firewire-ohci-disable-MSI-on-Ricoh-controllers.patch
@@ -0,0 +1,43 @@
1From c1a1e15fd6fe7ed496d115ac9b87649e4d827d65 Mon Sep 17 00:00:00 2001
2From: Stefan Richter <stefanr@s5r6.in-berlin.de>
3Date: Sun, 29 Jan 2012 12:41:15 +0100
4Subject: [PATCH 20/87] firewire: ohci: disable MSI on Ricoh controllers
5
6commit 320cfa6ce0b3dc794fedfa4bae54c0f65077234d upstream.
7
8The PCIe device
9
10 FireWire (IEEE 1394) [0c00]: Ricoh Co Ltd FireWire Host Controller
11 [1180:e832] (prog-if 10 [OHCI])
12
13is unable to access attached FireWire devices when MSI is enabled but
14works if MSI is disabled.
15http://www.mail-archive.com/alsa-user@lists.sourceforge.net/msg28251.html
16
17Hence add the "disable MSI" quirks flag for this device, or in fact for
18safety and simplicity for all current (R5U230, R5U231, R5U240) and
19future Ricoh PCIe 1394 controllers.
20
21Reported-by: Stefan Thomas <kontrapunktstefan@googlemail.com>
22Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
23Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
24---
25 drivers/firewire/ohci.c | 2 +-
26 1 files changed, 1 insertions(+), 1 deletions(-)
27
28diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c
29index 21250ec..7f5f0da 100644
30--- a/drivers/firewire/ohci.c
31+++ b/drivers/firewire/ohci.c
32@@ -303,7 +303,7 @@ static const struct {
33 QUIRK_NO_MSI},
34
35 {PCI_VENDOR_ID_RICOH, PCI_ANY_ID, PCI_ANY_ID,
36- QUIRK_CYCLE_TIMER},
37+ QUIRK_CYCLE_TIMER | QUIRK_NO_MSI},
38
39 {PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_TSB12LV22, PCI_ANY_ID,
40 QUIRK_CYCLE_TIMER | QUIRK_RESET_PACKET | QUIRK_NO_1394A},
41--
421.7.7.4
43
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
new file mode 100644
index 00000000..0307b835
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0021-IB-mlx4-pass-SMP-vendor-specific-attribute-MADs-to-f.patch
@@ -0,0 +1,90 @@
1From a48d135810111baaedd01dfb833c06b094aa3a68 Mon Sep 17 00:00:00 2001
2From: Jack Morgenstein <jackm@mellanox.com>
3Date: Thu, 26 Jan 2012 16:41:33 +0200
4Subject: [PATCH 21/87] IB/mlx4: pass SMP vendor-specific attribute MADs to
5 firmware
6
7commit a6f7feae6d19e84253918d88b04153af09d3a243 upstream.
8
9In the current code, vendor-specific MADs (e.g with the FDR-10
10attribute) are silently dropped by the driver, resulting in timeouts
11at the sending side and inability to query/configure the relevant
12feature. However, the ConnectX firmware is able to handle such MADs.
13For unsupported attributes, the firmware returns a GET_RESPONSE MAD
14containing an error status.
15
16For example, for a FDR-10 node with LID 11:
17
18 # ibstat mlx4_0 1
19
20 CA: 'mlx4_0'
21 Port 1:
22 State: Active
23 Physical state: LinkUp
24 Rate: 40 (FDR10)
25 Base lid: 11
26 LMC: 0
27 SM lid: 24
28 Capability mask: 0x02514868
29 Port GUID: 0x0002c903002e65d1
30 Link layer: InfiniBand
31
32Extended Port Query (EPI) vendor mad timeouts before the patch:
33
34 # smpquery MEPI 11 -d
35
36 ibwarn: [4196] smp_query_via: attr 0xff90 mod 0x0 route Lid 11
37 ibwarn: [4196] _do_madrpc: retry 1 (timeout 1000 ms)
38 ibwarn: [4196] _do_madrpc: retry 2 (timeout 1000 ms)
39 ibwarn: [4196] _do_madrpc: timeout after 3 retries, 3000 ms
40 ibwarn: [4196] mad_rpc: _do_madrpc failed; dport (Lid 11)
41 smpquery: iberror: [pid 4196] main: failed: operation EPI: ext port info query failed
42
43EPI query works OK with the patch:
44
45 # smpquery MEPI 11 -d
46
47 ibwarn: [6548] smp_query_via: attr 0xff90 mod 0x0 route Lid 11
48 ibwarn: [6548] mad_rpc: data offs 64 sz 64
49 mad data
50 0000 0000 0000 0001 0000 0001 0000 0001
51 0000 0000 0000 0000 0000 0000 0000 0000
52 0000 0000 0000 0000 0000 0000 0000 0000
53 0000 0000 0000 0000 0000 0000 0000 0000
54 # Ext Port info: Lid 11 port 0
55 StateChangeEnable:...............0x00
56 LinkSpeedSupported:..............0x01
57 LinkSpeedEnabled:................0x01
58 LinkSpeedActive:.................0x01
59
60Signed-off-by: Jack Morgenstein <jackm@mellanox.com>
61Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
62Acked-by: Ira Weiny <weiny2@llnl.gov>
63Signed-off-by: Roland Dreier <roland@purestorage.com>
64Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
65---
66 drivers/infiniband/hw/mlx4/mad.c | 7 ++-----
67 1 files changed, 2 insertions(+), 5 deletions(-)
68
69diff --git a/drivers/infiniband/hw/mlx4/mad.c b/drivers/infiniband/hw/mlx4/mad.c
70index f36da99..77702c0 100644
71--- a/drivers/infiniband/hw/mlx4/mad.c
72+++ b/drivers/infiniband/hw/mlx4/mad.c
73@@ -256,12 +256,9 @@ static int ib_process_mad(struct ib_device *ibdev, int mad_flags, u8 port_num,
74 return IB_MAD_RESULT_SUCCESS;
75
76 /*
77- * Don't process SMInfo queries or vendor-specific
78- * MADs -- the SMA can't handle them.
79+ * Don't process SMInfo queries -- the SMA can't handle them.
80 */
81- if (in_mad->mad_hdr.attr_id == IB_SMP_ATTR_SM_INFO ||
82- ((in_mad->mad_hdr.attr_id & IB_SMP_ATTR_VENDOR_MASK) ==
83- IB_SMP_ATTR_VENDOR_MASK))
84+ if (in_mad->mad_hdr.attr_id == IB_SMP_ATTR_SM_INFO)
85 return IB_MAD_RESULT_SUCCESS;
86 } else if (in_mad->mad_hdr.mgmt_class == IB_MGMT_CLASS_PERF_MGMT ||
87 in_mad->mad_hdr.mgmt_class == MLX4_IB_VENDOR_CLASS1 ||
88--
891.7.7.4
90
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
new file mode 100644
index 00000000..853d5b94
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0022-RDMA-core-Fix-kernel-panic-by-always-initializing-qp.patch
@@ -0,0 +1,68 @@
1From 3ef7302303a7886fd1e6dea9dd33fe2c41784199 Mon Sep 17 00:00:00 2001
2From: Bernd Schubert <bernd.schubert@itwm.fraunhofer.de>
3Date: Fri, 20 Jan 2012 18:43:54 +0000
4Subject: [PATCH 22/87] RDMA/core: Fix kernel panic by always initializing
5 qp->usecnt
6
7commit e47e321a35c741ee41b67976f8c6a3a7a42bc5c0 upstream.
8
9We have just been investigating kernel panics related to
10cq->ibcq.event_handler() completion calls. The problem is that
11ib_destroy_qp() fails with -EBUSY.
12
13Further investigation revealed qp->usecnt is not initialized. This
14counter was introduced in linux-3.2 by commit 0e0ec7e0638e
15("RDMA/core: Export ib_open_qp() to share XRC TGT QPs") but it only
16gets initialized for IB_QPT_XRC_TGT, but it is checked in
17ib_destroy_qp() for any QP type.
18
19Fix this by initializing qp->usecnt for every QP we create.
20
21Signed-off-by: Bernd Schubert <bernd.schubert@itwm.fraunhofer.de>
22Signed-off-by: Sven Breuner <sven.breuner@itwm.fraunhofer.de>
23
24[ Initialize qp->usecnt in uverbs too. - Sean ]
25
26Signed-off-by: Sean Hefty <sean.hefty@intel.com>
27Signed-off-by: Roland Dreier <roland@purestorage.com>
28Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
29---
30 drivers/infiniband/core/uverbs_cmd.c | 1 +
31 drivers/infiniband/core/verbs.c | 2 +-
32 2 files changed, 2 insertions(+), 1 deletions(-)
33
34diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c
35index e3db8ef..a8445b8 100644
36--- a/drivers/infiniband/core/uverbs_cmd.c
37+++ b/drivers/infiniband/core/uverbs_cmd.c
38@@ -1485,6 +1485,7 @@ ssize_t ib_uverbs_create_qp(struct ib_uverbs_file *file,
39 qp->event_handler = attr.event_handler;
40 qp->qp_context = attr.qp_context;
41 qp->qp_type = attr.qp_type;
42+ atomic_set(&qp->usecnt, 0);
43 atomic_inc(&pd->usecnt);
44 atomic_inc(&attr.send_cq->usecnt);
45 if (attr.recv_cq)
46diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c
47index 602b1bd..575b780 100644
48--- a/drivers/infiniband/core/verbs.c
49+++ b/drivers/infiniband/core/verbs.c
50@@ -421,6 +421,7 @@ struct ib_qp *ib_create_qp(struct ib_pd *pd,
51 qp->uobject = NULL;
52 qp->qp_type = qp_init_attr->qp_type;
53
54+ atomic_set(&qp->usecnt, 0);
55 if (qp_init_attr->qp_type == IB_QPT_XRC_TGT) {
56 qp->event_handler = __ib_shared_qp_event_handler;
57 qp->qp_context = qp;
58@@ -430,7 +431,6 @@ struct ib_qp *ib_create_qp(struct ib_pd *pd,
59 qp->xrcd = qp_init_attr->xrcd;
60 atomic_inc(&qp_init_attr->xrcd->usecnt);
61 INIT_LIST_HEAD(&qp->open_list);
62- atomic_set(&qp->usecnt, 0);
63
64 real_qp = qp;
65 qp = __ib_open_qp(real_qp, qp_init_attr->event_handler,
66--
671.7.7.4
68
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
new file mode 100644
index 00000000..29e9a919
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0023-kprobes-fix-a-memory-leak-in-function-pre_handler_kr.patch
@@ -0,0 +1,52 @@
1From ff016619c98fa2edcb44b6cffe5a60435328348a Mon Sep 17 00:00:00 2001
2From: Jiang Liu <liuj97@gmail.com>
3Date: Fri, 3 Feb 2012 15:37:16 -0800
4Subject: [PATCH 23/87] kprobes: fix a memory leak in function
5 pre_handler_kretprobe()
6
7commit 55ca6140e9bb307efc97a9301a4f501de02a6fd6 upstream.
8
9In function pre_handler_kretprobe(), the allocated kretprobe_instance
10object will get leaked if the entry_handler callback returns non-zero.
11This may cause all the preallocated kretprobe_instance objects exhausted.
12
13This issue can be reproduced by changing
14samples/kprobes/kretprobe_example.c to probe "mutex_unlock". And the fix
15is straightforward: just put the allocated kretprobe_instance object back
16onto the free_instances list.
17
18[akpm@linux-foundation.org: use raw_spin_lock/unlock]
19Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
20Acked-by: Jim Keniston <jkenisto@us.ibm.com>
21Acked-by: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
22Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
23Cc: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
24Cc: "David S. Miller" <davem@davemloft.net>
25Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
26Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
27Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
28---
29 kernel/kprobes.c | 6 +++++-
30 1 files changed, 5 insertions(+), 1 deletions(-)
31
32diff --git a/kernel/kprobes.c b/kernel/kprobes.c
33index 52fd049..faa39d1 100644
34--- a/kernel/kprobes.c
35+++ b/kernel/kprobes.c
36@@ -1673,8 +1673,12 @@ static int __kprobes pre_handler_kretprobe(struct kprobe *p,
37 ri->rp = rp;
38 ri->task = current;
39
40- if (rp->entry_handler && rp->entry_handler(ri, regs))
41+ if (rp->entry_handler && rp->entry_handler(ri, regs)) {
42+ raw_spin_lock_irqsave(&rp->lock, flags);
43+ hlist_add_head(&ri->hlist, &rp->free_instances);
44+ raw_spin_unlock_irqrestore(&rp->lock, flags);
45 return 0;
46+ }
47
48 arch_prepare_kretprobe(ri, regs);
49
50--
511.7.7.4
52
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
new file mode 100644
index 00000000..92647a55
--- /dev/null
+++ 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
@@ -0,0 +1,72 @@
1From 5e71844e1d3a9ae8681fc18781a3579eed4b2406 Mon Sep 17 00:00:00 2001
2From: Huang Shijie <b32955@freescale.com>
3Date: Wed, 4 Jan 2012 11:18:46 +0800
4Subject: [PATCH 24/87] mtd: gpmi-nand bugfix: reset the BCH module when it is
5 not MX23
6
7commit 9398d1ce09b9009996f7d2468e1d3c785fa6feda upstream.
8
9In MX28, if we do not reset the BCH module. The BCH module may
10becomes unstable when the board reboots for several thousands times.
11This bug has been catched in customer's production.
12
13The patch adds some comments (some from Wolfram Sang), and fixes it now.
14
15Also change gpmi_reset_block() to static.
16
17Signed-off-by: Huang Shijie <b32955@freescale.com>
18Acked-by: Marek Vasut <marek.vasut@gmail.com>
19Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
20Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
21Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
22---
23 drivers/mtd/nand/gpmi-nand/gpmi-lib.c | 18 ++++++++++++++----
24 1 files changed, 14 insertions(+), 4 deletions(-)
25
26diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-lib.c b/drivers/mtd/nand/gpmi-nand/gpmi-lib.c
27index de4db76..bb2fe60 100644
28--- a/drivers/mtd/nand/gpmi-nand/gpmi-lib.c
29+++ b/drivers/mtd/nand/gpmi-nand/gpmi-lib.c
30@@ -69,17 +69,19 @@ static int clear_poll_bit(void __iomem *addr, u32 mask)
31 * [1] enable the module.
32 * [2] reset the module.
33 *
34- * In most of the cases, it's ok. But there is a hardware bug in the BCH block.
35+ * In most of the cases, it's ok.
36+ * But in MX23, there is a hardware bug in the BCH block (see erratum #2847).
37 * If you try to soft reset the BCH block, it becomes unusable until
38 * the next hard reset. This case occurs in the NAND boot mode. When the board
39 * boots by NAND, the ROM of the chip will initialize the BCH blocks itself.
40 * So If the driver tries to reset the BCH again, the BCH will not work anymore.
41- * You will see a DMA timeout in this case.
42+ * You will see a DMA timeout in this case. The bug has been fixed
43+ * in the following chips, such as MX28.
44 *
45 * To avoid this bug, just add a new parameter `just_enable` for
46 * the mxs_reset_block(), and rewrite it here.
47 */
48-int gpmi_reset_block(void __iomem *reset_addr, bool just_enable)
49+static int gpmi_reset_block(void __iomem *reset_addr, bool just_enable)
50 {
51 int ret;
52 int timeout = 0x400;
53@@ -206,7 +208,15 @@ int bch_set_geometry(struct gpmi_nand_data *this)
54 if (ret)
55 goto err_out;
56
57- ret = gpmi_reset_block(r->bch_regs, true);
58+ /*
59+ * Due to erratum #2847 of the MX23, the BCH cannot be soft reset on this
60+ * chip, otherwise it will lock up. So we skip resetting BCH on the MX23.
61+ * On the other hand, the MX28 needs the reset, because one case has been
62+ * seen where the BCH produced ECC errors constantly after 10000
63+ * consecutive reboots. The latter case has not been seen on the MX23 yet,
64+ * still we don't know if it could happen there as well.
65+ */
66+ ret = gpmi_reset_block(r->bch_regs, GPMI_IS_MX23(this));
67 if (ret)
68 goto err_out;
69
70--
711.7.7.4
72
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
new file mode 100644
index 00000000..53c40b7f
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0025-Revert-mtd-atmel_nand-optimize-read-write-buffer-fun.patch
@@ -0,0 +1,113 @@
1From 061d6b14b3b59f140371baa0f98963f761a7080f Mon Sep 17 00:00:00 2001
2From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
3Date: Thu, 2 Feb 2012 13:54:25 +0200
4Subject: [PATCH 25/87] Revert "mtd: atmel_nand: optimize read/write buffer
5 functions"
6MIME-Version: 1.0
7Content-Type: text/plain; charset=UTF-8
8Content-Transfer-Encoding: 8bit
9
10commit 500823195d0c9eec2a4637484f30cc93ec633d4a upstream.
11
12This reverts commit fb5427508abbd635e877fabdf55795488119c2d6.
13
14The reason is that it breaks 16 bits NAND flash as it was reported by
15Nikolaus Voss and confirmed by Eric Bénard.
16
17Nicolas Ferre <nicolas.ferre@atmel.com> alco confirmed:
18"After double checking with designers, I must admit that I misunderstood
19the way of optimizing accesses to SMC. 16 bit nand is not so common
20those days..."
21
22Reported-by: Nikolaus Voss <n.voss@weinmann.de>
23Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
24Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
25Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
26Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
27---
28 drivers/mtd/nand/atmel_nand.c | 45 +++++++++++++++++++++++++++++++++++++---
29 1 files changed, 41 insertions(+), 4 deletions(-)
30
31diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
32index 23e5d77..ee6e26e 100644
33--- a/drivers/mtd/nand/atmel_nand.c
34+++ b/drivers/mtd/nand/atmel_nand.c
35@@ -161,6 +161,37 @@ static int atmel_nand_device_ready(struct mtd_info *mtd)
36 !!host->board->rdy_pin_active_low;
37 }
38
39+/*
40+ * Minimal-overhead PIO for data access.
41+ */
42+static void atmel_read_buf8(struct mtd_info *mtd, u8 *buf, int len)
43+{
44+ struct nand_chip *nand_chip = mtd->priv;
45+
46+ __raw_readsb(nand_chip->IO_ADDR_R, buf, len);
47+}
48+
49+static void atmel_read_buf16(struct mtd_info *mtd, u8 *buf, int len)
50+{
51+ struct nand_chip *nand_chip = mtd->priv;
52+
53+ __raw_readsw(nand_chip->IO_ADDR_R, buf, len / 2);
54+}
55+
56+static void atmel_write_buf8(struct mtd_info *mtd, const u8 *buf, int len)
57+{
58+ struct nand_chip *nand_chip = mtd->priv;
59+
60+ __raw_writesb(nand_chip->IO_ADDR_W, buf, len);
61+}
62+
63+static void atmel_write_buf16(struct mtd_info *mtd, const u8 *buf, int len)
64+{
65+ struct nand_chip *nand_chip = mtd->priv;
66+
67+ __raw_writesw(nand_chip->IO_ADDR_W, buf, len / 2);
68+}
69+
70 static void dma_complete_func(void *completion)
71 {
72 complete(completion);
73@@ -235,27 +266,33 @@ err_buf:
74 static void atmel_read_buf(struct mtd_info *mtd, u8 *buf, int len)
75 {
76 struct nand_chip *chip = mtd->priv;
77+ struct atmel_nand_host *host = chip->priv;
78
79 if (use_dma && len > mtd->oobsize)
80 /* only use DMA for bigger than oob size: better performances */
81 if (atmel_nand_dma_op(mtd, buf, len, 1) == 0)
82 return;
83
84- /* if no DMA operation possible, use PIO */
85- memcpy_fromio(buf, chip->IO_ADDR_R, len);
86+ if (host->board->bus_width_16)
87+ atmel_read_buf16(mtd, buf, len);
88+ else
89+ atmel_read_buf8(mtd, buf, len);
90 }
91
92 static void atmel_write_buf(struct mtd_info *mtd, const u8 *buf, int len)
93 {
94 struct nand_chip *chip = mtd->priv;
95+ struct atmel_nand_host *host = chip->priv;
96
97 if (use_dma && len > mtd->oobsize)
98 /* only use DMA for bigger than oob size: better performances */
99 if (atmel_nand_dma_op(mtd, (void *)buf, len, 0) == 0)
100 return;
101
102- /* if no DMA operation possible, use PIO */
103- memcpy_toio(chip->IO_ADDR_W, buf, len);
104+ if (host->board->bus_width_16)
105+ atmel_write_buf16(mtd, buf, len);
106+ else
107+ atmel_write_buf8(mtd, buf, len);
108 }
109
110 /*
111--
1121.7.7.4
113
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
new file mode 100644
index 00000000..e96a322e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0026-at_hdmac-bugfix-for-enabling-channel-irq.patch
@@ -0,0 +1,92 @@
1From 2139363dee1243badcac4da0af194ed764339c05 Mon Sep 17 00:00:00 2001
2From: Nikolaus Voss <n.voss@weinmann.de>
3Date: Tue, 17 Jan 2012 10:28:33 +0100
4Subject: [PATCH 26/87] at_hdmac: bugfix for enabling channel irq
5
6commit bda3a47c886664e86ee14eb79e9072b9e341f575 upstream.
7
8commit 463894705e4089d0ff69e7d877312d496ac70e5b deleted redundant
9chan_id and chancnt initialization in dma drivers as this is done
10in dma_async_device_register().
11
12However, atc_enable_irq() relied on chan_id set before registering
13the device, what left only channel 0 functional for this driver.
14
15This patch introduces atc_enable/disable_chan_irq() as a variant
16of atc_enable/disable_irq() with the channel as explicit argument.
17
18Signed-off-by: Nikolaus Voss <n.voss@weinmann.de>
19Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
20Signed-off-by: Vinod Koul <vinod.koul@linux.intel.com>
21Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
22---
23 drivers/dma/at_hdmac.c | 4 ++--
24 drivers/dma/at_hdmac_regs.h | 17 ++++++++---------
25 2 files changed, 10 insertions(+), 11 deletions(-)
26
27diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c
28index fcfa0a8..a60adbf 100644
29--- a/drivers/dma/at_hdmac.c
30+++ b/drivers/dma/at_hdmac.c
31@@ -1286,7 +1286,7 @@ static int __init at_dma_probe(struct platform_device *pdev)
32
33 tasklet_init(&atchan->tasklet, atc_tasklet,
34 (unsigned long)atchan);
35- atc_enable_irq(atchan);
36+ atc_enable_chan_irq(atdma, i);
37 }
38
39 /* set base routines */
40@@ -1353,7 +1353,7 @@ static int __exit at_dma_remove(struct platform_device *pdev)
41 struct at_dma_chan *atchan = to_at_dma_chan(chan);
42
43 /* Disable interrupts */
44- atc_disable_irq(atchan);
45+ atc_disable_chan_irq(atdma, chan->chan_id);
46 tasklet_disable(&atchan->tasklet);
47
48 tasklet_kill(&atchan->tasklet);
49diff --git a/drivers/dma/at_hdmac_regs.h b/drivers/dma/at_hdmac_regs.h
50index aa4c9ae..5aa82b4 100644
51--- a/drivers/dma/at_hdmac_regs.h
52+++ b/drivers/dma/at_hdmac_regs.h
53@@ -326,28 +326,27 @@ static void atc_dump_lli(struct at_dma_chan *atchan, struct at_lli *lli)
54 }
55
56
57-static void atc_setup_irq(struct at_dma_chan *atchan, int on)
58+static void atc_setup_irq(struct at_dma *atdma, int chan_id, int on)
59 {
60- struct at_dma *atdma = to_at_dma(atchan->chan_common.device);
61- u32 ebci;
62+ u32 ebci;
63
64 /* enable interrupts on buffer transfer completion & error */
65- ebci = AT_DMA_BTC(atchan->chan_common.chan_id)
66- | AT_DMA_ERR(atchan->chan_common.chan_id);
67+ ebci = AT_DMA_BTC(chan_id)
68+ | AT_DMA_ERR(chan_id);
69 if (on)
70 dma_writel(atdma, EBCIER, ebci);
71 else
72 dma_writel(atdma, EBCIDR, ebci);
73 }
74
75-static inline void atc_enable_irq(struct at_dma_chan *atchan)
76+static void atc_enable_chan_irq(struct at_dma *atdma, int chan_id)
77 {
78- atc_setup_irq(atchan, 1);
79+ atc_setup_irq(atdma, chan_id, 1);
80 }
81
82-static inline void atc_disable_irq(struct at_dma_chan *atchan)
83+static void atc_disable_chan_irq(struct at_dma *atdma, int chan_id)
84 {
85- atc_setup_irq(atchan, 0);
86+ atc_setup_irq(atdma, chan_id, 0);
87 }
88
89
90--
911.7.7.4
92
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
new file mode 100644
index 00000000..7c3c8a64
--- /dev/null
+++ 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
@@ -0,0 +1,58 @@
1From e7908f7b777ac850ef6a11cb53aa8e27fcf40a1e Mon Sep 17 00:00:00 2001
2From: Carsten Otte <carsteno@de.ibm.com>
3Date: Fri, 3 Feb 2012 15:37:14 -0800
4Subject: [PATCH 27/87] mm/filemap_xip.c: fix race condition in
5 xip_file_fault()
6
7commit 99f02ef1f18631eb0a4e0ea0a3d56878dbcb4b90 upstream.
8
9Fix a race condition that shows in conjunction with xip_file_fault() when
10two threads of the same user process fault on the same memory page.
11
12In this case, the race winner will install the page table entry and the
13unlucky loser will cause an oops: xip_file_fault calls vm_insert_pfn (via
14vm_insert_mixed) which drops out at this check:
15
16 retval = -EBUSY;
17 if (!pte_none(*pte))
18 goto out_unlock;
19
20The resulting -EBUSY return value will trigger a BUG_ON() in
21xip_file_fault.
22
23This fix simply considers the fault as fixed in this case, because the
24race winner has successfully installed the pte.
25
26[akpm@linux-foundation.org: use conventional (and consistent) comment layout]
27Reported-by: David Sadler <dsadler@us.ibm.com>
28Signed-off-by: Carsten Otte <cotte@de.ibm.com>
29Reported-by: Louis Alex Eisner <leisner@cs.ucsd.edu>
30Cc: Hugh Dickins <hughd@google.com>
31Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
32Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
33Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
34---
35 mm/filemap_xip.c | 7 ++++++-
36 1 files changed, 6 insertions(+), 1 deletions(-)
37
38diff --git a/mm/filemap_xip.c b/mm/filemap_xip.c
39index f91b2f6..a4eb311 100644
40--- a/mm/filemap_xip.c
41+++ b/mm/filemap_xip.c
42@@ -263,7 +263,12 @@ found:
43 xip_pfn);
44 if (err == -ENOMEM)
45 return VM_FAULT_OOM;
46- BUG_ON(err);
47+ /*
48+ * err == -EBUSY is fine, we've raced against another thread
49+ * that faulted-in the same page
50+ */
51+ if (err != -EBUSY)
52+ BUG_ON(err);
53 return VM_FAULT_NOPAGE;
54 } else {
55 int err, ret = VM_FAULT_OOM;
56--
571.7.7.4
58
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
new file mode 100644
index 00000000..8862a782
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0028-mm-compaction-check-pfn_valid-when-entering-a-new-MA.patch
@@ -0,0 +1,112 @@
1From 9da11afefb6f8ccc0f7731831f7ad73106fc87f3 Mon Sep 17 00:00:00 2001
2From: Mel Gorman <mgorman@suse.de>
3Date: Fri, 3 Feb 2012 15:37:18 -0800
4Subject: [PATCH 28/87] mm: compaction: check pfn_valid when entering a new
5 MAX_ORDER_NR_PAGES block during isolation for
6 migration
7
8commit 0bf380bc70ecba68cb4d74dc656cc2fa8c4d801a upstream.
9
10When isolating for migration, migration starts at the start of a zone
11which is not necessarily pageblock aligned. Further, it stops isolating
12when COMPACT_CLUSTER_MAX pages are isolated so migrate_pfn is generally
13not aligned. This allows isolate_migratepages() to call pfn_to_page() on
14an invalid PFN which can result in a crash. This was originally reported
15against a 3.0-based kernel with the following trace in a crash dump.
16
17PID: 9902 TASK: d47aecd0 CPU: 0 COMMAND: "memcg_process_s"
18 #0 [d72d3ad0] crash_kexec at c028cfdb
19 #1 [d72d3b24] oops_end at c05c5322
20 #2 [d72d3b38] __bad_area_nosemaphore at c0227e60
21 #3 [d72d3bec] bad_area at c0227fb6
22 #4 [d72d3c00] do_page_fault at c05c72ec
23 #5 [d72d3c80] error_code (via page_fault) at c05c47a4
24 EAX: 00000000 EBX: 000c0000 ECX: 00000001 EDX: 00000807 EBP: 000c0000
25 DS: 007b ESI: 00000001 ES: 007b EDI: f3000a80 GS: 6f50
26 CS: 0060 EIP: c030b15a ERR: ffffffff EFLAGS: 00010002
27 #6 [d72d3cb4] isolate_migratepages at c030b15a
28 #7 [d72d3d14] zone_watermark_ok at c02d26cb
29 #8 [d72d3d2c] compact_zone at c030b8de
30 #9 [d72d3d68] compact_zone_order at c030bba1
31#10 [d72d3db4] try_to_compact_pages at c030bc84
32#11 [d72d3ddc] __alloc_pages_direct_compact at c02d61e7
33#12 [d72d3e08] __alloc_pages_slowpath at c02d66c7
34#13 [d72d3e78] __alloc_pages_nodemask at c02d6a97
35#14 [d72d3eb8] alloc_pages_vma at c030a845
36#15 [d72d3ed4] do_huge_pmd_anonymous_page at c03178eb
37#16 [d72d3f00] handle_mm_fault at c02f36c6
38#17 [d72d3f30] do_page_fault at c05c70ed
39#18 [d72d3fb0] error_code (via page_fault) at c05c47a4
40 EAX: b71ff000 EBX: 00000001 ECX: 00001600 EDX: 00000431
41 DS: 007b ESI: 08048950 ES: 007b EDI: bfaa3788
42 SS: 007b ESP: bfaa36e0 EBP: bfaa3828 GS: 6f50
43 CS: 0073 EIP: 080487c8 ERR: ffffffff EFLAGS: 00010202
44
45It was also reported by Herbert van den Bergh against 3.1-based kernel
46with the following snippet from the console log.
47
48BUG: unable to handle kernel paging request at 01c00008
49IP: [<c0522399>] isolate_migratepages+0x119/0x390
50*pdpt = 000000002f7ce001 *pde = 0000000000000000
51
52It is expected that it also affects 3.2.x and current mainline.
53
54The problem is that pfn_valid is only called on the first PFN being
55checked and that PFN is not necessarily aligned. Lets say we have a case
56like this
57
58H = MAX_ORDER_NR_PAGES boundary
59| = pageblock boundary
60m = cc->migrate_pfn
61f = cc->free_pfn
62o = memory hole
63
64H------|------H------|----m-Hoooooo|ooooooH-f----|------H
65
66The migrate_pfn is just below a memory hole and the free scanner is beyond
67the hole. When isolate_migratepages started, it scans from migrate_pfn to
68migrate_pfn+pageblock_nr_pages which is now in a memory hole. It checks
69pfn_valid() on the first PFN but then scans into the hole where there are
70not necessarily valid struct pages.
71
72This patch ensures that isolate_migratepages calls pfn_valid when
73necessary.
74
75Reported-by: Herbert van den Bergh <herbert.van.den.bergh@oracle.com>
76Tested-by: Herbert van den Bergh <herbert.van.den.bergh@oracle.com>
77Signed-off-by: Mel Gorman <mgorman@suse.de>
78Acked-by: Michal Nazarewicz <mina86@mina86.com>
79Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
80Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
81Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
82---
83 mm/compaction.c | 13 +++++++++++++
84 1 files changed, 13 insertions(+), 0 deletions(-)
85
86diff --git a/mm/compaction.c b/mm/compaction.c
87index 899d956..edc1e26 100644
88--- a/mm/compaction.c
89+++ b/mm/compaction.c
90@@ -313,6 +313,19 @@ static isolate_migrate_t isolate_migratepages(struct zone *zone,
91 } else if (!locked)
92 spin_lock_irq(&zone->lru_lock);
93
94+ /*
95+ * migrate_pfn does not necessarily start aligned to a
96+ * pageblock. Ensure that pfn_valid is called when moving
97+ * into a new MAX_ORDER_NR_PAGES range in case of large
98+ * memory holes within the zone
99+ */
100+ if ((low_pfn & (MAX_ORDER_NR_PAGES - 1)) == 0) {
101+ if (!pfn_valid(low_pfn)) {
102+ low_pfn += MAX_ORDER_NR_PAGES - 1;
103+ continue;
104+ }
105+ }
106+
107 if (!pfn_valid_within(low_pfn))
108 continue;
109 nr_scanned++;
110--
1111.7.7.4
112
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
new file mode 100644
index 00000000..524e6d1d
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0029-PM-Hibernate-Fix-s2disk-regression-related-to-freezi.patch
@@ -0,0 +1,100 @@
1From d483054fe4c66eeb7a03fdc97519b07edb1dc803 Mon Sep 17 00:00:00 2001
2From: "Rafael J. Wysocki" <rjw@sisk.pl>
3Date: Sun, 29 Jan 2012 20:35:52 +0100
4Subject: [PATCH 29/87] PM / Hibernate: Fix s2disk regression related to
5 freezing workqueues
6
7commit 181e9bdef37bfcaa41f3ab6c948a2a0d60a268b5 upstream.
8
9Commit 2aede851ddf08666f68ffc17be446420e9d2a056
10
11 PM / Hibernate: Freeze kernel threads after preallocating memory
12
13introduced a mechanism by which kernel threads were frozen after
14the preallocation of hibernate image memory to avoid problems with
15frozen kernel threads not responding to memory freeing requests.
16However, it overlooked the s2disk code path in which the
17SNAPSHOT_CREATE_IMAGE ioctl was run directly after SNAPSHOT_FREE,
18which caused freeze_workqueues_begin() to BUG(), because it saw
19that worqueues had been already frozen.
20
21Although in principle this issue might be addressed by removing
22the relevant BUG_ON() from freeze_workqueues_begin(), that would
23reintroduce the very problem that commit 2aede851ddf08666f68ffc17be4
24attempted to avoid into that particular code path. For this reason,
25to fix the issue at hand, introduce thaw_kernel_threads() and make
26the SNAPSHOT_FREE ioctl execute it.
27
28Special thanks to Srivatsa S. Bhat for detailed analysis of the
29problem.
30
31Reported-and-tested-by: Jiri Slaby <jslaby@suse.cz>
32Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
33Acked-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
34Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
35---
36 include/linux/freezer.h | 2 ++
37 kernel/power/process.c | 9 +++++++++
38 kernel/power/user.c | 9 +++++++++
39 3 files changed, 20 insertions(+), 0 deletions(-)
40
41diff --git a/include/linux/freezer.h b/include/linux/freezer.h
42index a5386e3..b5d6b6a 100644
43--- a/include/linux/freezer.h
44+++ b/include/linux/freezer.h
45@@ -51,6 +51,7 @@ extern void refrigerator(void);
46 extern int freeze_processes(void);
47 extern int freeze_kernel_threads(void);
48 extern void thaw_processes(void);
49+extern void thaw_kernel_threads(void);
50
51 static inline int try_to_freeze(void)
52 {
53@@ -185,6 +186,7 @@ static inline void refrigerator(void) {}
54 static inline int freeze_processes(void) { return -ENOSYS; }
55 static inline int freeze_kernel_threads(void) { return -ENOSYS; }
56 static inline void thaw_processes(void) {}
57+static inline void thaw_kernel_threads(void) {}
58
59 static inline int try_to_freeze(void) { return 0; }
60
61diff --git a/kernel/power/process.c b/kernel/power/process.c
62index addbbe5..3d4b954 100644
63--- a/kernel/power/process.c
64+++ b/kernel/power/process.c
65@@ -203,3 +203,12 @@ void thaw_processes(void)
66 printk("done.\n");
67 }
68
69+void thaw_kernel_threads(void)
70+{
71+ printk("Restarting kernel threads ... ");
72+ thaw_workqueues();
73+ thaw_tasks(true);
74+ schedule();
75+ printk("done.\n");
76+}
77+
78diff --git a/kernel/power/user.c b/kernel/power/user.c
79index 6d8f535..3565b15 100644
80--- a/kernel/power/user.c
81+++ b/kernel/power/user.c
82@@ -303,6 +303,15 @@ static long snapshot_ioctl(struct file *filp, unsigned int cmd,
83 swsusp_free();
84 memset(&data->handle, 0, sizeof(struct snapshot_handle));
85 data->ready = 0;
86+ /*
87+ * It is necessary to thaw kernel threads here, because
88+ * SNAPSHOT_CREATE_IMAGE may be invoked directly after
89+ * SNAPSHOT_FREE. In that case, if kernel threads were not
90+ * thawed, the preallocation of memory carried out by
91+ * hibernation_snapshot() might run into problems (i.e. it
92+ * might fail or even deadlock).
93+ */
94+ thaw_kernel_threads();
95 break;
96
97 case SNAPSHOT_SET_IMAGE_SIZE:
98--
991.7.7.4
100
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
new file mode 100644
index 00000000..5e697d5b
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0030-PM-QoS-CPU-C-state-breakage-with-PM-Qos-change.patch
@@ -0,0 +1,57 @@
1From f51d67a64f32cd81ea8b67ca964fb7cf7e783b2e Mon Sep 17 00:00:00 2001
2From: Venkatesh Pallipadi <venki@google.com>
3Date: Fri, 3 Feb 2012 22:22:25 +0100
4Subject: [PATCH 30/87] PM / QoS: CPU C-state breakage with PM Qos change
5
6commit d020283dc694c9ec31b410f522252f7a8397e67d upstream.
7
8Looks like change "PM QoS: Move and rename the implementation files"
9merged during the 3.2 development cycle made PM QoS depend on
10CONFIG_PM which depends on (PM_SLEEP || PM_RUNTIME).
11
12That breaks CPU C-states with kernels not having these CONFIGs, causing CPUs
13to spend time in Polling loop idle instead of going into deep C-states,
14consuming way way more power. This is with either acpi idle or intel idle
15enabled.
16
17Either CONFIG_PM should be enabled with any pm_qos users or
18the !CONFIG_PM pm_qos_request() should return sane defaults not to break
19the existing users. Here's is the patch for the latter option.
20
21[rjw: Modified the changelog slightly.]
22
23Signed-off-by: Venkatesh Pallipadi <venki@google.com>
24Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
25Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
26---
27 include/linux/pm_qos.h | 14 +++++++++++++-
28 1 files changed, 13 insertions(+), 1 deletions(-)
29
30diff --git a/include/linux/pm_qos.h b/include/linux/pm_qos.h
31index 83b0ea3..8a0ede4 100644
32--- a/include/linux/pm_qos.h
33+++ b/include/linux/pm_qos.h
34@@ -107,7 +107,19 @@ static inline void pm_qos_remove_request(struct pm_qos_request *req)
35 { return; }
36
37 static inline int pm_qos_request(int pm_qos_class)
38- { return 0; }
39+{
40+ switch (pm_qos_class) {
41+ case PM_QOS_CPU_DMA_LATENCY:
42+ return PM_QOS_CPU_DMA_LAT_DEFAULT_VALUE;
43+ case PM_QOS_NETWORK_LATENCY:
44+ return PM_QOS_NETWORK_LAT_DEFAULT_VALUE;
45+ case PM_QOS_NETWORK_THROUGHPUT:
46+ return PM_QOS_NETWORK_THROUGHPUT_DEFAULT_VALUE;
47+ default:
48+ return PM_QOS_DEFAULT_VALUE;
49+ }
50+}
51+
52 static inline int pm_qos_add_notifier(int pm_qos_class,
53 struct notifier_block *notifier)
54 { return 0; }
55--
561.7.7.4
57
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
new file mode 100644
index 00000000..610b959d
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0031-drm-radeon-Set-DESKTOP_HEIGHT-register-to-the-frameb.patch
@@ -0,0 +1,55 @@
1From 97f2f58ea0382e2e2df0dacc5bba99190cd10846 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <michel.daenzer@amd.com>
3Date: Wed, 1 Feb 2012 12:09:55 +0100
4Subject: [PATCH 31/87] drm/radeon: Set DESKTOP_HEIGHT register to the
5 framebuffer (not mode) height.
6MIME-Version: 1.0
7Content-Type: text/plain; charset=UTF-8
8Content-Transfer-Encoding: 8bit
9
10commit 1b61925061660009f5b8047f93c5297e04541273 upstream.
11
12The value of this register is transferred to the V_COUNTER register at the
13beginning of vertical blank. V_COUNTER is the reference for VLINE waits and
14goes from VIEWPORT_Y_START to VIEWPORT_Y_START+VIEWPORT_HEIGHT during scanout,
15so if VIEWPORT_Y_START is not 0, V_COUNTER actually went backwards at the
16beginning of vertical blank, and VLINE waits excluding the whole scanout area
17could never finish (possibly only if VIEWPORT_Y_START is larger than the length
18of vertical blank in scanlines). Setting DESKTOP_HEIGHT to the framebuffer
19height should prevent this for any kind of VLINE wait.
20
21Fixes https://bugs.freedesktop.org/show_bug.cgi?id=45329 .
22
23Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
24Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
25Signed-off-by: Dave Airlie <airlied@redhat.com>
26Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
27---
28 drivers/gpu/drm/radeon/atombios_crtc.c | 4 ++--
29 1 files changed, 2 insertions(+), 2 deletions(-)
30
31diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c
32index 2b97262..b30081f 100644
33--- a/drivers/gpu/drm/radeon/atombios_crtc.c
34+++ b/drivers/gpu/drm/radeon/atombios_crtc.c
35@@ -1189,7 +1189,7 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc,
36 WREG32(EVERGREEN_GRPH_ENABLE + radeon_crtc->crtc_offset, 1);
37
38 WREG32(EVERGREEN_DESKTOP_HEIGHT + radeon_crtc->crtc_offset,
39- crtc->mode.vdisplay);
40+ target_fb->height);
41 x &= ~3;
42 y &= ~1;
43 WREG32(EVERGREEN_VIEWPORT_START + radeon_crtc->crtc_offset,
44@@ -1358,7 +1358,7 @@ static int avivo_crtc_do_set_base(struct drm_crtc *crtc,
45 WREG32(AVIVO_D1GRPH_ENABLE + radeon_crtc->crtc_offset, 1);
46
47 WREG32(AVIVO_D1MODE_DESKTOP_HEIGHT + radeon_crtc->crtc_offset,
48- crtc->mode.vdisplay);
49+ target_fb->height);
50 x &= ~3;
51 y &= ~1;
52 WREG32(AVIVO_D1MODE_VIEWPORT_START + radeon_crtc->crtc_offset,
53--
541.7.7.4
55
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
new file mode 100644
index 00000000..05ad9726
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0032-drm-nouveau-gem-fix-fence_sync-race-oops.patch
@@ -0,0 +1,108 @@
1From 3d15bd1a90e3d768136562ad63e0d25c953d0c85 Mon Sep 17 00:00:00 2001
2From: Ben Skeggs <bskeggs@redhat.com>
3Date: Tue, 10 Jan 2012 10:18:28 +1000
4Subject: [PATCH 32/87] drm/nouveau/gem: fix fence_sync race / oops
5
6commit 525895ba388c949aa906f26e3ec5cb1ab041f56b upstream.
7
8Due to a race it was possible for a fence to be destroyed while another
9thread was trying to synchronise with it. If this happened in the fallback
10non-semaphore path, it lead to the following oops due to fence->channel
11being NULL.
12
13BUG: unable to handle kernel NULL pointer dereference at (null)
14IP: [<fa9632ce>] nouveau_fence_update+0xe/0xe0 [nouveau]
15*pde = a649c067
16SMP
17Modules 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]
18
19Pid: 2255, comm: gnome-shell Tainted: G O 3.2.0-0.rc5.git0.1.fc17.i686 #1 System manufacturer System Product Name/M2A-VM
20EIP: 0060:[<fa9632ce>] EFLAGS: 00010296 CPU: 1
21EIP is at nouveau_fence_update+0xe/0xe0 [nouveau]
22EAX: 00000000 EBX: ddfc6dd0 ECX: dd111580 EDX: 00000000
23ESI: 00003e80 EDI: dd111580 EBP: dd121d00 ESP: dd121ce8
24 DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
25Process gnome-shell (pid: 2255, ti=dd120000 task=dd111580 task.ti=dd120000)
26Stack:
27 7dc86c76 00000000 00003e80 ddfc6dd0 00003e80 dd111580 dd121d0c fa96371f
28 00000000 dd121d3c fa963773 dd111580 01000246 000ec53d 00000000 ddfc6dd0
29 00001f40 00000000 ddfc6dd0 00000010 dc7df840 dd121d6c fa9639a0 00000000
30Call Trace:
31 [<fa96371f>] __nouveau_fence_signalled+0x1f/0x30 [nouveau]
32 [<fa963773>] __nouveau_fence_wait+0x43/0xd0 [nouveau]
33 [<fa9639a0>] nouveau_fence_sync+0x1a0/0x1c0 [nouveau]
34 [<fa964046>] validate_list+0x176/0x300 [nouveau]
35 [<f7d9c9c0>] ? ttm_bo_mem_put+0x30/0x30 [ttm]
36 [<fa964b8a>] nouveau_gem_ioctl_pushbuf+0x48a/0xfd0 [nouveau]
37 [<c0406481>] ? die+0x31/0x80
38 [<f7c93d98>] drm_ioctl+0x388/0x490 [drm]
39 [<c0406481>] ? die+0x31/0x80
40 [<fa964700>] ? nouveau_gem_ioctl_new+0x150/0x150 [nouveau]
41 [<c0635c7b>] ? file_has_perm+0xcb/0xe0
42 [<f7c93a10>] ? drm_copy_field+0x80/0x80 [drm]
43 [<c0564f56>] do_vfs_ioctl+0x86/0x5b0
44 [<c0406481>] ? die+0x31/0x80
45 [<c0635f22>] ? selinux_file_ioctl+0x62/0x130
46 [<c0554f30>] ? fget_light+0x30/0x340
47 [<c05654ef>] sys_ioctl+0x6f/0x80
48 [<c099e3a4>] syscall_call+0x7/0xb
49 [<c0406481>] ? die+0x31/0x80
50 [<c0406481>] ? die+0x31/0x80
51
52Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
53Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
54---
55 drivers/gpu/drm/nouveau/nouveau_gem.c | 23 +++++++++++++++++++++--
56 1 files changed, 21 insertions(+), 2 deletions(-)
57
58diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c b/drivers/gpu/drm/nouveau/nouveau_gem.c
59index 5f0bc57..7ce3fde 100644
60--- a/drivers/gpu/drm/nouveau/nouveau_gem.c
61+++ b/drivers/gpu/drm/nouveau/nouveau_gem.c
62@@ -380,6 +380,25 @@ retry:
63 }
64
65 static int
66+validate_sync(struct nouveau_channel *chan, struct nouveau_bo *nvbo)
67+{
68+ struct nouveau_fence *fence = NULL;
69+ int ret = 0;
70+
71+ spin_lock(&nvbo->bo.bdev->fence_lock);
72+ if (nvbo->bo.sync_obj)
73+ fence = nouveau_fence_ref(nvbo->bo.sync_obj);
74+ spin_unlock(&nvbo->bo.bdev->fence_lock);
75+
76+ if (fence) {
77+ ret = nouveau_fence_sync(fence, chan);
78+ nouveau_fence_unref(&fence);
79+ }
80+
81+ return ret;
82+}
83+
84+static int
85 validate_list(struct nouveau_channel *chan, struct list_head *list,
86 struct drm_nouveau_gem_pushbuf_bo *pbbo, uint64_t user_pbbo_ptr)
87 {
88@@ -393,7 +412,7 @@ validate_list(struct nouveau_channel *chan, struct list_head *list,
89 list_for_each_entry(nvbo, list, entry) {
90 struct drm_nouveau_gem_pushbuf_bo *b = &pbbo[nvbo->pbbo_index];
91
92- ret = nouveau_fence_sync(nvbo->bo.sync_obj, chan);
93+ ret = validate_sync(chan, nvbo);
94 if (unlikely(ret)) {
95 NV_ERROR(dev, "fail pre-validate sync\n");
96 return ret;
97@@ -416,7 +435,7 @@ validate_list(struct nouveau_channel *chan, struct list_head *list,
98 return ret;
99 }
100
101- ret = nouveau_fence_sync(nvbo->bo.sync_obj, chan);
102+ ret = validate_sync(chan, nvbo);
103 if (unlikely(ret)) {
104 NV_ERROR(dev, "fail post-validate sync\n");
105 return ret;
106--
1071.7.7.4
108
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
new file mode 100644
index 00000000..a90ce35c
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0033-drm-radeon-kms-disable-output-polling-when-suspended.patch
@@ -0,0 +1,44 @@
1From d11fa680b5daad1ffb72807cfd0ad30237505fff Mon Sep 17 00:00:00 2001
2From: Seth Forshee <seth.forshee@canonical.com>
3Date: Tue, 31 Jan 2012 19:06:25 -0600
4Subject: [PATCH 33/87] drm/radeon/kms: disable output polling when suspended
5
6commit 86698c20f71d488b32c49ed4687fb3cf8a88a5ca upstream.
7
8Polling the outputs when the device is suspended can result in erroneous
9status updates. Disable output polling during suspend to prevent this
10from happening.
11
12Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
13Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
14Signed-off-by: Dave Airlie <airlied@redhat.com>
15Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
16---
17 drivers/gpu/drm/radeon/radeon_device.c | 4 ++++
18 1 files changed, 4 insertions(+), 0 deletions(-)
19
20diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
21index 9b39145..9231564 100644
22--- a/drivers/gpu/drm/radeon/radeon_device.c
23+++ b/drivers/gpu/drm/radeon/radeon_device.c
24@@ -864,6 +864,8 @@ int radeon_suspend_kms(struct drm_device *dev, pm_message_t state)
25 if (dev->switch_power_state == DRM_SWITCH_POWER_OFF)
26 return 0;
27
28+ drm_kms_helper_poll_disable(dev);
29+
30 /* turn off display hw */
31 list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
32 drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF);
33@@ -950,6 +952,8 @@ int radeon_resume_kms(struct drm_device *dev)
34 list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
35 drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON);
36 }
37+
38+ drm_kms_helper_poll_enable(dev);
39 return 0;
40 }
41
42--
431.7.7.4
44
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
new file mode 100644
index 00000000..a7915d4e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0034-drm-radeon-kms-fix-TRAVIS-panel-setup.patch
@@ -0,0 +1,53 @@
1From 307a5a187c97d1c280e66db8d957249439141850 Mon Sep 17 00:00:00 2001
2From: Alex Deucher <alexander.deucher@amd.com>
3Date: Thu, 2 Feb 2012 10:18:00 -0500
4Subject: [PATCH 34/87] drm/radeon/kms: fix TRAVIS panel setup
5
6commit 304a48400d9718f74ec35ae46f30868a5f4c4516 upstream.
7
8Different versions of the DP to LVDS bridge chip
9need different panel mode settings depending on
10the chip version used.
11
12Fixes:
13https://bugs.freedesktop.org/show_bug.cgi?id=41569
14
15Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
16Signed-off-by: Dave Airlie <airlied@redhat.com>
17Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
18---
19 drivers/gpu/drm/radeon/atombios_dp.c | 18 +++++++++++++++---
20 1 files changed, 15 insertions(+), 3 deletions(-)
21
22diff --git a/drivers/gpu/drm/radeon/atombios_dp.c b/drivers/gpu/drm/radeon/atombios_dp.c
23index a71557c..552b436 100644
24--- a/drivers/gpu/drm/radeon/atombios_dp.c
25+++ b/drivers/gpu/drm/radeon/atombios_dp.c
26@@ -564,9 +564,21 @@ int radeon_dp_get_panel_mode(struct drm_encoder *encoder,
27 ENCODER_OBJECT_ID_NUTMEG)
28 panel_mode = DP_PANEL_MODE_INTERNAL_DP1_MODE;
29 else if (radeon_connector_encoder_get_dp_bridge_encoder_id(connector) ==
30- ENCODER_OBJECT_ID_TRAVIS)
31- panel_mode = DP_PANEL_MODE_INTERNAL_DP2_MODE;
32- else if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) {
33+ ENCODER_OBJECT_ID_TRAVIS) {
34+ u8 id[6];
35+ int i;
36+ for (i = 0; i < 6; i++)
37+ id[i] = radeon_read_dpcd_reg(radeon_connector, 0x503 + i);
38+ if (id[0] == 0x73 &&
39+ id[1] == 0x69 &&
40+ id[2] == 0x76 &&
41+ id[3] == 0x61 &&
42+ id[4] == 0x72 &&
43+ id[5] == 0x54)
44+ panel_mode = DP_PANEL_MODE_INTERNAL_DP1_MODE;
45+ else
46+ panel_mode = DP_PANEL_MODE_INTERNAL_DP2_MODE;
47+ } else if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) {
48 u8 tmp = radeon_read_dpcd_reg(radeon_connector, DP_EDP_CONFIGURATION_CAP);
49 if (tmp & 1)
50 panel_mode = DP_PANEL_MODE_INTERNAL_DP2_MODE;
51--
521.7.7.4
53
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
new file mode 100644
index 00000000..4fcf64b8
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0035-sched-rt-Fix-task-stack-corruption-under-__ARCH_WANT.patch
@@ -0,0 +1,94 @@
1From 6341f8928cf458016bab6aab444536843083ef0a Mon Sep 17 00:00:00 2001
2From: Chanho Min <chanho0207@gmail.com>
3Date: Thu, 5 Jan 2012 20:00:19 +0900
4Subject: [PATCH 35/87] sched/rt: Fix task stack corruption under
5 __ARCH_WANT_INTERRUPTS_ON_CTXSW
6
7commit cb297a3e433dbdcf7ad81e0564e7b804c941ff0d upstream.
8
9This issue happens under the following conditions:
10
11 1. preemption is off
12 2. __ARCH_WANT_INTERRUPTS_ON_CTXSW is defined
13 3. RT scheduling class
14 4. SMP system
15
16Sequence is as follows:
17
18 1.suppose current task is A. start schedule()
19 2.task A is enqueued pushable task at the entry of schedule()
20 __schedule
21 prev = rq->curr;
22 ...
23 put_prev_task
24 put_prev_task_rt
25 enqueue_pushable_task
26 4.pick the task B as next task.
27 next = pick_next_task(rq);
28 3.rq->curr set to task B and context_switch is started.
29 rq->curr = next;
30 4.At the entry of context_swtich, release this cpu's rq->lock.
31 context_switch
32 prepare_task_switch
33 prepare_lock_switch
34 raw_spin_unlock_irq(&rq->lock);
35 5.Shortly after rq->lock is released, interrupt is occurred and start IRQ context
36 6.try_to_wake_up() which called by ISR acquires rq->lock
37 try_to_wake_up
38 ttwu_remote
39 rq = __task_rq_lock(p)
40 ttwu_do_wakeup(rq, p, wake_flags);
41 task_woken_rt
42 7.push_rt_task picks the task A which is enqueued before.
43 task_woken_rt
44 push_rt_tasks(rq)
45 next_task = pick_next_pushable_task(rq)
46 8.At find_lock_lowest_rq(), If double_lock_balance() returns 0,
47 lowest_rq can be the remote rq.
48 (But,If preemption is on, double_lock_balance always return 1 and it
49 does't happen.)
50 push_rt_task
51 find_lock_lowest_rq
52 if (double_lock_balance(rq, lowest_rq))..
53 9.find_lock_lowest_rq return the available rq. task A is migrated to
54 the remote cpu/rq.
55 push_rt_task
56 ...
57 deactivate_task(rq, next_task, 0);
58 set_task_cpu(next_task, lowest_rq->cpu);
59 activate_task(lowest_rq, next_task, 0);
60 10. But, task A is on irq context at this cpu.
61 So, task A is scheduled by two cpus at the same time until restore from IRQ.
62 Task A's stack is corrupted.
63
64To fix it, don't migrate an RT task if it's still running.
65
66Signed-off-by: Chanho Min <chanho.min@lge.com>
67Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
68Acked-by: Steven Rostedt <rostedt@goodmis.org>
69Link: http://lkml.kernel.org/r/CAOAMb1BHA=5fm7KTewYyke6u-8DP0iUuJMpgQw54vNeXFsGpoQ@mail.gmail.com
70Signed-off-by: Ingo Molnar <mingo@elte.hu>
71Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
72---
73 kernel/sched_rt.c | 5 +++++
74 1 files changed, 5 insertions(+), 0 deletions(-)
75
76diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c
77index 583a136..78fcacf 100644
78--- a/kernel/sched_rt.c
79+++ b/kernel/sched_rt.c
80@@ -1388,6 +1388,11 @@ static int push_rt_task(struct rq *rq)
81 if (!next_task)
82 return 0;
83
84+#ifdef __ARCH_WANT_INTERRUPTS_ON_CTXSW
85+ if (unlikely(task_running(rq, next_task)))
86+ return 0;
87+#endif
88+
89 retry:
90 if (unlikely(next_task == rq->curr)) {
91 WARN_ON(1);
92--
931.7.7.4
94
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
new file mode 100644
index 00000000..fb7696dd
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0036-PM-Hibernate-Thaw-processes-in-SNAPSHOT_CREATE_IMAGE.patch
@@ -0,0 +1,83 @@
1From 26b67a54a31d8e18f66f52d6bae4907963648d3c Mon Sep 17 00:00:00 2001
2From: "Srivatsa S. Bhat" <srivatsa.bhat@linux.vnet.ibm.com>
3Date: Thu, 1 Dec 2011 22:33:10 +0100
4Subject: [PATCH 36/87] PM / Hibernate: Thaw processes in
5 SNAPSHOT_CREATE_IMAGE ioctl test path
6
7commit 97819a26224f019e73d88bb2fd4eb5a614860461 upstream.
8
9Commit 2aede851ddf08666f68ffc17be446420e9d2a056 (PM / Hibernate: Freeze
10kernel threads after preallocating memory) moved the freezing of kernel
11threads to hibernation_snapshot() function.
12
13So now, if the call to hibernation_snapshot() returns early due to a
14successful hibernation test, the caller has to thaw processes to ensure
15that the system gets back to its original state.
16
17But in SNAPSHOT_CREATE_IMAGE hibernation ioctl, the caller does not thaw
18processes in case hibernation_snapshot() returned due to a successful
19freezer test. Fix this issue. But note we still send the value of 'in_suspend'
20(which is now 0) to userspace, because we are not in an error path per-se,
21and moreover, the value of in_suspend correctly depicts the situation here.
22
23Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
24Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
25Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
26---
27 kernel/power/hibernate.c | 2 +-
28 kernel/power/power.h | 2 ++
29 kernel/power/user.c | 11 ++++++++---
30 3 files changed, 11 insertions(+), 4 deletions(-)
31
32diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
33index a6b0503..624538a 100644
34--- a/kernel/power/hibernate.c
35+++ b/kernel/power/hibernate.c
36@@ -55,7 +55,7 @@ enum {
37
38 static int hibernation_mode = HIBERNATION_SHUTDOWN;
39
40-static bool freezer_test_done;
41+bool freezer_test_done;
42
43 static const struct platform_hibernation_ops *hibernation_ops;
44
45diff --git a/kernel/power/power.h b/kernel/power/power.h
46index 23a2db1..0c4defe 100644
47--- a/kernel/power/power.h
48+++ b/kernel/power/power.h
49@@ -50,6 +50,8 @@ static inline char *check_image_kernel(struct swsusp_info *info)
50 #define SPARE_PAGES ((1024 * 1024) >> PAGE_SHIFT)
51
52 /* kernel/power/hibernate.c */
53+extern bool freezer_test_done;
54+
55 extern int hibernation_snapshot(int platform_mode);
56 extern int hibernation_restore(int platform_mode);
57 extern int hibernation_platform_enter(void);
58diff --git a/kernel/power/user.c b/kernel/power/user.c
59index 3565b15..f08bbfb 100644
60--- a/kernel/power/user.c
61+++ b/kernel/power/user.c
62@@ -283,10 +283,15 @@ static long snapshot_ioctl(struct file *filp, unsigned int cmd,
63 }
64 pm_restore_gfp_mask();
65 error = hibernation_snapshot(data->platform_support);
66- if (!error)
67+ if (!error) {
68 error = put_user(in_suspend, (int __user *)arg);
69- if (!error)
70- data->ready = 1;
71+ if (!error && !freezer_test_done)
72+ data->ready = 1;
73+ if (freezer_test_done) {
74+ freezer_test_done = false;
75+ thaw_processes();
76+ }
77+ }
78 break;
79
80 case SNAPSHOT_ATOMIC_RESTORE:
81--
821.7.7.4
83
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
new file mode 100644
index 00000000..6741b06b
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0037-PM-Hibernate-Thaw-kernel-threads-in-SNAPSHOT_CREATE_.patch
@@ -0,0 +1,48 @@
1From 695cb013a3332b6c773c8a75be97aa6f91bc227f Mon Sep 17 00:00:00 2001
2From: "Srivatsa S. Bhat" <srivatsa.bhat@linux.vnet.ibm.com>
3Date: Wed, 1 Feb 2012 22:16:36 +0100
4Subject: [PATCH 37/87] PM / Hibernate: Thaw kernel threads in
5 SNAPSHOT_CREATE_IMAGE ioctl path
6
7commit fe9161db2e6053da21e4649d77bbefaf3030b11d upstream.
8
9In the SNAPSHOT_CREATE_IMAGE ioctl, if the call to hibernation_snapshot()
10fails, the frozen tasks are not thawed.
11
12And in the case of success, if we happen to exit due to a successful freezer
13test, all tasks (including those of userspace) are thawed, whereas actually
14we should have thawed only the kernel threads at that point. Fix both these
15issues.
16
17Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
18Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
19Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
20---
21 kernel/power/user.c | 6 ++++--
22 1 files changed, 4 insertions(+), 2 deletions(-)
23
24diff --git a/kernel/power/user.c b/kernel/power/user.c
25index f08bbfb..f08d227 100644
26--- a/kernel/power/user.c
27+++ b/kernel/power/user.c
28@@ -283,13 +283,15 @@ static long snapshot_ioctl(struct file *filp, unsigned int cmd,
29 }
30 pm_restore_gfp_mask();
31 error = hibernation_snapshot(data->platform_support);
32- if (!error) {
33+ if (error) {
34+ thaw_kernel_threads();
35+ } else {
36 error = put_user(in_suspend, (int __user *)arg);
37 if (!error && !freezer_test_done)
38 data->ready = 1;
39 if (freezer_test_done) {
40 freezer_test_done = false;
41- thaw_processes();
42+ thaw_kernel_threads();
43 }
44 }
45 break;
46--
471.7.7.4
48
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
new file mode 100644
index 00000000..bb26a304
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0038-8139cp-fix-missing-napi_gro_flush.patch
@@ -0,0 +1,33 @@
1From ff91ca433acbb464e82dbc655c1339498c20d45a Mon Sep 17 00:00:00 2001
2From: Francois Romieu <romieu@fr.zoreil.com>
3Date: Sun, 8 Jan 2012 13:41:33 +0000
4Subject: [PATCH 38/87] 8139cp: fix missing napi_gro_flush.
5
6commit b189e810619a676e6b931a942a3e8387f3d39c21 upstream.
7
8The driver uses __napi_complete and napi_gro_receive. Without it, the
9driver hits the BUG_ON(n->gro_list) assertion hard in __napi_complete.
10
11Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
12Tested-by: Marin Glibic <zhilla2@gmail.com>
13Signed-off-by: David S. Miller <davem@davemloft.net>
14Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
15---
16 drivers/net/ethernet/realtek/8139cp.c | 1 +
17 1 files changed, 1 insertions(+), 0 deletions(-)
18
19diff --git a/drivers/net/ethernet/realtek/8139cp.c b/drivers/net/ethernet/realtek/8139cp.c
20index ee5da92..aba4f67 100644
21--- a/drivers/net/ethernet/realtek/8139cp.c
22+++ b/drivers/net/ethernet/realtek/8139cp.c
23@@ -563,6 +563,7 @@ rx_next:
24 if (cpr16(IntrStatus) & cp_rx_intr_mask)
25 goto rx_status_loop;
26
27+ napi_gro_flush(napi);
28 spin_lock_irqsave(&cp->lock, flags);
29 __napi_complete(napi);
30 cpw16_f(IntrMask, cp_intr_mask);
31--
321.7.7.4
33
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
new file mode 100644
index 00000000..d0d7c9a6
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0039-udf-Mark-LVID-buffer-as-uptodate-before-marking-it-d.patch
@@ -0,0 +1,40 @@
1From 43f4a516b2f5492bc597f3753b693ad8adc62748 Mon Sep 17 00:00:00 2001
2From: Jan Kara <jack@suse.cz>
3Date: Fri, 23 Dec 2011 11:53:07 +0100
4Subject: [PATCH 39/87] udf: Mark LVID buffer as uptodate before marking it
5 dirty
6
7commit 853a0c25baf96b028de1654bea1e0c8857eadf3d upstream.
8
9When we hit EIO while writing LVID, the buffer uptodate bit is cleared.
10This then results in an anoying warning from mark_buffer_dirty() when we
11write the buffer again. So just set uptodate flag unconditionally.
12
13Reviewed-by: Namjae Jeon <linkinjeon@gmail.com>
14Signed-off-by: Jan Kara <jack@suse.cz>
15Cc: Dave Jones <davej@redhat.com>
16Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17---
18 fs/udf/super.c | 6 ++++++
19 1 files changed, 6 insertions(+), 0 deletions(-)
20
21diff --git a/fs/udf/super.c b/fs/udf/super.c
22index e185253..87cb24a 100644
23--- a/fs/udf/super.c
24+++ b/fs/udf/super.c
25@@ -1799,6 +1799,12 @@ static void udf_close_lvid(struct super_block *sb)
26 le16_to_cpu(lvid->descTag.descCRCLength)));
27
28 lvid->descTag.tagChecksum = udf_tag_checksum(&lvid->descTag);
29+ /*
30+ * We set buffer uptodate unconditionally here to avoid spurious
31+ * warnings from mark_buffer_dirty() when previous EIO has marked
32+ * the buffer as !uptodate
33+ */
34+ set_buffer_uptodate(bh);
35 mark_buffer_dirty(bh);
36 sbi->s_lvid_dirty = 0;
37 mutex_unlock(&sbi->s_alloc_mutex);
38--
391.7.7.4
40
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
new file mode 100644
index 00000000..02c199e3
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0040-drm-i915-HDMI-hot-remove-notification-to-audio-drive.patch
@@ -0,0 +1,53 @@
1From febaacc3a6165f0cf54ff512f1e7e51563fd27b1 Mon Sep 17 00:00:00 2001
2From: Wu Fengguang <fengguang.wu@intel.com>
3Date: Fri, 9 Dec 2011 20:42:20 +0800
4Subject: [PATCH 40/87] drm/i915: HDMI hot remove notification to audio driver
5
6commit 2deed761188d7480eb5f7efbfe7aa77f09322ed8 upstream.
7
8On HDMI monitor hot remove, clear SDVO_AUDIO_ENABLE accordingly, so that
9the audio driver will receive hot plug events and take action to refresh
10its device state and ELD contents.
11
12The cleared SDVO_AUDIO_ENABLE bit needs to be restored to prevent losing
13HDMI audio after DPMS on.
14
15CC: Wang Zhenyu <zhenyu.z.wang@intel.com>
16Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
17Signed-off-by: Keith Packard <keithp@keithp.com>
18Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
19Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
20---
21 drivers/gpu/drm/i915/intel_hdmi.c | 8 ++++++--
22 1 files changed, 6 insertions(+), 2 deletions(-)
23
24diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
25index d4f5a0b..64541f7 100644
26--- a/drivers/gpu/drm/i915/intel_hdmi.c
27+++ b/drivers/gpu/drm/i915/intel_hdmi.c
28@@ -269,6 +269,10 @@ static void intel_hdmi_dpms(struct drm_encoder *encoder, int mode)
29 struct drm_i915_private *dev_priv = dev->dev_private;
30 struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder);
31 u32 temp;
32+ u32 enable_bits = SDVO_ENABLE;
33+
34+ if (intel_hdmi->has_audio)
35+ enable_bits |= SDVO_AUDIO_ENABLE;
36
37 temp = I915_READ(intel_hdmi->sdvox_reg);
38
39@@ -281,9 +285,9 @@ static void intel_hdmi_dpms(struct drm_encoder *encoder, int mode)
40 }
41
42 if (mode != DRM_MODE_DPMS_ON) {
43- temp &= ~SDVO_ENABLE;
44+ temp &= ~enable_bits;
45 } else {
46- temp |= SDVO_ENABLE;
47+ temp |= enable_bits;
48 }
49
50 I915_WRITE(intel_hdmi->sdvox_reg, temp);
51--
521.7.7.4
53
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
new file mode 100644
index 00000000..1278a4e4
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0041-drm-i915-DisplayPort-hot-remove-notification-to-audi.patch
@@ -0,0 +1,40 @@
1From e306967621bd97280eb17c9abab473070a2e5b45 Mon Sep 17 00:00:00 2001
2From: Wu Fengguang <fengguang.wu@intel.com>
3Date: Fri, 9 Dec 2011 20:42:21 +0800
4Subject: [PATCH 41/87] drm/i915: DisplayPort hot remove notification to audio
5 driver
6
7commit 832afda6a7d7235ef0e09f4ec46736861540da6d upstream.
8
9On DP monitor hot remove, clear DP_AUDIO_OUTPUT_ENABLE accordingly,
10so that the audio driver will receive hot plug events and take action
11to refresh its device state and ELD contents.
12
13Note that the DP_AUDIO_OUTPUT_ENABLE bit may be enabled or disabled
14only when the link training is complete and set to "Normal".
15
16Tested OK for both hot plug/remove and DPMS on/off.
17
18Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
19Signed-off-by: Keith Packard <keithp@keithp.com>
20Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
21Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
22---
23 drivers/gpu/drm/i915/intel_dp.c | 1 +
24 1 files changed, 1 insertions(+), 0 deletions(-)
25
26diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
27index 92b041b..db3b461 100644
28--- a/drivers/gpu/drm/i915/intel_dp.c
29+++ b/drivers/gpu/drm/i915/intel_dp.c
30@@ -1926,6 +1926,7 @@ intel_dp_link_down(struct intel_dp *intel_dp)
31 intel_wait_for_vblank(dev, to_intel_crtc(crtc)->pipe);
32 }
33
34+ DP &= ~DP_AUDIO_OUTPUT_ENABLE;
35 I915_WRITE(intel_dp->output_reg, DP & ~DP_PORT_EN);
36 POSTING_READ(intel_dp->output_reg);
37 msleep(intel_dp->panel_power_down_delay);
38--
391.7.7.4
40
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
new file mode 100644
index 00000000..9a3ddcac
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0042-drm-i915-check-ACTHD-of-all-rings.patch
@@ -0,0 +1,92 @@
1From 2d0e8c788387c3aea69c498d0cc24a73645b71cb Mon Sep 17 00:00:00 2001
2From: Daniel Vetter <daniel.vetter@ffwll.ch>
3Date: Sun, 27 Nov 2011 18:58:17 +0100
4Subject: [PATCH 42/87] drm/i915: check ACTHD of all rings
5
6commit 097354eb14fa94d31a09c64d640643f58e4a5a9a upstream.
7
8Otherwise hangcheck spuriously fires when running blitter/bsd-only
9workloads.
10
11Contrary to a similar patch by Ben Widawsky this does not check
12INSTDONE of the other rings. Chris Wilson implied that in a failure to
13detect a hang, most likely because INSTDONE was fluctuating. Thus only
14check ACTHD, which as far as I know is rather reliable. Also, blitter
15and bsd rings can't launch complex tasks from a single instruction
16(like 3D_PRIM on the render with complex or even infinite shaders).
17
18This fixes spurious gpu hang detection when running
19tests/gem_hangcheck_forcewake on snb/ivb.
20
21Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
22Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
23Signed-off-by: Keith Packard <keithp@keithp.com>
24Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
25Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
26---
27 drivers/gpu/drm/i915/i915_drv.h | 2 ++
28 drivers/gpu/drm/i915/i915_irq.c | 13 ++++++++++---
29 2 files changed, 12 insertions(+), 3 deletions(-)
30
31diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
32index 554bef7..505af3f 100644
33--- a/drivers/gpu/drm/i915/i915_drv.h
34+++ b/drivers/gpu/drm/i915/i915_drv.h
35@@ -337,6 +337,8 @@ typedef struct drm_i915_private {
36 struct timer_list hangcheck_timer;
37 int hangcheck_count;
38 uint32_t last_acthd;
39+ uint32_t last_acthd_bsd;
40+ uint32_t last_acthd_blt;
41 uint32_t last_instdone;
42 uint32_t last_instdone1;
43
44diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
45index b40004b..d47a53b 100644
46--- a/drivers/gpu/drm/i915/i915_irq.c
47+++ b/drivers/gpu/drm/i915/i915_irq.c
48@@ -1669,7 +1669,7 @@ void i915_hangcheck_elapsed(unsigned long data)
49 {
50 struct drm_device *dev = (struct drm_device *)data;
51 drm_i915_private_t *dev_priv = dev->dev_private;
52- uint32_t acthd, instdone, instdone1;
53+ uint32_t acthd, instdone, instdone1, acthd_bsd, acthd_blt;
54 bool err = false;
55
56 if (!i915_enable_hangcheck)
57@@ -1686,16 +1686,21 @@ void i915_hangcheck_elapsed(unsigned long data)
58 }
59
60 if (INTEL_INFO(dev)->gen < 4) {
61- acthd = I915_READ(ACTHD);
62 instdone = I915_READ(INSTDONE);
63 instdone1 = 0;
64 } else {
65- acthd = I915_READ(ACTHD_I965);
66 instdone = I915_READ(INSTDONE_I965);
67 instdone1 = I915_READ(INSTDONE1);
68 }
69+ acthd = intel_ring_get_active_head(&dev_priv->ring[RCS]);
70+ acthd_bsd = HAS_BSD(dev) ?
71+ intel_ring_get_active_head(&dev_priv->ring[VCS]) : 0;
72+ acthd_blt = HAS_BLT(dev) ?
73+ intel_ring_get_active_head(&dev_priv->ring[BCS]) : 0;
74
75 if (dev_priv->last_acthd == acthd &&
76+ dev_priv->last_acthd_bsd == acthd_bsd &&
77+ dev_priv->last_acthd_blt == acthd_blt &&
78 dev_priv->last_instdone == instdone &&
79 dev_priv->last_instdone1 == instdone1) {
80 if (dev_priv->hangcheck_count++ > 1) {
81@@ -1727,6 +1732,8 @@ void i915_hangcheck_elapsed(unsigned long data)
82 dev_priv->hangcheck_count = 0;
83
84 dev_priv->last_acthd = acthd;
85+ dev_priv->last_acthd_bsd = acthd_bsd;
86+ dev_priv->last_acthd_blt = acthd_blt;
87 dev_priv->last_instdone = instdone;
88 dev_priv->last_instdone1 = instdone1;
89 }
90--
911.7.7.4
92
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
new file mode 100644
index 00000000..a01b0129
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0043-drm-i915-Fix-TV-Out-refresh-rate.patch
@@ -0,0 +1,98 @@
1From eb10e9cd3a43bcaea5f7d4727b27b8f7e40d9fc7 Mon Sep 17 00:00:00 2001
2From: Rodrigo Vivi <rodrigo.vivi@gmail.com>
3Date: Wed, 14 Dec 2011 21:10:06 -0200
4Subject: [PATCH 43/87] drm/i915: Fix TV Out refresh rate.
5
6commit 23bd15ec662344dc10e9918fdd0dbc58bc71526d upstream.
7
8TV Out refresh rate was half of the specification for almost all modes.
9Due to this reason pixel clock was so low for some modes causing flickering screen.
10
11Signed-off-by: Rodrigo Vivi <rodrigo.vivi@gmail.com>
12Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
13Signed-off-by: Keith Packard <keithp@keithp.com>
14Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
15Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
16---
17 drivers/gpu/drm/i915/intel_tv.c | 16 ++++++++--------
18 1 files changed, 8 insertions(+), 8 deletions(-)
19
20diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
21index f3c6a9a..2b1fcad 100644
22--- a/drivers/gpu/drm/i915/intel_tv.c
23+++ b/drivers/gpu/drm/i915/intel_tv.c
24@@ -417,7 +417,7 @@ static const struct tv_mode tv_modes[] = {
25 {
26 .name = "NTSC-M",
27 .clock = 108000,
28- .refresh = 29970,
29+ .refresh = 59940,
30 .oversample = TV_OVERSAMPLE_8X,
31 .component_only = 0,
32 /* 525 Lines, 60 Fields, 15.734KHz line, Sub-Carrier 3.580MHz */
33@@ -460,7 +460,7 @@ static const struct tv_mode tv_modes[] = {
34 {
35 .name = "NTSC-443",
36 .clock = 108000,
37- .refresh = 29970,
38+ .refresh = 59940,
39 .oversample = TV_OVERSAMPLE_8X,
40 .component_only = 0,
41 /* 525 Lines, 60 Fields, 15.734KHz line, Sub-Carrier 4.43MHz */
42@@ -502,7 +502,7 @@ static const struct tv_mode tv_modes[] = {
43 {
44 .name = "NTSC-J",
45 .clock = 108000,
46- .refresh = 29970,
47+ .refresh = 59940,
48 .oversample = TV_OVERSAMPLE_8X,
49 .component_only = 0,
50
51@@ -545,7 +545,7 @@ static const struct tv_mode tv_modes[] = {
52 {
53 .name = "PAL-M",
54 .clock = 108000,
55- .refresh = 29970,
56+ .refresh = 59940,
57 .oversample = TV_OVERSAMPLE_8X,
58 .component_only = 0,
59
60@@ -589,7 +589,7 @@ static const struct tv_mode tv_modes[] = {
61 /* 625 Lines, 50 Fields, 15.625KHz line, Sub-Carrier 4.434MHz */
62 .name = "PAL-N",
63 .clock = 108000,
64- .refresh = 25000,
65+ .refresh = 50000,
66 .oversample = TV_OVERSAMPLE_8X,
67 .component_only = 0,
68
69@@ -634,7 +634,7 @@ static const struct tv_mode tv_modes[] = {
70 /* 625 Lines, 50 Fields, 15.625KHz line, Sub-Carrier 4.434MHz */
71 .name = "PAL",
72 .clock = 108000,
73- .refresh = 25000,
74+ .refresh = 50000,
75 .oversample = TV_OVERSAMPLE_8X,
76 .component_only = 0,
77
78@@ -821,7 +821,7 @@ static const struct tv_mode tv_modes[] = {
79 {
80 .name = "1080i@50Hz",
81 .clock = 148800,
82- .refresh = 25000,
83+ .refresh = 50000,
84 .oversample = TV_OVERSAMPLE_2X,
85 .component_only = 1,
86
87@@ -847,7 +847,7 @@ static const struct tv_mode tv_modes[] = {
88 {
89 .name = "1080i@60Hz",
90 .clock = 148800,
91- .refresh = 30000,
92+ .refresh = 60000,
93 .oversample = TV_OVERSAMPLE_2X,
94 .component_only = 1,
95
96--
971.7.7.4
98
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
new file mode 100644
index 00000000..67533173
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0044-drm-i915-handle-3rd-pipe.patch
@@ -0,0 +1,37 @@
1From a390a377bfcf132841798e09e9bb4d0f6c27de91 Mon Sep 17 00:00:00 2001
2From: Eugeni Dodonov <eugeni.dodonov@intel.com>
3Date: Sat, 7 Jan 2012 23:40:35 -0200
4Subject: [PATCH 44/87] drm/i915: handle 3rd pipe
5
6commit 07c1e8c1462fa7324de4c36ae9e55da2abd79cee upstream.
7
8We don't need to check 3rd pipe specifically, as it shares PLL with some
9other one.
10
11Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=41977
12Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
13Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
14Signed-off-by: Keith Packard <keithp@keithp.com>
15Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
16---
17 drivers/gpu/drm/i915/i915_suspend.c | 4 ++++
18 1 files changed, 4 insertions(+), 0 deletions(-)
19
20diff --git a/drivers/gpu/drm/i915/i915_suspend.c b/drivers/gpu/drm/i915/i915_suspend.c
21index 43cbafe..a1eb83d 100644
22--- a/drivers/gpu/drm/i915/i915_suspend.c
23+++ b/drivers/gpu/drm/i915/i915_suspend.c
24@@ -34,6 +34,10 @@ static bool i915_pipe_enabled(struct drm_device *dev, enum pipe pipe)
25 struct drm_i915_private *dev_priv = dev->dev_private;
26 u32 dpll_reg;
27
28+ /* On IVB, 3rd pipe shares PLL with another one */
29+ if (pipe > 1)
30+ return false;
31+
32 if (HAS_PCH_SPLIT(dev))
33 dpll_reg = (pipe == PIPE_A) ? _PCH_DPLL_A : _PCH_DPLL_B;
34 else
35--
361.7.7.4
37
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
new file mode 100644
index 00000000..7e246089
--- /dev/null
+++ 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
@@ -0,0 +1,42 @@
1From 97b068a6657ded880cf3b6617e92da865067a0db Mon Sep 17 00:00:00 2001
2From: Daniel Vetter <daniel@ffwll.ch>
3Date: Fri, 13 Jan 2012 16:20:06 -0800
4Subject: [PATCH 45/87] drm/i915: convert force_wake_get to func pointer in
5 the gpu reset code
6
7commit 8109021313c7a3d8947677391ce6ab9cd0bb1d28 upstream.
8
9This was forgotten in the original multi-threaded forcewake
10conversion:
11
12commit 8d715f0024f64ad1b1be85d8c081cf577944c847
13Author: Keith Packard <keithp at keithp.com>
14Date: Fri Nov 18 20:39:01 2011 -0800
15
16 drm/i915: add multi-threaded forcewake support
17
18Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
19Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
20Signed-off-by: Keith Packard <keithp@keithp.com>
21Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
22Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
23---
24 drivers/gpu/drm/i915/i915_drv.c | 2 +-
25 1 files changed, 1 insertions(+), 1 deletions(-)
26
27diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
28index a1103fc..d7c9d99 100644
29--- a/drivers/gpu/drm/i915/i915_drv.c
30+++ b/drivers/gpu/drm/i915/i915_drv.c
31@@ -645,7 +645,7 @@ int i915_reset(struct drm_device *dev, u8 flags)
32 ret = gen6_do_reset(dev, flags);
33 /* If reset with a user forcewake, try to restore */
34 if (atomic_read(&dev_priv->forcewake_count))
35- __gen6_gt_force_wake_get(dev_priv);
36+ dev_priv->display.force_wake_get(dev_priv);
37 break;
38 case 5:
39 ret = ironlake_do_reset(dev, flags);
40--
411.7.7.4
42
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
new file mode 100644
index 00000000..060d345e
--- /dev/null
+++ 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
@@ -0,0 +1,163 @@
1From 69ac25cd32a4032a94c100b52cf52abf6fde90a5 Mon Sep 17 00:00:00 2001
2From: Daniel Vetter <daniel.vetter@ffwll.ch>
3Date: Wed, 14 Dec 2011 13:57:03 +0100
4Subject: [PATCH 46/87] drm/i915: protect force_wake_(get|put) with the
5 gt_lock
6
7commit 9f1f46a45a681d357d1ceedecec3671a5ae957f4 upstream.
8
9The problem this patch solves is that the forcewake accounting
10necessary for register reads is protected by dev->struct_mutex. But the
11hangcheck and error_capture code need to access registers without
12grabbing this mutex because we hold it while waiting for the gpu.
13So a new lock is required. Because currently the error_state capture
14is called from the error irq handler and the hangcheck code runs from
15a timer, it needs to be an irqsafe spinlock (note that the registers
16used by the irq handler (neglecting the error handling part) only uses
17registers that don't need the forcewake dance).
18
19We could tune this down to a normal spinlock when we rework the
20error_state capture and hangcheck code to run from a workqueue. But
21we don't have any read in a fastpath that needs forcewake, so I've
22decided to not care much about overhead.
23
24This prevents tests/gem_hangcheck_forcewake from i-g-t from killing my
25snb on recent kernels - something must have slightly changed the
26timings. On previous kernels it only trigger a WARN about the broken
27locking.
28
29v2: Drop the previous patch for the register writes.
30
31v3: Improve the commit message per Chris Wilson's suggestions.
32
33Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
34Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
35Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
36Signed-off-by: Keith Packard <keithp@keithp.com>
37Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
38Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
39---
40 drivers/gpu/drm/i915/i915_debugfs.c | 8 ++++++--
41 drivers/gpu/drm/i915/i915_dma.c | 1 +
42 drivers/gpu/drm/i915/i915_drv.c | 18 ++++++++++++------
43 drivers/gpu/drm/i915/i915_drv.h | 10 +++++++---
44 4 files changed, 26 insertions(+), 11 deletions(-)
45
46diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
47index 004b048..b2e3c97 100644
48--- a/drivers/gpu/drm/i915/i915_debugfs.c
49+++ b/drivers/gpu/drm/i915/i915_debugfs.c
50@@ -1314,9 +1314,13 @@ static int i915_gen6_forcewake_count_info(struct seq_file *m, void *data)
51 struct drm_info_node *node = (struct drm_info_node *) m->private;
52 struct drm_device *dev = node->minor->dev;
53 struct drm_i915_private *dev_priv = dev->dev_private;
54+ unsigned forcewake_count;
55
56- seq_printf(m, "forcewake count = %d\n",
57- atomic_read(&dev_priv->forcewake_count));
58+ spin_lock_irq(&dev_priv->gt_lock);
59+ forcewake_count = dev_priv->forcewake_count;
60+ spin_unlock_irq(&dev_priv->gt_lock);
61+
62+ seq_printf(m, "forcewake count = %u\n", forcewake_count);
63
64 return 0;
65 }
66diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
67index a9ae374..c4da951 100644
68--- a/drivers/gpu/drm/i915/i915_dma.c
69+++ b/drivers/gpu/drm/i915/i915_dma.c
70@@ -2042,6 +2042,7 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
71 if (!IS_I945G(dev) && !IS_I945GM(dev))
72 pci_enable_msi(dev->pdev);
73
74+ spin_lock_init(&dev_priv->gt_lock);
75 spin_lock_init(&dev_priv->irq_lock);
76 spin_lock_init(&dev_priv->error_lock);
77 spin_lock_init(&dev_priv->rps_lock);
78diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
79index d7c9d99..e2d85a9 100644
80--- a/drivers/gpu/drm/i915/i915_drv.c
81+++ b/drivers/gpu/drm/i915/i915_drv.c
82@@ -368,11 +368,12 @@ void __gen6_gt_force_wake_mt_get(struct drm_i915_private *dev_priv)
83 */
84 void gen6_gt_force_wake_get(struct drm_i915_private *dev_priv)
85 {
86- WARN_ON(!mutex_is_locked(&dev_priv->dev->struct_mutex));
87+ unsigned long irqflags;
88
89- /* Forcewake is atomic in case we get in here without the lock */
90- if (atomic_add_return(1, &dev_priv->forcewake_count) == 1)
91+ spin_lock_irqsave(&dev_priv->gt_lock, irqflags);
92+ if (dev_priv->forcewake_count++ == 0)
93 dev_priv->display.force_wake_get(dev_priv);
94+ spin_unlock_irqrestore(&dev_priv->gt_lock, irqflags);
95 }
96
97 void __gen6_gt_force_wake_put(struct drm_i915_private *dev_priv)
98@@ -392,10 +393,12 @@ void __gen6_gt_force_wake_mt_put(struct drm_i915_private *dev_priv)
99 */
100 void gen6_gt_force_wake_put(struct drm_i915_private *dev_priv)
101 {
102- WARN_ON(!mutex_is_locked(&dev_priv->dev->struct_mutex));
103+ unsigned long irqflags;
104
105- if (atomic_dec_and_test(&dev_priv->forcewake_count))
106+ spin_lock_irqsave(&dev_priv->gt_lock, irqflags);
107+ if (--dev_priv->forcewake_count == 0)
108 dev_priv->display.force_wake_put(dev_priv);
109+ spin_unlock_irqrestore(&dev_priv->gt_lock, irqflags);
110 }
111
112 void __gen6_gt_wait_for_fifo(struct drm_i915_private *dev_priv)
113@@ -626,6 +629,7 @@ int i915_reset(struct drm_device *dev, u8 flags)
114 * need to
115 */
116 bool need_display = true;
117+ unsigned long irqflags;
118 int ret;
119
120 if (!i915_try_reset)
121@@ -644,8 +648,10 @@ int i915_reset(struct drm_device *dev, u8 flags)
122 case 6:
123 ret = gen6_do_reset(dev, flags);
124 /* If reset with a user forcewake, try to restore */
125- if (atomic_read(&dev_priv->forcewake_count))
126+ spin_lock_irqsave(&dev_priv->gt_lock, irqflags);
127+ if (dev_priv->forcewake_count)
128 dev_priv->display.force_wake_get(dev_priv);
129+ spin_unlock_irqrestore(&dev_priv->gt_lock, irqflags);
130 break;
131 case 5:
132 ret = ironlake_do_reset(dev, flags);
133diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
134index 505af3f..ae294a0 100644
135--- a/drivers/gpu/drm/i915/i915_drv.h
136+++ b/drivers/gpu/drm/i915/i915_drv.h
137@@ -286,7 +286,13 @@ typedef struct drm_i915_private {
138 int relative_constants_mode;
139
140 void __iomem *regs;
141- u32 gt_fifo_count;
142+ /** gt_fifo_count and the subsequent register write are synchronized
143+ * with dev->struct_mutex. */
144+ unsigned gt_fifo_count;
145+ /** forcewake_count is protected by gt_lock */
146+ unsigned forcewake_count;
147+ /** gt_lock is also taken in irq contexts. */
148+ struct spinlock gt_lock;
149
150 struct intel_gmbus {
151 struct i2c_adapter adapter;
152@@ -738,8 +744,6 @@ typedef struct drm_i915_private {
153
154 struct drm_property *broadcast_rgb_property;
155 struct drm_property *force_audio_property;
156-
157- atomic_t forcewake_count;
158 } drm_i915_private_t;
159
160 enum i915_cache_level {
161--
1621.7.7.4
163
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
new file mode 100644
index 00000000..dabc4e58
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0047-eCryptfs-Infinite-loop-due-to-overflow-in-ecryptfs_w.patch
@@ -0,0 +1,51 @@
1From 3d1b7976d3697421e04c86c7a782833c83244694 Mon Sep 17 00:00:00 2001
2From: Li Wang <liwang@nudt.edu.cn>
3Date: Thu, 19 Jan 2012 09:44:36 +0800
4Subject: [PATCH 47/87] eCryptfs: Infinite loop due to overflow in
5 ecryptfs_write()
6
7commit 684a3ff7e69acc7c678d1a1394fe9e757993fd34 upstream.
8
9ecryptfs_write() can enter an infinite loop when truncating a file to a
10size larger than 4G. This only happens on architectures where size_t is
11represented by 32 bits.
12
13This was caused by a size_t overflow due to it incorrectly being used to
14store the result of a calculation which uses potentially large values of
15type loff_t.
16
17[tyhicks@canonical.com: rewrite subject and commit message]
18Signed-off-by: Li Wang <liwang@nudt.edu.cn>
19Signed-off-by: Yunchuan Wen <wenyunchuan@kylinos.com.cn>
20Reviewed-by: Cong Wang <xiyou.wangcong@gmail.com>
21Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
22Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
23---
24 fs/ecryptfs/read_write.c | 4 ++--
25 1 files changed, 2 insertions(+), 2 deletions(-)
26
27diff --git a/fs/ecryptfs/read_write.c b/fs/ecryptfs/read_write.c
28index 54eb14c..608c1c3 100644
29--- a/fs/ecryptfs/read_write.c
30+++ b/fs/ecryptfs/read_write.c
31@@ -130,7 +130,7 @@ int ecryptfs_write(struct inode *ecryptfs_inode, char *data, loff_t offset,
32 pgoff_t ecryptfs_page_idx = (pos >> PAGE_CACHE_SHIFT);
33 size_t start_offset_in_page = (pos & ~PAGE_CACHE_MASK);
34 size_t num_bytes = (PAGE_CACHE_SIZE - start_offset_in_page);
35- size_t total_remaining_bytes = ((offset + size) - pos);
36+ loff_t total_remaining_bytes = ((offset + size) - pos);
37
38 if (fatal_signal_pending(current)) {
39 rc = -EINTR;
40@@ -141,7 +141,7 @@ int ecryptfs_write(struct inode *ecryptfs_inode, char *data, loff_t offset,
41 num_bytes = total_remaining_bytes;
42 if (pos < offset) {
43 /* remaining zeros to write, up to destination offset */
44- size_t total_remaining_zeros = (offset - pos);
45+ loff_t total_remaining_zeros = (offset - pos);
46
47 if (num_bytes > total_remaining_zeros)
48 num_bytes = total_remaining_zeros;
49--
501.7.7.4
51
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
new file mode 100644
index 00000000..b3da87e3
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0048-hwmon-w83627ehf-Fix-number-of-fans-for-NCT6776F.patch
@@ -0,0 +1,55 @@
1From 38c8c07ac7383692d0a4f932f6ac611437ed24ed Mon Sep 17 00:00:00 2001
2From: Guenter Roeck <linux@roeck-us.net>
3Date: Fri, 27 Jan 2012 05:43:59 -0800
4Subject: [PATCH 48/87] hwmon: (w83627ehf) Fix number of fans for NCT6776F
5
6commit 585c0fd8216e0c9f98e2434092af7ec0f999522d upstream.
7
8NCT6776F can select fan input pins for fans 3 to 5 with a secondary set of
9chip register bits. Check that second set of bits in addition to the first set
10to detect if fans 3..5 are monitored.
11
12Signed-off-by: Guenter Roeck <linux@roeck-us.net>
13Acked-by: Jean Delvare <khali@linux-fr.org>
14Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
15---
16 drivers/hwmon/w83627ehf.c | 23 ++++++++++++++++++++---
17 1 files changed, 20 insertions(+), 3 deletions(-)
18
19diff --git a/drivers/hwmon/w83627ehf.c b/drivers/hwmon/w83627ehf.c
20index 4b57ab6..c25387d 100644
21--- a/drivers/hwmon/w83627ehf.c
22+++ b/drivers/hwmon/w83627ehf.c
23@@ -1920,9 +1920,26 @@ w83627ehf_check_fan_inputs(const struct w83627ehf_sio_data *sio_data,
24 fan4min = 0;
25 fan5pin = 0;
26 } else if (sio_data->kind == nct6776) {
27- fan3pin = !(superio_inb(sio_data->sioreg, 0x24) & 0x40);
28- fan4pin = !!(superio_inb(sio_data->sioreg, 0x1C) & 0x01);
29- fan5pin = !!(superio_inb(sio_data->sioreg, 0x1C) & 0x02);
30+ bool gpok = superio_inb(sio_data->sioreg, 0x27) & 0x80;
31+
32+ superio_select(sio_data->sioreg, W83627EHF_LD_HWM);
33+ regval = superio_inb(sio_data->sioreg, SIO_REG_ENABLE);
34+
35+ if (regval & 0x80)
36+ fan3pin = gpok;
37+ else
38+ fan3pin = !(superio_inb(sio_data->sioreg, 0x24) & 0x40);
39+
40+ if (regval & 0x40)
41+ fan4pin = gpok;
42+ else
43+ fan4pin = !!(superio_inb(sio_data->sioreg, 0x1C) & 0x01);
44+
45+ if (regval & 0x20)
46+ fan5pin = gpok;
47+ else
48+ fan5pin = !!(superio_inb(sio_data->sioreg, 0x1C) & 0x02);
49+
50 fan4min = fan4pin;
51 } else if (sio_data->kind == w83667hg || sio_data->kind == w83667hg_b) {
52 fan3pin = 1;
53--
541.7.7.4
55
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
new file mode 100644
index 00000000..fab9d8a3
--- /dev/null
+++ 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
@@ -0,0 +1,47 @@
1From 85f2f3e05e8e0deec4fc8b751324f91acb276d21 Mon Sep 17 00:00:00 2001
2From: Shirish Pargaonkar <shirishpargaonkar@gmail.com>
3Date: Thu, 2 Feb 2012 15:28:28 -0600
4Subject: [PATCH 49/87] cifs: Fix oops in session setup code for null user
5 mounts
6
7commit de47a4176c532ef5961b8a46a2d541a3517412d3 upstream.
8
9For null user mounts, do not invoke string length function
10during session setup.
11
12Reported-and-Tested-by: Chris Clayton <chris2553@googlemail.com>
13Acked-by: Jeff Layton <jlayton@redhat.com>
14Signed-off-by: Shirish Pargaonkar <shirishpargaonkar@gmail.com>
15Signed-off-by: Steve French <smfrench@gmail.com>
16Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17---
18 fs/cifs/sess.c | 7 +++----
19 1 files changed, 3 insertions(+), 4 deletions(-)
20
21diff --git a/fs/cifs/sess.c b/fs/cifs/sess.c
22index 4ec3ee9..2504809 100644
23--- a/fs/cifs/sess.c
24+++ b/fs/cifs/sess.c
25@@ -246,16 +246,15 @@ static void ascii_ssetup_strings(char **pbcc_area, struct cifs_ses *ses,
26 /* copy user */
27 /* BB what about null user mounts - check that we do this BB */
28 /* copy user */
29- if (ses->user_name != NULL)
30+ if (ses->user_name != NULL) {
31 strncpy(bcc_ptr, ses->user_name, MAX_USERNAME_SIZE);
32+ bcc_ptr += strnlen(ses->user_name, MAX_USERNAME_SIZE);
33+ }
34 /* else null user mount */
35-
36- bcc_ptr += strnlen(ses->user_name, MAX_USERNAME_SIZE);
37 *bcc_ptr = 0;
38 bcc_ptr++; /* account for null termination */
39
40 /* copy domain */
41-
42 if (ses->domainName != NULL) {
43 strncpy(bcc_ptr, ses->domainName, 256);
44 bcc_ptr += strnlen(ses->domainName, 256);
45--
461.7.7.4
47
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
new file mode 100644
index 00000000..506fcd3a
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0050-atmel_lcdfb-fix-usage-of-CONTRAST_CTR-in-suspend-res.patch
@@ -0,0 +1,36 @@
1From c1a4af09cec0d39604a99ab58e59276c69c4179a Mon Sep 17 00:00:00 2001
2From: Hubert Feurstein <h.feurstein@gmail.com>
3Date: Mon, 9 Jan 2012 17:23:57 +0100
4Subject: [PATCH 50/87] atmel_lcdfb: fix usage of CONTRAST_CTR in
5 suspend/resume
6
7commit 9f1065032ceb7e86c7c9f16bb86518857e88a172 upstream.
8
9An error was existing in the saving of CONTRAST_CTR register
10across suspend/resume.
11
12Signed-off-by: Hubert Feurstein <h.feurstein@gmail.com>
13Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
14Acked-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
15Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
16Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17---
18 drivers/video/atmel_lcdfb.c | 2 +-
19 1 files changed, 1 insertions(+), 1 deletions(-)
20
21diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
22index 63409c1..e919c70 100644
23--- a/drivers/video/atmel_lcdfb.c
24+++ b/drivers/video/atmel_lcdfb.c
25@@ -1089,7 +1089,7 @@ static int atmel_lcdfb_suspend(struct platform_device *pdev, pm_message_t mesg)
26 */
27 lcdc_writel(sinfo, ATMEL_LCDC_IDR, ~0UL);
28
29- sinfo->saved_lcdcon = lcdc_readl(sinfo, ATMEL_LCDC_CONTRAST_VAL);
30+ sinfo->saved_lcdcon = lcdc_readl(sinfo, ATMEL_LCDC_CONTRAST_CTR);
31 lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, 0);
32 if (sinfo->atmel_lcdfb_power_control)
33 sinfo->atmel_lcdfb_power_control(0);
34--
351.7.7.4
36
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
new file mode 100644
index 00000000..d96ecde5
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0051-lockdep-bug-Exclude-TAINT_FIRMWARE_WORKAROUND-from-d.patch
@@ -0,0 +1,56 @@
1From 1a90d01be282f295186d58b42d8cbac1d5d7edc4 Mon Sep 17 00:00:00 2001
2From: Peter Zijlstra <a.p.zijlstra@chello.nl>
3Date: Mon, 14 Nov 2011 13:13:49 +0100
4Subject: [PATCH 51/87] lockdep, bug: Exclude TAINT_FIRMWARE_WORKAROUND from
5 disabling lockdep
6
7commit df754e6af2f237a6c020c0daff55a1a609338e31 upstream.
8
9It's unlikely that TAINT_FIRMWARE_WORKAROUND causes false
10lockdep messages, so do not disable lockdep in that case.
11We still want to keep lockdep disabled in the
12TAINT_OOT_MODULE case:
13
14 - bin-only modules can cause various instabilities in
15 their and in unrelated kernel code
16
17 - they are impossible to debug for kernel developers
18
19 - they also typically do not have the copyright license
20 permission to link to the GPL-ed lockdep code.
21
22Suggested-by: Ben Hutchings <ben@decadent.org.uk>
23Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
24Link: http://lkml.kernel.org/n/tip-xopopjjens57r0i13qnyh2yo@git.kernel.org
25Signed-off-by: Ingo Molnar <mingo@elte.hu>
26Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
27---
28 kernel/panic.c | 12 ++++++++++--
29 1 files changed, 10 insertions(+), 2 deletions(-)
30
31diff --git a/kernel/panic.c b/kernel/panic.c
32index b2659360..1b83fd8 100644
33--- a/kernel/panic.c
34+++ b/kernel/panic.c
35@@ -240,8 +240,16 @@ void add_taint(unsigned flag)
36 * Also we want to keep up lockdep for staging development and
37 * post-warning case.
38 */
39- if (flag != TAINT_CRAP && flag != TAINT_WARN && __debug_locks_off())
40- printk(KERN_WARNING "Disabling lock debugging due to kernel taint\n");
41+ switch (flag) {
42+ case TAINT_CRAP:
43+ case TAINT_WARN:
44+ case TAINT_FIRMWARE_WORKAROUND:
45+ break;
46+
47+ default:
48+ if (__debug_locks_off())
49+ printk(KERN_WARNING "Disabling lock debugging due to kernel taint\n");
50+ }
51
52 set_bit(flag, &tainted_mask);
53 }
54--
551.7.7.4
56
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
new file mode 100644
index 00000000..57df74c3
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0052-lockdep-bug-Exclude-TAINT_OOT_MODULE-from-disabling-.patch
@@ -0,0 +1,56 @@
1From 6492a0fb92a35630103cc62a1902018dfef8b46c Mon Sep 17 00:00:00 2001
2From: Ben Hutchings <ben@decadent.org.uk>
3Date: Wed, 7 Dec 2011 14:30:58 +0000
4Subject: [PATCH 52/87] lockdep, bug: Exclude TAINT_OOT_MODULE from disabling
5 lock debugging
6
7commit 9ec84acee1e221d99dc33237bff5e82839d10cc0 upstream.
8
9We do want to allow lock debugging for GPL-compatible modules
10that are not (yet) built in-tree. This was disabled as a
11side-effect of commit 2449b8ba0745327c5fa49a8d9acffe03b2eded69
12('module,bug: Add TAINT_OOT_MODULE flag for modules not built
13in-tree'). Lock debug warnings now include taint flags, so
14kernel developers should still be able to deflect warnings
15caused by out-of-tree modules.
16
17The TAINT_PROPRIETARY_MODULE flag for non-GPL-compatible modules
18will still disable lock debugging.
19
20Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
21Cc: Nick Bowler <nbowler@elliptictech.com>
22Cc: Dave Jones <davej@redhat.com>
23Cc: Rusty Russell <rusty@rustcorp.com.au>
24Cc: Randy Dunlap <rdunlap@xenotime.net>
25Cc: Debian kernel maintainers <debian-kernel@lists.debian.org>
26Cc: Peter Zijlstra <peterz@infradead.org>
27Cc: Alan Cox <alan@linux.intel.com>
28Link: http://lkml.kernel.org/r/1323268258.18450.11.camel@deadeye
29Signed-off-by: Ingo Molnar <mingo@elte.hu>
30Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
31---
32 kernel/panic.c | 5 +++--
33 1 files changed, 3 insertions(+), 2 deletions(-)
34
35diff --git a/kernel/panic.c b/kernel/panic.c
36index 1b83fd8..3458469 100644
37--- a/kernel/panic.c
38+++ b/kernel/panic.c
39@@ -237,11 +237,12 @@ void add_taint(unsigned flag)
40 * Can't trust the integrity of the kernel anymore.
41 * We don't call directly debug_locks_off() because the issue
42 * is not necessarily serious enough to set oops_in_progress to 1
43- * Also we want to keep up lockdep for staging development and
44- * post-warning case.
45+ * Also we want to keep up lockdep for staging/out-of-tree
46+ * development and post-warning case.
47 */
48 switch (flag) {
49 case TAINT_CRAP:
50+ case TAINT_OOT_MODULE:
51 case TAINT_WARN:
52 case TAINT_FIRMWARE_WORKAROUND:
53 break;
54--
551.7.7.4
56
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
new file mode 100644
index 00000000..1b1175d7
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0053-iscsi-target-Fix-reject-release-handling-in-iscsit_f.patch
@@ -0,0 +1,79 @@
1From fa577fc1c4b43933b74efe8d44075ef93f289516 Mon Sep 17 00:00:00 2001
2From: Nicholas Bellinger <nab@linux-iscsi.org>
3Date: Mon, 16 Jan 2012 16:04:15 -0800
4Subject: [PATCH 53/87] iscsi-target: Fix reject release handling in
5 iscsit_free_cmd()
6
7commit c1ce4bd56f2846de55043374598fd929ad3b711b upstream.
8
9This patch addresses a bug where iscsit_free_cmd() was incorrectly calling
10iscsit_release_cmd() for ISCSI_OP_REJECT because iscsi_add_reject*() will
11overwrite the original iscsi_cmd->iscsi_opcode assignment. This bug was
12introduced with the following commit:
13
14commit 0be67f2ed8f577d2c72d917928394c5885fa9134
15Author: Nicholas Bellinger <nab@linux-iscsi.org>
16Date: Sun Oct 9 01:48:14 2011 -0700
17
18 iscsi-target: Remove SCF_SE_LUN_CMD flag abuses
19
20and was manifesting itself as list corruption with the following:
21
22[ 131.191092] ------------[ cut here ]------------
23[ 131.191092] WARNING: at lib/list_debug.c:53 __list_del_entry+0x8d/0x98()
24[ 131.191092] Hardware name: VMware Virtual Platform
25[ 131.191092] list_del corruption. prev->next should be ffff880022d3c100, but was 6b6b6b6b6b6b6b6b
26[ 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]
27[ 131.191092] Pid: 2250, comm: iscsi_ttx Tainted: G W 3.2.0-rc4+ #42
28[ 131.191092] Call Trace:
29[ 131.191092] [<ffffffff8103b553>] warn_slowpath_common+0x80/0x98
30[ 131.191092] [<ffffffff8103b5ff>] warn_slowpath_fmt+0x41/0x43
31[ 131.191092] [<ffffffff811d0279>] __list_del_entry+0x8d/0x98
32[ 131.191092] [<ffffffffa01395c9>] transport_lun_remove_cmd+0x9b/0xb7 [target_core_mod]
33[ 131.191092] [<ffffffffa013a55c>] transport_generic_free_cmd+0x5d/0x71 [target_core_mod]
34[ 131.191092] [<ffffffffa01a012b>] iscsit_free_cmd+0x1e/0x27 [iscsi_target_mod]
35[ 131.191092] [<ffffffffa01a13be>] iscsit_close_connection+0x14d/0x5b2 [iscsi_target_mod]
36[ 131.191092] [<ffffffffa0196a0c>] iscsit_take_action_for_connection_exit+0xdb/0xe0 [iscsi_target_mod]
37[ 131.191092] [<ffffffffa01a55d4>] iscsi_target_tx_thread+0x15cb/0x1608 [iscsi_target_mod]
38[ 131.191092] [<ffffffff8103609a>] ? check_preempt_wakeup+0x121/0x185
39[ 131.191092] [<ffffffff81030801>] ? __dequeue_entity+0x2e/0x33
40[ 131.191092] [<ffffffffa01a4009>] ? iscsit_send_text_rsp+0x25f/0x25f [iscsi_target_mod]
41[ 131.191092] [<ffffffffa01a4009>] ? iscsit_send_text_rsp+0x25f/0x25f [iscsi_target_mod]
42[ 131.191092] [<ffffffff8138f706>] ? schedule+0x55/0x57
43[ 131.191092] [<ffffffff81056c7d>] kthread+0x7d/0x85
44[ 131.191092] [<ffffffff81399534>] kernel_thread_helper+0x4/0x10
45[ 131.191092] [<ffffffff81056c00>] ? kthread_worker_fn+0x16d/0x16d
46[ 131.191092] [<ffffffff81399530>] ? gs_change+0x13/0x13
47
48Reported-by: <jrepac@yahoo.com>
49Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
50Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
51---
52 drivers/target/iscsi/iscsi_target_util.c | 11 +++++++++++
53 1 files changed, 11 insertions(+), 0 deletions(-)
54
55diff --git a/drivers/target/iscsi/iscsi_target_util.c b/drivers/target/iscsi/iscsi_target_util.c
56index 02348f7..99f2af3 100644
57--- a/drivers/target/iscsi/iscsi_target_util.c
58+++ b/drivers/target/iscsi/iscsi_target_util.c
59@@ -851,6 +851,17 @@ void iscsit_free_cmd(struct iscsi_cmd *cmd)
60 case ISCSI_OP_SCSI_TMFUNC:
61 transport_generic_free_cmd(&cmd->se_cmd, 1);
62 break;
63+ case ISCSI_OP_REJECT:
64+ /*
65+ * Handle special case for REJECT when iscsi_add_reject*() has
66+ * overwritten the original iscsi_opcode assignment, and the
67+ * associated cmd->se_cmd needs to be released.
68+ */
69+ if (cmd->se_cmd.se_tfo != NULL) {
70+ transport_generic_free_cmd(&cmd->se_cmd, 1);
71+ break;
72+ }
73+ /* Fall-through */
74 default:
75 iscsit_release_cmd(cmd);
76 break;
77--
781.7.7.4
79
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
new file mode 100644
index 00000000..159d901e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0054-iscsi-target-Fix-double-list_add-with-iscsit_alloc_b.patch
@@ -0,0 +1,35 @@
1From 49f4afd3b15866b16b72691a6060fad041e8f2dc Mon Sep 17 00:00:00 2001
2From: Nicholas Bellinger <nab@linux-iscsi.org>
3Date: Mon, 16 Jan 2012 17:11:54 -0800
4Subject: [PATCH 54/87] iscsi-target: Fix double list_add with
5 iscsit_alloc_buffs reject
6
7commit cd931ee62fd0258fc85c76a7c5499fe85e0f3436 upstream.
8
9This patch fixes a bug where the iscsit_add_reject_from_cmd() call
10from a failure to iscsit_alloc_buffs() was incorrectly passing
11add_to_conn=1 and causing a double list_add after iscsi_cmd->i_list
12had already been added in iscsit_handle_scsi_cmd().
13
14Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
15Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
16---
17 drivers/target/iscsi/iscsi_target.c | 2 +-
18 1 files changed, 1 insertions(+), 1 deletions(-)
19
20diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c
21index 8599545..3b46e3a 100644
22--- a/drivers/target/iscsi/iscsi_target.c
23+++ b/drivers/target/iscsi/iscsi_target.c
24@@ -1062,7 +1062,7 @@ attach_cmd:
25 if (ret < 0)
26 return iscsit_add_reject_from_cmd(
27 ISCSI_REASON_BOOKMARK_NO_RESOURCES,
28- 1, 1, buf, cmd);
29+ 1, 0, buf, cmd);
30 /*
31 * Check the CmdSN against ExpCmdSN/MaxCmdSN here if
32 * the Immediate Bit is not set, and no Immediate
33--
341.7.7.4
35
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
new file mode 100644
index 00000000..feb7c2e8
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0055-iscsi-target-Fix-discovery-with-INADDR_ANY-and-IN6AD.patch
@@ -0,0 +1,176 @@
1From 7b88c23d62bcaf794ebd97400869d00f00befcd6 Mon Sep 17 00:00:00 2001
2From: Nicholas Bellinger <nab@linux-iscsi.org>
3Date: Mon, 16 Jan 2012 23:33:48 -0800
4Subject: [PATCH 55/87] iscsi-target: Fix discovery with INADDR_ANY and
5 IN6ADDR_ANY_INIT
6
7commit 2f9bc894c67dbacae5a6a9875818d2a18a918d18 upstream.
8
9This patch addresses a bug with sendtargets discovery where INADDR_ANY (0.0.0.0)
10+ IN6ADDR_ANY_INIT ([0:0:0:0:0:0:0:0]) network portals where incorrectly being
11reported back to initiators instead of the address of the connecting interface.
12To address this, save local socket ->getname() output during iscsi login setup,
13and makes iscsit_build_sendtargets_response() return these TargetAddress keys
14when INADDR_ANY or IN6ADDR_ANY_INIT portals are in use.
15
16Reported-by: Dax Kelson <dkelson@gurulabs.com>
17Reported-by: Andy Grover <agrover@redhat.com>
18Cc: David S. Miller <davem@davemloft.net>
19Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
20Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
21---
22 drivers/target/iscsi/iscsi_target.c | 37 +++++++++++++++++++++++++---
23 drivers/target/iscsi/iscsi_target_core.h | 2 +
24 drivers/target/iscsi/iscsi_target_login.c | 31 +++++++++++++++++++++---
25 3 files changed, 62 insertions(+), 8 deletions(-)
26
27diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c
28index 3b46e3a..0c1d5c73 100644
29--- a/drivers/target/iscsi/iscsi_target.c
30+++ b/drivers/target/iscsi/iscsi_target.c
31@@ -3165,6 +3165,30 @@ static int iscsit_send_task_mgt_rsp(
32 return 0;
33 }
34
35+static bool iscsit_check_inaddr_any(struct iscsi_np *np)
36+{
37+ bool ret = false;
38+
39+ if (np->np_sockaddr.ss_family == AF_INET6) {
40+ const struct sockaddr_in6 sin6 = {
41+ .sin6_addr = IN6ADDR_ANY_INIT };
42+ struct sockaddr_in6 *sock_in6 =
43+ (struct sockaddr_in6 *)&np->np_sockaddr;
44+
45+ if (!memcmp(sock_in6->sin6_addr.s6_addr,
46+ sin6.sin6_addr.s6_addr, 16))
47+ ret = true;
48+ } else {
49+ struct sockaddr_in * sock_in =
50+ (struct sockaddr_in *)&np->np_sockaddr;
51+
52+ if (sock_in->sin_addr.s_addr == INADDR_ANY)
53+ ret = true;
54+ }
55+
56+ return ret;
57+}
58+
59 static int iscsit_build_sendtargets_response(struct iscsi_cmd *cmd)
60 {
61 char *payload = NULL;
62@@ -3214,12 +3238,17 @@ static int iscsit_build_sendtargets_response(struct iscsi_cmd *cmd)
63 spin_lock(&tpg->tpg_np_lock);
64 list_for_each_entry(tpg_np, &tpg->tpg_gnp_list,
65 tpg_np_list) {
66+ struct iscsi_np *np = tpg_np->tpg_np;
67+ bool inaddr_any = iscsit_check_inaddr_any(np);
68+
69 len = sprintf(buf, "TargetAddress="
70 "%s%s%s:%hu,%hu",
71- (tpg_np->tpg_np->np_sockaddr.ss_family == AF_INET6) ?
72- "[" : "", tpg_np->tpg_np->np_ip,
73- (tpg_np->tpg_np->np_sockaddr.ss_family == AF_INET6) ?
74- "]" : "", tpg_np->tpg_np->np_port,
75+ (np->np_sockaddr.ss_family == AF_INET6) ?
76+ "[" : "", (inaddr_any == false) ?
77+ np->np_ip : conn->local_ip,
78+ (np->np_sockaddr.ss_family == AF_INET6) ?
79+ "]" : "", (inaddr_any == false) ?
80+ np->np_port : conn->local_port,
81 tpg->tpgt);
82 len += 1;
83
84diff --git a/drivers/target/iscsi/iscsi_target_core.h b/drivers/target/iscsi/iscsi_target_core.h
85index f1a02da..7da2d6a 100644
86--- a/drivers/target/iscsi/iscsi_target_core.h
87+++ b/drivers/target/iscsi/iscsi_target_core.h
88@@ -508,6 +508,7 @@ struct iscsi_conn {
89 u16 cid;
90 /* Remote TCP Port */
91 u16 login_port;
92+ u16 local_port;
93 int net_size;
94 u32 auth_id;
95 #define CONNFLAG_SCTP_STRUCT_FILE 0x01
96@@ -527,6 +528,7 @@ struct iscsi_conn {
97 unsigned char bad_hdr[ISCSI_HDR_LEN];
98 #define IPV6_ADDRESS_SPACE 48
99 unsigned char login_ip[IPV6_ADDRESS_SPACE];
100+ unsigned char local_ip[IPV6_ADDRESS_SPACE];
101 int conn_usage_count;
102 int conn_waiting_on_uc;
103 atomic_t check_immediate_queue;
104diff --git a/drivers/target/iscsi/iscsi_target_login.c b/drivers/target/iscsi/iscsi_target_login.c
105index d734bde..bd2adec 100644
106--- a/drivers/target/iscsi/iscsi_target_login.c
107+++ b/drivers/target/iscsi/iscsi_target_login.c
108@@ -616,8 +616,8 @@ static int iscsi_post_login_handler(
109 }
110
111 pr_debug("iSCSI Login successful on CID: %hu from %s to"
112- " %s:%hu,%hu\n", conn->cid, conn->login_ip, np->np_ip,
113- np->np_port, tpg->tpgt);
114+ " %s:%hu,%hu\n", conn->cid, conn->login_ip,
115+ conn->local_ip, conn->local_port, tpg->tpgt);
116
117 list_add_tail(&conn->conn_list, &sess->sess_conn_list);
118 atomic_inc(&sess->nconn);
119@@ -659,7 +659,8 @@ static int iscsi_post_login_handler(
120 sess->session_state = TARG_SESS_STATE_LOGGED_IN;
121
122 pr_debug("iSCSI Login successful on CID: %hu from %s to %s:%hu,%hu\n",
123- conn->cid, conn->login_ip, np->np_ip, np->np_port, tpg->tpgt);
124+ conn->cid, conn->login_ip, conn->local_ip, conn->local_port,
125+ tpg->tpgt);
126
127 spin_lock_bh(&sess->conn_lock);
128 list_add_tail(&conn->conn_list, &sess->sess_conn_list);
129@@ -1019,6 +1020,18 @@ static int __iscsi_target_login_thread(struct iscsi_np *np)
130 snprintf(conn->login_ip, sizeof(conn->login_ip), "%pI6c",
131 &sock_in6.sin6_addr.in6_u);
132 conn->login_port = ntohs(sock_in6.sin6_port);
133+
134+ if (conn->sock->ops->getname(conn->sock,
135+ (struct sockaddr *)&sock_in6, &err, 0) < 0) {
136+ pr_err("sock_ops->getname() failed.\n");
137+ iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR,
138+ ISCSI_LOGIN_STATUS_TARGET_ERROR);
139+ goto new_sess_out;
140+ }
141+ snprintf(conn->local_ip, sizeof(conn->local_ip), "%pI6c",
142+ &sock_in6.sin6_addr.in6_u);
143+ conn->local_port = ntohs(sock_in6.sin6_port);
144+
145 } else {
146 memset(&sock_in, 0, sizeof(struct sockaddr_in));
147
148@@ -1031,6 +1044,16 @@ static int __iscsi_target_login_thread(struct iscsi_np *np)
149 }
150 sprintf(conn->login_ip, "%pI4", &sock_in.sin_addr.s_addr);
151 conn->login_port = ntohs(sock_in.sin_port);
152+
153+ if (conn->sock->ops->getname(conn->sock,
154+ (struct sockaddr *)&sock_in, &err, 0) < 0) {
155+ pr_err("sock_ops->getname() failed.\n");
156+ iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR,
157+ ISCSI_LOGIN_STATUS_TARGET_ERROR);
158+ goto new_sess_out;
159+ }
160+ sprintf(conn->local_ip, "%pI4", &sock_in.sin_addr.s_addr);
161+ conn->local_port = ntohs(sock_in.sin_port);
162 }
163
164 conn->network_transport = np->np_network_transport;
165@@ -1038,7 +1061,7 @@ static int __iscsi_target_login_thread(struct iscsi_np *np)
166 pr_debug("Received iSCSI login request from %s on %s Network"
167 " Portal %s:%hu\n", conn->login_ip,
168 (conn->network_transport == ISCSI_TCP) ? "TCP" : "SCTP",
169- np->np_ip, np->np_port);
170+ conn->local_ip, conn->local_port);
171
172 pr_debug("Moving to TARG_CONN_STATE_IN_LOGIN.\n");
173 conn->conn_state = TARG_CONN_STATE_IN_LOGIN;
174--
1751.7.7.4
176
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
new file mode 100644
index 00000000..98c88335
--- /dev/null
+++ 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
@@ -0,0 +1,46 @@
1From f11e42f5205653968c6496e637b1cd524405a9ec Mon Sep 17 00:00:00 2001
2From: Mark Brown <broonie@opensource.wolfsonmicro.com>
3Date: Tue, 31 Jan 2012 11:55:32 +0000
4Subject: [PATCH 56/87] ASoC: wm_hubs: Fix routing of input PGAs to line
5 output mixer
6
7commit ee76744c51ec342df9822b4a85dbbfc3887b6d60 upstream.
8
9IN1L/R is routed to both line output mixers, we don't route IN1 to LINEOUT1
10and IN2 to LINEOUT2.
11
12Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
14---
15 sound/soc/codecs/wm_hubs.c | 8 ++++----
16 1 files changed, 4 insertions(+), 4 deletions(-)
17
18diff --git a/sound/soc/codecs/wm_hubs.c b/sound/soc/codecs/wm_hubs.c
19index 8547191..6ef2283 100644
20--- a/sound/soc/codecs/wm_hubs.c
21+++ b/sound/soc/codecs/wm_hubs.c
22@@ -587,8 +587,8 @@ SOC_DAPM_SINGLE("Left Output Switch", WM8993_LINE_MIXER1, 0, 1, 0),
23 };
24
25 static const struct snd_kcontrol_new line2_mix[] = {
26-SOC_DAPM_SINGLE("IN2R Switch", WM8993_LINE_MIXER2, 2, 1, 0),
27-SOC_DAPM_SINGLE("IN2L Switch", WM8993_LINE_MIXER2, 1, 1, 0),
28+SOC_DAPM_SINGLE("IN1R Switch", WM8993_LINE_MIXER2, 2, 1, 0),
29+SOC_DAPM_SINGLE("IN1L Switch", WM8993_LINE_MIXER2, 1, 1, 0),
30 SOC_DAPM_SINGLE("Output Switch", WM8993_LINE_MIXER2, 0, 1, 0),
31 };
32
33@@ -846,8 +846,8 @@ static const struct snd_soc_dapm_route lineout1_se_routes[] = {
34 };
35
36 static const struct snd_soc_dapm_route lineout2_diff_routes[] = {
37- { "LINEOUT2 Mixer", "IN2L Switch", "IN2L PGA" },
38- { "LINEOUT2 Mixer", "IN2R Switch", "IN2R PGA" },
39+ { "LINEOUT2 Mixer", "IN1L Switch", "IN1L PGA" },
40+ { "LINEOUT2 Mixer", "IN1R Switch", "IN1R PGA" },
41 { "LINEOUT2 Mixer", "Output Switch", "Right Output PGA" },
42
43 { "LINEOUT2N Driver", NULL, "LINEOUT2 Mixer" },
44--
451.7.7.4
46
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
new file mode 100644
index 00000000..7a625351
--- /dev/null
+++ 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
@@ -0,0 +1,35 @@
1From 520a5189a6745dcd3b61e87562e28d6e8aba12f8 Mon Sep 17 00:00:00 2001
2From: Mark Brown <broonie@opensource.wolfsonmicro.com>
3Date: Wed, 1 Feb 2012 23:46:58 +0000
4Subject: [PATCH 57/87] ASoC: wm_hubs: Correct line input to line output 2
5 paths
6
7commit 43b6cec27e1e50a1de3eff47e66e502f3fe7e66e upstream.
8
9The second line output mixer has the controls for the line input bypasses
10in the opposite order.
11
12Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
14---
15 sound/soc/codecs/wm_hubs.c | 4 ++--
16 1 files changed, 2 insertions(+), 2 deletions(-)
17
18diff --git a/sound/soc/codecs/wm_hubs.c b/sound/soc/codecs/wm_hubs.c
19index 6ef2283..3642e06 100644
20--- a/sound/soc/codecs/wm_hubs.c
21+++ b/sound/soc/codecs/wm_hubs.c
22@@ -587,8 +587,8 @@ SOC_DAPM_SINGLE("Left Output Switch", WM8993_LINE_MIXER1, 0, 1, 0),
23 };
24
25 static const struct snd_kcontrol_new line2_mix[] = {
26-SOC_DAPM_SINGLE("IN1R Switch", WM8993_LINE_MIXER2, 2, 1, 0),
27-SOC_DAPM_SINGLE("IN1L Switch", WM8993_LINE_MIXER2, 1, 1, 0),
28+SOC_DAPM_SINGLE("IN1L Switch", WM8993_LINE_MIXER2, 2, 1, 0),
29+SOC_DAPM_SINGLE("IN1R Switch", WM8993_LINE_MIXER2, 1, 1, 0),
30 SOC_DAPM_SINGLE("Output Switch", WM8993_LINE_MIXER2, 0, 1, 0),
31 };
32
33--
341.7.7.4
35
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
new file mode 100644
index 00000000..1109c8bd
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0058-ASoC-wm8962-Fix-word-length-configuration.patch
@@ -0,0 +1,38 @@
1From ef7dcc8c0fd35d7fb937d7bc4ac7b883945b3586 Mon Sep 17 00:00:00 2001
2From: Susan Gao <sgao@opensource.wolfsonmicro.com>
3Date: Mon, 30 Jan 2012 13:57:04 -0800
4Subject: [PATCH 58/87] ASoC: wm8962: Fix word length configuration
5
6commit 2b6712b19531e22455e7fa18371c5ba9eec76699 upstream.
7
8Signed-off-by: Susan Gao <sgao@opensource.wolfsonmicro.com>
9Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
10Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11---
12 sound/soc/codecs/wm8962.c | 6 +++---
13 1 files changed, 3 insertions(+), 3 deletions(-)
14
15diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c
16index 53edd9a..d795294 100644
17--- a/sound/soc/codecs/wm8962.c
18+++ b/sound/soc/codecs/wm8962.c
19@@ -3172,13 +3172,13 @@ static int wm8962_hw_params(struct snd_pcm_substream *substream,
20 case SNDRV_PCM_FORMAT_S16_LE:
21 break;
22 case SNDRV_PCM_FORMAT_S20_3LE:
23- aif0 |= 0x40;
24+ aif0 |= 0x4;
25 break;
26 case SNDRV_PCM_FORMAT_S24_LE:
27- aif0 |= 0x80;
28+ aif0 |= 0x8;
29 break;
30 case SNDRV_PCM_FORMAT_S32_LE:
31- aif0 |= 0xc0;
32+ aif0 |= 0xc;
33 break;
34 default:
35 return -EINVAL;
36--
371.7.7.4
38
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
new file mode 100644
index 00000000..0c1b50c0
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0059-ASoC-wm8994-Enabling-VMID-should-take-a-runtime-PM-r.patch
@@ -0,0 +1,42 @@
1From e9ee45b83b21448a8e27309456430890b5fa1ff2 Mon Sep 17 00:00:00 2001
2From: Mark Brown <broonie@opensource.wolfsonmicro.com>
3Date: Mon, 6 Feb 2012 12:07:08 +0000
4Subject: [PATCH 59/87] ASoC: wm8994: Enabling VMID should take a runtime PM
5 reference
6
7commit db966f8abb9ba74f7d5a7230f51572f52c31c4e5 upstream.
8
9We can enable VMID independently of the bias in some use cases so we need
10to ensure that the core device is powered up.
11
12Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
13Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
14---
15 sound/soc/codecs/wm8994.c | 4 ++++
16 1 files changed, 4 insertions(+), 0 deletions(-)
17
18diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
19index d0c545b..a3d6bd8 100644
20--- a/sound/soc/codecs/wm8994.c
21+++ b/sound/soc/codecs/wm8994.c
22@@ -729,6 +729,8 @@ static void vmid_reference(struct snd_soc_codec *codec)
23 {
24 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
25
26+ pm_runtime_get_sync(codec->dev);
27+
28 wm8994->vmid_refcount++;
29
30 dev_dbg(codec->dev, "Referencing VMID, refcount is now %d\n",
31@@ -796,6 +798,8 @@ static void vmid_dereference(struct snd_soc_codec *codec)
32 WM8994_VMID_BUF_ENA |
33 WM8994_VMID_RAMP_MASK, 0);
34 }
35+
36+ pm_runtime_put(codec->dev);
37 }
38
39 static int vmid_event(struct snd_soc_dapm_widget *w,
40--
411.7.7.4
42
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
new file mode 100644
index 00000000..d4b7d717
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0060-ASoC-wm8994-Fix-typo-in-VMID-ramp-setting.patch
@@ -0,0 +1,31 @@
1From a79cee16dfd9206eb087fbd25767c4d8dec0b0c5 Mon Sep 17 00:00:00 2001
2From: Mark Brown <broonie@opensource.wolfsonmicro.com>
3Date: Tue, 7 Feb 2012 17:24:19 +0000
4Subject: [PATCH 60/87] ASoC: wm8994: Fix typo in VMID ramp setting
5
6commit f647e1526fd6c7c8ab720781c40d11e11f930e93 upstream.
7
8The VMID ramp rate is supposed to be 0x3, not 11b. Fix that.
9
10Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
11Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
12---
13 sound/soc/codecs/wm8994.c | 2 +-
14 1 files changed, 1 insertions(+), 1 deletions(-)
15
16diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
17index a3d6bd8..6e502af 100644
18--- a/sound/soc/codecs/wm8994.c
19+++ b/sound/soc/codecs/wm8994.c
20@@ -744,7 +744,7 @@ static void vmid_reference(struct snd_soc_codec *codec)
21 WM8994_VMID_RAMP_MASK,
22 WM8994_STARTUP_BIAS_ENA |
23 WM8994_VMID_BUF_ENA |
24- (0x11 << WM8994_VMID_RAMP_SHIFT));
25+ (0x3 << WM8994_VMID_RAMP_SHIFT));
26
27 /* Main bias enable, VMID=2x40k */
28 snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_1,
29--
301.7.7.4
31
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
new file mode 100644
index 00000000..375aeebf
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0061-pcmcia-fix-socket-refcount-decrementing-on-each-resu.patch
@@ -0,0 +1,179 @@
1From 93636af6098a627a1ddc02f2f265be4a9d337201 Mon Sep 17 00:00:00 2001
2From: Russell King <rmk+kernel@arm.linux.org.uk>
3Date: Wed, 8 Feb 2012 17:13:41 -0800
4Subject: [PATCH 61/87] pcmcia: fix socket refcount decrementing on each
5 resume
6
7commit 025e4ab3db07fcbf62c01e4f30d1012234beb980 upstream.
8
9This fixes a memory-corrupting bug: not only does it cause the warning,
10but as a result of dropping the refcount to zero, it causes the
11pcmcia_socket0 device structure to be freed while it still has
12references, causing slab caches corruption. A fatal oops quickly
13follows this warning - often even just a 'dmesg' following the warning
14causes the kernel to oops.
15
16While testing suspend/resume on an ARM device with PCMCIA support, and a
17CF card inserted, I found that after five suspend and resumes, the
18kernel would complain, and shortly die after with slab corruption.
19
20 WARNING: at include/linux/kref.h:41 kobject_get+0x28/0x50()
21
22As the message doesn't give a clue about which kobject, and the built-in
23debugging in drivers/base/power/main.c happens too late, this was added
24right before each get_device():
25
26 printk("%s: %p [%s] %u\n", __func__, dev, kobject_name(&dev->kobj), atomic_read(&dev->kobj.kref.refcount));
27
28and on the 3rd s2ram cycle, the following behaviour observed:
29
30On the 3rd suspend/resume cycle:
31
32 dpm_prepare: c1a0d998 [pcmcia_socket0] 3
33 dpm_suspend: c1a0d998 [pcmcia_socket0] 3
34 dpm_suspend_noirq: c1a0d998 [pcmcia_socket0] 3
35 dpm_resume_noirq: c1a0d998 [pcmcia_socket0] 3
36 dpm_resume: c1a0d998 [pcmcia_socket0] 3
37 dpm_complete: c1a0d998 [pcmcia_socket0] 2
38
394th:
40
41 dpm_prepare: c1a0d998 [pcmcia_socket0] 2
42 dpm_suspend: c1a0d998 [pcmcia_socket0] 2
43 dpm_suspend_noirq: c1a0d998 [pcmcia_socket0] 2
44 dpm_resume_noirq: c1a0d998 [pcmcia_socket0] 2
45 dpm_resume: c1a0d998 [pcmcia_socket0] 2
46 dpm_complete: c1a0d998 [pcmcia_socket0] 1
47
485th:
49
50 dpm_prepare: c1a0d998 [pcmcia_socket0] 1
51 dpm_suspend: c1a0d998 [pcmcia_socket0] 1
52 dpm_suspend_noirq: c1a0d998 [pcmcia_socket0] 1
53 dpm_resume_noirq: c1a0d998 [pcmcia_socket0] 1
54 dpm_resume: c1a0d998 [pcmcia_socket0] 1
55 dpm_complete: c1a0d998 [pcmcia_socket0] 0
56 ------------[ cut here ]------------
57 WARNING: at include/linux/kref.h:41 kobject_get+0x28/0x50()
58 Modules linked in: ucb1x00_core
59 Backtrace:
60 [<c0212090>] (dump_backtrace+0x0/0x110) from [<c04799dc>] (dump_stack+0x18/0x1c)
61 [<c04799c4>] (dump_stack+0x0/0x1c) from [<c021cba0>] (warn_slowpath_common+0x50/0x68)
62 [<c021cb50>] (warn_slowpath_common+0x0/0x68) from [<c021cbdc>] (warn_slowpath_null+0x24/0x28)
63 [<c021cbb8>] (warn_slowpath_null+0x0/0x28) from [<c0335374>] (kobject_get+0x28/0x50)
64 [<c033534c>] (kobject_get+0x0/0x50) from [<c03804f4>] (get_device+0x1c/0x24)
65 [<c0388c90>] (dpm_complete+0x0/0x1a0) from [<c0389cc0>] (dpm_resume_end+0x1c/0x20)
66 ...
67
68Looking at commit 7b24e7988263 ("pcmcia: split up central event handler"),
69the following change was made to cs.c:
70
71 return 0;
72 }
73 #endif
74-
75- send_event(skt, CS_EVENT_PM_RESUME, CS_EVENT_PRI_LOW);
76+ if (!(skt->state & SOCKET_CARDBUS) && (skt->callback))
77+ skt->callback->early_resume(skt);
78 return 0;
79 }
80
81And the corresponding change in ds.c is from:
82
83-static int ds_event(struct pcmcia_socket *skt, event_t event, int priority)
84-{
85- struct pcmcia_socket *s = pcmcia_get_socket(skt);
86...
87- switch (event) {
88...
89- case CS_EVENT_PM_RESUME:
90- if (verify_cis_cache(skt) != 0) {
91- dev_dbg(&skt->dev, "cis mismatch - different card\n");
92- /* first, remove the card */
93- ds_event(skt, CS_EVENT_CARD_REMOVAL, CS_EVENT_PRI_HIGH);
94- mutex_lock(&s->ops_mutex);
95- destroy_cis_cache(skt);
96- kfree(skt->fake_cis);
97- skt->fake_cis = NULL;
98- s->functions = 0;
99- mutex_unlock(&s->ops_mutex);
100- /* now, add the new card */
101- ds_event(skt, CS_EVENT_CARD_INSERTION,
102- CS_EVENT_PRI_LOW);
103- }
104- break;
105...
106- }
107
108- pcmcia_put_socket(s);
109
110- return 0;
111-} /* ds_event */
112
113to:
114
115+static int pcmcia_bus_early_resume(struct pcmcia_socket *skt)
116+{
117+ if (!verify_cis_cache(skt)) {
118+ pcmcia_put_socket(skt);
119+ return 0;
120+ }
121
122+ dev_dbg(&skt->dev, "cis mismatch - different card\n");
123
124+ /* first, remove the card */
125+ pcmcia_bus_remove(skt);
126+ mutex_lock(&skt->ops_mutex);
127+ destroy_cis_cache(skt);
128+ kfree(skt->fake_cis);
129+ skt->fake_cis = NULL;
130+ skt->functions = 0;
131+ mutex_unlock(&skt->ops_mutex);
132
133+ /* now, add the new card */
134+ pcmcia_bus_add(skt);
135+ return 0;
136+}
137
138As can be seen, the original function called pcmcia_get_socket() and
139pcmcia_put_socket() around the guts, whereas the replacement code
140calls pcmcia_put_socket() only in one path. This creates an imbalance
141in the refcounting.
142
143Testing with pcmcia_put_socket() put removed shows that the bug is gone:
144
145 dpm_suspend: c1a10998 [pcmcia_socket0] 5
146 dpm_suspend_noirq: c1a10998 [pcmcia_socket0] 5
147 dpm_resume_noirq: c1a10998 [pcmcia_socket0] 5
148 dpm_resume: c1a10998 [pcmcia_socket0] 5
149 dpm_complete: c1a10998 [pcmcia_socket0] 5
150
151Tested-by: Russell King <rmk+kernel@arm.linux.org.uk>
152Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
153Cc: Dominik Brodowski <linux@dominikbrodowski.net>
154Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
155Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
156Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
157---
158 drivers/pcmcia/ds.c | 4 +---
159 1 files changed, 1 insertions(+), 3 deletions(-)
160
161diff --git a/drivers/pcmcia/ds.c b/drivers/pcmcia/ds.c
162index 749c2a1..1932029 100644
163--- a/drivers/pcmcia/ds.c
164+++ b/drivers/pcmcia/ds.c
165@@ -1269,10 +1269,8 @@ static int pcmcia_bus_add(struct pcmcia_socket *skt)
166
167 static int pcmcia_bus_early_resume(struct pcmcia_socket *skt)
168 {
169- if (!verify_cis_cache(skt)) {
170- pcmcia_put_socket(skt);
171+ if (!verify_cis_cache(skt))
172 return 0;
173- }
174
175 dev_dbg(&skt->dev, "cis mismatch - different card\n");
176
177--
1781.7.7.4
179
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
new file mode 100644
index 00000000..4bd7da23
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0062-ALSA-oxygen-virtuoso-fix-exchanged-L-R-volumes-of-au.patch
@@ -0,0 +1,67 @@
1From bc7e7c8b2462ed098d18bc54b431341cc69584b2 Mon Sep 17 00:00:00 2001
2From: Clemens Ladisch <clemens@ladisch.de>
3Date: Sat, 4 Feb 2012 20:56:47 +0100
4Subject: [PATCH 62/87] ALSA: oxygen, virtuoso: fix exchanged L/R volumes of
5 aux and CD inputs
6
7commit 2492250e4412c6411324c14ab289629360640b0a upstream.
8
9The driver accidentally exchanged the left/right fields for stereo AC'97
10mixer registers. This affected only the aux and CD inputs because the
11line input bypasses the AC'97 codec and the mic input is mono; cards
12without AC'97 (Xonar DS/DG/HDAV Slim, HG2PCI, HiFier) were not affected.
13
14Reported-and-tested-by: Abby Cedar <abbycedar@yahoo.com.au>
15Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
16Signed-off-by: Takashi Iwai <tiwai@suse.de>
17Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
18---
19 sound/pci/oxygen/oxygen_mixer.c | 25 ++++++++++++++-----------
20 1 files changed, 14 insertions(+), 11 deletions(-)
21
22diff --git a/sound/pci/oxygen/oxygen_mixer.c b/sound/pci/oxygen/oxygen_mixer.c
23index 26c7e8b..c0dbb52 100644
24--- a/sound/pci/oxygen/oxygen_mixer.c
25+++ b/sound/pci/oxygen/oxygen_mixer.c
26@@ -618,9 +618,12 @@ static int ac97_volume_get(struct snd_kcontrol *ctl,
27 mutex_lock(&chip->mutex);
28 reg = oxygen_read_ac97(chip, codec, index);
29 mutex_unlock(&chip->mutex);
30- value->value.integer.value[0] = 31 - (reg & 0x1f);
31- if (stereo)
32- value->value.integer.value[1] = 31 - ((reg >> 8) & 0x1f);
33+ if (!stereo) {
34+ value->value.integer.value[0] = 31 - (reg & 0x1f);
35+ } else {
36+ value->value.integer.value[0] = 31 - ((reg >> 8) & 0x1f);
37+ value->value.integer.value[1] = 31 - (reg & 0x1f);
38+ }
39 return 0;
40 }
41
42@@ -636,14 +639,14 @@ static int ac97_volume_put(struct snd_kcontrol *ctl,
43
44 mutex_lock(&chip->mutex);
45 oldreg = oxygen_read_ac97(chip, codec, index);
46- newreg = oldreg;
47- newreg = (newreg & ~0x1f) |
48- (31 - (value->value.integer.value[0] & 0x1f));
49- if (stereo)
50- newreg = (newreg & ~0x1f00) |
51- ((31 - (value->value.integer.value[1] & 0x1f)) << 8);
52- else
53- newreg = (newreg & ~0x1f00) | ((newreg & 0x1f) << 8);
54+ if (!stereo) {
55+ newreg = oldreg & ~0x1f;
56+ newreg |= 31 - (value->value.integer.value[0] & 0x1f);
57+ } else {
58+ newreg = oldreg & ~0x1f1f;
59+ newreg |= (31 - (value->value.integer.value[0] & 0x1f)) << 8;
60+ newreg |= 31 - (value->value.integer.value[1] & 0x1f);
61+ }
62 change = newreg != oldreg;
63 if (change)
64 oxygen_write_ac97(chip, codec, index, newreg);
65--
661.7.7.4
67
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
new file mode 100644
index 00000000..b3b5969b
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0063-iommu-amd-Work-around-broken-IVRS-tables.patch
@@ -0,0 +1,37 @@
1From 61c39c6dcc3c7b3278c611a5bdcc135a1e4d825e Mon Sep 17 00:00:00 2001
2From: Joerg Roedel <joerg.roedel@amd.com>
3Date: Wed, 18 Jan 2012 14:03:11 +0100
4Subject: [PATCH 63/87] iommu/amd: Work around broken IVRS tables
5
6commit af1be04901e27ce669b4ecde1c953d5c939498f5 upstream.
7
8On some systems the IVRS table does not contain all PCI
9devices present in the system. In case a device not present
10in the IVRS table is translated by the IOMMU no DMA is
11possible from that device by default.
12This patch fixes this by removing the DTE entry for every
13PCI device present in the system and not covered by IVRS.
14
15Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
16Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17---
18 drivers/iommu/amd_iommu.c | 3 +++
19 1 files changed, 3 insertions(+), 0 deletions(-)
20
21diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
22index 4ee277a..e0b3e33 100644
23--- a/drivers/iommu/amd_iommu.c
24+++ b/drivers/iommu/amd_iommu.c
25@@ -2479,6 +2479,9 @@ static unsigned device_dma_ops_init(void)
26
27 for_each_pci_dev(pdev) {
28 if (!check_device(&pdev->dev)) {
29+
30+ iommu_ignore_device(&pdev->dev);
31+
32 unhandled += 1;
33 continue;
34 }
35--
361.7.7.4
37
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
new file mode 100644
index 00000000..b488d7b9
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0064-iommu-msm-Fix-error-handling-in-msm_iommu_unmap.patch
@@ -0,0 +1,62 @@
1From d7cd8fc525c9322ceb1f1de26d7c6201aef9d842 Mon Sep 17 00:00:00 2001
2From: Joerg Roedel <joerg.roedel@amd.com>
3Date: Thu, 26 Jan 2012 18:25:37 +0100
4Subject: [PATCH 64/87] iommu/msm: Fix error handling in msm_iommu_unmap()
5
6commit 05df1f3c2afaef5672627f2b7095f0d4c4dbc3a0 upstream.
7
8Error handling in msm_iommu_unmap() is broken. On some error
9conditions retval is set to a non-zero value which causes
10the function to return 'len' at the end. This hides the
11error from the user. Zero should be returned in those error
12cases.
13
14Cc: David Brown <davidb@codeaurora.org>
15Cc: Stepan Moskovchenko <stepanm@codeaurora.org>
16Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
17Acked-by: David Brown <davidb@codeaurora.org>
18Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
19---
20 drivers/iommu/msm_iommu.c | 7 +------
21 1 files changed, 1 insertions(+), 6 deletions(-)
22
23diff --git a/drivers/iommu/msm_iommu.c b/drivers/iommu/msm_iommu.c
24index 5865dd2..a4d134d 100644
25--- a/drivers/iommu/msm_iommu.c
26+++ b/drivers/iommu/msm_iommu.c
27@@ -481,23 +481,19 @@ static int msm_iommu_unmap(struct iommu_domain *domain, unsigned long va,
28
29 priv = domain->priv;
30
31- if (!priv) {
32- ret = -ENODEV;
33+ if (!priv)
34 goto fail;
35- }
36
37 fl_table = priv->pgtable;
38
39 if (len != SZ_16M && len != SZ_1M &&
40 len != SZ_64K && len != SZ_4K) {
41 pr_debug("Bad length: %d\n", len);
42- ret = -EINVAL;
43 goto fail;
44 }
45
46 if (!fl_table) {
47 pr_debug("Null page table\n");
48- ret = -EINVAL;
49 goto fail;
50 }
51
52@@ -506,7 +502,6 @@ static int msm_iommu_unmap(struct iommu_domain *domain, unsigned long va,
53
54 if (*fl_pte == 0) {
55 pr_debug("First level PTE is 0\n");
56- ret = -ENODEV;
57 goto fail;
58 }
59
60--
611.7.7.4
62
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
new file mode 100644
index 00000000..1b7e90d7
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0065-mm-compaction-check-for-overlapping-nodes-during-iso.patch
@@ -0,0 +1,111 @@
1From a7d2576c858c397282602fe92adf8c8ac9d6a0e0 Mon Sep 17 00:00:00 2001
2From: Mel Gorman <mgorman@suse.de>
3Date: Wed, 8 Feb 2012 17:13:38 -0800
4Subject: [PATCH 65/87] mm: compaction: check for overlapping nodes during
5 isolation for migration
6
7commit dc9086004b3d5db75997a645b3fe08d9138b7ad0 upstream.
8
9When isolating pages for migration, migration starts at the start of a
10zone while the free scanner starts at the end of the zone. Migration
11avoids entering a new zone by never going beyond the free scanned.
12
13Unfortunately, in very rare cases nodes can overlap. When this happens,
14migration isolates pages without the LRU lock held, corrupting lists
15which will trigger errors in reclaim or during page free such as in the
16following oops
17
18 BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
19 IP: [<ffffffff810f795c>] free_pcppages_bulk+0xcc/0x450
20 PGD 1dda554067 PUD 1e1cb58067 PMD 0
21 Oops: 0000 [#1] SMP
22 CPU 37
23 Pid: 17088, comm: memcg_process_s Tainted: G X
24 RIP: free_pcppages_bulk+0xcc/0x450
25 Process memcg_process_s (pid: 17088, threadinfo ffff881c2926e000, task ffff881c2926c0c0)
26 Call Trace:
27 free_hot_cold_page+0x17e/0x1f0
28 __pagevec_free+0x90/0xb0
29 release_pages+0x22a/0x260
30 pagevec_lru_move_fn+0xf3/0x110
31 putback_lru_page+0x66/0xe0
32 unmap_and_move+0x156/0x180
33 migrate_pages+0x9e/0x1b0
34 compact_zone+0x1f3/0x2f0
35 compact_zone_order+0xa2/0xe0
36 try_to_compact_pages+0xdf/0x110
37 __alloc_pages_direct_compact+0xee/0x1c0
38 __alloc_pages_slowpath+0x370/0x830
39 __alloc_pages_nodemask+0x1b1/0x1c0
40 alloc_pages_vma+0x9b/0x160
41 do_huge_pmd_anonymous_page+0x160/0x270
42 do_page_fault+0x207/0x4c0
43 page_fault+0x25/0x30
44
45The "X" in the taint flag means that external modules were loaded but but
46is unrelated to the bug triggering. The real problem was because the PFN
47layout looks like this
48
49 Zone PFN ranges:
50 DMA 0x00000010 -> 0x00001000
51 DMA32 0x00001000 -> 0x00100000
52 Normal 0x00100000 -> 0x01e80000
53 Movable zone start PFN for each node
54 early_node_map[14] active PFN ranges
55 0: 0x00000010 -> 0x0000009b
56 0: 0x00000100 -> 0x0007a1ec
57 0: 0x0007a354 -> 0x0007a379
58 0: 0x0007f7ff -> 0x0007f800
59 0: 0x00100000 -> 0x00680000
60 1: 0x00680000 -> 0x00e80000
61 0: 0x00e80000 -> 0x01080000
62 1: 0x01080000 -> 0x01280000
63 0: 0x01280000 -> 0x01480000
64 1: 0x01480000 -> 0x01680000
65 0: 0x01680000 -> 0x01880000
66 1: 0x01880000 -> 0x01a80000
67 0: 0x01a80000 -> 0x01c80000
68 1: 0x01c80000 -> 0x01e80000
69
70The fix is straight-forward. isolate_migratepages() has to make a
71similar check to isolate_freepage to ensure that it never isolates pages
72from a zone it does not hold the LRU lock for.
73
74This was discovered in a 3.0-based kernel but it affects 3.1.x, 3.2.x
75and current mainline.
76
77Signed-off-by: Mel Gorman <mgorman@suse.de>
78Acked-by: Michal Nazarewicz <mina86@mina86.com>
79Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
80Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
81Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
82---
83 mm/compaction.c | 11 ++++++++++-
84 1 files changed, 10 insertions(+), 1 deletions(-)
85
86diff --git a/mm/compaction.c b/mm/compaction.c
87index edc1e26..8fb8a40 100644
88--- a/mm/compaction.c
89+++ b/mm/compaction.c
90@@ -330,8 +330,17 @@ static isolate_migrate_t isolate_migratepages(struct zone *zone,
91 continue;
92 nr_scanned++;
93
94- /* Get the page and skip if free */
95+ /*
96+ * Get the page and ensure the page is within the same zone.
97+ * See the comment in isolate_freepages about overlapping
98+ * nodes. It is deliberate that the new zone lock is not taken
99+ * as memory compaction should not move pages between nodes.
100+ */
101 page = pfn_to_page(low_pfn);
102+ if (page_zone(page) != zone)
103+ continue;
104+
105+ /* Skip if free */
106 if (PageBuddy(page))
107 continue;
108
109--
1101.7.7.4
111
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
new file mode 100644
index 00000000..42d35253
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0066-mm-fix-UP-THP-spin_is_locked-BUGs.patch
@@ -0,0 +1,63 @@
1From d0a77dc1abbe11f8d14a6cce8632d85ff79f3636 Mon Sep 17 00:00:00 2001
2From: Hugh Dickins <hughd@google.com>
3Date: Wed, 8 Feb 2012 17:13:40 -0800
4Subject: [PATCH 66/87] mm: fix UP THP spin_is_locked BUGs
5
6commit b9980cdcf2524c5fe15d8cbae9c97b3ed6385563 upstream.
7
8Fix CONFIG_TRANSPARENT_HUGEPAGE=y CONFIG_SMP=n CONFIG_DEBUG_VM=y
9CONFIG_DEBUG_SPINLOCK=n kernel: spin_is_locked() is then always false,
10and so triggers some BUGs in Transparent HugePage codepaths.
11
12asm-generic/bug.h mentions this problem, and provides a WARN_ON_SMP(x);
13but being too lazy to add VM_BUG_ON_SMP, BUG_ON_SMP, WARN_ON_SMP_ONCE,
14VM_WARN_ON_SMP_ONCE, just test NR_CPUS != 1 in the existing VM_BUG_ONs.
15
16Signed-off-by: Hugh Dickins <hughd@google.com>
17Cc: Andrea Arcangeli <aarcange@redhat.com>
18Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
19Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
20Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
21---
22 mm/huge_memory.c | 4 ++--
23 mm/swap.c | 2 +-
24 2 files changed, 3 insertions(+), 3 deletions(-)
25
26diff --git a/mm/huge_memory.c b/mm/huge_memory.c
27index 36b3d98..33141f5 100644
28--- a/mm/huge_memory.c
29+++ b/mm/huge_memory.c
30@@ -2064,7 +2064,7 @@ static void collect_mm_slot(struct mm_slot *mm_slot)
31 {
32 struct mm_struct *mm = mm_slot->mm;
33
34- VM_BUG_ON(!spin_is_locked(&khugepaged_mm_lock));
35+ VM_BUG_ON(NR_CPUS != 1 && !spin_is_locked(&khugepaged_mm_lock));
36
37 if (khugepaged_test_exit(mm)) {
38 /* free mm_slot */
39@@ -2094,7 +2094,7 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages,
40 int progress = 0;
41
42 VM_BUG_ON(!pages);
43- VM_BUG_ON(!spin_is_locked(&khugepaged_mm_lock));
44+ VM_BUG_ON(NR_CPUS != 1 && !spin_is_locked(&khugepaged_mm_lock));
45
46 if (khugepaged_scan.mm_slot)
47 mm_slot = khugepaged_scan.mm_slot;
48diff --git a/mm/swap.c b/mm/swap.c
49index a91caf7..55b266d 100644
50--- a/mm/swap.c
51+++ b/mm/swap.c
52@@ -667,7 +667,7 @@ void lru_add_page_tail(struct zone* zone,
53 VM_BUG_ON(!PageHead(page));
54 VM_BUG_ON(PageCompound(page_tail));
55 VM_BUG_ON(PageLRU(page_tail));
56- VM_BUG_ON(!spin_is_locked(&zone->lru_lock));
57+ VM_BUG_ON(NR_CPUS != 1 && !spin_is_locked(&zone->lru_lock));
58
59 SetPageLRU(page_tail);
60
61--
621.7.7.4
63
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
new file mode 100644
index 00000000..73d28392
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0067-target-Use-correct-preempted-registration-sense-code.patch
@@ -0,0 +1,59 @@
1From 1c7a78d3cf820992a6a67ea90423713fb429907f Mon Sep 17 00:00:00 2001
2From: Marco Sanvido <marco@purestorage.com>
3Date: Tue, 3 Jan 2012 17:12:57 -0800
4Subject: [PATCH 67/87] target: Use correct preempted registration sense code
5
6commit 9e08e34e3735ae057eb3834da3570995811b7eb9 upstream.
7
8The comments quote the right parts of the spec:
9
10 * d) Establish a unit attention condition for the
11 * initiator port associated with every I_T nexus
12 * that lost its registration other than the I_T
13 * nexus on which the PERSISTENT RESERVE OUT command
14 * was received, with the additional sense code set
15 * to REGISTRATIONS PREEMPTED.
16
17and
18
19 * e) Establish a unit attention condition for the initiator
20 * port associated with every I_T nexus that lost its
21 * persistent reservation and/or registration, with the
22 * additional sense code set to REGISTRATIONS PREEMPTED;
23
24but the actual code accidentally uses ASCQ_2AH_RESERVATIONS_PREEMPTED
25instead of ASCQ_2AH_REGISTRATIONS_PREEMPTED. Fix this.
26
27Signed-off-by: Marco Sanvido <marco@purestorage.com>
28Signed-off-by: Roland Dreier <roland@purestorage.com>
29Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
30Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
31---
32 drivers/target/target_core_pr.c | 4 ++--
33 1 files changed, 2 insertions(+), 2 deletions(-)
34
35diff --git a/drivers/target/target_core_pr.c b/drivers/target/target_core_pr.c
36index 95dee70..4911fe9 100644
37--- a/drivers/target/target_core_pr.c
38+++ b/drivers/target/target_core_pr.c
39@@ -3138,7 +3138,7 @@ static int core_scsi3_pro_preempt(
40 if (!calling_it_nexus)
41 core_scsi3_ua_allocate(pr_reg_nacl,
42 pr_res_mapped_lun, 0x2A,
43- ASCQ_2AH_RESERVATIONS_PREEMPTED);
44+ ASCQ_2AH_REGISTRATIONS_PREEMPTED);
45 }
46 spin_unlock(&pr_tmpl->registration_lock);
47 /*
48@@ -3251,7 +3251,7 @@ static int core_scsi3_pro_preempt(
49 * additional sense code set to REGISTRATIONS PREEMPTED;
50 */
51 core_scsi3_ua_allocate(pr_reg_nacl, pr_res_mapped_lun, 0x2A,
52- ASCQ_2AH_RESERVATIONS_PREEMPTED);
53+ ASCQ_2AH_REGISTRATIONS_PREEMPTED);
54 }
55 spin_unlock(&pr_tmpl->registration_lock);
56 /*
57--
581.7.7.4
59
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
new file mode 100644
index 00000000..83fcdfbf
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0068-target-Allow-PERSISTENT-RESERVE-IN-for-non-reservati.patch
@@ -0,0 +1,35 @@
1From 1348bc5266eb73206b11e675656051201f28949b Mon Sep 17 00:00:00 2001
2From: Marco Sanvido <marco@purestorage.com>
3Date: Tue, 3 Jan 2012 17:12:58 -0800
4Subject: [PATCH 68/87] target: Allow PERSISTENT RESERVE IN for
5 non-reservation holder
6
7commit 6816966a8418b980481b4dced7eddd1796b145e8 upstream.
8
9Initiators that aren't the active reservation holder should be able to
10do a PERSISTENT RESERVE IN command in all cases, so add it to the list
11of allowed CDBs in core_scsi3_pr_seq_non_holder().
12
13Signed-off-by: Marco Sanvido <marco@purestorage.com>
14Signed-off-by: Roland Dreier <roland@purestorage.com>
15Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
16Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17---
18 drivers/target/target_core_pr.c | 1 +
19 1 files changed, 1 insertions(+), 0 deletions(-)
20
21diff --git a/drivers/target/target_core_pr.c b/drivers/target/target_core_pr.c
22index 4911fe9..9119d92 100644
23--- a/drivers/target/target_core_pr.c
24+++ b/drivers/target/target_core_pr.c
25@@ -481,6 +481,7 @@ static int core_scsi3_pr_seq_non_holder(
26 case READ_MEDIA_SERIAL_NUMBER:
27 case REPORT_LUNS:
28 case REQUEST_SENSE:
29+ case PERSISTENT_RESERVE_IN:
30 ret = 0; /*/ Allowed CDBs */
31 break;
32 default:
33--
341.7.7.4
35
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
new file mode 100644
index 00000000..dbbc8270
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0069-target-Correct-sense-key-for-INVALID-FIELD-IN-PARAME.patch
@@ -0,0 +1,69 @@
1From f4d055fceeb62aca2303fe076d17005a662690a3 Mon Sep 17 00:00:00 2001
2From: Roland Dreier <roland@purestorage.com>
3Date: Mon, 9 Jan 2012 17:54:00 -0800
4Subject: [PATCH 69/87] target: Correct sense key for INVALID FIELD IN
5 {PARAMETER LIST,CDB}
6
7commit 9fbc8909876a2160044e71d376848973b9bfdc3f upstream.
8
9According to SPC-4, the sense key for commands that are failed with
10INVALID FIELD IN PARAMETER LIST and INVALID FIELD IN CDB should be
11ILLEGAL REQUEST (5h) rather than ABORTED COMMAND (Bh). Without this
12patch, a tcm_loop LUN incorrectly gives:
13
14 # sg_raw -r 1 -v /dev/sda 3 1 0 0 ff 0
15 Sense Information:
16 Fixed format, current; Sense key: Aborted Command
17 Additional sense: Invalid field in cdb
18 Raw sense data (in hex):
19 70 00 0b 00 00 00 00 0a 00 00 00 00 24 00 00 00
20 00 00
21
22While a real SCSI disk gives:
23
24 Sense Information:
25 Fixed format, current; Sense key: Illegal Request
26 Additional sense: Invalid field in cdb
27 Raw sense data (in hex):
28 70 00 05 00 00 00 00 18 00 00 00 00 24 00 00 00
29 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30
31with the main point being that the real disk gives a sense key of
32ILLEGAL REQUEST (5h).
33
34Signed-off-by: Roland Dreier <roland@purestorage.com>
35Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
36Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
37---
38 drivers/target/target_core_transport.c | 8 ++++----
39 1 files changed, 4 insertions(+), 4 deletions(-)
40
41diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
42index e87d0eb..4f99d4c 100644
43--- a/drivers/target/target_core_transport.c
44+++ b/drivers/target/target_core_transport.c
45@@ -4403,8 +4403,8 @@ int transport_send_check_condition_and_sense(
46 /* CURRENT ERROR */
47 buffer[offset] = 0x70;
48 buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10;
49- /* ABORTED COMMAND */
50- buffer[offset+SPC_SENSE_KEY_OFFSET] = ABORTED_COMMAND;
51+ /* ILLEGAL REQUEST */
52+ buffer[offset+SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST;
53 /* INVALID FIELD IN CDB */
54 buffer[offset+SPC_ASC_KEY_OFFSET] = 0x24;
55 break;
56@@ -4412,8 +4412,8 @@ int transport_send_check_condition_and_sense(
57 /* CURRENT ERROR */
58 buffer[offset] = 0x70;
59 buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10;
60- /* ABORTED COMMAND */
61- buffer[offset+SPC_SENSE_KEY_OFFSET] = ABORTED_COMMAND;
62+ /* ILLEGAL REQUEST */
63+ buffer[offset+SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST;
64 /* INVALID FIELD IN PARAMETER LIST */
65 buffer[offset+SPC_ASC_KEY_OFFSET] = 0x26;
66 break;
67--
681.7.7.4
69
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
new file mode 100644
index 00000000..5eabdb97
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0070-target-Add-workaround-for-zero-length-control-CDB-ha.patch
@@ -0,0 +1,62 @@
1From f467de45d956d46c692fd6a2331f296e9e872aba Mon Sep 17 00:00:00 2001
2From: Nicholas Bellinger <nab@linux-iscsi.org>
3Date: Fri, 13 Jan 2012 12:01:34 -0800
4Subject: [PATCH 70/87] target: Add workaround for zero-length control CDB
5 handling
6
7commit 91ec1d3535b2acf12c599045cc19ad9be3c6a47b upstream.
8
9This patch adds a work-around for handling zero allocation length
10control CDBs (type SCF_SCSI_CONTROL_SG_IO_CDB) that was causing an
11OOPs with the following raw calls:
12
13 # sg_raw -v /dev/sdd 3 0 0 0 0 0
14 # sg_raw -v /dev/sdd 0x1a 0 1 0 0 0
15
16This patch will follow existing zero-length handling for data I/O
17and silently return with GOOD status. This addresses the zero length
18issue, but the proper long-term resolution for handling arbitary
19allocation lengths will be to refactor out data-phase handling in
20individual CDB emulation logic within target_core_cdb.c
21
22Reported-by: Roland Dreier <roland@purestorage.com>
23Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
24Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
25---
26 drivers/target/target_core_transport.c | 13 +++++++++++++
27 1 files changed, 13 insertions(+), 0 deletions(-)
28
29diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
30index 4f99d4c..861628e 100644
31--- a/drivers/target/target_core_transport.c
32+++ b/drivers/target/target_core_transport.c
33@@ -3701,6 +3701,11 @@ transport_allocate_control_task(struct se_cmd *cmd)
34 struct se_task *task;
35 unsigned long flags;
36
37+ /* Workaround for handling zero-length control CDBs */
38+ if ((cmd->se_cmd_flags & SCF_SCSI_CONTROL_SG_IO_CDB) &&
39+ !cmd->data_length)
40+ return 0;
41+
42 task = transport_generic_get_task(cmd, cmd->data_direction);
43 if (!task)
44 return -ENOMEM;
45@@ -3772,6 +3777,14 @@ int transport_generic_new_cmd(struct se_cmd *cmd)
46 else if (!task_cdbs && (cmd->se_cmd_flags & SCF_SCSI_DATA_SG_IO_CDB)) {
47 cmd->t_state = TRANSPORT_COMPLETE;
48 atomic_set(&cmd->t_transport_active, 1);
49+
50+ if (cmd->t_task_cdb[0] == REQUEST_SENSE) {
51+ u8 ua_asc = 0, ua_ascq = 0;
52+
53+ core_scsi3_ua_clear_for_request_sense(cmd,
54+ &ua_asc, &ua_ascq);
55+ }
56+
57 INIT_WORK(&cmd->work, target_complete_ok_work);
58 queue_work(target_completion_wq, &cmd->work);
59 return 0;
60--
611.7.7.4
62
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
new file mode 100644
index 00000000..3f9aff20
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0071-target-Return-correct-ASC-for-unimplemented-VPD-page.patch
@@ -0,0 +1,37 @@
1From 0e14d6b67d73aba29df97b9619e97e249a882cbe Mon Sep 17 00:00:00 2001
2From: Roland Dreier <roland@purestorage.com>
3Date: Tue, 17 Jan 2012 18:00:56 -0800
4Subject: [PATCH 71/87] target: Return correct ASC for unimplemented VPD pages
5
6commit bb1acb2ee038a6c13ee99e0b9fb44dacb4a9de84 upstream.
7
8My draft of SPC-4 says:
9
10 If the device server does not implement the requested vital product
11 data page, then the command shall be terminated with CHECK CONDITION
12 status, with the sense key set to ILLEGAL REQUEST, and the
13 additional sense code set to INVALID FIELD IN CDB.
14
15Signed-off-by: Roland Dreier <roland@purestorage.com>
16Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
17Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
18---
19 drivers/target/target_core_cdb.c | 2 +-
20 1 files changed, 1 insertions(+), 1 deletions(-)
21
22diff --git a/drivers/target/target_core_cdb.c b/drivers/target/target_core_cdb.c
23index 2e8c1be..24991f3 100644
24--- a/drivers/target/target_core_cdb.c
25+++ b/drivers/target/target_core_cdb.c
26@@ -732,7 +732,7 @@ int target_emulate_inquiry(struct se_task *task)
27 }
28
29 pr_err("Unknown VPD Code: 0x%02x\n", cdb[2]);
30- cmd->scsi_sense_reason = TCM_UNSUPPORTED_SCSI_OPCODE;
31+ cmd->scsi_sense_reason = TCM_INVALID_CDB_FIELD;
32 ret = -EINVAL;
33
34 out_unmap:
35--
361.7.7.4
37
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
new file mode 100644
index 00000000..cd102dfc
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0072-target-Fail-INQUIRY-commands-with-EVPD-0-but-PAGE-CO.patch
@@ -0,0 +1,43 @@
1From 95db7f1f8dee58ba87842ecd5b93e7c2884e0637 Mon Sep 17 00:00:00 2001
2From: Roland Dreier <roland@purestorage.com>
3Date: Tue, 17 Jan 2012 18:00:57 -0800
4Subject: [PATCH 72/87] target: Fail INQUIRY commands with EVPD==0 but PAGE
5 CODE!=0
6
7commit bf0053550aebe56f3bb5dd793e9de69238b5b945 upstream.
8
9My draft of SPC-4 says:
10
11 If the PAGE CODE field is not set to zero when the EVPD bit is set
12 to zero, the command shall be terminated with CHECK CONDITION
13 status, with the sense key set to ILLEGAL REQUEST, and the
14 additional sense code set to INVALID FIELD IN CDB.
15
16Signed-off-by: Roland Dreier <roland@purestorage.com>
17Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
18Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
19---
20 drivers/target/target_core_cdb.c | 7 +++++++
21 1 files changed, 7 insertions(+), 0 deletions(-)
22
23diff --git a/drivers/target/target_core_cdb.c b/drivers/target/target_core_cdb.c
24index 24991f3..251e48f 100644
25--- a/drivers/target/target_core_cdb.c
26+++ b/drivers/target/target_core_cdb.c
27@@ -701,6 +701,13 @@ int target_emulate_inquiry(struct se_task *task)
28 int p, ret;
29
30 if (!(cdb[1] & 0x1)) {
31+ if (cdb[2]) {
32+ pr_err("INQUIRY with EVPD==0 but PAGE CODE=%02x\n",
33+ cdb[2]);
34+ cmd->scsi_sense_reason = TCM_INVALID_CDB_FIELD;
35+ return -EINVAL;
36+ }
37+
38 ret = target_emulate_inquiry_std(cmd);
39 goto out;
40 }
41--
421.7.7.4
43
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
new file mode 100644
index 00000000..d6490da4
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0073-Staging-asus_oled-fix-image-processing.patch
@@ -0,0 +1,59 @@
1From d352f16e64cab162bb25e4f6af298f1a9d1d9e12 Mon Sep 17 00:00:00 2001
2From: Pekka Paalanen <pq@iki.fi>
3Date: Sun, 22 Jan 2012 16:33:46 +0200
4Subject: [PATCH 73/87] Staging: asus_oled: fix image processing
5
6commit 635032cb397b396241372fa0ff36ae758e658b23 upstream.
7
8Programming an image was broken, because odev->buf_offs was not advanced
9for val == 0 in append_values(). This regression was introduced in:
10
11 commit 1ff12a4aa354bed093a0240d5e6347b1e27601bc
12 Author: Kevin A. Granade <kevin.granade@gmail.com>
13 Date: Sat Sep 5 01:03:39 2009 -0500
14
15 Staging: asus_oled: Cleaned up checkpatch issues.
16
17Fix the image processing by special-casing val == 0.
18
19I have tested this change on an Asus G50V laptop only.
20
21Cc: Jakub Schmidtke <sjakub@gmail.com>
22Cc: Kevin A. Granade <kevin.granade@gmail.com>
23Signed-off-by: Pekka Paalanen <pq@iki.fi>
24Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
25---
26 drivers/staging/asus_oled/asus_oled.c | 10 ++++++++--
27 1 files changed, 8 insertions(+), 2 deletions(-)
28
29diff --git a/drivers/staging/asus_oled/asus_oled.c b/drivers/staging/asus_oled/asus_oled.c
30index 7bb7da7..8894bd5 100644
31--- a/drivers/staging/asus_oled/asus_oled.c
32+++ b/drivers/staging/asus_oled/asus_oled.c
33@@ -355,7 +355,14 @@ static void send_data(struct asus_oled_dev *odev)
34
35 static int append_values(struct asus_oled_dev *odev, uint8_t val, size_t count)
36 {
37- while (count-- > 0 && val) {
38+ odev->last_val = val;
39+
40+ if (val == 0) {
41+ odev->buf_offs += count;
42+ return 0;
43+ }
44+
45+ while (count-- > 0) {
46 size_t x = odev->buf_offs % odev->width;
47 size_t y = odev->buf_offs / odev->width;
48 size_t i;
49@@ -406,7 +413,6 @@ static int append_values(struct asus_oled_dev *odev, uint8_t val, size_t count)
50 ;
51 }
52
53- odev->last_val = val;
54 odev->buf_offs++;
55 }
56
57--
581.7.7.4
59
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
new file mode 100644
index 00000000..43ee220d
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0074-Staging-asus_oled-fix-NULL-ptr-crash-on-unloading.patch
@@ -0,0 +1,59 @@
1From ebb468b38e343782b3271343766d92978f8436a7 Mon Sep 17 00:00:00 2001
2From: Pekka Paalanen <pq@iki.fi>
3Date: Sun, 22 Jan 2012 16:33:47 +0200
4Subject: [PATCH 74/87] Staging: asus_oled: fix NULL-ptr crash on unloading
5
6commit 3589e74595a4332ebf77b5ed006f3c6686071ecd upstream.
7
8Asus_oled triggers the following bug on module unloading:
9
10 usbcore: deregistering interface driver asus-oled
11 BUG: unable to handle kernel NULL pointer dereference at 0000000000000038
12 IP: [<ffffffff8111292b>] sysfs_delete_link+0x30/0x66
13
14 Call Trace:
15 [<ffffffff81225373>] device_remove_class_symlinks+0x6b/0x70
16 [<ffffffff812256a8>] device_del+0x9f/0x1ab
17 [<ffffffff812257c5>] device_unregister+0x11/0x1e
18 [<ffffffffa000cb82>] asus_oled_disconnect+0x4f/0x9e [asus_oled]
19 [<ffffffff81277430>] usb_unbind_interface+0x54/0x103
20 [<ffffffff812276c4>] __device_release_driver+0xa2/0xeb
21 [<ffffffff81227794>] driver_detach+0x87/0xad
22 [<ffffffff812269e9>] bus_remove_driver+0x91/0xc1
23 [<ffffffff81227fb4>] driver_unregister+0x66/0x6e
24 [<ffffffff812771ed>] usb_deregister+0xbb/0xc4
25 [<ffffffffa000ce87>] asus_oled_exit+0x2f/0x31 [asus_oled]
26 [<ffffffff81068365>] sys_delete_module+0x1b8/0x21b
27 [<ffffffff810ae3de>] ? do_munmap+0x2ef/0x313
28 [<ffffffff813699bb>] system_call_fastpath+0x16/0x1b
29
30This is due to an incorrect destruction sequence in asus_oled_exit().
31
32Fix the order, fixes the bug. Tested on an Asus G50V laptop only.
33
34Cc: Jakub Schmidtke <sjakub@gmail.com>
35Signed-off-by: Pekka Paalanen <pq@iki.fi>
36Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
37---
38 drivers/staging/asus_oled/asus_oled.c | 3 +--
39 1 files changed, 1 insertions(+), 2 deletions(-)
40
41diff --git a/drivers/staging/asus_oled/asus_oled.c b/drivers/staging/asus_oled/asus_oled.c
42index 8894bd5..63bafbb 100644
43--- a/drivers/staging/asus_oled/asus_oled.c
44+++ b/drivers/staging/asus_oled/asus_oled.c
45@@ -811,10 +811,9 @@ error:
46
47 static void __exit asus_oled_exit(void)
48 {
49+ usb_deregister(&oled_driver);
50 class_remove_file(oled_class, &class_attr_version.attr);
51 class_destroy(oled_class);
52-
53- usb_deregister(&oled_driver);
54 }
55
56 module_init(asus_oled_init);
57--
581.7.7.4
59
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
new file mode 100644
index 00000000..67a862d0
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0075-staging-r8712u-Add-new-Sitecom-UsB-ID.patch
@@ -0,0 +1,32 @@
1From 1cbce5d4added4defb84dc19acab3efc86b1e979 Mon Sep 17 00:00:00 2001
2From: Larry Finger <Larry.Finger@lwfinger.net>
3Date: Sat, 7 Jan 2012 10:07:03 -0600
4Subject: [PATCH 75/87] staging: r8712u: Add new Sitecom UsB ID
5
6commit 1793bf1deddc8ce25dc41925d5dbe64536c841b6 upstream.
7
8Add USB ID for SITECOM WLA-1000 V1 001 WLAN
9
10Reported-and-tested-by: Roland Gruber <post@rolandgruber.de>
11Reported-and-tested-by: Dario Lucia <dario.lucia@gmail.com>
12Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
13Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
14---
15 drivers/staging/rtl8712/usb_intf.c | 1 +
16 1 files changed, 1 insertions(+), 0 deletions(-)
17
18diff --git a/drivers/staging/rtl8712/usb_intf.c b/drivers/staging/rtl8712/usb_intf.c
19index 5385da2..8de0c80 100644
20--- a/drivers/staging/rtl8712/usb_intf.c
21+++ b/drivers/staging/rtl8712/usb_intf.c
22@@ -89,6 +89,7 @@ static struct usb_device_id rtl871x_usb_id_tbl[] = {
23 {USB_DEVICE(0x0DF6, 0x0045)},
24 {USB_DEVICE(0x0DF6, 0x0059)}, /* 11n mode disable */
25 {USB_DEVICE(0x0DF6, 0x004B)},
26+ {USB_DEVICE(0x0DF6, 0x005B)},
27 {USB_DEVICE(0x0DF6, 0x005D)},
28 {USB_DEVICE(0x0DF6, 0x0063)},
29 /* Sweex */
30--
311.7.7.4
32
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
new file mode 100644
index 00000000..7cfd04b7
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0076-staging-r8712u-Use-asynchronous-firmware-loading.patch
@@ -0,0 +1,285 @@
1From bc5d453eab4506cb52397db8830d1070904265a4 Mon Sep 17 00:00:00 2001
2From: Larry Finger <Larry.Finger@lwfinger.net>
3Date: Sun, 5 Feb 2012 21:12:26 -0600
4Subject: [PATCH 76/87] staging: r8712u: Use asynchronous firmware loading
5
6commit 8c213fa59199f9673d66970d6940fa093186642f upstream.
7
8In https://bugs.archlinux.org/task/27996, failure of driver r8712u is
9reported, with a timeout during module loading due to synchronous loading
10of the firmware. The code now uses request_firmware_nowait().
11
12Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
13Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
14---
15 drivers/staging/rtl8712/drv_types.h | 7 ++++
16 drivers/staging/rtl8712/hal_init.c | 62 +++++++++++++++++++++++----------
17 drivers/staging/rtl8712/os_intfs.c | 14 ++++++--
18 drivers/staging/rtl8712/rtl8712_hal.h | 1 +
19 drivers/staging/rtl8712/usb_intf.c | 9 +++--
20 5 files changed, 68 insertions(+), 25 deletions(-)
21
22diff --git a/drivers/staging/rtl8712/drv_types.h b/drivers/staging/rtl8712/drv_types.h
23index 9b5d771..ed85b44 100644
24--- a/drivers/staging/rtl8712/drv_types.h
25+++ b/drivers/staging/rtl8712/drv_types.h
26@@ -37,6 +37,8 @@ struct _adapter;
27 #include "wlan_bssdef.h"
28 #include "rtl8712_spec.h"
29 #include "rtl8712_hal.h"
30+#include <linux/mutex.h>
31+#include <linux/completion.h>
32
33 enum _NIC_VERSION {
34 RTL8711_NIC,
35@@ -168,6 +170,7 @@ struct _adapter {
36 s32 bSurpriseRemoved;
37 u32 IsrContent;
38 u32 ImrContent;
39+ bool fw_found;
40 u8 EepromAddressSize;
41 u8 hw_init_completed;
42 struct task_struct *cmdThread;
43@@ -184,6 +187,10 @@ struct _adapter {
44 _workitem wkFilterRxFF0;
45 u8 blnEnableRxFF0Filter;
46 spinlock_t lockRxFF0Filter;
47+ const struct firmware *fw;
48+ struct usb_interface *pusb_intf;
49+ struct mutex mutex_start;
50+ struct completion rtl8712_fw_ready;
51 };
52
53 static inline u8 *myid(struct eeprom_priv *peepriv)
54diff --git a/drivers/staging/rtl8712/hal_init.c b/drivers/staging/rtl8712/hal_init.c
55index d0029aa..cc893c0 100644
56--- a/drivers/staging/rtl8712/hal_init.c
57+++ b/drivers/staging/rtl8712/hal_init.c
58@@ -42,29 +42,56 @@
59 #define FWBUFF_ALIGN_SZ 512
60 #define MAX_DUMP_FWSZ 49152 /*default = 49152 (48k)*/
61
62-static u32 rtl871x_open_fw(struct _adapter *padapter, void **pphfwfile_hdl,
63- const u8 **ppmappedfw)
64+static void rtl871x_load_fw_cb(const struct firmware *firmware, void *context)
65 {
66+ struct _adapter *padapter = context;
67+
68+ complete(&padapter->rtl8712_fw_ready);
69+ if (!firmware) {
70+ struct usb_device *udev = padapter->dvobjpriv.pusbdev;
71+ struct usb_interface *pusb_intf = padapter->pusb_intf;
72+ printk(KERN_ERR "r8712u: Firmware request failed\n");
73+ padapter->fw_found = false;
74+ usb_put_dev(udev);
75+ usb_set_intfdata(pusb_intf, NULL);
76+ return;
77+ }
78+ padapter->fw = firmware;
79+ padapter->fw_found = true;
80+ /* firmware available - start netdev */
81+ register_netdev(padapter->pnetdev);
82+}
83+
84+static const char firmware_file[] = "rtlwifi/rtl8712u.bin";
85+
86+int rtl871x_load_fw(struct _adapter *padapter)
87+{
88+ struct device *dev = &padapter->dvobjpriv.pusbdev->dev;
89 int rc;
90- const char firmware_file[] = "rtlwifi/rtl8712u.bin";
91- const struct firmware **praw = (const struct firmware **)
92- (pphfwfile_hdl);
93- struct dvobj_priv *pdvobjpriv = (struct dvobj_priv *)
94- (&padapter->dvobjpriv);
95- struct usb_device *pusbdev = pdvobjpriv->pusbdev;
96
97+ init_completion(&padapter->rtl8712_fw_ready);
98 printk(KERN_INFO "r8712u: Loading firmware from \"%s\"\n",
99 firmware_file);
100- rc = request_firmware(praw, firmware_file, &pusbdev->dev);
101- if (rc < 0) {
102- printk(KERN_ERR "r8712u: Unable to load firmware\n");
103- printk(KERN_ERR "r8712u: Install latest linux-firmware\n");
104+ rc = request_firmware_nowait(THIS_MODULE, 1, firmware_file, dev,
105+ GFP_KERNEL, padapter, rtl871x_load_fw_cb);
106+ if (rc)
107+ printk(KERN_ERR "r8712u: Firmware request error %d\n", rc);
108+ return rc;
109+}
110+MODULE_FIRMWARE("rtlwifi/rtl8712u.bin");
111+
112+static u32 rtl871x_open_fw(struct _adapter *padapter, const u8 **ppmappedfw)
113+{
114+ const struct firmware **praw = &padapter->fw;
115+
116+ if (padapter->fw->size > 200000) {
117+ printk(KERN_ERR "r8172u: Badfw->size of %d\n",
118+ (int)padapter->fw->size);
119 return 0;
120 }
121 *ppmappedfw = (u8 *)((*praw)->data);
122 return (*praw)->size;
123 }
124-MODULE_FIRMWARE("rtlwifi/rtl8712u.bin");
125
126 static void fill_fwpriv(struct _adapter *padapter, struct fw_priv *pfwpriv)
127 {
128@@ -142,18 +169,17 @@ static u8 rtl8712_dl_fw(struct _adapter *padapter)
129 uint dump_imem_sz, imem_sz, dump_emem_sz, emem_sz; /* max = 49152; */
130 struct fw_hdr fwhdr;
131 u32 ulfilelength; /* FW file size */
132- void *phfwfile_hdl = NULL;
133 const u8 *pmappedfw = NULL;
134 u8 *ptmpchar = NULL, *ppayload, *ptr;
135 struct tx_desc *ptx_desc;
136 u32 txdscp_sz = sizeof(struct tx_desc);
137 u8 ret = _FAIL;
138
139- ulfilelength = rtl871x_open_fw(padapter, &phfwfile_hdl, &pmappedfw);
140+ ulfilelength = rtl871x_open_fw(padapter, &pmappedfw);
141 if (pmappedfw && (ulfilelength > 0)) {
142 update_fwhdr(&fwhdr, pmappedfw);
143 if (chk_fwhdr(&fwhdr, ulfilelength) == _FAIL)
144- goto firmware_rel;
145+ return ret;
146 fill_fwpriv(padapter, &fwhdr.fwpriv);
147 /* firmware check ok */
148 maxlen = (fwhdr.img_IMEM_size > fwhdr.img_SRAM_size) ?
149@@ -161,7 +187,7 @@ static u8 rtl8712_dl_fw(struct _adapter *padapter)
150 maxlen += txdscp_sz;
151 ptmpchar = _malloc(maxlen + FWBUFF_ALIGN_SZ);
152 if (ptmpchar == NULL)
153- goto firmware_rel;
154+ return ret;
155
156 ptx_desc = (struct tx_desc *)(ptmpchar + FWBUFF_ALIGN_SZ -
157 ((addr_t)(ptmpchar) & (FWBUFF_ALIGN_SZ - 1)));
158@@ -297,8 +323,6 @@ static u8 rtl8712_dl_fw(struct _adapter *padapter)
159
160 exit_fail:
161 kfree(ptmpchar);
162-firmware_rel:
163- release_firmware((struct firmware *)phfwfile_hdl);
164 return ret;
165 }
166
167diff --git a/drivers/staging/rtl8712/os_intfs.c b/drivers/staging/rtl8712/os_intfs.c
168index 9a75c6d..98a3d68 100644
169--- a/drivers/staging/rtl8712/os_intfs.c
170+++ b/drivers/staging/rtl8712/os_intfs.c
171@@ -31,6 +31,7 @@
172 #include <linux/module.h>
173 #include <linux/init.h>
174 #include <linux/kthread.h>
175+#include <linux/firmware.h>
176 #include "osdep_service.h"
177 #include "drv_types.h"
178 #include "xmit_osdep.h"
179@@ -264,12 +265,12 @@ static void start_drv_timers(struct _adapter *padapter)
180 void r8712_stop_drv_timers(struct _adapter *padapter)
181 {
182 _cancel_timer_ex(&padapter->mlmepriv.assoc_timer);
183- _cancel_timer_ex(&padapter->mlmepriv.sitesurveyctrl.
184- sitesurvey_ctrl_timer);
185 _cancel_timer_ex(&padapter->securitypriv.tkip_timer);
186 _cancel_timer_ex(&padapter->mlmepriv.scan_to_timer);
187 _cancel_timer_ex(&padapter->mlmepriv.dhcp_timer);
188 _cancel_timer_ex(&padapter->mlmepriv.wdg_timer);
189+ _cancel_timer_ex(&padapter->mlmepriv.sitesurveyctrl.
190+ sitesurvey_ctrl_timer);
191 }
192
193 static u8 init_default_value(struct _adapter *padapter)
194@@ -347,7 +348,8 @@ u8 r8712_free_drv_sw(struct _adapter *padapter)
195 r8712_free_mlme_priv(&padapter->mlmepriv);
196 r8712_free_io_queue(padapter);
197 _free_xmit_priv(&padapter->xmitpriv);
198- _r8712_free_sta_priv(&padapter->stapriv);
199+ if (padapter->fw_found)
200+ _r8712_free_sta_priv(&padapter->stapriv);
201 _r8712_free_recv_priv(&padapter->recvpriv);
202 mp871xdeinit(padapter);
203 if (pnetdev)
204@@ -388,6 +390,7 @@ static int netdev_open(struct net_device *pnetdev)
205 {
206 struct _adapter *padapter = (struct _adapter *)netdev_priv(pnetdev);
207
208+ mutex_lock(&padapter->mutex_start);
209 if (padapter->bup == false) {
210 padapter->bDriverStopped = false;
211 padapter->bSurpriseRemoved = false;
212@@ -435,11 +438,13 @@ static int netdev_open(struct net_device *pnetdev)
213 /* start driver mlme relation timer */
214 start_drv_timers(padapter);
215 padapter->ledpriv.LedControlHandler(padapter, LED_CTL_NO_LINK);
216+ mutex_unlock(&padapter->mutex_start);
217 return 0;
218 netdev_open_error:
219 padapter->bup = false;
220 netif_carrier_off(pnetdev);
221 netif_stop_queue(pnetdev);
222+ mutex_unlock(&padapter->mutex_start);
223 return -1;
224 }
225
226@@ -473,6 +478,9 @@ static int netdev_close(struct net_device *pnetdev)
227 r8712_free_network_queue(padapter);
228 /* The interface is no longer Up: */
229 padapter->bup = false;
230+ release_firmware(padapter->fw);
231+ /* never exit with a firmware callback pending */
232+ wait_for_completion(&padapter->rtl8712_fw_ready);
233 return 0;
234 }
235
236diff --git a/drivers/staging/rtl8712/rtl8712_hal.h b/drivers/staging/rtl8712/rtl8712_hal.h
237index 665e718..d19865a 100644
238--- a/drivers/staging/rtl8712/rtl8712_hal.h
239+++ b/drivers/staging/rtl8712/rtl8712_hal.h
240@@ -145,5 +145,6 @@ struct hal_priv {
241 };
242
243 uint rtl8712_hal_init(struct _adapter *padapter);
244+int rtl871x_load_fw(struct _adapter *padapter);
245
246 #endif
247diff --git a/drivers/staging/rtl8712/usb_intf.c b/drivers/staging/rtl8712/usb_intf.c
248index 8de0c80..9bade18 100644
249--- a/drivers/staging/rtl8712/usb_intf.c
250+++ b/drivers/staging/rtl8712/usb_intf.c
251@@ -390,6 +390,7 @@ static int r871xu_drv_init(struct usb_interface *pusb_intf,
252 pdvobjpriv = &padapter->dvobjpriv;
253 pdvobjpriv->padapter = padapter;
254 padapter->dvobjpriv.pusbdev = udev;
255+ padapter->pusb_intf = pusb_intf;
256 usb_set_intfdata(pusb_intf, pnetdev);
257 SET_NETDEV_DEV(pnetdev, &pusb_intf->dev);
258 /* step 2. */
259@@ -596,10 +597,11 @@ static int r871xu_drv_init(struct usb_interface *pusb_intf,
260 "%pM\n", mac);
261 memcpy(pnetdev->dev_addr, mac, ETH_ALEN);
262 }
263- /* step 6. Tell the network stack we exist */
264- if (register_netdev(pnetdev) != 0)
265+ /* step 6. Load the firmware asynchronously */
266+ if (rtl871x_load_fw(padapter))
267 goto error;
268 spin_lock_init(&padapter->lockRxFF0Filter);
269+ mutex_init(&padapter->mutex_start);
270 return 0;
271 error:
272 usb_put_dev(udev);
273@@ -630,7 +632,8 @@ static void r871xu_dev_remove(struct usb_interface *pusb_intf)
274 flush_scheduled_work();
275 udelay(1);
276 /*Stop driver mlme relation timer */
277- r8712_stop_drv_timers(padapter);
278+ if (padapter->fw_found)
279+ r8712_stop_drv_timers(padapter);
280 r871x_dev_unload(padapter);
281 r8712_free_drv_sw(padapter);
282 }
283--
2841.7.7.4
285
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
new file mode 100644
index 00000000..98855bb8
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0077-usb-ch9.h-usb_endpoint_maxp-uses-__le16_to_cpu.patch
@@ -0,0 +1,37 @@
1From 915cf0ec84e35d10f00166d3c9b64b12e605c792 Mon Sep 17 00:00:00 2001
2From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
3Date: Tue, 31 Jan 2012 16:43:50 -0800
4Subject: [PATCH 77/87] usb: ch9.h: usb_endpoint_maxp() uses __le16_to_cpu()
5
6commit 9c0a835a9d9aed41bcf9c287f5069133a6e2a87b upstream.
7
8The usb/ch9.h will be installed to /usr/include/linux,
9and be used from user space.
10But le16_to_cpu() is only defined for kernel code.
11Without this patch, user space compile will be broken.
12Special thanks to Stefan Becker
13
14Reported-by: Stefan Becker <chemobejk@gmail.com>
15Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
16Signed-off-by: Felipe Balbi <balbi@ti.com>
17Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
18---
19 include/linux/usb/ch9.h | 2 +-
20 1 files changed, 1 insertions(+), 1 deletions(-)
21
22diff --git a/include/linux/usb/ch9.h b/include/linux/usb/ch9.h
23index 61b2905..3b6f628 100644
24--- a/include/linux/usb/ch9.h
25+++ b/include/linux/usb/ch9.h
26@@ -589,7 +589,7 @@ static inline int usb_endpoint_is_isoc_out(
27 */
28 static inline int usb_endpoint_maxp(const struct usb_endpoint_descriptor *epd)
29 {
30- return le16_to_cpu(epd->wMaxPacketSize);
31+ return __le16_to_cpu(epd->wMaxPacketSize);
32 }
33
34 /*-------------------------------------------------------------------------*/
35--
361.7.7.4
37
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
new file mode 100644
index 00000000..e43e5dc4
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0078-usb-gadget-zero-fix-bug-in-loopback-autoresume-handl.patch
@@ -0,0 +1,36 @@
1From d99aad98ef32d6615cef9f91aa213b8484cb4083 Mon Sep 17 00:00:00 2001
2From: Timo Juhani Lindfors <timo.lindfors@iki.fi>
3Date: Sun, 29 Jan 2012 16:12:13 +0200
4Subject: [PATCH 78/87] usb: gadget: zero: fix bug in loopback autoresume
5 handling
6
7commit 683da59d7b8ae04891636d4b59893cd4e9b0b7e5 upstream.
8
9ab943a2e125b (USB: gadget: gadget zero uses new suspend/resume hooks)
10introduced a copy-paste error where f_loopback.c writes to a variable
11declared in f_sourcesink.c. This prevents one from creating gadgets
12that only have a loopback function.
13
14Signed-off-by: Timo Juhani Lindfors <timo.lindfors@iki.fi>
15Signed-off-by: Felipe Balbi <balbi@ti.com>
16Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17---
18 drivers/usb/gadget/f_loopback.c | 2 +-
19 1 files changed, 1 insertions(+), 1 deletions(-)
20
21diff --git a/drivers/usb/gadget/f_loopback.c b/drivers/usb/gadget/f_loopback.c
22index 6d87f28..2c0cd82 100644
23--- a/drivers/usb/gadget/f_loopback.c
24+++ b/drivers/usb/gadget/f_loopback.c
25@@ -418,7 +418,7 @@ int __init loopback_add(struct usb_composite_dev *cdev, bool autoresume)
26
27 /* support autoresume for remote wakeup testing */
28 if (autoresume)
29- sourcesink_driver.bmAttributes |= USB_CONFIG_ATT_WAKEUP;
30+ loopback_driver.bmAttributes |= USB_CONFIG_ATT_WAKEUP;
31
32 /* support OTG systems */
33 if (gadget_is_otg(cdev->gadget)) {
34--
351.7.7.4
36
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
new file mode 100644
index 00000000..d9b862f1
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0079-usb-Skip-PCI-USB-quirk-handling-for-Netlogic-XLP.patch
@@ -0,0 +1,45 @@
1From 0bbd5d1b0a768b0b5761643b601422dfe78fd9c5 Mon Sep 17 00:00:00 2001
2From: Jayachandran C <jayachandranc@netlogicmicro.com>
3Date: Fri, 27 Jan 2012 20:27:32 +0530
4Subject: [PATCH 79/87] usb: Skip PCI USB quirk handling for Netlogic XLP
5
6commit e4436a7c17ac2b5e138f93f83a541cba9b311685 upstream.
7
8The Netlogic XLP SoC's on-chip USB controller appears as a PCI
9USB device, but does not need the EHCI/OHCI handoff done in
10usb/host/pci-quirks.c.
11
12The pci-quirks.c is enabled for all vendors and devices, and is
13enabled if USB and PCI are configured.
14
15If we do not skip the qurik handling on XLP, the readb() call in
16ehci_bios_handoff() will cause a crash since byte access is not
17supported for EHCI registers in XLP.
18
19Signed-off-by: Jayachandran C <jayachandranc@netlogicmicro.com>
20Acked-by: Alan Stern <stern@rowland.harvard.edu>
21Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
22---
23 drivers/usb/host/pci-quirks.c | 6 ++++++
24 1 files changed, 6 insertions(+), 0 deletions(-)
25
26diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
27index caf8742..ac53a66 100644
28--- a/drivers/usb/host/pci-quirks.c
29+++ b/drivers/usb/host/pci-quirks.c
30@@ -867,6 +867,12 @@ hc_init:
31
32 static void __devinit quirk_usb_early_handoff(struct pci_dev *pdev)
33 {
34+ /* Skip Netlogic mips SoC's internal PCI USB controller.
35+ * This device does not need/support EHCI/OHCI handoff
36+ */
37+ if (pdev->vendor == 0x184e) /* vendor Netlogic */
38+ return;
39+
40 if (pdev->class == PCI_CLASS_SERIAL_USB_UHCI)
41 quirk_usb_handoff_uhci(pdev);
42 else if (pdev->class == PCI_CLASS_SERIAL_USB_OHCI)
43--
441.7.7.4
45
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
new file mode 100644
index 00000000..48d275f3
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0080-USB-usbserial-add-new-PID-number-0xa951-to-the-ftdi-.patch
@@ -0,0 +1,45 @@
1From 294913e9df10298b440f3c8ee1df4b2d02c06f49 Mon Sep 17 00:00:00 2001
2From: Milan Kocian <milon@wq.cz>
3Date: Fri, 3 Feb 2012 14:28:00 +0100
4Subject: [PATCH 80/87] USB: usbserial: add new PID number (0xa951) to the
5 ftdi driver
6
7commit 90451e6973a5da155c6f315a409ca0a8d3ce6b76 upstream.
8
9Signed-off-by: Milan Kocian <milon@wq.cz>
10Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11---
12 drivers/usb/serial/ftdi_sio.c | 1 +
13 drivers/usb/serial/ftdi_sio_ids.h | 7 +++++++
14 2 files changed, 8 insertions(+), 0 deletions(-)
15
16diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
17index 058b92c..f030471 100644
18--- a/drivers/usb/serial/ftdi_sio.c
19+++ b/drivers/usb/serial/ftdi_sio.c
20@@ -839,6 +839,7 @@ static struct usb_device_id id_table_combined [] = {
21 { USB_DEVICE(FTDI_VID, FTDI_SCIENCESCOPE_LOGBOOKML_PID) },
22 { USB_DEVICE(FTDI_VID, FTDI_SCIENCESCOPE_LS_LOGBOOK_PID) },
23 { USB_DEVICE(FTDI_VID, FTDI_SCIENCESCOPE_HS_LOGBOOK_PID) },
24+ { USB_DEVICE(FTDI_VID, FTDI_CINTERION_MC55I_PID) },
25 { USB_DEVICE(FTDI_VID, FTDI_DOTEC_PID) },
26 { USB_DEVICE(QIHARDWARE_VID, MILKYMISTONE_JTAGSERIAL_PID),
27 .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
28diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
29index 76d4f31..4eb7715 100644
30--- a/drivers/usb/serial/ftdi_sio_ids.h
31+++ b/drivers/usb/serial/ftdi_sio_ids.h
32@@ -1187,3 +1187,10 @@
33 */
34 /* ZigBee controller */
35 #define FTDI_RF_R106 0x8A28
36+
37+/*
38+ * Product: HCP HIT GPRS modem
39+ * Manufacturer: HCP d.o.o.
40+ * ATI command output: Cinterion MC55i
41+ */
42+#define FTDI_CINTERION_MC55I_PID 0xA951
43--
441.7.7.4
45
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
new file mode 100644
index 00000000..82b86721
--- /dev/null
+++ 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
@@ -0,0 +1,181 @@
1From 57c313f71800dd93f10f6641650dcb4167fa8739 Mon Sep 17 00:00:00 2001
2From: Rui li <li.rui27@zte.com.cn>
3Date: Tue, 31 Jan 2012 15:27:33 +0800
4Subject: [PATCH 81/87] USB: add new zte 3g-dongle's pid to option.c
5
6commit 1608ea5f4b5d6262cd6e808839491cfb2a67405a upstream.
7
8As ZTE have and will use more pid for new products this year,
9so we need to add some new zte 3g-dongle's pid on option.c ,
10and delete one pid 0x0154 because it use for mass-storage port.
11
12Signed-off-by: Rui li <li.rui27@zte.com.cn>
13Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
14---
15 drivers/usb/serial/option.c | 129 ++++++++++++++++++++++++++++++++++++++++++-
16 1 files changed, 128 insertions(+), 1 deletions(-)
17
18diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
19index 2a9ed6e..338d082 100644
20--- a/drivers/usb/serial/option.c
21+++ b/drivers/usb/serial/option.c
22@@ -855,6 +855,18 @@ static const struct usb_device_id option_ids[] = {
23 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0083, 0xff, 0xff, 0xff) },
24 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0086, 0xff, 0xff, 0xff) },
25 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0087, 0xff, 0xff, 0xff) },
26+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0088, 0xff, 0xff, 0xff) },
27+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0089, 0xff, 0xff, 0xff) },
28+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0090, 0xff, 0xff, 0xff) },
29+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0091, 0xff, 0xff, 0xff) },
30+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0092, 0xff, 0xff, 0xff) },
31+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0093, 0xff, 0xff, 0xff) },
32+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0094, 0xff, 0xff, 0xff) },
33+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0095, 0xff, 0xff, 0xff) },
34+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0096, 0xff, 0xff, 0xff) },
35+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0097, 0xff, 0xff, 0xff) },
36+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0098, 0xff, 0xff, 0xff) },
37+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0099, 0xff, 0xff, 0xff) },
38 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0104, 0xff, 0xff, 0xff),
39 .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
40 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0105, 0xff, 0xff, 0xff) },
41@@ -883,7 +895,6 @@ static const struct usb_device_id option_ids[] = {
42 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0151, 0xff, 0xff, 0xff) },
43 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0152, 0xff, 0xff, 0xff) },
44 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0153, 0xff, 0xff, 0xff) },
45- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0154, 0xff, 0xff, 0xff) },
46 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0155, 0xff, 0xff, 0xff) },
47 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0156, 0xff, 0xff, 0xff) },
48 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0157, 0xff, 0xff, 0xff) },
49@@ -892,6 +903,12 @@ static const struct usb_device_id option_ids[] = {
50 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0160, 0xff, 0xff, 0xff) },
51 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0161, 0xff, 0xff, 0xff) },
52 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0162, 0xff, 0xff, 0xff) },
53+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0164, 0xff, 0xff, 0xff) },
54+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0165, 0xff, 0xff, 0xff) },
55+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0168, 0xff, 0xff, 0xff) },
56+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0170, 0xff, 0xff, 0xff) },
57+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0176, 0xff, 0xff, 0xff) },
58+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0178, 0xff, 0xff, 0xff) },
59 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1008, 0xff, 0xff, 0xff) },
60 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1010, 0xff, 0xff, 0xff) },
61 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1012, 0xff, 0xff, 0xff) },
62@@ -1066,6 +1083,116 @@ static const struct usb_device_id option_ids[] = {
63 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1298, 0xff, 0xff, 0xff) },
64 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1299, 0xff, 0xff, 0xff) },
65 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1300, 0xff, 0xff, 0xff) },
66+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1401, 0xff, 0xff, 0xff) },
67+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1402, 0xff, 0xff, 0xff) },
68+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1403, 0xff, 0xff, 0xff) },
69+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1404, 0xff, 0xff, 0xff) },
70+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1405, 0xff, 0xff, 0xff) },
71+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1406, 0xff, 0xff, 0xff) },
72+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1407, 0xff, 0xff, 0xff) },
73+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1408, 0xff, 0xff, 0xff) },
74+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1409, 0xff, 0xff, 0xff) },
75+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1410, 0xff, 0xff, 0xff) },
76+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1411, 0xff, 0xff, 0xff) },
77+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1412, 0xff, 0xff, 0xff) },
78+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1413, 0xff, 0xff, 0xff) },
79+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1414, 0xff, 0xff, 0xff) },
80+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1415, 0xff, 0xff, 0xff) },
81+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1416, 0xff, 0xff, 0xff) },
82+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1417, 0xff, 0xff, 0xff) },
83+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1418, 0xff, 0xff, 0xff) },
84+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1419, 0xff, 0xff, 0xff) },
85+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1420, 0xff, 0xff, 0xff) },
86+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1421, 0xff, 0xff, 0xff) },
87+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1422, 0xff, 0xff, 0xff) },
88+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1423, 0xff, 0xff, 0xff) },
89+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1424, 0xff, 0xff, 0xff) },
90+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1425, 0xff, 0xff, 0xff) },
91+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1426, 0xff, 0xff, 0xff) },
92+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1427, 0xff, 0xff, 0xff) },
93+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1428, 0xff, 0xff, 0xff) },
94+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1429, 0xff, 0xff, 0xff) },
95+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1430, 0xff, 0xff, 0xff) },
96+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1431, 0xff, 0xff, 0xff) },
97+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1432, 0xff, 0xff, 0xff) },
98+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1433, 0xff, 0xff, 0xff) },
99+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1434, 0xff, 0xff, 0xff) },
100+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1435, 0xff, 0xff, 0xff) },
101+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1436, 0xff, 0xff, 0xff) },
102+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1437, 0xff, 0xff, 0xff) },
103+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1438, 0xff, 0xff, 0xff) },
104+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1439, 0xff, 0xff, 0xff) },
105+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1440, 0xff, 0xff, 0xff) },
106+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1441, 0xff, 0xff, 0xff) },
107+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1442, 0xff, 0xff, 0xff) },
108+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1443, 0xff, 0xff, 0xff) },
109+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1444, 0xff, 0xff, 0xff) },
110+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1445, 0xff, 0xff, 0xff) },
111+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1446, 0xff, 0xff, 0xff) },
112+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1447, 0xff, 0xff, 0xff) },
113+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1448, 0xff, 0xff, 0xff) },
114+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1449, 0xff, 0xff, 0xff) },
115+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1450, 0xff, 0xff, 0xff) },
116+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1451, 0xff, 0xff, 0xff) },
117+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1452, 0xff, 0xff, 0xff) },
118+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1453, 0xff, 0xff, 0xff) },
119+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1454, 0xff, 0xff, 0xff) },
120+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1455, 0xff, 0xff, 0xff) },
121+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1456, 0xff, 0xff, 0xff) },
122+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1457, 0xff, 0xff, 0xff) },
123+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1458, 0xff, 0xff, 0xff) },
124+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1459, 0xff, 0xff, 0xff) },
125+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1460, 0xff, 0xff, 0xff) },
126+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1461, 0xff, 0xff, 0xff) },
127+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1462, 0xff, 0xff, 0xff) },
128+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1463, 0xff, 0xff, 0xff) },
129+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1464, 0xff, 0xff, 0xff) },
130+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1465, 0xff, 0xff, 0xff) },
131+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1466, 0xff, 0xff, 0xff) },
132+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1467, 0xff, 0xff, 0xff) },
133+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1468, 0xff, 0xff, 0xff) },
134+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1469, 0xff, 0xff, 0xff) },
135+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1470, 0xff, 0xff, 0xff) },
136+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1471, 0xff, 0xff, 0xff) },
137+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1472, 0xff, 0xff, 0xff) },
138+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1473, 0xff, 0xff, 0xff) },
139+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1474, 0xff, 0xff, 0xff) },
140+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1475, 0xff, 0xff, 0xff) },
141+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1476, 0xff, 0xff, 0xff) },
142+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1477, 0xff, 0xff, 0xff) },
143+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1478, 0xff, 0xff, 0xff) },
144+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1479, 0xff, 0xff, 0xff) },
145+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1480, 0xff, 0xff, 0xff) },
146+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1481, 0xff, 0xff, 0xff) },
147+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1482, 0xff, 0xff, 0xff) },
148+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1483, 0xff, 0xff, 0xff) },
149+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1484, 0xff, 0xff, 0xff) },
150+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1485, 0xff, 0xff, 0xff) },
151+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1486, 0xff, 0xff, 0xff) },
152+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1487, 0xff, 0xff, 0xff) },
153+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1488, 0xff, 0xff, 0xff) },
154+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1489, 0xff, 0xff, 0xff) },
155+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1490, 0xff, 0xff, 0xff) },
156+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1491, 0xff, 0xff, 0xff) },
157+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1492, 0xff, 0xff, 0xff) },
158+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1493, 0xff, 0xff, 0xff) },
159+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1494, 0xff, 0xff, 0xff) },
160+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1495, 0xff, 0xff, 0xff) },
161+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1496, 0xff, 0xff, 0xff) },
162+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1497, 0xff, 0xff, 0xff) },
163+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1498, 0xff, 0xff, 0xff) },
164+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1499, 0xff, 0xff, 0xff) },
165+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1500, 0xff, 0xff, 0xff) },
166+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1501, 0xff, 0xff, 0xff) },
167+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1502, 0xff, 0xff, 0xff) },
168+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1503, 0xff, 0xff, 0xff) },
169+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1504, 0xff, 0xff, 0xff) },
170+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1505, 0xff, 0xff, 0xff) },
171+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1506, 0xff, 0xff, 0xff) },
172+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1507, 0xff, 0xff, 0xff) },
173+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1508, 0xff, 0xff, 0xff) },
174+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1509, 0xff, 0xff, 0xff) },
175+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1510, 0xff, 0xff, 0xff) },
176 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0014, 0xff, 0xff, 0xff) }, /* ZTE CDMA products */
177 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0027, 0xff, 0xff, 0xff) },
178 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0059, 0xff, 0xff, 0xff) },
179--
1801.7.7.4
181
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
new file mode 100644
index 00000000..fddd6905
--- /dev/null
+++ 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
@@ -0,0 +1,46 @@
1From c1efec8273372700693661f094324081d8f3ad3d Mon Sep 17 00:00:00 2001
2From: Dan Magenheimer <dan.magenheimer@oracle.com>
3Date: Mon, 23 Jan 2012 16:52:20 -0500
4Subject: [PATCH 82/87] zcache: Set SWIZ_BITS to 8 to reduce tmem bucket lock
5 contention.
6
7commit e8b4553457e78bcff90f70a31212a40a8fd4f0db upstream.
8
9SWIZ_BITS > 8 results in a much larger number of "tmem_obj"
10allocations, likely one per page-placed-in-frontswap. The
11tmem_obj is not huge (roughly 100 bytes), but it is large
12enough to add a not-insignificant memory overhead to zcache.
13
14The SWIZ_BITS=8 will get roughly the same lock contention
15without the space wastage.
16
17The effect of SWIZ_BITS can be thought of as "2^SWIZ_BITS is
18the number of unique oids that be generated" (This concept is
19limited to frontswap's use of tmem).
20
21Acked-by: Seth Jennings <sjenning@linux.vnet.ibm.com>
22Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
23Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
24---
25 drivers/staging/zcache/zcache-main.c | 4 ++--
26 1 files changed, 2 insertions(+), 2 deletions(-)
27
28diff --git a/drivers/staging/zcache/zcache-main.c b/drivers/staging/zcache/zcache-main.c
29index 56c1f9c..d3a8e67 100644
30--- a/drivers/staging/zcache/zcache-main.c
31+++ b/drivers/staging/zcache/zcache-main.c
32@@ -1782,9 +1782,9 @@ static int zcache_frontswap_poolid = -1;
33 * Swizzling increases objects per swaptype, increasing tmem concurrency
34 * for heavy swaploads. Later, larger nr_cpus -> larger SWIZ_BITS
35 * Setting SWIZ_BITS to 27 basically reconstructs the swap entry from
36- * frontswap_get_page()
37+ * frontswap_get_page(), but has side-effects. Hence using 8.
38 */
39-#define SWIZ_BITS 27
40+#define SWIZ_BITS 8
41 #define SWIZ_MASK ((1 << SWIZ_BITS) - 1)
42 #define _oswiz(_type, _ind) ((_type << SWIZ_BITS) | (_ind & SWIZ_MASK))
43 #define iswiz(_ind) (_ind >> SWIZ_BITS)
44--
451.7.7.4
46
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
new file mode 100644
index 00000000..c73b80a1
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0083-zcache-fix-deadlock-condition.patch
@@ -0,0 +1,55 @@
1From 5c97f5b2d4924961479e862e8fe516ba217551b3 Mon Sep 17 00:00:00 2001
2From: Dan Magenheimer <dan.magenheimer@oracle.com>
3Date: Wed, 25 Jan 2012 14:32:51 -0800
4Subject: [PATCH 83/87] zcache: fix deadlock condition
5
6commit 9256a4789be3dae37d00924c03546ba7958ea5a3 upstream.
7
8I discovered this deadlock condition awhile ago working on RAMster
9but it affects zcache as well. The list spinlock must be
10locked prior to the page spinlock and released after. As
11a result, the page copy must also be done while the locks are held.
12
13Applies to 3.2. Konrad, please push (via GregKH?)...
14this is definitely a bug fix so need not be pushed during
15a -rc0 window.
16
17Signed-off-by: Dan Magenheimer <dan.magenheimer@oracle.com>
18Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
19Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
20---
21 drivers/staging/zcache/zcache-main.c | 7 +++----
22 1 files changed, 3 insertions(+), 4 deletions(-)
23
24diff --git a/drivers/staging/zcache/zcache-main.c b/drivers/staging/zcache/zcache-main.c
25index d3a8e67..f5e469d 100644
26--- a/drivers/staging/zcache/zcache-main.c
27+++ b/drivers/staging/zcache/zcache-main.c
28@@ -358,8 +358,8 @@ static struct zbud_hdr *zbud_create(uint16_t client_id, uint16_t pool_id,
29 if (unlikely(zbpg == NULL))
30 goto out;
31 /* ok, have a page, now compress the data before taking locks */
32- spin_lock(&zbpg->lock);
33 spin_lock(&zbud_budlists_spinlock);
34+ spin_lock(&zbpg->lock);
35 list_add_tail(&zbpg->bud_list, &zbud_unbuddied[nchunks].list);
36 zbud_unbuddied[nchunks].count++;
37 zh = &zbpg->buddy[0];
38@@ -389,12 +389,11 @@ init_zh:
39 zh->oid = *oid;
40 zh->pool_id = pool_id;
41 zh->client_id = client_id;
42- /* can wait to copy the data until the list locks are dropped */
43- spin_unlock(&zbud_budlists_spinlock);
44-
45 to = zbud_data(zh, size);
46 memcpy(to, cdata, size);
47 spin_unlock(&zbpg->lock);
48+ spin_unlock(&zbud_budlists_spinlock);
49+
50 zbud_cumul_chunk_counts[nchunks]++;
51 atomic_inc(&zcache_zbud_curr_zpages);
52 zcache_zbud_cumul_zpages++;
53--
541.7.7.4
55
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
new file mode 100644
index 00000000..7ff88b20
--- /dev/null
+++ 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
@@ -0,0 +1,33 @@
1From 6bffce08e4d8f5daf00e3d45dad594764c3fc8f0 Mon Sep 17 00:00:00 2001
2From: Axel Lin <axel.lin@gmail.com>
3Date: Wed, 1 Feb 2012 12:31:47 +0800
4Subject: [PATCH 84/87] mmc: cb710 core: Add missing spin_lock_init for
5 irq_lock of struct cb710_chip
6MIME-Version: 1.0
7Content-Type: text/plain; charset=UTF-8
8Content-Transfer-Encoding: 8bit
9
10commit b5266ea675c5a041e2852c7ccec4cf2d4f5e0cf4 upstream.
11
12Signed-off-by: Axel Lin <axel.lin@gmail.com>
13Acked-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
14Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
15---
16 drivers/misc/cb710/core.c | 1 +
17 1 files changed, 1 insertions(+), 0 deletions(-)
18
19diff --git a/drivers/misc/cb710/core.c b/drivers/misc/cb710/core.c
20index 68cd05b..85cc771 100644
21--- a/drivers/misc/cb710/core.c
22+++ b/drivers/misc/cb710/core.c
23@@ -245,6 +245,7 @@ static int __devinit cb710_probe(struct pci_dev *pdev,
24 if (err)
25 return err;
26
27+ spin_lock_init(&chip->irq_lock);
28 chip->pdev = pdev;
29 chip->iobase = pcim_iomap_table(pdev)[0];
30
31--
321.7.7.4
33
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
new file mode 100644
index 00000000..b00bc7de
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0085-powernow-k8-Avoid-Pstate-MSR-accesses-on-systems-sup.patch
@@ -0,0 +1,60 @@
1From af2ff521425c83a3043af8a600b62d32443031dd Mon Sep 17 00:00:00 2001
2From: Andreas Herrmann <andreas.herrmann3@amd.com>
3Date: Fri, 6 Jan 2012 15:56:31 +0100
4Subject: [PATCH 85/87] powernow-k8: Avoid Pstate MSR accesses on systems
5 supporting CPB
6
7commit 201bf0f129e1715a33568d1563d9a75b840ab4d3 upstream.
8
9Due to CPB we can't directly map SW Pstates to Pstate MSRs. Get rid of
10the paranoia check. (assuming that the ACPI Pstate information is
11correct.)
12
13Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>
14Signed-off-by: Dave Jones <davej@redhat.com>
15Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
16---
17 drivers/cpufreq/powernow-k8.c | 19 ++++++++++---------
18 1 files changed, 10 insertions(+), 9 deletions(-)
19
20diff --git a/drivers/cpufreq/powernow-k8.c b/drivers/cpufreq/powernow-k8.c
21index bce576d..e0329f9 100644
22--- a/drivers/cpufreq/powernow-k8.c
23+++ b/drivers/cpufreq/powernow-k8.c
24@@ -926,23 +926,24 @@ static int fill_powernow_table_pstate(struct powernow_k8_data *data,
25 invalidate_entry(powernow_table, i);
26 continue;
27 }
28- rdmsr(MSR_PSTATE_DEF_BASE + index, lo, hi);
29- if (!(hi & HW_PSTATE_VALID_MASK)) {
30- pr_debug("invalid pstate %d, ignoring\n", index);
31- invalidate_entry(powernow_table, i);
32- continue;
33- }
34-
35- powernow_table[i].index = index;
36-
37 /* Frequency may be rounded for these */
38 if ((boot_cpu_data.x86 == 0x10 && boot_cpu_data.x86_model < 10)
39 || boot_cpu_data.x86 == 0x11) {
40+
41+ rdmsr(MSR_PSTATE_DEF_BASE + index, lo, hi);
42+ if (!(hi & HW_PSTATE_VALID_MASK)) {
43+ pr_debug("invalid pstate %d, ignoring\n", index);
44+ invalidate_entry(powernow_table, i);
45+ continue;
46+ }
47+
48 powernow_table[i].frequency =
49 freq_from_fid_did(lo & 0x3f, (lo >> 6) & 7);
50 } else
51 powernow_table[i].frequency =
52 data->acpi_data.states[i].core_frequency * 1000;
53+
54+ powernow_table[i].index = index;
55 }
56 return 0;
57 }
58--
591.7.7.4
60
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
new file mode 100644
index 00000000..998d0c5e
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0086-powernow-k8-Fix-indexing-issue.patch
@@ -0,0 +1,86 @@
1From 8f44619e1e633884c5f0bfcf6ae05d7b0304cca3 Mon Sep 17 00:00:00 2001
2From: Andreas Herrmann <andreas.herrmann3@amd.com>
3Date: Fri, 6 Jan 2012 15:57:55 +0100
4Subject: [PATCH 86/87] powernow-k8: Fix indexing issue
5
6commit a8eb28480e9b637cc78b9aa5e08612ba97e1317a upstream.
7
8The driver uses the pstate number from the status register as index in
9its table of ACPI pstates (powernow_table). This is wrong as this is
10not a 1-to-1 mapping.
11
12For example we can have _PSS information to just utilize Pstate 0 and
13Pstate 4, ie.
14
15 powernow-k8: Core Performance Boosting: on.
16 powernow-k8: 0 : pstate 0 (2200 MHz)
17 powernow-k8: 1 : pstate 4 (1400 MHz)
18
19In this example the driver's powernow_table has just 2 entries. Using
20the pstate number (4) as index into this table is just plain wrong.
21
22Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>
23Signed-off-by: Dave Jones <davej@redhat.com>
24Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
25---
26 drivers/cpufreq/powernow-k8.c | 15 +++++++++++----
27 1 files changed, 11 insertions(+), 4 deletions(-)
28
29diff --git a/drivers/cpufreq/powernow-k8.c b/drivers/cpufreq/powernow-k8.c
30index e0329f9..ad683ec 100644
31--- a/drivers/cpufreq/powernow-k8.c
32+++ b/drivers/cpufreq/powernow-k8.c
33@@ -54,6 +54,9 @@ static DEFINE_PER_CPU(struct powernow_k8_data *, powernow_data);
34
35 static int cpu_family = CPU_OPTERON;
36
37+/* array to map SW pstate number to acpi state */
38+static u32 ps_to_as[8];
39+
40 /* core performance boost */
41 static bool cpb_capable, cpb_enabled;
42 static struct msr __percpu *msrs;
43@@ -80,9 +83,9 @@ static u32 find_khz_freq_from_fid(u32 fid)
44 }
45
46 static u32 find_khz_freq_from_pstate(struct cpufreq_frequency_table *data,
47- u32 pstate)
48+ u32 pstate)
49 {
50- return data[pstate].frequency;
51+ return data[ps_to_as[pstate]].frequency;
52 }
53
54 /* Return the vco fid for an input fid
55@@ -926,6 +929,9 @@ static int fill_powernow_table_pstate(struct powernow_k8_data *data,
56 invalidate_entry(powernow_table, i);
57 continue;
58 }
59+
60+ ps_to_as[index] = i;
61+
62 /* Frequency may be rounded for these */
63 if ((boot_cpu_data.x86 == 0x10 && boot_cpu_data.x86_model < 10)
64 || boot_cpu_data.x86 == 0x11) {
65@@ -1190,7 +1196,8 @@ static int powernowk8_target(struct cpufreq_policy *pol,
66 powernow_k8_acpi_pst_values(data, newstate);
67
68 if (cpu_family == CPU_HW_PSTATE)
69- ret = transition_frequency_pstate(data, newstate);
70+ ret = transition_frequency_pstate(data,
71+ data->powernow_table[newstate].index);
72 else
73 ret = transition_frequency_fidvid(data, newstate);
74 if (ret) {
75@@ -1203,7 +1210,7 @@ static int powernowk8_target(struct cpufreq_policy *pol,
76
77 if (cpu_family == CPU_HW_PSTATE)
78 pol->cur = find_khz_freq_from_pstate(data->powernow_table,
79- newstate);
80+ data->powernow_table[newstate].index);
81 else
82 pol->cur = find_khz_freq_from_fid(data->currfid);
83 ret = 0;
84--
851.7.7.4
86
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
new file mode 100644
index 00000000..e5754bc6
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.6/0087-Linux-3.2.6.patch
@@ -0,0 +1,24 @@
1From c2db2e264bce3b5c82b8786ec3080cbe41b7114c Mon Sep 17 00:00:00 2001
2From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3Date: Mon, 13 Feb 2012 11:17:29 -0800
4Subject: [PATCH 87/87] Linux 3.2.6
5
6---
7 Makefile | 2 +-
8 1 files changed, 1 insertions(+), 1 deletions(-)
9
10diff --git a/Makefile b/Makefile
11index e9dd0ff..47fe496 100644
12--- a/Makefile
13+++ b/Makefile
14@@ -1,6 +1,6 @@
15 VERSION = 3
16 PATCHLEVEL = 2
17-SUBLEVEL = 5
18+SUBLEVEL = 6
19 EXTRAVERSION =
20 NAME = Saber-toothed Squirrel
21
22--
231.7.7.4
24
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/src.txt b/recipes-kernel/linux/linux-ti33x-psp-3.2/src.txt
deleted file mode 100644
index 916c5c50..00000000
--- a/recipes-kernel/linux/linux-ti33x-psp-3.2/src.txt
+++ /dev/null
@@ -1,295 +0,0 @@
1 file://3.2.1/0001-MAINTAINERS-stable-Update-address.patch \
2 file://3.2.1/0002-Documentation-Update-stable-address.patch \
3 file://3.2.1/0003-firmware-Fix-an-oops-on-reading-fw_priv-fw-in-sysfs-.patch \
4 file://3.2.1/0004-rt2800usb-Move-ID-out-of-unknown.patch \
5 file://3.2.1/0005-offb-Fix-setting-of-the-pseudo-palette-for-8bpp.patch \
6 file://3.2.1/0006-offb-Fix-bug-in-calculating-requested-vram-size.patch \
7 file://3.2.1/0007-libertas-clean-up-scan-thread-handling.patch \
8 file://3.2.1/0008-bcma-support-for-suspend-and-resume.patch \
9 file://3.2.1/0009-wl12xx-Validate-FEM-index-from-ini-file-and-FW.patch \
10 file://3.2.1/0010-wl12xx-Check-buffer-bound-when-processing-nvs-data.patch \
11 file://3.2.1/0011-wl12xx-Restore-testmode-ABI.patch \
12 file://3.2.1/0012-powerpc-time-Handle-wrapping-of-decrementer.patch \
13 file://3.2.1/0013-powerpc-Fix-unpaired-probe_hcall_entry-and-probe_hca.patch \
14 file://3.2.1/0014-IB-qib-Fix-a-possible-data-corruption-when-receiving.patch \
15 file://3.2.1/0015-IB-uverbs-Protect-QP-multicast-list.patch \
16 file://3.2.1/0016-iwlagn-fix-TID-use-bug.patch \
17 file://3.2.1/0017-iwlagn-fix-remove-use-of-PAGE_SIZE.patch \
18 file://3.2.1/0018-perf-Fix-parsing-of-__print_flags-in-TP_printk.patch \
19 file://3.2.1/0019-ore-Fix-crash-in-case-of-an-IO-error.patch \
20 file://3.2.1/0020-ore-fix-BUG_ON-too-few-sgs-when-reading.patch \
21 file://3.2.1/0021-ore-Must-support-none-PAGE-aligned-IO.patch \
22 file://3.2.1/0022-ore-FIX-breakage-when-MISC_FILESYSTEMS-is-not-set.patch \
23 file://3.2.1/0023-reiserfs-Fix-quota-mount-option-parsing.patch \
24 file://3.2.1/0024-reiserfs-Force-inode-evictions-before-umount-to-avoi.patch \
25 file://3.2.1/0025-ext3-Don-t-warn-from-writepage-when-readonly-inode-i.patch \
26 file://3.2.1/0026-drivers-hv-Don-t-OOPS-when-you-cannot-init-vmbus.patch \
27 file://3.2.1/0027-Drivers-hv-Fix-a-bug-in-vmbus_driver_unregister.patch \
28 file://3.2.1/0028-USB-update-documentation-for-usbmon.patch \
29 file://3.2.1/0029-usbfs-Fix-oops-related-to-user-namespace-conversion.patch \
30 file://3.2.1/0030-atmel_serial-fix-spinlock-lockup-in-RS485-code.patch \
31 file://3.2.1/0031-cgroup-fix-to-allow-mounting-a-hierarchy-by-name.patch \
32 file://3.2.1/0032-udf-Fix-deadlock-when-converting-file-from-in-ICB-on.patch \
33 file://3.2.1/0033-drivers-usb-class-cdc-acm.c-clear-dangling-pointer.patch \
34 file://3.2.1/0034-USB-isight-fix-kernel-bug-when-loading-firmware.patch \
35 file://3.2.1/0035-usb-usb-storage-doesn-t-support-dynamic-id-currently.patch \
36 file://3.2.1/0036-USB-pxa168-Fix-compilation-error.patch \
37 file://3.2.1/0037-USB-add-quirk-for-another-camera.patch \
38 file://3.2.1/0038-usb-musb-fix-pm_runtime-mismatch.patch \
39 file://3.2.1/0039-USB-omninet-fix-write_room.patch \
40 file://3.2.1/0040-usb-option-add-ZD-Incorporated-HSPA-modem.patch \
41 file://3.2.1/0041-USB-Add-USB-ID-for-Multiplex-RC-serial-adapter-to-cp.patch \
42 file://3.2.1/0042-usb-fix-number-of-mapped-SG-DMA-entries.patch \
43 file://3.2.1/0043-xhci-Properly-handle-COMP_2ND_BW_ERR.patch \
44 file://3.2.1/0044-usb-ch9-fix-up-MaxStreams-helper.patch \
45 file://3.2.1/0045-igmp-Avoid-zero-delay-when-receiving-odd-mixture-of-.patch \
46 file://3.2.1/0046-asix-fix-infinite-loop-in-rx_fixup.patch \
47 file://3.2.1/0047-bonding-fix-error-handling-if-slave-is-busy-v2.patch \
48 file://3.2.1/0048-usb-cdc-acm-Fix-acm_tty_hangup-vs.-acm_tty_close-rac.patch \
49 file://3.2.1/0049-xfs-fix-acl-count-validation-in-xfs_acl_from_disk.patch \
50 file://3.2.1/0050-Linux-3.2.1.patch \
51 file://3.2.2/0001-mtdoops-fix-the-oops_page_used-array-size.patch \
52 file://3.2.2/0002-mtd-mtdoops-skip-reading-initially-bad-blocks.patch \
53 file://3.2.2/0003-mtd-mtd_blkdevs-don-t-increase-open-count-on-error-p.patch \
54 file://3.2.2/0004-mtd-tests-stresstest-bail-out-if-device-has-not-enou.patch \
55 file://3.2.2/0005-drivers-rtc-interface.c-fix-alarm-rollover-when-day-.patch \
56 file://3.2.2/0006-ext4-add-missing-ext4_resize_end-on-error-paths.patch \
57 file://3.2.2/0007-ext4-fix-undefined-behavior-in-ext4_fill_flex_info.patch \
58 file://3.2.2/0008-ALSA-snd-usb-us122l-Delete-calls-to-preempt_disable.patch \
59 file://3.2.2/0009-ALSA-HDA-Fix-master-control-for-Cirrus-Logic-421X.patch \
60 file://3.2.2/0010-ALSA-HDA-Fix-automute-for-Cirrus-Logic-421x.patch \
61 file://3.2.2/0011-ALSA-ice1724-Check-for-ac97-to-avoid-kernel-oops.patch \
62 file://3.2.2/0012-ALSA-usb-audio-Avoid-flood-of-frame-active-debug-mes.patch \
63 file://3.2.2/0013-ALSA-hda-Use-auto-parser-for-HP-laptops-with-cx20459.patch \
64 file://3.2.2/0014-ALSA-hda-Return-the-error-from-get_wcaps_type-for-in.patch \
65 file://3.2.2/0015-ALSA-hda-Fix-the-detection-of-Loopback-Mixing-contro.patch \
66 file://3.2.2/0016-ALSA-hda-Fix-the-lost-power-setup-of-seconary-pins-a.patch \
67 file://3.2.2/0017-drm-radeon-kms-workaround-invalid-AVI-infoframe-chec.patch \
68 file://3.2.2/0018-drm-radeon-kms-disable-writeback-on-pre-R300-asics.patch \
69 file://3.2.2/0019-radeon-Fix-disabling-PCI-bus-mastering-on-big-endian.patch \
70 file://3.2.2/0020-pnfs-obj-pNFS-errors-are-communicated-on-iodata-pnfs.patch \
71 file://3.2.2/0021-pnfs-obj-Must-return-layout-on-IO-error.patch \
72 file://3.2.2/0022-NFS-Retry-mounting-NFSROOT.patch \
73 file://3.2.2/0023-NFSv4.1-fix-backchannel-slotid-off-by-one-bug.patch \
74 file://3.2.2/0024-NFS-fix-recent-breakage-to-NFS-error-handling.patch \
75 file://3.2.2/0025-NFSv4-include-bitmap-in-nfsv4-get-acl-data.patch \
76 file://3.2.2/0026-nfs-fix-regression-in-handling-of-context-option-in-.patch \
77 file://3.2.2/0027-HID-bump-maximum-global-item-tag-report-size-to-96-b.patch \
78 file://3.2.2/0028-HID-wiimote-Select-INPUT_FF_MEMLESS.patch \
79 file://3.2.2/0029-UBI-fix-missing-scrub-when-there-is-a-bit-flip.patch \
80 file://3.2.2/0030-UBI-fix-use-after-free-on-error-path.patch \
81 file://3.2.2/0031-PCI-Fix-PCI_EXP_TYPE_RC_EC-value.patch \
82 file://3.2.2/0032-PCI-msi-Disable-msi-interrupts-when-we-initialize-a-.patch \
83 file://3.2.2/0033-x86-PCI-Ignore-CPU-non-addressable-_CRS-reserved-mem.patch \
84 file://3.2.2/0034-x86-PCI-amd-factor-out-MMCONFIG-discovery.patch \
85 file://3.2.2/0035-x86-PCI-build-amd_bus.o-only-when-CONFIG_AMD_NB-y.patch \
86 file://3.2.2/0036-SCSI-mpt2sas-Release-spinlock-for-the-raid-device-li.patch \
87 file://3.2.2/0037-SCSI-mpt2sas-Fix-for-memory-allocation-error-for-lar.patch \
88 file://3.2.2/0038-xen-xenbus-Reject-replies-with-payload-XENSTORE_PAYL.patch \
89 file://3.2.2/0039-md-raid1-perform-bad-block-tests-for-WriteMostly-dev.patch \
90 file://3.2.2/0040-ima-free-duplicate-measurement-memory.patch \
91 file://3.2.2/0041-ima-fix-invalid-memory-reference.patch \
92 file://3.2.2/0042-slub-fix-a-possible-memleak-in-__slab_alloc.patch \
93 file://3.2.2/0043-PNP-work-around-Dell-1536-1546-BIOS-MMCONFIG-bug-tha.patch \
94 file://3.2.2/0044-asix-fix-setting-custom-MAC-address-on-Asix-88178-de.patch \
95 file://3.2.2/0045-asix-fix-setting-custom-MAC-address-on-Asix-88772-de.patch \
96 file://3.2.2/0046-include-linux-crash_dump.h-needs-elf.h.patch \
97 file://3.2.2/0047-rtl8192se-Fix-BUG-caused-by-failure-to-check-skb-all.patch \
98 file://3.2.2/0048-mac80211-fix-rx-key-NULL-pointer-dereference-in-prom.patch \
99 file://3.2.2/0049-ath9k-Fix-regression-in-channelwidth-switch-at-the-s.patch \
100 file://3.2.2/0050-memcg-add-mem_cgroup_replace_page_cache-to-fix-LRU-i.patch \
101 file://3.2.2/0051-x86-Fix-mmap-random-address-range.patch \
102 file://3.2.2/0052-UBI-fix-nameless-volumes-handling.patch \
103 file://3.2.2/0053-UBI-fix-debugging-messages.patch \
104 file://3.2.2/0054-UBI-make-vid_hdr-non-static.patch \
105 file://3.2.2/0055-UBIFS-fix-debugging-messages.patch \
106 file://3.2.2/0056-UBIFS-make-debugging-messages-light-again.patch \
107 file://3.2.2/0057-i2c-Fix-error-value-returned-by-several-bus-drivers.patch \
108 file://3.2.2/0058-mmc-core-Fix-voltage-select-in-DDR-mode.patch \
109 file://3.2.2/0059-mmc-sdhci-Fix-tuning-timer-incorrect-setting-when-su.patch \
110 file://3.2.2/0060-mmc-sd-Fix-SDR12-timing-regression.patch \
111 file://3.2.2/0061-V4L-DVB-v4l2-ioctl-integer-overflow-in-video_usercop.patch \
112 file://3.2.2/0062-Unused-iocbs-in-a-batch-should-not-be-accounted-as-a.patch \
113 file://3.2.2/0063-ftrace-Fix-unregister-ftrace_ops-accounting.patch \
114 file://3.2.2/0064-kconfig-streamline-config.pl-Simplify-backslash-line.patch \
115 file://3.2.2/0065-kconfig-streamline-config.pl-Fix-parsing-Makefile-wi.patch \
116 file://3.2.2/0066-svcrpc-fix-double-free-on-shutdown-of-nfsd-after-cha.patch \
117 file://3.2.2/0067-svcrpc-destroy-server-sockets-all-at-once.patch \
118 file://3.2.2/0068-svcrpc-avoid-memory-corruption-on-pool-shutdown.patch \
119 file://3.2.2/0069-nfsd4-fix-lockowner-matching.patch \
120 file://3.2.2/0070-nfsd-Fix-oops-when-parsing-a-0-length-export.patch \
121 file://3.2.2/0071-fsnotify-don-t-BUG-in-fsnotify_destroy_mark.patch \
122 file://3.2.2/0072-x86-UV-Update-Boot-messages-for-SGI-UV2-platform.patch \
123 file://3.2.2/0073-recordmcount-Fix-handling-of-elf64-big-endian-object.patch \
124 file://3.2.2/0074-uvcvideo-Fix-integer-overflow-in-uvc_ioctl_ctrl_map.patch \
125 file://3.2.2/0075-dcache-use-a-dispose-list-in-select_parent.patch \
126 file://3.2.2/0076-fix-shrink_dcache_parent-livelock.patch \
127 file://3.2.2/0077-pnfsblock-acquire-im_lock-in-_preload_range.patch \
128 file://3.2.2/0078-pnfsblock-don-t-spinlock-when-freeing-block_dev.patch \
129 file://3.2.2/0079-pnfsblock-limit-bio-page-count.patch \
130 file://3.2.2/0080-mac80211-revert-on-channel-work-optimisations.patch \
131 file://3.2.2/0081-HID-hid-multitouch-add-another-eGalax-id.patch \
132 file://3.2.2/0082-HID-multitouch-cleanup-with-eGalax-PID-definitions.patch \
133 file://3.2.2/0083-HID-multitouch-Add-egalax-ID-for-Acer-Iconia-W500.patch \
134 file://3.2.2/0084-HID-multitouch-add-support-for-the-MSI-Windpad-110W.patch \
135 file://3.2.2/0085-HID-hid-multitouch-add-support-for-new-Hanvon-panels.patch \
136 file://3.2.2/0086-HID-multitouch-add-support-of-Atmel-multitouch-panel.patch \
137 file://3.2.2/0087-HID-multitouch-add-support-for-3M-32.patch \
138 file://3.2.2/0088-HID-hid-multitouch-add-support-9-new-Xiroku-devices.patch \
139 file://3.2.2/0089-fix-cputime-overflow-in-uptime_proc_show.patch \
140 file://3.2.2/0090-block-add-and-use-scsi_blk_cmd_ioctl.patch \
141 file://3.2.2/0091-block-fail-SCSI-passthrough-ioctls-on-partition-devi.patch \
142 file://3.2.2/0092-dm-do-not-forward-ioctls-from-logical-volumes-to-the.patch \
143 file://3.2.2/0093-proc-clean-up-and-fix-proc-pid-mem-handling.patch \
144 file://3.2.2/0094-ALSA-HDA-Use-LPIB-position-fix-for-Macbook-Pro-7-1.patch \
145 file://3.2.2/0095-ALSA-virtuoso-Xonar-DS-fix-polarity-of-front-output.patch \
146 file://3.2.2/0096-ALSA-HDA-Fix-internal-microphone-on-Dell-Studio-16-X.patch \
147 file://3.2.2/0097-TOMOYO-Accept-000-as-a-valid-character.patch \
148 file://3.2.2/0098-intel-idle-Make-idle-driver-more-robust.patch \
149 file://3.2.2/0099-intel_idle-fix-API-misuse.patch \
150 file://3.2.2/0100-ACPI-Store-SRAT-table-revision.patch \
151 file://3.2.2/0101-ACPI-x86-Use-SRAT-table-rev-to-use-8bit-or-32bit-PXM.patch \
152 file://3.2.2/0102-ACPI-ia64-Use-SRAT-table-rev-to-use-8bit-or-16-32bit.patch \
153 file://3.2.2/0103-ACPICA-Put-back-the-call-to-acpi_os_validate_address.patch \
154 file://3.2.2/0104-ACPI-processor-fix-acpi_get_cpuid-for-UP-processor.patch \
155 file://3.2.2/0105-sym53c8xx-Fix-NULL-pointer-dereference-in-slave_dest.patch \
156 file://3.2.2/0106-target-Set-response-format-in-INQUIRY-response.patch \
157 file://3.2.2/0107-target-Set-additional-sense-length-field-in-sense-da.patch \
158 file://3.2.2/0108-bcma-invalidate-the-mapped-core-over-suspend-resume.patch \
159 file://3.2.2/0109-cx23885-dvb-check-if-dvb_attach-succeded.patch \
160 file://3.2.2/0110-cx88-fix-don-t-duplicate-xc4000-entry-for-radio.patch \
161 file://3.2.2/0111-tuner-Fix-numberspace-conflict-between-xc4000-and-pt.patch \
162 file://3.2.2/0112-tracepoints-module-Fix-disabling-tracepoints-with-ta.patch \
163 file://3.2.2/0113-I2C-OMAP-correct-SYSC-register-offset-for-OMAP4.patch \
164 file://3.2.2/0114-x86-UV2-Fix-new-UV2-hardware-by-using-native-UV2-bro.patch \
165 file://3.2.2/0115-x86-UV2-Fix-BAU-destination-timeout-initialization.patch \
166 file://3.2.2/0116-x86-UV2-Work-around-BAU-bug.patch \
167 file://3.2.2/0117-ath9k_hw-fix-interpretation-of-the-rx-KeyMiss-flag.patch \
168 file://3.2.2/0118-rt2800pci-fix-spurious-interrupts-generation.patch \
169 file://3.2.2/0119-xfs-fix-endian-conversion-issue-in-discard-code.patch \
170 file://3.2.2/0120-i2c-eg20t-modified-the-setting-of-transfer-rate.patch \
171 file://3.2.2/0121-score-fix-off-by-one-index-into-syscall-table.patch \
172 file://3.2.2/0122-cifs-lower-default-wsize-when-unix-extensions-are-no.patch \
173 file://3.2.2/0123-kprobes-initialize-before-using-a-hlist.patch \
174 file://3.2.2/0124-proc-clear_refs-do-not-clear-reserved-pages.patch \
175 file://3.2.2/0125-mm-fix-NULL-ptr-dereference-in-__count_immobile_page.patch \
176 file://3.2.2/0126-iwlagn-check-for-SMPS-mode.patch \
177 file://3.2.2/0127-iwlegacy-3945-fix-hw-passive-scan-on-radar-channels.patch \
178 file://3.2.2/0128-SHM_UNLOCK-fix-long-unpreemptible-section.patch \
179 file://3.2.2/0129-SHM_UNLOCK-fix-Unevictable-pages-stranded-after-swap.patch \
180 file://3.2.2/0130-Linux-3.2.2.patch \
181 file://3.2.3/0001-ALSA-hda-Fix-buffer-alignment-regression-with-Nvidia.patch \
182 file://3.2.3/0002-ALSA-hda-Fix-silent-outputs-from-docking-station-jac.patch \
183 file://3.2.3/0003-eCryptfs-Sanitize-write-counts-of-dev-ecryptfs.patch \
184 file://3.2.3/0004-ecryptfs-Improve-metadata-read-failure-logging.patch \
185 file://3.2.3/0005-eCryptfs-Make-truncate-path-killable.patch \
186 file://3.2.3/0006-eCryptfs-Check-inode-changes-in-setattr.patch \
187 file://3.2.3/0007-eCryptfs-Fix-oops-when-printing-debug-info-in-extent.patch \
188 file://3.2.3/0008-drm-radeon-kms-Add-an-MSI-quirk-for-Dell-RS690.patch \
189 file://3.2.3/0009-drm-radeon-kms-move-panel-mode-setup-into-encoder-mo.patch \
190 file://3.2.3/0010-drm-radeon-kms-rework-modeset-sequence-for-DCE41-and.patch \
191 file://3.2.3/0011-drm-Fix-authentication-kernel-crash.patch \
192 file://3.2.3/0012-xfs-Fix-missing-xfs_iunlock-on-error-recovery-path-i.patch \
193 file://3.2.3/0013-ASoC-Mark-WM5100-register-map-cache-only-when-going-.patch \
194 file://3.2.3/0014-ASoC-Disable-register-synchronisation-for-low-freque.patch \
195 file://3.2.3/0015-ASoC-Don-t-go-through-cache-when-applying-WM5100-rev.patch \
196 file://3.2.3/0016-ASoC-wm8996-Call-_POST_PMU-callback-for-CPVDD.patch \
197 file://3.2.3/0017-brcmsmac-fix-tx-queue-flush-infinite-loop.patch \
198 file://3.2.3/0018-mac80211-fix-work-removal-on-deauth-request.patch \
199 file://3.2.3/0019-jbd-Issue-cache-flush-after-checkpointing.patch \
200 file://3.2.3/0020-crypto-sha512-make-it-work-undo-percpu-message-sched.patch \
201 file://3.2.3/0021-crypto-sha512-reduce-stack-usage-to-safe-number.patch \
202 file://3.2.3/0022-tpm_tis-add-delay-after-aborting-command.patch \
203 file://3.2.3/0023-x86-uv-Fix-uninitialized-spinlocks.patch \
204 file://3.2.3/0024-x86-uv-Fix-uv_gpa_to_soc_phys_ram-shift.patch \
205 file://3.2.3/0025-x86-microcode_amd-Add-support-for-CPU-family-specifi.patch \
206 file://3.2.3/0026-m68k-Fix-assembler-constraint-to-prevent-overeager-g.patch \
207 file://3.2.3/0027-ALSA-hda-set-mute-led-polarity-for-laptops-with-bugg.patch \
208 file://3.2.3/0028-ALSA-hda-Fix-silent-output-on-ASUS-A6Rp.patch \
209 file://3.2.3/0029-ALSA-hda-Fix-silent-output-on-Haier-W18-laptop.patch \
210 file://3.2.3/0030-drm-i915-paper-over-missed-irq-issues-with-force-wak.patch \
211 file://3.2.3/0031-drm-i915-sdvo-always-set-positive-sync-polarity.patch \
212 file://3.2.3/0032-drm-i915-Re-enable-gen7-RC6-and-GPU-turbo-after-resu.patch \
213 file://3.2.3/0033-ARM-at91-fix-at91rm9200-soc-subtype-handling.patch \
214 file://3.2.3/0034-mach-ux500-enable-ARM-errata-764369.patch \
215 file://3.2.3/0035-ARM-7296-1-proc-v7.S-remove-HARVARD_CACHE-preprocess.patch \
216 file://3.2.3/0036-sysfs-Complain-bitterly-about-attempts-to-remove-fil.patch \
217 file://3.2.3/0037-x86-xen-size-struct-xen_spinlock-to-always-fit-in-ar.patch \
218 file://3.2.3/0038-mpt2sas-Removed-redundant-calling-of-_scsih_probe_de.patch \
219 file://3.2.3/0039-USB-option-Add-LG-docomo-L-02C.patch \
220 file://3.2.3/0040-USB-ftdi_sio-fix-TIOCSSERIAL-baud_base-handling.patch \
221 file://3.2.3/0041-USB-ftdi_sio-fix-initial-baud-rate.patch \
222 file://3.2.3/0042-USB-ftdi_sio-add-PID-for-TI-XDS100v2-BeagleBone-A3.patch \
223 file://3.2.3/0043-USB-serial-ftdi-additional-IDs.patch \
224 file://3.2.3/0044-USB-ftdi_sio-Add-more-identifiers.patch \
225 file://3.2.3/0045-USB-cdc-wdm-updating-desc-length-must-be-protected-b.patch \
226 file://3.2.3/0046-USB-cdc-wdm-use-two-mutexes-to-allow-simultaneous-re.patch \
227 file://3.2.3/0047-qcaux-add-more-Pantech-UML190-and-UML290-ports.patch \
228 file://3.2.3/0048-usb-dwc3-ep0-tidy-up-Pending-Request-handling.patch \
229 file://3.2.3/0049-usb-io_ti-Make-edge_remove_sysfs_attrs-the-port_remo.patch \
230 file://3.2.3/0050-TTY-fix-UV-serial-console-regression.patch \
231 file://3.2.3/0051-serial-amba-pl011-lock-console-writes-against-interr.patch \
232 file://3.2.3/0052-jsm-Fixed-EEH-recovery-error.patch \
233 file://3.2.3/0053-iwlwifi-fix-PCI-E-transport-inta-race.patch \
234 file://3.2.3/0054-vmwgfx-Fix-assignment-in-vmw_framebuffer_create_hand.patch \
235 file://3.2.3/0055-USB-Realtek-cr-fix-autopm-scheduling-while-atomic.patch \
236 file://3.2.3/0056-USB-usbsevseg-fix-max-length.patch \
237 file://3.2.3/0057-usb-gadget-langwell-don-t-call-gadget-s-disconnect.patch \
238 file://3.2.3/0058-usb-gadget-storage-endian-fix.patch \
239 file://3.2.3/0059-drivers-usb-host-ehci-fsl.c-add-missing-iounmap.patch \
240 file://3.2.3/0060-xhci-Fix-USB-3.0-device-restart-on-resume.patch \
241 file://3.2.3/0061-xHCI-Cleanup-isoc-transfer-ring-when-TD-length-misma.patch \
242 file://3.2.3/0062-usb-musb-davinci-fix-build-breakage.patch \
243 file://3.2.3/0063-hwmon-f71805f-Fix-clamping-of-temperature-limits.patch \
244 file://3.2.3/0064-hwmon-w83627ehf-Disable-setting-DC-mode-for-pwm2-pwm.patch \
245 file://3.2.3/0065-hwmon-sht15-fix-bad-error-code.patch \
246 file://3.2.3/0066-USB-cdc-wdm-call-wake_up_all-to-allow-driver-to-shut.patch \
247 file://3.2.3/0067-USB-cdc-wdm-better-allocate-a-buffer-that-is-at-leas.patch \
248 file://3.2.3/0068-USB-cdc-wdm-Avoid-hanging-on-interface-with-no-USB_C.patch \
249 file://3.2.3/0069-netns-fix-net_alloc_generic.patch \
250 file://3.2.3/0070-netns-Fail-conspicously-if-someone-uses-net_generic-.patch \
251 file://3.2.3/0071-net-caif-Register-properly-as-a-pernet-subsystem.patch \
252 file://3.2.3/0072-af_unix-fix-EPOLLET-regression-for-stream-sockets.patch \
253 file://3.2.3/0073-bonding-fix-enslaving-in-alb-mode-when-link-down.patch \
254 file://3.2.3/0074-l2tp-l2tp_ip-fix-possible-oops-on-packet-receive.patch \
255 file://3.2.3/0075-macvlan-fix-a-possible-use-after-free.patch \
256 file://3.2.3/0076-net-bpf_jit-fix-divide-by-0-generation.patch \
257 file://3.2.3/0077-net-reintroduce-missing-rcu_assign_pointer-calls.patch \
258 file://3.2.3/0078-rds-Make-rds_sock_lock-BH-rather-than-IRQ-safe.patch \
259 file://3.2.3/0079-tcp-fix-tcp_trim_head-to-adjust-segment-count-with-s.patch \
260 file://3.2.3/0080-tcp-md5-using-remote-adress-for-md5-lookup-in-rst-pa.patch \
261 file://3.2.3/0081-USB-serial-CP210x-Added-USB-ID-for-the-Link-Instrume.patch \
262 file://3.2.3/0082-USB-cp210x-call-generic-open-last-in-open.patch \
263 file://3.2.3/0083-USB-cp210x-fix-CP2104-baudrate-usage.patch \
264 file://3.2.3/0084-USB-cp210x-do-not-map-baud-rates-to-B0.patch \
265 file://3.2.3/0085-USB-cp210x-fix-up-set_termios-variables.patch \
266 file://3.2.3/0086-USB-cp210x-clean-up-refactor-and-document-speed-hand.patch \
267 file://3.2.3/0087-USB-cp210x-initialise-baud-rate-at-open.patch \
268 file://3.2.3/0088-USB-cp210x-allow-more-baud-rates-above-1Mbaud.patch \
269 file://3.2.3/0089-mach-ux500-no-MMC_CAP_SD_HIGHSPEED-on-Snowball.patch \
270 file://3.2.3/0090-Linux-3.2.3.patch \
271 file://3.2.4/0001-Revert-ASoC-Mark-WM5100-register-map-cache-only-when.patch \
272 file://3.2.4/0002-Revert-ASoC-Don-t-go-through-cache-when-applying-WM5.patch \
273 file://3.2.4/0003-Linux-3.2.4.patch \
274 file://3.2.5/0001-PCI-Rework-ASPM-disable-code.patch \
275 file://3.2.5/0002-Linux-3.2.5.patch \
276 file://0002-f_rndis-HACK-around-undefined-variables.patch \
277 file://0003-da8xx-fb-add-DVI-support-for-beaglebone.patch \
278 file://0004-beaglebone-rebase-everything-onto-3.2-WARNING-MEGAPA.patch \
279 file://0005-more-beaglebone-merges.patch \
280 file://0006-beaglebone-disable-tsadc.patch \
281 file://0007-tscadc-Add-general-purpose-mode-untested-with-touchs.patch \
282 file://0008-tscadc-Add-board-file-mfd-support-fix-warning.patch \
283 file://0009-AM335X-init-tsc-bone-style-for-new-boards.patch \
284 file://0010-tscadc-make-stepconfig-channel-configurable.patch \
285 file://0011-tscadc-Trigger-through-sysfs.patch \
286 file://0012-meta-ti-Remove-debug-messages-for-meta-ti.patch \
287 file://0013-tscadc-switch-to-polling-instead-of-interrupts.patch \
288 file://0014-beaglebone-fix-ADC-init.patch \
289 file://0015-AM335x-MUX-add-ehrpwm1A.patch \
290 file://0016-beaglebone-enable-PWM-for-lcd-backlight-backlight-is.patch \
291 file://0017-omap_hsmmc-Set-dto-to-max-value-of-14-to-avoid-SD-Ca.patch \
292 file://0018-beaglebone-set-default-brightness-to-50-for-pwm-back.patch \
293 file://0019-st7735fb-WIP-framebuffer-driver-supporting-Adafruit-.patch \
294 file://0020-beaglebone-use-P8_6-gpio1_3-as-w1-bus.patch \
295 file://0021-beaglebone-add-support-for-Towertech-TT3201-CAN-cape.patch \