diff options
author | Koen Kooi <koen@dominion.thruhere.net> | 2012-06-20 12:42:22 +0200 |
---|---|---|
committer | Denys Dmytriyenko <denys@ti.com> | 2012-07-31 15:45:32 -0400 |
commit | 646ff9d602da5053496ace4a0f9fcf1f7b5fae70 (patch) | |
tree | c8f49c988d7b100f11f17413fa95eb6f0fc00512 /recipes-kernel | |
parent | 7f25f16c99036ada0137d789a1b3d2f0f5e8a126 (diff) | |
download | meta-ti-646ff9d602da5053496ace4a0f9fcf1f7b5fae70.tar.gz |
linux-ti33x-psp 3.2: update to 3.2.21, add libertas fixes
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Diffstat (limited to 'recipes-kernel')
418 files changed, 21741 insertions, 356 deletions
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0001-KVM-mmu_notifier-Flush-TLBs-before-releasing-mmu_loc.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0001-KVM-mmu_notifier-Flush-TLBs-before-releasing-mmu_loc.patch new file mode 100644 index 00000000..dff41fc5 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0001-KVM-mmu_notifier-Flush-TLBs-before-releasing-mmu_loc.patch | |||
@@ -0,0 +1,79 @@ | |||
1 | From e29e69cb6dff635429cbda9a9548c3d0390689f9 Mon Sep 17 00:00:00 2001 | ||
2 | From: Takuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp> | ||
3 | Date: Fri, 10 Feb 2012 15:28:31 +0900 | ||
4 | Subject: [PATCH 001/117] KVM: mmu_notifier: Flush TLBs before releasing | ||
5 | mmu_lock | ||
6 | |||
7 | (cherry picked from commit 565f3be2174611f364405bbea2d86e153c2e7e78 | ||
8 | |||
9 | Other threads may process the same page in that small window and skip | ||
10 | TLB flush and then return before these functions do flush. | ||
11 | |||
12 | Signed-off-by: Takuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp> | ||
13 | Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com> | ||
14 | Signed-off-by: Avi Kivity <avi@redhat.com> | ||
15 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
16 | --- | ||
17 | virt/kvm/kvm_main.c | 19 ++++++++++--------- | ||
18 | 1 file changed, 10 insertions(+), 9 deletions(-) | ||
19 | |||
20 | diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c | ||
21 | index e401c1b..9ffac2e 100644 | ||
22 | --- a/virt/kvm/kvm_main.c | ||
23 | +++ b/virt/kvm/kvm_main.c | ||
24 | @@ -289,15 +289,15 @@ static void kvm_mmu_notifier_invalidate_page(struct mmu_notifier *mn, | ||
25 | */ | ||
26 | idx = srcu_read_lock(&kvm->srcu); | ||
27 | spin_lock(&kvm->mmu_lock); | ||
28 | + | ||
29 | kvm->mmu_notifier_seq++; | ||
30 | need_tlb_flush = kvm_unmap_hva(kvm, address) | kvm->tlbs_dirty; | ||
31 | - spin_unlock(&kvm->mmu_lock); | ||
32 | - srcu_read_unlock(&kvm->srcu, idx); | ||
33 | - | ||
34 | /* we've to flush the tlb before the pages can be freed */ | ||
35 | if (need_tlb_flush) | ||
36 | kvm_flush_remote_tlbs(kvm); | ||
37 | |||
38 | + spin_unlock(&kvm->mmu_lock); | ||
39 | + srcu_read_unlock(&kvm->srcu, idx); | ||
40 | } | ||
41 | |||
42 | static void kvm_mmu_notifier_change_pte(struct mmu_notifier *mn, | ||
43 | @@ -335,12 +335,12 @@ static void kvm_mmu_notifier_invalidate_range_start(struct mmu_notifier *mn, | ||
44 | for (; start < end; start += PAGE_SIZE) | ||
45 | need_tlb_flush |= kvm_unmap_hva(kvm, start); | ||
46 | need_tlb_flush |= kvm->tlbs_dirty; | ||
47 | - spin_unlock(&kvm->mmu_lock); | ||
48 | - srcu_read_unlock(&kvm->srcu, idx); | ||
49 | - | ||
50 | /* we've to flush the tlb before the pages can be freed */ | ||
51 | if (need_tlb_flush) | ||
52 | kvm_flush_remote_tlbs(kvm); | ||
53 | + | ||
54 | + spin_unlock(&kvm->mmu_lock); | ||
55 | + srcu_read_unlock(&kvm->srcu, idx); | ||
56 | } | ||
57 | |||
58 | static void kvm_mmu_notifier_invalidate_range_end(struct mmu_notifier *mn, | ||
59 | @@ -378,13 +378,14 @@ static int kvm_mmu_notifier_clear_flush_young(struct mmu_notifier *mn, | ||
60 | |||
61 | idx = srcu_read_lock(&kvm->srcu); | ||
62 | spin_lock(&kvm->mmu_lock); | ||
63 | - young = kvm_age_hva(kvm, address); | ||
64 | - spin_unlock(&kvm->mmu_lock); | ||
65 | - srcu_read_unlock(&kvm->srcu, idx); | ||
66 | |||
67 | + young = kvm_age_hva(kvm, address); | ||
68 | if (young) | ||
69 | kvm_flush_remote_tlbs(kvm); | ||
70 | |||
71 | + spin_unlock(&kvm->mmu_lock); | ||
72 | + srcu_read_unlock(&kvm->srcu, idx); | ||
73 | + | ||
74 | return young; | ||
75 | } | ||
76 | |||
77 | -- | ||
78 | 1.7.9.5 | ||
79 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0002-KVM-Ensure-all-vcpus-are-consistent-with-in-kernel-i.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0002-KVM-Ensure-all-vcpus-are-consistent-with-in-kernel-i.patch new file mode 100644 index 00000000..801ab456 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0002-KVM-Ensure-all-vcpus-are-consistent-with-in-kernel-i.patch | |||
@@ -0,0 +1,110 @@ | |||
1 | From 54719e9d5196e2af1e358795de9face038502343 Mon Sep 17 00:00:00 2001 | ||
2 | From: Avi Kivity <avi@redhat.com> | ||
3 | Date: Mon, 5 Mar 2012 14:23:29 +0200 | ||
4 | Subject: [PATCH 002/117] KVM: Ensure all vcpus are consistent with in-kernel | ||
5 | irqchip settings | ||
6 | |||
7 | (cherry picked from commit 3e515705a1f46beb1c942bb8043c16f8ac7b1e9e) | ||
8 | |||
9 | If some vcpus are created before KVM_CREATE_IRQCHIP, then | ||
10 | irqchip_in_kernel() and vcpu->arch.apic will be inconsistent, leading | ||
11 | to potential NULL pointer dereferences. | ||
12 | |||
13 | Fix by: | ||
14 | - ensuring that no vcpus are installed when KVM_CREATE_IRQCHIP is called | ||
15 | - ensuring that a vcpu has an apic if it is installed after KVM_CREATE_IRQCHIP | ||
16 | |||
17 | This is somewhat long winded because vcpu->arch.apic is created without | ||
18 | kvm->lock held. | ||
19 | |||
20 | Based on earlier patch by Michael Ellerman. | ||
21 | |||
22 | Signed-off-by: Michael Ellerman <michael@ellerman.id.au> | ||
23 | Signed-off-by: Avi Kivity <avi@redhat.com> | ||
24 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
25 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
26 | --- | ||
27 | arch/ia64/kvm/kvm-ia64.c | 5 +++++ | ||
28 | arch/x86/kvm/x86.c | 8 ++++++++ | ||
29 | include/linux/kvm_host.h | 7 +++++++ | ||
30 | virt/kvm/kvm_main.c | 4 ++++ | ||
31 | 4 files changed, 24 insertions(+) | ||
32 | |||
33 | diff --git a/arch/ia64/kvm/kvm-ia64.c b/arch/ia64/kvm/kvm-ia64.c | ||
34 | index 43f4c92..7073185 100644 | ||
35 | --- a/arch/ia64/kvm/kvm-ia64.c | ||
36 | +++ b/arch/ia64/kvm/kvm-ia64.c | ||
37 | @@ -1169,6 +1169,11 @@ out: | ||
38 | |||
39 | #define PALE_RESET_ENTRY 0x80000000ffffffb0UL | ||
40 | |||
41 | +bool kvm_vcpu_compatible(struct kvm_vcpu *vcpu) | ||
42 | +{ | ||
43 | + return irqchip_in_kernel(vcpu->kcm) == (vcpu->arch.apic != NULL); | ||
44 | +} | ||
45 | + | ||
46 | int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu) | ||
47 | { | ||
48 | struct kvm_vcpu *v; | ||
49 | diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c | ||
50 | index e04cae1..4fc5323 100644 | ||
51 | --- a/arch/x86/kvm/x86.c | ||
52 | +++ b/arch/x86/kvm/x86.c | ||
53 | @@ -3579,6 +3579,9 @@ long kvm_arch_vm_ioctl(struct file *filp, | ||
54 | r = -EEXIST; | ||
55 | if (kvm->arch.vpic) | ||
56 | goto create_irqchip_unlock; | ||
57 | + r = -EINVAL; | ||
58 | + if (atomic_read(&kvm->online_vcpus)) | ||
59 | + goto create_irqchip_unlock; | ||
60 | r = -ENOMEM; | ||
61 | vpic = kvm_create_pic(kvm); | ||
62 | if (vpic) { | ||
63 | @@ -6486,6 +6489,11 @@ void kvm_arch_check_processor_compat(void *rtn) | ||
64 | kvm_x86_ops->check_processor_compatibility(rtn); | ||
65 | } | ||
66 | |||
67 | +bool kvm_vcpu_compatible(struct kvm_vcpu *vcpu) | ||
68 | +{ | ||
69 | + return irqchip_in_kernel(vcpu->kvm) == (vcpu->arch.apic != NULL); | ||
70 | +} | ||
71 | + | ||
72 | int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu) | ||
73 | { | ||
74 | struct page *page; | ||
75 | diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h | ||
76 | index 35410ef..6136821 100644 | ||
77 | --- a/include/linux/kvm_host.h | ||
78 | +++ b/include/linux/kvm_host.h | ||
79 | @@ -744,6 +744,13 @@ static inline bool kvm_vcpu_is_bsp(struct kvm_vcpu *vcpu) | ||
80 | { | ||
81 | return vcpu->kvm->bsp_vcpu_id == vcpu->vcpu_id; | ||
82 | } | ||
83 | + | ||
84 | +bool kvm_vcpu_compatible(struct kvm_vcpu *vcpu); | ||
85 | + | ||
86 | +#else | ||
87 | + | ||
88 | +static inline bool kvm_vcpu_compatible(struct kvm_vcpu *vcpu) { return true; } | ||
89 | + | ||
90 | #endif | ||
91 | |||
92 | #ifdef __KVM_HAVE_DEVICE_ASSIGNMENT | ||
93 | diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c | ||
94 | index 9ffac2e..ec747dc 100644 | ||
95 | --- a/virt/kvm/kvm_main.c | ||
96 | +++ b/virt/kvm/kvm_main.c | ||
97 | @@ -1667,6 +1667,10 @@ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, u32 id) | ||
98 | goto vcpu_destroy; | ||
99 | |||
100 | mutex_lock(&kvm->lock); | ||
101 | + if (!kvm_vcpu_compatible(vcpu)) { | ||
102 | + r = -EINVAL; | ||
103 | + goto unlock_vcpu_destroy; | ||
104 | + } | ||
105 | if (atomic_read(&kvm->online_vcpus) == KVM_MAX_VCPUS) { | ||
106 | r = -EINVAL; | ||
107 | goto unlock_vcpu_destroy; | ||
108 | -- | ||
109 | 1.7.9.5 | ||
110 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0003-KVM-lock-slots_lock-around-device-assignment.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0003-KVM-lock-slots_lock-around-device-assignment.patch new file mode 100644 index 00000000..12c9a1ea --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0003-KVM-lock-slots_lock-around-device-assignment.patch | |||
@@ -0,0 +1,83 @@ | |||
1 | From 2464830dde6595631a26a5178946f8d8d0ac974f Mon Sep 17 00:00:00 2001 | ||
2 | From: Alex Williamson <alex.williamson@redhat.com> | ||
3 | Date: Tue, 17 Apr 2012 21:46:44 -0600 | ||
4 | Subject: [PATCH 003/117] KVM: lock slots_lock around device assignment | ||
5 | |||
6 | (cherry picked from commit 21a1416a1c945c5aeaeaf791b63c64926018eb77) | ||
7 | |||
8 | As pointed out by Jason Baron, when assigning a device to a guest | ||
9 | we first set the iommu domain pointer, which enables mapping | ||
10 | and unmapping of memory slots to the iommu. This leaves a window | ||
11 | where this path is enabled, but we haven't synchronized the iommu | ||
12 | mappings to the existing memory slots. Thus a slot being removed | ||
13 | at that point could send us down unexpected code paths removing | ||
14 | non-existent pinnings and iommu mappings. Take the slots_lock | ||
15 | around creating the iommu domain and initial mappings as well as | ||
16 | around iommu teardown to avoid this race. | ||
17 | |||
18 | Signed-off-by: Alex Williamson <alex.williamson@redhat.com> | ||
19 | Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com> | ||
20 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
21 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
22 | --- | ||
23 | virt/kvm/iommu.c | 23 +++++++++++++++-------- | ||
24 | 1 file changed, 15 insertions(+), 8 deletions(-) | ||
25 | |||
26 | diff --git a/virt/kvm/iommu.c b/virt/kvm/iommu.c | ||
27 | index fd817a2..533db33 100644 | ||
28 | --- a/virt/kvm/iommu.c | ||
29 | +++ b/virt/kvm/iommu.c | ||
30 | @@ -239,9 +239,13 @@ int kvm_iommu_map_guest(struct kvm *kvm) | ||
31 | return -ENODEV; | ||
32 | } | ||
33 | |||
34 | + mutex_lock(&kvm->slots_lock); | ||
35 | + | ||
36 | kvm->arch.iommu_domain = iommu_domain_alloc(&pci_bus_type); | ||
37 | - if (!kvm->arch.iommu_domain) | ||
38 | - return -ENOMEM; | ||
39 | + if (!kvm->arch.iommu_domain) { | ||
40 | + r = -ENOMEM; | ||
41 | + goto out_unlock; | ||
42 | + } | ||
43 | |||
44 | if (!allow_unsafe_assigned_interrupts && | ||
45 | !iommu_domain_has_cap(kvm->arch.iommu_domain, | ||
46 | @@ -252,17 +256,16 @@ int kvm_iommu_map_guest(struct kvm *kvm) | ||
47 | " module option.\n", __func__); | ||
48 | iommu_domain_free(kvm->arch.iommu_domain); | ||
49 | kvm->arch.iommu_domain = NULL; | ||
50 | - return -EPERM; | ||
51 | + r = -EPERM; | ||
52 | + goto out_unlock; | ||
53 | } | ||
54 | |||
55 | r = kvm_iommu_map_memslots(kvm); | ||
56 | if (r) | ||
57 | - goto out_unmap; | ||
58 | - | ||
59 | - return 0; | ||
60 | + kvm_iommu_unmap_memslots(kvm); | ||
61 | |||
62 | -out_unmap: | ||
63 | - kvm_iommu_unmap_memslots(kvm); | ||
64 | +out_unlock: | ||
65 | + mutex_unlock(&kvm->slots_lock); | ||
66 | return r; | ||
67 | } | ||
68 | |||
69 | @@ -338,7 +341,11 @@ int kvm_iommu_unmap_guest(struct kvm *kvm) | ||
70 | if (!domain) | ||
71 | return 0; | ||
72 | |||
73 | + mutex_lock(&kvm->slots_lock); | ||
74 | kvm_iommu_unmap_memslots(kvm); | ||
75 | + kvm->arch.iommu_domain = NULL; | ||
76 | + mutex_unlock(&kvm->slots_lock); | ||
77 | + | ||
78 | iommu_domain_free(domain); | ||
79 | return 0; | ||
80 | } | ||
81 | -- | ||
82 | 1.7.9.5 | ||
83 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0004-KVM-nVMX-Fix-erroneous-exception-bitmap-check.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0004-KVM-nVMX-Fix-erroneous-exception-bitmap-check.patch new file mode 100644 index 00000000..34538bde --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0004-KVM-nVMX-Fix-erroneous-exception-bitmap-check.patch | |||
@@ -0,0 +1,36 @@ | |||
1 | From c997d0a009e5eb7b372287c13fc9eaba901533e8 Mon Sep 17 00:00:00 2001 | ||
2 | From: Nadav Har'El <nyh@math.technion.ac.il> | ||
3 | Date: Tue, 6 Mar 2012 16:39:22 +0200 | ||
4 | Subject: [PATCH 004/117] KVM: nVMX: Fix erroneous exception bitmap check | ||
5 | |||
6 | (cherry picked from commit 9587190107d0c0cbaccbf7bf6b0245d29095a9ae) | ||
7 | |||
8 | The code which checks whether to inject a pagefault to L1 or L2 (in | ||
9 | nested VMX) was wrong, incorrect in how it checked the PF_VECTOR bit. | ||
10 | Thanks to Dan Carpenter for spotting this. | ||
11 | |||
12 | Signed-off-by: Nadav Har'El <nyh@il.ibm.com> | ||
13 | Reported-by: Dan Carpenter <dan.carpenter@oracle.com> | ||
14 | Signed-off-by: Avi Kivity <avi@redhat.com> | ||
15 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | arch/x86/kvm/vmx.c | 2 +- | ||
19 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
20 | |||
21 | diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c | ||
22 | index 4ea7678..7ac5993 100644 | ||
23 | --- a/arch/x86/kvm/vmx.c | ||
24 | +++ b/arch/x86/kvm/vmx.c | ||
25 | @@ -1677,7 +1677,7 @@ static int nested_pf_handled(struct kvm_vcpu *vcpu) | ||
26 | struct vmcs12 *vmcs12 = get_vmcs12(vcpu); | ||
27 | |||
28 | /* TODO: also check PFEC_MATCH/MASK, not just EB.PF. */ | ||
29 | - if (!(vmcs12->exception_bitmap & PF_VECTOR)) | ||
30 | + if (!(vmcs12->exception_bitmap & (1u << PF_VECTOR))) | ||
31 | return 0; | ||
32 | |||
33 | nested_vmx_vmexit(vcpu); | ||
34 | -- | ||
35 | 1.7.9.5 | ||
36 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0005-KVM-VMX-vmx_set_cr0-expects-kvm-srcu-locked.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0005-KVM-VMX-vmx_set_cr0-expects-kvm-srcu-locked.patch new file mode 100644 index 00000000..6a3536f1 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0005-KVM-VMX-vmx_set_cr0-expects-kvm-srcu-locked.patch | |||
@@ -0,0 +1,35 @@ | |||
1 | From 6d02e81e40e77ff4e0d65ae89cf91a7402d3255f Mon Sep 17 00:00:00 2001 | ||
2 | From: Marcelo Tosatti <mtosatti@redhat.com> | ||
3 | Date: Tue, 27 Mar 2012 19:47:26 -0300 | ||
4 | Subject: [PATCH 005/117] KVM: VMX: vmx_set_cr0 expects kvm->srcu locked | ||
5 | |||
6 | (cherry picked from commit 7a4f5ad051e02139a9f1c0f7f4b1acb88915852b) | ||
7 | |||
8 | vmx_set_cr0 is called from vcpu run context, therefore it expects | ||
9 | kvm->srcu to be held (for setting up the real-mode TSS). | ||
10 | |||
11 | Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com> | ||
12 | Signed-off-by: Avi Kivity <avi@redhat.com> | ||
13 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
14 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
15 | --- | ||
16 | arch/x86/kvm/vmx.c | 2 ++ | ||
17 | 1 file changed, 2 insertions(+) | ||
18 | |||
19 | diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c | ||
20 | index 7ac5993..7315488 100644 | ||
21 | --- a/arch/x86/kvm/vmx.c | ||
22 | +++ b/arch/x86/kvm/vmx.c | ||
23 | @@ -3915,7 +3915,9 @@ static int vmx_vcpu_reset(struct kvm_vcpu *vcpu) | ||
24 | vmcs_write16(VIRTUAL_PROCESSOR_ID, vmx->vpid); | ||
25 | |||
26 | vmx->vcpu.arch.cr0 = X86_CR0_NW | X86_CR0_CD | X86_CR0_ET; | ||
27 | + vcpu->srcu_idx = srcu_read_lock(&vcpu->kvm->srcu); | ||
28 | vmx_set_cr0(&vmx->vcpu, kvm_read_cr0(vcpu)); /* enter rmode */ | ||
29 | + srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx); | ||
30 | vmx_set_cr4(&vmx->vcpu, 0); | ||
31 | vmx_set_efer(&vmx->vcpu, 0); | ||
32 | vmx_fpu_activate(&vmx->vcpu); | ||
33 | -- | ||
34 | 1.7.9.5 | ||
35 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0006-KVM-s390-do-store-status-after-handling-STOP_ON_STOP.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0006-KVM-s390-do-store-status-after-handling-STOP_ON_STOP.patch new file mode 100644 index 00000000..f47e28d2 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0006-KVM-s390-do-store-status-after-handling-STOP_ON_STOP.patch | |||
@@ -0,0 +1,65 @@ | |||
1 | From 4ec77e205d0abcfd9d48332ac0a8d60322966562 Mon Sep 17 00:00:00 2001 | ||
2 | From: Jens Freimann <jfrei@linux.vnet.ibm.com> | ||
3 | Date: Mon, 6 Feb 2012 10:59:03 +0100 | ||
4 | Subject: [PATCH 006/117] KVM: s390: do store status after handling | ||
5 | STOP_ON_STOP bit | ||
6 | |||
7 | (cherry picked from commit 9e0d5473e2f0ba2d2fe9dab9408edef3060b710e) | ||
8 | |||
9 | In handle_stop() handle the stop bit before doing the store status as | ||
10 | described for "Stop and Store Status" in the Principles of Operation. | ||
11 | We have to give up the local_int.lock before calling kvm store status | ||
12 | since it calls gmap_fault() which might sleep. Since local_int.lock | ||
13 | only protects local_int.* and not guest memory we can give up the lock. | ||
14 | |||
15 | Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com> | ||
16 | Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> | ||
17 | Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com> | ||
18 | Signed-off-by: Avi Kivity <avi@redhat.com> | ||
19 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
20 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
21 | --- | ||
22 | arch/s390/kvm/intercept.c | 20 ++++++++++++-------- | ||
23 | 1 file changed, 12 insertions(+), 8 deletions(-) | ||
24 | |||
25 | diff --git a/arch/s390/kvm/intercept.c b/arch/s390/kvm/intercept.c | ||
26 | index 0243454..a5f6eff 100644 | ||
27 | --- a/arch/s390/kvm/intercept.c | ||
28 | +++ b/arch/s390/kvm/intercept.c | ||
29 | @@ -133,13 +133,6 @@ static int handle_stop(struct kvm_vcpu *vcpu) | ||
30 | |||
31 | vcpu->stat.exit_stop_request++; | ||
32 | spin_lock_bh(&vcpu->arch.local_int.lock); | ||
33 | - if (vcpu->arch.local_int.action_bits & ACTION_STORE_ON_STOP) { | ||
34 | - vcpu->arch.local_int.action_bits &= ~ACTION_STORE_ON_STOP; | ||
35 | - rc = kvm_s390_vcpu_store_status(vcpu, | ||
36 | - KVM_S390_STORE_STATUS_NOADDR); | ||
37 | - if (rc >= 0) | ||
38 | - rc = -EOPNOTSUPP; | ||
39 | - } | ||
40 | |||
41 | if (vcpu->arch.local_int.action_bits & ACTION_RELOADVCPU_ON_STOP) { | ||
42 | vcpu->arch.local_int.action_bits &= ~ACTION_RELOADVCPU_ON_STOP; | ||
43 | @@ -155,7 +148,18 @@ static int handle_stop(struct kvm_vcpu *vcpu) | ||
44 | rc = -EOPNOTSUPP; | ||
45 | } | ||
46 | |||
47 | - spin_unlock_bh(&vcpu->arch.local_int.lock); | ||
48 | + if (vcpu->arch.local_int.action_bits & ACTION_STORE_ON_STOP) { | ||
49 | + vcpu->arch.local_int.action_bits &= ~ACTION_STORE_ON_STOP; | ||
50 | + /* store status must be called unlocked. Since local_int.lock | ||
51 | + * only protects local_int.* and not guest memory we can give | ||
52 | + * up the lock here */ | ||
53 | + spin_unlock_bh(&vcpu->arch.local_int.lock); | ||
54 | + rc = kvm_s390_vcpu_store_status(vcpu, | ||
55 | + KVM_S390_STORE_STATUS_NOADDR); | ||
56 | + if (rc >= 0) | ||
57 | + rc = -EOPNOTSUPP; | ||
58 | + } else | ||
59 | + spin_unlock_bh(&vcpu->arch.local_int.lock); | ||
60 | return rc; | ||
61 | } | ||
62 | |||
63 | -- | ||
64 | 1.7.9.5 | ||
65 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0007-KVM-s390-Sanitize-fpc-registers-for-KVM_SET_FPU.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0007-KVM-s390-Sanitize-fpc-registers-for-KVM_SET_FPU.patch new file mode 100644 index 00000000..cd494d67 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0007-KVM-s390-Sanitize-fpc-registers-for-KVM_SET_FPU.patch | |||
@@ -0,0 +1,36 @@ | |||
1 | From 12632a351defb18140a84df1720a363d94991973 Mon Sep 17 00:00:00 2001 | ||
2 | From: Christian Borntraeger <borntraeger@de.ibm.com> | ||
3 | Date: Mon, 6 Feb 2012 10:59:02 +0100 | ||
4 | Subject: [PATCH 007/117] KVM: s390: Sanitize fpc registers for KVM_SET_FPU | ||
5 | |||
6 | (cherry picked from commit 851755871c1f3184f4124c466e85881f17fa3226) | ||
7 | |||
8 | commit 7eef87dc99e419b1cc051e4417c37e4744d7b661 (KVM: s390: fix | ||
9 | register setting) added a load of the floating point control register | ||
10 | to the KVM_SET_FPU path. Lets make sure that the fpc is valid. | ||
11 | |||
12 | Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> | ||
13 | Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com> | ||
14 | Signed-off-by: Avi Kivity <avi@redhat.com> | ||
15 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | arch/s390/kvm/kvm-s390.c | 2 +- | ||
19 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
20 | |||
21 | diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c | ||
22 | index d1c44573..d3cb86c 100644 | ||
23 | --- a/arch/s390/kvm/kvm-s390.c | ||
24 | +++ b/arch/s390/kvm/kvm-s390.c | ||
25 | @@ -418,7 +418,7 @@ int kvm_arch_vcpu_ioctl_get_sregs(struct kvm_vcpu *vcpu, | ||
26 | int kvm_arch_vcpu_ioctl_set_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu) | ||
27 | { | ||
28 | memcpy(&vcpu->arch.guest_fpregs.fprs, &fpu->fprs, sizeof(fpu->fprs)); | ||
29 | - vcpu->arch.guest_fpregs.fpc = fpu->fpc; | ||
30 | + vcpu->arch.guest_fpregs.fpc = fpu->fpc & FPC_VALID_MASK; | ||
31 | restore_fp_regs(&vcpu->arch.guest_fpregs); | ||
32 | return 0; | ||
33 | } | ||
34 | -- | ||
35 | 1.7.9.5 | ||
36 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0008-bio-don-t-overflow-in-bio_get_nr_vecs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0008-bio-don-t-overflow-in-bio_get_nr_vecs.patch new file mode 100644 index 00000000..d0b79e02 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0008-bio-don-t-overflow-in-bio_get_nr_vecs.patch | |||
@@ -0,0 +1,61 @@ | |||
1 | From ac72e8c98ddb0c511b506472d9bc5afcf720babc Mon Sep 17 00:00:00 2001 | ||
2 | From: Kent Overstreet <kent.overstreet@gmail.com> | ||
3 | Date: Wed, 8 Feb 2012 22:07:18 +0100 | ||
4 | Subject: [PATCH 008/117] bio: don't overflow in bio_get_nr_vecs() | ||
5 | |||
6 | commit 5abebfdd02450fa1349daacf242e70b3736581e3 upstream. | ||
7 | |||
8 | There were two places bio_get_nr_vecs() could overflow: | ||
9 | |||
10 | First, it did a left shift to convert from sectors to bytes immediately | ||
11 | before dividing by PAGE_SIZE. If PAGE_SIZE ever was less than 512 a great | ||
12 | many things would break, so dividing by PAGE_SIZE >> 9 is safe and will | ||
13 | generate smaller code too. | ||
14 | |||
15 | The nastier overflow was in the DIV_ROUND_UP() (that's what the code was | ||
16 | effectively doing, anyways). If n + d overflowed, the whole thing would | ||
17 | return 0 which breaks things rather effectively. | ||
18 | |||
19 | bio_get_nr_vecs() doesn't claim to give an exact value anyways, so the | ||
20 | DIV_ROUND_UP() is silly; we could do a straight divide except if a | ||
21 | device's queue_max_sectors was less than PAGE_SIZE we'd return 0. So we | ||
22 | just add 1; this should always be safe - things will break badly if | ||
23 | bio_get_nr_vecs() returns > BIO_MAX_PAGES (bio_alloc() will suddenly start | ||
24 | failing) but it's queue_max_segments that must guard against this, if | ||
25 | queue_max_sectors is preventing this from happen things are going to | ||
26 | explode on architectures with different PAGE_SIZE. | ||
27 | |||
28 | Signed-off-by: Kent Overstreet <koverstreet@google.com> | ||
29 | Cc: Tejun Heo <tj@kernel.org> | ||
30 | Acked-by: Valdis Kletnieks <Valdis.Kletnieks@vt.edu> | ||
31 | Signed-off-by: Andrew Morton <akpm@linux-foundation.org> | ||
32 | Signed-off-by: Jens Axboe <axboe@kernel.dk> | ||
33 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
34 | --- | ||
35 | fs/bio.c | 10 +++------- | ||
36 | 1 file changed, 3 insertions(+), 7 deletions(-) | ||
37 | |||
38 | diff --git a/fs/bio.c b/fs/bio.c | ||
39 | index b1fe82c..b980ecd 100644 | ||
40 | --- a/fs/bio.c | ||
41 | +++ b/fs/bio.c | ||
42 | @@ -505,13 +505,9 @@ EXPORT_SYMBOL(bio_clone); | ||
43 | int bio_get_nr_vecs(struct block_device *bdev) | ||
44 | { | ||
45 | struct request_queue *q = bdev_get_queue(bdev); | ||
46 | - int nr_pages; | ||
47 | - | ||
48 | - nr_pages = ((queue_max_sectors(q) << 9) + PAGE_SIZE - 1) >> PAGE_SHIFT; | ||
49 | - if (nr_pages > queue_max_segments(q)) | ||
50 | - nr_pages = queue_max_segments(q); | ||
51 | - | ||
52 | - return nr_pages; | ||
53 | + return min_t(unsigned, | ||
54 | + queue_max_segments(q), | ||
55 | + queue_max_sectors(q) / (PAGE_SIZE >> 9) + 1); | ||
56 | } | ||
57 | EXPORT_SYMBOL(bio_get_nr_vecs); | ||
58 | |||
59 | -- | ||
60 | 1.7.9.5 | ||
61 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0009-bio-allocation-failure-due-to-bio_get_nr_vecs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0009-bio-allocation-failure-due-to-bio_get_nr_vecs.patch new file mode 100644 index 00000000..1be88750 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0009-bio-allocation-failure-due-to-bio_get_nr_vecs.patch | |||
@@ -0,0 +1,49 @@ | |||
1 | From a98c14f6d0a745c09fa0ebf22c2ce8913c211d9b Mon Sep 17 00:00:00 2001 | ||
2 | From: Bernd Schubert <bernd.schubert@itwm.fraunhofer.de> | ||
3 | Date: Fri, 11 May 2012 16:36:44 +0200 | ||
4 | Subject: [PATCH 009/117] bio allocation failure due to bio_get_nr_vecs() | ||
5 | |||
6 | commit f908ee9463b09ddd05e1c1a0111132212dc05fac upstream. | ||
7 | |||
8 | The number of bio_get_nr_vecs() is passed down via bio_alloc() to | ||
9 | bvec_alloc_bs(), which fails the bio allocation if | ||
10 | nr_iovecs > BIO_MAX_PAGES. For the underlying caller this causes an | ||
11 | unexpected bio allocation failure. | ||
12 | Limiting to queue_max_segments() is not sufficient, as max_segments | ||
13 | also might be very large. | ||
14 | |||
15 | bvec_alloc_bs(gfp_mask, nr_iovecs, ) => NULL when nr_iovecs > BIO_MAX_PAGES | ||
16 | bio_alloc_bioset(gfp_mask, nr_iovecs, ...) | ||
17 | bio_alloc(GFP_NOIO, nvecs) | ||
18 | xfs_alloc_ioend_bio() | ||
19 | |||
20 | Signed-off-by: Bernd Schubert <bernd.schubert@itwm.fraunhofer.de> | ||
21 | Signed-off-by: Jens Axboe <axboe@kernel.dk> | ||
22 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
23 | --- | ||
24 | fs/bio.c | 7 ++++++- | ||
25 | 1 file changed, 6 insertions(+), 1 deletion(-) | ||
26 | |||
27 | diff --git a/fs/bio.c b/fs/bio.c | ||
28 | index b980ecd..4fc4dbb 100644 | ||
29 | --- a/fs/bio.c | ||
30 | +++ b/fs/bio.c | ||
31 | @@ -505,9 +505,14 @@ EXPORT_SYMBOL(bio_clone); | ||
32 | int bio_get_nr_vecs(struct block_device *bdev) | ||
33 | { | ||
34 | struct request_queue *q = bdev_get_queue(bdev); | ||
35 | - return min_t(unsigned, | ||
36 | + int nr_pages; | ||
37 | + | ||
38 | + nr_pages = min_t(unsigned, | ||
39 | queue_max_segments(q), | ||
40 | queue_max_sectors(q) / (PAGE_SIZE >> 9) + 1); | ||
41 | + | ||
42 | + return min_t(unsigned, nr_pages, BIO_MAX_PAGES); | ||
43 | + | ||
44 | } | ||
45 | EXPORT_SYMBOL(bio_get_nr_vecs); | ||
46 | |||
47 | -- | ||
48 | 1.7.9.5 | ||
49 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0010-block-fix-buffer-overflow-when-printing-partition-UU.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0010-block-fix-buffer-overflow-when-printing-partition-UU.patch new file mode 100644 index 00000000..65aff340 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0010-block-fix-buffer-overflow-when-printing-partition-UU.patch | |||
@@ -0,0 +1,98 @@ | |||
1 | From 6a6f5fba154e1400185844d74b953fba440fda63 Mon Sep 17 00:00:00 2001 | ||
2 | From: Tejun Heo <tj@kernel.org> | ||
3 | Date: Tue, 15 May 2012 08:22:04 +0200 | ||
4 | Subject: [PATCH 010/117] block: fix buffer overflow when printing partition | ||
5 | UUIDs | ||
6 | |||
7 | commit 05c69d298c96703741cac9a5cbbf6c53bd55a6e2 upstream. | ||
8 | |||
9 | 6d1d8050b4bc8 "block, partition: add partition_meta_info to hd_struct" | ||
10 | added part_unpack_uuid() which assumes that the passed in buffer has | ||
11 | enough space for sprintfing "%pU" - 37 characters including '\0'. | ||
12 | |||
13 | Unfortunately, b5af921ec0233 "init: add support for root devices | ||
14 | specified by partition UUID" supplied 33 bytes buffer to the function | ||
15 | leading to the following panic with stackprotector enabled. | ||
16 | |||
17 | Kernel panic - not syncing: stack-protector: Kernel stack corrupted in: ffffffff81b14c7e | ||
18 | |||
19 | [<ffffffff815e226b>] panic+0xba/0x1c6 | ||
20 | [<ffffffff81b14c7e>] ? printk_all_partitions+0x259/0x26xb | ||
21 | [<ffffffff810566bb>] __stack_chk_fail+0x1b/0x20 | ||
22 | [<ffffffff81b15c7e>] printk_all_paritions+0x259/0x26xb | ||
23 | [<ffffffff81aedfe0>] mount_block_root+0x1bc/0x27f | ||
24 | [<ffffffff81aee0fa>] mount_root+0x57/0x5b | ||
25 | [<ffffffff81aee23b>] prepare_namespace+0x13d/0x176 | ||
26 | [<ffffffff8107eec0>] ? release_tgcred.isra.4+0x330/0x30 | ||
27 | [<ffffffff81aedd60>] kernel_init+0x155/0x15a | ||
28 | [<ffffffff81087b97>] ? schedule_tail+0x27/0xb0 | ||
29 | [<ffffffff815f4d24>] kernel_thread_helper+0x5/0x10 | ||
30 | [<ffffffff81aedc0b>] ? start_kernel+0x3c5/0x3c5 | ||
31 | [<ffffffff815f4d20>] ? gs_change+0x13/0x13 | ||
32 | |||
33 | Increase the buffer size, remove the dangerous part_unpack_uuid() and | ||
34 | use snprintf() directly from printk_all_partitions(). | ||
35 | |||
36 | Signed-off-by: Tejun Heo <tj@kernel.org> | ||
37 | Reported-by: Szymon Gruszczynski <sz.gruszczynski@googlemail.com> | ||
38 | Cc: Will Drewry <wad@chromium.org> | ||
39 | Signed-off-by: Jens Axboe <axboe@kernel.dk> | ||
40 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
41 | --- | ||
42 | block/genhd.c | 10 ++++++---- | ||
43 | include/linux/genhd.h | 6 ------ | ||
44 | 2 files changed, 6 insertions(+), 10 deletions(-) | ||
45 | |||
46 | diff --git a/block/genhd.c b/block/genhd.c | ||
47 | index 997afd6..4927476 100644 | ||
48 | --- a/block/genhd.c | ||
49 | +++ b/block/genhd.c | ||
50 | @@ -744,7 +744,7 @@ void __init printk_all_partitions(void) | ||
51 | struct hd_struct *part; | ||
52 | char name_buf[BDEVNAME_SIZE]; | ||
53 | char devt_buf[BDEVT_SIZE]; | ||
54 | - u8 uuid[PARTITION_META_INFO_UUIDLTH * 2 + 1]; | ||
55 | + char uuid_buf[PARTITION_META_INFO_UUIDLTH * 2 + 5]; | ||
56 | |||
57 | /* | ||
58 | * Don't show empty devices or things that have been | ||
59 | @@ -763,14 +763,16 @@ void __init printk_all_partitions(void) | ||
60 | while ((part = disk_part_iter_next(&piter))) { | ||
61 | bool is_part0 = part == &disk->part0; | ||
62 | |||
63 | - uuid[0] = 0; | ||
64 | + uuid_buf[0] = '\0'; | ||
65 | if (part->info) | ||
66 | - part_unpack_uuid(part->info->uuid, uuid); | ||
67 | + snprintf(uuid_buf, sizeof(uuid_buf), "%pU", | ||
68 | + part->info->uuid); | ||
69 | |||
70 | printk("%s%s %10llu %s %s", is_part0 ? "" : " ", | ||
71 | bdevt_str(part_devt(part), devt_buf), | ||
72 | (unsigned long long)part->nr_sects >> 1, | ||
73 | - disk_name(disk, part->partno, name_buf), uuid); | ||
74 | + disk_name(disk, part->partno, name_buf), | ||
75 | + uuid_buf); | ||
76 | if (is_part0) { | ||
77 | if (disk->driverfs_dev != NULL && | ||
78 | disk->driverfs_dev->driver != NULL) | ||
79 | diff --git a/include/linux/genhd.h b/include/linux/genhd.h | ||
80 | index c6f7f6a..4eec461 100644 | ||
81 | --- a/include/linux/genhd.h | ||
82 | +++ b/include/linux/genhd.h | ||
83 | @@ -222,12 +222,6 @@ static inline void part_pack_uuid(const u8 *uuid_str, u8 *to) | ||
84 | } | ||
85 | } | ||
86 | |||
87 | -static inline char *part_unpack_uuid(const u8 *uuid, char *out) | ||
88 | -{ | ||
89 | - sprintf(out, "%pU", uuid); | ||
90 | - return out; | ||
91 | -} | ||
92 | - | ||
93 | static inline int disk_max_parts(struct gendisk *disk) | ||
94 | { | ||
95 | if (disk->flags & GENHD_FL_EXT_DEVT) | ||
96 | -- | ||
97 | 1.7.9.5 | ||
98 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0011-fix-PA1.1-oops-on-boot.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0011-fix-PA1.1-oops-on-boot.patch new file mode 100644 index 00000000..8ca86893 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0011-fix-PA1.1-oops-on-boot.patch | |||
@@ -0,0 +1,43 @@ | |||
1 | From 882770bdde14aed9bf896980f51fe2fc8a55623f Mon Sep 17 00:00:00 2001 | ||
2 | From: James Bottomley <JBottomley@Parallels.com> | ||
3 | Date: Tue, 15 May 2012 11:04:19 +0100 | ||
4 | Subject: [PATCH 011/117] fix PA1.1 oops on boot | ||
5 | |||
6 | commit 5e185581d7c46ddd33cd9c01106d1fc86efb9376 upstream. | ||
7 | |||
8 | All PA1.1 systems have been oopsing on boot since | ||
9 | |||
10 | commit f311847c2fcebd81912e2f0caf8a461dec28db41 | ||
11 | Author: James Bottomley <James.Bottomley@HansenPartnership.com> | ||
12 | Date: Wed Dec 22 10:22:11 2010 -0600 | ||
13 | |||
14 | parisc: flush pages through tmpalias space | ||
15 | |||
16 | because a PA2.0 instruction was accidentally introduced into the PA1.1 TLB | ||
17 | insertion interruption path when it was consolidated with the do_alias macro. | ||
18 | Fix the do_alias macro only to use PA2.0 instructions if compiled for 64 bit. | ||
19 | Signed-off-by: James Bottomley <JBottomley@Parallels.com> | ||
20 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
21 | --- | ||
22 | arch/parisc/kernel/entry.S | 4 ++++ | ||
23 | 1 file changed, 4 insertions(+) | ||
24 | |||
25 | diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S | ||
26 | index 6f05944..5350342 100644 | ||
27 | --- a/arch/parisc/kernel/entry.S | ||
28 | +++ b/arch/parisc/kernel/entry.S | ||
29 | @@ -581,7 +581,11 @@ | ||
30 | */ | ||
31 | cmpiclr,= 0x01,\tmp,%r0 | ||
32 | ldi (_PAGE_DIRTY|_PAGE_READ|_PAGE_WRITE),\prot | ||
33 | +#ifdef CONFIG_64BIT | ||
34 | depd,z \prot,8,7,\prot | ||
35 | +#else | ||
36 | + depw,z \prot,8,7,\prot | ||
37 | +#endif | ||
38 | /* | ||
39 | * OK, it is in the temp alias region, check whether "from" or "to". | ||
40 | * Check "subtle" note in pacache.S re: r23/r26. | ||
41 | -- | ||
42 | 1.7.9.5 | ||
43 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0012-fix-crash-in-flush_icache_page_asm-on-PA1.1.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0012-fix-crash-in-flush_icache_page_asm-on-PA1.1.patch new file mode 100644 index 00000000..a5f61214 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0012-fix-crash-in-flush_icache_page_asm-on-PA1.1.patch | |||
@@ -0,0 +1,91 @@ | |||
1 | From 95093fb411e522ec7a6c33d12863107ba841fe72 Mon Sep 17 00:00:00 2001 | ||
2 | From: John David Anglin <dave.anglin@bell.net> | ||
3 | Date: Wed, 16 May 2012 10:14:52 +0100 | ||
4 | Subject: [PATCH 012/117] fix crash in flush_icache_page_asm on PA1.1 | ||
5 | |||
6 | commit 207f583d7179f707f402c36a7bda5ca1fd03ad5b upstream. | ||
7 | |||
8 | As pointed out by serveral people, PA1.1 only has a type 26 instruction | ||
9 | meaning that the space register must be explicitly encoded. Not giving an | ||
10 | explicit space means that the compiler uses the type 24 version which is PA2.0 | ||
11 | only resulting in an illegal instruction crash. | ||
12 | |||
13 | This regression was caused by | ||
14 | |||
15 | commit f311847c2fcebd81912e2f0caf8a461dec28db41 | ||
16 | Author: James Bottomley <James.Bottomley@HansenPartnership.com> | ||
17 | Date: Wed Dec 22 10:22:11 2010 -0600 | ||
18 | |||
19 | parisc: flush pages through tmpalias space | ||
20 | |||
21 | Reported-by: Helge Deller <deller@gmx.de> | ||
22 | Signed-off-by: John David Anglin <dave.anglin@bell.net> | ||
23 | Signed-off-by: James Bottomley <JBottomley@Parallels.com> | ||
24 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
25 | --- | ||
26 | arch/parisc/kernel/pacache.S | 38 ++++++++++++++++++++------------------ | ||
27 | 1 file changed, 20 insertions(+), 18 deletions(-) | ||
28 | |||
29 | diff --git a/arch/parisc/kernel/pacache.S b/arch/parisc/kernel/pacache.S | ||
30 | index 93ff3d9..5d7218a 100644 | ||
31 | --- a/arch/parisc/kernel/pacache.S | ||
32 | +++ b/arch/parisc/kernel/pacache.S | ||
33 | @@ -692,7 +692,7 @@ ENTRY(flush_icache_page_asm) | ||
34 | |||
35 | /* Purge any old translation */ | ||
36 | |||
37 | - pitlb (%sr0,%r28) | ||
38 | + pitlb (%sr4,%r28) | ||
39 | |||
40 | ldil L%icache_stride, %r1 | ||
41 | ldw R%icache_stride(%r1), %r1 | ||
42 | @@ -706,27 +706,29 @@ ENTRY(flush_icache_page_asm) | ||
43 | sub %r25, %r1, %r25 | ||
44 | |||
45 | |||
46 | -1: fic,m %r1(%r28) | ||
47 | - fic,m %r1(%r28) | ||
48 | - fic,m %r1(%r28) | ||
49 | - fic,m %r1(%r28) | ||
50 | - fic,m %r1(%r28) | ||
51 | - fic,m %r1(%r28) | ||
52 | - fic,m %r1(%r28) | ||
53 | - fic,m %r1(%r28) | ||
54 | - fic,m %r1(%r28) | ||
55 | - fic,m %r1(%r28) | ||
56 | - fic,m %r1(%r28) | ||
57 | - fic,m %r1(%r28) | ||
58 | - fic,m %r1(%r28) | ||
59 | - fic,m %r1(%r28) | ||
60 | - fic,m %r1(%r28) | ||
61 | + /* fic only has the type 26 form on PA1.1, requiring an | ||
62 | + * explicit space specification, so use %sr4 */ | ||
63 | +1: fic,m %r1(%sr4,%r28) | ||
64 | + fic,m %r1(%sr4,%r28) | ||
65 | + fic,m %r1(%sr4,%r28) | ||
66 | + fic,m %r1(%sr4,%r28) | ||
67 | + fic,m %r1(%sr4,%r28) | ||
68 | + fic,m %r1(%sr4,%r28) | ||
69 | + fic,m %r1(%sr4,%r28) | ||
70 | + fic,m %r1(%sr4,%r28) | ||
71 | + fic,m %r1(%sr4,%r28) | ||
72 | + fic,m %r1(%sr4,%r28) | ||
73 | + fic,m %r1(%sr4,%r28) | ||
74 | + fic,m %r1(%sr4,%r28) | ||
75 | + fic,m %r1(%sr4,%r28) | ||
76 | + fic,m %r1(%sr4,%r28) | ||
77 | + fic,m %r1(%sr4,%r28) | ||
78 | cmpb,COND(<<) %r28, %r25,1b | ||
79 | - fic,m %r1(%r28) | ||
80 | + fic,m %r1(%sr4,%r28) | ||
81 | |||
82 | sync | ||
83 | bv %r0(%r2) | ||
84 | - pitlb (%sr0,%r25) | ||
85 | + pitlb (%sr4,%r25) | ||
86 | .exit | ||
87 | |||
88 | .procend | ||
89 | -- | ||
90 | 1.7.9.5 | ||
91 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0013-fix-panic-on-prefetch-NULL-on-PA7300LC.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0013-fix-panic-on-prefetch-NULL-on-PA7300LC.patch new file mode 100644 index 00000000..461025a2 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0013-fix-panic-on-prefetch-NULL-on-PA7300LC.patch | |||
@@ -0,0 +1,39 @@ | |||
1 | From ae4fc9e89e9e7fb510ddbff1c3ca6d41477f45e1 Mon Sep 17 00:00:00 2001 | ||
2 | From: James Bottomley <JBottomley@Parallels.com> | ||
3 | Date: Wed, 16 May 2012 11:10:27 +0100 | ||
4 | Subject: [PATCH 013/117] fix panic on prefetch(NULL) on PA7300LC | ||
5 | |||
6 | commit b3cb8674811d1851bbf1486a73d62b90c119b994 upstream. | ||
7 | |||
8 | Due to an errata, the PA7300LC generates a TLB miss interruption even on the | ||
9 | prefetch instruction. This means that prefetch(NULL), which is supposed to be | ||
10 | a nop on linux actually generates a NULL deref fault. Fix this by testing the | ||
11 | address of prefetch against NULL before doing the prefetch. | ||
12 | |||
13 | Signed-off-by: James Bottomley <JBottomley@Parallels.com> | ||
14 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
15 | --- | ||
16 | arch/parisc/include/asm/prefetch.h | 7 ++++++- | ||
17 | 1 file changed, 6 insertions(+), 1 deletion(-) | ||
18 | |||
19 | diff --git a/arch/parisc/include/asm/prefetch.h b/arch/parisc/include/asm/prefetch.h | ||
20 | index c5edc60..1ee7c82 100644 | ||
21 | --- a/arch/parisc/include/asm/prefetch.h | ||
22 | +++ b/arch/parisc/include/asm/prefetch.h | ||
23 | @@ -21,7 +21,12 @@ | ||
24 | #define ARCH_HAS_PREFETCH | ||
25 | static inline void prefetch(const void *addr) | ||
26 | { | ||
27 | - __asm__("ldw 0(%0), %%r0" : : "r" (addr)); | ||
28 | + __asm__( | ||
29 | +#ifndef CONFIG_PA20 | ||
30 | + /* Need to avoid prefetch of NULL on PA7300LC */ | ||
31 | + " extrw,u,= %0,31,32,%%r0\n" | ||
32 | +#endif | ||
33 | + " ldw 0(%0), %%r0" : : "r" (addr)); | ||
34 | } | ||
35 | |||
36 | /* LDD is a PA2.0 addition. */ | ||
37 | -- | ||
38 | 1.7.9.5 | ||
39 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0014-arch-tile-Kconfig-remove-pointless-M386-test.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0014-arch-tile-Kconfig-remove-pointless-M386-test.patch new file mode 100644 index 00000000..abfee03b --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0014-arch-tile-Kconfig-remove-pointless-M386-test.patch | |||
@@ -0,0 +1,31 @@ | |||
1 | From 083a3c3d326ad085b05c8606f4ea8594ca6467b8 Mon Sep 17 00:00:00 2001 | ||
2 | From: Chris Metcalf <cmetcalf@tilera.com> | ||
3 | Date: Tue, 27 Mar 2012 13:47:57 -0400 | ||
4 | Subject: [PATCH 014/117] arch/tile/Kconfig: remove pointless "!M386" test. | ||
5 | |||
6 | commit 8d6951439ef524683057251f1231df232046b6b6 upstream. | ||
7 | |||
8 | Looks like a cut and paste bug from the x86 version. | ||
9 | |||
10 | Signed-off-by: Chris Metcalf <cmetcalf@tilera.com> | ||
11 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
12 | --- | ||
13 | arch/tile/Kconfig | 2 +- | ||
14 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
15 | |||
16 | diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig | ||
17 | index 70a0de4..7c9d2d4 100644 | ||
18 | --- a/arch/tile/Kconfig | ||
19 | +++ b/arch/tile/Kconfig | ||
20 | @@ -12,7 +12,7 @@ config TILE | ||
21 | select GENERIC_PENDING_IRQ if SMP | ||
22 | select GENERIC_IRQ_SHOW | ||
23 | select SYS_HYPERVISOR | ||
24 | - select ARCH_HAVE_NMI_SAFE_CMPXCHG if !M386 | ||
25 | + select ARCH_HAVE_NMI_SAFE_CMPXCHG | ||
26 | |||
27 | # FIXME: investigate whether we need/want these options. | ||
28 | # select HAVE_IOREMAP_PROT | ||
29 | -- | ||
30 | 1.7.9.5 | ||
31 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0015-tilegx-enable-SYSCALL_WRAPPERS-support.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0015-tilegx-enable-SYSCALL_WRAPPERS-support.patch new file mode 100644 index 00000000..593e1842 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0015-tilegx-enable-SYSCALL_WRAPPERS-support.patch | |||
@@ -0,0 +1,39 @@ | |||
1 | From 7f297eaca9b90a9be05ebe02c90efca3692136db Mon Sep 17 00:00:00 2001 | ||
2 | From: Chris Metcalf <cmetcalf@tilera.com> | ||
3 | Date: Fri, 18 May 2012 13:33:24 -0400 | ||
4 | Subject: [PATCH 015/117] tilegx: enable SYSCALL_WRAPPERS support | ||
5 | |||
6 | commit e6d9668e119af44ae5bcd5f1197174531458afe3 upstream. | ||
7 | |||
8 | Some discussion with the glibc mailing lists revealed that this was | ||
9 | necessary for 64-bit platforms with MIPS-like sign-extension rules | ||
10 | for 32-bit values. The original symptom was that passing (uid_t)-1 to | ||
11 | setreuid() was failing in programs linked -pthread because of the "setxid" | ||
12 | mechanism for passing setxid-type function arguments to the syscall code. | ||
13 | SYSCALL_WRAPPERS handles ensuring that all syscall arguments end up with | ||
14 | proper sign-extension and is thus the appropriate fix for this problem. | ||
15 | |||
16 | On other platforms (s390, powerpc, sparc64, and mips) this was fixed | ||
17 | in 2.6.28.6. The general issue is tracked as CVE-2009-0029. | ||
18 | |||
19 | Signed-off-by: Chris Metcalf <cmetcalf@tilera.com> | ||
20 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
21 | --- | ||
22 | arch/tile/Kconfig | 1 + | ||
23 | 1 file changed, 1 insertion(+) | ||
24 | |||
25 | diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig | ||
26 | index 7c9d2d4..6cb8319 100644 | ||
27 | --- a/arch/tile/Kconfig | ||
28 | +++ b/arch/tile/Kconfig | ||
29 | @@ -11,6 +11,7 @@ config TILE | ||
30 | select GENERIC_IRQ_PROBE | ||
31 | select GENERIC_PENDING_IRQ if SMP | ||
32 | select GENERIC_IRQ_SHOW | ||
33 | + select HAVE_SYSCALL_WRAPPERS if TILEGX | ||
34 | select SYS_HYPERVISOR | ||
35 | select ARCH_HAVE_NMI_SAFE_CMPXCHG | ||
36 | |||
37 | -- | ||
38 | 1.7.9.5 | ||
39 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0016-mtd-sm_ftl-fix-typo-in-major-number.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0016-mtd-sm_ftl-fix-typo-in-major-number.patch new file mode 100644 index 00000000..14de1bab --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0016-mtd-sm_ftl-fix-typo-in-major-number.patch | |||
@@ -0,0 +1,33 @@ | |||
1 | From 183929ad3fad7588523ae70fa91912196d4697db Mon Sep 17 00:00:00 2001 | ||
2 | From: Maxim Levitsky <maximlevitsky@gmail.com> | ||
3 | Date: Sat, 17 Mar 2012 20:16:53 +0200 | ||
4 | Subject: [PATCH 016/117] mtd: sm_ftl: fix typo in major number. | ||
5 | |||
6 | commit 452380efbd72d8d41f53ea64c8a6ea1fedc4394d upstream. | ||
7 | |||
8 | major == 0 allocates dynamic major, not major == -1 | ||
9 | |||
10 | Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com> | ||
11 | Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> | ||
12 | Signed-off-by: David Woodhouse <David.Woodhouse@intel.com> | ||
13 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
14 | --- | ||
15 | drivers/mtd/sm_ftl.c | 2 +- | ||
16 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
17 | |||
18 | diff --git a/drivers/mtd/sm_ftl.c b/drivers/mtd/sm_ftl.c | ||
19 | index fddb714..a9ff89ff 100644 | ||
20 | --- a/drivers/mtd/sm_ftl.c | ||
21 | +++ b/drivers/mtd/sm_ftl.c | ||
22 | @@ -1256,7 +1256,7 @@ static void sm_remove_dev(struct mtd_blktrans_dev *dev) | ||
23 | |||
24 | static struct mtd_blktrans_ops sm_ftl_ops = { | ||
25 | .name = "smblk", | ||
26 | - .major = -1, | ||
27 | + .major = 0, | ||
28 | .part_bits = SM_FTL_PARTN_BITS, | ||
29 | .blksize = SM_SECTOR_SIZE, | ||
30 | .getgeo = sm_getgeo, | ||
31 | -- | ||
32 | 1.7.9.5 | ||
33 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0017-hpsa-Fix-problem-with-MSA2xxx-devices.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0017-hpsa-Fix-problem-with-MSA2xxx-devices.patch new file mode 100644 index 00000000..58f4fce6 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0017-hpsa-Fix-problem-with-MSA2xxx-devices.patch | |||
@@ -0,0 +1,77 @@ | |||
1 | From 3b1c9abc52f8145721d64abf54bf65139554f2be Mon Sep 17 00:00:00 2001 | ||
2 | From: "Stephen M. Cameron" <scameron@beardog.cce.hp.com> | ||
3 | Date: Thu, 19 Jan 2012 14:01:04 -0600 | ||
4 | Subject: [PATCH 017/117] hpsa: Fix problem with MSA2xxx devices | ||
5 | |||
6 | commit 9bc3711cbb67ac620bf09b4a147cbab45b2c36c0 upstream. | ||
7 | |||
8 | Upgraded firmware on Smart Array P7xx (and some others) made them show up as | ||
9 | SCSI revision 5 devices and this caused the driver to fail to map MSA2xxx | ||
10 | logical drives to the correct bus/target/lun. A symptom of this would be that | ||
11 | the target ID of the logical drives as presented by the external storage array | ||
12 | is ignored, and all such logical drives are assigned to target zero, | ||
13 | differentiated only by LUN. Some multipath software reportedly does not deal | ||
14 | well with this behavior, failing to recognize different paths to the same | ||
15 | device as such. | ||
16 | |||
17 | Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com> | ||
18 | Signed-off-by: Scott Teel <scott.teel@hp.com> | ||
19 | Signed-off-by: James Bottomley <JBottomley@Parallels.com> | ||
20 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
21 | --- | ||
22 | drivers/scsi/hpsa.c | 34 +++++++++++++++------------------- | ||
23 | 1 file changed, 15 insertions(+), 19 deletions(-) | ||
24 | |||
25 | diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c | ||
26 | index 865d452..dc9dea3 100644 | ||
27 | --- a/drivers/scsi/hpsa.c | ||
28 | +++ b/drivers/scsi/hpsa.c | ||
29 | @@ -1674,30 +1674,26 @@ static void figure_bus_target_lun(struct ctlr_info *h, | ||
30 | |||
31 | if (is_logical_dev_addr_mode(lunaddrbytes)) { | ||
32 | /* logical device */ | ||
33 | - if (unlikely(is_scsi_rev_5(h))) { | ||
34 | - /* p1210m, logical drives lun assignments | ||
35 | - * match SCSI REPORT LUNS data. | ||
36 | + lunid = le32_to_cpu(*((__le32 *) lunaddrbytes)); | ||
37 | + if (is_msa2xxx(h, device)) { | ||
38 | + /* msa2xxx way, put logicals on bus 1 | ||
39 | + * and match target/lun numbers box | ||
40 | + * reports. | ||
41 | */ | ||
42 | - lunid = le32_to_cpu(*((__le32 *) lunaddrbytes)); | ||
43 | - *bus = 0; | ||
44 | - *target = 0; | ||
45 | - *lun = (lunid & 0x3fff) + 1; | ||
46 | + *bus = 1; | ||
47 | + *target = (lunid >> 16) & 0x3fff; | ||
48 | + *lun = lunid & 0x00ff; | ||
49 | } else { | ||
50 | - /* not p1210m... */ | ||
51 | - lunid = le32_to_cpu(*((__le32 *) lunaddrbytes)); | ||
52 | - if (is_msa2xxx(h, device)) { | ||
53 | - /* msa2xxx way, put logicals on bus 1 | ||
54 | - * and match target/lun numbers box | ||
55 | - * reports. | ||
56 | - */ | ||
57 | - *bus = 1; | ||
58 | - *target = (lunid >> 16) & 0x3fff; | ||
59 | - *lun = lunid & 0x00ff; | ||
60 | + if (likely(is_scsi_rev_5(h))) { | ||
61 | + /* All current smart arrays (circa 2011) */ | ||
62 | + *bus = 0; | ||
63 | + *target = 0; | ||
64 | + *lun = (lunid & 0x3fff) + 1; | ||
65 | } else { | ||
66 | - /* Traditional smart array way. */ | ||
67 | + /* Traditional old smart array way. */ | ||
68 | *bus = 0; | ||
69 | - *lun = 0; | ||
70 | *target = lunid & 0x3fff; | ||
71 | + *lun = 0; | ||
72 | } | ||
73 | } | ||
74 | } else { | ||
75 | -- | ||
76 | 1.7.9.5 | ||
77 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0018-SELinux-if-sel_make_bools-errors-don-t-leave-inconsi.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0018-SELinux-if-sel_make_bools-errors-don-t-leave-inconsi.patch new file mode 100644 index 00000000..dc82d8d8 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0018-SELinux-if-sel_make_bools-errors-don-t-leave-inconsi.patch | |||
@@ -0,0 +1,34 @@ | |||
1 | From d5263c321d2e9dcacc4eed438d3dad60c13f95ba Mon Sep 17 00:00:00 2001 | ||
2 | From: Eric Paris <eparis@redhat.com> | ||
3 | Date: Wed, 4 Apr 2012 13:47:11 -0400 | ||
4 | Subject: [PATCH 018/117] SELinux: if sel_make_bools errors don't leave | ||
5 | inconsistent state | ||
6 | |||
7 | commit 154c50ca4eb9ae472f50b6a481213e21ead4457d upstream. | ||
8 | |||
9 | We reset the bool names and values array to NULL, but do not reset the | ||
10 | number of entries in these arrays to 0. If we error out and then get back | ||
11 | into this function we will walk these NULL pointers based on the belief | ||
12 | that they are non-zero length. | ||
13 | |||
14 | Signed-off-by: Eric Paris <eparis@redhat.com> | ||
15 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
16 | --- | ||
17 | security/selinux/selinuxfs.c | 1 + | ||
18 | 1 file changed, 1 insertion(+) | ||
19 | |||
20 | diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c | ||
21 | index f466587..b4f802d 100644 | ||
22 | --- a/security/selinux/selinuxfs.c | ||
23 | +++ b/security/selinux/selinuxfs.c | ||
24 | @@ -1238,6 +1238,7 @@ static int sel_make_bools(void) | ||
25 | kfree(bool_pending_names[i]); | ||
26 | kfree(bool_pending_names); | ||
27 | kfree(bool_pending_values); | ||
28 | + bool_num = 0; | ||
29 | bool_pending_names = NULL; | ||
30 | bool_pending_values = NULL; | ||
31 | |||
32 | -- | ||
33 | 1.7.9.5 | ||
34 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0019-cfg80211-warn-if-db.txt-is-empty-with-CONFIG_CFG8021.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0019-cfg80211-warn-if-db.txt-is-empty-with-CONFIG_CFG8021.patch new file mode 100644 index 00000000..20927ded --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0019-cfg80211-warn-if-db.txt-is-empty-with-CONFIG_CFG8021.patch | |||
@@ -0,0 +1,86 @@ | |||
1 | From d9029a9d61ea9f9f8b153d7967365d66229b3874 Mon Sep 17 00:00:00 2001 | ||
2 | From: "Luis R. Rodriguez" <mcgrof@frijolero.org> | ||
3 | Date: Fri, 23 Mar 2012 07:23:31 -0700 | ||
4 | Subject: [PATCH 019/117] cfg80211: warn if db.txt is empty with | ||
5 | CONFIG_CFG80211_INTERNAL_REGDB | ||
6 | |||
7 | commit 80007efeff0568375b08faf93c7aad65602cb97e upstream. | ||
8 | |||
9 | It has happened twice now where elaborate troubleshooting has | ||
10 | undergone on systems where CONFIG_CFG80211_INTERNAL_REGDB [0] | ||
11 | has been set but yet net/wireless/db.txt was not updated. | ||
12 | |||
13 | Despite the documentation on this it seems system integrators could | ||
14 | use some more help with this, so throw out a kernel warning at boot time | ||
15 | when their database is empty. | ||
16 | |||
17 | This does mean that the error-prone system integrator won't likely | ||
18 | realize the issue until they boot the machine but -- it does not seem | ||
19 | to make sense to enable a build bug breaking random build testing. | ||
20 | |||
21 | [0] http://wireless.kernel.org/en/developers/Regulatory/CRDA#CONFIG_CFG80211_INTERNAL_REGDB | ||
22 | |||
23 | Cc: Stephen Rothwell <sfr@canb.auug.org.au> | ||
24 | Cc: Youngsin Lee <youngsin@qualcomm.com> | ||
25 | Cc: Raja Mani <rmani@qca.qualcomm.com> | ||
26 | Cc: Senthil Kumar Balasubramanian <senthilb@qca.qualcomm.com> | ||
27 | Cc: Vipin Mehta <vipimeht@qca.qualcomm.com> | ||
28 | Cc: yahuan@qca.qualcomm.com | ||
29 | Cc: jjan@qca.qualcomm.com | ||
30 | Cc: vthiagar@qca.qualcomm.com | ||
31 | Cc: henrykim@qualcomm.com | ||
32 | Cc: jouni@qca.qualcomm.com | ||
33 | Cc: athiruve@qca.qualcomm.com | ||
34 | Cc: cjkim@qualcomm.com | ||
35 | Cc: philipk@qca.qualcomm.com | ||
36 | Cc: sunnykim@qualcomm.com | ||
37 | Cc: sskwak@qualcomm.com | ||
38 | Cc: kkim@qualcomm.com | ||
39 | Cc: mattbyun@qualcomm.com | ||
40 | Cc: ryanlee@qualcomm.com | ||
41 | Cc: simbap@qualcomm.com | ||
42 | Cc: krislee@qualcomm.com | ||
43 | Cc: conner@qualcomm.com | ||
44 | Cc: hojinkim@qualcomm.com | ||
45 | Cc: honglee@qualcomm.com | ||
46 | Cc: johnwkim@qualcomm.com | ||
47 | Cc: jinyong@qca.qualcomm.com | ||
48 | Signed-off-by: Luis R. Rodriguez <mcgrof@frijolero.org> | ||
49 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
50 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
51 | --- | ||
52 | net/wireless/reg.c | 10 ++++++++++ | ||
53 | 1 file changed, 10 insertions(+) | ||
54 | |||
55 | diff --git a/net/wireless/reg.c b/net/wireless/reg.c | ||
56 | index 3302c56..c1c99dd 100644 | ||
57 | --- a/net/wireless/reg.c | ||
58 | +++ b/net/wireless/reg.c | ||
59 | @@ -379,7 +379,15 @@ static void reg_regdb_query(const char *alpha2) | ||
60 | |||
61 | schedule_work(®_regdb_work); | ||
62 | } | ||
63 | + | ||
64 | +/* Feel free to add any other sanity checks here */ | ||
65 | +static void reg_regdb_size_check(void) | ||
66 | +{ | ||
67 | + /* We should ideally BUILD_BUG_ON() but then random builds would fail */ | ||
68 | + WARN_ONCE(!reg_regdb_size, "db.txt is empty, you should update it..."); | ||
69 | +} | ||
70 | #else | ||
71 | +static inline void reg_regdb_size_check(void) {} | ||
72 | static inline void reg_regdb_query(const char *alpha2) {} | ||
73 | #endif /* CONFIG_CFG80211_INTERNAL_REGDB */ | ||
74 | |||
75 | @@ -2236,6 +2244,8 @@ int __init regulatory_init(void) | ||
76 | spin_lock_init(®_requests_lock); | ||
77 | spin_lock_init(®_pending_beacons_lock); | ||
78 | |||
79 | + reg_regdb_size_check(); | ||
80 | + | ||
81 | cfg80211_regdomain = cfg80211_world_regdom; | ||
82 | |||
83 | user_alpha2[0] = '9'; | ||
84 | -- | ||
85 | 1.7.9.5 | ||
86 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0020-mpt2sas-Fix-for-panic-happening-because-of-improper-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0020-mpt2sas-Fix-for-panic-happening-because-of-improper-.patch new file mode 100644 index 00000000..d27b465a --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0020-mpt2sas-Fix-for-panic-happening-because-of-improper-.patch | |||
@@ -0,0 +1,60 @@ | |||
1 | From b12bc1d8337657ea79d90aecba397eaee36d10f6 Mon Sep 17 00:00:00 2001 | ||
2 | From: "nagalakshmi.nandigama@lsi.com" <nagalakshmi.nandigama@lsi.com> | ||
3 | Date: Tue, 20 Mar 2012 12:10:01 +0530 | ||
4 | Subject: [PATCH 020/117] mpt2sas: Fix for panic happening because of improper | ||
5 | memory allocation | ||
6 | |||
7 | commit e42fafc25fa86c61824e8d4c5e7582316415d24f upstream. | ||
8 | |||
9 | The ioc->pfacts member in the IOC structure is getting set to zero | ||
10 | following a call to _base_get_ioc_facts due to the memset in that routine. | ||
11 | So if the ioc->pfacts was read after a host reset, there would be a NULL | ||
12 | pointer dereference. The routine _base_get_ioc_facts is called from context | ||
13 | of host reset. The problem in _base_get_ioc_facts is the size of | ||
14 | Mpi2IOCFactsReply is 64, whereas the sizeof "struct mpt2sas_facts" is 60, | ||
15 | so there is a four byte overflow resulting from the memset. | ||
16 | |||
17 | Also, there is memset in _base_get_port_facts using the incorrect structure, | ||
18 | it should be "struct mpt2sas_port_facts" instead of Mpi2PortFactsReply. | ||
19 | |||
20 | Signed-off-by: Nagalakshmi Nandigama <nagalakshmi.nandigama@lsi.com> | ||
21 | Signed-off-by: James Bottomley <JBottomley@Parallels.com> | ||
22 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
23 | --- | ||
24 | drivers/scsi/mpt2sas/mpt2sas_base.c | 6 +++--- | ||
25 | 1 file changed, 3 insertions(+), 3 deletions(-) | ||
26 | |||
27 | diff --git a/drivers/scsi/mpt2sas/mpt2sas_base.c b/drivers/scsi/mpt2sas/mpt2sas_base.c | ||
28 | index b1ddfef..ac336e1 100644 | ||
29 | --- a/drivers/scsi/mpt2sas/mpt2sas_base.c | ||
30 | +++ b/drivers/scsi/mpt2sas/mpt2sas_base.c | ||
31 | @@ -3274,7 +3274,7 @@ _base_get_port_facts(struct MPT2SAS_ADAPTER *ioc, int port, int sleep_flag) | ||
32 | } | ||
33 | |||
34 | pfacts = &ioc->pfacts[port]; | ||
35 | - memset(pfacts, 0, sizeof(Mpi2PortFactsReply_t)); | ||
36 | + memset(pfacts, 0, sizeof(struct mpt2sas_port_facts)); | ||
37 | pfacts->PortNumber = mpi_reply.PortNumber; | ||
38 | pfacts->VP_ID = mpi_reply.VP_ID; | ||
39 | pfacts->VF_ID = mpi_reply.VF_ID; | ||
40 | @@ -3316,7 +3316,7 @@ _base_get_ioc_facts(struct MPT2SAS_ADAPTER *ioc, int sleep_flag) | ||
41 | } | ||
42 | |||
43 | facts = &ioc->facts; | ||
44 | - memset(facts, 0, sizeof(Mpi2IOCFactsReply_t)); | ||
45 | + memset(facts, 0, sizeof(struct mpt2sas_facts)); | ||
46 | facts->MsgVersion = le16_to_cpu(mpi_reply.MsgVersion); | ||
47 | facts->HeaderVersion = le16_to_cpu(mpi_reply.HeaderVersion); | ||
48 | facts->VP_ID = mpi_reply.VP_ID; | ||
49 | @@ -4193,7 +4193,7 @@ mpt2sas_base_attach(struct MPT2SAS_ADAPTER *ioc) | ||
50 | goto out_free_resources; | ||
51 | |||
52 | ioc->pfacts = kcalloc(ioc->facts.NumberOfPorts, | ||
53 | - sizeof(Mpi2PortFactsReply_t), GFP_KERNEL); | ||
54 | + sizeof(struct mpt2sas_port_facts), GFP_KERNEL); | ||
55 | if (!ioc->pfacts) { | ||
56 | r = -ENOMEM; | ||
57 | goto out_free_resources; | ||
58 | -- | ||
59 | 1.7.9.5 | ||
60 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0021-isdn-gigaset-ratelimit-CAPI-message-dumps.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0021-isdn-gigaset-ratelimit-CAPI-message-dumps.patch new file mode 100644 index 00000000..ba583934 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0021-isdn-gigaset-ratelimit-CAPI-message-dumps.patch | |||
@@ -0,0 +1,87 @@ | |||
1 | From cb510e3381f2dda5ad0cdf3519e6eee50ee2081e Mon Sep 17 00:00:00 2001 | ||
2 | From: Tilman Schmidt <tilman@imap.cc> | ||
3 | Date: Wed, 25 Apr 2012 13:02:19 +0000 | ||
4 | Subject: [PATCH 021/117] isdn/gigaset: ratelimit CAPI message dumps | ||
5 | |||
6 | commit 8e618aad5348b6e6c5a90e8d97ea643197963b20 upstream. | ||
7 | |||
8 | Introduce a global ratelimit for CAPI message dumps to protect | ||
9 | against possible log flood. | ||
10 | Drop the ratelimit for ignored messages which is now covered by the | ||
11 | global one. | ||
12 | |||
13 | Signed-off-by: Tilman Schmidt <tilman@imap.cc> | ||
14 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
15 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
16 | --- | ||
17 | drivers/isdn/gigaset/capi.c | 22 +++++++++------------- | ||
18 | 1 file changed, 9 insertions(+), 13 deletions(-) | ||
19 | |||
20 | diff --git a/drivers/isdn/gigaset/capi.c b/drivers/isdn/gigaset/capi.c | ||
21 | index 6d5ceee..5b80ef7 100644 | ||
22 | --- a/drivers/isdn/gigaset/capi.c | ||
23 | +++ b/drivers/isdn/gigaset/capi.c | ||
24 | @@ -14,6 +14,7 @@ | ||
25 | #include "gigaset.h" | ||
26 | #include <linux/proc_fs.h> | ||
27 | #include <linux/seq_file.h> | ||
28 | +#include <linux/ratelimit.h> | ||
29 | #include <linux/isdn/capilli.h> | ||
30 | #include <linux/isdn/capicmd.h> | ||
31 | #include <linux/isdn/capiutil.h> | ||
32 | @@ -223,10 +224,14 @@ get_appl(struct gigaset_capi_ctr *iif, u16 appl) | ||
33 | static inline void dump_cmsg(enum debuglevel level, const char *tag, _cmsg *p) | ||
34 | { | ||
35 | #ifdef CONFIG_GIGASET_DEBUG | ||
36 | + /* dump at most 20 messages in 20 secs */ | ||
37 | + static DEFINE_RATELIMIT_STATE(msg_dump_ratelimit, 20 * HZ, 20); | ||
38 | _cdebbuf *cdb; | ||
39 | |||
40 | if (!(gigaset_debuglevel & level)) | ||
41 | return; | ||
42 | + if (!___ratelimit(&msg_dump_ratelimit, tag)) | ||
43 | + return; | ||
44 | |||
45 | cdb = capi_cmsg2str(p); | ||
46 | if (cdb) { | ||
47 | @@ -2059,12 +2064,6 @@ static void do_reset_b3_req(struct gigaset_capi_ctr *iif, | ||
48 | } | ||
49 | |||
50 | /* | ||
51 | - * dump unsupported/ignored messages at most twice per minute, | ||
52 | - * some apps send those very frequently | ||
53 | - */ | ||
54 | -static unsigned long ignored_msg_dump_time; | ||
55 | - | ||
56 | -/* | ||
57 | * unsupported CAPI message handler | ||
58 | */ | ||
59 | static void do_unsupported(struct gigaset_capi_ctr *iif, | ||
60 | @@ -2073,8 +2072,7 @@ static void do_unsupported(struct gigaset_capi_ctr *iif, | ||
61 | { | ||
62 | /* decode message */ | ||
63 | capi_message2cmsg(&iif->acmsg, skb->data); | ||
64 | - if (printk_timed_ratelimit(&ignored_msg_dump_time, 30 * 1000)) | ||
65 | - dump_cmsg(DEBUG_CMD, __func__, &iif->acmsg); | ||
66 | + dump_cmsg(DEBUG_CMD, __func__, &iif->acmsg); | ||
67 | send_conf(iif, ap, skb, CapiMessageNotSupportedInCurrentState); | ||
68 | } | ||
69 | |||
70 | @@ -2085,11 +2083,9 @@ static void do_nothing(struct gigaset_capi_ctr *iif, | ||
71 | struct gigaset_capi_appl *ap, | ||
72 | struct sk_buff *skb) | ||
73 | { | ||
74 | - if (printk_timed_ratelimit(&ignored_msg_dump_time, 30 * 1000)) { | ||
75 | - /* decode message */ | ||
76 | - capi_message2cmsg(&iif->acmsg, skb->data); | ||
77 | - dump_cmsg(DEBUG_CMD, __func__, &iif->acmsg); | ||
78 | - } | ||
79 | + /* decode message */ | ||
80 | + capi_message2cmsg(&iif->acmsg, skb->data); | ||
81 | + dump_cmsg(DEBUG_CMD, __func__, &iif->acmsg); | ||
82 | dev_kfree_skb_any(skb); | ||
83 | } | ||
84 | |||
85 | -- | ||
86 | 1.7.9.5 | ||
87 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0022-isdn-gigaset-fix-CAPI-disconnect-B3-handling.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0022-isdn-gigaset-fix-CAPI-disconnect-B3-handling.patch new file mode 100644 index 00000000..92a5406b --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0022-isdn-gigaset-fix-CAPI-disconnect-B3-handling.patch | |||
@@ -0,0 +1,46 @@ | |||
1 | From 49aed427d03f5bc84f690900a4a13c52b4c0916c Mon Sep 17 00:00:00 2001 | ||
2 | From: Tilman Schmidt <tilman@imap.cc> | ||
3 | Date: Wed, 25 Apr 2012 13:02:20 +0000 | ||
4 | Subject: [PATCH 022/117] isdn/gigaset: fix CAPI disconnect B3 handling | ||
5 | |||
6 | commit 62a1cfe052346b96a552b6a9178d412c709711bb upstream. | ||
7 | |||
8 | If DISCONNECT_B3_IND was synthesized because of a DISCONNECT_REQ | ||
9 | with existing logical connections, the connection state wasn't | ||
10 | updated accordingly. Also the emitted DISCONNECT_B3_IND message | ||
11 | wasn't included in the debug log as requested. | ||
12 | This patch fixes both of these issues. | ||
13 | |||
14 | Signed-off-by: Tilman Schmidt <tilman@imap.cc> | ||
15 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
16 | [bwh: Backported to 3.2: adjust context] | ||
17 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
18 | --- | ||
19 | drivers/isdn/gigaset/capi.c | 4 ++++ | ||
20 | 1 file changed, 4 insertions(+) | ||
21 | |||
22 | diff --git a/drivers/isdn/gigaset/capi.c b/drivers/isdn/gigaset/capi.c | ||
23 | index 5b80ef7..fd17bb3 100644 | ||
24 | --- a/drivers/isdn/gigaset/capi.c | ||
25 | +++ b/drivers/isdn/gigaset/capi.c | ||
26 | @@ -1887,6 +1887,9 @@ static void do_disconnect_req(struct gigaset_capi_ctr *iif, | ||
27 | |||
28 | /* check for active logical connection */ | ||
29 | if (bcs->apconnstate >= APCONN_ACTIVE) { | ||
30 | + /* clear it */ | ||
31 | + bcs->apconnstate = APCONN_SETUP; | ||
32 | + | ||
33 | /* | ||
34 | * emit DISCONNECT_B3_IND with cause 0x3301 | ||
35 | * use separate cmsg structure, as the content of iif->acmsg | ||
36 | @@ -1911,6 +1914,7 @@ static void do_disconnect_req(struct gigaset_capi_ctr *iif, | ||
37 | } | ||
38 | capi_cmsg2message(b3cmsg, | ||
39 | __skb_put(b3skb, CAPI_DISCONNECT_B3_IND_BASELEN)); | ||
40 | + dump_cmsg(DEBUG_CMD, __func__, b3cmsg); | ||
41 | kfree(b3cmsg); | ||
42 | capi_ctr_handle_message(&iif->ctr, ap->id, b3skb); | ||
43 | } | ||
44 | -- | ||
45 | 1.7.9.5 | ||
46 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0023-isdn-gigaset-improve-error-handling-querying-firmwar.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0023-isdn-gigaset-improve-error-handling-querying-firmwar.patch new file mode 100644 index 00000000..efbdbbb6 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0023-isdn-gigaset-improve-error-handling-querying-firmwar.patch | |||
@@ -0,0 +1,47 @@ | |||
1 | From acee45e91a831a741676284dc84513b074705805 Mon Sep 17 00:00:00 2001 | ||
2 | From: Tilman Schmidt <tilman@imap.cc> | ||
3 | Date: Wed, 25 Apr 2012 13:02:20 +0000 | ||
4 | Subject: [PATCH 023/117] isdn/gigaset: improve error handling querying | ||
5 | firmware version | ||
6 | |||
7 | commit e055d03dc088a990fe5ea24a2d64033a168da23c upstream. | ||
8 | |||
9 | An out-of-place "OK" response to the "AT+GMR" (get firmware version) | ||
10 | command turns out to be, more often than not, a delayed response to | ||
11 | a previous command rather than an actual error, so continue waiting | ||
12 | for the version number in that case. | ||
13 | |||
14 | Signed-off-by: Tilman Schmidt <tilman@imap.cc> | ||
15 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
16 | [bwh: Backported to 3.2: adjust indentation] | ||
17 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
18 | --- | ||
19 | drivers/isdn/gigaset/ev-layer.c | 4 +++- | ||
20 | 1 file changed, 3 insertions(+), 1 deletion(-) | ||
21 | |||
22 | diff --git a/drivers/isdn/gigaset/ev-layer.c b/drivers/isdn/gigaset/ev-layer.c | ||
23 | index 6d12623..e95fac0 100644 | ||
24 | --- a/drivers/isdn/gigaset/ev-layer.c | ||
25 | +++ b/drivers/isdn/gigaset/ev-layer.c | ||
26 | @@ -190,6 +190,7 @@ struct reply_t gigaset_tab_nocid[] = | ||
27 | ACT_INIT} }, | ||
28 | {RSP_OK, 121, 121, -1, 0, 0, {ACT_GOTVER, | ||
29 | ACT_INIT} }, | ||
30 | +{RSP_NONE, 121, 121, -1, 120, 0, {ACT_GETSTRING} }, | ||
31 | |||
32 | /* leave dle mode */ | ||
33 | {RSP_INIT, 0, 0, SEQ_DLE0, 201, 5, {0}, "^SDLE=0\r"}, | ||
34 | @@ -1314,8 +1315,9 @@ static void do_action(int action, struct cardstate *cs, | ||
35 | s = ev->ptr; | ||
36 | |||
37 | if (!strcmp(s, "OK")) { | ||
38 | + /* OK without version string: assume old response */ | ||
39 | *p_genresp = 1; | ||
40 | - *p_resp_code = RSP_ERROR; | ||
41 | + *p_resp_code = RSP_NONE; | ||
42 | break; | ||
43 | } | ||
44 | |||
45 | -- | ||
46 | 1.7.9.5 | ||
47 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0024-KEYS-Use-the-compat-keyctl-syscall-wrapper-on-Sparc6.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0024-KEYS-Use-the-compat-keyctl-syscall-wrapper-on-Sparc6.patch new file mode 100644 index 00000000..52b1d96e --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0024-KEYS-Use-the-compat-keyctl-syscall-wrapper-on-Sparc6.patch | |||
@@ -0,0 +1,60 @@ | |||
1 | From ab5b15d0550f35ed49bb445fe04092d8b6fac542 Mon Sep 17 00:00:00 2001 | ||
2 | From: David Howells <dhowells@redhat.com> | ||
3 | Date: Fri, 11 May 2012 10:56:56 +0100 | ||
4 | Subject: [PATCH 024/117] KEYS: Use the compat keyctl() syscall wrapper on | ||
5 | Sparc64 for Sparc32 compat | ||
6 | |||
7 | commit 45de6767dc51358a188f75dc4ad9dfddb7fb9480 upstream. | ||
8 | |||
9 | Use the 32-bit compat keyctl() syscall wrapper on Sparc64 for Sparc32 binary | ||
10 | compatibility. | ||
11 | |||
12 | Without this, keyctl(KEYCTL_INSTANTIATE_IOV) is liable to malfunction as it | ||
13 | uses an iovec array read from userspace - though the kernel should survive this | ||
14 | as it checks pointers and sizes anyway. | ||
15 | |||
16 | I think all the other keyctl() function should just work, provided (a) the top | ||
17 | 32-bits of each 64-bit argument register are cleared prior to invoking the | ||
18 | syscall routine, and the 32-bit address space is right at the 0-end of the | ||
19 | 64-bit address space. Most of the arguments are 32-bit anyway, and so for | ||
20 | those clearing is not required. | ||
21 | |||
22 | Signed-off-by: David Howells <dhowells@redhat.com | ||
23 | cc: "David S. Miller" <davem@davemloft.net> | ||
24 | cc: sparclinux@vger.kernel.org | ||
25 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
26 | --- | ||
27 | arch/sparc/Kconfig | 3 +++ | ||
28 | arch/sparc/kernel/systbls_64.S | 2 +- | ||
29 | 2 files changed, 4 insertions(+), 1 deletion(-) | ||
30 | |||
31 | diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig | ||
32 | index f92602e..f210d51 100644 | ||
33 | --- a/arch/sparc/Kconfig | ||
34 | +++ b/arch/sparc/Kconfig | ||
35 | @@ -583,6 +583,9 @@ config SYSVIPC_COMPAT | ||
36 | depends on COMPAT && SYSVIPC | ||
37 | default y | ||
38 | |||
39 | +config KEYS_COMPAT | ||
40 | + def_bool y if COMPAT && KEYS | ||
41 | + | ||
42 | endmenu | ||
43 | |||
44 | source "net/Kconfig" | ||
45 | diff --git a/arch/sparc/kernel/systbls_64.S b/arch/sparc/kernel/systbls_64.S | ||
46 | index db86b1a..3a58e0d 100644 | ||
47 | --- a/arch/sparc/kernel/systbls_64.S | ||
48 | +++ b/arch/sparc/kernel/systbls_64.S | ||
49 | @@ -74,7 +74,7 @@ sys_call_table32: | ||
50 | .word sys_timer_delete, compat_sys_timer_create, sys_ni_syscall, compat_sys_io_setup, sys_io_destroy | ||
51 | /*270*/ .word sys32_io_submit, sys_io_cancel, compat_sys_io_getevents, sys32_mq_open, sys_mq_unlink | ||
52 | .word compat_sys_mq_timedsend, compat_sys_mq_timedreceive, compat_sys_mq_notify, compat_sys_mq_getsetattr, compat_sys_waitid | ||
53 | -/*280*/ .word sys32_tee, sys_add_key, sys_request_key, sys_keyctl, compat_sys_openat | ||
54 | +/*280*/ .word sys32_tee, sys_add_key, sys_request_key, compat_sys_keyctl, compat_sys_openat | ||
55 | .word sys_mkdirat, sys_mknodat, sys_fchownat, compat_sys_futimesat, compat_sys_fstatat64 | ||
56 | /*290*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat | ||
57 | .word sys_fchmodat, sys_faccessat, compat_sys_pselect6, compat_sys_ppoll, sys_unshare | ||
58 | -- | ||
59 | 1.7.9.5 | ||
60 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0025-IB-core-Fix-mismatch-between-locked-and-pinned-pages.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0025-IB-core-Fix-mismatch-between-locked-and-pinned-pages.patch new file mode 100644 index 00000000..fe3c1e72 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0025-IB-core-Fix-mismatch-between-locked-and-pinned-pages.patch | |||
@@ -0,0 +1,38 @@ | |||
1 | From a107ab4ce96a6243eca41ca139acc033a8be253b Mon Sep 17 00:00:00 2001 | ||
2 | From: Yishai Hadas <yishaih@mellanox.com> | ||
3 | Date: Thu, 10 May 2012 23:28:05 +0300 | ||
4 | Subject: [PATCH 025/117] IB/core: Fix mismatch between locked and pinned | ||
5 | pages | ||
6 | |||
7 | commit c4870eb874ac16dccef40e1bc7a002c7e9156adc upstream. | ||
8 | |||
9 | Commit bc3e53f682d9 ("mm: distinguish between mlocked and pinned | ||
10 | pages") introduced a separate counter for pinned pages and used it in | ||
11 | the IB stack. However, in ib_umem_get() the pinned counter is | ||
12 | incremented, but ib_umem_release() wrongly decrements the locked | ||
13 | counter. Fix this. | ||
14 | |||
15 | Signed-off-by: Yishai Hadas <yishaih@mellanox.com> | ||
16 | Reviewed-by: Christoph Lameter <cl@linux.com> | ||
17 | Signed-off-by: Roland Dreier <roland@purestorage.com> | ||
18 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
19 | --- | ||
20 | drivers/infiniband/core/umem.c | 2 +- | ||
21 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
22 | |||
23 | diff --git a/drivers/infiniband/core/umem.c b/drivers/infiniband/core/umem.c | ||
24 | index 71f0c0f..a841123 100644 | ||
25 | --- a/drivers/infiniband/core/umem.c | ||
26 | +++ b/drivers/infiniband/core/umem.c | ||
27 | @@ -269,7 +269,7 @@ void ib_umem_release(struct ib_umem *umem) | ||
28 | } else | ||
29 | down_write(&mm->mmap_sem); | ||
30 | |||
31 | - current->mm->locked_vm -= diff; | ||
32 | + current->mm->pinned_vm -= diff; | ||
33 | up_write(&mm->mmap_sem); | ||
34 | mmput(mm); | ||
35 | kfree(umem); | ||
36 | -- | ||
37 | 1.7.9.5 | ||
38 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0026-regulator-core-Release-regulator-regulator-supplies-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0026-regulator-core-Release-regulator-regulator-supplies-.patch new file mode 100644 index 00000000..027fb88b --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0026-regulator-core-Release-regulator-regulator-supplies-.patch | |||
@@ -0,0 +1,34 @@ | |||
1 | From 675478b722ec5e21b9e1db453e3c59ced85b2008 Mon Sep 17 00:00:00 2001 | ||
2 | From: Mark Brown <broonie@opensource.wolfsonmicro.com> | ||
3 | Date: Sun, 13 May 2012 18:35:56 +0100 | ||
4 | Subject: [PATCH 026/117] regulator: core: Release regulator-regulator | ||
5 | supplies on error | ||
6 | |||
7 | commit e81dba85c6388dfabcb76cbc2b8bd02836a53ae5 upstream. | ||
8 | |||
9 | If we fail while registering a regulator make sure we release the supply | ||
10 | for the regulator if there is one. | ||
11 | |||
12 | Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> | ||
13 | Acked-by: Liam Girdwood <lrg@ti.com> | ||
14 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
15 | --- | ||
16 | drivers/regulator/core.c | 2 ++ | ||
17 | 1 file changed, 2 insertions(+) | ||
18 | |||
19 | diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c | ||
20 | index 938398f..6ec610c 100644 | ||
21 | --- a/drivers/regulator/core.c | ||
22 | +++ b/drivers/regulator/core.c | ||
23 | @@ -2765,6 +2765,8 @@ unset_supplies: | ||
24 | unset_regulator_supplies(rdev); | ||
25 | |||
26 | scrub: | ||
27 | + if (rdev->supply) | ||
28 | + regulator_put(rdev->supply); | ||
29 | kfree(rdev->constraints); | ||
30 | device_unregister(&rdev->dev); | ||
31 | /* device core frees rdev */ | ||
32 | -- | ||
33 | 1.7.9.5 | ||
34 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0027-iommu-Fix-off-by-one-in-dmar_get_fault_reason.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0027-iommu-Fix-off-by-one-in-dmar_get_fault_reason.patch new file mode 100644 index 00000000..4ab581b1 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0027-iommu-Fix-off-by-one-in-dmar_get_fault_reason.patch | |||
@@ -0,0 +1,41 @@ | |||
1 | From 3dd0f718e41c8a6e580d3c11f8153ffd7ddeacde Mon Sep 17 00:00:00 2001 | ||
2 | From: Dan Carpenter <dan.carpenter@oracle.com> | ||
3 | Date: Sun, 13 May 2012 20:09:38 +0300 | ||
4 | Subject: [PATCH 027/117] iommu: Fix off by one in dmar_get_fault_reason() | ||
5 | |||
6 | commit fefe1ed1398b81e3fadc92d11d91162d343c8836 upstream. | ||
7 | |||
8 | fault_reason - 0x20 == ARRAY_SIZE(irq_remap_fault_reasons) is | ||
9 | one past the end of the array. | ||
10 | |||
11 | Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> | ||
12 | Cc: Joerg Roedel <joerg.roedel@amd.com> | ||
13 | Cc: Youquan Song <youquan.song@intel.com> | ||
14 | Cc: walter harms <wharms@bfs.de> | ||
15 | Cc: Suresh Siddha <suresh.b.siddha@intel.com> | ||
16 | Link: http://lkml.kernel.org/r/20120513170938.GA4280@elgon.mountain | ||
17 | Signed-off-by: Ingo Molnar <mingo@kernel.org> | ||
18 | [bwh: Backported to 3.2: s/irq_remap_fault_reasons/intr_remap_fault_reasons/] | ||
19 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
20 | --- | ||
21 | drivers/iommu/dmar.c | 4 ++-- | ||
22 | 1 file changed, 2 insertions(+), 2 deletions(-) | ||
23 | |||
24 | diff --git a/drivers/iommu/dmar.c b/drivers/iommu/dmar.c | ||
25 | index 35c1e17..97b2e21 100644 | ||
26 | --- a/drivers/iommu/dmar.c | ||
27 | +++ b/drivers/iommu/dmar.c | ||
28 | @@ -1056,8 +1056,8 @@ static const char *intr_remap_fault_reasons[] = | ||
29 | |||
30 | const char *dmar_get_fault_reason(u8 fault_reason, int *fault_type) | ||
31 | { | ||
32 | - if (fault_reason >= 0x20 && (fault_reason <= 0x20 + | ||
33 | - ARRAY_SIZE(intr_remap_fault_reasons))) { | ||
34 | + if (fault_reason >= 0x20 && (fault_reason - 0x20 < | ||
35 | + ARRAY_SIZE(intr_remap_fault_reasons))) { | ||
36 | *fault_type = INTR_REMAP; | ||
37 | return intr_remap_fault_reasons[fault_reason - 0x20]; | ||
38 | } else if (fault_reason < ARRAY_SIZE(dma_remap_fault_reasons)) { | ||
39 | -- | ||
40 | 1.7.9.5 | ||
41 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0028-RDMA-cxgb4-Always-wake-up-waiters-in-c4iw_peer_abort.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0028-RDMA-cxgb4-Always-wake-up-waiters-in-c4iw_peer_abort.patch new file mode 100644 index 00000000..9fde99ca --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0028-RDMA-cxgb4-Always-wake-up-waiters-in-c4iw_peer_abort.patch | |||
@@ -0,0 +1,38 @@ | |||
1 | From e8cefa61ecf62e7ec98658843627df00696699d5 Mon Sep 17 00:00:00 2001 | ||
2 | From: Steve Wise <swise@opengridcomputing.com> | ||
3 | Date: Fri, 27 Apr 2012 09:59:16 -0500 | ||
4 | Subject: [PATCH 028/117] RDMA/cxgb4: Always wake up waiters in | ||
5 | c4iw_peer_abort_intr() | ||
6 | |||
7 | commit 0f1dcfae6bc5563424346ad3a03282b8235a4c33 upstream. | ||
8 | |||
9 | This fixes a race where an ingress abort fails to wake up the thread | ||
10 | blocked in rdma_init() causing the app to hang. | ||
11 | |||
12 | Signed-off-by: Steve Wise <swise@opengridcomputing.com> | ||
13 | Signed-off-by: Roland Dreier <roland@purestorage.com> | ||
14 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
15 | --- | ||
16 | drivers/infiniband/hw/cxgb4/cm.c | 5 +---- | ||
17 | 1 file changed, 1 insertion(+), 4 deletions(-) | ||
18 | |||
19 | diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c | ||
20 | index 0747004..151334c 100644 | ||
21 | --- a/drivers/infiniband/hw/cxgb4/cm.c | ||
22 | +++ b/drivers/infiniband/hw/cxgb4/cm.c | ||
23 | @@ -2725,11 +2725,8 @@ static int peer_abort_intr(struct c4iw_dev *dev, struct sk_buff *skb) | ||
24 | |||
25 | /* | ||
26 | * Wake up any threads in rdma_init() or rdma_fini(). | ||
27 | - * However, this is not needed if com state is just | ||
28 | - * MPA_REQ_SENT | ||
29 | */ | ||
30 | - if (ep->com.state != MPA_REQ_SENT) | ||
31 | - c4iw_wake_up(&ep->com.wr_wait, -ECONNRESET); | ||
32 | + c4iw_wake_up(&ep->com.wr_wait, -ECONNRESET); | ||
33 | sched(dev, skb); | ||
34 | return 0; | ||
35 | } | ||
36 | -- | ||
37 | 1.7.9.5 | ||
38 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0029-RDMA-cxgb4-Drop-peer_abort-when-no-endpoint-found.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0029-RDMA-cxgb4-Drop-peer_abort-when-no-endpoint-found.patch new file mode 100644 index 00000000..99be4e3c --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0029-RDMA-cxgb4-Drop-peer_abort-when-no-endpoint-found.patch | |||
@@ -0,0 +1,37 @@ | |||
1 | From 6ccdd0ede34681b1bdda91a5735e700274db9e5c Mon Sep 17 00:00:00 2001 | ||
2 | From: Steve Wise <swise@opengridcomputing.com> | ||
3 | Date: Mon, 30 Apr 2012 15:31:29 -0500 | ||
4 | Subject: [PATCH 029/117] RDMA/cxgb4: Drop peer_abort when no endpoint found | ||
5 | |||
6 | commit 14b9222808bb8bfefc71f72bc0dbdcf3b2f0140f upstream. | ||
7 | |||
8 | Log a warning and drop the abort message. Otherwise we will do a | ||
9 | bogus wake_up() and crash. | ||
10 | |||
11 | Signed-off-by: Steve Wise <swise@opengridcomputing.com> | ||
12 | Signed-off-by: Roland Dreier <roland@purestorage.com> | ||
13 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
14 | --- | ||
15 | drivers/infiniband/hw/cxgb4/cm.c | 6 ++++++ | ||
16 | 1 file changed, 6 insertions(+) | ||
17 | |||
18 | diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c | ||
19 | index 151334c..2e6a538 100644 | ||
20 | --- a/drivers/infiniband/hw/cxgb4/cm.c | ||
21 | +++ b/drivers/infiniband/hw/cxgb4/cm.c | ||
22 | @@ -2714,6 +2714,12 @@ static int peer_abort_intr(struct c4iw_dev *dev, struct sk_buff *skb) | ||
23 | unsigned int tid = GET_TID(req); | ||
24 | |||
25 | ep = lookup_tid(t, tid); | ||
26 | + if (!ep) { | ||
27 | + printk(KERN_WARNING MOD | ||
28 | + "Abort on non-existent endpoint, tid %d\n", tid); | ||
29 | + kfree_skb(skb); | ||
30 | + return 0; | ||
31 | + } | ||
32 | if (is_neg_adv_abort(req->status)) { | ||
33 | PDBG("%s neg_adv_abort ep %p tid %u\n", __func__, ep, | ||
34 | ep->hwtid); | ||
35 | -- | ||
36 | 1.7.9.5 | ||
37 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0030-s390-pfault-fix-task-state-race.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0030-s390-pfault-fix-task-state-race.patch new file mode 100644 index 00000000..bd7759f3 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0030-s390-pfault-fix-task-state-race.patch | |||
@@ -0,0 +1,82 @@ | |||
1 | From f292f8180fb1ab073d5e88859f3d05608fa1fbe7 Mon Sep 17 00:00:00 2001 | ||
2 | From: Heiko Carstens <heiko.carstens@de.ibm.com> | ||
3 | Date: Wed, 9 May 2012 09:37:30 +0200 | ||
4 | Subject: [PATCH 030/117] s390/pfault: fix task state race | ||
5 | |||
6 | commit d5e50a51ccbda36b379aba9d1131a852eb908dda upstream. | ||
7 | |||
8 | When setting the current task state to TASK_UNINTERRUPTIBLE this can | ||
9 | race with a different cpu. The other cpu could set the task state after | ||
10 | it inspected it (while it was still TASK_RUNNING) to TASK_RUNNING which | ||
11 | would change the state from TASK_UNINTERRUPTIBLE to TASK_RUNNING again. | ||
12 | |||
13 | This race was always present in the pfault interrupt code but didn't | ||
14 | cause anything harmful before commit f2db2e6c "[S390] pfault: cpu hotplug | ||
15 | vs missing completion interrupts" which relied on the fact that after | ||
16 | setting the task state to TASK_UNINTERRUPTIBLE the task would really | ||
17 | sleep. | ||
18 | Since this is not necessarily the case the result may be a list corruption | ||
19 | of the pfault_list or, as observed, a use-after-free bug while trying to | ||
20 | access the task_struct of a task which terminated itself already. | ||
21 | |||
22 | To fix this, we need to get a reference of the affected task when receiving | ||
23 | the initial pfault interrupt and add special handling if we receive yet | ||
24 | another initial pfault interrupt when the task is already enqueued in the | ||
25 | pfault list. | ||
26 | |||
27 | Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> | ||
28 | Reviewed-by: Martin Schwidefsky <schwidefsky@de.ibm.com> | ||
29 | Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> | ||
30 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
31 | --- | ||
32 | arch/s390/mm/fault.c | 14 ++++++++++++-- | ||
33 | 1 file changed, 12 insertions(+), 2 deletions(-) | ||
34 | |||
35 | diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c | ||
36 | index c7f0fbc..b28aaa4 100644 | ||
37 | --- a/arch/s390/mm/fault.c | ||
38 | +++ b/arch/s390/mm/fault.c | ||
39 | @@ -583,6 +583,7 @@ static void pfault_interrupt(unsigned int ext_int_code, | ||
40 | tsk->thread.pfault_wait = 0; | ||
41 | list_del(&tsk->thread.list); | ||
42 | wake_up_process(tsk); | ||
43 | + put_task_struct(tsk); | ||
44 | } else { | ||
45 | /* Completion interrupt was faster than initial | ||
46 | * interrupt. Set pfault_wait to -1 so the initial | ||
47 | @@ -597,14 +598,22 @@ static void pfault_interrupt(unsigned int ext_int_code, | ||
48 | put_task_struct(tsk); | ||
49 | } else { | ||
50 | /* signal bit not set -> a real page is missing. */ | ||
51 | - if (tsk->thread.pfault_wait == -1) { | ||
52 | + if (tsk->thread.pfault_wait == 1) { | ||
53 | + /* Already on the list with a reference: put to sleep */ | ||
54 | + set_task_state(tsk, TASK_UNINTERRUPTIBLE); | ||
55 | + set_tsk_need_resched(tsk); | ||
56 | + } else if (tsk->thread.pfault_wait == -1) { | ||
57 | /* Completion interrupt was faster than the initial | ||
58 | * interrupt (pfault_wait == -1). Set pfault_wait | ||
59 | * back to zero and exit. */ | ||
60 | tsk->thread.pfault_wait = 0; | ||
61 | } else { | ||
62 | /* Initial interrupt arrived before completion | ||
63 | - * interrupt. Let the task sleep. */ | ||
64 | + * interrupt. Let the task sleep. | ||
65 | + * An extra task reference is needed since a different | ||
66 | + * cpu may set the task state to TASK_RUNNING again | ||
67 | + * before the scheduler is reached. */ | ||
68 | + get_task_struct(tsk); | ||
69 | tsk->thread.pfault_wait = 1; | ||
70 | list_add(&tsk->thread.list, &pfault_list); | ||
71 | set_task_state(tsk, TASK_UNINTERRUPTIBLE); | ||
72 | @@ -629,6 +638,7 @@ static int __cpuinit pfault_cpu_notify(struct notifier_block *self, | ||
73 | list_del(&thread->list); | ||
74 | tsk = container_of(thread, struct task_struct, thread); | ||
75 | wake_up_process(tsk); | ||
76 | + put_task_struct(tsk); | ||
77 | } | ||
78 | spin_unlock_irq(&pfault_lock); | ||
79 | break; | ||
80 | -- | ||
81 | 1.7.9.5 | ||
82 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0031-isci-fix-oem-parameter-validation-on-single-controll.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0031-isci-fix-oem-parameter-validation-on-single-controll.patch new file mode 100644 index 00000000..000d1dca --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0031-isci-fix-oem-parameter-validation-on-single-controll.patch | |||
@@ -0,0 +1,46 @@ | |||
1 | From 51945640120dea3c9b3a0207bc864138c6c1c8a8 Mon Sep 17 00:00:00 2001 | ||
2 | From: Dan Williams <dan.j.williams@intel.com> | ||
3 | Date: Mon, 30 Apr 2012 11:57:44 -0700 | ||
4 | Subject: [PATCH 031/117] isci: fix oem parameter validation on single | ||
5 | controller skus | ||
6 | |||
7 | commit fc25f79af321c01a739150ba2c09435cf977a63d upstream. | ||
8 | |||
9 | OEM parameters [1] are parsed from the platform option-rom / efi | ||
10 | driver. By default the driver was validating the parameters for the | ||
11 | dual-controller case, but in single-controller case only the first set | ||
12 | of parameters may be valid. | ||
13 | |||
14 | Limit the validation to the number of actual controllers detected | ||
15 | otherwise the driver may fail to parse the valid parameters leading to | ||
16 | driver-load or runtime failures. | ||
17 | |||
18 | [1] the platform specific set of phy address, configuration,and analog | ||
19 | tuning values | ||
20 | |||
21 | [stable v3.0+] | ||
22 | Reported-by: Dave Jiang <dave.jiang@intel.com> | ||
23 | Tested-by: Dave Jiang <dave.jiang@intel.com> | ||
24 | Signed-off-by: Dan Williams <dan.j.williams@intel.com> | ||
25 | [bwh: Backported to 3.2: adjust context] | ||
26 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
27 | --- | ||
28 | drivers/scsi/isci/init.c | 2 +- | ||
29 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
30 | |||
31 | diff --git a/drivers/scsi/isci/init.c b/drivers/scsi/isci/init.c | ||
32 | index a97edab..83d08b6 100644 | ||
33 | --- a/drivers/scsi/isci/init.c | ||
34 | +++ b/drivers/scsi/isci/init.c | ||
35 | @@ -465,7 +465,7 @@ static int __devinit isci_pci_probe(struct pci_dev *pdev, const struct pci_devic | ||
36 | if (!orom) | ||
37 | orom = isci_request_oprom(pdev); | ||
38 | |||
39 | - for (i = 0; orom && i < ARRAY_SIZE(orom->ctrl); i++) { | ||
40 | + for (i = 0; orom && i < num_controllers(pdev); i++) { | ||
41 | if (sci_oem_parameters_validate(&orom->ctrl[i])) { | ||
42 | dev_warn(&pdev->dev, | ||
43 | "[%d]: invalid oem parameters detected, falling back to firmware\n", i); | ||
44 | -- | ||
45 | 1.7.9.5 | ||
46 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0032-Fix-blocking-allocations-called-very-early-during-bo.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0032-Fix-blocking-allocations-called-very-early-during-bo.patch new file mode 100644 index 00000000..231e4307 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0032-Fix-blocking-allocations-called-very-early-during-bo.patch | |||
@@ -0,0 +1,69 @@ | |||
1 | From 193433aeaf9380a822cd4bf7f5777e70b2e86550 Mon Sep 17 00:00:00 2001 | ||
2 | From: Linus Torvalds <torvalds@linux-foundation.org> | ||
3 | Date: Mon, 21 May 2012 12:52:42 -0700 | ||
4 | Subject: [PATCH 032/117] Fix blocking allocations called very early during | ||
5 | bootup | ||
6 | |||
7 | commit 31a67102f4762df5544bc2dfb34a931233d2a5b2 upstream. | ||
8 | |||
9 | During early boot, when the scheduler hasn't really been fully set up, | ||
10 | we really can't do blocking allocations because with certain (dubious) | ||
11 | configurations the "might_resched()" calls can actually result in | ||
12 | scheduling events. | ||
13 | |||
14 | We could just make such users always use GFP_ATOMIC, but quite often the | ||
15 | code that does the allocation isn't really aware of the fact that the | ||
16 | scheduler isn't up yet, and forcing that kind of random knowledge on the | ||
17 | initialization code is just annoying and not good for anybody. | ||
18 | |||
19 | And we actually have a the 'gfp_allowed_mask' exactly for this reason: | ||
20 | it's just that the kernel init sequence happens to set it to allow | ||
21 | blocking allocations much too early. | ||
22 | |||
23 | So move the 'gfp_allowed_mask' initialization from 'start_kernel()' | ||
24 | (which is some of the earliest init code, and runs with preemption | ||
25 | disabled for good reasons) into 'kernel_init()'. kernel_init() is run | ||
26 | in the newly created thread that will become the 'init' process, as | ||
27 | opposed to the early startup code that runs within the context of what | ||
28 | will be the first idle thread. | ||
29 | |||
30 | So by the time we reach 'kernel_init()', we know that the scheduler must | ||
31 | be at least limping along, because we've already scheduled from the idle | ||
32 | thread into the init thread. | ||
33 | |||
34 | Reported-by: Steven Rostedt <rostedt@goodmis.org> | ||
35 | Cc: David Rientjes <rientjes@google.com> | ||
36 | Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> | ||
37 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
38 | --- | ||
39 | init/main.c | 7 ++++--- | ||
40 | 1 file changed, 4 insertions(+), 3 deletions(-) | ||
41 | |||
42 | diff --git a/init/main.c b/init/main.c | ||
43 | index 217ed23..cb08fea2 100644 | ||
44 | --- a/init/main.c | ||
45 | +++ b/init/main.c | ||
46 | @@ -563,9 +563,6 @@ asmlinkage void __init start_kernel(void) | ||
47 | early_boot_irqs_disabled = false; | ||
48 | local_irq_enable(); | ||
49 | |||
50 | - /* Interrupts are enabled now so all GFP allocations are safe. */ | ||
51 | - gfp_allowed_mask = __GFP_BITS_MASK; | ||
52 | - | ||
53 | kmem_cache_init_late(); | ||
54 | |||
55 | /* | ||
56 | @@ -798,6 +795,10 @@ static int __init kernel_init(void * unused) | ||
57 | * Wait until kthreadd is all set-up. | ||
58 | */ | ||
59 | wait_for_completion(&kthreadd_done); | ||
60 | + | ||
61 | + /* Now the scheduler is fully set up and can do blocking allocations */ | ||
62 | + gfp_allowed_mask = __GFP_BITS_MASK; | ||
63 | + | ||
64 | /* | ||
65 | * init can allocate pages on any node | ||
66 | */ | ||
67 | -- | ||
68 | 1.7.9.5 | ||
69 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0033-vfs-make-AIO-use-the-proper-rw_verify_area-area-help.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0033-vfs-make-AIO-use-the-proper-rw_verify_area-area-help.patch new file mode 100644 index 00000000..e496eb2a --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0033-vfs-make-AIO-use-the-proper-rw_verify_area-area-help.patch | |||
@@ -0,0 +1,109 @@ | |||
1 | From 078dda1f3c0c180fc5d408f9f087752a0afbed3f Mon Sep 17 00:00:00 2001 | ||
2 | From: Linus Torvalds <torvalds@linux-foundation.org> | ||
3 | Date: Mon, 21 May 2012 16:06:20 -0700 | ||
4 | Subject: [PATCH 033/117] vfs: make AIO use the proper rw_verify_area() area | ||
5 | helpers | ||
6 | |||
7 | commit a70b52ec1aaeaf60f4739edb1b422827cb6f3893 upstream. | ||
8 | |||
9 | We had for some reason overlooked the AIO interface, and it didn't use | ||
10 | the proper rw_verify_area() helper function that checks (for example) | ||
11 | mandatory locking on the file, and that the size of the access doesn't | ||
12 | cause us to overflow the provided offset limits etc. | ||
13 | |||
14 | Instead, AIO did just the security_file_permission() thing (that | ||
15 | rw_verify_area() also does) directly. | ||
16 | |||
17 | This fixes it to do all the proper helper functions, which not only | ||
18 | means that now mandatory file locking works with AIO too, we can | ||
19 | actually remove lines of code. | ||
20 | |||
21 | Reported-by: Manish Honap <manish_honap_vit@yahoo.co.in> | ||
22 | Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> | ||
23 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
24 | --- | ||
25 | fs/aio.c | 30 ++++++++++++++---------------- | ||
26 | 1 file changed, 14 insertions(+), 16 deletions(-) | ||
27 | |||
28 | diff --git a/fs/aio.c b/fs/aio.c | ||
29 | index b9d64d8..3b65ee7 100644 | ||
30 | --- a/fs/aio.c | ||
31 | +++ b/fs/aio.c | ||
32 | @@ -1477,6 +1477,10 @@ static ssize_t aio_setup_vectored_rw(int type, struct kiocb *kiocb, bool compat) | ||
33 | if (ret < 0) | ||
34 | goto out; | ||
35 | |||
36 | + ret = rw_verify_area(type, kiocb->ki_filp, &kiocb->ki_pos, ret); | ||
37 | + if (ret < 0) | ||
38 | + goto out; | ||
39 | + | ||
40 | kiocb->ki_nr_segs = kiocb->ki_nbytes; | ||
41 | kiocb->ki_cur_seg = 0; | ||
42 | /* ki_nbytes/left now reflect bytes instead of segs */ | ||
43 | @@ -1488,11 +1492,17 @@ out: | ||
44 | return ret; | ||
45 | } | ||
46 | |||
47 | -static ssize_t aio_setup_single_vector(struct kiocb *kiocb) | ||
48 | +static ssize_t aio_setup_single_vector(int type, struct file * file, struct kiocb *kiocb) | ||
49 | { | ||
50 | + int bytes; | ||
51 | + | ||
52 | + bytes = rw_verify_area(type, file, &kiocb->ki_pos, kiocb->ki_left); | ||
53 | + if (bytes < 0) | ||
54 | + return bytes; | ||
55 | + | ||
56 | kiocb->ki_iovec = &kiocb->ki_inline_vec; | ||
57 | kiocb->ki_iovec->iov_base = kiocb->ki_buf; | ||
58 | - kiocb->ki_iovec->iov_len = kiocb->ki_left; | ||
59 | + kiocb->ki_iovec->iov_len = bytes; | ||
60 | kiocb->ki_nr_segs = 1; | ||
61 | kiocb->ki_cur_seg = 0; | ||
62 | return 0; | ||
63 | @@ -1517,10 +1527,7 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb, bool compat) | ||
64 | if (unlikely(!access_ok(VERIFY_WRITE, kiocb->ki_buf, | ||
65 | kiocb->ki_left))) | ||
66 | break; | ||
67 | - ret = security_file_permission(file, MAY_READ); | ||
68 | - if (unlikely(ret)) | ||
69 | - break; | ||
70 | - ret = aio_setup_single_vector(kiocb); | ||
71 | + ret = aio_setup_single_vector(READ, file, kiocb); | ||
72 | if (ret) | ||
73 | break; | ||
74 | ret = -EINVAL; | ||
75 | @@ -1535,10 +1542,7 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb, bool compat) | ||
76 | if (unlikely(!access_ok(VERIFY_READ, kiocb->ki_buf, | ||
77 | kiocb->ki_left))) | ||
78 | break; | ||
79 | - ret = security_file_permission(file, MAY_WRITE); | ||
80 | - if (unlikely(ret)) | ||
81 | - break; | ||
82 | - ret = aio_setup_single_vector(kiocb); | ||
83 | + ret = aio_setup_single_vector(WRITE, file, kiocb); | ||
84 | if (ret) | ||
85 | break; | ||
86 | ret = -EINVAL; | ||
87 | @@ -1549,9 +1553,6 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb, bool compat) | ||
88 | ret = -EBADF; | ||
89 | if (unlikely(!(file->f_mode & FMODE_READ))) | ||
90 | break; | ||
91 | - ret = security_file_permission(file, MAY_READ); | ||
92 | - if (unlikely(ret)) | ||
93 | - break; | ||
94 | ret = aio_setup_vectored_rw(READ, kiocb, compat); | ||
95 | if (ret) | ||
96 | break; | ||
97 | @@ -1563,9 +1564,6 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb, bool compat) | ||
98 | ret = -EBADF; | ||
99 | if (unlikely(!(file->f_mode & FMODE_WRITE))) | ||
100 | break; | ||
101 | - ret = security_file_permission(file, MAY_WRITE); | ||
102 | - if (unlikely(ret)) | ||
103 | - break; | ||
104 | ret = aio_setup_vectored_rw(WRITE, kiocb, compat); | ||
105 | if (ret) | ||
106 | break; | ||
107 | -- | ||
108 | 1.7.9.5 | ||
109 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0034-docs-update-HOWTO-for-2.6.x-3.x-versioning.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0034-docs-update-HOWTO-for-2.6.x-3.x-versioning.patch new file mode 100644 index 00000000..2539418e --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0034-docs-update-HOWTO-for-2.6.x-3.x-versioning.patch | |||
@@ -0,0 +1,100 @@ | |||
1 | From d2c7de1fefbc917e3731bf69e18b553b3c7a165f Mon Sep 17 00:00:00 2001 | ||
2 | From: Kees Cook <keescook@chromium.org> | ||
3 | Date: Wed, 18 Apr 2012 23:16:45 -0700 | ||
4 | Subject: [PATCH 034/117] docs: update HOWTO for 2.6.x -> 3.x versioning | ||
5 | |||
6 | commit 591bfc6bf9e5e25e464fd4c87d64afd5135667c4 upstream. | ||
7 | |||
8 | The HOWTO document needed updating for the new kernel versioning. The | ||
9 | git URI for -next was updated as well. | ||
10 | |||
11 | Signed-off-by: Kees Cook <keescook@chromium.org> | ||
12 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
13 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
14 | --- | ||
15 | Documentation/HOWTO | 32 ++++++++++++++++---------------- | ||
16 | 1 file changed, 16 insertions(+), 16 deletions(-) | ||
17 | |||
18 | diff --git a/Documentation/HOWTO b/Documentation/HOWTO | ||
19 | index f7ade3b..59c080f 100644 | ||
20 | --- a/Documentation/HOWTO | ||
21 | +++ b/Documentation/HOWTO | ||
22 | @@ -218,16 +218,16 @@ The development process | ||
23 | Linux kernel development process currently consists of a few different | ||
24 | main kernel "branches" and lots of different subsystem-specific kernel | ||
25 | branches. These different branches are: | ||
26 | - - main 2.6.x kernel tree | ||
27 | - - 2.6.x.y -stable kernel tree | ||
28 | - - 2.6.x -git kernel patches | ||
29 | + - main 3.x kernel tree | ||
30 | + - 3.x.y -stable kernel tree | ||
31 | + - 3.x -git kernel patches | ||
32 | - subsystem specific kernel trees and patches | ||
33 | - - the 2.6.x -next kernel tree for integration tests | ||
34 | + - the 3.x -next kernel tree for integration tests | ||
35 | |||
36 | -2.6.x kernel tree | ||
37 | +3.x kernel tree | ||
38 | ----------------- | ||
39 | -2.6.x kernels are maintained by Linus Torvalds, and can be found on | ||
40 | -kernel.org in the pub/linux/kernel/v2.6/ directory. Its development | ||
41 | +3.x kernels are maintained by Linus Torvalds, and can be found on | ||
42 | +kernel.org in the pub/linux/kernel/v3.x/ directory. Its development | ||
43 | process is as follows: | ||
44 | - As soon as a new kernel is released a two weeks window is open, | ||
45 | during this period of time maintainers can submit big diffs to | ||
46 | @@ -262,20 +262,20 @@ mailing list about kernel releases: | ||
47 | released according to perceived bug status, not according to a | ||
48 | preconceived timeline." | ||
49 | |||
50 | -2.6.x.y -stable kernel tree | ||
51 | +3.x.y -stable kernel tree | ||
52 | --------------------------- | ||
53 | -Kernels with 4-part versions are -stable kernels. They contain | ||
54 | +Kernels with 3-part versions are -stable kernels. They contain | ||
55 | relatively small and critical fixes for security problems or significant | ||
56 | -regressions discovered in a given 2.6.x kernel. | ||
57 | +regressions discovered in a given 3.x kernel. | ||
58 | |||
59 | This is the recommended branch for users who want the most recent stable | ||
60 | kernel and are not interested in helping test development/experimental | ||
61 | versions. | ||
62 | |||
63 | -If no 2.6.x.y kernel is available, then the highest numbered 2.6.x | ||
64 | +If no 3.x.y kernel is available, then the highest numbered 3.x | ||
65 | kernel is the current stable kernel. | ||
66 | |||
67 | -2.6.x.y are maintained by the "stable" team <stable@vger.kernel.org>, and | ||
68 | +3.x.y are maintained by the "stable" team <stable@vger.kernel.org>, and | ||
69 | are released as needs dictate. The normal release period is approximately | ||
70 | two weeks, but it can be longer if there are no pressing problems. A | ||
71 | security-related problem, instead, can cause a release to happen almost | ||
72 | @@ -285,7 +285,7 @@ The file Documentation/stable_kernel_rules.txt in the kernel tree | ||
73 | documents what kinds of changes are acceptable for the -stable tree, and | ||
74 | how the release process works. | ||
75 | |||
76 | -2.6.x -git patches | ||
77 | +3.x -git patches | ||
78 | ------------------ | ||
79 | These are daily snapshots of Linus' kernel tree which are managed in a | ||
80 | git repository (hence the name.) These patches are usually released | ||
81 | @@ -317,13 +317,13 @@ revisions to it, and maintainers can mark patches as under review, | ||
82 | accepted, or rejected. Most of these patchwork sites are listed at | ||
83 | http://patchwork.kernel.org/. | ||
84 | |||
85 | -2.6.x -next kernel tree for integration tests | ||
86 | +3.x -next kernel tree for integration tests | ||
87 | --------------------------------------------- | ||
88 | -Before updates from subsystem trees are merged into the mainline 2.6.x | ||
89 | +Before updates from subsystem trees are merged into the mainline 3.x | ||
90 | tree, they need to be integration-tested. For this purpose, a special | ||
91 | testing repository exists into which virtually all subsystem trees are | ||
92 | pulled on an almost daily basis: | ||
93 | - http://git.kernel.org/?p=linux/kernel/git/sfr/linux-next.git | ||
94 | + http://git.kernel.org/?p=linux/kernel/git/next/linux-next.git | ||
95 | http://linux.f-seidel.de/linux-next/pmwiki/ | ||
96 | |||
97 | This way, the -next kernel gives a summary outlook onto what will be | ||
98 | -- | ||
99 | 1.7.9.5 | ||
100 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0035-drivers-staging-comedi-comedi_fops.c-add-missing-vfr.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0035-drivers-staging-comedi-comedi_fops.c-add-missing-vfr.patch new file mode 100644 index 00000000..0286930e --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0035-drivers-staging-comedi-comedi_fops.c-add-missing-vfr.patch | |||
@@ -0,0 +1,34 @@ | |||
1 | From bf21ec2ca510b5e8d017ea1177ffa78a2fec5b93 Mon Sep 17 00:00:00 2001 | ||
2 | From: Julia Lawall <Julia.Lawall@lip6.fr> | ||
3 | Date: Sun, 22 Apr 2012 13:37:09 +0200 | ||
4 | Subject: [PATCH 035/117] drivers/staging/comedi/comedi_fops.c: add missing | ||
5 | vfree | ||
6 | |||
7 | commit abae41e6438b798e046d721b6ccdd55b4a398170 upstream. | ||
8 | |||
9 | aux_free is freed on all other exits from the function. By removing the | ||
10 | return, we can benefit from the vfree already at the end of the function. | ||
11 | |||
12 | Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr> | ||
13 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
14 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
15 | --- | ||
16 | drivers/staging/comedi/comedi_fops.c | 2 +- | ||
17 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
18 | |||
19 | diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c | ||
20 | index 5e78c77..4ad2c0e 100644 | ||
21 | --- a/drivers/staging/comedi/comedi_fops.c | ||
22 | +++ b/drivers/staging/comedi/comedi_fops.c | ||
23 | @@ -280,7 +280,7 @@ static int do_devconfig_ioctl(struct comedi_device *dev, | ||
24 | if (ret == 0) { | ||
25 | if (!try_module_get(dev->driver->module)) { | ||
26 | comedi_device_detach(dev); | ||
27 | - return -ENOSYS; | ||
28 | + ret = -ENOSYS; | ||
29 | } | ||
30 | } | ||
31 | |||
32 | -- | ||
33 | 1.7.9.5 | ||
34 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0036-USB-move-usb_translate_errors-to-linux-usb.h.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0036-USB-move-usb_translate_errors-to-linux-usb.h.patch new file mode 100644 index 00000000..b1eb787d --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0036-USB-move-usb_translate_errors-to-linux-usb.h.patch | |||
@@ -0,0 +1,70 @@ | |||
1 | From a62e9c8e391b91bd60c705748ea8ec207ef72eab Mon Sep 17 00:00:00 2001 | ||
2 | From: Johan Hovold <jhovold@gmail.com> | ||
3 | Date: Thu, 10 Nov 2011 14:58:26 +0100 | ||
4 | Subject: [PATCH 036/117] USB: move usb_translate_errors to linux/usb.h | ||
5 | |||
6 | commit 2c4d6bf295ae10ffcd84f0df6cb642598eb66603 upstream. | ||
7 | |||
8 | Move usb_translate_errors from usb core to linux/usb.h as it is meant to | ||
9 | be accessed from drivers. | ||
10 | |||
11 | Signed-off-by: Johan Hovold <jhovold@gmail.com> | ||
12 | Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> | ||
13 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
14 | --- | ||
15 | drivers/usb/core/usb.h | 14 -------------- | ||
16 | include/linux/usb.h | 13 +++++++++++++ | ||
17 | 2 files changed, 13 insertions(+), 14 deletions(-) | ||
18 | |||
19 | diff --git a/drivers/usb/core/usb.h b/drivers/usb/core/usb.h | ||
20 | index 3888778..45e8479 100644 | ||
21 | --- a/drivers/usb/core/usb.h | ||
22 | +++ b/drivers/usb/core/usb.h | ||
23 | @@ -132,20 +132,6 @@ static inline int is_usb_device_driver(struct device_driver *drv) | ||
24 | for_devices; | ||
25 | } | ||
26 | |||
27 | -/* translate USB error codes to codes user space understands */ | ||
28 | -static inline int usb_translate_errors(int error_code) | ||
29 | -{ | ||
30 | - switch (error_code) { | ||
31 | - case 0: | ||
32 | - case -ENOMEM: | ||
33 | - case -ENODEV: | ||
34 | - return error_code; | ||
35 | - default: | ||
36 | - return -EIO; | ||
37 | - } | ||
38 | -} | ||
39 | - | ||
40 | - | ||
41 | /* for labeling diagnostics */ | ||
42 | extern const char *usbcore_name; | ||
43 | |||
44 | diff --git a/include/linux/usb.h b/include/linux/usb.h | ||
45 | index 7626e5a..68cdc84 100644 | ||
46 | --- a/include/linux/usb.h | ||
47 | +++ b/include/linux/usb.h | ||
48 | @@ -1600,6 +1600,19 @@ usb_maxpacket(struct usb_device *udev, int pipe, int is_out) | ||
49 | |||
50 | /* ----------------------------------------------------------------------- */ | ||
51 | |||
52 | +/* translate USB error codes to codes user space understands */ | ||
53 | +static inline int usb_translate_errors(int error_code) | ||
54 | +{ | ||
55 | + switch (error_code) { | ||
56 | + case 0: | ||
57 | + case -ENOMEM: | ||
58 | + case -ENODEV: | ||
59 | + return error_code; | ||
60 | + default: | ||
61 | + return -EIO; | ||
62 | + } | ||
63 | +} | ||
64 | + | ||
65 | /* Events from the usb core */ | ||
66 | #define USB_DEVICE_ADD 0x0001 | ||
67 | #define USB_DEVICE_REMOVE 0x0002 | ||
68 | -- | ||
69 | 1.7.9.5 | ||
70 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0037-USB-cdc-wdm-sanitize-error-returns.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0037-USB-cdc-wdm-sanitize-error-returns.patch new file mode 100644 index 00000000..bbb4964f --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0037-USB-cdc-wdm-sanitize-error-returns.patch | |||
@@ -0,0 +1,33 @@ | |||
1 | From 1676590583666a41bf8b26924d0ab9b729455813 Mon Sep 17 00:00:00 2001 | ||
2 | From: Oliver Neukum <oliver@neukum.org> | ||
3 | Date: Fri, 27 Apr 2012 14:23:54 +0200 | ||
4 | Subject: [PATCH 037/117] USB: cdc-wdm: sanitize error returns | ||
5 | |||
6 | commit 24a85bae5da2b43fed423859c09c5a81ab359473 upstream. | ||
7 | |||
8 | wdm_flush() returns unsanitized USB error codes. | ||
9 | They must be cleaned up to before being anded to user space | ||
10 | |||
11 | Signed-off-by: Oliver Neukum <oneukum@suse.de> | ||
12 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
13 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
14 | --- | ||
15 | drivers/usb/class/cdc-wdm.c | 2 +- | ||
16 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
17 | |||
18 | diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c | ||
19 | index 2db0327..ac9099a 100644 | ||
20 | --- a/drivers/usb/class/cdc-wdm.c | ||
21 | +++ b/drivers/usb/class/cdc-wdm.c | ||
22 | @@ -500,7 +500,7 @@ static int wdm_flush(struct file *file, fl_owner_t id) | ||
23 | dev_err(&desc->intf->dev, "Error in flush path: %d\n", | ||
24 | desc->werr); | ||
25 | |||
26 | - return desc->werr; | ||
27 | + return usb_translate_errors(desc->werr); | ||
28 | } | ||
29 | |||
30 | static unsigned int wdm_poll(struct file *file, struct poll_table_struct *wait) | ||
31 | -- | ||
32 | 1.7.9.5 | ||
33 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0038-USB-cdc-wdm-fix-memory-leak.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0038-USB-cdc-wdm-fix-memory-leak.patch new file mode 100644 index 00000000..06dd85c0 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0038-USB-cdc-wdm-fix-memory-leak.patch | |||
@@ -0,0 +1,35 @@ | |||
1 | From bc51604d6cadd35fa7a9a4d70644471cb6ab81f8 Mon Sep 17 00:00:00 2001 | ||
2 | From: Oliver Neukum <oliver@neukum.org> | ||
3 | Date: Fri, 27 Apr 2012 14:36:37 +0200 | ||
4 | Subject: [PATCH 038/117] USB: cdc-wdm: fix memory leak | ||
5 | |||
6 | commit 2f338c8a1904e2e7aa5a8bd12fb0cf2422d17da4 upstream. | ||
7 | |||
8 | cleanup() is not called if the last close() comes after | ||
9 | disconnect(). That leads to a memory leak. Rectified | ||
10 | by checking for an earlier disconnect() in release() | ||
11 | |||
12 | Signed-off-by: Oliver Neukum <oneukum@suse.de> | ||
13 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
14 | [bwh: Backported to 3.2: adjust context] | ||
15 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
16 | --- | ||
17 | drivers/usb/class/cdc-wdm.c | 2 ++ | ||
18 | 1 file changed, 2 insertions(+) | ||
19 | |||
20 | diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c | ||
21 | index ac9099a..cfe5be4 100644 | ||
22 | --- a/drivers/usb/class/cdc-wdm.c | ||
23 | +++ b/drivers/usb/class/cdc-wdm.c | ||
24 | @@ -590,6 +590,8 @@ static int wdm_release(struct inode *inode, struct file *file) | ||
25 | kill_urbs(desc); | ||
26 | if (!test_bit(WDM_DISCONNECTING, &desc->flags)) | ||
27 | desc->intf->needs_remote_wakeup = 0; | ||
28 | + else | ||
29 | + cleanup(desc); | ||
30 | } | ||
31 | mutex_unlock(&wdm_mutex); | ||
32 | return 0; | ||
33 | -- | ||
34 | 1.7.9.5 | ||
35 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0039-8250_pci-fix-pch-uart-matching.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0039-8250_pci-fix-pch-uart-matching.patch new file mode 100644 index 00000000..c895c803 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0039-8250_pci-fix-pch-uart-matching.patch | |||
@@ -0,0 +1,102 @@ | |||
1 | From e90d4ef7a5801bf1e9c956edf51d22f6c8f33611 Mon Sep 17 00:00:00 2001 | ||
2 | From: Arnaud Patard <apatard@hupstream.com> | ||
3 | Date: Wed, 25 Apr 2012 12:17:24 +0200 | ||
4 | Subject: [PATCH 039/117] 8250_pci: fix pch uart matching | ||
5 | |||
6 | commit aaa10eb1d0034eccc096f583fe308f0921617598 upstream. | ||
7 | |||
8 | The rules used to make 8250_pci "ignore" the PCH uarts are lacking pci subids | ||
9 | entries, preventing it to match and thus is breaking serial port support for | ||
10 | theses systems. | ||
11 | |||
12 | This has been tested on a nanoETXexpress-TT, which has a specifici uart clock. | ||
13 | |||
14 | Tested-by: Erwan Velu <Erwan.Velu@zodiacaerospace.com> | ||
15 | Signed-off-by: Arnaud Patard <apatard@hupstream.com> | ||
16 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
17 | [bwh: Backported to 3.2: adjust filename] | ||
18 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
19 | --- | ||
20 | drivers/tty/serial/8250_pci.c | 18 ++++++++++++++++++ | ||
21 | 1 file changed, 18 insertions(+) | ||
22 | |||
23 | diff --git a/drivers/tty/serial/8250_pci.c b/drivers/tty/serial/8250_pci.c | ||
24 | index 825937a..482d51e 100644 | ||
25 | --- a/drivers/tty/serial/8250_pci.c | ||
26 | +++ b/drivers/tty/serial/8250_pci.c | ||
27 | @@ -1590,54 +1590,72 @@ static struct pci_serial_quirk pci_serial_quirks[] __refdata = { | ||
28 | { | ||
29 | .vendor = PCI_VENDOR_ID_INTEL, | ||
30 | .device = 0x8811, | ||
31 | + .subvendor = PCI_ANY_ID, | ||
32 | + .subdevice = PCI_ANY_ID, | ||
33 | .init = pci_eg20t_init, | ||
34 | .setup = pci_default_setup, | ||
35 | }, | ||
36 | { | ||
37 | .vendor = PCI_VENDOR_ID_INTEL, | ||
38 | .device = 0x8812, | ||
39 | + .subvendor = PCI_ANY_ID, | ||
40 | + .subdevice = PCI_ANY_ID, | ||
41 | .init = pci_eg20t_init, | ||
42 | .setup = pci_default_setup, | ||
43 | }, | ||
44 | { | ||
45 | .vendor = PCI_VENDOR_ID_INTEL, | ||
46 | .device = 0x8813, | ||
47 | + .subvendor = PCI_ANY_ID, | ||
48 | + .subdevice = PCI_ANY_ID, | ||
49 | .init = pci_eg20t_init, | ||
50 | .setup = pci_default_setup, | ||
51 | }, | ||
52 | { | ||
53 | .vendor = PCI_VENDOR_ID_INTEL, | ||
54 | .device = 0x8814, | ||
55 | + .subvendor = PCI_ANY_ID, | ||
56 | + .subdevice = PCI_ANY_ID, | ||
57 | .init = pci_eg20t_init, | ||
58 | .setup = pci_default_setup, | ||
59 | }, | ||
60 | { | ||
61 | .vendor = 0x10DB, | ||
62 | .device = 0x8027, | ||
63 | + .subvendor = PCI_ANY_ID, | ||
64 | + .subdevice = PCI_ANY_ID, | ||
65 | .init = pci_eg20t_init, | ||
66 | .setup = pci_default_setup, | ||
67 | }, | ||
68 | { | ||
69 | .vendor = 0x10DB, | ||
70 | .device = 0x8028, | ||
71 | + .subvendor = PCI_ANY_ID, | ||
72 | + .subdevice = PCI_ANY_ID, | ||
73 | .init = pci_eg20t_init, | ||
74 | .setup = pci_default_setup, | ||
75 | }, | ||
76 | { | ||
77 | .vendor = 0x10DB, | ||
78 | .device = 0x8029, | ||
79 | + .subvendor = PCI_ANY_ID, | ||
80 | + .subdevice = PCI_ANY_ID, | ||
81 | .init = pci_eg20t_init, | ||
82 | .setup = pci_default_setup, | ||
83 | }, | ||
84 | { | ||
85 | .vendor = 0x10DB, | ||
86 | .device = 0x800C, | ||
87 | + .subvendor = PCI_ANY_ID, | ||
88 | + .subdevice = PCI_ANY_ID, | ||
89 | .init = pci_eg20t_init, | ||
90 | .setup = pci_default_setup, | ||
91 | }, | ||
92 | { | ||
93 | .vendor = 0x10DB, | ||
94 | .device = 0x800D, | ||
95 | + .subvendor = PCI_ANY_ID, | ||
96 | + .subdevice = PCI_ANY_ID, | ||
97 | .init = pci_eg20t_init, | ||
98 | .setup = pci_default_setup, | ||
99 | }, | ||
100 | -- | ||
101 | 1.7.9.5 | ||
102 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0040-usb-add-USB_QUIRK_RESET_RESUME-for-M-Audio-88es.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0040-usb-add-USB_QUIRK_RESET_RESUME-for-M-Audio-88es.patch new file mode 100644 index 00000000..5d78e491 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0040-usb-add-USB_QUIRK_RESET_RESUME-for-M-Audio-88es.patch | |||
@@ -0,0 +1,36 @@ | |||
1 | From aa66cb26f7b032f3ae43ff3cb126b3a3cff9b151 Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?Steffen=20M=C3=BCller?= <steffen.mueller@radio-frei.de> | ||
3 | Date: Mon, 30 Apr 2012 13:05:34 +0200 | ||
4 | Subject: [PATCH 040/117] usb: add USB_QUIRK_RESET_RESUME for M-Audio 88es | ||
5 | MIME-Version: 1.0 | ||
6 | Content-Type: text/plain; charset=UTF-8 | ||
7 | Content-Transfer-Encoding: 8bit | ||
8 | |||
9 | commit 166cb70e97bd83d7ae9bbec6ae59a178fd9bb823 upstream. | ||
10 | |||
11 | Tested-by: Steffen Müller <steffen.mueller@radio-frei.de> | ||
12 | Signed-off-by: Steffen Müller <steffen.mueller@radio-frei.de> | ||
13 | Signed-off-by: Stefan Seyfried <seife+kernel@b1-systems.com> | ||
14 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
15 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
16 | --- | ||
17 | drivers/usb/core/quirks.c | 3 +++ | ||
18 | 1 file changed, 3 insertions(+) | ||
19 | |||
20 | diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c | ||
21 | index 4c65eb6..32d3adc 100644 | ||
22 | --- a/drivers/usb/core/quirks.c | ||
23 | +++ b/drivers/usb/core/quirks.c | ||
24 | @@ -123,6 +123,9 @@ static const struct usb_device_id usb_quirk_list[] = { | ||
25 | /* Guillemot Webcam Hercules Dualpix Exchange*/ | ||
26 | { USB_DEVICE(0x06f8, 0x3005), .driver_info = USB_QUIRK_RESET_RESUME }, | ||
27 | |||
28 | + /* Midiman M-Audio Keystation 88es */ | ||
29 | + { USB_DEVICE(0x0763, 0x0192), .driver_info = USB_QUIRK_RESET_RESUME }, | ||
30 | + | ||
31 | /* M-Systems Flash Disk Pioneers */ | ||
32 | { USB_DEVICE(0x08ec, 0x1000), .driver_info = USB_QUIRK_RESET_RESUME }, | ||
33 | |||
34 | -- | ||
35 | 1.7.9.5 | ||
36 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0041-usb-usbtest-two-super-speed-fixes-for-usbtest.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0041-usb-usbtest-two-super-speed-fixes-for-usbtest.patch new file mode 100644 index 00000000..2bc330a9 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0041-usb-usbtest-two-super-speed-fixes-for-usbtest.patch | |||
@@ -0,0 +1,60 @@ | |||
1 | From bb6dfbca863a06884b7af33a6c46fddb690eb7d3 Mon Sep 17 00:00:00 2001 | ||
2 | From: Paul Zimmerman <Paul.Zimmerman@synopsys.com> | ||
3 | Date: Mon, 16 Apr 2012 14:19:07 -0700 | ||
4 | Subject: [PATCH 041/117] usb: usbtest: two super speed fixes for usbtest | ||
5 | |||
6 | commit 6a23ccd216b6a8ba2c67a9f9d8969b4431ad2920 upstream. | ||
7 | |||
8 | bMaxPacketSize0 field for super speed is a power of 2, not a count. | ||
9 | The size itself is always 512. | ||
10 | |||
11 | Max packet size for a super speed bulk endpoint is 1024, so | ||
12 | allocate the urb size in halt_simple() accordingly. | ||
13 | |||
14 | Signed-off-by: Paul Zimmerman <paulz@synopsys.com> | ||
15 | Acked-by: Felipe Balbi <balbi@ti.com> | ||
16 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
17 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
18 | --- | ||
19 | drivers/usb/misc/usbtest.c | 17 ++++++++++++----- | ||
20 | 1 file changed, 12 insertions(+), 5 deletions(-) | ||
21 | |||
22 | diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c | ||
23 | index bd6d008..b9ac9a3 100644 | ||
24 | --- a/drivers/usb/misc/usbtest.c | ||
25 | +++ b/drivers/usb/misc/usbtest.c | ||
26 | @@ -1025,7 +1025,10 @@ test_ctrl_queue(struct usbtest_dev *dev, struct usbtest_param *param) | ||
27 | case 13: /* short read, resembling case 10 */ | ||
28 | req.wValue = cpu_to_le16((USB_DT_CONFIG << 8) | 0); | ||
29 | /* last data packet "should" be DATA1, not DATA0 */ | ||
30 | - len = 1024 - udev->descriptor.bMaxPacketSize0; | ||
31 | + if (udev->speed == USB_SPEED_SUPER) | ||
32 | + len = 1024 - 512; | ||
33 | + else | ||
34 | + len = 1024 - udev->descriptor.bMaxPacketSize0; | ||
35 | expected = -EREMOTEIO; | ||
36 | break; | ||
37 | case 14: /* short read; try to fill the last packet */ | ||
38 | @@ -1384,11 +1387,15 @@ static int test_halt(struct usbtest_dev *tdev, int ep, struct urb *urb) | ||
39 | |||
40 | static int halt_simple(struct usbtest_dev *dev) | ||
41 | { | ||
42 | - int ep; | ||
43 | - int retval = 0; | ||
44 | - struct urb *urb; | ||
45 | + int ep; | ||
46 | + int retval = 0; | ||
47 | + struct urb *urb; | ||
48 | + struct usb_device *udev = testdev_to_usbdev(dev); | ||
49 | |||
50 | - urb = simple_alloc_urb(testdev_to_usbdev(dev), 0, 512); | ||
51 | + if (udev->speed == USB_SPEED_SUPER) | ||
52 | + urb = simple_alloc_urb(udev, 0, 1024); | ||
53 | + else | ||
54 | + urb = simple_alloc_urb(udev, 0, 512); | ||
55 | if (urb == NULL) | ||
56 | return -ENOMEM; | ||
57 | |||
58 | -- | ||
59 | 1.7.9.5 | ||
60 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0042-8250.c-less-than-2400-baud-fix.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0042-8250.c-less-than-2400-baud-fix.patch new file mode 100644 index 00000000..1c7547e6 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0042-8250.c-less-than-2400-baud-fix.patch | |||
@@ -0,0 +1,51 @@ | |||
1 | From 52c1820cb4b5f10c0664104bb6f570305d0c49cc Mon Sep 17 00:00:00 2001 | ||
2 | From: Christian Melki <christian.melki@ericsson.se> | ||
3 | Date: Mon, 30 Apr 2012 11:21:26 +0200 | ||
4 | Subject: [PATCH 042/117] 8250.c: less than 2400 baud fix. | ||
5 | |||
6 | commit f9a9111b540fd67db5dab332f4b83d86c90e27b1 upstream. | ||
7 | |||
8 | We noticed that we were loosing data at speed less than 2400 baud. | ||
9 | It turned out our (TI16750 compatible) uart with 64 byte outgoing fifo | ||
10 | was truncated to 16 byte (bit 5 sets fifo len) when modifying the fcr | ||
11 | reg. | ||
12 | The input code still fills the buffer with 64 bytes if I remember | ||
13 | correctly and thus data is lost. | ||
14 | Our fix was to remove whiping of the fcr content and just add the | ||
15 | TRIGGER_1 which we want for latency. | ||
16 | I can't see why this would not work on less than 2400 always, for all | ||
17 | uarts ... | ||
18 | Otherwise one would have to make sure the filling of the fifo re-checks | ||
19 | the current state of available fifo size (urrk). | ||
20 | |||
21 | Signed-off-by: Christian Melki <christian.melki@ericsson.se> | ||
22 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
23 | [bwh: Backported to 3.2: adjust filename; replace *port with up->port] | ||
24 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
25 | --- | ||
26 | drivers/tty/serial/8250.c | 9 +++++---- | ||
27 | 1 file changed, 5 insertions(+), 4 deletions(-) | ||
28 | |||
29 | diff --git a/drivers/tty/serial/8250.c b/drivers/tty/serial/8250.c | ||
30 | index eeadf1b..70585b6 100644 | ||
31 | --- a/drivers/tty/serial/8250.c | ||
32 | +++ b/drivers/tty/serial/8250.c | ||
33 | @@ -2327,10 +2327,11 @@ serial8250_do_set_termios(struct uart_port *port, struct ktermios *termios, | ||
34 | quot++; | ||
35 | |||
36 | if (up->capabilities & UART_CAP_FIFO && up->port.fifosize > 1) { | ||
37 | - if (baud < 2400) | ||
38 | - fcr = UART_FCR_ENABLE_FIFO | UART_FCR_TRIGGER_1; | ||
39 | - else | ||
40 | - fcr = uart_config[up->port.type].fcr; | ||
41 | + fcr = uart_config[up->port.type].fcr; | ||
42 | + if (baud < 2400) { | ||
43 | + fcr &= ~UART_FCR_TRIGGER_MASK; | ||
44 | + fcr |= UART_FCR_TRIGGER_1; | ||
45 | + } | ||
46 | } | ||
47 | |||
48 | /* | ||
49 | -- | ||
50 | 1.7.9.5 | ||
51 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0043-usb-xhci-Handle-COMP_TX_ERR-for-isoc-tds.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0043-usb-xhci-Handle-COMP_TX_ERR-for-isoc-tds.patch new file mode 100644 index 00000000..ce641a41 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0043-usb-xhci-Handle-COMP_TX_ERR-for-isoc-tds.patch | |||
@@ -0,0 +1,49 @@ | |||
1 | From 5ccddedea273a8a59eda8f3a7ad026d0751ada3d Mon Sep 17 00:00:00 2001 | ||
2 | From: Hans de Goede <hdegoede@redhat.com> | ||
3 | Date: Mon, 23 Apr 2012 15:06:09 +0200 | ||
4 | Subject: [PATCH 043/117] usb-xhci: Handle COMP_TX_ERR for isoc tds | ||
5 | |||
6 | commit 9c745995ae5c4ff787f34a359de908facc11ee00 upstream. | ||
7 | |||
8 | While testing unplugging an UVC HD webcam with usb-redirection (so through | ||
9 | usbdevfs), my userspace usb-redir code was getting a value of -1 in | ||
10 | iso_frame_desc[n].status, which according to Documentation/usb/error-codes.txt | ||
11 | is not a valid value. | ||
12 | |||
13 | The source of this -1 is the default case in xhci-ring.c:process_isoc_td() | ||
14 | adding a kprintf there showed the value of trb_comp_code to be COMP_TX_ERR | ||
15 | in this case, so this patch adds handling for that completion code to | ||
16 | process_isoc_td(). | ||
17 | |||
18 | This was observed and tested with the following xhci controller: | ||
19 | 1033:0194 NEC Corporation uPD720200 USB 3.0 Host Controller (rev 04) | ||
20 | |||
21 | Note: I also wonder if setting frame->status to -1 (-EPERM) is the best we can | ||
22 | do, but since I cannot come up with anything better I've left that as is. | ||
23 | |||
24 | This patch should be backported to kernels as old as 2.6.36, which contain the | ||
25 | commit 04e51901dd44f40a5a385ced897f6bca87d5f40a "USB: xHCI: Isochronous | ||
26 | transfer implementation". | ||
27 | |||
28 | Signed-off-by: Hans de Goede <hdegoede@redhat.com> | ||
29 | Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> | ||
30 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
31 | --- | ||
32 | drivers/usb/host/xhci-ring.c | 1 + | ||
33 | 1 file changed, 1 insertion(+) | ||
34 | |||
35 | diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c | ||
36 | index 43b3447..2304c45 100644 | ||
37 | --- a/drivers/usb/host/xhci-ring.c | ||
38 | +++ b/drivers/usb/host/xhci-ring.c | ||
39 | @@ -1752,6 +1752,7 @@ static int process_isoc_td(struct xhci_hcd *xhci, struct xhci_td *td, | ||
40 | break; | ||
41 | case COMP_DEV_ERR: | ||
42 | case COMP_STALL: | ||
43 | + case COMP_TX_ERR: | ||
44 | frame->status = -EPROTO; | ||
45 | skip_td = true; | ||
46 | break; | ||
47 | -- | ||
48 | 1.7.9.5 | ||
49 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0044-xhci-Avoid-dead-ports-when-CONFIG_USB_XHCI_HCD-n.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0044-xhci-Avoid-dead-ports-when-CONFIG_USB_XHCI_HCD-n.patch new file mode 100644 index 00000000..eaa0ec55 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0044-xhci-Avoid-dead-ports-when-CONFIG_USB_XHCI_HCD-n.patch | |||
@@ -0,0 +1,63 @@ | |||
1 | From 48a73f4c8ba6d9e5587a29aa4f9710f405a28cc7 Mon Sep 17 00:00:00 2001 | ||
2 | From: Sarah Sharp <sarah.a.sharp@linux.intel.com> | ||
3 | Date: Mon, 16 Apr 2012 10:56:47 -0700 | ||
4 | Subject: [PATCH 044/117] xhci: Avoid dead ports when CONFIG_USB_XHCI_HCD=n | ||
5 | |||
6 | commit 51c9e6c7732b67769c0a514d31f505e49fa82dd4 upstream. | ||
7 | |||
8 | If the user chooses to say "no" to CONFIG_USB_XHCI_HCD on a system | ||
9 | with an Intel Panther Point chipset, the PCI quirks code or the EHCI | ||
10 | driver will switch the ports over to the xHCI host, but the xHCI driver | ||
11 | will never load. The ports will be powered off and seem "dead" to the | ||
12 | user. | ||
13 | |||
14 | Fix this by only switching the ports over if CONFIG_USB_XHCI_HCD is | ||
15 | either compiled in, or compiled as a module. | ||
16 | |||
17 | This patch should be backported to stable kernels as old as 3.0, | ||
18 | that contain commit 69e848c2090aebba5698a1620604c7dccb448684 | ||
19 | "Intel xhci: Support EHCI/xHCI port switching." | ||
20 | |||
21 | Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> | ||
22 | Reported-by: Eric Anholt <eric.anholt@intel.com> | ||
23 | Reported-by: David Bein <d.bein@f5.com> | ||
24 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
25 | --- | ||
26 | drivers/usb/host/pci-quirks.c | 14 ++++++++++++++ | ||
27 | 1 file changed, 14 insertions(+) | ||
28 | |||
29 | diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c | ||
30 | index 2afff88..a33362b 100644 | ||
31 | --- a/drivers/usb/host/pci-quirks.c | ||
32 | +++ b/drivers/usb/host/pci-quirks.c | ||
33 | @@ -9,6 +9,7 @@ | ||
34 | */ | ||
35 | |||
36 | #include <linux/types.h> | ||
37 | +#include <linux/kconfig.h> | ||
38 | #include <linux/kernel.h> | ||
39 | #include <linux/pci.h> | ||
40 | #include <linux/init.h> | ||
41 | @@ -742,6 +743,19 @@ void usb_enable_xhci_ports(struct pci_dev *xhci_pdev) | ||
42 | { | ||
43 | u32 ports_available; | ||
44 | |||
45 | + /* Don't switchover the ports if the user hasn't compiled the xHCI | ||
46 | + * driver. Otherwise they will see "dead" USB ports that don't power | ||
47 | + * the devices. | ||
48 | + */ | ||
49 | + if (!IS_ENABLED(CONFIG_USB_XHCI_HCD)) { | ||
50 | + dev_warn(&xhci_pdev->dev, | ||
51 | + "CONFIG_USB_XHCI_HCD is turned off, " | ||
52 | + "defaulting to EHCI.\n"); | ||
53 | + dev_warn(&xhci_pdev->dev, | ||
54 | + "USB 3.0 devices will work at USB 2.0 speeds.\n"); | ||
55 | + return; | ||
56 | + } | ||
57 | + | ||
58 | ports_available = 0xffffffff; | ||
59 | /* Write USB3_PSSEN, the USB 3.0 Port SuperSpeed Enable | ||
60 | * Register, to turn on SuperSpeed terminations for all | ||
61 | -- | ||
62 | 1.7.9.5 | ||
63 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0045-xhci-Add-Lynx-Point-to-list-of-Intel-switchable-host.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0045-xhci-Add-Lynx-Point-to-list-of-Intel-switchable-host.patch new file mode 100644 index 00000000..2bd8bcd3 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0045-xhci-Add-Lynx-Point-to-list-of-Intel-switchable-host.patch | |||
@@ -0,0 +1,81 @@ | |||
1 | From cc4326a34985d9ce41cd590e7cf7275a0fbaa9dd Mon Sep 17 00:00:00 2001 | ||
2 | From: Sarah Sharp <sarah.a.sharp@linux.intel.com> | ||
3 | Date: Thu, 9 Feb 2012 15:55:13 -0800 | ||
4 | Subject: [PATCH 045/117] xhci: Add Lynx Point to list of Intel switchable | ||
5 | hosts. | ||
6 | |||
7 | commit 1c12443ab8eba71a658fae4572147e56d1f84f66 upstream. | ||
8 | |||
9 | The upcoming Intel Lynx Point chipset includes an xHCI host controller | ||
10 | that can have ports switched from the EHCI host controller, just like | ||
11 | the Intel Panther Point xHCI host. This time, ports from both EHCI | ||
12 | hosts can be switched to the xHCI host controller. The PCI config | ||
13 | registers to do the port switching are in the exact same place in the | ||
14 | xHCI PCI configuration registers, with the same semantics. | ||
15 | |||
16 | Hooray for shipping patches for next-gen hardware before the current gen | ||
17 | hardware is even available for purchase! | ||
18 | |||
19 | This patch should be backported to stable kernels as old as 3.0, | ||
20 | that contain commit 69e848c2090aebba5698a1620604c7dccb448684 | ||
21 | "Intel xhci: Support EHCI/xHCI port switching." | ||
22 | |||
23 | Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> | ||
24 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
25 | --- | ||
26 | drivers/usb/host/ehci-pci.c | 4 +++- | ||
27 | drivers/usb/host/pci-quirks.c | 18 +++++++++++++++++- | ||
28 | 2 files changed, 20 insertions(+), 2 deletions(-) | ||
29 | |||
30 | diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c | ||
31 | index 971d312..ee85e81 100644 | ||
32 | --- a/drivers/usb/host/ehci-pci.c | ||
33 | +++ b/drivers/usb/host/ehci-pci.c | ||
34 | @@ -365,7 +365,9 @@ static bool usb_is_intel_switchable_ehci(struct pci_dev *pdev) | ||
35 | { | ||
36 | return pdev->class == PCI_CLASS_SERIAL_USB_EHCI && | ||
37 | pdev->vendor == PCI_VENDOR_ID_INTEL && | ||
38 | - pdev->device == 0x1E26; | ||
39 | + (pdev->device == 0x1E26 || | ||
40 | + pdev->device == 0x8C2D || | ||
41 | + pdev->device == 0x8C26); | ||
42 | } | ||
43 | |||
44 | static void ehci_enable_xhci_companion(void) | ||
45 | diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c | ||
46 | index a33362b..833b3c6 100644 | ||
47 | --- a/drivers/usb/host/pci-quirks.c | ||
48 | +++ b/drivers/usb/host/pci-quirks.c | ||
49 | @@ -713,12 +713,28 @@ static int handshake(void __iomem *ptr, u32 mask, u32 done, | ||
50 | return -ETIMEDOUT; | ||
51 | } | ||
52 | |||
53 | -bool usb_is_intel_switchable_xhci(struct pci_dev *pdev) | ||
54 | +#define PCI_DEVICE_ID_INTEL_LYNX_POINT_XHCI 0x8C31 | ||
55 | + | ||
56 | +bool usb_is_intel_ppt_switchable_xhci(struct pci_dev *pdev) | ||
57 | { | ||
58 | return pdev->class == PCI_CLASS_SERIAL_USB_XHCI && | ||
59 | pdev->vendor == PCI_VENDOR_ID_INTEL && | ||
60 | pdev->device == PCI_DEVICE_ID_INTEL_PANTHERPOINT_XHCI; | ||
61 | } | ||
62 | + | ||
63 | +/* The Intel Lynx Point chipset also has switchable ports. */ | ||
64 | +bool usb_is_intel_lpt_switchable_xhci(struct pci_dev *pdev) | ||
65 | +{ | ||
66 | + return pdev->class == PCI_CLASS_SERIAL_USB_XHCI && | ||
67 | + pdev->vendor == PCI_VENDOR_ID_INTEL && | ||
68 | + pdev->device == PCI_DEVICE_ID_INTEL_LYNX_POINT_XHCI; | ||
69 | +} | ||
70 | + | ||
71 | +bool usb_is_intel_switchable_xhci(struct pci_dev *pdev) | ||
72 | +{ | ||
73 | + return usb_is_intel_ppt_switchable_xhci(pdev) || | ||
74 | + usb_is_intel_lpt_switchable_xhci(pdev); | ||
75 | +} | ||
76 | EXPORT_SYMBOL_GPL(usb_is_intel_switchable_xhci); | ||
77 | |||
78 | /* | ||
79 | -- | ||
80 | 1.7.9.5 | ||
81 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0046-usb-gadget-fsl_udc_core-dTD-s-next-dtd-pointer-need-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0046-usb-gadget-fsl_udc_core-dTD-s-next-dtd-pointer-need-.patch new file mode 100644 index 00000000..5e46323a --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0046-usb-gadget-fsl_udc_core-dTD-s-next-dtd-pointer-need-.patch | |||
@@ -0,0 +1,44 @@ | |||
1 | From 45bf78829065725fa73b4cacfaf2a2142056d301 Mon Sep 17 00:00:00 2001 | ||
2 | From: Peter Chen <peter.chen@freescale.com> | ||
3 | Date: Sun, 1 Apr 2012 15:17:16 +0800 | ||
4 | Subject: [PATCH 046/117] usb: gadget: fsl_udc_core: dTD's next dtd pointer | ||
5 | need to be updated once written | ||
6 | |||
7 | commit 4d0947dec4db1224354e2f6f00ae22ce38e62a43 upstream. | ||
8 | |||
9 | dTD's next dtd pointer need to be updated once CPU writes it, or this | ||
10 | request may not be handled by controller, then host will get NAK from | ||
11 | device forever. | ||
12 | |||
13 | This problem occurs when there is a request is handling, we need to add | ||
14 | a new request to dTD list, if this new request is added before the current | ||
15 | one is finished, the new request is intended to added as next dtd pointer | ||
16 | at current dTD, but without wmb(), the dTD's next dtd pointer may not be | ||
17 | updated when the controller reads it. In that case, the controller will | ||
18 | still get Terminate Bit is 1 at dTD's next dtd pointer, that means there is | ||
19 | no next request, then this new request is missed by controller. | ||
20 | |||
21 | Signed-off-by: Peter Chen <peter.chen@freescale.com> | ||
22 | Acked-by: Li Yang <leoli@freescale.com> | ||
23 | Signed-off-by: Felipe Balbi <balbi@ti.com> | ||
24 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
25 | --- | ||
26 | drivers/usb/gadget/fsl_udc_core.c | 2 ++ | ||
27 | 1 file changed, 2 insertions(+) | ||
28 | |||
29 | diff --git a/drivers/usb/gadget/fsl_udc_core.c b/drivers/usb/gadget/fsl_udc_core.c | ||
30 | index 9085d14..185db03 100644 | ||
31 | --- a/drivers/usb/gadget/fsl_udc_core.c | ||
32 | +++ b/drivers/usb/gadget/fsl_udc_core.c | ||
33 | @@ -736,6 +736,8 @@ static void fsl_queue_td(struct fsl_ep *ep, struct fsl_req *req) | ||
34 | lastreq = list_entry(ep->queue.prev, struct fsl_req, queue); | ||
35 | lastreq->tail->next_td_ptr = | ||
36 | cpu_to_hc32(req->head->td_dma & DTD_ADDR_MASK); | ||
37 | + /* Ensure dTD's next dtd pointer to be updated */ | ||
38 | + wmb(); | ||
39 | /* Read prime bit, if 1 goto done */ | ||
40 | if (fsl_readl(&dr_regs->endpointprime) & bitmask) | ||
41 | return; | ||
42 | -- | ||
43 | 1.7.9.5 | ||
44 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0047-Add-missing-call-to-uart_update_timeout.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0047-Add-missing-call-to-uart_update_timeout.patch new file mode 100644 index 00000000..9c150815 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0047-Add-missing-call-to-uart_update_timeout.patch | |||
@@ -0,0 +1,36 @@ | |||
1 | From 17e2d3e18d2042fb6fb23605752754deb87772c5 Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?Lothar=20Wa=C3=9Fmann?= <LW@KARO-electronics.de> | ||
3 | Date: Thu, 3 May 2012 11:37:12 +0200 | ||
4 | Subject: [PATCH 047/117] Add missing call to uart_update_timeout() | ||
5 | MIME-Version: 1.0 | ||
6 | Content-Type: text/plain; charset=UTF-8 | ||
7 | Content-Transfer-Encoding: 8bit | ||
8 | |||
9 | commit 8b979f7c6bf13a57e7b6002f1175312a44773960 upstream. | ||
10 | |||
11 | This patch fixes a problem reported here: | ||
12 | http://article.gmane.org/gmane.linux.ports.arm.kernel/155242/match=auart | ||
13 | |||
14 | Signed-off-by: Lothar Waßmann <LW@KARO-electronics.de> | ||
15 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | drivers/tty/serial/mxs-auart.c | 2 ++ | ||
19 | 1 file changed, 2 insertions(+) | ||
20 | |||
21 | diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c | ||
22 | index 7e02c9c..5b3d063 100644 | ||
23 | --- a/drivers/tty/serial/mxs-auart.c | ||
24 | +++ b/drivers/tty/serial/mxs-auart.c | ||
25 | @@ -368,6 +368,8 @@ static void mxs_auart_settermios(struct uart_port *u, | ||
26 | |||
27 | writel(ctrl, u->membase + AUART_LINECTRL); | ||
28 | writel(ctrl2, u->membase + AUART_CTRL2); | ||
29 | + | ||
30 | + uart_update_timeout(u, termios->c_cflag, baud); | ||
31 | } | ||
32 | |||
33 | static irqreturn_t mxs_auart_irq_handle(int irq, void *context) | ||
34 | -- | ||
35 | 1.7.9.5 | ||
36 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0048-USB-ftdi-sio-add-support-for-Physik-Instrumente-E-86.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0048-USB-ftdi-sio-add-support-for-Physik-Instrumente-E-86.patch new file mode 100644 index 00000000..493344b4 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0048-USB-ftdi-sio-add-support-for-Physik-Instrumente-E-86.patch | |||
@@ -0,0 +1,58 @@ | |||
1 | From 52bf48eda8302a253e63ac9ec069a1635932b237 Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?=C3=89ric=20Piel?= <piel@delmic.com> | ||
3 | Date: Mon, 7 May 2012 12:37:54 +0200 | ||
4 | Subject: [PATCH 048/117] USB: ftdi-sio: add support for Physik Instrumente | ||
5 | E-861 | ||
6 | MIME-Version: 1.0 | ||
7 | Content-Type: text/plain; charset=UTF-8 | ||
8 | Content-Transfer-Encoding: 8bit | ||
9 | |||
10 | commit b69cc672052540e8efb1368420f10d7d4d8b8a3d upstream. | ||
11 | |||
12 | This adds VID/PID for the PI E-861. Without it, I had to do: | ||
13 | modprobe -q ftdi-sio product=0x1008 vendor=0x1a72 | ||
14 | |||
15 | http://www.physikinstrumente.com/en/products/prdetail.php?sortnr=900610 | ||
16 | |||
17 | Signed-off-by: Éric Piel <piel@delmic.com> | ||
18 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
19 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
20 | --- | ||
21 | drivers/usb/serial/ftdi_sio.c | 1 + | ||
22 | drivers/usb/serial/ftdi_sio_ids.h | 8 ++++++++ | ||
23 | 2 files changed, 9 insertions(+) | ||
24 | |||
25 | diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c | ||
26 | index c4cf3f3..450bdfe 100644 | ||
27 | --- a/drivers/usb/serial/ftdi_sio.c | ||
28 | +++ b/drivers/usb/serial/ftdi_sio.c | ||
29 | @@ -809,6 +809,7 @@ static struct usb_device_id id_table_combined [] = { | ||
30 | .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, | ||
31 | { USB_DEVICE(LARSENBRUSGAARD_VID, LB_ALTITRACK_PID) }, | ||
32 | { USB_DEVICE(GN_OTOMETRICS_VID, AURICAL_USB_PID) }, | ||
33 | + { USB_DEVICE(PI_VID, PI_E861_PID) }, | ||
34 | { USB_DEVICE(BAYER_VID, BAYER_CONTOUR_CABLE_PID) }, | ||
35 | { USB_DEVICE(FTDI_VID, MARVELL_OPENRD_PID), | ||
36 | .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, | ||
37 | diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h | ||
38 | index c6dd18e..219b199 100644 | ||
39 | --- a/drivers/usb/serial/ftdi_sio_ids.h | ||
40 | +++ b/drivers/usb/serial/ftdi_sio_ids.h | ||
41 | @@ -785,6 +785,14 @@ | ||
42 | #define RTSYSTEMS_SERIAL_VX7_PID 0x9e52 /* Serial converter for VX-7 Radios using FT232RL */ | ||
43 | #define RTSYSTEMS_CT29B_PID 0x9e54 /* CT29B Radio Cable */ | ||
44 | |||
45 | + | ||
46 | +/* | ||
47 | + * Physik Instrumente | ||
48 | + * http://www.physikinstrumente.com/en/products/ | ||
49 | + */ | ||
50 | +#define PI_VID 0x1a72 /* Vendor ID */ | ||
51 | +#define PI_E861_PID 0x1008 /* E-861 piezo controller USB connection */ | ||
52 | + | ||
53 | /* | ||
54 | * Bayer Ascensia Contour blood glucose meter USB-converter cable. | ||
55 | * http://winglucofacts.com/cables/ | ||
56 | -- | ||
57 | 1.7.9.5 | ||
58 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0049-USB-ffs-test-fix-length-argument-of-out-function-cal.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0049-USB-ffs-test-fix-length-argument-of-out-function-cal.patch new file mode 100644 index 00000000..81f1eb11 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0049-USB-ffs-test-fix-length-argument-of-out-function-cal.patch | |||
@@ -0,0 +1,36 @@ | |||
1 | From 7041c376790f592d9ed3c6b88a44a6cf18b8423c Mon Sep 17 00:00:00 2001 | ||
2 | From: Matthias Fend <Matthias.Fend@wolfvision.net> | ||
3 | Date: Mon, 7 May 2012 14:37:30 +0200 | ||
4 | Subject: [PATCH 049/117] USB: ffs-test: fix length argument of out function | ||
5 | call | ||
6 | |||
7 | commit eb9c5836384cd2a276254df6254ed71117983626 upstream. | ||
8 | |||
9 | The out functions should only handle actual available data instead of the complete buffer. | ||
10 | Otherwise for example the ep0_consume function will report ghost events since it tries to decode | ||
11 | the complete buffer - which may contain partly invalid data. | ||
12 | |||
13 | Signed-off-by: Matthias Fend <matthias.fend@wolfvision.net> | ||
14 | Acked-by: Michal Nazarewicz <mina86@mina86.com> | ||
15 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | tools/usb/ffs-test.c | 2 +- | ||
19 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
20 | |||
21 | diff --git a/tools/usb/ffs-test.c b/tools/usb/ffs-test.c | ||
22 | index b9c7986..f17dfee 100644 | ||
23 | --- a/tools/usb/ffs-test.c | ||
24 | +++ b/tools/usb/ffs-test.c | ||
25 | @@ -324,7 +324,7 @@ static void *start_thread_helper(void *arg) | ||
26 | |||
27 | ret = t->in(t, t->buf, t->buf_size); | ||
28 | if (ret > 0) { | ||
29 | - ret = t->out(t, t->buf, t->buf_size); | ||
30 | + ret = t->out(t, t->buf, ret); | ||
31 | name = out_name; | ||
32 | op = "write"; | ||
33 | } else { | ||
34 | -- | ||
35 | 1.7.9.5 | ||
36 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0050-HID-wiimote-Fix-IR-data-parser.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0050-HID-wiimote-Fix-IR-data-parser.patch new file mode 100644 index 00000000..c5f666a3 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0050-HID-wiimote-Fix-IR-data-parser.patch | |||
@@ -0,0 +1,60 @@ | |||
1 | From 0842fcae9a509f08c6d540dfa4d3f097c4f3f92d Mon Sep 17 00:00:00 2001 | ||
2 | From: David Herrmann <dh.herrmann@googlemail.com> | ||
3 | Date: Tue, 8 May 2012 16:52:31 +0200 | ||
4 | Subject: [PATCH 050/117] HID: wiimote: Fix IR data parser | ||
5 | |||
6 | commit 74b89e8a3625c17c7452532dfb997ac4f1a38751 upstream. | ||
7 | |||
8 | We incorrectly parse incoming IR data. The extra byte contains the upper | ||
9 | bits and not the lower bits of the x/y coordinates. User-space expects | ||
10 | absolute position data from us so this patch does not break existing | ||
11 | applications. On the contrary, it extends the virtual view and fixes | ||
12 | garbage reports for margin areas of the virtual screen. | ||
13 | |||
14 | Reported-by: Peter Bukovsky <bukovsky.peter@gmail.com> | ||
15 | Signed-off-by: David Herrmann <dh.herrmann@googlemail.com> | ||
16 | Signed-off-by: Jiri Kosina <jkosina@suse.cz> | ||
17 | [bwh: Backported to 3.2: adjust filename] | ||
18 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
19 | --- | ||
20 | drivers/hid/hid-wiimote.c | 16 +++++----------- | ||
21 | 1 file changed, 5 insertions(+), 11 deletions(-) | ||
22 | |||
23 | diff --git a/drivers/hid/hid-wiimote.c b/drivers/hid/hid-wiimote.c | ||
24 | index 76739c0..bfa9a27 100644 | ||
25 | --- a/drivers/hid/hid-wiimote.c | ||
26 | +++ b/drivers/hid/hid-wiimote.c | ||
27 | @@ -829,7 +829,7 @@ static void __ir_to_input(struct wiimote_data *wdata, const __u8 *ir, | ||
28 | |||
29 | /* | ||
30 | * Basic IR data is encoded into 3 bytes. The first two bytes are the | ||
31 | - * upper 8 bit of the X/Y data, the 3rd byte contains the lower 2 bits | ||
32 | + * lower 8 bit of the X/Y data, the 3rd byte contains the upper 2 bits | ||
33 | * of both. | ||
34 | * If data is packed, then the 3rd byte is put first and slightly | ||
35 | * reordered. This allows to interleave packed and non-packed data to | ||
36 | @@ -838,17 +838,11 @@ static void __ir_to_input(struct wiimote_data *wdata, const __u8 *ir, | ||
37 | */ | ||
38 | |||
39 | if (packed) { | ||
40 | - x = ir[1] << 2; | ||
41 | - y = ir[2] << 2; | ||
42 | - | ||
43 | - x |= ir[0] & 0x3; | ||
44 | - y |= (ir[0] >> 2) & 0x3; | ||
45 | + x = ir[1] | ((ir[0] & 0x03) << 8); | ||
46 | + y = ir[2] | ((ir[0] & 0x0c) << 6); | ||
47 | } else { | ||
48 | - x = ir[0] << 2; | ||
49 | - y = ir[1] << 2; | ||
50 | - | ||
51 | - x |= (ir[2] >> 4) & 0x3; | ||
52 | - y |= (ir[2] >> 6) & 0x3; | ||
53 | + x = ir[0] | ((ir[2] & 0x30) << 4); | ||
54 | + y = ir[1] | ((ir[2] & 0xc0) << 2); | ||
55 | } | ||
56 | |||
57 | input_report_abs(wdata->ir, xid, x); | ||
58 | -- | ||
59 | 1.7.9.5 | ||
60 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0051-usb-storage-unusual_devs-entry-for-Yarvik-PMP400-MP4.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0051-usb-storage-unusual_devs-entry-for-Yarvik-PMP400-MP4.patch new file mode 100644 index 00000000..6a9b5d95 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0051-usb-storage-unusual_devs-entry-for-Yarvik-PMP400-MP4.patch | |||
@@ -0,0 +1,41 @@ | |||
1 | From a595c200511d66729bc55aadbb93adb96988c590 Mon Sep 17 00:00:00 2001 | ||
2 | From: Alan Stern <stern@rowland.harvard.edu> | ||
3 | Date: Tue, 8 May 2012 15:15:25 -0400 | ||
4 | Subject: [PATCH 051/117] usb-storage: unusual_devs entry for Yarvik PMP400 | ||
5 | MP4 player | ||
6 | |||
7 | commit df767b71e5816692134d59c0c17e0f77cd73333d upstream. | ||
8 | |||
9 | This patch (as1553) adds an unusual_dev entrie for the Yarvik PMP400 | ||
10 | MP4 music player. | ||
11 | |||
12 | Signed-off-by: Alan Stern <stern@rowland.harvard.edu> | ||
13 | Reported-by: Jesse Feddema <jdfeddema@gmail.com> | ||
14 | Tested-by: Jesse Feddema <jdfeddema@gmail.com> | ||
15 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | drivers/usb/storage/unusual_devs.h | 7 +++++++ | ||
19 | 1 file changed, 7 insertions(+) | ||
20 | |||
21 | diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h | ||
22 | index 24caba7..591f57f 100644 | ||
23 | --- a/drivers/usb/storage/unusual_devs.h | ||
24 | +++ b/drivers/usb/storage/unusual_devs.h | ||
25 | @@ -1885,6 +1885,13 @@ UNUSUAL_DEV( 0x1652, 0x6600, 0x0201, 0x0201, | ||
26 | USB_SC_DEVICE, USB_PR_DEVICE, NULL, | ||
27 | US_FL_IGNORE_RESIDUE ), | ||
28 | |||
29 | +/* Reported by Jesse Feddema <jdfeddema@gmail.com> */ | ||
30 | +UNUSUAL_DEV( 0x177f, 0x0400, 0x0000, 0x0000, | ||
31 | + "Yarvik", | ||
32 | + "PMP400", | ||
33 | + USB_SC_DEVICE, USB_PR_DEVICE, NULL, | ||
34 | + US_FL_BULK_IGNORE_TAG | US_FL_MAX_SECTORS_64 ), | ||
35 | + | ||
36 | /* Reported by Hans de Goede <hdegoede@redhat.com> | ||
37 | * These Appotech controllers are found in Picture Frames, they provide a | ||
38 | * (buggy) emulation of a cdrom drive which contains the windows software | ||
39 | -- | ||
40 | 1.7.9.5 | ||
41 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0052-USB-ohci-at91-add-a-reset-function-to-fix-race-condi.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0052-USB-ohci-at91-add-a-reset-function-to-fix-race-condi.patch new file mode 100644 index 00000000..3f380bb0 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0052-USB-ohci-at91-add-a-reset-function-to-fix-race-condi.patch | |||
@@ -0,0 +1,63 @@ | |||
1 | From ac7728e7d633262cd020d764404abf381f282d12 Mon Sep 17 00:00:00 2001 | ||
2 | From: Nicolas Ferre <nicolas.ferre@atmel.com> | ||
3 | Date: Wed, 9 May 2012 10:48:54 +0200 | ||
4 | Subject: [PATCH 052/117] USB: ohci-at91: add a reset function to fix race | ||
5 | condition | ||
6 | |||
7 | commit 07e4e556eff4938eb2edf2591de3aa7d7fb82b52 upstream. | ||
8 | |||
9 | A possible race condition appears because we are not initializing | ||
10 | the ohci->regs before calling usb_hcd_request_irqs(). | ||
11 | We move the call to ohci_init() in hcd->driver->reset() instead of | ||
12 | hcd->driver->start() to fix this. | ||
13 | This was experienced when we share the same IRQ line between OHCI and EHCI | ||
14 | controllers. | ||
15 | |||
16 | Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com> | ||
17 | Tested-by: Christian Eggers <christian.eggers@kathrein.de> | ||
18 | Acked-by: Alan Stern <stern@rowland.harvard.edu> | ||
19 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
20 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
21 | --- | ||
22 | drivers/usb/host/ohci-at91.c | 11 ++++++++++- | ||
23 | 1 file changed, 10 insertions(+), 1 deletion(-) | ||
24 | |||
25 | diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c | ||
26 | index 95a9fec..a60c7aa 100644 | ||
27 | --- a/drivers/usb/host/ohci-at91.c | ||
28 | +++ b/drivers/usb/host/ohci-at91.c | ||
29 | @@ -199,7 +199,7 @@ static void usb_hcd_at91_remove(struct usb_hcd *hcd, | ||
30 | /*-------------------------------------------------------------------------*/ | ||
31 | |||
32 | static int __devinit | ||
33 | -ohci_at91_start (struct usb_hcd *hcd) | ||
34 | +ohci_at91_reset (struct usb_hcd *hcd) | ||
35 | { | ||
36 | struct at91_usbh_data *board = hcd->self.controller->platform_data; | ||
37 | struct ohci_hcd *ohci = hcd_to_ohci (hcd); | ||
38 | @@ -209,6 +209,14 @@ ohci_at91_start (struct usb_hcd *hcd) | ||
39 | return ret; | ||
40 | |||
41 | ohci->num_ports = board->ports; | ||
42 | + return 0; | ||
43 | +} | ||
44 | + | ||
45 | +static int __devinit | ||
46 | +ohci_at91_start (struct usb_hcd *hcd) | ||
47 | +{ | ||
48 | + struct ohci_hcd *ohci = hcd_to_ohci (hcd); | ||
49 | + int ret; | ||
50 | |||
51 | if ((ret = ohci_run(ohci)) < 0) { | ||
52 | err("can't start %s", hcd->self.bus_name); | ||
53 | @@ -390,6 +398,7 @@ static const struct hc_driver ohci_at91_hc_driver = { | ||
54 | /* | ||
55 | * basic lifecycle operations | ||
56 | */ | ||
57 | + .reset = ohci_at91_reset, | ||
58 | .start = ohci_at91_start, | ||
59 | .stop = ohci_stop, | ||
60 | .shutdown = ohci_shutdown, | ||
61 | -- | ||
62 | 1.7.9.5 | ||
63 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0053-HID-logitech-read-all-32-bits-of-report-type-bitfiel.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0053-HID-logitech-read-all-32-bits-of-report-type-bitfiel.patch new file mode 100644 index 00000000..181bd55e --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0053-HID-logitech-read-all-32-bits-of-report-type-bitfiel.patch | |||
@@ -0,0 +1,70 @@ | |||
1 | From 4061b435a02342ee10ee34fb69f2c75d53e8da70 Mon Sep 17 00:00:00 2001 | ||
2 | From: Jonathan Nieder <jrnieder@gmail.com> | ||
3 | Date: Fri, 11 May 2012 16:17:16 +0200 | ||
4 | Subject: [PATCH 053/117] HID: logitech: read all 32 bits of report type | ||
5 | bitfield | ||
6 | |||
7 | commit 44d27f7dfedd9aadc082cda31462f6600f56e4ec upstream. | ||
8 | |||
9 | On big-endian systems (e.g., Apple PowerBook), trying to use a | ||
10 | logitech wireless mouse with the Logitech Unifying Receiver does not | ||
11 | work with v3.2 and later kernels. The device doesn't show up in | ||
12 | /dev/input. Older kernels work fine. | ||
13 | |||
14 | That is because the new hid-logitech-dj driver claims the device. The | ||
15 | device arrival notification appears: | ||
16 | |||
17 | 20 00 41 02 00 00 00 00 00 00 00 00 00 00 00 | ||
18 | |||
19 | and we read the report_types bitfield (02 00 00 00) to find out what | ||
20 | kind of device it is. Unfortunately the driver only reads the first 8 | ||
21 | bits and treats that value as a 32-bit little-endian number, so on a | ||
22 | powerpc the report type seems to be 0x02000000 and is not recognized. | ||
23 | |||
24 | Even on little-endian machines, connecting a media center remote | ||
25 | control (report type 00 01 00 00) with this driver loaded would | ||
26 | presumably fail for the same reason. | ||
27 | |||
28 | Fix both problems by using get_unaligned_le32() to read all four | ||
29 | bytes, which is a little clearer anyway. After this change, the | ||
30 | wireless mouse works on Hugo's PowerBook again. | ||
31 | |||
32 | Based on a patch by Nestor Lopez Casado. | ||
33 | Addresses http://bugs.debian.org/671292 | ||
34 | |||
35 | Reported-by: Hugo Osvaldo Barrera <hugo@osvaldobarrera.com.ar> | ||
36 | Inspired-by: Nestor Lopez Casado <nlopezcasad@logitech.com> | ||
37 | Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> | ||
38 | Signed-off-by: Nestor Lopez Casado <nlopezcasad@logitech.com> | ||
39 | Signed-off-by: Jiri Kosina <jkosina@suse.cz> | ||
40 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
41 | --- | ||
42 | drivers/hid/hid-logitech-dj.c | 5 +++-- | ||
43 | 1 file changed, 3 insertions(+), 2 deletions(-) | ||
44 | |||
45 | diff --git a/drivers/hid/hid-logitech-dj.c b/drivers/hid/hid-logitech-dj.c | ||
46 | index 38b12e4..2eac8c5 100644 | ||
47 | --- a/drivers/hid/hid-logitech-dj.c | ||
48 | +++ b/drivers/hid/hid-logitech-dj.c | ||
49 | @@ -26,6 +26,7 @@ | ||
50 | #include <linux/hid.h> | ||
51 | #include <linux/module.h> | ||
52 | #include <linux/usb.h> | ||
53 | +#include <asm/unaligned.h> | ||
54 | #include "usbhid/usbhid.h" | ||
55 | #include "hid-ids.h" | ||
56 | #include "hid-logitech-dj.h" | ||
57 | @@ -265,8 +266,8 @@ static void logi_dj_recv_add_djhid_device(struct dj_receiver_dev *djrcv_dev, | ||
58 | goto dj_device_allocate_fail; | ||
59 | } | ||
60 | |||
61 | - dj_dev->reports_supported = le32_to_cpu( | ||
62 | - dj_report->report_params[DEVICE_PAIRED_RF_REPORT_TYPE]); | ||
63 | + dj_dev->reports_supported = get_unaligned_le32( | ||
64 | + dj_report->report_params + DEVICE_PAIRED_RF_REPORT_TYPE); | ||
65 | dj_dev->hdev = dj_hiddev; | ||
66 | dj_dev->dj_receiver_dev = djrcv_dev; | ||
67 | dj_dev->device_index = dj_report->device_index; | ||
68 | -- | ||
69 | 1.7.9.5 | ||
70 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0054-USB-serial-ti_usb_3410_5052-Add-support-for-the-FRI2.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0054-USB-serial-ti_usb_3410_5052-Add-support-for-the-FRI2.patch new file mode 100644 index 00000000..105ed170 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0054-USB-serial-ti_usb_3410_5052-Add-support-for-the-FRI2.patch | |||
@@ -0,0 +1,77 @@ | |||
1 | From 38827d01920cd8adbdbdb89d79b749f6cb50b8f0 Mon Sep 17 00:00:00 2001 | ||
2 | From: Darren Hart <dvhart@linux.intel.com> | ||
3 | Date: Fri, 11 May 2012 13:56:57 -0700 | ||
4 | Subject: [PATCH 054/117] USB: serial: ti_usb_3410_5052: Add support for the | ||
5 | FRI2 serial console | ||
6 | |||
7 | commit 975dc33b82cb887d75a29b1e3835c8eb063a8e99 upstream. | ||
8 | |||
9 | The Kontron M2M development board, also known as the Fish River Island II, | ||
10 | has an optional daughter card providing access to the PCH_UART (EG20T) via | ||
11 | a ti_usb_3410_5052 uart to usb chip. | ||
12 | |||
13 | http://us.kontron.com/products/systems+and+platforms/m2m/m2m+smart+services+developer+kit.html | ||
14 | |||
15 | Signed-off-by: Darren Hart <dvhart@linux.intel.com> | ||
16 | CC: Al Borchers <alborchers@steinerpoint.com> | ||
17 | CC: Peter Berger <pberger@brimson.com> | ||
18 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
19 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
20 | --- | ||
21 | drivers/usb/serial/ti_usb_3410_5052.c | 6 ++++-- | ||
22 | drivers/usb/serial/ti_usb_3410_5052.h | 1 + | ||
23 | 2 files changed, 5 insertions(+), 2 deletions(-) | ||
24 | |||
25 | diff --git a/drivers/usb/serial/ti_usb_3410_5052.c b/drivers/usb/serial/ti_usb_3410_5052.c | ||
26 | index 21c82b0..2856474 100644 | ||
27 | --- a/drivers/usb/serial/ti_usb_3410_5052.c | ||
28 | +++ b/drivers/usb/serial/ti_usb_3410_5052.c | ||
29 | @@ -165,7 +165,7 @@ static unsigned int product_5052_count; | ||
30 | /* the array dimension is the number of default entries plus */ | ||
31 | /* TI_EXTRA_VID_PID_COUNT user defined entries plus 1 terminating */ | ||
32 | /* null entry */ | ||
33 | -static struct usb_device_id ti_id_table_3410[14+TI_EXTRA_VID_PID_COUNT+1] = { | ||
34 | +static struct usb_device_id ti_id_table_3410[15+TI_EXTRA_VID_PID_COUNT+1] = { | ||
35 | { USB_DEVICE(TI_VENDOR_ID, TI_3410_PRODUCT_ID) }, | ||
36 | { USB_DEVICE(TI_VENDOR_ID, TI_3410_EZ430_ID) }, | ||
37 | { USB_DEVICE(MTS_VENDOR_ID, MTS_GSM_NO_FW_PRODUCT_ID) }, | ||
38 | @@ -180,6 +180,7 @@ static struct usb_device_id ti_id_table_3410[14+TI_EXTRA_VID_PID_COUNT+1] = { | ||
39 | { USB_DEVICE(IBM_VENDOR_ID, IBM_454B_PRODUCT_ID) }, | ||
40 | { USB_DEVICE(IBM_VENDOR_ID, IBM_454C_PRODUCT_ID) }, | ||
41 | { USB_DEVICE(ABBOTT_VENDOR_ID, ABBOTT_PRODUCT_ID) }, | ||
42 | + { USB_DEVICE(TI_VENDOR_ID, FRI2_PRODUCT_ID) }, | ||
43 | }; | ||
44 | |||
45 | static struct usb_device_id ti_id_table_5052[5+TI_EXTRA_VID_PID_COUNT+1] = { | ||
46 | @@ -189,7 +190,7 @@ static struct usb_device_id ti_id_table_5052[5+TI_EXTRA_VID_PID_COUNT+1] = { | ||
47 | { USB_DEVICE(TI_VENDOR_ID, TI_5052_FIRMWARE_PRODUCT_ID) }, | ||
48 | }; | ||
49 | |||
50 | -static struct usb_device_id ti_id_table_combined[18+2*TI_EXTRA_VID_PID_COUNT+1] = { | ||
51 | +static struct usb_device_id ti_id_table_combined[19+2*TI_EXTRA_VID_PID_COUNT+1] = { | ||
52 | { USB_DEVICE(TI_VENDOR_ID, TI_3410_PRODUCT_ID) }, | ||
53 | { USB_DEVICE(TI_VENDOR_ID, TI_3410_EZ430_ID) }, | ||
54 | { USB_DEVICE(MTS_VENDOR_ID, MTS_GSM_NO_FW_PRODUCT_ID) }, | ||
55 | @@ -208,6 +209,7 @@ static struct usb_device_id ti_id_table_combined[18+2*TI_EXTRA_VID_PID_COUNT+1] | ||
56 | { USB_DEVICE(IBM_VENDOR_ID, IBM_454B_PRODUCT_ID) }, | ||
57 | { USB_DEVICE(IBM_VENDOR_ID, IBM_454C_PRODUCT_ID) }, | ||
58 | { USB_DEVICE(ABBOTT_VENDOR_ID, ABBOTT_PRODUCT_ID) }, | ||
59 | + { USB_DEVICE(TI_VENDOR_ID, FRI2_PRODUCT_ID) }, | ||
60 | { } | ||
61 | }; | ||
62 | |||
63 | diff --git a/drivers/usb/serial/ti_usb_3410_5052.h b/drivers/usb/serial/ti_usb_3410_5052.h | ||
64 | index f140f1b..b353e7e 100644 | ||
65 | --- a/drivers/usb/serial/ti_usb_3410_5052.h | ||
66 | +++ b/drivers/usb/serial/ti_usb_3410_5052.h | ||
67 | @@ -37,6 +37,7 @@ | ||
68 | #define TI_5152_BOOT_PRODUCT_ID 0x5152 /* no EEPROM, no firmware */ | ||
69 | #define TI_5052_EEPROM_PRODUCT_ID 0x505A /* EEPROM, no firmware */ | ||
70 | #define TI_5052_FIRMWARE_PRODUCT_ID 0x505F /* firmware is running */ | ||
71 | +#define FRI2_PRODUCT_ID 0x5053 /* Fish River Island II */ | ||
72 | |||
73 | /* Multi-Tech vendor and product ids */ | ||
74 | #define MTS_VENDOR_ID 0x06E0 | ||
75 | -- | ||
76 | 1.7.9.5 | ||
77 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0055-USB-cdc-wdm-poll-must-return-POLLHUP-if-device-is-go.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0055-USB-cdc-wdm-poll-must-return-POLLHUP-if-device-is-go.patch new file mode 100644 index 00000000..40e98b33 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0055-USB-cdc-wdm-poll-must-return-POLLHUP-if-device-is-go.patch | |||
@@ -0,0 +1,38 @@ | |||
1 | From 420e76b95a867f5105ee9b3d824c47f62601c19b Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn@mork.no> | ||
3 | Date: Wed, 9 May 2012 13:53:21 +0200 | ||
4 | Subject: [PATCH 055/117] USB: cdc-wdm: poll must return POLLHUP if device is | ||
5 | gone | ||
6 | MIME-Version: 1.0 | ||
7 | Content-Type: text/plain; charset=UTF-8 | ||
8 | Content-Transfer-Encoding: 8bit | ||
9 | |||
10 | commit 616b6937e348ef2b4c6ea5fef2cd3c441145efb0 upstream. | ||
11 | |||
12 | Else the poll will be restarted indefinitely in a tight loop, | ||
13 | preventing final device cleanup. | ||
14 | |||
15 | Cc: Oliver Neukum <oliver@neukum.org> | ||
16 | Signed-off-by: Bjørn Mork <bjorn@mork.no> | ||
17 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
18 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
19 | --- | ||
20 | drivers/usb/class/cdc-wdm.c | 2 +- | ||
21 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
22 | |||
23 | diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c | ||
24 | index cfe5be4..38d8c33 100644 | ||
25 | --- a/drivers/usb/class/cdc-wdm.c | ||
26 | +++ b/drivers/usb/class/cdc-wdm.c | ||
27 | @@ -511,7 +511,7 @@ static unsigned int wdm_poll(struct file *file, struct poll_table_struct *wait) | ||
28 | |||
29 | spin_lock_irqsave(&desc->iuspin, flags); | ||
30 | if (test_bit(WDM_DISCONNECTING, &desc->flags)) { | ||
31 | - mask = POLLERR; | ||
32 | + mask = POLLHUP | POLLERR; | ||
33 | spin_unlock_irqrestore(&desc->iuspin, flags); | ||
34 | goto desc_out; | ||
35 | } | ||
36 | -- | ||
37 | 1.7.9.5 | ||
38 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0056-USB-cdc-wdm-add-debug-messages-on-cleanup.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0056-USB-cdc-wdm-add-debug-messages-on-cleanup.patch new file mode 100644 index 00000000..4ad688aa --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0056-USB-cdc-wdm-add-debug-messages-on-cleanup.patch | |||
@@ -0,0 +1,54 @@ | |||
1 | From ec4941d4623bada1da050a962485961da8c928d6 Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn@mork.no> | ||
3 | Date: Mon, 30 Apr 2012 09:26:11 +0200 | ||
4 | Subject: [PATCH 056/117] USB: cdc-wdm: add debug messages on cleanup | ||
5 | MIME-Version: 1.0 | ||
6 | Content-Type: text/plain; charset=UTF-8 | ||
7 | Content-Transfer-Encoding: 8bit | ||
8 | |||
9 | commit 880bca3a2a6f159d7453e0cbcbfe2f1d8204d907 upstream. | ||
10 | |||
11 | Device state cleanup is done in either wdm_disconnect or | ||
12 | wdm_release depending on the order they are called. Adding | ||
13 | a couple of debug messages to document the program flow. | ||
14 | |||
15 | Signed-off-by: Bjørn Mork <bjorn@mork.no> | ||
16 | Acked-by: Oliver Neukum <oneukum@suse.de> | ||
17 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
18 | [bwh: Backported to 3.2: adjust context] | ||
19 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
20 | --- | ||
21 | drivers/usb/class/cdc-wdm.c | 8 ++++++-- | ||
22 | 1 file changed, 6 insertions(+), 2 deletions(-) | ||
23 | |||
24 | diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c | ||
25 | index 38d8c33..40a3f0b 100644 | ||
26 | --- a/drivers/usb/class/cdc-wdm.c | ||
27 | +++ b/drivers/usb/class/cdc-wdm.c | ||
28 | @@ -588,10 +588,12 @@ static int wdm_release(struct inode *inode, struct file *file) | ||
29 | if (!desc->count) { | ||
30 | dev_dbg(&desc->intf->dev, "wdm_release: cleanup"); | ||
31 | kill_urbs(desc); | ||
32 | - if (!test_bit(WDM_DISCONNECTING, &desc->flags)) | ||
33 | + if (!test_bit(WDM_DISCONNECTING, &desc->flags)) { | ||
34 | desc->intf->needs_remote_wakeup = 0; | ||
35 | - else | ||
36 | + } else { | ||
37 | + dev_dbg(&desc->intf->dev, "%s: device gone - cleaning up\n", __func__); | ||
38 | cleanup(desc); | ||
39 | + } | ||
40 | } | ||
41 | mutex_unlock(&wdm_mutex); | ||
42 | return 0; | ||
43 | @@ -807,6 +809,8 @@ static void wdm_disconnect(struct usb_interface *intf) | ||
44 | mutex_unlock(&desc->rlock); | ||
45 | if (!desc->count) | ||
46 | cleanup(desc); | ||
47 | + else | ||
48 | + dev_dbg(&intf->dev, "%s: %d open files - postponing cleanup\n", __func__, desc->count); | ||
49 | mutex_unlock(&wdm_mutex); | ||
50 | } | ||
51 | |||
52 | -- | ||
53 | 1.7.9.5 | ||
54 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0057-USB-cdc-wdm-cannot-use-dev_printk-when-device-is-gon.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0057-USB-cdc-wdm-cannot-use-dev_printk-when-device-is-gon.patch new file mode 100644 index 00000000..146b18b3 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0057-USB-cdc-wdm-cannot-use-dev_printk-when-device-is-gon.patch | |||
@@ -0,0 +1,66 @@ | |||
1 | From beaa75548738c322895c5b3ca7c010397cfb0afb Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn@mork.no> | ||
3 | Date: Wed, 9 May 2012 13:53:22 +0200 | ||
4 | Subject: [PATCH 057/117] USB: cdc-wdm: cannot use dev_printk when device is | ||
5 | gone | ||
6 | MIME-Version: 1.0 | ||
7 | Content-Type: text/plain; charset=UTF-8 | ||
8 | Content-Transfer-Encoding: 8bit | ||
9 | |||
10 | commit 6b0b79d38806481c1c8fffa7c5842f3c83679a42 upstream. | ||
11 | |||
12 | We cannot dereference a removed USB interface for | ||
13 | dev_printk. Use pr_debug instead where necessary. | ||
14 | |||
15 | Flush errors are expected if device is unplugged and are | ||
16 | therefore best ingored at this point. | ||
17 | |||
18 | Move the kill_urbs() call in wdm_release with dev_dbg() | ||
19 | for the non disconnect, as we know it has already been | ||
20 | called if WDM_DISCONNECTING is set. This does not | ||
21 | actually fix anything, but keeps the code more consistent. | ||
22 | |||
23 | Cc: Oliver Neukum <oliver@neukum.org> | ||
24 | Signed-off-by: Bjørn Mork <bjorn@mork.no> | ||
25 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
26 | [bwh: Backported to 3.2: adjust context] | ||
27 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
28 | --- | ||
29 | drivers/usb/class/cdc-wdm.c | 11 +++++++---- | ||
30 | 1 file changed, 7 insertions(+), 4 deletions(-) | ||
31 | |||
32 | diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c | ||
33 | index 40a3f0b..554ac90 100644 | ||
34 | --- a/drivers/usb/class/cdc-wdm.c | ||
35 | +++ b/drivers/usb/class/cdc-wdm.c | ||
36 | @@ -496,7 +496,9 @@ static int wdm_flush(struct file *file, fl_owner_t id) | ||
37 | struct wdm_device *desc = file->private_data; | ||
38 | |||
39 | wait_event(desc->wait, !test_bit(WDM_IN_USE, &desc->flags)); | ||
40 | - if (desc->werr < 0) | ||
41 | + | ||
42 | + /* cannot dereference desc->intf if WDM_DISCONNECTING */ | ||
43 | + if (desc->werr < 0 && !test_bit(WDM_DISCONNECTING, &desc->flags)) | ||
44 | dev_err(&desc->intf->dev, "Error in flush path: %d\n", | ||
45 | desc->werr); | ||
46 | |||
47 | @@ -586,12 +588,13 @@ static int wdm_release(struct inode *inode, struct file *file) | ||
48 | mutex_unlock(&desc->wlock); | ||
49 | |||
50 | if (!desc->count) { | ||
51 | - dev_dbg(&desc->intf->dev, "wdm_release: cleanup"); | ||
52 | - kill_urbs(desc); | ||
53 | if (!test_bit(WDM_DISCONNECTING, &desc->flags)) { | ||
54 | + dev_dbg(&desc->intf->dev, "wdm_release: cleanup"); | ||
55 | + kill_urbs(desc); | ||
56 | desc->intf->needs_remote_wakeup = 0; | ||
57 | } else { | ||
58 | - dev_dbg(&desc->intf->dev, "%s: device gone - cleaning up\n", __func__); | ||
59 | + /* must avoid dev_printk here as desc->intf is invalid */ | ||
60 | + pr_debug(KBUILD_MODNAME " %s: device gone - cleaning up\n", __func__); | ||
61 | cleanup(desc); | ||
62 | } | ||
63 | } | ||
64 | -- | ||
65 | 1.7.9.5 | ||
66 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0058-tty-Allow-uart_register-unregister-register.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0058-tty-Allow-uart_register-unregister-register.patch new file mode 100644 index 00000000..8c999bc1 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0058-tty-Allow-uart_register-unregister-register.patch | |||
@@ -0,0 +1,33 @@ | |||
1 | From d3f8f68e0ff8065d2769fc80ebab6cd4a99df65d Mon Sep 17 00:00:00 2001 | ||
2 | From: Alan Cox <alan@linux.intel.com> | ||
3 | Date: Mon, 14 May 2012 14:51:22 +0100 | ||
4 | Subject: [PATCH 058/117] tty: Allow uart_register/unregister/register | ||
5 | |||
6 | commit 1e66cded334e6cea596c72f6f650eec351b1e959 upstream. | ||
7 | |||
8 | This is legitimate but because we don't clear the drv->state pointer in the | ||
9 | unregister code causes a bogus BUG(). | ||
10 | |||
11 | Resolves-bug: https://bugzilla.kernel.org/show_bug.cgi?id=42880 | ||
12 | Signed-off-by: Alan Cox <alan@linux.intel.com> | ||
13 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
14 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
15 | --- | ||
16 | drivers/tty/serial/serial_core.c | 1 + | ||
17 | 1 file changed, 1 insertion(+) | ||
18 | |||
19 | diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c | ||
20 | index 0406d7f..af5ffb9 100644 | ||
21 | --- a/drivers/tty/serial/serial_core.c | ||
22 | +++ b/drivers/tty/serial/serial_core.c | ||
23 | @@ -2305,6 +2305,7 @@ void uart_unregister_driver(struct uart_driver *drv) | ||
24 | tty_unregister_driver(p); | ||
25 | put_tty_driver(p); | ||
26 | kfree(drv->state); | ||
27 | + drv->state = NULL; | ||
28 | drv->tty_driver = NULL; | ||
29 | } | ||
30 | |||
31 | -- | ||
32 | 1.7.9.5 | ||
33 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0059-workqueue-skip-nr_running-sanity-check-in-worker_ent.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0059-workqueue-skip-nr_running-sanity-check-in-worker_ent.patch new file mode 100644 index 00000000..22d6da37 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0059-workqueue-skip-nr_running-sanity-check-in-worker_ent.patch | |||
@@ -0,0 +1,51 @@ | |||
1 | From ac2fd7de4ac5b536aace631588cdab6c27a3ef9d Mon Sep 17 00:00:00 2001 | ||
2 | From: Tejun Heo <tj@kernel.org> | ||
3 | Date: Mon, 14 May 2012 15:04:50 -0700 | ||
4 | Subject: [PATCH 059/117] workqueue: skip nr_running sanity check in | ||
5 | worker_enter_idle() if trustee is active | ||
6 | |||
7 | commit 544ecf310f0e7f51fa057ac2a295fc1b3b35a9d3 upstream. | ||
8 | |||
9 | worker_enter_idle() has WARN_ON_ONCE() which triggers if nr_running | ||
10 | isn't zero when every worker is idle. This can trigger spuriously | ||
11 | while a cpu is going down due to the way trustee sets %WORKER_ROGUE | ||
12 | and zaps nr_running. | ||
13 | |||
14 | It first sets %WORKER_ROGUE on all workers without updating | ||
15 | nr_running, releases gcwq->lock, schedules, regrabs gcwq->lock and | ||
16 | then zaps nr_running. If the last running worker enters idle | ||
17 | inbetween, it would see stale nr_running which hasn't been zapped yet | ||
18 | and trigger the WARN_ON_ONCE(). | ||
19 | |||
20 | Fix it by performing the sanity check iff the trustee is idle. | ||
21 | |||
22 | Signed-off-by: Tejun Heo <tj@kernel.org> | ||
23 | Reported-by: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> | ||
24 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
25 | --- | ||
26 | kernel/workqueue.c | 9 +++++++-- | ||
27 | 1 file changed, 7 insertions(+), 2 deletions(-) | ||
28 | |||
29 | diff --git a/kernel/workqueue.c b/kernel/workqueue.c | ||
30 | index bb425b1..7947e16 100644 | ||
31 | --- a/kernel/workqueue.c | ||
32 | +++ b/kernel/workqueue.c | ||
33 | @@ -1215,8 +1215,13 @@ static void worker_enter_idle(struct worker *worker) | ||
34 | } else | ||
35 | wake_up_all(&gcwq->trustee_wait); | ||
36 | |||
37 | - /* sanity check nr_running */ | ||
38 | - WARN_ON_ONCE(gcwq->nr_workers == gcwq->nr_idle && | ||
39 | + /* | ||
40 | + * Sanity check nr_running. Because trustee releases gcwq->lock | ||
41 | + * between setting %WORKER_ROGUE and zapping nr_running, the | ||
42 | + * warning may trigger spuriously. Check iff trustee is idle. | ||
43 | + */ | ||
44 | + WARN_ON_ONCE(gcwq->trustee_state == TRUSTEE_DONE && | ||
45 | + gcwq->nr_workers == gcwq->nr_idle && | ||
46 | atomic_read(get_gcwq_nr_running(gcwq->cpu))); | ||
47 | } | ||
48 | |||
49 | -- | ||
50 | 1.7.9.5 | ||
51 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0060-xhci-Add-new-short-TX-quirk-for-Fresco-Logic-host.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0060-xhci-Add-new-short-TX-quirk-for-Fresco-Logic-host.patch new file mode 100644 index 00000000..58e05474 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0060-xhci-Add-new-short-TX-quirk-for-Fresco-Logic-host.patch | |||
@@ -0,0 +1,129 @@ | |||
1 | From 24338a0903923d202e90e35100abe050436bf00a Mon Sep 17 00:00:00 2001 | ||
2 | From: Sarah Sharp <sarah.a.sharp@linux.intel.com> | ||
3 | Date: Tue, 8 May 2012 09:22:49 -0700 | ||
4 | Subject: [PATCH 060/117] xhci: Add new short TX quirk for Fresco Logic host. | ||
5 | |||
6 | commit 1530bbc6272d9da1e39ef8e06190d42c13a02733 upstream. | ||
7 | |||
8 | Sergio reported that when he recorded audio from a USB headset mic | ||
9 | plugged into the USB 3.0 port on his ASUS N53SV-DH72, the audio sounded | ||
10 | "robotic". When plugged into the USB 2.0 port under EHCI on the same | ||
11 | laptop, the audio sounded fine. The device is: | ||
12 | |||
13 | Bus 002 Device 004: ID 046d:0a0c Logitech, Inc. Clear Chat Comfort USB Headset | ||
14 | |||
15 | The problem was tracked down to the Fresco Logic xHCI host controller | ||
16 | not correctly reporting short transfers on isochronous IN endpoints. | ||
17 | The driver would submit a 96 byte transfer, the device would only send | ||
18 | 88 or 90 bytes, and the xHCI host would report the transfer had a | ||
19 | "successful" completion code, with an untransferred buffer length of 8 | ||
20 | or 6 bytes. | ||
21 | |||
22 | The successful completion code and non-zero untransferred length is a | ||
23 | contradiction. The xHCI host is supposed to only mark a transfer as | ||
24 | successful if all the bytes are transferred. Otherwise, the transfer | ||
25 | should be marked with a short packet completion code. Without the EHCI | ||
26 | bus trace, we wouldn't know whether the xHCI driver should trust the | ||
27 | completion code or the untransferred length. With it, we know to trust | ||
28 | the untransferred length. | ||
29 | |||
30 | Add a new xHCI quirk for the Fresco Logic host controller. If a | ||
31 | transfer is reported as successful, but the untransferred length is | ||
32 | non-zero, print a warning. For the Fresco Logic host, change the | ||
33 | completion code to COMP_SHORT_TX and process the transfer like a short | ||
34 | transfer. | ||
35 | |||
36 | This should be backported to stable kernels that contain the commit | ||
37 | f5182b4155b9d686c5540a6822486400e34ddd98 "xhci: Disable MSI for some | ||
38 | Fresco Logic hosts." That commit was marked for stable kernels as old | ||
39 | as 2.6.36. | ||
40 | |||
41 | Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> | ||
42 | Reported-by: Sergio Correia <lists@uece.net> | ||
43 | Tested-by: Sergio Correia <lists@uece.net> | ||
44 | Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> | ||
45 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
46 | --- | ||
47 | drivers/usb/host/xhci-pci.c | 1 + | ||
48 | drivers/usb/host/xhci-ring.c | 20 +++++++++++++++++--- | ||
49 | drivers/usb/host/xhci.h | 1 + | ||
50 | 3 files changed, 19 insertions(+), 3 deletions(-) | ||
51 | |||
52 | diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c | ||
53 | index 211296a..daf5754 100644 | ||
54 | --- a/drivers/usb/host/xhci-pci.c | ||
55 | +++ b/drivers/usb/host/xhci-pci.c | ||
56 | @@ -72,6 +72,7 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) | ||
57 | xhci_dbg(xhci, "QUIRK: Fresco Logic revision %u " | ||
58 | "has broken MSI implementation\n", | ||
59 | pdev->revision); | ||
60 | + xhci->quirks |= XHCI_TRUST_TX_LENGTH; | ||
61 | } | ||
62 | |||
63 | if (pdev->vendor == PCI_VENDOR_ID_NEC) | ||
64 | diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c | ||
65 | index 2304c45..fb0981e 100644 | ||
66 | --- a/drivers/usb/host/xhci-ring.c | ||
67 | +++ b/drivers/usb/host/xhci-ring.c | ||
68 | @@ -1735,8 +1735,12 @@ static int process_isoc_td(struct xhci_hcd *xhci, struct xhci_td *td, | ||
69 | /* handle completion code */ | ||
70 | switch (trb_comp_code) { | ||
71 | case COMP_SUCCESS: | ||
72 | - frame->status = 0; | ||
73 | - break; | ||
74 | + if (TRB_LEN(le32_to_cpu(event->transfer_len)) == 0) { | ||
75 | + frame->status = 0; | ||
76 | + break; | ||
77 | + } | ||
78 | + if ((xhci->quirks & XHCI_TRUST_TX_LENGTH)) | ||
79 | + trb_comp_code = COMP_SHORT_TX; | ||
80 | case COMP_SHORT_TX: | ||
81 | frame->status = td->urb->transfer_flags & URB_SHORT_NOT_OK ? | ||
82 | -EREMOTEIO : 0; | ||
83 | @@ -1833,13 +1837,16 @@ static int process_bulk_intr_td(struct xhci_hcd *xhci, struct xhci_td *td, | ||
84 | switch (trb_comp_code) { | ||
85 | case COMP_SUCCESS: | ||
86 | /* Double check that the HW transferred everything. */ | ||
87 | - if (event_trb != td->last_trb) { | ||
88 | + if (event_trb != td->last_trb || | ||
89 | + TRB_LEN(le32_to_cpu(event->transfer_len)) != 0) { | ||
90 | xhci_warn(xhci, "WARN Successful completion " | ||
91 | "on short TX\n"); | ||
92 | if (td->urb->transfer_flags & URB_SHORT_NOT_OK) | ||
93 | *status = -EREMOTEIO; | ||
94 | else | ||
95 | *status = 0; | ||
96 | + if ((xhci->quirks & XHCI_TRUST_TX_LENGTH)) | ||
97 | + trb_comp_code = COMP_SHORT_TX; | ||
98 | } else { | ||
99 | *status = 0; | ||
100 | } | ||
101 | @@ -1978,6 +1985,13 @@ static int handle_tx_event(struct xhci_hcd *xhci, | ||
102 | * transfer type | ||
103 | */ | ||
104 | case COMP_SUCCESS: | ||
105 | + if (TRB_LEN(le32_to_cpu(event->transfer_len)) == 0) | ||
106 | + break; | ||
107 | + if (xhci->quirks & XHCI_TRUST_TX_LENGTH) | ||
108 | + trb_comp_code = COMP_SHORT_TX; | ||
109 | + else | ||
110 | + xhci_warn(xhci, "WARN Successful completion on short TX: " | ||
111 | + "needs XHCI_TRUST_TX_LENGTH quirk?\n"); | ||
112 | case COMP_SHORT_TX: | ||
113 | break; | ||
114 | case COMP_STOP: | ||
115 | diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h | ||
116 | index 4850c4d..363b141 100644 | ||
117 | --- a/drivers/usb/host/xhci.h | ||
118 | +++ b/drivers/usb/host/xhci.h | ||
119 | @@ -1466,6 +1466,7 @@ struct xhci_hcd { | ||
120 | #define XHCI_RESET_ON_RESUME (1 << 7) | ||
121 | #define XHCI_SW_BW_CHECKING (1 << 8) | ||
122 | #define XHCI_AMD_0x96_HOST (1 << 9) | ||
123 | +#define XHCI_TRUST_TX_LENGTH (1 << 10) | ||
124 | unsigned int num_active_eps; | ||
125 | unsigned int limit_active_eps; | ||
126 | /* There are two roothubs to keep track of bus suspend info for */ | ||
127 | -- | ||
128 | 1.7.9.5 | ||
129 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0061-usbcore-enable-USB2-LPM-if-port-suspend-fails.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0061-usbcore-enable-USB2-LPM-if-port-suspend-fails.patch new file mode 100644 index 00000000..230c80ac --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0061-usbcore-enable-USB2-LPM-if-port-suspend-fails.patch | |||
@@ -0,0 +1,43 @@ | |||
1 | From 644753e795bddc5e687932d9e8b6795859553ac3 Mon Sep 17 00:00:00 2001 | ||
2 | From: Andiry Xu <andiry.xu@gmail.com> | ||
3 | Date: Sat, 5 May 2012 00:50:10 +0800 | ||
4 | Subject: [PATCH 061/117] usbcore: enable USB2 LPM if port suspend fails | ||
5 | |||
6 | commit c3e751e4f4754793bb52bd5ae30e9cc027edbb12 upstream. | ||
7 | |||
8 | USB2 LPM is disabled when device begin to suspend and enabled after device | ||
9 | is resumed. That's because USB spec does not define the transition from | ||
10 | U1/U2 state to U3 state. | ||
11 | |||
12 | If usb_port_suspend() fails, usb_port_resume() is never called, and USB2 LPM | ||
13 | is disabled in this situation. Enable USB2 LPM if port suspend fails. | ||
14 | |||
15 | This patch should be backported to kernels as old as 3.2, that contain | ||
16 | the commit 65580b4321eb36f16ae8b5987bfa1bb948fc5112 "xHCI: set USB2 | ||
17 | hardware LPM". | ||
18 | |||
19 | Signed-off-by: Andiry Xu <andiry.xu@gmail.com> | ||
20 | Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> | ||
21 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
22 | --- | ||
23 | drivers/usb/core/hub.c | 4 ++++ | ||
24 | 1 file changed, 4 insertions(+) | ||
25 | |||
26 | diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c | ||
27 | index ab4e49f..50cf41a 100644 | ||
28 | --- a/drivers/usb/core/hub.c | ||
29 | +++ b/drivers/usb/core/hub.c | ||
30 | @@ -2420,6 +2420,10 @@ int usb_port_suspend(struct usb_device *udev, pm_message_t msg) | ||
31 | NULL, 0, | ||
32 | USB_CTRL_SET_TIMEOUT); | ||
33 | |||
34 | + /* Try to enable USB2 hardware LPM again */ | ||
35 | + if (udev->usb2_hw_lpm_capable == 1) | ||
36 | + usb_set_usb2_hardware_lpm(udev, 1); | ||
37 | + | ||
38 | /* System sleep transitions should never fail */ | ||
39 | if (!PMSG_IS_AUTO(msg)) | ||
40 | status = 0; | ||
41 | -- | ||
42 | 1.7.9.5 | ||
43 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0062-perf-x86-Update-event-scheduling-constraints-for-AMD.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0062-perf-x86-Update-event-scheduling-constraints-for-AMD.patch new file mode 100644 index 00000000..92793f38 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0062-perf-x86-Update-event-scheduling-constraints-for-AMD.patch | |||
@@ -0,0 +1,62 @@ | |||
1 | From 2ece12a2e8f1df09f28dbed203e3295d99d94c83 Mon Sep 17 00:00:00 2001 | ||
2 | From: Robert Richter <robert.richter@amd.com> | ||
3 | Date: Fri, 18 May 2012 12:40:42 +0200 | ||
4 | Subject: [PATCH 062/117] perf/x86: Update event scheduling constraints for | ||
5 | AMD family 15h models | ||
6 | |||
7 | commit 5bcdf5e4fee3c45e1281c25e4941f2163cb28c65 upstream. | ||
8 | |||
9 | This update is for newer family 15h cpu models from 0x02 to 0x1f. | ||
10 | |||
11 | Signed-off-by: Robert Richter <robert.richter@amd.com> | ||
12 | Acked-by: Peter Zijlstra <peterz@infradead.org> | ||
13 | Cc: Stephane Eranian <eranian@google.com> | ||
14 | Link: http://lkml.kernel.org/r/1337337642-1621-1-git-send-email-robert.richter@amd.com | ||
15 | Signed-off-by: Ingo Molnar <mingo@kernel.org> | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | arch/x86/kernel/cpu/perf_event_amd.c | 11 ++++++++++- | ||
19 | 1 file changed, 10 insertions(+), 1 deletion(-) | ||
20 | |||
21 | diff --git a/arch/x86/kernel/cpu/perf_event_amd.c b/arch/x86/kernel/cpu/perf_event_amd.c | ||
22 | index f64a039..3dbfb00 100644 | ||
23 | --- a/arch/x86/kernel/cpu/perf_event_amd.c | ||
24 | +++ b/arch/x86/kernel/cpu/perf_event_amd.c | ||
25 | @@ -473,6 +473,7 @@ static __initconst const struct x86_pmu amd_pmu = { | ||
26 | * 0x023 DE PERF_CTL[2:0] | ||
27 | * 0x02D LS PERF_CTL[3] | ||
28 | * 0x02E LS PERF_CTL[3,0] | ||
29 | + * 0x031 LS PERF_CTL[2:0] (**) | ||
30 | * 0x043 CU PERF_CTL[2:0] | ||
31 | * 0x045 CU PERF_CTL[2:0] | ||
32 | * 0x046 CU PERF_CTL[2:0] | ||
33 | @@ -486,10 +487,12 @@ static __initconst const struct x86_pmu amd_pmu = { | ||
34 | * 0x0DD LS PERF_CTL[5:0] | ||
35 | * 0x0DE LS PERF_CTL[5:0] | ||
36 | * 0x0DF LS PERF_CTL[5:0] | ||
37 | + * 0x1C0 EX PERF_CTL[5:3] | ||
38 | * 0x1D6 EX PERF_CTL[5:0] | ||
39 | * 0x1D8 EX PERF_CTL[5:0] | ||
40 | * | ||
41 | - * (*) depending on the umask all FPU counters may be used | ||
42 | + * (*) depending on the umask all FPU counters may be used | ||
43 | + * (**) only one unitmask enabled at a time | ||
44 | */ | ||
45 | |||
46 | static struct event_constraint amd_f15_PMC0 = EVENT_CONSTRAINT(0, 0x01, 0); | ||
47 | @@ -539,6 +542,12 @@ amd_get_event_constraints_f15h(struct cpu_hw_events *cpuc, struct perf_event *ev | ||
48 | return &amd_f15_PMC3; | ||
49 | case 0x02E: | ||
50 | return &amd_f15_PMC30; | ||
51 | + case 0x031: | ||
52 | + if (hweight_long(hwc->config & ARCH_PERFMON_EVENTSEL_UMASK) <= 1) | ||
53 | + return &amd_f15_PMC20; | ||
54 | + return &emptyconstraint; | ||
55 | + case 0x1C0: | ||
56 | + return &amd_f15_PMC53; | ||
57 | default: | ||
58 | return &amd_f15_PMC50; | ||
59 | } | ||
60 | -- | ||
61 | 1.7.9.5 | ||
62 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0063-USB-fix-resource-leak-in-xhci-power-loss-path.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0063-USB-fix-resource-leak-in-xhci-power-loss-path.patch new file mode 100644 index 00000000..4f897b45 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0063-USB-fix-resource-leak-in-xhci-power-loss-path.patch | |||
@@ -0,0 +1,74 @@ | |||
1 | From 51025bed29bdd5301f9028357e13707356ae9692 Mon Sep 17 00:00:00 2001 | ||
2 | From: Oliver Neukum <oneukum@suse.de> | ||
3 | Date: Thu, 10 May 2012 10:19:21 +0200 | ||
4 | Subject: [PATCH 063/117] USB: fix resource leak in xhci power loss path | ||
5 | |||
6 | commit f8a9e72d125f4e00ec529ba67b674321a1f3bf31 upstream. | ||
7 | |||
8 | Some more data structures must be freed and counters | ||
9 | reset if an XHCI controller has lost power. The failure | ||
10 | to do so renders some chips inoperative after a certain number | ||
11 | of S4 cycles. | ||
12 | |||
13 | This patch should be backported to kernels as old as 3.2, | ||
14 | that contain the commits c29eea621900f18287d50519f72cb9113746d75a | ||
15 | "xhci: Implement HS/FS/LS bandwidth checking." and | ||
16 | commit 839c817ce67178ca3c7c7ad534c571bba1e69ebe | ||
17 | "xhci: Implement HS/FS/LS bandwidth checking." | ||
18 | |||
19 | Signed-off-by: Oliver Neukum <oneukum@suse.de> | ||
20 | Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> | ||
21 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
22 | --- | ||
23 | drivers/usb/host/xhci-mem.c | 26 ++++++++++++++++++++++++++ | ||
24 | 1 file changed, 26 insertions(+) | ||
25 | |||
26 | diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c | ||
27 | index 01c3800..a7b0676 100644 | ||
28 | --- a/drivers/usb/host/xhci-mem.c | ||
29 | +++ b/drivers/usb/host/xhci-mem.c | ||
30 | @@ -1699,6 +1699,14 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci) | ||
31 | { | ||
32 | struct pci_dev *pdev = to_pci_dev(xhci_to_hcd(xhci)->self.controller); | ||
33 | struct dev_info *dev_info, *next; | ||
34 | + struct list_head *tt_list_head; | ||
35 | + struct list_head *tt; | ||
36 | + struct list_head *endpoints; | ||
37 | + struct list_head *ep, *q; | ||
38 | + struct xhci_tt_bw_info *tt_info; | ||
39 | + struct xhci_interval_bw_table *bwt; | ||
40 | + struct xhci_virt_ep *virt_ep; | ||
41 | + | ||
42 | unsigned long flags; | ||
43 | int size; | ||
44 | int i; | ||
45 | @@ -1757,8 +1765,26 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci) | ||
46 | } | ||
47 | spin_unlock_irqrestore(&xhci->lock, flags); | ||
48 | |||
49 | + bwt = &xhci->rh_bw->bw_table; | ||
50 | + for (i = 0; i < XHCI_MAX_INTERVAL; i++) { | ||
51 | + endpoints = &bwt->interval_bw[i].endpoints; | ||
52 | + list_for_each_safe(ep, q, endpoints) { | ||
53 | + virt_ep = list_entry(ep, struct xhci_virt_ep, bw_endpoint_list); | ||
54 | + list_del(&virt_ep->bw_endpoint_list); | ||
55 | + kfree(virt_ep); | ||
56 | + } | ||
57 | + } | ||
58 | + | ||
59 | + tt_list_head = &xhci->rh_bw->tts; | ||
60 | + list_for_each_safe(tt, q, tt_list_head) { | ||
61 | + tt_info = list_entry(tt, struct xhci_tt_bw_info, tt_list); | ||
62 | + list_del(tt); | ||
63 | + kfree(tt_info); | ||
64 | + } | ||
65 | + | ||
66 | xhci->num_usb2_ports = 0; | ||
67 | xhci->num_usb3_ports = 0; | ||
68 | + xhci->num_active_eps = 0; | ||
69 | kfree(xhci->usb2_ports); | ||
70 | kfree(xhci->usb3_ports); | ||
71 | kfree(xhci->port_array); | ||
72 | -- | ||
73 | 1.7.9.5 | ||
74 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0064-xhci-Reset-reserved-command-ring-TRBs-on-cleanup.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0064-xhci-Reset-reserved-command-ring-TRBs-on-cleanup.patch new file mode 100644 index 00000000..f28b1678 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0064-xhci-Reset-reserved-command-ring-TRBs-on-cleanup.patch | |||
@@ -0,0 +1,39 @@ | |||
1 | From 06abda2cc51b6f5ffcb67e7b7299ffd7e3af966b Mon Sep 17 00:00:00 2001 | ||
2 | From: Sarah Sharp <sarah.a.sharp@linux.intel.com> | ||
3 | Date: Tue, 8 May 2012 07:09:26 -0700 | ||
4 | Subject: [PATCH 064/117] xhci: Reset reserved command ring TRBs on cleanup. | ||
5 | |||
6 | commit 33b2831ac870d50cc8e01c317b07fb1e69c13fe1 upstream. | ||
7 | |||
8 | When the xHCI driver needs to clean up memory (perhaps due to a failed | ||
9 | register restore on resume from S3 or resume from S4), it needs to reset | ||
10 | the number of reserved TRBs on the command ring to zero. Otherwise, | ||
11 | several resume cycles (about 30) with a UAS device attached will | ||
12 | continually increment the number of reserved TRBs, until all command | ||
13 | submissions fail because there isn't enough room on the command ring. | ||
14 | |||
15 | This patch should be backported to kernels as old as 2.6.32, | ||
16 | that contain the commit 913a8a344ffcaf0b4a586d6662a2c66a7106557d | ||
17 | "USB: xhci: Change how xHCI commands are handled." | ||
18 | |||
19 | Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> | ||
20 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
21 | --- | ||
22 | drivers/usb/host/xhci-mem.c | 1 + | ||
23 | 1 file changed, 1 insertion(+) | ||
24 | |||
25 | diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c | ||
26 | index a7b0676..4232e868 100644 | ||
27 | --- a/drivers/usb/host/xhci-mem.c | ||
28 | +++ b/drivers/usb/host/xhci-mem.c | ||
29 | @@ -1723,6 +1723,7 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci) | ||
30 | xhci->event_ring = NULL; | ||
31 | xhci_dbg(xhci, "Freed event ring\n"); | ||
32 | |||
33 | + xhci->cmd_ring_reserved_trbs = 0; | ||
34 | if (xhci->cmd_ring) | ||
35 | xhci_ring_free(xhci, xhci->cmd_ring); | ||
36 | xhci->cmd_ring = NULL; | ||
37 | -- | ||
38 | 1.7.9.5 | ||
39 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0065-USB-Remove-races-in-devio.c.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0065-USB-Remove-races-in-devio.c.patch new file mode 100644 index 00000000..48147134 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0065-USB-Remove-races-in-devio.c.patch | |||
@@ -0,0 +1,132 @@ | |||
1 | From 13538bbeb4fc2e5f45d426579967a675474e4f16 Mon Sep 17 00:00:00 2001 | ||
2 | From: Huajun Li <huajun.li.lee@gmail.com> | ||
3 | Date: Fri, 18 May 2012 20:12:51 +0800 | ||
4 | Subject: [PATCH 065/117] USB: Remove races in devio.c | ||
5 | |||
6 | commit 4e09dcf20f7b5358615514c2ec8584b248ab8874 upstream. | ||
7 | |||
8 | There exist races in devio.c, below is one case, | ||
9 | and there are similar races in destroy_async() | ||
10 | and proc_unlinkurb(). Remove these races. | ||
11 | |||
12 | cancel_bulk_urbs() async_completed() | ||
13 | ------------------- ----------------------- | ||
14 | spin_unlock(&ps->lock); | ||
15 | |||
16 | list_move_tail(&as->asynclist, | ||
17 | &ps->async_completed); | ||
18 | |||
19 | wake_up(&ps->wait); | ||
20 | |||
21 | Lead to free_async() be triggered, | ||
22 | then urb and 'as' will be freed. | ||
23 | |||
24 | usb_unlink_urb(as->urb); | ||
25 | ===> refer to the freed 'as' | ||
26 | |||
27 | Signed-off-by: Huajun Li <huajun.li.lee@gmail.com> | ||
28 | Cc: Alan Stern <stern@rowland.harvard.edu> | ||
29 | Cc: Oncaphillis <oncaphillis@snafu.de> | ||
30 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
31 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
32 | --- | ||
33 | drivers/usb/core/devio.c | 33 +++++++++++++++++++++++++-------- | ||
34 | 1 file changed, 25 insertions(+), 8 deletions(-) | ||
35 | |||
36 | diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c | ||
37 | index 7abf060..f6ff837 100644 | ||
38 | --- a/drivers/usb/core/devio.c | ||
39 | +++ b/drivers/usb/core/devio.c | ||
40 | @@ -295,17 +295,14 @@ static struct async *async_getcompleted(struct dev_state *ps) | ||
41 | static struct async *async_getpending(struct dev_state *ps, | ||
42 | void __user *userurb) | ||
43 | { | ||
44 | - unsigned long flags; | ||
45 | struct async *as; | ||
46 | |||
47 | - spin_lock_irqsave(&ps->lock, flags); | ||
48 | list_for_each_entry(as, &ps->async_pending, asynclist) | ||
49 | if (as->userurb == userurb) { | ||
50 | list_del_init(&as->asynclist); | ||
51 | - spin_unlock_irqrestore(&ps->lock, flags); | ||
52 | return as; | ||
53 | } | ||
54 | - spin_unlock_irqrestore(&ps->lock, flags); | ||
55 | + | ||
56 | return NULL; | ||
57 | } | ||
58 | |||
59 | @@ -360,6 +357,7 @@ static void cancel_bulk_urbs(struct dev_state *ps, unsigned bulk_addr) | ||
60 | __releases(ps->lock) | ||
61 | __acquires(ps->lock) | ||
62 | { | ||
63 | + struct urb *urb; | ||
64 | struct async *as; | ||
65 | |||
66 | /* Mark all the pending URBs that match bulk_addr, up to but not | ||
67 | @@ -382,8 +380,11 @@ __acquires(ps->lock) | ||
68 | list_for_each_entry(as, &ps->async_pending, asynclist) { | ||
69 | if (as->bulk_status == AS_UNLINK) { | ||
70 | as->bulk_status = 0; /* Only once */ | ||
71 | + urb = as->urb; | ||
72 | + usb_get_urb(urb); | ||
73 | spin_unlock(&ps->lock); /* Allow completions */ | ||
74 | - usb_unlink_urb(as->urb); | ||
75 | + usb_unlink_urb(urb); | ||
76 | + usb_put_urb(urb); | ||
77 | spin_lock(&ps->lock); | ||
78 | goto rescan; | ||
79 | } | ||
80 | @@ -434,6 +435,7 @@ static void async_completed(struct urb *urb) | ||
81 | |||
82 | static void destroy_async(struct dev_state *ps, struct list_head *list) | ||
83 | { | ||
84 | + struct urb *urb; | ||
85 | struct async *as; | ||
86 | unsigned long flags; | ||
87 | |||
88 | @@ -441,10 +443,13 @@ static void destroy_async(struct dev_state *ps, struct list_head *list) | ||
89 | while (!list_empty(list)) { | ||
90 | as = list_entry(list->next, struct async, asynclist); | ||
91 | list_del_init(&as->asynclist); | ||
92 | + urb = as->urb; | ||
93 | + usb_get_urb(urb); | ||
94 | |||
95 | /* drop the spinlock so the completion handler can run */ | ||
96 | spin_unlock_irqrestore(&ps->lock, flags); | ||
97 | - usb_kill_urb(as->urb); | ||
98 | + usb_kill_urb(urb); | ||
99 | + usb_put_urb(urb); | ||
100 | spin_lock_irqsave(&ps->lock, flags); | ||
101 | } | ||
102 | spin_unlock_irqrestore(&ps->lock, flags); | ||
103 | @@ -1350,12 +1355,24 @@ static int proc_submiturb(struct dev_state *ps, void __user *arg) | ||
104 | |||
105 | static int proc_unlinkurb(struct dev_state *ps, void __user *arg) | ||
106 | { | ||
107 | + struct urb *urb; | ||
108 | struct async *as; | ||
109 | + unsigned long flags; | ||
110 | |||
111 | + spin_lock_irqsave(&ps->lock, flags); | ||
112 | as = async_getpending(ps, arg); | ||
113 | - if (!as) | ||
114 | + if (!as) { | ||
115 | + spin_unlock_irqrestore(&ps->lock, flags); | ||
116 | return -EINVAL; | ||
117 | - usb_kill_urb(as->urb); | ||
118 | + } | ||
119 | + | ||
120 | + urb = as->urb; | ||
121 | + usb_get_urb(urb); | ||
122 | + spin_unlock_irqrestore(&ps->lock, flags); | ||
123 | + | ||
124 | + usb_kill_urb(urb); | ||
125 | + usb_put_urb(urb); | ||
126 | + | ||
127 | return 0; | ||
128 | } | ||
129 | |||
130 | -- | ||
131 | 1.7.9.5 | ||
132 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0066-md-using-GFP_NOIO-to-allocate-bio-for-flush-request.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0066-md-using-GFP_NOIO-to-allocate-bio-for-flush-request.patch new file mode 100644 index 00000000..dc48a60f --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0066-md-using-GFP_NOIO-to-allocate-bio-for-flush-request.patch | |||
@@ -0,0 +1,37 @@ | |||
1 | From d4bae88d4fc370e24457c3cf69fb343316b8f759 Mon Sep 17 00:00:00 2001 | ||
2 | From: Shaohua Li <shli@kernel.org> | ||
3 | Date: Mon, 21 May 2012 09:26:59 +1000 | ||
4 | Subject: [PATCH 066/117] md: using GFP_NOIO to allocate bio for flush request | ||
5 | |||
6 | commit b5e1b8cee7ad58a15d2fa79bcd7946acb592602d upstream. | ||
7 | |||
8 | A flush request is usually issued in transaction commit code path, so | ||
9 | using GFP_KERNEL to allocate memory for flush request bio falls into | ||
10 | the classic deadlock issue. | ||
11 | |||
12 | This is suitable for any -stable kernel to which it applies as it | ||
13 | avoids a possible deadlock. | ||
14 | |||
15 | Signed-off-by: Shaohua Li <shli@fusionio.com> | ||
16 | Signed-off-by: NeilBrown <neilb@suse.de> | ||
17 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
18 | --- | ||
19 | drivers/md/md.c | 2 +- | ||
20 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
21 | |||
22 | diff --git a/drivers/md/md.c b/drivers/md/md.c | ||
23 | index adcd850..700ecae 100644 | ||
24 | --- a/drivers/md/md.c | ||
25 | +++ b/drivers/md/md.c | ||
26 | @@ -453,7 +453,7 @@ static void submit_flushes(struct work_struct *ws) | ||
27 | atomic_inc(&rdev->nr_pending); | ||
28 | atomic_inc(&rdev->nr_pending); | ||
29 | rcu_read_unlock(); | ||
30 | - bi = bio_alloc_mddev(GFP_KERNEL, 0, mddev); | ||
31 | + bi = bio_alloc_mddev(GFP_NOIO, 0, mddev); | ||
32 | bi->bi_end_io = md_end_flush; | ||
33 | bi->bi_private = rdev; | ||
34 | bi->bi_bdev = rdev->bdev; | ||
35 | -- | ||
36 | 1.7.9.5 | ||
37 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0067-um-Implement-a-custom-pte_same-function.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0067-um-Implement-a-custom-pte_same-function.patch new file mode 100644 index 00000000..346a2076 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0067-um-Implement-a-custom-pte_same-function.patch | |||
@@ -0,0 +1,41 @@ | |||
1 | From ed8e2c17d62006fb136c30abeb552673727c5eee Mon Sep 17 00:00:00 2001 | ||
2 | From: Richard Weinberger <richard@nod.at> | ||
3 | Date: Sat, 14 Apr 2012 17:29:30 +0200 | ||
4 | Subject: [PATCH 067/117] um: Implement a custom pte_same() function | ||
5 | |||
6 | commit f15b9000eb1d09bbaa4b0a6b2089d7e1f64e84b3 upstream. | ||
7 | |||
8 | UML uses the _PAGE_NEWPAGE flag to mark pages which are not jet | ||
9 | installed on the host side using mmap(). | ||
10 | pte_same() has to ignore this flag, otherwise unuse_pte_range() | ||
11 | is unable to unuse the page because two identical | ||
12 | page tables entries with different _PAGE_NEWPAGE flags would not | ||
13 | match and swapoff() would never return. | ||
14 | |||
15 | Analyzed-by: Hugh Dickins <hughd@google.com> | ||
16 | Signed-off-by: Richard Weinberger <richard@nod.at> | ||
17 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
18 | --- | ||
19 | arch/um/include/asm/pgtable.h | 6 ++++++ | ||
20 | 1 file changed, 6 insertions(+) | ||
21 | |||
22 | diff --git a/arch/um/include/asm/pgtable.h b/arch/um/include/asm/pgtable.h | ||
23 | index 41474fb..0fea0ec 100644 | ||
24 | --- a/arch/um/include/asm/pgtable.h | ||
25 | +++ b/arch/um/include/asm/pgtable.h | ||
26 | @@ -271,6 +271,12 @@ static inline void set_pte(pte_t *pteptr, pte_t pteval) | ||
27 | } | ||
28 | #define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval) | ||
29 | |||
30 | +#define __HAVE_ARCH_PTE_SAME | ||
31 | +static inline int pte_same(pte_t pte_a, pte_t pte_b) | ||
32 | +{ | ||
33 | + return !((pte_val(pte_a) ^ pte_val(pte_b)) & ~_PAGE_NEWPAGE); | ||
34 | +} | ||
35 | + | ||
36 | /* | ||
37 | * Conversion functions: convert a page and protection to a page entry, | ||
38 | * and a page entry and page directory to the page they refer to. | ||
39 | -- | ||
40 | 1.7.9.5 | ||
41 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0068-um-Fix-__swp_type.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0068-um-Fix-__swp_type.patch new file mode 100644 index 00000000..cdb5252e --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0068-um-Fix-__swp_type.patch | |||
@@ -0,0 +1,39 @@ | |||
1 | From a8f0308ef13a60d8103b7635fdbd54e10a621a0a Mon Sep 17 00:00:00 2001 | ||
2 | From: Richard Weinberger <richard@nod.at> | ||
3 | Date: Sat, 14 Apr 2012 17:46:01 +0200 | ||
4 | Subject: [PATCH 068/117] um: Fix __swp_type() | ||
5 | |||
6 | commit 2b76ebaa728f8a3967c52aa189261c72fe56a6f1 upstream. | ||
7 | |||
8 | The current __swp_type() function uses a too small bitshift. | ||
9 | Using more than one swap files causes bad pages because | ||
10 | the type bits clash with other page flags. | ||
11 | |||
12 | Analyzed-by: Hugh Dickins <hughd@google.com> | ||
13 | Signed-off-by: Richard Weinberger <richard@nod.at> | ||
14 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
15 | --- | ||
16 | arch/um/include/asm/pgtable.h | 4 ++-- | ||
17 | 1 file changed, 2 insertions(+), 2 deletions(-) | ||
18 | |||
19 | diff --git a/arch/um/include/asm/pgtable.h b/arch/um/include/asm/pgtable.h | ||
20 | index 0fea0ec..aa365c5 100644 | ||
21 | --- a/arch/um/include/asm/pgtable.h | ||
22 | +++ b/arch/um/include/asm/pgtable.h | ||
23 | @@ -352,11 +352,11 @@ extern pte_t *virt_to_pte(struct mm_struct *mm, unsigned long addr); | ||
24 | #define update_mmu_cache(vma,address,ptep) do ; while (0) | ||
25 | |||
26 | /* Encode and de-code a swap entry */ | ||
27 | -#define __swp_type(x) (((x).val >> 4) & 0x3f) | ||
28 | +#define __swp_type(x) (((x).val >> 5) & 0x1f) | ||
29 | #define __swp_offset(x) ((x).val >> 11) | ||
30 | |||
31 | #define __swp_entry(type, offset) \ | ||
32 | - ((swp_entry_t) { ((type) << 4) | ((offset) << 11) }) | ||
33 | + ((swp_entry_t) { ((type) << 5) | ((offset) << 11) }) | ||
34 | #define __pte_to_swp_entry(pte) \ | ||
35 | ((swp_entry_t) { pte_val(pte_mkuptodate(pte)) }) | ||
36 | #define __swp_entry_to_pte(x) ((pte_t) { (x).val }) | ||
37 | -- | ||
38 | 1.7.9.5 | ||
39 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0069-swap-don-t-do-discard-if-no-discard-option-added.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0069-swap-don-t-do-discard-if-no-discard-option-added.patch new file mode 100644 index 00000000..b4f1a5fc --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0069-swap-don-t-do-discard-if-no-discard-option-added.patch | |||
@@ -0,0 +1,41 @@ | |||
1 | From c3ad2b1e42ce62ce0b8aa5283e5f1eee851dd3fb Mon Sep 17 00:00:00 2001 | ||
2 | From: Shaohua Li <shli@kernel.org> | ||
3 | Date: Wed, 21 Mar 2012 16:34:17 -0700 | ||
4 | Subject: [PATCH 069/117] swap: don't do discard if no discard option added | ||
5 | |||
6 | commit 052b1987faca3606109d88d96bce124851f7c4c2 upstream. | ||
7 | |||
8 | When swapon() was not passed the SWAP_FLAG_DISCARD option, sys_swapon() | ||
9 | will still perform a discard operation. This can cause problems if | ||
10 | discard is slow or buggy. | ||
11 | |||
12 | Reverse the order of the check so that a discard operation is performed | ||
13 | only if the sys_swapon() caller is attempting to enable discard. | ||
14 | |||
15 | Signed-off-by: Shaohua Li <shli@fusionio.com> | ||
16 | Reported-by: Holger Kiehl <Holger.Kiehl@dwd.de> | ||
17 | Tested-by: Holger Kiehl <Holger.Kiehl@dwd.de> | ||
18 | Cc: Hugh Dickins <hughd@google.com> | ||
19 | Signed-off-by: Andrew Morton <akpm@linux-foundation.org> | ||
20 | Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> | ||
21 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
22 | --- | ||
23 | mm/swapfile.c | 2 +- | ||
24 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
25 | |||
26 | diff --git a/mm/swapfile.c b/mm/swapfile.c | ||
27 | index 2015a1e..d3955f2 100644 | ||
28 | --- a/mm/swapfile.c | ||
29 | +++ b/mm/swapfile.c | ||
30 | @@ -2102,7 +2102,7 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags) | ||
31 | p->flags |= SWP_SOLIDSTATE; | ||
32 | p->cluster_next = 1 + (random32() % p->highest_bit); | ||
33 | } | ||
34 | - if (discard_swap(p) == 0 && (swap_flags & SWAP_FLAG_DISCARD)) | ||
35 | + if ((swap_flags & SWAP_FLAG_DISCARD) && discard_swap(p) == 0) | ||
36 | p->flags |= SWP_DISCARDABLE; | ||
37 | } | ||
38 | |||
39 | -- | ||
40 | 1.7.9.5 | ||
41 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0070-Input-wacom-relax-Bamboo-stylus-ID-check.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0070-Input-wacom-relax-Bamboo-stylus-ID-check.patch new file mode 100644 index 00000000..cf106b48 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0070-Input-wacom-relax-Bamboo-stylus-ID-check.patch | |||
@@ -0,0 +1,42 @@ | |||
1 | From ae03191fbcee985e26e744fc2e3b928077e647a1 Mon Sep 17 00:00:00 2001 | ||
2 | From: Chris Bagwell <chris@cnpbagwell.com> | ||
3 | Date: Wed, 26 Oct 2011 22:28:34 -0700 | ||
4 | Subject: [PATCH 070/117] Input: wacom - relax Bamboo stylus ID check | ||
5 | |||
6 | commit c5981411f60c31f0dff6f0f98d2d3711384badaf upstream. | ||
7 | |||
8 | Bit 0x02 always means tip versus eraser. Bit 0x01 is something related | ||
9 | to version of stylus and different values are starting to be used. | ||
10 | |||
11 | Relaxing proximity check is required to be used with 3rd generation | ||
12 | Bamboo Pen and Touch tablets. | ||
13 | |||
14 | Signed-off-by: Chris Bagwell <chris@cnpbagwell.com> | ||
15 | Acked-by: Ping Cheng <pingc@wacom.com> | ||
16 | Signed-off-by: Dmitry Torokhov <dtor@mail.ru> | ||
17 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
18 | --- | ||
19 | drivers/input/tablet/wacom_wac.c | 7 +------ | ||
20 | 1 file changed, 1 insertion(+), 6 deletions(-) | ||
21 | |||
22 | diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c | ||
23 | index 2ee47d0..f00c70e 100644 | ||
24 | --- a/drivers/input/tablet/wacom_wac.c | ||
25 | +++ b/drivers/input/tablet/wacom_wac.c | ||
26 | @@ -843,12 +843,7 @@ static int wacom_bpt_pen(struct wacom_wac *wacom) | ||
27 | unsigned char *data = wacom->data; | ||
28 | int prox = 0, x = 0, y = 0, p = 0, d = 0, pen = 0, btn1 = 0, btn2 = 0; | ||
29 | |||
30 | - /* | ||
31 | - * Similar to Graphire protocol, data[1] & 0x20 is proximity and | ||
32 | - * data[1] & 0x18 is tool ID. 0x30 is safety check to ignore | ||
33 | - * 2 unused tool ID's. | ||
34 | - */ | ||
35 | - prox = (data[1] & 0x30) == 0x30; | ||
36 | + prox = (data[1] & 0x20) == 0x20; | ||
37 | |||
38 | /* | ||
39 | * All reports shared between PEN and RUBBER tool must be | ||
40 | -- | ||
41 | 1.7.9.5 | ||
42 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0071-ahci-Detect-Marvell-88SE9172-SATA-controller.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0071-ahci-Detect-Marvell-88SE9172-SATA-controller.patch new file mode 100644 index 00000000..b1855cc5 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0071-ahci-Detect-Marvell-88SE9172-SATA-controller.patch | |||
@@ -0,0 +1,35 @@ | |||
1 | From 3e4b4afbb70e3054734cacd6aacf50024f27c3dd Mon Sep 17 00:00:00 2001 | ||
2 | From: Matt Johnson <johnso87@illinois.edu> | ||
3 | Date: Fri, 27 Apr 2012 01:42:30 -0500 | ||
4 | Subject: [PATCH 071/117] ahci: Detect Marvell 88SE9172 SATA controller | ||
5 | |||
6 | commit 642d89252201c4155fc3946bf9cdea409e5d263e upstream. | ||
7 | |||
8 | The Marvell 88SE9172 SATA controller (PCI ID 1b4b 917a) already worked | ||
9 | once it was detected, but was missing an ahci_pci_tbl entry. | ||
10 | |||
11 | Boot tested on a Gigabyte Z68X-UD3H-B3 motherboard. | ||
12 | |||
13 | Signed-off-by: Matt Johnson <johnso87@illinois.edu> | ||
14 | Signed-off-by: Jeff Garzik <jgarzik@redhat.com> | ||
15 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
16 | --- | ||
17 | drivers/ata/ahci.c | 2 ++ | ||
18 | 1 file changed, 2 insertions(+) | ||
19 | |||
20 | diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c | ||
21 | index cf26222..fb65915 100644 | ||
22 | --- a/drivers/ata/ahci.c | ||
23 | +++ b/drivers/ata/ahci.c | ||
24 | @@ -384,6 +384,8 @@ static const struct pci_device_id ahci_pci_tbl[] = { | ||
25 | .driver_data = board_ahci_yes_fbs }, /* 88se9128 */ | ||
26 | { PCI_DEVICE(0x1b4b, 0x9125), | ||
27 | .driver_data = board_ahci_yes_fbs }, /* 88se9125 */ | ||
28 | + { PCI_DEVICE(0x1b4b, 0x917a), | ||
29 | + .driver_data = board_ahci_yes_fbs }, /* 88se9172 */ | ||
30 | { PCI_DEVICE(0x1b4b, 0x91a3), | ||
31 | .driver_data = board_ahci_yes_fbs }, | ||
32 | |||
33 | -- | ||
34 | 1.7.9.5 | ||
35 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0072-ARM-7365-1-drop-unused-parameter-from-flush_cache_us.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0072-ARM-7365-1-drop-unused-parameter-from-flush_cache_us.patch new file mode 100644 index 00000000..9af45a01 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0072-ARM-7365-1-drop-unused-parameter-from-flush_cache_us.patch | |||
@@ -0,0 +1,59 @@ | |||
1 | From 06d6cd667991ac824b4e32c07ad4c382e202b920 Mon Sep 17 00:00:00 2001 | ||
2 | From: Dima Zavin <dima@android.com> | ||
3 | Date: Thu, 29 Mar 2012 20:44:06 +0100 | ||
4 | Subject: [PATCH 072/117] ARM: 7365/1: drop unused parameter from | ||
5 | flush_cache_user_range | ||
6 | MIME-Version: 1.0 | ||
7 | Content-Type: text/plain; charset=UTF-8 | ||
8 | Content-Transfer-Encoding: 8bit | ||
9 | |||
10 | commit 4542b6a0fa6b48d9ae6b41c1efeb618b7a221b2a upstream. | ||
11 | |||
12 | vma isn't used and flush_cache_user_range isn't a standard macro that | ||
13 | is used on several archs with the same prototype. In fact only unicore32 | ||
14 | has a macro with the same name (with an identical implementation and no | ||
15 | in-tree users). | ||
16 | |||
17 | This is a part of a patch proposed by Dima Zavin (with Message-id: | ||
18 | 1272439931-12795-1-git-send-email-dima@android.com) that didn't get | ||
19 | accepted. | ||
20 | |||
21 | Cc: Dima Zavin <dima@android.com> | ||
22 | Acked-by: Catalin Marinas <catalin.marinas@arm.com> | ||
23 | Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | ||
24 | Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> | ||
25 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
26 | --- | ||
27 | arch/arm/include/asm/cacheflush.h | 2 +- | ||
28 | arch/arm/kernel/traps.c | 2 +- | ||
29 | 2 files changed, 2 insertions(+), 2 deletions(-) | ||
30 | |||
31 | diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h | ||
32 | index d5d8d5c..1252a26 100644 | ||
33 | --- a/arch/arm/include/asm/cacheflush.h | ||
34 | +++ b/arch/arm/include/asm/cacheflush.h | ||
35 | @@ -249,7 +249,7 @@ extern void flush_cache_page(struct vm_area_struct *vma, unsigned long user_addr | ||
36 | * Harvard caches are synchronised for the user space address range. | ||
37 | * This is used for the ARM private sys_cacheflush system call. | ||
38 | */ | ||
39 | -#define flush_cache_user_range(vma,start,end) \ | ||
40 | +#define flush_cache_user_range(start,end) \ | ||
41 | __cpuc_coherent_user_range((start) & PAGE_MASK, PAGE_ALIGN(end)) | ||
42 | |||
43 | /* | ||
44 | diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c | ||
45 | index 99a5727..f363ad9 100644 | ||
46 | --- a/arch/arm/kernel/traps.c | ||
47 | +++ b/arch/arm/kernel/traps.c | ||
48 | @@ -488,7 +488,7 @@ do_cache_op(unsigned long start, unsigned long end, int flags) | ||
49 | if (end > vma->vm_end) | ||
50 | end = vma->vm_end; | ||
51 | |||
52 | - flush_cache_user_range(vma, start, end); | ||
53 | + flush_cache_user_range(start, end); | ||
54 | } | ||
55 | up_read(&mm->mmap_sem); | ||
56 | } | ||
57 | -- | ||
58 | 1.7.9.5 | ||
59 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0073-ARM-7409-1-Do-not-call-flush_cache_user_range-with-m.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0073-ARM-7409-1-Do-not-call-flush_cache_user_range-with-m.patch new file mode 100644 index 00000000..bb8d0260 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0073-ARM-7409-1-Do-not-call-flush_cache_user_range-with-m.patch | |||
@@ -0,0 +1,45 @@ | |||
1 | From bf1dbf3f545a79e9ac5ff460053283f2760f095b Mon Sep 17 00:00:00 2001 | ||
2 | From: Dima Zavin <dima@android.com> | ||
3 | Date: Mon, 30 Apr 2012 10:26:14 +0100 | ||
4 | Subject: [PATCH 073/117] ARM: 7409/1: Do not call flush_cache_user_range with | ||
5 | mmap_sem held | ||
6 | |||
7 | commit 435a7ef52db7d86e67a009b36cac1457f8972391 upstream. | ||
8 | |||
9 | We can't be holding the mmap_sem while calling flush_cache_user_range | ||
10 | because the flush can fault. If we fault on a user address, the | ||
11 | page fault handler will try to take mmap_sem again. Since both places | ||
12 | acquire the read lock, most of the time it succeeds. However, if another | ||
13 | thread tries to acquire the write lock on the mmap_sem (e.g. mmap) in | ||
14 | between the call to flush_cache_user_range and the fault, the down_read | ||
15 | in do_page_fault will deadlock. | ||
16 | |||
17 | [will: removed drop of vma parameter as already queued by rmk (7365/1)] | ||
18 | |||
19 | Acked-by: Catalin Marinas <catalin.marinas@arm.com> | ||
20 | Signed-off-by: Dima Zavin <dima@android.com> | ||
21 | Signed-off-by: John Stultz <john.stultz@linaro.org> | ||
22 | Signed-off-by: Will Deacon <will.deacon@arm.com> | ||
23 | Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> | ||
24 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
25 | --- | ||
26 | arch/arm/kernel/traps.c | 2 ++ | ||
27 | 1 file changed, 2 insertions(+) | ||
28 | |||
29 | diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c | ||
30 | index f363ad9..160cb16 100644 | ||
31 | --- a/arch/arm/kernel/traps.c | ||
32 | +++ b/arch/arm/kernel/traps.c | ||
33 | @@ -488,7 +488,9 @@ do_cache_op(unsigned long start, unsigned long end, int flags) | ||
34 | if (end > vma->vm_end) | ||
35 | end = vma->vm_end; | ||
36 | |||
37 | + up_read(&mm->mmap_sem); | ||
38 | flush_cache_user_range(start, end); | ||
39 | + return; | ||
40 | } | ||
41 | up_read(&mm->mmap_sem); | ||
42 | } | ||
43 | -- | ||
44 | 1.7.9.5 | ||
45 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0074-sony-laptop-Enable-keyboard-backlight-by-default.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0074-sony-laptop-Enable-keyboard-backlight-by-default.patch new file mode 100644 index 00000000..615aa31b --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0074-sony-laptop-Enable-keyboard-backlight-by-default.patch | |||
@@ -0,0 +1,48 @@ | |||
1 | From 444d2b8e5c56b431d2aa79db0c1742c6159b661a Mon Sep 17 00:00:00 2001 | ||
2 | From: Josh Boyer <jwboyer@redhat.com> | ||
3 | Date: Wed, 2 Nov 2011 14:32:00 -0400 | ||
4 | Subject: [PATCH 074/117] sony-laptop: Enable keyboard backlight by default | ||
5 | |||
6 | commit 6fe6ae56a7cebaebc2e6daa11c423e4692f9b592 upstream. | ||
7 | |||
8 | When the keyboard backlight support was originally added, the commit said | ||
9 | to default it to on with a 10 second timeout. That actually wasn't the | ||
10 | case, as the default value is commented out for the kbd_backlight parameter. | ||
11 | Because it is a static variable, it gets set to 0 by default without some | ||
12 | other form of initialization. | ||
13 | |||
14 | However, it seems the function to set the value wasn't actually called | ||
15 | immediately, so whatever state the keyboard was in initially would remain. | ||
16 | Then commit df410d522410e67660 was introduced during the 2.6.39 timeframe to | ||
17 | immediately set whatever value was present (as well as attempt to | ||
18 | restore/reset the state on module removal or resume). That seems to have | ||
19 | now forced the light off immediately when the module is loaded unless | ||
20 | the option kbd_backlight=1 is specified. | ||
21 | |||
22 | Let's enable it by default again (for the first time). This should solve | ||
23 | https://bugzilla.redhat.com/show_bug.cgi?id=728478 | ||
24 | |||
25 | Signed-off-by: Josh Boyer <jwboyer@redhat.com> | ||
26 | Acked-by: Mattia Dongili <malattia@linux.it> | ||
27 | Signed-off-by: Matthew Garrett <mjg@redhat.com> | ||
28 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
29 | --- | ||
30 | drivers/platform/x86/sony-laptop.c | 2 +- | ||
31 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
32 | |||
33 | diff --git a/drivers/platform/x86/sony-laptop.c b/drivers/platform/x86/sony-laptop.c | ||
34 | index c006dee..40c4705 100644 | ||
35 | --- a/drivers/platform/x86/sony-laptop.c | ||
36 | +++ b/drivers/platform/x86/sony-laptop.c | ||
37 | @@ -127,7 +127,7 @@ MODULE_PARM_DESC(minor, | ||
38 | "default is -1 (automatic)"); | ||
39 | #endif | ||
40 | |||
41 | -static int kbd_backlight; /* = 1 */ | ||
42 | +static int kbd_backlight = 1; | ||
43 | module_param(kbd_backlight, int, 0444); | ||
44 | MODULE_PARM_DESC(kbd_backlight, | ||
45 | "set this to 0 to disable keyboard backlight, " | ||
46 | -- | ||
47 | 1.7.9.5 | ||
48 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0075-init-don-t-try-mounting-device-as-nfs-root-unless-ty.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0075-init-don-t-try-mounting-device-as-nfs-root-unless-ty.patch new file mode 100644 index 00000000..e86f89a8 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0075-init-don-t-try-mounting-device-as-nfs-root-unless-ty.patch | |||
@@ -0,0 +1,54 @@ | |||
1 | From b277e4c19f3668e1a58e03d8933a3c6cd612c5e2 Mon Sep 17 00:00:00 2001 | ||
2 | From: Sasha Levin <levinsasha928@gmail.com> | ||
3 | Date: Sat, 5 May 2012 17:06:35 +0200 | ||
4 | Subject: [PATCH 075/117] init: don't try mounting device as nfs root unless | ||
5 | type fully matches | ||
6 | |||
7 | commit 377485f6244af255b04d662cf19cddbbc4ae4310 upstream. | ||
8 | |||
9 | Currently, we'll try mounting any device who's major device number is | ||
10 | UNNAMED_MAJOR as NFS root. This would happen for non-NFS devices as | ||
11 | well (such as 9p devices) but it wouldn't cause any issues since | ||
12 | mounting the device as NFS would fail quickly and the code proceeded to | ||
13 | doing the proper mount: | ||
14 | |||
15 | [ 101.522716] VFS: Unable to mount root fs via NFS, trying floppy. | ||
16 | [ 101.534499] VFS: Mounted root (9p filesystem) on device 0:18. | ||
17 | |||
18 | Commit 6829a048102a ("NFS: Retry mounting NFSROOT") introduced retries | ||
19 | when mounting NFS root, which means that now we don't immediately fail | ||
20 | and instead it takes an additional 90+ seconds until we stop retrying, | ||
21 | which has revealed the issue this patch fixes. | ||
22 | |||
23 | This meant that it would take an additional 90 seconds to boot when | ||
24 | we're not using a device type which gets detected in order before NFS. | ||
25 | |||
26 | This patch modifies the NFS type check to require device type to be | ||
27 | 'Root_NFS' instead of requiring the device to have an UNNAMED_MAJOR | ||
28 | major. This makes boot process cleaner since we now won't go through | ||
29 | the NFS mounting code at all when the device isn't an NFS root | ||
30 | ("/dev/nfs"). | ||
31 | |||
32 | Signed-off-by: Sasha Levin <levinsasha928@gmail.com> | ||
33 | Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> | ||
34 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
35 | --- | ||
36 | init/do_mounts.c | 2 +- | ||
37 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
38 | |||
39 | diff --git a/init/do_mounts.c b/init/do_mounts.c | ||
40 | index db6e5ee..d6c229f 100644 | ||
41 | --- a/init/do_mounts.c | ||
42 | +++ b/init/do_mounts.c | ||
43 | @@ -470,7 +470,7 @@ void __init change_floppy(char *fmt, ...) | ||
44 | void __init mount_root(void) | ||
45 | { | ||
46 | #ifdef CONFIG_ROOT_NFS | ||
47 | - if (MAJOR(ROOT_DEV) == UNNAMED_MAJOR) { | ||
48 | + if (ROOT_DEV == Root_NFS) { | ||
49 | if (mount_nfs_root()) | ||
50 | return; | ||
51 | |||
52 | -- | ||
53 | 1.7.9.5 | ||
54 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0076-memcg-free-spare-array-to-avoid-memory-leak.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0076-memcg-free-spare-array-to-avoid-memory-leak.patch new file mode 100644 index 00000000..0d731c2f --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0076-memcg-free-spare-array-to-avoid-memory-leak.patch | |||
@@ -0,0 +1,40 @@ | |||
1 | From 0b0f028ae418e6b772241ed68bee5f2d0c6bcb3a Mon Sep 17 00:00:00 2001 | ||
2 | From: Sha Zhengju <handai.szj@taobao.com> | ||
3 | Date: Thu, 10 May 2012 13:01:45 -0700 | ||
4 | Subject: [PATCH 076/117] memcg: free spare array to avoid memory leak | ||
5 | |||
6 | commit 8c7577637ca31385e92769a77e2ab5b428e8b99c upstream. | ||
7 | |||
8 | When the last event is unregistered, there is no need to keep the spare | ||
9 | array anymore. So free it to avoid memory leak. | ||
10 | |||
11 | Signed-off-by: Sha Zhengju <handai.szj@taobao.com> | ||
12 | Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> | ||
13 | Reviewed-by: Kirill A. Shutemov <kirill@shutemov.name> | ||
14 | Signed-off-by: Andrew Morton <akpm@linux-foundation.org> | ||
15 | Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | mm/memcontrol.c | 6 ++++++ | ||
19 | 1 file changed, 6 insertions(+) | ||
20 | |||
21 | diff --git a/mm/memcontrol.c b/mm/memcontrol.c | ||
22 | index 778554f..c8425b1 100644 | ||
23 | --- a/mm/memcontrol.c | ||
24 | +++ b/mm/memcontrol.c | ||
25 | @@ -4549,6 +4549,12 @@ static void mem_cgroup_usage_unregister_event(struct cgroup *cgrp, | ||
26 | swap_buffers: | ||
27 | /* Swap primary and spare array */ | ||
28 | thresholds->spare = thresholds->primary; | ||
29 | + /* If all events are unregistered, free the spare array */ | ||
30 | + if (!new) { | ||
31 | + kfree(thresholds->spare); | ||
32 | + thresholds->spare = NULL; | ||
33 | + } | ||
34 | + | ||
35 | rcu_assign_pointer(thresholds->primary, new); | ||
36 | |||
37 | /* To be sure that nobody uses thresholds */ | ||
38 | -- | ||
39 | 1.7.9.5 | ||
40 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0077-compat-Fix-RT-signal-mask-corruption-via-sigprocmask.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0077-compat-Fix-RT-signal-mask-corruption-via-sigprocmask.patch new file mode 100644 index 00000000..de652632 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0077-compat-Fix-RT-signal-mask-corruption-via-sigprocmask.patch | |||
@@ -0,0 +1,107 @@ | |||
1 | From 2ed9e3e61cd65b3a43998d48846744be1b263394 Mon Sep 17 00:00:00 2001 | ||
2 | From: Jan Kiszka <jan.kiszka@siemens.com> | ||
3 | Date: Thu, 10 May 2012 10:04:36 -0300 | ||
4 | Subject: [PATCH 077/117] compat: Fix RT signal mask corruption via | ||
5 | sigprocmask | ||
6 | |||
7 | commit b7dafa0ef3145c31d7753be0a08b3cbda51f0209 upstream. | ||
8 | |||
9 | compat_sys_sigprocmask reads a smaller signal mask from userspace than | ||
10 | sigprogmask accepts for setting. So the high word of blocked.sig[0] | ||
11 | will be cleared, releasing any potentially blocked RT signal. | ||
12 | |||
13 | This was discovered via userspace code that relies on get/setcontext. | ||
14 | glibc's i386 versions of those functions use sigprogmask instead of | ||
15 | rt_sigprogmask to save/restore signal mask and caused RT signal | ||
16 | unblocking this way. | ||
17 | |||
18 | As suggested by Linus, this replaces the sys_sigprocmask based compat | ||
19 | version with one that open-codes the required logic, including the merge | ||
20 | of the existing blocked set with the new one provided on SIG_SETMASK. | ||
21 | |||
22 | Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> | ||
23 | Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> | ||
24 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
25 | --- | ||
26 | kernel/compat.c | 63 ++++++++++++++++++++++++++++++++++++++++--------------- | ||
27 | 1 file changed, 46 insertions(+), 17 deletions(-) | ||
28 | |||
29 | diff --git a/kernel/compat.c b/kernel/compat.c | ||
30 | index f346ced..a6d0649 100644 | ||
31 | --- a/kernel/compat.c | ||
32 | +++ b/kernel/compat.c | ||
33 | @@ -320,25 +320,54 @@ asmlinkage long compat_sys_sigpending(compat_old_sigset_t __user *set) | ||
34 | |||
35 | #ifdef __ARCH_WANT_SYS_SIGPROCMASK | ||
36 | |||
37 | -asmlinkage long compat_sys_sigprocmask(int how, compat_old_sigset_t __user *set, | ||
38 | - compat_old_sigset_t __user *oset) | ||
39 | +/* | ||
40 | + * sys_sigprocmask SIG_SETMASK sets the first (compat) word of the | ||
41 | + * blocked set of signals to the supplied signal set | ||
42 | + */ | ||
43 | +static inline void compat_sig_setmask(sigset_t *blocked, compat_sigset_word set) | ||
44 | { | ||
45 | - old_sigset_t s; | ||
46 | - long ret; | ||
47 | - mm_segment_t old_fs; | ||
48 | + memcpy(blocked->sig, &set, sizeof(set)); | ||
49 | +} | ||
50 | |||
51 | - if (set && get_user(s, set)) | ||
52 | - return -EFAULT; | ||
53 | - old_fs = get_fs(); | ||
54 | - set_fs(KERNEL_DS); | ||
55 | - ret = sys_sigprocmask(how, | ||
56 | - set ? (old_sigset_t __user *) &s : NULL, | ||
57 | - oset ? (old_sigset_t __user *) &s : NULL); | ||
58 | - set_fs(old_fs); | ||
59 | - if (ret == 0) | ||
60 | - if (oset) | ||
61 | - ret = put_user(s, oset); | ||
62 | - return ret; | ||
63 | +asmlinkage long compat_sys_sigprocmask(int how, | ||
64 | + compat_old_sigset_t __user *nset, | ||
65 | + compat_old_sigset_t __user *oset) | ||
66 | +{ | ||
67 | + old_sigset_t old_set, new_set; | ||
68 | + sigset_t new_blocked; | ||
69 | + | ||
70 | + old_set = current->blocked.sig[0]; | ||
71 | + | ||
72 | + if (nset) { | ||
73 | + if (get_user(new_set, nset)) | ||
74 | + return -EFAULT; | ||
75 | + new_set &= ~(sigmask(SIGKILL) | sigmask(SIGSTOP)); | ||
76 | + | ||
77 | + new_blocked = current->blocked; | ||
78 | + | ||
79 | + switch (how) { | ||
80 | + case SIG_BLOCK: | ||
81 | + sigaddsetmask(&new_blocked, new_set); | ||
82 | + break; | ||
83 | + case SIG_UNBLOCK: | ||
84 | + sigdelsetmask(&new_blocked, new_set); | ||
85 | + break; | ||
86 | + case SIG_SETMASK: | ||
87 | + compat_sig_setmask(&new_blocked, new_set); | ||
88 | + break; | ||
89 | + default: | ||
90 | + return -EINVAL; | ||
91 | + } | ||
92 | + | ||
93 | + set_current_blocked(&new_blocked); | ||
94 | + } | ||
95 | + | ||
96 | + if (oset) { | ||
97 | + if (put_user(old_set, oset)) | ||
98 | + return -EFAULT; | ||
99 | + } | ||
100 | + | ||
101 | + return 0; | ||
102 | } | ||
103 | |||
104 | #endif | ||
105 | -- | ||
106 | 1.7.9.5 | ||
107 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0078-ext3-Fix-error-handling-on-inode-bitmap-corruption.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0078-ext3-Fix-error-handling-on-inode-bitmap-corruption.patch new file mode 100644 index 00000000..d7a8016c --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0078-ext3-Fix-error-handling-on-inode-bitmap-corruption.patch | |||
@@ -0,0 +1,43 @@ | |||
1 | From c95c67d82938539844654f8d12a831e06ddae45a Mon Sep 17 00:00:00 2001 | ||
2 | From: Jan Kara <jack@suse.cz> | ||
3 | Date: Thu, 8 Dec 2011 21:13:46 +0100 | ||
4 | Subject: [PATCH 078/117] ext3: Fix error handling on inode bitmap corruption | ||
5 | |||
6 | commit 1415dd8705394399d59a3df1ab48d149e1e41e77 upstream. | ||
7 | |||
8 | When insert_inode_locked() fails in ext3_new_inode() it most likely | ||
9 | means inode bitmap got corrupted and we allocated again inode which | ||
10 | is already in use. Also doing unlock_new_inode() during error recovery | ||
11 | is wrong since inode does not have I_NEW set. Fix the problem by jumping | ||
12 | to fail: (instead of fail_drop:) which declares filesystem error and | ||
13 | does not call unlock_new_inode(). | ||
14 | |||
15 | Reviewed-by: Eric Sandeen <sandeen@redhat.com> | ||
16 | Signed-off-by: Jan Kara <jack@suse.cz> | ||
17 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
18 | --- | ||
19 | fs/ext3/ialloc.c | 8 ++++++-- | ||
20 | 1 file changed, 6 insertions(+), 2 deletions(-) | ||
21 | |||
22 | diff --git a/fs/ext3/ialloc.c b/fs/ext3/ialloc.c | ||
23 | index 5c866e0..adae962 100644 | ||
24 | --- a/fs/ext3/ialloc.c | ||
25 | +++ b/fs/ext3/ialloc.c | ||
26 | @@ -525,8 +525,12 @@ got: | ||
27 | if (IS_DIRSYNC(inode)) | ||
28 | handle->h_sync = 1; | ||
29 | if (insert_inode_locked(inode) < 0) { | ||
30 | - err = -EINVAL; | ||
31 | - goto fail_drop; | ||
32 | + /* | ||
33 | + * Likely a bitmap corruption causing inode to be allocated | ||
34 | + * twice. | ||
35 | + */ | ||
36 | + err = -EIO; | ||
37 | + goto fail; | ||
38 | } | ||
39 | spin_lock(&sbi->s_next_gen_lock); | ||
40 | inode->i_generation = sbi->s_next_generation++; | ||
41 | -- | ||
42 | 1.7.9.5 | ||
43 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0079-ext4-fix-error-handling-on-inode-bitmap-corruption.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0079-ext4-fix-error-handling-on-inode-bitmap-corruption.patch new file mode 100644 index 00000000..4d6aacf1 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0079-ext4-fix-error-handling-on-inode-bitmap-corruption.patch | |||
@@ -0,0 +1,42 @@ | |||
1 | From 92d372ef4ce9cea8d08163f727e4eeac7e9a2472 Mon Sep 17 00:00:00 2001 | ||
2 | From: Jan Kara <jack@suse.cz> | ||
3 | Date: Sun, 18 Dec 2011 17:37:02 -0500 | ||
4 | Subject: [PATCH 079/117] ext4: fix error handling on inode bitmap corruption | ||
5 | |||
6 | commit acd6ad83517639e8f09a8c5525b1dccd81cd2a10 upstream. | ||
7 | |||
8 | When insert_inode_locked() fails in ext4_new_inode() it most likely means inode | ||
9 | bitmap got corrupted and we allocated again inode which is already in use. Also | ||
10 | doing unlock_new_inode() during error recovery is wrong since the inode does | ||
11 | not have I_NEW set. Fix the problem by jumping to fail: (instead of fail_drop:) | ||
12 | which declares filesystem error and does not call unlock_new_inode(). | ||
13 | |||
14 | Signed-off-by: Jan Kara <jack@suse.cz> | ||
15 | Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | fs/ext4/ialloc.c | 8 ++++++-- | ||
19 | 1 file changed, 6 insertions(+), 2 deletions(-) | ||
20 | |||
21 | diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c | ||
22 | index 00beb4f..8fb6844 100644 | ||
23 | --- a/fs/ext4/ialloc.c | ||
24 | +++ b/fs/ext4/ialloc.c | ||
25 | @@ -885,8 +885,12 @@ got: | ||
26 | if (IS_DIRSYNC(inode)) | ||
27 | ext4_handle_sync(handle); | ||
28 | if (insert_inode_locked(inode) < 0) { | ||
29 | - err = -EINVAL; | ||
30 | - goto fail_drop; | ||
31 | + /* | ||
32 | + * Likely a bitmap corruption causing inode to be allocated | ||
33 | + * twice. | ||
34 | + */ | ||
35 | + err = -EIO; | ||
36 | + goto fail; | ||
37 | } | ||
38 | spin_lock(&sbi->s_next_gen_lock); | ||
39 | inode->i_generation = sbi->s_next_generation++; | ||
40 | -- | ||
41 | 1.7.9.5 | ||
42 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0080-ACPI-PM-Add-Sony-Vaio-VPCCW29FX-to-nonvs-blacklist.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0080-ACPI-PM-Add-Sony-Vaio-VPCCW29FX-to-nonvs-blacklist.patch new file mode 100644 index 00000000..1460ce35 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0080-ACPI-PM-Add-Sony-Vaio-VPCCW29FX-to-nonvs-blacklist.patch | |||
@@ -0,0 +1,42 @@ | |||
1 | From 1155d70b0cfab4cef0edb62753bc9b5053d6fa8e Mon Sep 17 00:00:00 2001 | ||
2 | From: Lan Tianyu <tianyu.lan@intel.com> | ||
3 | Date: Sat, 21 Jan 2012 09:23:56 +0800 | ||
4 | Subject: [PATCH 080/117] ACPI / PM: Add Sony Vaio VPCCW29FX to nonvs | ||
5 | blacklist. | ||
6 | |||
7 | commit 93f770846e8dedc5d9117bd4ad9d7efd18420627 upstream. | ||
8 | |||
9 | Sony Vaio VPCCW29FX does not resume correctly without | ||
10 | acpi_sleep=nonvs, so add it to the ACPI sleep blacklist. | ||
11 | |||
12 | https://bugzilla.kernel.org/show_bug.cgi?id=34722 | ||
13 | |||
14 | Signed-off-by: Lan Tianyu <tianyu.lan@intel.com> | ||
15 | Signed-off-by: Len Brown <len.brown@intel.com> | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | drivers/acpi/sleep.c | 8 ++++++++ | ||
19 | 1 file changed, 8 insertions(+) | ||
20 | |||
21 | diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c | ||
22 | index 0a7ed69..ca191ff 100644 | ||
23 | --- a/drivers/acpi/sleep.c | ||
24 | +++ b/drivers/acpi/sleep.c | ||
25 | @@ -438,6 +438,14 @@ static struct dmi_system_id __initdata acpisleep_dmi_table[] = { | ||
26 | }, | ||
27 | { | ||
28 | .callback = init_nvs_nosave, | ||
29 | + .ident = "Sony Vaio VPCCW29FX", | ||
30 | + .matches = { | ||
31 | + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), | ||
32 | + DMI_MATCH(DMI_PRODUCT_NAME, "VPCCW29FX"), | ||
33 | + }, | ||
34 | + }, | ||
35 | + { | ||
36 | + .callback = init_nvs_nosave, | ||
37 | .ident = "Averatec AV1020-ED2", | ||
38 | .matches = { | ||
39 | DMI_MATCH(DMI_SYS_VENDOR, "AVERATEC"), | ||
40 | -- | ||
41 | 1.7.9.5 | ||
42 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0081-hpsa-Add-IRQF_SHARED-back-in-for-the-non-MSI-X-inter.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0081-hpsa-Add-IRQF_SHARED-back-in-for-the-non-MSI-X-inter.patch new file mode 100644 index 00000000..f16c6086 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0081-hpsa-Add-IRQF_SHARED-back-in-for-the-non-MSI-X-inter.patch | |||
@@ -0,0 +1,42 @@ | |||
1 | From a9b96c2354127a1d9d0401564b6359403aecdb66 Mon Sep 17 00:00:00 2001 | ||
2 | From: "Stephen M. Cameron" <scameron@beardog.cce.hp.com> | ||
3 | Date: Mon, 28 Nov 2011 10:15:20 -0600 | ||
4 | Subject: [PATCH 081/117] hpsa: Add IRQF_SHARED back in for the non-MSI(X) | ||
5 | interrupt handler | ||
6 | |||
7 | commit 45bcf018d1a4779d592764ef57517c92589d55d7 upstream. | ||
8 | |||
9 | IRQF_SHARED is required for older controllers that don't support MSI(X) | ||
10 | and which may end up sharing an interrupt. All the controllers hpsa | ||
11 | normally supports have MSI(X) capability, but older controllers may be | ||
12 | encountered via the hpsa_allow_any=1 module parameter. | ||
13 | |||
14 | Also remove deprecated IRQF_DISABLED. | ||
15 | |||
16 | Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com> | ||
17 | Signed-off-by: James Bottomley <JBottomley@Parallels.com> | ||
18 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
19 | --- | ||
20 | drivers/scsi/hpsa.c | 4 ++-- | ||
21 | 1 file changed, 2 insertions(+), 2 deletions(-) | ||
22 | |||
23 | diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c | ||
24 | index dc9dea3..b4d2c86 100644 | ||
25 | --- a/drivers/scsi/hpsa.c | ||
26 | +++ b/drivers/scsi/hpsa.c | ||
27 | @@ -4068,10 +4068,10 @@ static int hpsa_request_irq(struct ctlr_info *h, | ||
28 | |||
29 | if (h->msix_vector || h->msi_vector) | ||
30 | rc = request_irq(h->intr[h->intr_mode], msixhandler, | ||
31 | - IRQF_DISABLED, h->devname, h); | ||
32 | + 0, h->devname, h); | ||
33 | else | ||
34 | rc = request_irq(h->intr[h->intr_mode], intxhandler, | ||
35 | - IRQF_DISABLED, h->devname, h); | ||
36 | + IRQF_SHARED, h->devname, h); | ||
37 | if (rc) { | ||
38 | dev_err(&h->pdev->dev, "unable to get irq %d for %s\n", | ||
39 | h->intr[h->intr_mode], h->devname); | ||
40 | -- | ||
41 | 1.7.9.5 | ||
42 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0082-wake-up-s_wait_unfrozen-when-freeze_fs-fails.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0082-wake-up-s_wait_unfrozen-when-freeze_fs-fails.patch new file mode 100644 index 00000000..b25a680a --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0082-wake-up-s_wait_unfrozen-when-freeze_fs-fails.patch | |||
@@ -0,0 +1,42 @@ | |||
1 | From ab66f47089f09bceebe3bee38d5e76e08ec748d0 Mon Sep 17 00:00:00 2001 | ||
2 | From: Kazuya Mio <k-mio@sx.jp.nec.com> | ||
3 | Date: Thu, 1 Dec 2011 16:51:07 +0900 | ||
4 | Subject: [PATCH 082/117] wake up s_wait_unfrozen when ->freeze_fs fails | ||
5 | |||
6 | commit e1616300a20c80396109c1cf013ba9a36055a3da upstream. | ||
7 | |||
8 | dd slept infinitely when fsfeeze failed because of EIO. | ||
9 | To fix this problem, if ->freeze_fs fails, freeze_super() wakes up | ||
10 | the tasks waiting for the filesystem to become unfrozen. | ||
11 | |||
12 | When s_frozen isn't SB_UNFROZEN in __generic_file_aio_write(), | ||
13 | the function sleeps until FITHAW ioctl wakes up s_wait_unfrozen. | ||
14 | |||
15 | However, if ->freeze_fs fails, s_frozen is set to SB_UNFROZEN and then | ||
16 | freeze_super() returns an error number. In this case, FITHAW ioctl returns | ||
17 | EINVAL because s_frozen is already SB_UNFROZEN. There is no way to wake up | ||
18 | s_wait_unfrozen, so __generic_file_aio_write() sleeps infinitely. | ||
19 | |||
20 | Signed-off-by: Kazuya Mio <k-mio@sx.jp.nec.com> | ||
21 | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> | ||
22 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
23 | --- | ||
24 | fs/super.c | 2 ++ | ||
25 | 1 file changed, 2 insertions(+) | ||
26 | |||
27 | diff --git a/fs/super.c b/fs/super.c | ||
28 | index afd0f1a..2a698f6 100644 | ||
29 | --- a/fs/super.c | ||
30 | +++ b/fs/super.c | ||
31 | @@ -1166,6 +1166,8 @@ int freeze_super(struct super_block *sb) | ||
32 | printk(KERN_ERR | ||
33 | "VFS:Filesystem freeze failed\n"); | ||
34 | sb->s_frozen = SB_UNFROZEN; | ||
35 | + smp_wmb(); | ||
36 | + wake_up(&sb->s_wait_unfrozen); | ||
37 | deactivate_locked_super(sb); | ||
38 | return ret; | ||
39 | } | ||
40 | -- | ||
41 | 1.7.9.5 | ||
42 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0083-cifs-fix-revalidation-test-in-cifs_llseek.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0083-cifs-fix-revalidation-test-in-cifs_llseek.patch new file mode 100644 index 00000000..0d16878b --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0083-cifs-fix-revalidation-test-in-cifs_llseek.patch | |||
@@ -0,0 +1,35 @@ | |||
1 | From 3f974a0efbf9480d3a540a029f5a98da92ce772e Mon Sep 17 00:00:00 2001 | ||
2 | From: Dan Carpenter <dan.carpenter@oracle.com> | ||
3 | Date: Mon, 30 Apr 2012 17:36:21 +0300 | ||
4 | Subject: [PATCH 083/117] cifs: fix revalidation test in cifs_llseek() | ||
5 | |||
6 | commit 48a5730e5b71201e226ff06e245bf308feba5f10 upstream. | ||
7 | |||
8 | This test is always true so it means we revalidate the length every | ||
9 | time, which generates more network traffic. When it is SEEK_SET or | ||
10 | SEEK_CUR, then we don't need to revalidate. | ||
11 | |||
12 | Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> | ||
13 | Reviewed-by: Jeff Layton <jlayton@redhat.com> | ||
14 | Signed-off-by: Steve French <sfrench@us.ibm.com> | ||
15 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
16 | --- | ||
17 | fs/cifs/cifsfs.c | 2 +- | ||
18 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
19 | |||
20 | diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c | ||
21 | index b4c2c99..b1451af 100644 | ||
22 | --- a/fs/cifs/cifsfs.c | ||
23 | +++ b/fs/cifs/cifsfs.c | ||
24 | @@ -703,7 +703,7 @@ static loff_t cifs_llseek(struct file *file, loff_t offset, int origin) | ||
25 | * origin == SEEK_END || SEEK_DATA || SEEK_HOLE => we must revalidate | ||
26 | * the cached file length | ||
27 | */ | ||
28 | - if (origin != SEEK_SET || origin != SEEK_CUR) { | ||
29 | + if (origin != SEEK_SET && origin != SEEK_CUR) { | ||
30 | int rc; | ||
31 | struct inode *inode = file->f_path.dentry->d_inode; | ||
32 | |||
33 | -- | ||
34 | 1.7.9.5 | ||
35 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0084-dl2k-Clean-up-rio_ioctl.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0084-dl2k-Clean-up-rio_ioctl.patch new file mode 100644 index 00000000..d3a6229b --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0084-dl2k-Clean-up-rio_ioctl.patch | |||
@@ -0,0 +1,123 @@ | |||
1 | From 69fa22d4b635612c73cb0427447c5916e18a217e Mon Sep 17 00:00:00 2001 | ||
2 | From: Jeff Mahoney <jeffm@suse.com> | ||
3 | Date: Wed, 25 Apr 2012 14:32:09 +0000 | ||
4 | Subject: [PATCH 084/117] dl2k: Clean up rio_ioctl | ||
5 | |||
6 | commit 1bb57e940e1958e40d51f2078f50c3a96a9b2d75 upstream. | ||
7 | |||
8 | The dl2k driver's rio_ioctl call has a few issues: | ||
9 | - No permissions checking | ||
10 | - Implements SIOCGMIIREG and SIOCGMIIREG using the SIOCDEVPRIVATE numbers | ||
11 | - Has a few ioctls that may have been used for debugging at one point | ||
12 | but have no place in the kernel proper. | ||
13 | |||
14 | This patch removes all but the MII ioctls, renumbers them to use the | ||
15 | standard ones, and adds the proper permission check for SIOCSMIIREG. | ||
16 | |||
17 | We can also get rid of the dl2k-specific struct mii_data in favor of | ||
18 | the generic struct mii_ioctl_data. | ||
19 | |||
20 | Since we have the phyid on hand, we can add the SIOCGMIIPHY ioctl too. | ||
21 | |||
22 | Most of the MII code for the driver could probably be converted to use | ||
23 | the generic MII library but I don't have a device to test the results. | ||
24 | |||
25 | Reported-by: Stephan Mueller <stephan.mueller@atsec.com> | ||
26 | Signed-off-by: Jeff Mahoney <jeffm@suse.com> | ||
27 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
28 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
29 | --- | ||
30 | drivers/net/ethernet/dlink/dl2k.c | 52 +++++++------------------------------ | ||
31 | drivers/net/ethernet/dlink/dl2k.h | 7 ----- | ||
32 | 2 files changed, 9 insertions(+), 50 deletions(-) | ||
33 | |||
34 | diff --git a/drivers/net/ethernet/dlink/dl2k.c b/drivers/net/ethernet/dlink/dl2k.c | ||
35 | index b2dc2c8..2e09edb 100644 | ||
36 | --- a/drivers/net/ethernet/dlink/dl2k.c | ||
37 | +++ b/drivers/net/ethernet/dlink/dl2k.c | ||
38 | @@ -1259,55 +1259,21 @@ rio_ioctl (struct net_device *dev, struct ifreq *rq, int cmd) | ||
39 | { | ||
40 | int phy_addr; | ||
41 | struct netdev_private *np = netdev_priv(dev); | ||
42 | - struct mii_data *miidata = (struct mii_data *) &rq->ifr_ifru; | ||
43 | - | ||
44 | - struct netdev_desc *desc; | ||
45 | - int i; | ||
46 | + struct mii_ioctl_data *miidata = if_mii(rq); | ||
47 | |||
48 | phy_addr = np->phy_addr; | ||
49 | switch (cmd) { | ||
50 | - case SIOCDEVPRIVATE: | ||
51 | - break; | ||
52 | - | ||
53 | - case SIOCDEVPRIVATE + 1: | ||
54 | - miidata->out_value = mii_read (dev, phy_addr, miidata->reg_num); | ||
55 | + case SIOCGMIIPHY: | ||
56 | + miidata->phy_id = phy_addr; | ||
57 | break; | ||
58 | - case SIOCDEVPRIVATE + 2: | ||
59 | - mii_write (dev, phy_addr, miidata->reg_num, miidata->in_value); | ||
60 | + case SIOCGMIIREG: | ||
61 | + miidata->val_out = mii_read (dev, phy_addr, miidata->reg_num); | ||
62 | break; | ||
63 | - case SIOCDEVPRIVATE + 3: | ||
64 | - break; | ||
65 | - case SIOCDEVPRIVATE + 4: | ||
66 | - break; | ||
67 | - case SIOCDEVPRIVATE + 5: | ||
68 | - netif_stop_queue (dev); | ||
69 | + case SIOCSMIIREG: | ||
70 | + if (!capable(CAP_NET_ADMIN)) | ||
71 | + return -EPERM; | ||
72 | + mii_write (dev, phy_addr, miidata->reg_num, miidata->val_in); | ||
73 | break; | ||
74 | - case SIOCDEVPRIVATE + 6: | ||
75 | - netif_wake_queue (dev); | ||
76 | - break; | ||
77 | - case SIOCDEVPRIVATE + 7: | ||
78 | - printk | ||
79 | - ("tx_full=%x cur_tx=%lx old_tx=%lx cur_rx=%lx old_rx=%lx\n", | ||
80 | - netif_queue_stopped(dev), np->cur_tx, np->old_tx, np->cur_rx, | ||
81 | - np->old_rx); | ||
82 | - break; | ||
83 | - case SIOCDEVPRIVATE + 8: | ||
84 | - printk("TX ring:\n"); | ||
85 | - for (i = 0; i < TX_RING_SIZE; i++) { | ||
86 | - desc = &np->tx_ring[i]; | ||
87 | - printk | ||
88 | - ("%02x:cur:%08x next:%08x status:%08x frag1:%08x frag0:%08x", | ||
89 | - i, | ||
90 | - (u32) (np->tx_ring_dma + i * sizeof (*desc)), | ||
91 | - (u32)le64_to_cpu(desc->next_desc), | ||
92 | - (u32)le64_to_cpu(desc->status), | ||
93 | - (u32)(le64_to_cpu(desc->fraginfo) >> 32), | ||
94 | - (u32)le64_to_cpu(desc->fraginfo)); | ||
95 | - printk ("\n"); | ||
96 | - } | ||
97 | - printk ("\n"); | ||
98 | - break; | ||
99 | - | ||
100 | default: | ||
101 | return -EOPNOTSUPP; | ||
102 | } | ||
103 | diff --git a/drivers/net/ethernet/dlink/dl2k.h b/drivers/net/ethernet/dlink/dl2k.h | ||
104 | index ba0adca..30c2da3 100644 | ||
105 | --- a/drivers/net/ethernet/dlink/dl2k.h | ||
106 | +++ b/drivers/net/ethernet/dlink/dl2k.h | ||
107 | @@ -365,13 +365,6 @@ struct ioctl_data { | ||
108 | char *data; | ||
109 | }; | ||
110 | |||
111 | -struct mii_data { | ||
112 | - __u16 reserved; | ||
113 | - __u16 reg_num; | ||
114 | - __u16 in_value; | ||
115 | - __u16 out_value; | ||
116 | -}; | ||
117 | - | ||
118 | /* The Rx and Tx buffer descriptors. */ | ||
119 | struct netdev_desc { | ||
120 | __le64 next_desc; | ||
121 | -- | ||
122 | 1.7.9.5 | ||
123 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0085-OMAPDSS-VENC-fix-NULL-pointer-dereference-in-DSS2-VE.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0085-OMAPDSS-VENC-fix-NULL-pointer-dereference-in-DSS2-VE.patch new file mode 100644 index 00000000..0c09aac1 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0085-OMAPDSS-VENC-fix-NULL-pointer-dereference-in-DSS2-VE.patch | |||
@@ -0,0 +1,41 @@ | |||
1 | From ad7129ee930fa9b9efd04490a4ddcd5d5a9039a9 Mon Sep 17 00:00:00 2001 | ||
2 | From: Danny Kukawka <danny.kukawka@bisect.de> | ||
3 | Date: Tue, 24 Jan 2012 16:44:42 +0100 | ||
4 | Subject: [PATCH 085/117] OMAPDSS: VENC: fix NULL pointer dereference in DSS2 | ||
5 | VENC sysfs debug attr on OMAP4 | ||
6 | |||
7 | commit cc1d3e032df53d83d0ca4d537d8eb67eb5b3e808 upstream. | ||
8 | |||
9 | Commit ba02fa37de80bea10d706f39f076dd848348320a disabled the | ||
10 | venc driver registration on OMAP4. Since the driver never gets | ||
11 | probed/initialised your get a dereferenceed NULL pointer if you | ||
12 | try to get info from /sys/kernel/debug/omapdss/venc | ||
13 | |||
14 | Return info message about disabled venc if venc_dump_regs() gets called. | ||
15 | |||
16 | Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de> | ||
17 | Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> | ||
18 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
19 | --- | ||
20 | drivers/video/omap2/dss/venc.c | 5 +++++ | ||
21 | 1 file changed, 5 insertions(+) | ||
22 | |||
23 | diff --git a/drivers/video/omap2/dss/venc.c b/drivers/video/omap2/dss/venc.c | ||
24 | index 7533458..7152b53 100644 | ||
25 | --- a/drivers/video/omap2/dss/venc.c | ||
26 | +++ b/drivers/video/omap2/dss/venc.c | ||
27 | @@ -679,6 +679,11 @@ void venc_dump_regs(struct seq_file *s) | ||
28 | { | ||
29 | #define DUMPREG(r) seq_printf(s, "%-35s %08x\n", #r, venc_read_reg(r)) | ||
30 | |||
31 | + if (cpu_is_omap44xx()) { | ||
32 | + seq_printf(s, "VENC currently disabled on OMAP44xx\n"); | ||
33 | + return; | ||
34 | + } | ||
35 | + | ||
36 | if (venc_runtime_get()) | ||
37 | return; | ||
38 | |||
39 | -- | ||
40 | 1.7.9.5 | ||
41 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0086-i2c-eg20t-change-timeout-value-50msec-to-1000msec.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0086-i2c-eg20t-change-timeout-value-50msec-to-1000msec.patch new file mode 100644 index 00000000..f2be4cd0 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0086-i2c-eg20t-change-timeout-value-50msec-to-1000msec.patch | |||
@@ -0,0 +1,36 @@ | |||
1 | From 64affee5c2afb0dff67a4c3669e3c44c98575809 Mon Sep 17 00:00:00 2001 | ||
2 | From: Tomoya MORINAGA <tomoya.rohm@gmail.com> | ||
3 | Date: Mon, 26 Mar 2012 14:55:25 +0900 | ||
4 | Subject: [PATCH 086/117] i2c-eg20t: change timeout value 50msec to 1000msec | ||
5 | |||
6 | commit 8a52f9f347da721b199b7f9dcc0168bbe7d0baae upstream. | ||
7 | |||
8 | Currently, during i2c works alone, wait-event timeout is not occurred. | ||
9 | However, as CPU load increases, timeout occurs frequently. | ||
10 | So, I modified like this patch. | ||
11 | Modifying like this patch, I've never seen the timeout event with high | ||
12 | load test. | ||
13 | |||
14 | Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com> | ||
15 | Signed-off-by: Wolfram Sang <w.sang@pengutronix.de> | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | drivers/i2c/busses/i2c-eg20t.c | 2 +- | ||
19 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
20 | |||
21 | diff --git a/drivers/i2c/busses/i2c-eg20t.c b/drivers/i2c/busses/i2c-eg20t.c | ||
22 | index 730215e..2cda65bf 100644 | ||
23 | --- a/drivers/i2c/busses/i2c-eg20t.c | ||
24 | +++ b/drivers/i2c/busses/i2c-eg20t.c | ||
25 | @@ -315,7 +315,7 @@ static s32 pch_i2c_wait_for_xfer_complete(struct i2c_algo_pch_data *adap) | ||
26 | { | ||
27 | long ret; | ||
28 | ret = wait_event_timeout(pch_event, | ||
29 | - (adap->pch_event_flag != 0), msecs_to_jiffies(50)); | ||
30 | + (adap->pch_event_flag != 0), msecs_to_jiffies(1000)); | ||
31 | |||
32 | if (ret == 0) { | ||
33 | pch_err(adap, "timeout: %x\n", adap->pch_event_flag); | ||
34 | -- | ||
35 | 1.7.9.5 | ||
36 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0087-drm-i915-GEN7-Use-HW-scheduler-for-fixed-function-sh.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0087-drm-i915-GEN7-Use-HW-scheduler-for-fixed-function-sh.patch new file mode 100644 index 00000000..d48f0e01 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0087-drm-i915-GEN7-Use-HW-scheduler-for-fixed-function-sh.patch | |||
@@ -0,0 +1,100 @@ | |||
1 | From b8fd6d0d306fe861b9a5d692b5d14c169a14bc7e Mon Sep 17 00:00:00 2001 | ||
2 | From: Ben Widawsky <ben@bwidawsk.net> | ||
3 | Date: Sat, 14 Apr 2012 18:41:32 -0700 | ||
4 | Subject: [PATCH 087/117] drm/i915: [GEN7] Use HW scheduler for fixed function | ||
5 | shaders | ||
6 | |||
7 | commit a1e969e0332de7a430e62822cee8f2ec8d83cd7c upstream. | ||
8 | |||
9 | This originally started as a patch from Bernard as a way of simply | ||
10 | setting the VS scheduler. After submitting the RFC patch, we decided to | ||
11 | also modify the DS scheduler. To be most explicit, I've made the patch | ||
12 | explicitly set all scheduler modes, and included the defines for other | ||
13 | modes (in case someone feels frisky later). | ||
14 | |||
15 | The rest of the story gets a bit weird. The first version of the patch | ||
16 | showed an almost unbelievable performance improvement. Since rebasing my | ||
17 | branch it appears the performance improvement has gone, unfortunately. | ||
18 | But setting these bits seem to be the right thing to do given that the | ||
19 | docs describe corruption that can occur with the default settings. | ||
20 | |||
21 | In summary, I am seeing no more perf improvements (or regressions) in my | ||
22 | limited testing, but we believe this should be set to prevent rendering | ||
23 | corruption, therefore cc stable. | ||
24 | |||
25 | v1: Clear bit 4 also (Ken + Eugeni) | ||
26 | Do a full clear + set of the bits we want (Me). | ||
27 | |||
28 | Cc: Bernard Kilarski <bernard.r.kilarski@intel.com> | ||
29 | Reviewed-by (RFC): Kenneth Graunke <kenneth@whitecape.org> | ||
30 | Signed-off-by: Ben Widawsky <benjamin.widawsky@intel.com> | ||
31 | Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com> | ||
32 | Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> | ||
33 | Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> | ||
34 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
35 | --- | ||
36 | drivers/gpu/drm/i915/i915_reg.h | 15 +++++++++++++++ | ||
37 | drivers/gpu/drm/i915/intel_display.c | 14 ++++++++++++++ | ||
38 | 2 files changed, 29 insertions(+) | ||
39 | |||
40 | diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h | ||
41 | index cbe5a88..a1d53b6 100644 | ||
42 | --- a/drivers/gpu/drm/i915/i915_reg.h | ||
43 | +++ b/drivers/gpu/drm/i915/i915_reg.h | ||
44 | @@ -570,6 +570,21 @@ | ||
45 | |||
46 | #define GEN6_BSD_RNCID 0x12198 | ||
47 | |||
48 | +#define GEN7_FF_THREAD_MODE 0x20a0 | ||
49 | +#define GEN7_FF_SCHED_MASK 0x0077070 | ||
50 | +#define GEN7_FF_TS_SCHED_HS1 (0x5<<16) | ||
51 | +#define GEN7_FF_TS_SCHED_HS0 (0x3<<16) | ||
52 | +#define GEN7_FF_TS_SCHED_LOAD_BALANCE (0x1<<16) | ||
53 | +#define GEN7_FF_TS_SCHED_HW (0x0<<16) /* Default */ | ||
54 | +#define GEN7_FF_VS_SCHED_HS1 (0x5<<12) | ||
55 | +#define GEN7_FF_VS_SCHED_HS0 (0x3<<12) | ||
56 | +#define GEN7_FF_VS_SCHED_LOAD_BALANCE (0x1<<12) /* Default */ | ||
57 | +#define GEN7_FF_VS_SCHED_HW (0x0<<12) | ||
58 | +#define GEN7_FF_DS_SCHED_HS1 (0x5<<4) | ||
59 | +#define GEN7_FF_DS_SCHED_HS0 (0x3<<4) | ||
60 | +#define GEN7_FF_DS_SCHED_LOAD_BALANCE (0x1<<4) /* Default */ | ||
61 | +#define GEN7_FF_DS_SCHED_HW (0x0<<4) | ||
62 | + | ||
63 | /* | ||
64 | * Framebuffer compression (915+ only) | ||
65 | */ | ||
66 | diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c | ||
67 | index 390768f..68fa8f8 100644 | ||
68 | --- a/drivers/gpu/drm/i915/intel_display.c | ||
69 | +++ b/drivers/gpu/drm/i915/intel_display.c | ||
70 | @@ -8245,6 +8245,18 @@ static void gen6_init_clock_gating(struct drm_device *dev) | ||
71 | } | ||
72 | } | ||
73 | |||
74 | +static void gen7_setup_fixed_func_scheduler(struct drm_i915_private *dev_priv) | ||
75 | +{ | ||
76 | + uint32_t reg = I915_READ(GEN7_FF_THREAD_MODE); | ||
77 | + | ||
78 | + reg &= ~GEN7_FF_SCHED_MASK; | ||
79 | + reg |= GEN7_FF_TS_SCHED_HW; | ||
80 | + reg |= GEN7_FF_VS_SCHED_HW; | ||
81 | + reg |= GEN7_FF_DS_SCHED_HW; | ||
82 | + | ||
83 | + I915_WRITE(GEN7_FF_THREAD_MODE, reg); | ||
84 | +} | ||
85 | + | ||
86 | static void ivybridge_init_clock_gating(struct drm_device *dev) | ||
87 | { | ||
88 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
89 | @@ -8285,6 +8297,8 @@ static void ivybridge_init_clock_gating(struct drm_device *dev) | ||
90 | DISPPLANE_TRICKLE_FEED_DISABLE); | ||
91 | intel_flush_display_plane(dev_priv, pipe); | ||
92 | } | ||
93 | + | ||
94 | + gen7_setup_fixed_func_scheduler(dev_priv); | ||
95 | } | ||
96 | |||
97 | static void g4x_init_clock_gating(struct drm_device *dev) | ||
98 | -- | ||
99 | 1.7.9.5 | ||
100 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0088-mmc-sdio-avoid-spurious-calls-to-interrupt-handlers.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0088-mmc-sdio-avoid-spurious-calls-to-interrupt-handlers.patch new file mode 100644 index 00000000..4fcc89ef --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0088-mmc-sdio-avoid-spurious-calls-to-interrupt-handlers.patch | |||
@@ -0,0 +1,99 @@ | |||
1 | From 418111eaa285eb1418ef4634eb2a24e955d0c0a4 Mon Sep 17 00:00:00 2001 | ||
2 | From: Nicolas Pitre <nicolas.pitre@linaro.org> | ||
3 | Date: Mon, 16 Apr 2012 19:16:54 -0400 | ||
4 | Subject: [PATCH 088/117] mmc: sdio: avoid spurious calls to interrupt | ||
5 | handlers | ||
6 | |||
7 | commit bbbc4c4d8c5face097d695f9bf3a39647ba6b7e7 upstream. | ||
8 | |||
9 | Commit 06e8935feb ("optimized SDIO IRQ handling for single irq") | ||
10 | introduced some spurious calls to SDIO function interrupt handlers, | ||
11 | such as when the SDIO IRQ thread is started, or the safety check | ||
12 | performed upon a system resume. Let's add a flag to perform the | ||
13 | optimization only when a real interrupt is signaled by the host | ||
14 | driver and we know there is no point confirming it. | ||
15 | |||
16 | Reported-by: Sujit Reddy Thumma <sthumma@codeaurora.org> | ||
17 | Signed-off-by: Nicolas Pitre <nico@linaro.org> | ||
18 | Signed-off-by: Chris Ball <cjb@laptop.org> | ||
19 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
20 | --- | ||
21 | drivers/mmc/core/sdio.c | 2 +- | ||
22 | drivers/mmc/core/sdio_irq.c | 11 +++++++---- | ||
23 | include/linux/mmc/host.h | 2 ++ | ||
24 | 3 files changed, 10 insertions(+), 5 deletions(-) | ||
25 | |||
26 | diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c | ||
27 | index 3ab565e..558a495 100644 | ||
28 | --- a/drivers/mmc/core/sdio.c | ||
29 | +++ b/drivers/mmc/core/sdio.c | ||
30 | @@ -663,7 +663,7 @@ static int mmc_sdio_resume(struct mmc_host *host) | ||
31 | } | ||
32 | |||
33 | if (!err && host->sdio_irqs) | ||
34 | - mmc_signal_sdio_irq(host); | ||
35 | + wake_up_process(host->sdio_irq_thread); | ||
36 | mmc_release_host(host); | ||
37 | |||
38 | /* | ||
39 | diff --git a/drivers/mmc/core/sdio_irq.c b/drivers/mmc/core/sdio_irq.c | ||
40 | index 68f81b9..9dd0462 100644 | ||
41 | --- a/drivers/mmc/core/sdio_irq.c | ||
42 | +++ b/drivers/mmc/core/sdio_irq.c | ||
43 | @@ -28,18 +28,20 @@ | ||
44 | |||
45 | #include "sdio_ops.h" | ||
46 | |||
47 | -static int process_sdio_pending_irqs(struct mmc_card *card) | ||
48 | +static int process_sdio_pending_irqs(struct mmc_host *host) | ||
49 | { | ||
50 | + struct mmc_card *card = host->card; | ||
51 | int i, ret, count; | ||
52 | unsigned char pending; | ||
53 | struct sdio_func *func; | ||
54 | |||
55 | /* | ||
56 | * Optimization, if there is only 1 function interrupt registered | ||
57 | - * call irq handler directly | ||
58 | + * and we know an IRQ was signaled then call irq handler directly. | ||
59 | + * Otherwise do the full probe. | ||
60 | */ | ||
61 | func = card->sdio_single_irq; | ||
62 | - if (func) { | ||
63 | + if (func && host->sdio_irq_pending) { | ||
64 | func->irq_handler(func); | ||
65 | return 1; | ||
66 | } | ||
67 | @@ -116,7 +118,8 @@ static int sdio_irq_thread(void *_host) | ||
68 | ret = __mmc_claim_host(host, &host->sdio_irq_thread_abort); | ||
69 | if (ret) | ||
70 | break; | ||
71 | - ret = process_sdio_pending_irqs(host->card); | ||
72 | + ret = process_sdio_pending_irqs(host); | ||
73 | + host->sdio_irq_pending = false; | ||
74 | mmc_release_host(host); | ||
75 | |||
76 | /* | ||
77 | diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h | ||
78 | index a3ac9c4..deb6282 100644 | ||
79 | --- a/include/linux/mmc/host.h | ||
80 | +++ b/include/linux/mmc/host.h | ||
81 | @@ -303,6 +303,7 @@ struct mmc_host { | ||
82 | |||
83 | unsigned int sdio_irqs; | ||
84 | struct task_struct *sdio_irq_thread; | ||
85 | + bool sdio_irq_pending; | ||
86 | atomic_t sdio_irq_thread_abort; | ||
87 | |||
88 | mmc_pm_flag_t pm_flags; /* requested pm features */ | ||
89 | @@ -356,6 +357,7 @@ extern int mmc_cache_ctrl(struct mmc_host *, u8); | ||
90 | static inline void mmc_signal_sdio_irq(struct mmc_host *host) | ||
91 | { | ||
92 | host->ops->enable_sdio_irq(host, 0); | ||
93 | + host->sdio_irq_pending = true; | ||
94 | wake_up_process(host->sdio_irq_thread); | ||
95 | } | ||
96 | |||
97 | -- | ||
98 | 1.7.9.5 | ||
99 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0089-smsusb-add-autodetection-support-for-USB-ID-2040-c0a.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0089-smsusb-add-autodetection-support-for-USB-ID-2040-c0a.patch new file mode 100644 index 00000000..a1606fd5 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0089-smsusb-add-autodetection-support-for-USB-ID-2040-c0a.patch | |||
@@ -0,0 +1,31 @@ | |||
1 | From f408079974e4190a820716d82a01af3f3201cd56 Mon Sep 17 00:00:00 2001 | ||
2 | From: Michael Krufky <mkrufky@linuxtv.org> | ||
3 | Date: Thu, 22 Mar 2012 13:55:05 -0300 | ||
4 | Subject: [PATCH 089/117] smsusb: add autodetection support for USB ID | ||
5 | 2040:c0a0 | ||
6 | |||
7 | commit 4d1b58b84472d1d300a66e1c5fd765b21e74ba15 upstream. | ||
8 | |||
9 | Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> | ||
10 | Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com> | ||
11 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
12 | --- | ||
13 | drivers/media/dvb/siano/smsusb.c | 2 ++ | ||
14 | 1 file changed, 2 insertions(+) | ||
15 | |||
16 | diff --git a/drivers/media/dvb/siano/smsusb.c b/drivers/media/dvb/siano/smsusb.c | ||
17 | index 51c7121..b7d1e3e 100644 | ||
18 | --- a/drivers/media/dvb/siano/smsusb.c | ||
19 | +++ b/drivers/media/dvb/siano/smsusb.c | ||
20 | @@ -542,6 +542,8 @@ static const struct usb_device_id smsusb_id_table[] __devinitconst = { | ||
21 | .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM }, | ||
22 | { USB_DEVICE(0x2040, 0xc090), | ||
23 | .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM }, | ||
24 | + { USB_DEVICE(0x2040, 0xc0a0), | ||
25 | + .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM }, | ||
26 | { } /* Terminating entry */ | ||
27 | }; | ||
28 | |||
29 | -- | ||
30 | 1.7.9.5 | ||
31 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0090-uvcvideo-Fix-ENUMINPUT-handling.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0090-uvcvideo-Fix-ENUMINPUT-handling.patch new file mode 100644 index 00000000..08a9b59d --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0090-uvcvideo-Fix-ENUMINPUT-handling.patch | |||
@@ -0,0 +1,34 @@ | |||
1 | From 1565ef649160b0fb7c0911ce172ecc475db2741e Mon Sep 17 00:00:00 2001 | ||
2 | From: Laurent Pinchart <laurent.pinchart@ideasonboard.com> | ||
3 | Date: Wed, 21 Mar 2012 09:50:36 -0300 | ||
4 | Subject: [PATCH 090/117] uvcvideo: Fix ENUMINPUT handling | ||
5 | |||
6 | commit 31c5f0c5e25ed71eeced170f113bb590f2f1f6f3 upstream. | ||
7 | |||
8 | Properly validate the user-supplied index against the number of inputs. | ||
9 | The code used the pin local variable instead of the index by mistake. | ||
10 | |||
11 | Reported-by: Jozef Vesely <vesely@gjh.sk> | ||
12 | Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> | ||
13 | Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com> | ||
14 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
15 | --- | ||
16 | drivers/media/video/uvc/uvc_v4l2.c | 2 +- | ||
17 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
18 | |||
19 | diff --git a/drivers/media/video/uvc/uvc_v4l2.c b/drivers/media/video/uvc/uvc_v4l2.c | ||
20 | index cf7788f..1030479 100644 | ||
21 | --- a/drivers/media/video/uvc/uvc_v4l2.c | ||
22 | +++ b/drivers/media/video/uvc/uvc_v4l2.c | ||
23 | @@ -689,7 +689,7 @@ static long uvc_v4l2_do_ioctl(struct file *file, unsigned int cmd, void *arg) | ||
24 | break; | ||
25 | } | ||
26 | pin = iterm->id; | ||
27 | - } else if (pin < selector->bNrInPins) { | ||
28 | + } else if (index < selector->bNrInPins) { | ||
29 | pin = selector->baSourceID[index]; | ||
30 | list_for_each_entry(iterm, &chain->entities, chain) { | ||
31 | if (!UVC_ENTITY_IS_ITERM(iterm)) | ||
32 | -- | ||
33 | 1.7.9.5 | ||
34 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0091-drm-i915-Avoid-a-double-read-of-PCH_IIR-during-inter.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0091-drm-i915-Avoid-a-double-read-of-PCH_IIR-during-inter.patch new file mode 100644 index 00000000..41055a0e --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0091-drm-i915-Avoid-a-double-read-of-PCH_IIR-during-inter.patch | |||
@@ -0,0 +1,63 @@ | |||
1 | From e7fcb3c81686f5853ff08909c0f580536291be51 Mon Sep 17 00:00:00 2001 | ||
2 | From: Chris Wilson <chris@chris-wilson.co.uk> | ||
3 | Date: Wed, 9 May 2012 21:45:43 +0100 | ||
4 | Subject: [PATCH 091/117] drm/i915: Avoid a double-read of PCH_IIR during | ||
5 | interrupt handling | ||
6 | |||
7 | commit 9adab8b5a7fde248504f484e197589f3e3c922e2 upstream. | ||
8 | |||
9 | Currently the code re-reads PCH_IIR during the hotplug interrupt | ||
10 | processing. Not only is this a wasted read, but introduces a potential | ||
11 | for handling a spurious interrupt as we then may not clear all the | ||
12 | interrupts processed (since the re-read IIR may contains more interrupts | ||
13 | asserted than we clear using the result of the original read). | ||
14 | |||
15 | Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> | ||
16 | Cc: Jesse Barnes <jbarnes@virtuousgeek.org> | ||
17 | Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> | ||
18 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
19 | --- | ||
20 | drivers/gpu/drm/i915/i915_irq.c | 9 +++------ | ||
21 | 1 file changed, 3 insertions(+), 6 deletions(-) | ||
22 | |||
23 | diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c | ||
24 | index d47a53b..d3820c2 100644 | ||
25 | --- a/drivers/gpu/drm/i915/i915_irq.c | ||
26 | +++ b/drivers/gpu/drm/i915/i915_irq.c | ||
27 | @@ -424,14 +424,11 @@ static void gen6_pm_rps_work(struct work_struct *work) | ||
28 | mutex_unlock(&dev_priv->dev->struct_mutex); | ||
29 | } | ||
30 | |||
31 | -static void pch_irq_handler(struct drm_device *dev) | ||
32 | +static void pch_irq_handler(struct drm_device *dev, u32 pch_iir) | ||
33 | { | ||
34 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | ||
35 | - u32 pch_iir; | ||
36 | int pipe; | ||
37 | |||
38 | - pch_iir = I915_READ(SDEIIR); | ||
39 | - | ||
40 | if (pch_iir & SDE_AUDIO_POWER_MASK) | ||
41 | DRM_DEBUG_DRIVER("PCH audio power change on port %d\n", | ||
42 | (pch_iir & SDE_AUDIO_POWER_MASK) >> | ||
43 | @@ -529,7 +526,7 @@ static irqreturn_t ivybridge_irq_handler(DRM_IRQ_ARGS) | ||
44 | if (de_iir & DE_PCH_EVENT_IVB) { | ||
45 | if (pch_iir & SDE_HOTPLUG_MASK_CPT) | ||
46 | queue_work(dev_priv->wq, &dev_priv->hotplug_work); | ||
47 | - pch_irq_handler(dev); | ||
48 | + pch_irq_handler(dev, pch_iir); | ||
49 | } | ||
50 | |||
51 | if (pm_iir & GEN6_PM_DEFERRED_EVENTS) { | ||
52 | @@ -629,7 +626,7 @@ static irqreturn_t ironlake_irq_handler(DRM_IRQ_ARGS) | ||
53 | if (de_iir & DE_PCH_EVENT) { | ||
54 | if (pch_iir & hotplug_mask) | ||
55 | queue_work(dev_priv->wq, &dev_priv->hotplug_work); | ||
56 | - pch_irq_handler(dev); | ||
57 | + pch_irq_handler(dev, pch_iir); | ||
58 | } | ||
59 | |||
60 | if (de_iir & DE_PCU_EVENT) { | ||
61 | -- | ||
62 | 1.7.9.5 | ||
63 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0092-b43legacy-Fix-error-due-to-MMIO-access-with-SSB-unpo.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0092-b43legacy-Fix-error-due-to-MMIO-access-with-SSB-unpo.patch new file mode 100644 index 00000000..2a97b801 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0092-b43legacy-Fix-error-due-to-MMIO-access-with-SSB-unpo.patch | |||
@@ -0,0 +1,35 @@ | |||
1 | From 6f8ba55029ac1a15f55de85122401036a08d6b89 Mon Sep 17 00:00:00 2001 | ||
2 | From: Larry Finger <Larry.Finger@lwfinger.net> | ||
3 | Date: Sun, 6 May 2012 16:01:05 -0500 | ||
4 | Subject: [PATCH 092/117] b43legacy: Fix error due to MMIO access with SSB | ||
5 | unpowered | ||
6 | |||
7 | commit 8f4b20388fa77226a3605627a33a23f90d559e50 upstream. | ||
8 | |||
9 | There is a dummy read of a PCI MMIO register that occurs before the SSB bus | ||
10 | has been powered, which is an error. This bug has not been seen earlier, | ||
11 | but was apparently exposed when udev was updated to version 182. | ||
12 | |||
13 | Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> | ||
14 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
15 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
16 | --- | ||
17 | drivers/net/wireless/b43legacy/main.c | 2 -- | ||
18 | 1 file changed, 2 deletions(-) | ||
19 | |||
20 | diff --git a/drivers/net/wireless/b43legacy/main.c b/drivers/net/wireless/b43legacy/main.c | ||
21 | index 20f0243..c5ce163 100644 | ||
22 | --- a/drivers/net/wireless/b43legacy/main.c | ||
23 | +++ b/drivers/net/wireless/b43legacy/main.c | ||
24 | @@ -1564,8 +1564,6 @@ static int b43legacy_request_firmware(struct b43legacy_wldev *dev) | ||
25 | const char *filename; | ||
26 | int err; | ||
27 | |||
28 | - /* do dummy read */ | ||
29 | - ssb_read32(dev->dev, SSB_TMSHIGH); | ||
30 | if (!fw->ucode) { | ||
31 | if (rev == 2) | ||
32 | filename = "ucode2"; | ||
33 | -- | ||
34 | 1.7.9.5 | ||
35 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0093-gpio-mpc8xxx-Prevent-NULL-pointer-deref-in-demux-han.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0093-gpio-mpc8xxx-Prevent-NULL-pointer-deref-in-demux-han.patch new file mode 100644 index 00000000..b3e3fa6f --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0093-gpio-mpc8xxx-Prevent-NULL-pointer-deref-in-demux-han.patch | |||
@@ -0,0 +1,45 @@ | |||
1 | From 3a36f1d3f5cc6f221848df7c4cdc1269fc2085e9 Mon Sep 17 00:00:00 2001 | ||
2 | From: Thomas Gleixner <tglx@linutronix.de> | ||
3 | Date: Thu, 3 May 2012 12:22:06 +0200 | ||
4 | Subject: [PATCH 093/117] gpio: mpc8xxx: Prevent NULL pointer deref in demux | ||
5 | handler | ||
6 | |||
7 | commit d6de85e85edcc38c9edcde45a0a568818fcddc13 upstream. | ||
8 | |||
9 | commit cfadd838(powerpc/8xxx: Fix interrupt handling in MPC8xxx GPIO | ||
10 | driver) added an unconditional call of chip->irq_eoi() to the demux | ||
11 | handler. | ||
12 | |||
13 | This leads to a NULL pointer derefernce on MPC512x platforms which use | ||
14 | this driver as well. | ||
15 | |||
16 | Make it conditional. | ||
17 | |||
18 | Reported-by: Thomas Wucher <thwucher@linutronix.de> | ||
19 | Signed-off-by: Thomas Gleixner <tglx@linutronix.de> | ||
20 | Cc: Felix Radensky <felix@embedded-sol.com> | ||
21 | Cc: Kumar Gala <galak@kernel.crashing.org> | ||
22 | Cc: Grant Likely <grant.likely@secretlab.ca> | ||
23 | Signed-off-by: Grant Likely <grant.likely@secretlab.ca> | ||
24 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
25 | --- | ||
26 | drivers/gpio/gpio-mpc8xxx.c | 3 ++- | ||
27 | 1 file changed, 2 insertions(+), 1 deletion(-) | ||
28 | |||
29 | diff --git a/drivers/gpio/gpio-mpc8xxx.c b/drivers/gpio/gpio-mpc8xxx.c | ||
30 | index 5cd04b6..edcffd6 100644 | ||
31 | --- a/drivers/gpio/gpio-mpc8xxx.c | ||
32 | +++ b/drivers/gpio/gpio-mpc8xxx.c | ||
33 | @@ -163,7 +163,8 @@ static void mpc8xxx_gpio_irq_cascade(unsigned int irq, struct irq_desc *desc) | ||
34 | if (mask) | ||
35 | generic_handle_irq(irq_linear_revmap(mpc8xxx_gc->irq, | ||
36 | 32 - ffs(mask))); | ||
37 | - chip->irq_eoi(&desc->irq_data); | ||
38 | + if (chip->irq_eoi) | ||
39 | + chip->irq_eoi(&desc->irq_data); | ||
40 | } | ||
41 | |||
42 | static void mpc8xxx_irq_unmask(struct irq_data *d) | ||
43 | -- | ||
44 | 1.7.9.5 | ||
45 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0094-drm-i915-don-t-clobber-the-pipe-param-in-sanitize_mo.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0094-drm-i915-don-t-clobber-the-pipe-param-in-sanitize_mo.patch new file mode 100644 index 00000000..9e3e30e6 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0094-drm-i915-don-t-clobber-the-pipe-param-in-sanitize_mo.patch | |||
@@ -0,0 +1,52 @@ | |||
1 | From 031b0156d47e41f3815fcee8b2043c0b7d21dba0 Mon Sep 17 00:00:00 2001 | ||
2 | From: Daniel Vetter <daniel.vetter@ffwll.ch> | ||
3 | Date: Sun, 13 May 2012 22:29:25 +0200 | ||
4 | Subject: [PATCH 094/117] drm/i915: don't clobber the pipe param in | ||
5 | sanitize_modesetting | ||
6 | |||
7 | commit a9dcf84b14ef4e9a609910367576995e6f32f3dc upstream. | ||
8 | |||
9 | ... we need it later on in the function to clean up pipe <-> plane | ||
10 | associations. This regression has been introduced in | ||
11 | |||
12 | commit f47166d2b0001fcb752b40c5a2d4db986dfbea68 | ||
13 | Author: Chris Wilson <chris@chris-wilson.co.uk> | ||
14 | Date: Thu Mar 22 15:00:50 2012 +0000 | ||
15 | |||
16 | drm/i915: Sanitize BIOS debugging bits from PIPECONF | ||
17 | |||
18 | Spotted by staring at debug output of an (as it turns out) totally | ||
19 | unrelated bug. | ||
20 | |||
21 | v2: I've totally failed to do the s/pipe/i/ correctly, spotted by | ||
22 | Chris Wilson. | ||
23 | |||
24 | Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> | ||
25 | Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com> | ||
26 | Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch> | ||
27 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
28 | --- | ||
29 | drivers/gpu/drm/i915/intel_display.c | 5 +++-- | ||
30 | 1 file changed, 3 insertions(+), 2 deletions(-) | ||
31 | |||
32 | diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c | ||
33 | index 68fa8f8..3ff980d 100644 | ||
34 | --- a/drivers/gpu/drm/i915/intel_display.c | ||
35 | +++ b/drivers/gpu/drm/i915/intel_display.c | ||
36 | @@ -7280,10 +7280,11 @@ static void intel_sanitize_modesetting(struct drm_device *dev, | ||
37 | { | ||
38 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
39 | u32 reg, val; | ||
40 | + int i; | ||
41 | |||
42 | /* Clear any frame start delays used for debugging left by the BIOS */ | ||
43 | - for_each_pipe(pipe) { | ||
44 | - reg = PIPECONF(pipe); | ||
45 | + for_each_pipe(i) { | ||
46 | + reg = PIPECONF(i); | ||
47 | I915_WRITE(reg, I915_READ(reg) & ~PIPECONF_FRAME_START_DELAY_MASK); | ||
48 | } | ||
49 | |||
50 | -- | ||
51 | 1.7.9.5 | ||
52 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0095-spi-spi-fsl-spi-reference-correct-pdata-in-fsl_spi_c.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0095-spi-spi-fsl-spi-reference-correct-pdata-in-fsl_spi_c.patch new file mode 100644 index 00000000..3dc340b9 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0095-spi-spi-fsl-spi-reference-correct-pdata-in-fsl_spi_c.patch | |||
@@ -0,0 +1,42 @@ | |||
1 | From ee003c924af5accb5545a0f07b09f488cdd16e76 Mon Sep 17 00:00:00 2001 | ||
2 | From: Herton Ronaldo Krzesinski <herton.krzesinski@canonical.com> | ||
3 | Date: Fri, 11 May 2012 15:29:50 -0700 | ||
4 | Subject: [PATCH 095/117] spi/spi-fsl-spi: reference correct pdata in | ||
5 | fsl_spi_cs_control | ||
6 | |||
7 | commit 067aa4815a9bc12a569d8a06afef50ba5773afbf upstream. | ||
8 | |||
9 | Commit 178db7d3, "spi: Fix device unregistration when unregistering | ||
10 | the bus master", changed spi device initialization of dev.parent pointer | ||
11 | to be the master's device pointer instead of his parent. | ||
12 | |||
13 | This introduced a bug in spi-fsl-spi, since its usage of spi device | ||
14 | pointer was not updated accordingly. This was later fixed by commit | ||
15 | 5039a86, "spi/mpc83xx: fix NULL pdata dereference bug", but it missed | ||
16 | another spot on fsl_spi_cs_control function where we also need to update | ||
17 | usage of spi device pointer. This change address that. | ||
18 | |||
19 | Signed-off-by: Herton Ronaldo Krzesinski <herton.krzesinski@canonical.com> | ||
20 | Acked-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se> | ||
21 | Signed-off-by: Grant Likely <grant.likely@secretlab.ca> | ||
22 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
23 | --- | ||
24 | drivers/spi/spi-fsl-spi.c | 2 +- | ||
25 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
26 | |||
27 | diff --git a/drivers/spi/spi-fsl-spi.c b/drivers/spi/spi-fsl-spi.c | ||
28 | index 5f748c0..6a62934 100644 | ||
29 | --- a/drivers/spi/spi-fsl-spi.c | ||
30 | +++ b/drivers/spi/spi-fsl-spi.c | ||
31 | @@ -933,7 +933,7 @@ err: | ||
32 | |||
33 | static void fsl_spi_cs_control(struct spi_device *spi, bool on) | ||
34 | { | ||
35 | - struct device *dev = spi->dev.parent; | ||
36 | + struct device *dev = spi->dev.parent->parent; | ||
37 | struct mpc8xxx_spi_probe_info *pinfo = to_of_pinfo(dev->platform_data); | ||
38 | u16 cs = spi->chip_select; | ||
39 | int gpio = pinfo->gpios[cs]; | ||
40 | -- | ||
41 | 1.7.9.5 | ||
42 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0096-xen-do-not-map-the-same-GSI-twice-in-PVHVM-guests.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0096-xen-do-not-map-the-same-GSI-twice-in-PVHVM-guests.patch new file mode 100644 index 00000000..64f01ae5 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0096-xen-do-not-map-the-same-GSI-twice-in-PVHVM-guests.patch | |||
@@ -0,0 +1,90 @@ | |||
1 | From ccee9896b442dd46dc0fd4c7ae4b9e8e470fab2b Mon Sep 17 00:00:00 2001 | ||
2 | From: Stefano Stabellini <stefano.stabellini@eu.citrix.com> | ||
3 | Date: Mon, 21 May 2012 16:54:10 +0100 | ||
4 | Subject: [PATCH 096/117] xen: do not map the same GSI twice in PVHVM guests. | ||
5 | |||
6 | commit 68c2c39a76b094e9b2773e5846424ea674bf2c46 upstream. | ||
7 | |||
8 | PV on HVM guests map GSIs into event channels. At restore time the | ||
9 | event channels are resumed by restore_pirqs. | ||
10 | |||
11 | Device drivers might try to register the same GSI again through ACPI at | ||
12 | restore time, but the GSI has already been mapped and bound by | ||
13 | restore_pirqs. This patch detects these situations and avoids | ||
14 | mapping the same GSI multiple times. | ||
15 | |||
16 | Without this patch we get: | ||
17 | (XEN) irq.c:2235: dom4: pirq 23 or emuirq 28 already mapped | ||
18 | and waste a pirq. | ||
19 | |||
20 | Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> | ||
21 | Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | ||
22 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
23 | --- | ||
24 | arch/x86/pci/xen.c | 4 ++++ | ||
25 | drivers/xen/events.c | 5 +++-- | ||
26 | include/xen/events.h | 3 +++ | ||
27 | 3 files changed, 10 insertions(+), 2 deletions(-) | ||
28 | |||
29 | diff --git a/arch/x86/pci/xen.c b/arch/x86/pci/xen.c | ||
30 | index d99346e..4c262f6 100644 | ||
31 | --- a/arch/x86/pci/xen.c | ||
32 | +++ b/arch/x86/pci/xen.c | ||
33 | @@ -64,6 +64,10 @@ static int xen_register_pirq(u32 gsi, int gsi_override, int triggering, | ||
34 | int shareable = 0; | ||
35 | char *name; | ||
36 | |||
37 | + irq = xen_irq_from_gsi(gsi); | ||
38 | + if (irq > 0) | ||
39 | + return irq; | ||
40 | + | ||
41 | if (set_pirq) | ||
42 | pirq = gsi; | ||
43 | |||
44 | diff --git a/drivers/xen/events.c b/drivers/xen/events.c | ||
45 | index 6e075cd..fec1204 100644 | ||
46 | --- a/drivers/xen/events.c | ||
47 | +++ b/drivers/xen/events.c | ||
48 | @@ -600,7 +600,7 @@ static void disable_pirq(struct irq_data *data) | ||
49 | disable_dynirq(data); | ||
50 | } | ||
51 | |||
52 | -static int find_irq_by_gsi(unsigned gsi) | ||
53 | +int xen_irq_from_gsi(unsigned gsi) | ||
54 | { | ||
55 | struct irq_info *info; | ||
56 | |||
57 | @@ -614,6 +614,7 @@ static int find_irq_by_gsi(unsigned gsi) | ||
58 | |||
59 | return -1; | ||
60 | } | ||
61 | +EXPORT_SYMBOL_GPL(xen_irq_from_gsi); | ||
62 | |||
63 | /* | ||
64 | * Do not make any assumptions regarding the relationship between the | ||
65 | @@ -633,7 +634,7 @@ int xen_bind_pirq_gsi_to_irq(unsigned gsi, | ||
66 | |||
67 | mutex_lock(&irq_mapping_update_lock); | ||
68 | |||
69 | - irq = find_irq_by_gsi(gsi); | ||
70 | + irq = xen_irq_from_gsi(gsi); | ||
71 | if (irq != -1) { | ||
72 | printk(KERN_INFO "xen_map_pirq_gsi: returning irq %d for gsi %u\n", | ||
73 | irq, gsi); | ||
74 | diff --git a/include/xen/events.h b/include/xen/events.h | ||
75 | index d287997..8f3d622 100644 | ||
76 | --- a/include/xen/events.h | ||
77 | +++ b/include/xen/events.h | ||
78 | @@ -96,6 +96,9 @@ int xen_irq_from_pirq(unsigned pirq); | ||
79 | /* Return the pirq allocated to the irq. */ | ||
80 | int xen_pirq_from_irq(unsigned irq); | ||
81 | |||
82 | +/* Return the irq allocated to the gsi */ | ||
83 | +int xen_irq_from_gsi(unsigned gsi); | ||
84 | + | ||
85 | /* Determine whether to ignore this IRQ if it is passed to a guest. */ | ||
86 | int xen_test_irq_shared(int irq); | ||
87 | |||
88 | -- | ||
89 | 1.7.9.5 | ||
90 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0097-nouveau-nouveau_set_bo_placement-takes-TTM-flags.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0097-nouveau-nouveau_set_bo_placement-takes-TTM-flags.patch new file mode 100644 index 00000000..7698a84a --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0097-nouveau-nouveau_set_bo_placement-takes-TTM-flags.patch | |||
@@ -0,0 +1,32 @@ | |||
1 | From 49228e195ea0ed24fe598a16c8721ee019df508d Mon Sep 17 00:00:00 2001 | ||
2 | From: Dave Airlie <airlied@redhat.com> | ||
3 | Date: Fri, 18 May 2012 15:31:12 +0100 | ||
4 | Subject: [PATCH 097/117] nouveau: nouveau_set_bo_placement takes TTM flags | ||
5 | |||
6 | commit c284815debba2f14ee2fd07b1b4cc972ab116110 upstream. | ||
7 | |||
8 | This seems to be wrong to me, spotted while thinking about dma-buf. | ||
9 | |||
10 | Reviewed-by: Ben Skeggs <bskeggs@redhat.com> | ||
11 | Signed-off-by: Dave Airlie <airlied@redhat.com> | ||
12 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
13 | --- | ||
14 | drivers/gpu/drm/nouveau/nouveau_bo.c | 2 +- | ||
15 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
16 | |||
17 | diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c | ||
18 | index 7cc37e6..d5af089 100644 | ||
19 | --- a/drivers/gpu/drm/nouveau/nouveau_bo.c | ||
20 | +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c | ||
21 | @@ -1024,7 +1024,7 @@ nouveau_ttm_fault_reserve_notify(struct ttm_buffer_object *bo) | ||
22 | |||
23 | nvbo->placement.fpfn = 0; | ||
24 | nvbo->placement.lpfn = dev_priv->fb_mappable_pages; | ||
25 | - nouveau_bo_placement_set(nvbo, TTM_PL_VRAM, 0); | ||
26 | + nouveau_bo_placement_set(nvbo, TTM_PL_FLAG_VRAM, 0); | ||
27 | return nouveau_bo_validate(nvbo, false, true, false); | ||
28 | } | ||
29 | |||
30 | -- | ||
31 | 1.7.9.5 | ||
32 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0098-MCE-Fix-vm86-handling-for-32bit-mce-handler.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0098-MCE-Fix-vm86-handling-for-32bit-mce-handler.patch new file mode 100644 index 00000000..4d21affd --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0098-MCE-Fix-vm86-handling-for-32bit-mce-handler.patch | |||
@@ -0,0 +1,43 @@ | |||
1 | From 7a3402ddb979d26b777cc6f99824881af9362e8d Mon Sep 17 00:00:00 2001 | ||
2 | From: Andi Kleen <andi@firstfloor.org> | ||
3 | Date: Fri, 19 Nov 2010 13:16:22 +0100 | ||
4 | Subject: [PATCH 098/117] MCE: Fix vm86 handling for 32bit mce handler | ||
5 | |||
6 | commit a129a7c84582629741e5fa6f40026efcd7a65bd4 upstream. | ||
7 | |||
8 | When running on 32bit the mce handler could misinterpret | ||
9 | vm86 mode as ring 0. This can affect whether it does recovery | ||
10 | or not; it was possible to panic when recovery was actually | ||
11 | possible. | ||
12 | |||
13 | Fix this by always forcing vm86 to look like ring 3. | ||
14 | |||
15 | Signed-off-by: Andi Kleen <ak@linux.intel.com> | ||
16 | Signed-off-by: Tony Luck <tony.luck@intel.com> | ||
17 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
18 | --- | ||
19 | arch/x86/kernel/cpu/mcheck/mce.c | 8 ++++++++ | ||
20 | 1 file changed, 8 insertions(+) | ||
21 | |||
22 | diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c | ||
23 | index 2af127d..b0f1271 100644 | ||
24 | --- a/arch/x86/kernel/cpu/mcheck/mce.c | ||
25 | +++ b/arch/x86/kernel/cpu/mcheck/mce.c | ||
26 | @@ -389,6 +389,14 @@ static inline void mce_gather_info(struct mce *m, struct pt_regs *regs) | ||
27 | if (m->mcgstatus & (MCG_STATUS_RIPV|MCG_STATUS_EIPV)) { | ||
28 | m->ip = regs->ip; | ||
29 | m->cs = regs->cs; | ||
30 | + | ||
31 | + /* | ||
32 | + * When in VM86 mode make the cs look like ring 3 | ||
33 | + * always. This is a lie, but it's better than passing | ||
34 | + * the additional vm86 bit around everywhere. | ||
35 | + */ | ||
36 | + if (v8086_mode(regs)) | ||
37 | + m->cs |= 3; | ||
38 | } | ||
39 | /* Use accurate RIP reporting if available. */ | ||
40 | if (rip_msr) | ||
41 | -- | ||
42 | 1.7.9.5 | ||
43 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0099-x86-mce-Fix-check-for-processor-context-when-machine.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0099-x86-mce-Fix-check-for-processor-context-when-machine.patch new file mode 100644 index 00000000..05cd8cf0 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0099-x86-mce-Fix-check-for-processor-context-when-machine.patch | |||
@@ -0,0 +1,53 @@ | |||
1 | From 7938ffb57366a0e5f4b878955148f515d9940453 Mon Sep 17 00:00:00 2001 | ||
2 | From: Tony Luck <tony.luck@intel.com> | ||
3 | Date: Wed, 23 May 2012 14:14:22 -0700 | ||
4 | Subject: [PATCH 099/117] x86/mce: Fix check for processor context when | ||
5 | machine check was taken. | ||
6 | |||
7 | commit 875e26648cf9b6db9d8dc07b7959d7c61fb3f49c upstream. | ||
8 | |||
9 | Linus pointed out that there was no value is checking whether m->ip | ||
10 | was zero - because zero is a legimate value. If we have a reliable | ||
11 | (or faked in the VM86 case) "m->cs" we can use it to tell whether we | ||
12 | were in user mode or kernelwhen the machine check hit. | ||
13 | |||
14 | Reported-by: Linus Torvalds <torvalds@linuxfoundation.org> | ||
15 | Signed-off-by: Tony Luck <tony.luck@intel.com> | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | arch/x86/kernel/cpu/mcheck/mce-severity.c | 16 ++++++++++------ | ||
19 | 1 file changed, 10 insertions(+), 6 deletions(-) | ||
20 | |||
21 | diff --git a/arch/x86/kernel/cpu/mcheck/mce-severity.c b/arch/x86/kernel/cpu/mcheck/mce-severity.c | ||
22 | index 7395d5f..c9c9cfe 100644 | ||
23 | --- a/arch/x86/kernel/cpu/mcheck/mce-severity.c | ||
24 | +++ b/arch/x86/kernel/cpu/mcheck/mce-severity.c | ||
25 | @@ -145,15 +145,19 @@ static struct severity { | ||
26 | }; | ||
27 | |||
28 | /* | ||
29 | - * If the EIPV bit is set, it means the saved IP is the | ||
30 | - * instruction which caused the MCE. | ||
31 | + * If mcgstatus indicated that ip/cs on the stack were | ||
32 | + * no good, then "m->cs" will be zero and we will have | ||
33 | + * to assume the worst case (IN_KERNEL) as we actually | ||
34 | + * have no idea what we were executing when the machine | ||
35 | + * check hit. | ||
36 | + * If we do have a good "m->cs" (or a faked one in the | ||
37 | + * case we were executing in VM86 mode) we can use it to | ||
38 | + * distinguish an exception taken in user from from one | ||
39 | + * taken in the kernel. | ||
40 | */ | ||
41 | static int error_context(struct mce *m) | ||
42 | { | ||
43 | - if (m->mcgstatus & MCG_STATUS_EIPV) | ||
44 | - return (m->ip && (m->cs & 3) == 3) ? IN_USER : IN_KERNEL; | ||
45 | - /* Unknown, assume kernel */ | ||
46 | - return IN_KERNEL; | ||
47 | + return ((m->cs & 3) == 3) ? IN_USER : IN_KERNEL; | ||
48 | } | ||
49 | |||
50 | int mce_severity(struct mce *m, int tolerant, char **msg) | ||
51 | -- | ||
52 | 1.7.9.5 | ||
53 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0100-tile-fix-bug-where-fls-0-was-not-returning-0.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0100-tile-fix-bug-where-fls-0-was-not-returning-0.patch new file mode 100644 index 00000000..26aba7e7 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0100-tile-fix-bug-where-fls-0-was-not-returning-0.patch | |||
@@ -0,0 +1,50 @@ | |||
1 | From 91587d2e157874620dcdb8378b2512b809605c26 Mon Sep 17 00:00:00 2001 | ||
2 | From: Chris Metcalf <cmetcalf@tilera.com> | ||
3 | Date: Fri, 25 May 2012 12:32:09 -0400 | ||
4 | Subject: [PATCH 100/117] tile: fix bug where fls(0) was not returning 0 | ||
5 | |||
6 | commit 9f1d62bed7f015d11b9164078b7fea433b474114 upstream. | ||
7 | |||
8 | This is because __builtin_clz(0) returns 64 for the "undefined" case | ||
9 | of 0, since the builtin just does a right-shift 32 and "clz" instruction. | ||
10 | So, use the alpha approach of casting to u32 and using __builtin_clzll(). | ||
11 | |||
12 | Signed-off-by: Chris Metcalf <cmetcalf@tilera.com> | ||
13 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
14 | --- | ||
15 | arch/tile/include/asm/bitops.h | 12 ++++++------ | ||
16 | 1 file changed, 6 insertions(+), 6 deletions(-) | ||
17 | |||
18 | diff --git a/arch/tile/include/asm/bitops.h b/arch/tile/include/asm/bitops.h | ||
19 | index 16f1fa5..bd186c4 100644 | ||
20 | --- a/arch/tile/include/asm/bitops.h | ||
21 | +++ b/arch/tile/include/asm/bitops.h | ||
22 | @@ -77,6 +77,11 @@ static inline int ffs(int x) | ||
23 | return __builtin_ffs(x); | ||
24 | } | ||
25 | |||
26 | +static inline int fls64(__u64 w) | ||
27 | +{ | ||
28 | + return (sizeof(__u64) * 8) - __builtin_clzll(w); | ||
29 | +} | ||
30 | + | ||
31 | /** | ||
32 | * fls - find last set bit in word | ||
33 | * @x: the word to search | ||
34 | @@ -90,12 +95,7 @@ static inline int ffs(int x) | ||
35 | */ | ||
36 | static inline int fls(int x) | ||
37 | { | ||
38 | - return (sizeof(int) * 8) - __builtin_clz(x); | ||
39 | -} | ||
40 | - | ||
41 | -static inline int fls64(__u64 w) | ||
42 | -{ | ||
43 | - return (sizeof(__u64) * 8) - __builtin_clzll(w); | ||
44 | + return fls64((unsigned int) x); | ||
45 | } | ||
46 | |||
47 | static inline unsigned int __arch_hweight32(unsigned int w) | ||
48 | -- | ||
49 | 1.7.9.5 | ||
50 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0101-intel-iommu-Add-device-info-into-list-before-doing-c.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0101-intel-iommu-Add-device-info-into-list-before-doing-c.patch new file mode 100644 index 00000000..8ab6c6e6 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0101-intel-iommu-Add-device-info-into-list-before-doing-c.patch | |||
@@ -0,0 +1,63 @@ | |||
1 | From 7049f47a9ae3e01f50957ed9349d850579905544 Mon Sep 17 00:00:00 2001 | ||
2 | From: David Woodhouse <dwmw2@infradead.org> | ||
3 | Date: Fri, 25 May 2012 17:42:54 +0100 | ||
4 | Subject: [PATCH 101/117] intel-iommu: Add device info into list before doing | ||
5 | context mapping | ||
6 | |||
7 | commit e2ad23d04c1304431ab5176c89b7b476ded2d995 upstream. | ||
8 | |||
9 | Add device info into list before doing context mapping, because device | ||
10 | info will be used by iommu_enable_dev_iotlb(). Without it, ATS won't get | ||
11 | enabled as it should be. | ||
12 | |||
13 | ATS, while a dubious decision from a security point of view, can be very | ||
14 | important for performance. | ||
15 | |||
16 | Signed-off-by: Xudong Hao <xudong.hao@intel.com> | ||
17 | Signed-off-by: Xiantao Zhang <xiantao.zhang@intel.com> | ||
18 | Acked-by: Chris Wright <chrisw@sous-sol.org> | ||
19 | Signed-off-by: David Woodhouse <David.Woodhouse@intel.com> | ||
20 | Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> | ||
21 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
22 | --- | ||
23 | drivers/iommu/intel-iommu.c | 17 +++++++++++------ | ||
24 | 1 file changed, 11 insertions(+), 6 deletions(-) | ||
25 | |||
26 | diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c | ||
27 | index bdc447f..ccf347f 100644 | ||
28 | --- a/drivers/iommu/intel-iommu.c | ||
29 | +++ b/drivers/iommu/intel-iommu.c | ||
30 | @@ -2267,12 +2267,6 @@ static int domain_add_dev_info(struct dmar_domain *domain, | ||
31 | if (!info) | ||
32 | return -ENOMEM; | ||
33 | |||
34 | - ret = domain_context_mapping(domain, pdev, translation); | ||
35 | - if (ret) { | ||
36 | - free_devinfo_mem(info); | ||
37 | - return ret; | ||
38 | - } | ||
39 | - | ||
40 | info->segment = pci_domain_nr(pdev->bus); | ||
41 | info->bus = pdev->bus->number; | ||
42 | info->devfn = pdev->devfn; | ||
43 | @@ -2285,6 +2279,17 @@ static int domain_add_dev_info(struct dmar_domain *domain, | ||
44 | pdev->dev.archdata.iommu = info; | ||
45 | spin_unlock_irqrestore(&device_domain_lock, flags); | ||
46 | |||
47 | + ret = domain_context_mapping(domain, pdev, translation); | ||
48 | + if (ret) { | ||
49 | + spin_lock_irqsave(&device_domain_lock, flags); | ||
50 | + list_del(&info->link); | ||
51 | + list_del(&info->global); | ||
52 | + pdev->dev.archdata.iommu = NULL; | ||
53 | + spin_unlock_irqrestore(&device_domain_lock, flags); | ||
54 | + free_devinfo_mem(info); | ||
55 | + return ret; | ||
56 | + } | ||
57 | + | ||
58 | return 0; | ||
59 | } | ||
60 | |||
61 | -- | ||
62 | 1.7.9.5 | ||
63 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0102-ethtool-Null-terminate-filename-passed-to-ethtool_op.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0102-ethtool-Null-terminate-filename-passed-to-ethtool_op.patch new file mode 100644 index 00000000..0a655d25 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0102-ethtool-Null-terminate-filename-passed-to-ethtool_op.patch | |||
@@ -0,0 +1,55 @@ | |||
1 | From 79bd1de9faf5778df943c48022550d78a85d18d5 Mon Sep 17 00:00:00 2001 | ||
2 | From: Ben Hutchings <bhutchings@solarflare.com> | ||
3 | Date: Wed, 1 Feb 2012 09:32:25 +0000 | ||
4 | Subject: [PATCH 102/117] ethtool: Null-terminate filename passed to | ||
5 | ethtool_ops::flash_device | ||
6 | |||
7 | commit 786f528119722f564a22ad953411374e06116333 upstream. | ||
8 | |||
9 | The parameters for ETHTOOL_FLASHDEV include a filename, which ought to | ||
10 | be null-terminated. Currently the only driver that implements | ||
11 | ethtool_ops::flash_device attempts to add a null terminator if | ||
12 | necessary, but does it wrongly. Do it in the ethtool core instead. | ||
13 | |||
14 | Signed-off-by: Ben Hutchings <bhutchings@solarflare.com> | ||
15 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | drivers/net/ethernet/emulex/benet/be_ethtool.c | 6 +----- | ||
19 | net/core/ethtool.c | 2 ++ | ||
20 | 2 files changed, 3 insertions(+), 5 deletions(-) | ||
21 | |||
22 | diff --git a/drivers/net/ethernet/emulex/benet/be_ethtool.c b/drivers/net/ethernet/emulex/benet/be_ethtool.c | ||
23 | index bf8153e..7570c1a 100644 | ||
24 | --- a/drivers/net/ethernet/emulex/benet/be_ethtool.c | ||
25 | +++ b/drivers/net/ethernet/emulex/benet/be_ethtool.c | ||
26 | @@ -649,12 +649,8 @@ static int | ||
27 | be_do_flash(struct net_device *netdev, struct ethtool_flash *efl) | ||
28 | { | ||
29 | struct be_adapter *adapter = netdev_priv(netdev); | ||
30 | - char file_name[ETHTOOL_FLASH_MAX_FILENAME]; | ||
31 | |||
32 | - file_name[ETHTOOL_FLASH_MAX_FILENAME - 1] = 0; | ||
33 | - strcpy(file_name, efl->data); | ||
34 | - | ||
35 | - return be_load_fw(adapter, file_name); | ||
36 | + return be_load_fw(adapter, efl->data); | ||
37 | } | ||
38 | |||
39 | static int | ||
40 | diff --git a/net/core/ethtool.c b/net/core/ethtool.c | ||
41 | index f444817..2b587ec 100644 | ||
42 | --- a/net/core/ethtool.c | ||
43 | +++ b/net/core/ethtool.c | ||
44 | @@ -1549,6 +1549,8 @@ static noinline_for_stack int ethtool_flash_device(struct net_device *dev, | ||
45 | if (!dev->ethtool_ops->flash_device) | ||
46 | return -EOPNOTSUPP; | ||
47 | |||
48 | + efl.data[ETHTOOL_FLASH_MAX_FILENAME - 1] = 0; | ||
49 | + | ||
50 | return dev->ethtool_ops->flash_device(dev, &efl); | ||
51 | } | ||
52 | |||
53 | -- | ||
54 | 1.7.9.5 | ||
55 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0103-block-don-t-mark-buffers-beyond-end-of-disk-as-mappe.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0103-block-don-t-mark-buffers-beyond-end-of-disk-as-mappe.patch new file mode 100644 index 00000000..143e7526 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0103-block-don-t-mark-buffers-beyond-end-of-disk-as-mappe.patch | |||
@@ -0,0 +1,157 @@ | |||
1 | From 27066ac72b55b4402110f19a0897cc67d2b514d3 Mon Sep 17 00:00:00 2001 | ||
2 | From: Jeff Moyer <jmoyer@redhat.com> | ||
3 | Date: Fri, 11 May 2012 16:34:10 +0200 | ||
4 | Subject: [PATCH 103/117] block: don't mark buffers beyond end of disk as | ||
5 | mapped | ||
6 | |||
7 | commit 080399aaaf3531f5b8761ec0ac30ff98891e8686 upstream. | ||
8 | |||
9 | Hi, | ||
10 | |||
11 | We have a bug report open where a squashfs image mounted on ppc64 would | ||
12 | exhibit errors due to trying to read beyond the end of the disk. It can | ||
13 | easily be reproduced by doing the following: | ||
14 | |||
15 | [root@ibm-p750e-02-lp3 ~]# ls -l install.img | ||
16 | -rw-r--r-- 1 root root 142032896 Apr 30 16:46 install.img | ||
17 | [root@ibm-p750e-02-lp3 ~]# mount -o loop ./install.img /mnt/test | ||
18 | [root@ibm-p750e-02-lp3 ~]# dd if=/dev/loop0 of=/dev/null | ||
19 | dd: reading `/dev/loop0': Input/output error | ||
20 | 277376+0 records in | ||
21 | 277376+0 records out | ||
22 | 142016512 bytes (142 MB) copied, 0.9465 s, 150 MB/s | ||
23 | |||
24 | In dmesg, you'll find the following: | ||
25 | |||
26 | squashfs: version 4.0 (2009/01/31) Phillip Lougher | ||
27 | [ 43.106012] attempt to access beyond end of device | ||
28 | [ 43.106029] loop0: rw=0, want=277410, limit=277408 | ||
29 | [ 43.106039] Buffer I/O error on device loop0, logical block 138704 | ||
30 | [ 43.106053] attempt to access beyond end of device | ||
31 | [ 43.106057] loop0: rw=0, want=277412, limit=277408 | ||
32 | [ 43.106061] Buffer I/O error on device loop0, logical block 138705 | ||
33 | [ 43.106066] attempt to access beyond end of device | ||
34 | [ 43.106070] loop0: rw=0, want=277414, limit=277408 | ||
35 | [ 43.106073] Buffer I/O error on device loop0, logical block 138706 | ||
36 | [ 43.106078] attempt to access beyond end of device | ||
37 | [ 43.106081] loop0: rw=0, want=277416, limit=277408 | ||
38 | [ 43.106085] Buffer I/O error on device loop0, logical block 138707 | ||
39 | [ 43.106089] attempt to access beyond end of device | ||
40 | [ 43.106093] loop0: rw=0, want=277418, limit=277408 | ||
41 | [ 43.106096] Buffer I/O error on device loop0, logical block 138708 | ||
42 | [ 43.106101] attempt to access beyond end of device | ||
43 | [ 43.106104] loop0: rw=0, want=277420, limit=277408 | ||
44 | [ 43.106108] Buffer I/O error on device loop0, logical block 138709 | ||
45 | [ 43.106112] attempt to access beyond end of device | ||
46 | [ 43.106116] loop0: rw=0, want=277422, limit=277408 | ||
47 | [ 43.106120] Buffer I/O error on device loop0, logical block 138710 | ||
48 | [ 43.106124] attempt to access beyond end of device | ||
49 | [ 43.106128] loop0: rw=0, want=277424, limit=277408 | ||
50 | [ 43.106131] Buffer I/O error on device loop0, logical block 138711 | ||
51 | [ 43.106135] attempt to access beyond end of device | ||
52 | [ 43.106139] loop0: rw=0, want=277426, limit=277408 | ||
53 | [ 43.106143] Buffer I/O error on device loop0, logical block 138712 | ||
54 | [ 43.106147] attempt to access beyond end of device | ||
55 | [ 43.106151] loop0: rw=0, want=277428, limit=277408 | ||
56 | [ 43.106154] Buffer I/O error on device loop0, logical block 138713 | ||
57 | [ 43.106158] attempt to access beyond end of device | ||
58 | [ 43.106162] loop0: rw=0, want=277430, limit=277408 | ||
59 | [ 43.106166] attempt to access beyond end of device | ||
60 | [ 43.106169] loop0: rw=0, want=277432, limit=277408 | ||
61 | ... | ||
62 | [ 43.106307] attempt to access beyond end of device | ||
63 | [ 43.106311] loop0: rw=0, want=277470, limit=2774 | ||
64 | |||
65 | Squashfs manages to read in the end block(s) of the disk during the | ||
66 | mount operation. Then, when dd reads the block device, it leads to | ||
67 | block_read_full_page being called with buffers that are beyond end of | ||
68 | disk, but are marked as mapped. Thus, it would end up submitting read | ||
69 | I/O against them, resulting in the errors mentioned above. I fixed the | ||
70 | problem by modifying init_page_buffers to only set the buffer mapped if | ||
71 | it fell inside of i_size. | ||
72 | |||
73 | Cheers, | ||
74 | Jeff | ||
75 | |||
76 | Signed-off-by: Jeff Moyer <jmoyer@redhat.com> | ||
77 | Acked-by: Nick Piggin <npiggin@kernel.dk> | ||
78 | |||
79 | -- | ||
80 | |||
81 | Changes from v1->v2: re-used max_block, as suggested by Nick Piggin. | ||
82 | Signed-off-by: Jens Axboe <axboe@kernel.dk> | ||
83 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
84 | --- | ||
85 | fs/block_dev.c | 6 +++--- | ||
86 | fs/buffer.c | 4 +++- | ||
87 | include/linux/fs.h | 1 + | ||
88 | 3 files changed, 7 insertions(+), 4 deletions(-) | ||
89 | |||
90 | diff --git a/fs/block_dev.c b/fs/block_dev.c | ||
91 | index abe9b48..9b98987 100644 | ||
92 | --- a/fs/block_dev.c | ||
93 | +++ b/fs/block_dev.c | ||
94 | @@ -68,7 +68,7 @@ static void bdev_inode_switch_bdi(struct inode *inode, | ||
95 | spin_unlock(&dst->wb.list_lock); | ||
96 | } | ||
97 | |||
98 | -static sector_t max_block(struct block_device *bdev) | ||
99 | +sector_t blkdev_max_block(struct block_device *bdev) | ||
100 | { | ||
101 | sector_t retval = ~((sector_t)0); | ||
102 | loff_t sz = i_size_read(bdev->bd_inode); | ||
103 | @@ -139,7 +139,7 @@ static int | ||
104 | blkdev_get_block(struct inode *inode, sector_t iblock, | ||
105 | struct buffer_head *bh, int create) | ||
106 | { | ||
107 | - if (iblock >= max_block(I_BDEV(inode))) { | ||
108 | + if (iblock >= blkdev_max_block(I_BDEV(inode))) { | ||
109 | if (create) | ||
110 | return -EIO; | ||
111 | |||
112 | @@ -161,7 +161,7 @@ static int | ||
113 | blkdev_get_blocks(struct inode *inode, sector_t iblock, | ||
114 | struct buffer_head *bh, int create) | ||
115 | { | ||
116 | - sector_t end_block = max_block(I_BDEV(inode)); | ||
117 | + sector_t end_block = blkdev_max_block(I_BDEV(inode)); | ||
118 | unsigned long max_blocks = bh->b_size >> inode->i_blkbits; | ||
119 | |||
120 | if ((iblock + max_blocks) > end_block) { | ||
121 | diff --git a/fs/buffer.c b/fs/buffer.c | ||
122 | index 19d8eb7..c807931 100644 | ||
123 | --- a/fs/buffer.c | ||
124 | +++ b/fs/buffer.c | ||
125 | @@ -971,6 +971,7 @@ init_page_buffers(struct page *page, struct block_device *bdev, | ||
126 | struct buffer_head *head = page_buffers(page); | ||
127 | struct buffer_head *bh = head; | ||
128 | int uptodate = PageUptodate(page); | ||
129 | + sector_t end_block = blkdev_max_block(I_BDEV(bdev->bd_inode)); | ||
130 | |||
131 | do { | ||
132 | if (!buffer_mapped(bh)) { | ||
133 | @@ -979,7 +980,8 @@ init_page_buffers(struct page *page, struct block_device *bdev, | ||
134 | bh->b_blocknr = block; | ||
135 | if (uptodate) | ||
136 | set_buffer_uptodate(bh); | ||
137 | - set_buffer_mapped(bh); | ||
138 | + if (block < end_block) | ||
139 | + set_buffer_mapped(bh); | ||
140 | } | ||
141 | block++; | ||
142 | bh = bh->b_this_page; | ||
143 | diff --git a/include/linux/fs.h b/include/linux/fs.h | ||
144 | index 11f1951..43d36b7 100644 | ||
145 | --- a/include/linux/fs.h | ||
146 | +++ b/include/linux/fs.h | ||
147 | @@ -2094,6 +2094,7 @@ extern void unregister_blkdev(unsigned int, const char *); | ||
148 | extern struct block_device *bdget(dev_t); | ||
149 | extern struct block_device *bdgrab(struct block_device *bdev); | ||
150 | extern void bd_set_size(struct block_device *, loff_t size); | ||
151 | +extern sector_t blkdev_max_block(struct block_device *bdev); | ||
152 | extern void bd_forget(struct inode *inode); | ||
153 | extern void bdput(struct block_device *); | ||
154 | extern void invalidate_bdev(struct block_device *); | ||
155 | -- | ||
156 | 1.7.9.5 | ||
157 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0104-drivers-rtc-rtc-pl031.c-configure-correct-wday-for-2.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0104-drivers-rtc-rtc-pl031.c-configure-correct-wday-for-2.patch new file mode 100644 index 00000000..13627659 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0104-drivers-rtc-rtc-pl031.c-configure-correct-wday-for-2.patch | |||
@@ -0,0 +1,63 @@ | |||
1 | From 39c43ea9fecaddcfddd03787b920b8accdb87884 Mon Sep 17 00:00:00 2001 | ||
2 | From: Rajkumar Kasirajan <rajkumar.kasirajan@stericsson.com> | ||
3 | Date: Thu, 17 May 2012 17:03:24 -0700 | ||
4 | Subject: [PATCH 104/117] drivers/rtc/rtc-pl031.c: configure correct wday for | ||
5 | 2000-01-01 | ||
6 | |||
7 | commit c0a5f4a05af588a0f9951f8d24e2564b09501918 upstream. | ||
8 | |||
9 | The reset date of the ST Micro version of PL031 is 2000-01-01. The | ||
10 | correct weekday for 2000-01-01 is saturday, but pl031 is initialized to | ||
11 | sunday. This may lead to alarm malfunction, so configure the correct | ||
12 | wday if RTC_DR indicates reset. | ||
13 | |||
14 | Signed-off-by: Rajkumar Kasirajan <rajkumar.kasirajan@stericsson.com> | ||
15 | Signed-off-by: Linus Walleij <linus.walleij@linaro.org> | ||
16 | Cc: Mattias Wallin <mattias.wallin@stericsson.com> | ||
17 | Cc: Alessandro Zummo <a.zummo@towertech.it> | ||
18 | Signed-off-by: Andrew Morton <akpm@linux-foundation.org> | ||
19 | Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> | ||
20 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
21 | --- | ||
22 | drivers/rtc/rtc-pl031.c | 18 ++++++++++++++++++ | ||
23 | 1 file changed, 18 insertions(+) | ||
24 | |||
25 | diff --git a/drivers/rtc/rtc-pl031.c b/drivers/rtc/rtc-pl031.c | ||
26 | index e86edfc..1e80a48 100644 | ||
27 | --- a/drivers/rtc/rtc-pl031.c | ||
28 | +++ b/drivers/rtc/rtc-pl031.c | ||
29 | @@ -312,6 +312,7 @@ static int pl031_probe(struct amba_device *adev, const struct amba_id *id) | ||
30 | int ret; | ||
31 | struct pl031_local *ldata; | ||
32 | struct rtc_class_ops *ops = id->data; | ||
33 | + unsigned long time; | ||
34 | |||
35 | ret = amba_request_regions(adev, NULL); | ||
36 | if (ret) | ||
37 | @@ -343,6 +344,23 @@ static int pl031_probe(struct amba_device *adev, const struct amba_id *id) | ||
38 | writel(readl(ldata->base + RTC_CR) | RTC_CR_CWEN, | ||
39 | ldata->base + RTC_CR); | ||
40 | |||
41 | + /* | ||
42 | + * On ST PL031 variants, the RTC reset value does not provide correct | ||
43 | + * weekday for 2000-01-01. Correct the erroneous sunday to saturday. | ||
44 | + */ | ||
45 | + if (ldata->hw_designer == AMBA_VENDOR_ST) { | ||
46 | + if (readl(ldata->base + RTC_YDR) == 0x2000) { | ||
47 | + time = readl(ldata->base + RTC_DR); | ||
48 | + if ((time & | ||
49 | + (RTC_MON_MASK | RTC_MDAY_MASK | RTC_WDAY_MASK)) | ||
50 | + == 0x02120000) { | ||
51 | + time = time | (0x7 << RTC_WDAY_SHIFT); | ||
52 | + writel(0x2000, ldata->base + RTC_YLR); | ||
53 | + writel(time, ldata->base + RTC_LR); | ||
54 | + } | ||
55 | + } | ||
56 | + } | ||
57 | + | ||
58 | ldata->rtc = rtc_device_register("pl031", &adev->dev, ops, | ||
59 | THIS_MODULE); | ||
60 | if (IS_ERR(ldata->rtc)) { | ||
61 | -- | ||
62 | 1.7.9.5 | ||
63 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0105-rtlwifi-Preallocate-USB-read-buffers-and-eliminate-k.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0105-rtlwifi-Preallocate-USB-read-buffers-and-eliminate-k.patch new file mode 100644 index 00000000..67b25e2a --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0105-rtlwifi-Preallocate-USB-read-buffers-and-eliminate-k.patch | |||
@@ -0,0 +1,136 @@ | |||
1 | From 91ccd8364ff45f06a05715225583247c09be4bbc Mon Sep 17 00:00:00 2001 | ||
2 | From: Larry Finger <Larry.Finger@lwfinger.net> | ||
3 | Date: Mon, 19 Mar 2012 15:44:31 -0500 | ||
4 | Subject: [PATCH 105/117] rtlwifi: Preallocate USB read buffers and eliminate | ||
5 | kalloc in read routine | ||
6 | |||
7 | commit a7959c1394d4126a70a53b914ce4105f5173d0aa upstream. | ||
8 | |||
9 | The current version of rtlwifi for USB operations uses kmalloc to | ||
10 | acquire a 32-bit buffer for each read of the device. When | ||
11 | _usb_read_sync() is called with the rcu_lock held, the result is | ||
12 | a "sleeping function called from invalid context" BUG. This is | ||
13 | reported for two cases in https://bugzilla.kernel.org/show_bug.cgi?id=42775. | ||
14 | The first case has the lock originating from within rtlwifi and could | ||
15 | be fixed by rearranging the locking; however, the second originates from | ||
16 | within mac80211. The kmalloc() call is removed from _usb_read_sync() | ||
17 | by creating a ring buffer pointer in the private area and | ||
18 | allocating the buffer data in the probe routine. | ||
19 | |||
20 | Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> | ||
21 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
22 | [This version will apply to 3.2 and earlier. - Larry] | ||
23 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
24 | --- | ||
25 | drivers/net/wireless/rtlwifi/usb.c | 34 ++++++++++++++++------------------ | ||
26 | drivers/net/wireless/rtlwifi/wifi.h | 6 +++++- | ||
27 | 2 files changed, 21 insertions(+), 19 deletions(-) | ||
28 | |||
29 | diff --git a/drivers/net/wireless/rtlwifi/usb.c b/drivers/net/wireless/rtlwifi/usb.c | ||
30 | index 2b7bcc8..db34db6 100644 | ||
31 | --- a/drivers/net/wireless/rtlwifi/usb.c | ||
32 | +++ b/drivers/net/wireless/rtlwifi/usb.c | ||
33 | @@ -113,46 +113,38 @@ static int _usbctrl_vendorreq_sync_read(struct usb_device *udev, u8 request, | ||
34 | return status; | ||
35 | } | ||
36 | |||
37 | -static u32 _usb_read_sync(struct usb_device *udev, u32 addr, u16 len) | ||
38 | +static u32 _usb_read_sync(struct rtl_priv *rtlpriv, u32 addr, u16 len) | ||
39 | { | ||
40 | + struct device *dev = rtlpriv->io.dev; | ||
41 | + struct usb_device *udev = to_usb_device(dev); | ||
42 | u8 request; | ||
43 | u16 wvalue; | ||
44 | u16 index; | ||
45 | - u32 *data; | ||
46 | - u32 ret; | ||
47 | + __le32 *data = &rtlpriv->usb_data[rtlpriv->usb_data_index]; | ||
48 | |||
49 | - data = kmalloc(sizeof(u32), GFP_KERNEL); | ||
50 | - if (!data) | ||
51 | - return -ENOMEM; | ||
52 | request = REALTEK_USB_VENQT_CMD_REQ; | ||
53 | index = REALTEK_USB_VENQT_CMD_IDX; /* n/a */ | ||
54 | |||
55 | wvalue = (u16)addr; | ||
56 | _usbctrl_vendorreq_sync_read(udev, request, wvalue, index, data, len); | ||
57 | - ret = *data; | ||
58 | - kfree(data); | ||
59 | - return ret; | ||
60 | + if (++rtlpriv->usb_data_index >= RTL_USB_MAX_RX_COUNT) | ||
61 | + rtlpriv->usb_data_index = 0; | ||
62 | + return le32_to_cpu(*data); | ||
63 | } | ||
64 | |||
65 | static u8 _usb_read8_sync(struct rtl_priv *rtlpriv, u32 addr) | ||
66 | { | ||
67 | - struct device *dev = rtlpriv->io.dev; | ||
68 | - | ||
69 | - return (u8)_usb_read_sync(to_usb_device(dev), addr, 1); | ||
70 | + return (u8)_usb_read_sync(rtlpriv, addr, 1); | ||
71 | } | ||
72 | |||
73 | static u16 _usb_read16_sync(struct rtl_priv *rtlpriv, u32 addr) | ||
74 | { | ||
75 | - struct device *dev = rtlpriv->io.dev; | ||
76 | - | ||
77 | - return (u16)_usb_read_sync(to_usb_device(dev), addr, 2); | ||
78 | + return (u16)_usb_read_sync(rtlpriv, addr, 2); | ||
79 | } | ||
80 | |||
81 | static u32 _usb_read32_sync(struct rtl_priv *rtlpriv, u32 addr) | ||
82 | { | ||
83 | - struct device *dev = rtlpriv->io.dev; | ||
84 | - | ||
85 | - return _usb_read_sync(to_usb_device(dev), addr, 4); | ||
86 | + return _usb_read_sync(rtlpriv, addr, 4); | ||
87 | } | ||
88 | |||
89 | static void _usb_write_async(struct usb_device *udev, u32 addr, u32 val, | ||
90 | @@ -913,6 +905,11 @@ int __devinit rtl_usb_probe(struct usb_interface *intf, | ||
91 | return -ENOMEM; | ||
92 | } | ||
93 | rtlpriv = hw->priv; | ||
94 | + rtlpriv->usb_data = kzalloc(RTL_USB_MAX_RX_COUNT * sizeof(u32), | ||
95 | + GFP_KERNEL); | ||
96 | + if (!rtlpriv->usb_data) | ||
97 | + return -ENOMEM; | ||
98 | + rtlpriv->usb_data_index = 0; | ||
99 | SET_IEEE80211_DEV(hw, &intf->dev); | ||
100 | udev = interface_to_usbdev(intf); | ||
101 | usb_get_dev(udev); | ||
102 | @@ -990,6 +987,7 @@ void rtl_usb_disconnect(struct usb_interface *intf) | ||
103 | /* rtl_deinit_rfkill(hw); */ | ||
104 | rtl_usb_deinit(hw); | ||
105 | rtl_deinit_core(hw); | ||
106 | + kfree(rtlpriv->usb_data); | ||
107 | rtlpriv->cfg->ops->deinit_sw_leds(hw); | ||
108 | rtlpriv->cfg->ops->deinit_sw_vars(hw); | ||
109 | _rtl_usb_io_handler_release(hw); | ||
110 | diff --git a/drivers/net/wireless/rtlwifi/wifi.h b/drivers/net/wireless/rtlwifi/wifi.h | ||
111 | index 713c7dd..b1e9deb 100644 | ||
112 | --- a/drivers/net/wireless/rtlwifi/wifi.h | ||
113 | +++ b/drivers/net/wireless/rtlwifi/wifi.h | ||
114 | @@ -63,7 +63,7 @@ | ||
115 | #define AC_MAX 4 | ||
116 | #define QOS_QUEUE_NUM 4 | ||
117 | #define RTL_MAC80211_NUM_QUEUE 5 | ||
118 | - | ||
119 | +#define RTL_USB_MAX_RX_COUNT 100 | ||
120 | #define QBSS_LOAD_SIZE 5 | ||
121 | #define MAX_WMMELE_LENGTH 64 | ||
122 | |||
123 | @@ -1621,6 +1621,10 @@ struct rtl_priv { | ||
124 | interface or hardware */ | ||
125 | unsigned long status; | ||
126 | |||
127 | + /* data buffer pointer for USB reads */ | ||
128 | + __le32 *usb_data; | ||
129 | + int usb_data_index; | ||
130 | + | ||
131 | /*This must be the last item so | ||
132 | that it points to the data allocated | ||
133 | beyond this structure like: | ||
134 | -- | ||
135 | 1.7.9.5 | ||
136 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0106-NFS4-fix-compile-warnings-in-nfs4proc.c.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0106-NFS4-fix-compile-warnings-in-nfs4proc.c.patch new file mode 100644 index 00000000..678add01 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0106-NFS4-fix-compile-warnings-in-nfs4proc.c.patch | |||
@@ -0,0 +1,39 @@ | |||
1 | From 697781d208d92b5998815e584411f29c34048cd6 Mon Sep 17 00:00:00 2001 | ||
2 | From: Peng Tao <bergwolf@gmail.com> | ||
3 | Date: Tue, 10 Jan 2012 22:42:47 +0800 | ||
4 | Subject: [PATCH 106/117] NFS4: fix compile warnings in nfs4proc.c | ||
5 | MIME-Version: 1.0 | ||
6 | Content-Type: text/plain; charset=UTF-8 | ||
7 | Content-Transfer-Encoding: 8bit | ||
8 | |||
9 | commit de040beccd52bb5fcac90031505384d037b1111c upstream. | ||
10 | |||
11 | compile in nfs-for-3.3 branch shows following warnings. Fix it here. | ||
12 | |||
13 | fs/nfs/nfs4proc.c: In function ‘__nfs4_get_acl_uncached’: | ||
14 | fs/nfs/nfs4proc.c:3589: warning: format ‘%ld’ expects type ‘long int’, but argument 4 has type ‘size_t’ | ||
15 | fs/nfs/nfs4proc.c:3589: warning: format ‘%ld’ expects type ‘long int’, but argument 6 has type ‘size_t’ | ||
16 | |||
17 | Signed-off-by: Peng Tao <peng_tao@emc.com> | ||
18 | Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com> | ||
19 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
20 | --- | ||
21 | fs/nfs/nfs4proc.c | 2 +- | ||
22 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
23 | |||
24 | diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c | ||
25 | index bab7c58..065f82e 100644 | ||
26 | --- a/fs/nfs/nfs4proc.c | ||
27 | +++ b/fs/nfs/nfs4proc.c | ||
28 | @@ -3601,7 +3601,7 @@ static ssize_t __nfs4_get_acl_uncached(struct inode *inode, void *buf, size_t bu | ||
29 | res.acl_flags |= NFS4_ACL_LEN_REQUEST; | ||
30 | resp_buf = page_address(pages[0]); | ||
31 | |||
32 | - dprintk("%s buf %p buflen %ld npages %d args.acl_len %ld\n", | ||
33 | + dprintk("%s buf %p buflen %zu npages %d args.acl_len %zu\n", | ||
34 | __func__, buf, buflen, npages, args.acl_len); | ||
35 | ret = nfs4_call_sync(NFS_SERVER(inode)->client, NFS_SERVER(inode), | ||
36 | &msg, &args.seq_args, &res.seq_res, 0); | ||
37 | -- | ||
38 | 1.7.9.5 | ||
39 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0107-Avoid-reading-past-buffer-when-calling-GETACL.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0107-Avoid-reading-past-buffer-when-calling-GETACL.patch new file mode 100644 index 00000000..6859029c --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0107-Avoid-reading-past-buffer-when-calling-GETACL.patch | |||
@@ -0,0 +1,123 @@ | |||
1 | From c47d1a5a922ddebee44945d665affd7214f2dbf3 Mon Sep 17 00:00:00 2001 | ||
2 | From: Sachin Prabhu <sprabhu@redhat.com> | ||
3 | Date: Tue, 17 Apr 2012 14:35:39 +0100 | ||
4 | Subject: [PATCH 107/117] Avoid reading past buffer when calling GETACL | ||
5 | |||
6 | commit 5a00689930ab975fdd1b37b034475017e460cf2a upstream. | ||
7 | |||
8 | Bug noticed in commit | ||
9 | bf118a342f10dafe44b14451a1392c3254629a1f | ||
10 | |||
11 | When calling GETACL, if the size of the bitmap array, the length | ||
12 | attribute and the acl returned by the server is greater than the | ||
13 | allocated buffer(args.acl_len), we can Oops with a General Protection | ||
14 | fault at _copy_from_pages() when we attempt to read past the pages | ||
15 | allocated. | ||
16 | |||
17 | This patch allocates an extra PAGE for the bitmap and checks to see that | ||
18 | the bitmap + attribute_length + ACLs don't exceed the buffer space | ||
19 | allocated to it. | ||
20 | |||
21 | Signed-off-by: Sachin Prabhu <sprabhu@redhat.com> | ||
22 | Reported-by: Jian Li <jiali@redhat.com> | ||
23 | [Trond: Fixed a size_t vs unsigned int printk() warning] | ||
24 | Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com> | ||
25 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
26 | --- | ||
27 | fs/nfs/nfs4proc.c | 16 ++++++++++------ | ||
28 | fs/nfs/nfs4xdr.c | 18 +++++++++++------- | ||
29 | 2 files changed, 21 insertions(+), 13 deletions(-) | ||
30 | |||
31 | diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c | ||
32 | index 065f82e..39e5341 100644 | ||
33 | --- a/fs/nfs/nfs4proc.c | ||
34 | +++ b/fs/nfs/nfs4proc.c | ||
35 | @@ -3582,19 +3582,23 @@ static ssize_t __nfs4_get_acl_uncached(struct inode *inode, void *buf, size_t bu | ||
36 | if (npages == 0) | ||
37 | npages = 1; | ||
38 | |||
39 | + /* Add an extra page to handle the bitmap returned */ | ||
40 | + npages++; | ||
41 | + | ||
42 | for (i = 0; i < npages; i++) { | ||
43 | pages[i] = alloc_page(GFP_KERNEL); | ||
44 | if (!pages[i]) | ||
45 | goto out_free; | ||
46 | } | ||
47 | - if (npages > 1) { | ||
48 | - /* for decoding across pages */ | ||
49 | - res.acl_scratch = alloc_page(GFP_KERNEL); | ||
50 | - if (!res.acl_scratch) | ||
51 | - goto out_free; | ||
52 | - } | ||
53 | + | ||
54 | + /* for decoding across pages */ | ||
55 | + res.acl_scratch = alloc_page(GFP_KERNEL); | ||
56 | + if (!res.acl_scratch) | ||
57 | + goto out_free; | ||
58 | + | ||
59 | args.acl_len = npages * PAGE_SIZE; | ||
60 | args.acl_pgbase = 0; | ||
61 | + | ||
62 | /* Let decode_getfacl know not to fail if the ACL data is larger than | ||
63 | * the page we send as a guess */ | ||
64 | if (buf == NULL) | ||
65 | diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c | ||
66 | index 68adab4..d7e6f7b 100644 | ||
67 | --- a/fs/nfs/nfs4xdr.c | ||
68 | +++ b/fs/nfs/nfs4xdr.c | ||
69 | @@ -4965,11 +4965,19 @@ static int decode_getacl(struct xdr_stream *xdr, struct rpc_rqst *req, | ||
70 | bitmap[3] = {0}; | ||
71 | struct kvec *iov = req->rq_rcv_buf.head; | ||
72 | int status; | ||
73 | + size_t page_len = xdr->buf->page_len; | ||
74 | |||
75 | res->acl_len = 0; | ||
76 | if ((status = decode_op_hdr(xdr, OP_GETATTR)) != 0) | ||
77 | goto out; | ||
78 | + | ||
79 | bm_p = xdr->p; | ||
80 | + res->acl_data_offset = be32_to_cpup(bm_p) + 2; | ||
81 | + res->acl_data_offset <<= 2; | ||
82 | + /* Check if the acl data starts beyond the allocated buffer */ | ||
83 | + if (res->acl_data_offset > page_len) | ||
84 | + return -ERANGE; | ||
85 | + | ||
86 | if ((status = decode_attr_bitmap(xdr, bitmap)) != 0) | ||
87 | goto out; | ||
88 | if ((status = decode_attr_length(xdr, &attrlen, &savep)) != 0) | ||
89 | @@ -4979,28 +4987,24 @@ static int decode_getacl(struct xdr_stream *xdr, struct rpc_rqst *req, | ||
90 | return -EIO; | ||
91 | if (likely(bitmap[0] & FATTR4_WORD0_ACL)) { | ||
92 | size_t hdrlen; | ||
93 | - u32 recvd; | ||
94 | |||
95 | /* The bitmap (xdr len + bitmaps) and the attr xdr len words | ||
96 | * are stored with the acl data to handle the problem of | ||
97 | * variable length bitmaps.*/ | ||
98 | xdr->p = bm_p; | ||
99 | - res->acl_data_offset = be32_to_cpup(bm_p) + 2; | ||
100 | - res->acl_data_offset <<= 2; | ||
101 | |||
102 | /* We ignore &savep and don't do consistency checks on | ||
103 | * the attr length. Let userspace figure it out.... */ | ||
104 | hdrlen = (u8 *)xdr->p - (u8 *)iov->iov_base; | ||
105 | attrlen += res->acl_data_offset; | ||
106 | - recvd = req->rq_rcv_buf.len - hdrlen; | ||
107 | - if (attrlen > recvd) { | ||
108 | + if (attrlen > page_len) { | ||
109 | if (res->acl_flags & NFS4_ACL_LEN_REQUEST) { | ||
110 | /* getxattr interface called with a NULL buf */ | ||
111 | res->acl_len = attrlen; | ||
112 | goto out; | ||
113 | } | ||
114 | - dprintk("NFS: acl reply: attrlen %u > recvd %u\n", | ||
115 | - attrlen, recvd); | ||
116 | + dprintk("NFS: acl reply: attrlen %zu > page_len %u\n", | ||
117 | + attrlen, page_len); | ||
118 | return -EINVAL; | ||
119 | } | ||
120 | xdr_read_pages(xdr, attrlen); | ||
121 | -- | ||
122 | 1.7.9.5 | ||
123 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0108-Avoid-beyond-bounds-copy-while-caching-ACL.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0108-Avoid-beyond-bounds-copy-while-caching-ACL.patch new file mode 100644 index 00000000..4334d5cb --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0108-Avoid-beyond-bounds-copy-while-caching-ACL.patch | |||
@@ -0,0 +1,88 @@ | |||
1 | From 883e739eda3448cf83266a155d8ad39b1fe7ac6e Mon Sep 17 00:00:00 2001 | ||
2 | From: Sachin Prabhu <sprabhu@redhat.com> | ||
3 | Date: Tue, 17 Apr 2012 14:36:40 +0100 | ||
4 | Subject: [PATCH 108/117] Avoid beyond bounds copy while caching ACL | ||
5 | |||
6 | commit 5794d21ef4639f0e33440927bb903f9598c21e92 upstream. | ||
7 | |||
8 | When attempting to cache ACLs returned from the server, if the bitmap | ||
9 | size + the ACL size is greater than a PAGE_SIZE but the ACL size itself | ||
10 | is smaller than a PAGE_SIZE, we can read past the buffer page boundary. | ||
11 | |||
12 | Signed-off-by: Sachin Prabhu <sprabhu@redhat.com> | ||
13 | Reported-by: Jian Li <jiali@redhat.com> | ||
14 | Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com> | ||
15 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
16 | --- | ||
17 | fs/nfs/nfs4proc.c | 12 +++++------- | ||
18 | fs/nfs/nfs4xdr.c | 2 +- | ||
19 | 2 files changed, 6 insertions(+), 8 deletions(-) | ||
20 | |||
21 | diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c | ||
22 | index 39e5341..03d9b90 100644 | ||
23 | --- a/fs/nfs/nfs4proc.c | ||
24 | +++ b/fs/nfs/nfs4proc.c | ||
25 | @@ -3526,16 +3526,16 @@ out: | ||
26 | return ret; | ||
27 | } | ||
28 | |||
29 | -static void nfs4_write_cached_acl(struct inode *inode, const char *buf, size_t acl_len) | ||
30 | +static void nfs4_write_cached_acl(struct inode *inode, struct page **pages, size_t pgbase, size_t acl_len) | ||
31 | { | ||
32 | struct nfs4_cached_acl *acl; | ||
33 | |||
34 | - if (buf && acl_len <= PAGE_SIZE) { | ||
35 | + if (pages && acl_len <= PAGE_SIZE) { | ||
36 | acl = kmalloc(sizeof(*acl) + acl_len, GFP_KERNEL); | ||
37 | if (acl == NULL) | ||
38 | goto out; | ||
39 | acl->cached = 1; | ||
40 | - memcpy(acl->data, buf, acl_len); | ||
41 | + _copy_from_pages(acl->data, pages, pgbase, acl_len); | ||
42 | } else { | ||
43 | acl = kmalloc(sizeof(*acl), GFP_KERNEL); | ||
44 | if (acl == NULL) | ||
45 | @@ -3568,7 +3568,6 @@ static ssize_t __nfs4_get_acl_uncached(struct inode *inode, void *buf, size_t bu | ||
46 | struct nfs_getaclres res = { | ||
47 | .acl_len = buflen, | ||
48 | }; | ||
49 | - void *resp_buf; | ||
50 | struct rpc_message msg = { | ||
51 | .rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_GETACL], | ||
52 | .rpc_argp = &args, | ||
53 | @@ -3603,7 +3602,6 @@ static ssize_t __nfs4_get_acl_uncached(struct inode *inode, void *buf, size_t bu | ||
54 | * the page we send as a guess */ | ||
55 | if (buf == NULL) | ||
56 | res.acl_flags |= NFS4_ACL_LEN_REQUEST; | ||
57 | - resp_buf = page_address(pages[0]); | ||
58 | |||
59 | dprintk("%s buf %p buflen %zu npages %d args.acl_len %zu\n", | ||
60 | __func__, buf, buflen, npages, args.acl_len); | ||
61 | @@ -3614,9 +3612,9 @@ static ssize_t __nfs4_get_acl_uncached(struct inode *inode, void *buf, size_t bu | ||
62 | |||
63 | acl_len = res.acl_len - res.acl_data_offset; | ||
64 | if (acl_len > args.acl_len) | ||
65 | - nfs4_write_cached_acl(inode, NULL, acl_len); | ||
66 | + nfs4_write_cached_acl(inode, NULL, 0, acl_len); | ||
67 | else | ||
68 | - nfs4_write_cached_acl(inode, resp_buf + res.acl_data_offset, | ||
69 | + nfs4_write_cached_acl(inode, pages, res.acl_data_offset, | ||
70 | acl_len); | ||
71 | if (buf) { | ||
72 | ret = -ERANGE; | ||
73 | diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c | ||
74 | index d7e6f7b..bdd5bdc 100644 | ||
75 | --- a/fs/nfs/nfs4xdr.c | ||
76 | +++ b/fs/nfs/nfs4xdr.c | ||
77 | @@ -5003,7 +5003,7 @@ static int decode_getacl(struct xdr_stream *xdr, struct rpc_rqst *req, | ||
78 | res->acl_len = attrlen; | ||
79 | goto out; | ||
80 | } | ||
81 | - dprintk("NFS: acl reply: attrlen %zu > page_len %u\n", | ||
82 | + dprintk("NFS: acl reply: attrlen %u > page_len %zu\n", | ||
83 | attrlen, page_len); | ||
84 | return -EINVAL; | ||
85 | } | ||
86 | -- | ||
87 | 1.7.9.5 | ||
88 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0109-i2c-tegra-notify-transfer-complete-after-clearing-st.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0109-i2c-tegra-notify-transfer-complete-after-clearing-st.patch new file mode 100644 index 00000000..e6899f50 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0109-i2c-tegra-notify-transfer-complete-after-clearing-st.patch | |||
@@ -0,0 +1,73 @@ | |||
1 | From 0f8821cf8d7d8c94c8d29d8d32c02d90363ffe9b Mon Sep 17 00:00:00 2001 | ||
2 | From: Laxman Dewangan <ldewangan@nvidia.com> | ||
3 | Date: Mon, 7 May 2012 12:16:19 +0530 | ||
4 | Subject: [PATCH 109/117] i2c: tegra: notify transfer-complete after clearing | ||
5 | status. | ||
6 | |||
7 | commit c889e91d2cc22123f20f40dde0c0a91856a20eea upstream. | ||
8 | |||
9 | The notification of the transfer complete by calling complete() | ||
10 | should be done after clearing all interrupt status. | ||
11 | This avoids the race condition of misconfigure the i2c controller | ||
12 | in multi-core environment. | ||
13 | |||
14 | Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> | ||
15 | Acked-by: Stephen Warren <swarren@wwwdotorg.org> | ||
16 | Signed-off-by: Wolfram Sang <w.sang@pengutronix.de> | ||
17 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
18 | --- | ||
19 | drivers/i2c/busses/i2c-tegra.c | 13 ++++++------- | ||
20 | 1 file changed, 6 insertions(+), 7 deletions(-) | ||
21 | |||
22 | diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c | ||
23 | index 46b6500..3d7885a 100644 | ||
24 | --- a/drivers/i2c/busses/i2c-tegra.c | ||
25 | +++ b/drivers/i2c/busses/i2c-tegra.c | ||
26 | @@ -401,8 +401,6 @@ static irqreturn_t tegra_i2c_isr(int irq, void *dev_id) | ||
27 | disable_irq_nosync(i2c_dev->irq); | ||
28 | i2c_dev->irq_disabled = 1; | ||
29 | } | ||
30 | - | ||
31 | - complete(&i2c_dev->msg_complete); | ||
32 | goto err; | ||
33 | } | ||
34 | |||
35 | @@ -411,7 +409,6 @@ static irqreturn_t tegra_i2c_isr(int irq, void *dev_id) | ||
36 | i2c_dev->msg_err |= I2C_ERR_NO_ACK; | ||
37 | if (status & I2C_INT_ARBITRATION_LOST) | ||
38 | i2c_dev->msg_err |= I2C_ERR_ARBITRATION_LOST; | ||
39 | - complete(&i2c_dev->msg_complete); | ||
40 | goto err; | ||
41 | } | ||
42 | |||
43 | @@ -429,14 +426,14 @@ static irqreturn_t tegra_i2c_isr(int irq, void *dev_id) | ||
44 | tegra_i2c_mask_irq(i2c_dev, I2C_INT_TX_FIFO_DATA_REQ); | ||
45 | } | ||
46 | |||
47 | + i2c_writel(i2c_dev, status, I2C_INT_STATUS); | ||
48 | + if (i2c_dev->is_dvc) | ||
49 | + dvc_writel(i2c_dev, DVC_STATUS_I2C_DONE_INTR, DVC_STATUS); | ||
50 | + | ||
51 | if (status & I2C_INT_PACKET_XFER_COMPLETE) { | ||
52 | BUG_ON(i2c_dev->msg_buf_remaining); | ||
53 | complete(&i2c_dev->msg_complete); | ||
54 | } | ||
55 | - | ||
56 | - i2c_writel(i2c_dev, status, I2C_INT_STATUS); | ||
57 | - if (i2c_dev->is_dvc) | ||
58 | - dvc_writel(i2c_dev, DVC_STATUS_I2C_DONE_INTR, DVC_STATUS); | ||
59 | return IRQ_HANDLED; | ||
60 | err: | ||
61 | /* An error occurred, mask all interrupts */ | ||
62 | @@ -446,6 +443,8 @@ err: | ||
63 | i2c_writel(i2c_dev, status, I2C_INT_STATUS); | ||
64 | if (i2c_dev->is_dvc) | ||
65 | dvc_writel(i2c_dev, DVC_STATUS_I2C_DONE_INTR, DVC_STATUS); | ||
66 | + | ||
67 | + complete(&i2c_dev->msg_complete); | ||
68 | return IRQ_HANDLED; | ||
69 | } | ||
70 | |||
71 | -- | ||
72 | 1.7.9.5 | ||
73 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0110-i2c-davinci-Free-requested-IRQ-in-remove.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0110-i2c-davinci-Free-requested-IRQ-in-remove.patch new file mode 100644 index 00000000..7b921ac1 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0110-i2c-davinci-Free-requested-IRQ-in-remove.patch | |||
@@ -0,0 +1,33 @@ | |||
1 | From 38de7136cb639352d20e39a90c41bb93f63a03e6 Mon Sep 17 00:00:00 2001 | ||
2 | From: Marcus Folkesson <marcus.folkesson@gmail.com> | ||
3 | Date: Thu, 3 May 2012 15:56:36 +0200 | ||
4 | Subject: [PATCH 110/117] i2c: davinci: Free requested IRQ in remove | ||
5 | |||
6 | commit 9868a060ccf769c08ec378a9829137e272e9a92c upstream. | ||
7 | |||
8 | The freed IRQ is not necessary the one requested in probe. | ||
9 | Even if it was, with two or more i2c-controllers it will fails anyway. | ||
10 | |||
11 | Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com> | ||
12 | Signed-off-by: Wolfram Sang <w.sang@pengutronix.de> | ||
13 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
14 | --- | ||
15 | drivers/i2c/busses/i2c-davinci.c | 2 +- | ||
16 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
17 | |||
18 | diff --git a/drivers/i2c/busses/i2c-davinci.c b/drivers/i2c/busses/i2c-davinci.c | ||
19 | index a76d85f..79b4bcb 100644 | ||
20 | --- a/drivers/i2c/busses/i2c-davinci.c | ||
21 | +++ b/drivers/i2c/busses/i2c-davinci.c | ||
22 | @@ -755,7 +755,7 @@ static int davinci_i2c_remove(struct platform_device *pdev) | ||
23 | dev->clk = NULL; | ||
24 | |||
25 | davinci_i2c_write_reg(dev, DAVINCI_I2C_MDR_REG, 0); | ||
26 | - free_irq(IRQ_I2C, dev); | ||
27 | + free_irq(dev->irq, dev); | ||
28 | iounmap(dev->base); | ||
29 | kfree(dev); | ||
30 | |||
31 | -- | ||
32 | 1.7.9.5 | ||
33 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0111-x86-realmode-16-bit-real-mode-code-support-for-reloc.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0111-x86-realmode-16-bit-real-mode-code-support-for-reloc.patch new file mode 100644 index 00000000..dfd13100 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0111-x86-realmode-16-bit-real-mode-code-support-for-reloc.patch | |||
@@ -0,0 +1,1651 @@ | |||
1 | From 873824542d50e967bda4a3526b4aceec80641c6d Mon Sep 17 00:00:00 2001 | ||
2 | From: "H. Peter Anvin" <hpa@linux.intel.com> | ||
3 | Date: Tue, 8 May 2012 21:22:24 +0300 | ||
4 | Subject: [PATCH 111/117] x86, realmode: 16-bit real-mode code support for | ||
5 | relocs tool | ||
6 | |||
7 | commit 6520fe5564acf07ade7b18a1272db1184835c487 upstream. | ||
8 | |||
9 | A new option is added to the relocs tool called '--realmode'. | ||
10 | This option causes the generation of 16-bit segment relocations | ||
11 | and 32-bit linear relocations for the real-mode code. When | ||
12 | the real-mode code is moved to the low-memory during kernel | ||
13 | initialization, these relocation entries can be used to | ||
14 | relocate the code properly. | ||
15 | |||
16 | In the assembly code 16-bit segment relocations must be relative | ||
17 | to the 'real_mode_seg' absolute symbol. Linear relocations must be | ||
18 | relative to a symbol prefixed with 'pa_'. | ||
19 | |||
20 | 16-bit segment relocation is used to load cs:ip in 16-bit code. | ||
21 | Linear relocations are used in the 32-bit code for relocatable | ||
22 | data references. They are declared in the linker script of the | ||
23 | real-mode code. | ||
24 | |||
25 | The relocs tool is moved to arch/x86/tools/relocs.c, and added new | ||
26 | target archscripts that can be used to build scripts needed building | ||
27 | an architecture. be compiled before building the arch/x86 tree. | ||
28 | |||
29 | [ hpa: accelerating this because it detects invalid absolute | ||
30 | relocations, a serious bug in binutils 2.22.52.0.x which currently | ||
31 | produces bad kernels. ] | ||
32 | |||
33 | Signed-off-by: H. Peter Anvin <hpa@linux.intel.com> | ||
34 | Link: http://lkml.kernel.org/r/1336501366-28617-2-git-send-email-jarkko.sakkinen@intel.com | ||
35 | Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@intel.com> | ||
36 | Signed-off-by: H. Peter Anvin <hpa@linux.intel.com> | ||
37 | Cc: <stable@vger.kernel.org> | ||
38 | [bwh: Backported to 3.2: | ||
39 | - Adjust context (no archheaders; no insn_sanity) | ||
40 | - Expand put_unaligned_le32()] | ||
41 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
42 | --- | ||
43 | Makefile | 9 +- | ||
44 | arch/x86/Makefile | 3 + | ||
45 | arch/x86/boot/compressed/Makefile | 9 +- | ||
46 | arch/x86/boot/compressed/relocs.c | 680 ------------------------------- | ||
47 | arch/x86/tools/.gitignore | 1 + | ||
48 | arch/x86/tools/Makefile | 3 + | ||
49 | arch/x86/tools/relocs.c | 799 +++++++++++++++++++++++++++++++++++++ | ||
50 | scripts/Makefile | 2 + | ||
51 | 8 files changed, 818 insertions(+), 688 deletions(-) | ||
52 | delete mode 100644 arch/x86/boot/compressed/relocs.c | ||
53 | create mode 100644 arch/x86/tools/.gitignore | ||
54 | create mode 100644 arch/x86/tools/relocs.c | ||
55 | |||
56 | diff --git a/Makefile b/Makefile | ||
57 | index add68f1..0226da5 100644 | ||
58 | --- a/Makefile | ||
59 | +++ b/Makefile | ||
60 | @@ -442,7 +442,7 @@ asm-generic: | ||
61 | |||
62 | no-dot-config-targets := clean mrproper distclean \ | ||
63 | cscope gtags TAGS tags help %docs check% coccicheck \ | ||
64 | - include/linux/version.h headers_% \ | ||
65 | + include/linux/version.h headers_% archscripts \ | ||
66 | kernelversion %src-pkg | ||
67 | |||
68 | config-targets := 0 | ||
69 | @@ -979,7 +979,7 @@ prepare1: prepare2 include/linux/version.h include/generated/utsrelease.h \ | ||
70 | include/config/auto.conf | ||
71 | $(cmd_crmodverdir) | ||
72 | |||
73 | -archprepare: prepare1 scripts_basic | ||
74 | +archprepare: archscripts prepare1 scripts_basic | ||
75 | |||
76 | prepare0: archprepare FORCE | ||
77 | $(Q)$(MAKE) $(build)=. | ||
78 | @@ -1046,8 +1046,11 @@ hdr-inst := -rR -f $(srctree)/scripts/Makefile.headersinst obj | ||
79 | # If we do an all arch process set dst to asm-$(hdr-arch) | ||
80 | hdr-dst = $(if $(KBUILD_HEADERS), dst=include/asm-$(hdr-arch), dst=include/asm) | ||
81 | |||
82 | +PHONY += archscripts | ||
83 | +archscripts: | ||
84 | + | ||
85 | PHONY += __headers | ||
86 | -__headers: include/linux/version.h scripts_basic asm-generic FORCE | ||
87 | +__headers: include/linux/version.h scripts_basic asm-generic archscripts FORCE | ||
88 | $(Q)$(MAKE) $(build)=scripts build_unifdef | ||
89 | |||
90 | PHONY += headers_install_all | ||
91 | diff --git a/arch/x86/Makefile b/arch/x86/Makefile | ||
92 | index b02e509..774fd16 100644 | ||
93 | --- a/arch/x86/Makefile | ||
94 | +++ b/arch/x86/Makefile | ||
95 | @@ -117,6 +117,9 @@ KBUILD_CFLAGS += $(call cc-option,-mno-sse -mno-mmx -mno-sse2 -mno-3dnow,) | ||
96 | KBUILD_CFLAGS += $(mflags-y) | ||
97 | KBUILD_AFLAGS += $(mflags-y) | ||
98 | |||
99 | +archscripts: | ||
100 | + $(Q)$(MAKE) $(build)=arch/x86/tools relocs | ||
101 | + | ||
102 | ### | ||
103 | # Kernel objects | ||
104 | |||
105 | diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile | ||
106 | index 09664ef..77453c6 100644 | ||
107 | --- a/arch/x86/boot/compressed/Makefile | ||
108 | +++ b/arch/x86/boot/compressed/Makefile | ||
109 | @@ -31,13 +31,12 @@ OBJCOPYFLAGS_vmlinux.bin := -R .comment -S | ||
110 | $(obj)/vmlinux.bin: vmlinux FORCE | ||
111 | $(call if_changed,objcopy) | ||
112 | |||
113 | +targets += vmlinux.bin.all vmlinux.relocs | ||
114 | |||
115 | -targets += vmlinux.bin.all vmlinux.relocs relocs | ||
116 | -hostprogs-$(CONFIG_X86_NEED_RELOCS) += relocs | ||
117 | - | ||
118 | +CMD_RELOCS = arch/x86/tools/relocs | ||
119 | quiet_cmd_relocs = RELOCS $@ | ||
120 | - cmd_relocs = $(obj)/relocs $< > $@;$(obj)/relocs --abs-relocs $< | ||
121 | -$(obj)/vmlinux.relocs: vmlinux $(obj)/relocs FORCE | ||
122 | + cmd_relocs = $(CMD_RELOCS) $< > $@;$(CMD_RELOCS) --abs-relocs $< | ||
123 | +$(obj)/vmlinux.relocs: vmlinux FORCE | ||
124 | $(call if_changed,relocs) | ||
125 | |||
126 | vmlinux.bin.all-y := $(obj)/vmlinux.bin | ||
127 | diff --git a/arch/x86/boot/compressed/relocs.c b/arch/x86/boot/compressed/relocs.c | ||
128 | deleted file mode 100644 | ||
129 | index e77f4e4..0000000 | ||
130 | --- a/arch/x86/boot/compressed/relocs.c | ||
131 | +++ /dev/null | ||
132 | @@ -1,680 +0,0 @@ | ||
133 | -#include <stdio.h> | ||
134 | -#include <stdarg.h> | ||
135 | -#include <stdlib.h> | ||
136 | -#include <stdint.h> | ||
137 | -#include <string.h> | ||
138 | -#include <errno.h> | ||
139 | -#include <unistd.h> | ||
140 | -#include <elf.h> | ||
141 | -#include <byteswap.h> | ||
142 | -#define USE_BSD | ||
143 | -#include <endian.h> | ||
144 | -#include <regex.h> | ||
145 | - | ||
146 | -static void die(char *fmt, ...); | ||
147 | - | ||
148 | -#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) | ||
149 | -static Elf32_Ehdr ehdr; | ||
150 | -static unsigned long reloc_count, reloc_idx; | ||
151 | -static unsigned long *relocs; | ||
152 | - | ||
153 | -struct section { | ||
154 | - Elf32_Shdr shdr; | ||
155 | - struct section *link; | ||
156 | - Elf32_Sym *symtab; | ||
157 | - Elf32_Rel *reltab; | ||
158 | - char *strtab; | ||
159 | -}; | ||
160 | -static struct section *secs; | ||
161 | - | ||
162 | -/* | ||
163 | - * Following symbols have been audited. There values are constant and do | ||
164 | - * not change if bzImage is loaded at a different physical address than | ||
165 | - * the address for which it has been compiled. Don't warn user about | ||
166 | - * absolute relocations present w.r.t these symbols. | ||
167 | - */ | ||
168 | -static const char abs_sym_regex[] = | ||
169 | - "^(xen_irq_disable_direct_reloc$|" | ||
170 | - "xen_save_fl_direct_reloc$|" | ||
171 | - "VDSO|" | ||
172 | - "__crc_)"; | ||
173 | -static regex_t abs_sym_regex_c; | ||
174 | -static int is_abs_reloc(const char *sym_name) | ||
175 | -{ | ||
176 | - return !regexec(&abs_sym_regex_c, sym_name, 0, NULL, 0); | ||
177 | -} | ||
178 | - | ||
179 | -/* | ||
180 | - * These symbols are known to be relative, even if the linker marks them | ||
181 | - * as absolute (typically defined outside any section in the linker script.) | ||
182 | - */ | ||
183 | -static const char rel_sym_regex[] = | ||
184 | - "^_end$"; | ||
185 | -static regex_t rel_sym_regex_c; | ||
186 | -static int is_rel_reloc(const char *sym_name) | ||
187 | -{ | ||
188 | - return !regexec(&rel_sym_regex_c, sym_name, 0, NULL, 0); | ||
189 | -} | ||
190 | - | ||
191 | -static void regex_init(void) | ||
192 | -{ | ||
193 | - char errbuf[128]; | ||
194 | - int err; | ||
195 | - | ||
196 | - err = regcomp(&abs_sym_regex_c, abs_sym_regex, | ||
197 | - REG_EXTENDED|REG_NOSUB); | ||
198 | - if (err) { | ||
199 | - regerror(err, &abs_sym_regex_c, errbuf, sizeof errbuf); | ||
200 | - die("%s", errbuf); | ||
201 | - } | ||
202 | - | ||
203 | - err = regcomp(&rel_sym_regex_c, rel_sym_regex, | ||
204 | - REG_EXTENDED|REG_NOSUB); | ||
205 | - if (err) { | ||
206 | - regerror(err, &rel_sym_regex_c, errbuf, sizeof errbuf); | ||
207 | - die("%s", errbuf); | ||
208 | - } | ||
209 | -} | ||
210 | - | ||
211 | -static void die(char *fmt, ...) | ||
212 | -{ | ||
213 | - va_list ap; | ||
214 | - va_start(ap, fmt); | ||
215 | - vfprintf(stderr, fmt, ap); | ||
216 | - va_end(ap); | ||
217 | - exit(1); | ||
218 | -} | ||
219 | - | ||
220 | -static const char *sym_type(unsigned type) | ||
221 | -{ | ||
222 | - static const char *type_name[] = { | ||
223 | -#define SYM_TYPE(X) [X] = #X | ||
224 | - SYM_TYPE(STT_NOTYPE), | ||
225 | - SYM_TYPE(STT_OBJECT), | ||
226 | - SYM_TYPE(STT_FUNC), | ||
227 | - SYM_TYPE(STT_SECTION), | ||
228 | - SYM_TYPE(STT_FILE), | ||
229 | - SYM_TYPE(STT_COMMON), | ||
230 | - SYM_TYPE(STT_TLS), | ||
231 | -#undef SYM_TYPE | ||
232 | - }; | ||
233 | - const char *name = "unknown sym type name"; | ||
234 | - if (type < ARRAY_SIZE(type_name)) { | ||
235 | - name = type_name[type]; | ||
236 | - } | ||
237 | - return name; | ||
238 | -} | ||
239 | - | ||
240 | -static const char *sym_bind(unsigned bind) | ||
241 | -{ | ||
242 | - static const char *bind_name[] = { | ||
243 | -#define SYM_BIND(X) [X] = #X | ||
244 | - SYM_BIND(STB_LOCAL), | ||
245 | - SYM_BIND(STB_GLOBAL), | ||
246 | - SYM_BIND(STB_WEAK), | ||
247 | -#undef SYM_BIND | ||
248 | - }; | ||
249 | - const char *name = "unknown sym bind name"; | ||
250 | - if (bind < ARRAY_SIZE(bind_name)) { | ||
251 | - name = bind_name[bind]; | ||
252 | - } | ||
253 | - return name; | ||
254 | -} | ||
255 | - | ||
256 | -static const char *sym_visibility(unsigned visibility) | ||
257 | -{ | ||
258 | - static const char *visibility_name[] = { | ||
259 | -#define SYM_VISIBILITY(X) [X] = #X | ||
260 | - SYM_VISIBILITY(STV_DEFAULT), | ||
261 | - SYM_VISIBILITY(STV_INTERNAL), | ||
262 | - SYM_VISIBILITY(STV_HIDDEN), | ||
263 | - SYM_VISIBILITY(STV_PROTECTED), | ||
264 | -#undef SYM_VISIBILITY | ||
265 | - }; | ||
266 | - const char *name = "unknown sym visibility name"; | ||
267 | - if (visibility < ARRAY_SIZE(visibility_name)) { | ||
268 | - name = visibility_name[visibility]; | ||
269 | - } | ||
270 | - return name; | ||
271 | -} | ||
272 | - | ||
273 | -static const char *rel_type(unsigned type) | ||
274 | -{ | ||
275 | - static const char *type_name[] = { | ||
276 | -#define REL_TYPE(X) [X] = #X | ||
277 | - REL_TYPE(R_386_NONE), | ||
278 | - REL_TYPE(R_386_32), | ||
279 | - REL_TYPE(R_386_PC32), | ||
280 | - REL_TYPE(R_386_GOT32), | ||
281 | - REL_TYPE(R_386_PLT32), | ||
282 | - REL_TYPE(R_386_COPY), | ||
283 | - REL_TYPE(R_386_GLOB_DAT), | ||
284 | - REL_TYPE(R_386_JMP_SLOT), | ||
285 | - REL_TYPE(R_386_RELATIVE), | ||
286 | - REL_TYPE(R_386_GOTOFF), | ||
287 | - REL_TYPE(R_386_GOTPC), | ||
288 | -#undef REL_TYPE | ||
289 | - }; | ||
290 | - const char *name = "unknown type rel type name"; | ||
291 | - if (type < ARRAY_SIZE(type_name) && type_name[type]) { | ||
292 | - name = type_name[type]; | ||
293 | - } | ||
294 | - return name; | ||
295 | -} | ||
296 | - | ||
297 | -static const char *sec_name(unsigned shndx) | ||
298 | -{ | ||
299 | - const char *sec_strtab; | ||
300 | - const char *name; | ||
301 | - sec_strtab = secs[ehdr.e_shstrndx].strtab; | ||
302 | - name = "<noname>"; | ||
303 | - if (shndx < ehdr.e_shnum) { | ||
304 | - name = sec_strtab + secs[shndx].shdr.sh_name; | ||
305 | - } | ||
306 | - else if (shndx == SHN_ABS) { | ||
307 | - name = "ABSOLUTE"; | ||
308 | - } | ||
309 | - else if (shndx == SHN_COMMON) { | ||
310 | - name = "COMMON"; | ||
311 | - } | ||
312 | - return name; | ||
313 | -} | ||
314 | - | ||
315 | -static const char *sym_name(const char *sym_strtab, Elf32_Sym *sym) | ||
316 | -{ | ||
317 | - const char *name; | ||
318 | - name = "<noname>"; | ||
319 | - if (sym->st_name) { | ||
320 | - name = sym_strtab + sym->st_name; | ||
321 | - } | ||
322 | - else { | ||
323 | - name = sec_name(secs[sym->st_shndx].shdr.sh_name); | ||
324 | - } | ||
325 | - return name; | ||
326 | -} | ||
327 | - | ||
328 | - | ||
329 | - | ||
330 | -#if BYTE_ORDER == LITTLE_ENDIAN | ||
331 | -#define le16_to_cpu(val) (val) | ||
332 | -#define le32_to_cpu(val) (val) | ||
333 | -#endif | ||
334 | -#if BYTE_ORDER == BIG_ENDIAN | ||
335 | -#define le16_to_cpu(val) bswap_16(val) | ||
336 | -#define le32_to_cpu(val) bswap_32(val) | ||
337 | -#endif | ||
338 | - | ||
339 | -static uint16_t elf16_to_cpu(uint16_t val) | ||
340 | -{ | ||
341 | - return le16_to_cpu(val); | ||
342 | -} | ||
343 | - | ||
344 | -static uint32_t elf32_to_cpu(uint32_t val) | ||
345 | -{ | ||
346 | - return le32_to_cpu(val); | ||
347 | -} | ||
348 | - | ||
349 | -static void read_ehdr(FILE *fp) | ||
350 | -{ | ||
351 | - if (fread(&ehdr, sizeof(ehdr), 1, fp) != 1) { | ||
352 | - die("Cannot read ELF header: %s\n", | ||
353 | - strerror(errno)); | ||
354 | - } | ||
355 | - if (memcmp(ehdr.e_ident, ELFMAG, SELFMAG) != 0) { | ||
356 | - die("No ELF magic\n"); | ||
357 | - } | ||
358 | - if (ehdr.e_ident[EI_CLASS] != ELFCLASS32) { | ||
359 | - die("Not a 32 bit executable\n"); | ||
360 | - } | ||
361 | - if (ehdr.e_ident[EI_DATA] != ELFDATA2LSB) { | ||
362 | - die("Not a LSB ELF executable\n"); | ||
363 | - } | ||
364 | - if (ehdr.e_ident[EI_VERSION] != EV_CURRENT) { | ||
365 | - die("Unknown ELF version\n"); | ||
366 | - } | ||
367 | - /* Convert the fields to native endian */ | ||
368 | - ehdr.e_type = elf16_to_cpu(ehdr.e_type); | ||
369 | - ehdr.e_machine = elf16_to_cpu(ehdr.e_machine); | ||
370 | - ehdr.e_version = elf32_to_cpu(ehdr.e_version); | ||
371 | - ehdr.e_entry = elf32_to_cpu(ehdr.e_entry); | ||
372 | - ehdr.e_phoff = elf32_to_cpu(ehdr.e_phoff); | ||
373 | - ehdr.e_shoff = elf32_to_cpu(ehdr.e_shoff); | ||
374 | - ehdr.e_flags = elf32_to_cpu(ehdr.e_flags); | ||
375 | - ehdr.e_ehsize = elf16_to_cpu(ehdr.e_ehsize); | ||
376 | - ehdr.e_phentsize = elf16_to_cpu(ehdr.e_phentsize); | ||
377 | - ehdr.e_phnum = elf16_to_cpu(ehdr.e_phnum); | ||
378 | - ehdr.e_shentsize = elf16_to_cpu(ehdr.e_shentsize); | ||
379 | - ehdr.e_shnum = elf16_to_cpu(ehdr.e_shnum); | ||
380 | - ehdr.e_shstrndx = elf16_to_cpu(ehdr.e_shstrndx); | ||
381 | - | ||
382 | - if ((ehdr.e_type != ET_EXEC) && (ehdr.e_type != ET_DYN)) { | ||
383 | - die("Unsupported ELF header type\n"); | ||
384 | - } | ||
385 | - if (ehdr.e_machine != EM_386) { | ||
386 | - die("Not for x86\n"); | ||
387 | - } | ||
388 | - if (ehdr.e_version != EV_CURRENT) { | ||
389 | - die("Unknown ELF version\n"); | ||
390 | - } | ||
391 | - if (ehdr.e_ehsize != sizeof(Elf32_Ehdr)) { | ||
392 | - die("Bad Elf header size\n"); | ||
393 | - } | ||
394 | - if (ehdr.e_phentsize != sizeof(Elf32_Phdr)) { | ||
395 | - die("Bad program header entry\n"); | ||
396 | - } | ||
397 | - if (ehdr.e_shentsize != sizeof(Elf32_Shdr)) { | ||
398 | - die("Bad section header entry\n"); | ||
399 | - } | ||
400 | - if (ehdr.e_shstrndx >= ehdr.e_shnum) { | ||
401 | - die("String table index out of bounds\n"); | ||
402 | - } | ||
403 | -} | ||
404 | - | ||
405 | -static void read_shdrs(FILE *fp) | ||
406 | -{ | ||
407 | - int i; | ||
408 | - Elf32_Shdr shdr; | ||
409 | - | ||
410 | - secs = calloc(ehdr.e_shnum, sizeof(struct section)); | ||
411 | - if (!secs) { | ||
412 | - die("Unable to allocate %d section headers\n", | ||
413 | - ehdr.e_shnum); | ||
414 | - } | ||
415 | - if (fseek(fp, ehdr.e_shoff, SEEK_SET) < 0) { | ||
416 | - die("Seek to %d failed: %s\n", | ||
417 | - ehdr.e_shoff, strerror(errno)); | ||
418 | - } | ||
419 | - for (i = 0; i < ehdr.e_shnum; i++) { | ||
420 | - struct section *sec = &secs[i]; | ||
421 | - if (fread(&shdr, sizeof shdr, 1, fp) != 1) | ||
422 | - die("Cannot read ELF section headers %d/%d: %s\n", | ||
423 | - i, ehdr.e_shnum, strerror(errno)); | ||
424 | - sec->shdr.sh_name = elf32_to_cpu(shdr.sh_name); | ||
425 | - sec->shdr.sh_type = elf32_to_cpu(shdr.sh_type); | ||
426 | - sec->shdr.sh_flags = elf32_to_cpu(shdr.sh_flags); | ||
427 | - sec->shdr.sh_addr = elf32_to_cpu(shdr.sh_addr); | ||
428 | - sec->shdr.sh_offset = elf32_to_cpu(shdr.sh_offset); | ||
429 | - sec->shdr.sh_size = elf32_to_cpu(shdr.sh_size); | ||
430 | - sec->shdr.sh_link = elf32_to_cpu(shdr.sh_link); | ||
431 | - sec->shdr.sh_info = elf32_to_cpu(shdr.sh_info); | ||
432 | - sec->shdr.sh_addralign = elf32_to_cpu(shdr.sh_addralign); | ||
433 | - sec->shdr.sh_entsize = elf32_to_cpu(shdr.sh_entsize); | ||
434 | - if (sec->shdr.sh_link < ehdr.e_shnum) | ||
435 | - sec->link = &secs[sec->shdr.sh_link]; | ||
436 | - } | ||
437 | - | ||
438 | -} | ||
439 | - | ||
440 | -static void read_strtabs(FILE *fp) | ||
441 | -{ | ||
442 | - int i; | ||
443 | - for (i = 0; i < ehdr.e_shnum; i++) { | ||
444 | - struct section *sec = &secs[i]; | ||
445 | - if (sec->shdr.sh_type != SHT_STRTAB) { | ||
446 | - continue; | ||
447 | - } | ||
448 | - sec->strtab = malloc(sec->shdr.sh_size); | ||
449 | - if (!sec->strtab) { | ||
450 | - die("malloc of %d bytes for strtab failed\n", | ||
451 | - sec->shdr.sh_size); | ||
452 | - } | ||
453 | - if (fseek(fp, sec->shdr.sh_offset, SEEK_SET) < 0) { | ||
454 | - die("Seek to %d failed: %s\n", | ||
455 | - sec->shdr.sh_offset, strerror(errno)); | ||
456 | - } | ||
457 | - if (fread(sec->strtab, 1, sec->shdr.sh_size, fp) | ||
458 | - != sec->shdr.sh_size) { | ||
459 | - die("Cannot read symbol table: %s\n", | ||
460 | - strerror(errno)); | ||
461 | - } | ||
462 | - } | ||
463 | -} | ||
464 | - | ||
465 | -static void read_symtabs(FILE *fp) | ||
466 | -{ | ||
467 | - int i,j; | ||
468 | - for (i = 0; i < ehdr.e_shnum; i++) { | ||
469 | - struct section *sec = &secs[i]; | ||
470 | - if (sec->shdr.sh_type != SHT_SYMTAB) { | ||
471 | - continue; | ||
472 | - } | ||
473 | - sec->symtab = malloc(sec->shdr.sh_size); | ||
474 | - if (!sec->symtab) { | ||
475 | - die("malloc of %d bytes for symtab failed\n", | ||
476 | - sec->shdr.sh_size); | ||
477 | - } | ||
478 | - if (fseek(fp, sec->shdr.sh_offset, SEEK_SET) < 0) { | ||
479 | - die("Seek to %d failed: %s\n", | ||
480 | - sec->shdr.sh_offset, strerror(errno)); | ||
481 | - } | ||
482 | - if (fread(sec->symtab, 1, sec->shdr.sh_size, fp) | ||
483 | - != sec->shdr.sh_size) { | ||
484 | - die("Cannot read symbol table: %s\n", | ||
485 | - strerror(errno)); | ||
486 | - } | ||
487 | - for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Sym); j++) { | ||
488 | - Elf32_Sym *sym = &sec->symtab[j]; | ||
489 | - sym->st_name = elf32_to_cpu(sym->st_name); | ||
490 | - sym->st_value = elf32_to_cpu(sym->st_value); | ||
491 | - sym->st_size = elf32_to_cpu(sym->st_size); | ||
492 | - sym->st_shndx = elf16_to_cpu(sym->st_shndx); | ||
493 | - } | ||
494 | - } | ||
495 | -} | ||
496 | - | ||
497 | - | ||
498 | -static void read_relocs(FILE *fp) | ||
499 | -{ | ||
500 | - int i,j; | ||
501 | - for (i = 0; i < ehdr.e_shnum; i++) { | ||
502 | - struct section *sec = &secs[i]; | ||
503 | - if (sec->shdr.sh_type != SHT_REL) { | ||
504 | - continue; | ||
505 | - } | ||
506 | - sec->reltab = malloc(sec->shdr.sh_size); | ||
507 | - if (!sec->reltab) { | ||
508 | - die("malloc of %d bytes for relocs failed\n", | ||
509 | - sec->shdr.sh_size); | ||
510 | - } | ||
511 | - if (fseek(fp, sec->shdr.sh_offset, SEEK_SET) < 0) { | ||
512 | - die("Seek to %d failed: %s\n", | ||
513 | - sec->shdr.sh_offset, strerror(errno)); | ||
514 | - } | ||
515 | - if (fread(sec->reltab, 1, sec->shdr.sh_size, fp) | ||
516 | - != sec->shdr.sh_size) { | ||
517 | - die("Cannot read symbol table: %s\n", | ||
518 | - strerror(errno)); | ||
519 | - } | ||
520 | - for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Rel); j++) { | ||
521 | - Elf32_Rel *rel = &sec->reltab[j]; | ||
522 | - rel->r_offset = elf32_to_cpu(rel->r_offset); | ||
523 | - rel->r_info = elf32_to_cpu(rel->r_info); | ||
524 | - } | ||
525 | - } | ||
526 | -} | ||
527 | - | ||
528 | - | ||
529 | -static void print_absolute_symbols(void) | ||
530 | -{ | ||
531 | - int i; | ||
532 | - printf("Absolute symbols\n"); | ||
533 | - printf(" Num: Value Size Type Bind Visibility Name\n"); | ||
534 | - for (i = 0; i < ehdr.e_shnum; i++) { | ||
535 | - struct section *sec = &secs[i]; | ||
536 | - char *sym_strtab; | ||
537 | - int j; | ||
538 | - | ||
539 | - if (sec->shdr.sh_type != SHT_SYMTAB) { | ||
540 | - continue; | ||
541 | - } | ||
542 | - sym_strtab = sec->link->strtab; | ||
543 | - for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Sym); j++) { | ||
544 | - Elf32_Sym *sym; | ||
545 | - const char *name; | ||
546 | - sym = &sec->symtab[j]; | ||
547 | - name = sym_name(sym_strtab, sym); | ||
548 | - if (sym->st_shndx != SHN_ABS) { | ||
549 | - continue; | ||
550 | - } | ||
551 | - printf("%5d %08x %5d %10s %10s %12s %s\n", | ||
552 | - j, sym->st_value, sym->st_size, | ||
553 | - sym_type(ELF32_ST_TYPE(sym->st_info)), | ||
554 | - sym_bind(ELF32_ST_BIND(sym->st_info)), | ||
555 | - sym_visibility(ELF32_ST_VISIBILITY(sym->st_other)), | ||
556 | - name); | ||
557 | - } | ||
558 | - } | ||
559 | - printf("\n"); | ||
560 | -} | ||
561 | - | ||
562 | -static void print_absolute_relocs(void) | ||
563 | -{ | ||
564 | - int i, printed = 0; | ||
565 | - | ||
566 | - for (i = 0; i < ehdr.e_shnum; i++) { | ||
567 | - struct section *sec = &secs[i]; | ||
568 | - struct section *sec_applies, *sec_symtab; | ||
569 | - char *sym_strtab; | ||
570 | - Elf32_Sym *sh_symtab; | ||
571 | - int j; | ||
572 | - if (sec->shdr.sh_type != SHT_REL) { | ||
573 | - continue; | ||
574 | - } | ||
575 | - sec_symtab = sec->link; | ||
576 | - sec_applies = &secs[sec->shdr.sh_info]; | ||
577 | - if (!(sec_applies->shdr.sh_flags & SHF_ALLOC)) { | ||
578 | - continue; | ||
579 | - } | ||
580 | - sh_symtab = sec_symtab->symtab; | ||
581 | - sym_strtab = sec_symtab->link->strtab; | ||
582 | - for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Rel); j++) { | ||
583 | - Elf32_Rel *rel; | ||
584 | - Elf32_Sym *sym; | ||
585 | - const char *name; | ||
586 | - rel = &sec->reltab[j]; | ||
587 | - sym = &sh_symtab[ELF32_R_SYM(rel->r_info)]; | ||
588 | - name = sym_name(sym_strtab, sym); | ||
589 | - if (sym->st_shndx != SHN_ABS) { | ||
590 | - continue; | ||
591 | - } | ||
592 | - | ||
593 | - /* Absolute symbols are not relocated if bzImage is | ||
594 | - * loaded at a non-compiled address. Display a warning | ||
595 | - * to user at compile time about the absolute | ||
596 | - * relocations present. | ||
597 | - * | ||
598 | - * User need to audit the code to make sure | ||
599 | - * some symbols which should have been section | ||
600 | - * relative have not become absolute because of some | ||
601 | - * linker optimization or wrong programming usage. | ||
602 | - * | ||
603 | - * Before warning check if this absolute symbol | ||
604 | - * relocation is harmless. | ||
605 | - */ | ||
606 | - if (is_abs_reloc(name) || is_rel_reloc(name)) | ||
607 | - continue; | ||
608 | - | ||
609 | - if (!printed) { | ||
610 | - printf("WARNING: Absolute relocations" | ||
611 | - " present\n"); | ||
612 | - printf("Offset Info Type Sym.Value " | ||
613 | - "Sym.Name\n"); | ||
614 | - printed = 1; | ||
615 | - } | ||
616 | - | ||
617 | - printf("%08x %08x %10s %08x %s\n", | ||
618 | - rel->r_offset, | ||
619 | - rel->r_info, | ||
620 | - rel_type(ELF32_R_TYPE(rel->r_info)), | ||
621 | - sym->st_value, | ||
622 | - name); | ||
623 | - } | ||
624 | - } | ||
625 | - | ||
626 | - if (printed) | ||
627 | - printf("\n"); | ||
628 | -} | ||
629 | - | ||
630 | -static void walk_relocs(void (*visit)(Elf32_Rel *rel, Elf32_Sym *sym)) | ||
631 | -{ | ||
632 | - int i; | ||
633 | - /* Walk through the relocations */ | ||
634 | - for (i = 0; i < ehdr.e_shnum; i++) { | ||
635 | - char *sym_strtab; | ||
636 | - Elf32_Sym *sh_symtab; | ||
637 | - struct section *sec_applies, *sec_symtab; | ||
638 | - int j; | ||
639 | - struct section *sec = &secs[i]; | ||
640 | - | ||
641 | - if (sec->shdr.sh_type != SHT_REL) { | ||
642 | - continue; | ||
643 | - } | ||
644 | - sec_symtab = sec->link; | ||
645 | - sec_applies = &secs[sec->shdr.sh_info]; | ||
646 | - if (!(sec_applies->shdr.sh_flags & SHF_ALLOC)) { | ||
647 | - continue; | ||
648 | - } | ||
649 | - sh_symtab = sec_symtab->symtab; | ||
650 | - sym_strtab = sec_symtab->link->strtab; | ||
651 | - for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Rel); j++) { | ||
652 | - Elf32_Rel *rel; | ||
653 | - Elf32_Sym *sym; | ||
654 | - unsigned r_type; | ||
655 | - rel = &sec->reltab[j]; | ||
656 | - sym = &sh_symtab[ELF32_R_SYM(rel->r_info)]; | ||
657 | - r_type = ELF32_R_TYPE(rel->r_info); | ||
658 | - /* Don't visit relocations to absolute symbols */ | ||
659 | - if (sym->st_shndx == SHN_ABS && | ||
660 | - !is_rel_reloc(sym_name(sym_strtab, sym))) { | ||
661 | - continue; | ||
662 | - } | ||
663 | - switch (r_type) { | ||
664 | - case R_386_NONE: | ||
665 | - case R_386_PC32: | ||
666 | - /* | ||
667 | - * NONE can be ignored and and PC relative | ||
668 | - * relocations don't need to be adjusted. | ||
669 | - */ | ||
670 | - break; | ||
671 | - case R_386_32: | ||
672 | - /* Visit relocations that need to be adjusted */ | ||
673 | - visit(rel, sym); | ||
674 | - break; | ||
675 | - default: | ||
676 | - die("Unsupported relocation type: %s (%d)\n", | ||
677 | - rel_type(r_type), r_type); | ||
678 | - break; | ||
679 | - } | ||
680 | - } | ||
681 | - } | ||
682 | -} | ||
683 | - | ||
684 | -static void count_reloc(Elf32_Rel *rel, Elf32_Sym *sym) | ||
685 | -{ | ||
686 | - reloc_count += 1; | ||
687 | -} | ||
688 | - | ||
689 | -static void collect_reloc(Elf32_Rel *rel, Elf32_Sym *sym) | ||
690 | -{ | ||
691 | - /* Remember the address that needs to be adjusted. */ | ||
692 | - relocs[reloc_idx++] = rel->r_offset; | ||
693 | -} | ||
694 | - | ||
695 | -static int cmp_relocs(const void *va, const void *vb) | ||
696 | -{ | ||
697 | - const unsigned long *a, *b; | ||
698 | - a = va; b = vb; | ||
699 | - return (*a == *b)? 0 : (*a > *b)? 1 : -1; | ||
700 | -} | ||
701 | - | ||
702 | -static void emit_relocs(int as_text) | ||
703 | -{ | ||
704 | - int i; | ||
705 | - /* Count how many relocations I have and allocate space for them. */ | ||
706 | - reloc_count = 0; | ||
707 | - walk_relocs(count_reloc); | ||
708 | - relocs = malloc(reloc_count * sizeof(relocs[0])); | ||
709 | - if (!relocs) { | ||
710 | - die("malloc of %d entries for relocs failed\n", | ||
711 | - reloc_count); | ||
712 | - } | ||
713 | - /* Collect up the relocations */ | ||
714 | - reloc_idx = 0; | ||
715 | - walk_relocs(collect_reloc); | ||
716 | - | ||
717 | - /* Order the relocations for more efficient processing */ | ||
718 | - qsort(relocs, reloc_count, sizeof(relocs[0]), cmp_relocs); | ||
719 | - | ||
720 | - /* Print the relocations */ | ||
721 | - if (as_text) { | ||
722 | - /* Print the relocations in a form suitable that | ||
723 | - * gas will like. | ||
724 | - */ | ||
725 | - printf(".section \".data.reloc\",\"a\"\n"); | ||
726 | - printf(".balign 4\n"); | ||
727 | - for (i = 0; i < reloc_count; i++) { | ||
728 | - printf("\t .long 0x%08lx\n", relocs[i]); | ||
729 | - } | ||
730 | - printf("\n"); | ||
731 | - } | ||
732 | - else { | ||
733 | - unsigned char buf[4]; | ||
734 | - /* Print a stop */ | ||
735 | - fwrite("\0\0\0\0", 4, 1, stdout); | ||
736 | - /* Now print each relocation */ | ||
737 | - for (i = 0; i < reloc_count; i++) { | ||
738 | - buf[0] = (relocs[i] >> 0) & 0xff; | ||
739 | - buf[1] = (relocs[i] >> 8) & 0xff; | ||
740 | - buf[2] = (relocs[i] >> 16) & 0xff; | ||
741 | - buf[3] = (relocs[i] >> 24) & 0xff; | ||
742 | - fwrite(buf, 4, 1, stdout); | ||
743 | - } | ||
744 | - } | ||
745 | -} | ||
746 | - | ||
747 | -static void usage(void) | ||
748 | -{ | ||
749 | - die("relocs [--abs-syms |--abs-relocs | --text] vmlinux\n"); | ||
750 | -} | ||
751 | - | ||
752 | -int main(int argc, char **argv) | ||
753 | -{ | ||
754 | - int show_absolute_syms, show_absolute_relocs; | ||
755 | - int as_text; | ||
756 | - const char *fname; | ||
757 | - FILE *fp; | ||
758 | - int i; | ||
759 | - | ||
760 | - regex_init(); | ||
761 | - | ||
762 | - show_absolute_syms = 0; | ||
763 | - show_absolute_relocs = 0; | ||
764 | - as_text = 0; | ||
765 | - fname = NULL; | ||
766 | - for (i = 1; i < argc; i++) { | ||
767 | - char *arg = argv[i]; | ||
768 | - if (*arg == '-') { | ||
769 | - if (strcmp(argv[1], "--abs-syms") == 0) { | ||
770 | - show_absolute_syms = 1; | ||
771 | - continue; | ||
772 | - } | ||
773 | - | ||
774 | - if (strcmp(argv[1], "--abs-relocs") == 0) { | ||
775 | - show_absolute_relocs = 1; | ||
776 | - continue; | ||
777 | - } | ||
778 | - else if (strcmp(argv[1], "--text") == 0) { | ||
779 | - as_text = 1; | ||
780 | - continue; | ||
781 | - } | ||
782 | - } | ||
783 | - else if (!fname) { | ||
784 | - fname = arg; | ||
785 | - continue; | ||
786 | - } | ||
787 | - usage(); | ||
788 | - } | ||
789 | - if (!fname) { | ||
790 | - usage(); | ||
791 | - } | ||
792 | - fp = fopen(fname, "r"); | ||
793 | - if (!fp) { | ||
794 | - die("Cannot open %s: %s\n", | ||
795 | - fname, strerror(errno)); | ||
796 | - } | ||
797 | - read_ehdr(fp); | ||
798 | - read_shdrs(fp); | ||
799 | - read_strtabs(fp); | ||
800 | - read_symtabs(fp); | ||
801 | - read_relocs(fp); | ||
802 | - if (show_absolute_syms) { | ||
803 | - print_absolute_symbols(); | ||
804 | - return 0; | ||
805 | - } | ||
806 | - if (show_absolute_relocs) { | ||
807 | - print_absolute_relocs(); | ||
808 | - return 0; | ||
809 | - } | ||
810 | - emit_relocs(as_text); | ||
811 | - return 0; | ||
812 | -} | ||
813 | diff --git a/arch/x86/tools/.gitignore b/arch/x86/tools/.gitignore | ||
814 | new file mode 100644 | ||
815 | index 0000000..be0ed06 | ||
816 | --- /dev/null | ||
817 | +++ b/arch/x86/tools/.gitignore | ||
818 | @@ -0,0 +1 @@ | ||
819 | +relocs | ||
820 | diff --git a/arch/x86/tools/Makefile b/arch/x86/tools/Makefile | ||
821 | index f820826..162a34a 100644 | ||
822 | --- a/arch/x86/tools/Makefile | ||
823 | +++ b/arch/x86/tools/Makefile | ||
824 | @@ -29,3 +29,6 @@ HOSTCFLAGS_test_get_len.o := -Wall -I$(objtree)/arch/x86/lib/ -I$(srctree)/arch/ | ||
825 | # Dependencies are also needed. | ||
826 | $(obj)/test_get_len.o: $(srctree)/arch/x86/lib/insn.c $(srctree)/arch/x86/lib/inat.c $(srctree)/arch/x86/include/asm/inat_types.h $(srctree)/arch/x86/include/asm/inat.h $(srctree)/arch/x86/include/asm/insn.h $(objtree)/arch/x86/lib/inat-tables.c | ||
827 | |||
828 | +HOST_EXTRACFLAGS += -I$(srctree)/tools/include | ||
829 | +hostprogs-y += relocs | ||
830 | +relocs: $(obj)/relocs | ||
831 | diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c | ||
832 | new file mode 100644 | ||
833 | index 0000000..2071bad | ||
834 | --- /dev/null | ||
835 | +++ b/arch/x86/tools/relocs.c | ||
836 | @@ -0,0 +1,799 @@ | ||
837 | +#include <stdio.h> | ||
838 | +#include <stdarg.h> | ||
839 | +#include <stdlib.h> | ||
840 | +#include <stdint.h> | ||
841 | +#include <string.h> | ||
842 | +#include <errno.h> | ||
843 | +#include <unistd.h> | ||
844 | +#include <elf.h> | ||
845 | +#include <byteswap.h> | ||
846 | +#define USE_BSD | ||
847 | +#include <endian.h> | ||
848 | +#include <regex.h> | ||
849 | + | ||
850 | +static void die(char *fmt, ...); | ||
851 | + | ||
852 | +#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) | ||
853 | +static Elf32_Ehdr ehdr; | ||
854 | +static unsigned long reloc_count, reloc_idx; | ||
855 | +static unsigned long *relocs; | ||
856 | +static unsigned long reloc16_count, reloc16_idx; | ||
857 | +static unsigned long *relocs16; | ||
858 | + | ||
859 | +struct section { | ||
860 | + Elf32_Shdr shdr; | ||
861 | + struct section *link; | ||
862 | + Elf32_Sym *symtab; | ||
863 | + Elf32_Rel *reltab; | ||
864 | + char *strtab; | ||
865 | +}; | ||
866 | +static struct section *secs; | ||
867 | + | ||
868 | +enum symtype { | ||
869 | + S_ABS, | ||
870 | + S_REL, | ||
871 | + S_SEG, | ||
872 | + S_LIN, | ||
873 | + S_NSYMTYPES | ||
874 | +}; | ||
875 | + | ||
876 | +static const char * const sym_regex_kernel[S_NSYMTYPES] = { | ||
877 | +/* | ||
878 | + * Following symbols have been audited. There values are constant and do | ||
879 | + * not change if bzImage is loaded at a different physical address than | ||
880 | + * the address for which it has been compiled. Don't warn user about | ||
881 | + * absolute relocations present w.r.t these symbols. | ||
882 | + */ | ||
883 | + [S_ABS] = | ||
884 | + "^(xen_irq_disable_direct_reloc$|" | ||
885 | + "xen_save_fl_direct_reloc$|" | ||
886 | + "VDSO|" | ||
887 | + "__crc_)", | ||
888 | + | ||
889 | +/* | ||
890 | + * These symbols are known to be relative, even if the linker marks them | ||
891 | + * as absolute (typically defined outside any section in the linker script.) | ||
892 | + */ | ||
893 | + [S_REL] = | ||
894 | + "^_end$", | ||
895 | +}; | ||
896 | + | ||
897 | + | ||
898 | +static const char * const sym_regex_realmode[S_NSYMTYPES] = { | ||
899 | +/* | ||
900 | + * These are 16-bit segment symbols when compiling 16-bit code. | ||
901 | + */ | ||
902 | + [S_SEG] = | ||
903 | + "^real_mode_seg$", | ||
904 | + | ||
905 | +/* | ||
906 | + * These are offsets belonging to segments, as opposed to linear addresses, | ||
907 | + * when compiling 16-bit code. | ||
908 | + */ | ||
909 | + [S_LIN] = | ||
910 | + "^pa_", | ||
911 | +}; | ||
912 | + | ||
913 | +static const char * const *sym_regex; | ||
914 | + | ||
915 | +static regex_t sym_regex_c[S_NSYMTYPES]; | ||
916 | +static int is_reloc(enum symtype type, const char *sym_name) | ||
917 | +{ | ||
918 | + return sym_regex[type] && | ||
919 | + !regexec(&sym_regex_c[type], sym_name, 0, NULL, 0); | ||
920 | +} | ||
921 | + | ||
922 | +static void regex_init(int use_real_mode) | ||
923 | +{ | ||
924 | + char errbuf[128]; | ||
925 | + int err; | ||
926 | + int i; | ||
927 | + | ||
928 | + if (use_real_mode) | ||
929 | + sym_regex = sym_regex_realmode; | ||
930 | + else | ||
931 | + sym_regex = sym_regex_kernel; | ||
932 | + | ||
933 | + for (i = 0; i < S_NSYMTYPES; i++) { | ||
934 | + if (!sym_regex[i]) | ||
935 | + continue; | ||
936 | + | ||
937 | + err = regcomp(&sym_regex_c[i], sym_regex[i], | ||
938 | + REG_EXTENDED|REG_NOSUB); | ||
939 | + | ||
940 | + if (err) { | ||
941 | + regerror(err, &sym_regex_c[i], errbuf, sizeof errbuf); | ||
942 | + die("%s", errbuf); | ||
943 | + } | ||
944 | + } | ||
945 | +} | ||
946 | + | ||
947 | +static void die(char *fmt, ...) | ||
948 | +{ | ||
949 | + va_list ap; | ||
950 | + va_start(ap, fmt); | ||
951 | + vfprintf(stderr, fmt, ap); | ||
952 | + va_end(ap); | ||
953 | + exit(1); | ||
954 | +} | ||
955 | + | ||
956 | +static const char *sym_type(unsigned type) | ||
957 | +{ | ||
958 | + static const char *type_name[] = { | ||
959 | +#define SYM_TYPE(X) [X] = #X | ||
960 | + SYM_TYPE(STT_NOTYPE), | ||
961 | + SYM_TYPE(STT_OBJECT), | ||
962 | + SYM_TYPE(STT_FUNC), | ||
963 | + SYM_TYPE(STT_SECTION), | ||
964 | + SYM_TYPE(STT_FILE), | ||
965 | + SYM_TYPE(STT_COMMON), | ||
966 | + SYM_TYPE(STT_TLS), | ||
967 | +#undef SYM_TYPE | ||
968 | + }; | ||
969 | + const char *name = "unknown sym type name"; | ||
970 | + if (type < ARRAY_SIZE(type_name)) { | ||
971 | + name = type_name[type]; | ||
972 | + } | ||
973 | + return name; | ||
974 | +} | ||
975 | + | ||
976 | +static const char *sym_bind(unsigned bind) | ||
977 | +{ | ||
978 | + static const char *bind_name[] = { | ||
979 | +#define SYM_BIND(X) [X] = #X | ||
980 | + SYM_BIND(STB_LOCAL), | ||
981 | + SYM_BIND(STB_GLOBAL), | ||
982 | + SYM_BIND(STB_WEAK), | ||
983 | +#undef SYM_BIND | ||
984 | + }; | ||
985 | + const char *name = "unknown sym bind name"; | ||
986 | + if (bind < ARRAY_SIZE(bind_name)) { | ||
987 | + name = bind_name[bind]; | ||
988 | + } | ||
989 | + return name; | ||
990 | +} | ||
991 | + | ||
992 | +static const char *sym_visibility(unsigned visibility) | ||
993 | +{ | ||
994 | + static const char *visibility_name[] = { | ||
995 | +#define SYM_VISIBILITY(X) [X] = #X | ||
996 | + SYM_VISIBILITY(STV_DEFAULT), | ||
997 | + SYM_VISIBILITY(STV_INTERNAL), | ||
998 | + SYM_VISIBILITY(STV_HIDDEN), | ||
999 | + SYM_VISIBILITY(STV_PROTECTED), | ||
1000 | +#undef SYM_VISIBILITY | ||
1001 | + }; | ||
1002 | + const char *name = "unknown sym visibility name"; | ||
1003 | + if (visibility < ARRAY_SIZE(visibility_name)) { | ||
1004 | + name = visibility_name[visibility]; | ||
1005 | + } | ||
1006 | + return name; | ||
1007 | +} | ||
1008 | + | ||
1009 | +static const char *rel_type(unsigned type) | ||
1010 | +{ | ||
1011 | + static const char *type_name[] = { | ||
1012 | +#define REL_TYPE(X) [X] = #X | ||
1013 | + REL_TYPE(R_386_NONE), | ||
1014 | + REL_TYPE(R_386_32), | ||
1015 | + REL_TYPE(R_386_PC32), | ||
1016 | + REL_TYPE(R_386_GOT32), | ||
1017 | + REL_TYPE(R_386_PLT32), | ||
1018 | + REL_TYPE(R_386_COPY), | ||
1019 | + REL_TYPE(R_386_GLOB_DAT), | ||
1020 | + REL_TYPE(R_386_JMP_SLOT), | ||
1021 | + REL_TYPE(R_386_RELATIVE), | ||
1022 | + REL_TYPE(R_386_GOTOFF), | ||
1023 | + REL_TYPE(R_386_GOTPC), | ||
1024 | + REL_TYPE(R_386_8), | ||
1025 | + REL_TYPE(R_386_PC8), | ||
1026 | + REL_TYPE(R_386_16), | ||
1027 | + REL_TYPE(R_386_PC16), | ||
1028 | +#undef REL_TYPE | ||
1029 | + }; | ||
1030 | + const char *name = "unknown type rel type name"; | ||
1031 | + if (type < ARRAY_SIZE(type_name) && type_name[type]) { | ||
1032 | + name = type_name[type]; | ||
1033 | + } | ||
1034 | + return name; | ||
1035 | +} | ||
1036 | + | ||
1037 | +static const char *sec_name(unsigned shndx) | ||
1038 | +{ | ||
1039 | + const char *sec_strtab; | ||
1040 | + const char *name; | ||
1041 | + sec_strtab = secs[ehdr.e_shstrndx].strtab; | ||
1042 | + name = "<noname>"; | ||
1043 | + if (shndx < ehdr.e_shnum) { | ||
1044 | + name = sec_strtab + secs[shndx].shdr.sh_name; | ||
1045 | + } | ||
1046 | + else if (shndx == SHN_ABS) { | ||
1047 | + name = "ABSOLUTE"; | ||
1048 | + } | ||
1049 | + else if (shndx == SHN_COMMON) { | ||
1050 | + name = "COMMON"; | ||
1051 | + } | ||
1052 | + return name; | ||
1053 | +} | ||
1054 | + | ||
1055 | +static const char *sym_name(const char *sym_strtab, Elf32_Sym *sym) | ||
1056 | +{ | ||
1057 | + const char *name; | ||
1058 | + name = "<noname>"; | ||
1059 | + if (sym->st_name) { | ||
1060 | + name = sym_strtab + sym->st_name; | ||
1061 | + } | ||
1062 | + else { | ||
1063 | + name = sec_name(sym->st_shndx); | ||
1064 | + } | ||
1065 | + return name; | ||
1066 | +} | ||
1067 | + | ||
1068 | + | ||
1069 | + | ||
1070 | +#if BYTE_ORDER == LITTLE_ENDIAN | ||
1071 | +#define le16_to_cpu(val) (val) | ||
1072 | +#define le32_to_cpu(val) (val) | ||
1073 | +#endif | ||
1074 | +#if BYTE_ORDER == BIG_ENDIAN | ||
1075 | +#define le16_to_cpu(val) bswap_16(val) | ||
1076 | +#define le32_to_cpu(val) bswap_32(val) | ||
1077 | +#endif | ||
1078 | + | ||
1079 | +static uint16_t elf16_to_cpu(uint16_t val) | ||
1080 | +{ | ||
1081 | + return le16_to_cpu(val); | ||
1082 | +} | ||
1083 | + | ||
1084 | +static uint32_t elf32_to_cpu(uint32_t val) | ||
1085 | +{ | ||
1086 | + return le32_to_cpu(val); | ||
1087 | +} | ||
1088 | + | ||
1089 | +static void read_ehdr(FILE *fp) | ||
1090 | +{ | ||
1091 | + if (fread(&ehdr, sizeof(ehdr), 1, fp) != 1) { | ||
1092 | + die("Cannot read ELF header: %s\n", | ||
1093 | + strerror(errno)); | ||
1094 | + } | ||
1095 | + if (memcmp(ehdr.e_ident, ELFMAG, SELFMAG) != 0) { | ||
1096 | + die("No ELF magic\n"); | ||
1097 | + } | ||
1098 | + if (ehdr.e_ident[EI_CLASS] != ELFCLASS32) { | ||
1099 | + die("Not a 32 bit executable\n"); | ||
1100 | + } | ||
1101 | + if (ehdr.e_ident[EI_DATA] != ELFDATA2LSB) { | ||
1102 | + die("Not a LSB ELF executable\n"); | ||
1103 | + } | ||
1104 | + if (ehdr.e_ident[EI_VERSION] != EV_CURRENT) { | ||
1105 | + die("Unknown ELF version\n"); | ||
1106 | + } | ||
1107 | + /* Convert the fields to native endian */ | ||
1108 | + ehdr.e_type = elf16_to_cpu(ehdr.e_type); | ||
1109 | + ehdr.e_machine = elf16_to_cpu(ehdr.e_machine); | ||
1110 | + ehdr.e_version = elf32_to_cpu(ehdr.e_version); | ||
1111 | + ehdr.e_entry = elf32_to_cpu(ehdr.e_entry); | ||
1112 | + ehdr.e_phoff = elf32_to_cpu(ehdr.e_phoff); | ||
1113 | + ehdr.e_shoff = elf32_to_cpu(ehdr.e_shoff); | ||
1114 | + ehdr.e_flags = elf32_to_cpu(ehdr.e_flags); | ||
1115 | + ehdr.e_ehsize = elf16_to_cpu(ehdr.e_ehsize); | ||
1116 | + ehdr.e_phentsize = elf16_to_cpu(ehdr.e_phentsize); | ||
1117 | + ehdr.e_phnum = elf16_to_cpu(ehdr.e_phnum); | ||
1118 | + ehdr.e_shentsize = elf16_to_cpu(ehdr.e_shentsize); | ||
1119 | + ehdr.e_shnum = elf16_to_cpu(ehdr.e_shnum); | ||
1120 | + ehdr.e_shstrndx = elf16_to_cpu(ehdr.e_shstrndx); | ||
1121 | + | ||
1122 | + if ((ehdr.e_type != ET_EXEC) && (ehdr.e_type != ET_DYN)) { | ||
1123 | + die("Unsupported ELF header type\n"); | ||
1124 | + } | ||
1125 | + if (ehdr.e_machine != EM_386) { | ||
1126 | + die("Not for x86\n"); | ||
1127 | + } | ||
1128 | + if (ehdr.e_version != EV_CURRENT) { | ||
1129 | + die("Unknown ELF version\n"); | ||
1130 | + } | ||
1131 | + if (ehdr.e_ehsize != sizeof(Elf32_Ehdr)) { | ||
1132 | + die("Bad Elf header size\n"); | ||
1133 | + } | ||
1134 | + if (ehdr.e_phentsize != sizeof(Elf32_Phdr)) { | ||
1135 | + die("Bad program header entry\n"); | ||
1136 | + } | ||
1137 | + if (ehdr.e_shentsize != sizeof(Elf32_Shdr)) { | ||
1138 | + die("Bad section header entry\n"); | ||
1139 | + } | ||
1140 | + if (ehdr.e_shstrndx >= ehdr.e_shnum) { | ||
1141 | + die("String table index out of bounds\n"); | ||
1142 | + } | ||
1143 | +} | ||
1144 | + | ||
1145 | +static void read_shdrs(FILE *fp) | ||
1146 | +{ | ||
1147 | + int i; | ||
1148 | + Elf32_Shdr shdr; | ||
1149 | + | ||
1150 | + secs = calloc(ehdr.e_shnum, sizeof(struct section)); | ||
1151 | + if (!secs) { | ||
1152 | + die("Unable to allocate %d section headers\n", | ||
1153 | + ehdr.e_shnum); | ||
1154 | + } | ||
1155 | + if (fseek(fp, ehdr.e_shoff, SEEK_SET) < 0) { | ||
1156 | + die("Seek to %d failed: %s\n", | ||
1157 | + ehdr.e_shoff, strerror(errno)); | ||
1158 | + } | ||
1159 | + for (i = 0; i < ehdr.e_shnum; i++) { | ||
1160 | + struct section *sec = &secs[i]; | ||
1161 | + if (fread(&shdr, sizeof shdr, 1, fp) != 1) | ||
1162 | + die("Cannot read ELF section headers %d/%d: %s\n", | ||
1163 | + i, ehdr.e_shnum, strerror(errno)); | ||
1164 | + sec->shdr.sh_name = elf32_to_cpu(shdr.sh_name); | ||
1165 | + sec->shdr.sh_type = elf32_to_cpu(shdr.sh_type); | ||
1166 | + sec->shdr.sh_flags = elf32_to_cpu(shdr.sh_flags); | ||
1167 | + sec->shdr.sh_addr = elf32_to_cpu(shdr.sh_addr); | ||
1168 | + sec->shdr.sh_offset = elf32_to_cpu(shdr.sh_offset); | ||
1169 | + sec->shdr.sh_size = elf32_to_cpu(shdr.sh_size); | ||
1170 | + sec->shdr.sh_link = elf32_to_cpu(shdr.sh_link); | ||
1171 | + sec->shdr.sh_info = elf32_to_cpu(shdr.sh_info); | ||
1172 | + sec->shdr.sh_addralign = elf32_to_cpu(shdr.sh_addralign); | ||
1173 | + sec->shdr.sh_entsize = elf32_to_cpu(shdr.sh_entsize); | ||
1174 | + if (sec->shdr.sh_link < ehdr.e_shnum) | ||
1175 | + sec->link = &secs[sec->shdr.sh_link]; | ||
1176 | + } | ||
1177 | + | ||
1178 | +} | ||
1179 | + | ||
1180 | +static void read_strtabs(FILE *fp) | ||
1181 | +{ | ||
1182 | + int i; | ||
1183 | + for (i = 0; i < ehdr.e_shnum; i++) { | ||
1184 | + struct section *sec = &secs[i]; | ||
1185 | + if (sec->shdr.sh_type != SHT_STRTAB) { | ||
1186 | + continue; | ||
1187 | + } | ||
1188 | + sec->strtab = malloc(sec->shdr.sh_size); | ||
1189 | + if (!sec->strtab) { | ||
1190 | + die("malloc of %d bytes for strtab failed\n", | ||
1191 | + sec->shdr.sh_size); | ||
1192 | + } | ||
1193 | + if (fseek(fp, sec->shdr.sh_offset, SEEK_SET) < 0) { | ||
1194 | + die("Seek to %d failed: %s\n", | ||
1195 | + sec->shdr.sh_offset, strerror(errno)); | ||
1196 | + } | ||
1197 | + if (fread(sec->strtab, 1, sec->shdr.sh_size, fp) | ||
1198 | + != sec->shdr.sh_size) { | ||
1199 | + die("Cannot read symbol table: %s\n", | ||
1200 | + strerror(errno)); | ||
1201 | + } | ||
1202 | + } | ||
1203 | +} | ||
1204 | + | ||
1205 | +static void read_symtabs(FILE *fp) | ||
1206 | +{ | ||
1207 | + int i,j; | ||
1208 | + for (i = 0; i < ehdr.e_shnum; i++) { | ||
1209 | + struct section *sec = &secs[i]; | ||
1210 | + if (sec->shdr.sh_type != SHT_SYMTAB) { | ||
1211 | + continue; | ||
1212 | + } | ||
1213 | + sec->symtab = malloc(sec->shdr.sh_size); | ||
1214 | + if (!sec->symtab) { | ||
1215 | + die("malloc of %d bytes for symtab failed\n", | ||
1216 | + sec->shdr.sh_size); | ||
1217 | + } | ||
1218 | + if (fseek(fp, sec->shdr.sh_offset, SEEK_SET) < 0) { | ||
1219 | + die("Seek to %d failed: %s\n", | ||
1220 | + sec->shdr.sh_offset, strerror(errno)); | ||
1221 | + } | ||
1222 | + if (fread(sec->symtab, 1, sec->shdr.sh_size, fp) | ||
1223 | + != sec->shdr.sh_size) { | ||
1224 | + die("Cannot read symbol table: %s\n", | ||
1225 | + strerror(errno)); | ||
1226 | + } | ||
1227 | + for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Sym); j++) { | ||
1228 | + Elf32_Sym *sym = &sec->symtab[j]; | ||
1229 | + sym->st_name = elf32_to_cpu(sym->st_name); | ||
1230 | + sym->st_value = elf32_to_cpu(sym->st_value); | ||
1231 | + sym->st_size = elf32_to_cpu(sym->st_size); | ||
1232 | + sym->st_shndx = elf16_to_cpu(sym->st_shndx); | ||
1233 | + } | ||
1234 | + } | ||
1235 | +} | ||
1236 | + | ||
1237 | + | ||
1238 | +static void read_relocs(FILE *fp) | ||
1239 | +{ | ||
1240 | + int i,j; | ||
1241 | + for (i = 0; i < ehdr.e_shnum; i++) { | ||
1242 | + struct section *sec = &secs[i]; | ||
1243 | + if (sec->shdr.sh_type != SHT_REL) { | ||
1244 | + continue; | ||
1245 | + } | ||
1246 | + sec->reltab = malloc(sec->shdr.sh_size); | ||
1247 | + if (!sec->reltab) { | ||
1248 | + die("malloc of %d bytes for relocs failed\n", | ||
1249 | + sec->shdr.sh_size); | ||
1250 | + } | ||
1251 | + if (fseek(fp, sec->shdr.sh_offset, SEEK_SET) < 0) { | ||
1252 | + die("Seek to %d failed: %s\n", | ||
1253 | + sec->shdr.sh_offset, strerror(errno)); | ||
1254 | + } | ||
1255 | + if (fread(sec->reltab, 1, sec->shdr.sh_size, fp) | ||
1256 | + != sec->shdr.sh_size) { | ||
1257 | + die("Cannot read symbol table: %s\n", | ||
1258 | + strerror(errno)); | ||
1259 | + } | ||
1260 | + for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Rel); j++) { | ||
1261 | + Elf32_Rel *rel = &sec->reltab[j]; | ||
1262 | + rel->r_offset = elf32_to_cpu(rel->r_offset); | ||
1263 | + rel->r_info = elf32_to_cpu(rel->r_info); | ||
1264 | + } | ||
1265 | + } | ||
1266 | +} | ||
1267 | + | ||
1268 | + | ||
1269 | +static void print_absolute_symbols(void) | ||
1270 | +{ | ||
1271 | + int i; | ||
1272 | + printf("Absolute symbols\n"); | ||
1273 | + printf(" Num: Value Size Type Bind Visibility Name\n"); | ||
1274 | + for (i = 0; i < ehdr.e_shnum; i++) { | ||
1275 | + struct section *sec = &secs[i]; | ||
1276 | + char *sym_strtab; | ||
1277 | + int j; | ||
1278 | + | ||
1279 | + if (sec->shdr.sh_type != SHT_SYMTAB) { | ||
1280 | + continue; | ||
1281 | + } | ||
1282 | + sym_strtab = sec->link->strtab; | ||
1283 | + for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Sym); j++) { | ||
1284 | + Elf32_Sym *sym; | ||
1285 | + const char *name; | ||
1286 | + sym = &sec->symtab[j]; | ||
1287 | + name = sym_name(sym_strtab, sym); | ||
1288 | + if (sym->st_shndx != SHN_ABS) { | ||
1289 | + continue; | ||
1290 | + } | ||
1291 | + printf("%5d %08x %5d %10s %10s %12s %s\n", | ||
1292 | + j, sym->st_value, sym->st_size, | ||
1293 | + sym_type(ELF32_ST_TYPE(sym->st_info)), | ||
1294 | + sym_bind(ELF32_ST_BIND(sym->st_info)), | ||
1295 | + sym_visibility(ELF32_ST_VISIBILITY(sym->st_other)), | ||
1296 | + name); | ||
1297 | + } | ||
1298 | + } | ||
1299 | + printf("\n"); | ||
1300 | +} | ||
1301 | + | ||
1302 | +static void print_absolute_relocs(void) | ||
1303 | +{ | ||
1304 | + int i, printed = 0; | ||
1305 | + | ||
1306 | + for (i = 0; i < ehdr.e_shnum; i++) { | ||
1307 | + struct section *sec = &secs[i]; | ||
1308 | + struct section *sec_applies, *sec_symtab; | ||
1309 | + char *sym_strtab; | ||
1310 | + Elf32_Sym *sh_symtab; | ||
1311 | + int j; | ||
1312 | + if (sec->shdr.sh_type != SHT_REL) { | ||
1313 | + continue; | ||
1314 | + } | ||
1315 | + sec_symtab = sec->link; | ||
1316 | + sec_applies = &secs[sec->shdr.sh_info]; | ||
1317 | + if (!(sec_applies->shdr.sh_flags & SHF_ALLOC)) { | ||
1318 | + continue; | ||
1319 | + } | ||
1320 | + sh_symtab = sec_symtab->symtab; | ||
1321 | + sym_strtab = sec_symtab->link->strtab; | ||
1322 | + for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Rel); j++) { | ||
1323 | + Elf32_Rel *rel; | ||
1324 | + Elf32_Sym *sym; | ||
1325 | + const char *name; | ||
1326 | + rel = &sec->reltab[j]; | ||
1327 | + sym = &sh_symtab[ELF32_R_SYM(rel->r_info)]; | ||
1328 | + name = sym_name(sym_strtab, sym); | ||
1329 | + if (sym->st_shndx != SHN_ABS) { | ||
1330 | + continue; | ||
1331 | + } | ||
1332 | + | ||
1333 | + /* Absolute symbols are not relocated if bzImage is | ||
1334 | + * loaded at a non-compiled address. Display a warning | ||
1335 | + * to user at compile time about the absolute | ||
1336 | + * relocations present. | ||
1337 | + * | ||
1338 | + * User need to audit the code to make sure | ||
1339 | + * some symbols which should have been section | ||
1340 | + * relative have not become absolute because of some | ||
1341 | + * linker optimization or wrong programming usage. | ||
1342 | + * | ||
1343 | + * Before warning check if this absolute symbol | ||
1344 | + * relocation is harmless. | ||
1345 | + */ | ||
1346 | + if (is_reloc(S_ABS, name) || is_reloc(S_REL, name)) | ||
1347 | + continue; | ||
1348 | + | ||
1349 | + if (!printed) { | ||
1350 | + printf("WARNING: Absolute relocations" | ||
1351 | + " present\n"); | ||
1352 | + printf("Offset Info Type Sym.Value " | ||
1353 | + "Sym.Name\n"); | ||
1354 | + printed = 1; | ||
1355 | + } | ||
1356 | + | ||
1357 | + printf("%08x %08x %10s %08x %s\n", | ||
1358 | + rel->r_offset, | ||
1359 | + rel->r_info, | ||
1360 | + rel_type(ELF32_R_TYPE(rel->r_info)), | ||
1361 | + sym->st_value, | ||
1362 | + name); | ||
1363 | + } | ||
1364 | + } | ||
1365 | + | ||
1366 | + if (printed) | ||
1367 | + printf("\n"); | ||
1368 | +} | ||
1369 | + | ||
1370 | +static void walk_relocs(void (*visit)(Elf32_Rel *rel, Elf32_Sym *sym), | ||
1371 | + int use_real_mode) | ||
1372 | +{ | ||
1373 | + int i; | ||
1374 | + /* Walk through the relocations */ | ||
1375 | + for (i = 0; i < ehdr.e_shnum; i++) { | ||
1376 | + char *sym_strtab; | ||
1377 | + Elf32_Sym *sh_symtab; | ||
1378 | + struct section *sec_applies, *sec_symtab; | ||
1379 | + int j; | ||
1380 | + struct section *sec = &secs[i]; | ||
1381 | + | ||
1382 | + if (sec->shdr.sh_type != SHT_REL) { | ||
1383 | + continue; | ||
1384 | + } | ||
1385 | + sec_symtab = sec->link; | ||
1386 | + sec_applies = &secs[sec->shdr.sh_info]; | ||
1387 | + if (!(sec_applies->shdr.sh_flags & SHF_ALLOC)) { | ||
1388 | + continue; | ||
1389 | + } | ||
1390 | + sh_symtab = sec_symtab->symtab; | ||
1391 | + sym_strtab = sec_symtab->link->strtab; | ||
1392 | + for (j = 0; j < sec->shdr.sh_size/sizeof(Elf32_Rel); j++) { | ||
1393 | + Elf32_Rel *rel; | ||
1394 | + Elf32_Sym *sym; | ||
1395 | + unsigned r_type; | ||
1396 | + const char *symname; | ||
1397 | + rel = &sec->reltab[j]; | ||
1398 | + sym = &sh_symtab[ELF32_R_SYM(rel->r_info)]; | ||
1399 | + r_type = ELF32_R_TYPE(rel->r_info); | ||
1400 | + | ||
1401 | + switch (r_type) { | ||
1402 | + case R_386_NONE: | ||
1403 | + case R_386_PC32: | ||
1404 | + case R_386_PC16: | ||
1405 | + case R_386_PC8: | ||
1406 | + /* | ||
1407 | + * NONE can be ignored and and PC relative | ||
1408 | + * relocations don't need to be adjusted. | ||
1409 | + */ | ||
1410 | + break; | ||
1411 | + | ||
1412 | + case R_386_16: | ||
1413 | + symname = sym_name(sym_strtab, sym); | ||
1414 | + if (!use_real_mode) | ||
1415 | + goto bad; | ||
1416 | + if (sym->st_shndx == SHN_ABS) { | ||
1417 | + if (is_reloc(S_ABS, symname)) | ||
1418 | + break; | ||
1419 | + else if (!is_reloc(S_SEG, symname)) | ||
1420 | + goto bad; | ||
1421 | + } else { | ||
1422 | + if (is_reloc(S_LIN, symname)) | ||
1423 | + goto bad; | ||
1424 | + else | ||
1425 | + break; | ||
1426 | + } | ||
1427 | + visit(rel, sym); | ||
1428 | + break; | ||
1429 | + | ||
1430 | + case R_386_32: | ||
1431 | + symname = sym_name(sym_strtab, sym); | ||
1432 | + if (sym->st_shndx == SHN_ABS) { | ||
1433 | + if (is_reloc(S_ABS, symname)) | ||
1434 | + break; | ||
1435 | + else if (!is_reloc(S_REL, symname)) | ||
1436 | + goto bad; | ||
1437 | + } else { | ||
1438 | + if (use_real_mode && | ||
1439 | + !is_reloc(S_LIN, symname)) | ||
1440 | + break; | ||
1441 | + } | ||
1442 | + visit(rel, sym); | ||
1443 | + break; | ||
1444 | + default: | ||
1445 | + die("Unsupported relocation type: %s (%d)\n", | ||
1446 | + rel_type(r_type), r_type); | ||
1447 | + break; | ||
1448 | + bad: | ||
1449 | + symname = sym_name(sym_strtab, sym); | ||
1450 | + die("Invalid %s relocation: %s\n", | ||
1451 | + rel_type(r_type), symname); | ||
1452 | + } | ||
1453 | + } | ||
1454 | + } | ||
1455 | +} | ||
1456 | + | ||
1457 | +static void count_reloc(Elf32_Rel *rel, Elf32_Sym *sym) | ||
1458 | +{ | ||
1459 | + if (ELF32_R_TYPE(rel->r_info) == R_386_16) | ||
1460 | + reloc16_count++; | ||
1461 | + else | ||
1462 | + reloc_count++; | ||
1463 | +} | ||
1464 | + | ||
1465 | +static void collect_reloc(Elf32_Rel *rel, Elf32_Sym *sym) | ||
1466 | +{ | ||
1467 | + /* Remember the address that needs to be adjusted. */ | ||
1468 | + if (ELF32_R_TYPE(rel->r_info) == R_386_16) | ||
1469 | + relocs16[reloc16_idx++] = rel->r_offset; | ||
1470 | + else | ||
1471 | + relocs[reloc_idx++] = rel->r_offset; | ||
1472 | +} | ||
1473 | + | ||
1474 | +static int cmp_relocs(const void *va, const void *vb) | ||
1475 | +{ | ||
1476 | + const unsigned long *a, *b; | ||
1477 | + a = va; b = vb; | ||
1478 | + return (*a == *b)? 0 : (*a > *b)? 1 : -1; | ||
1479 | +} | ||
1480 | + | ||
1481 | +static int write32(unsigned int v, FILE *f) | ||
1482 | +{ | ||
1483 | + unsigned char buf[4]; | ||
1484 | + | ||
1485 | + buf[0] = (v >> 0) & 0xff; | ||
1486 | + buf[1] = (v >> 8) & 0xff; | ||
1487 | + buf[2] = (v >> 16) & 0xff; | ||
1488 | + buf[3] = (v >> 24) & 0xff; | ||
1489 | + return fwrite(buf, 1, 4, f) == 4 ? 0 : -1; | ||
1490 | +} | ||
1491 | + | ||
1492 | +static void emit_relocs(int as_text, int use_real_mode) | ||
1493 | +{ | ||
1494 | + int i; | ||
1495 | + /* Count how many relocations I have and allocate space for them. */ | ||
1496 | + reloc_count = 0; | ||
1497 | + walk_relocs(count_reloc, use_real_mode); | ||
1498 | + relocs = malloc(reloc_count * sizeof(relocs[0])); | ||
1499 | + if (!relocs) { | ||
1500 | + die("malloc of %d entries for relocs failed\n", | ||
1501 | + reloc_count); | ||
1502 | + } | ||
1503 | + | ||
1504 | + relocs16 = malloc(reloc16_count * sizeof(relocs[0])); | ||
1505 | + if (!relocs16) { | ||
1506 | + die("malloc of %d entries for relocs16 failed\n", | ||
1507 | + reloc16_count); | ||
1508 | + } | ||
1509 | + /* Collect up the relocations */ | ||
1510 | + reloc_idx = 0; | ||
1511 | + walk_relocs(collect_reloc, use_real_mode); | ||
1512 | + | ||
1513 | + if (reloc16_count && !use_real_mode) | ||
1514 | + die("Segment relocations found but --realmode not specified\n"); | ||
1515 | + | ||
1516 | + /* Order the relocations for more efficient processing */ | ||
1517 | + qsort(relocs, reloc_count, sizeof(relocs[0]), cmp_relocs); | ||
1518 | + qsort(relocs16, reloc16_count, sizeof(relocs16[0]), cmp_relocs); | ||
1519 | + | ||
1520 | + /* Print the relocations */ | ||
1521 | + if (as_text) { | ||
1522 | + /* Print the relocations in a form suitable that | ||
1523 | + * gas will like. | ||
1524 | + */ | ||
1525 | + printf(".section \".data.reloc\",\"a\"\n"); | ||
1526 | + printf(".balign 4\n"); | ||
1527 | + if (use_real_mode) { | ||
1528 | + printf("\t.long %lu\n", reloc16_count); | ||
1529 | + for (i = 0; i < reloc16_count; i++) | ||
1530 | + printf("\t.long 0x%08lx\n", relocs16[i]); | ||
1531 | + printf("\t.long %lu\n", reloc_count); | ||
1532 | + for (i = 0; i < reloc_count; i++) { | ||
1533 | + printf("\t.long 0x%08lx\n", relocs[i]); | ||
1534 | + } | ||
1535 | + } else { | ||
1536 | + /* Print a stop */ | ||
1537 | + printf("\t.long 0x%08lx\n", (unsigned long)0); | ||
1538 | + for (i = 0; i < reloc_count; i++) { | ||
1539 | + printf("\t.long 0x%08lx\n", relocs[i]); | ||
1540 | + } | ||
1541 | + } | ||
1542 | + | ||
1543 | + printf("\n"); | ||
1544 | + } | ||
1545 | + else { | ||
1546 | + if (use_real_mode) { | ||
1547 | + write32(reloc16_count, stdout); | ||
1548 | + for (i = 0; i < reloc16_count; i++) | ||
1549 | + write32(relocs16[i], stdout); | ||
1550 | + write32(reloc_count, stdout); | ||
1551 | + | ||
1552 | + /* Now print each relocation */ | ||
1553 | + for (i = 0; i < reloc_count; i++) | ||
1554 | + write32(relocs[i], stdout); | ||
1555 | + } else { | ||
1556 | + /* Print a stop */ | ||
1557 | + write32(0, stdout); | ||
1558 | + | ||
1559 | + /* Now print each relocation */ | ||
1560 | + for (i = 0; i < reloc_count; i++) { | ||
1561 | + write32(relocs[i], stdout); | ||
1562 | + } | ||
1563 | + } | ||
1564 | + } | ||
1565 | +} | ||
1566 | + | ||
1567 | +static void usage(void) | ||
1568 | +{ | ||
1569 | + die("relocs [--abs-syms|--abs-relocs|--text|--realmode] vmlinux\n"); | ||
1570 | +} | ||
1571 | + | ||
1572 | +int main(int argc, char **argv) | ||
1573 | +{ | ||
1574 | + int show_absolute_syms, show_absolute_relocs; | ||
1575 | + int as_text, use_real_mode; | ||
1576 | + const char *fname; | ||
1577 | + FILE *fp; | ||
1578 | + int i; | ||
1579 | + | ||
1580 | + show_absolute_syms = 0; | ||
1581 | + show_absolute_relocs = 0; | ||
1582 | + as_text = 0; | ||
1583 | + use_real_mode = 0; | ||
1584 | + fname = NULL; | ||
1585 | + for (i = 1; i < argc; i++) { | ||
1586 | + char *arg = argv[i]; | ||
1587 | + if (*arg == '-') { | ||
1588 | + if (strcmp(arg, "--abs-syms") == 0) { | ||
1589 | + show_absolute_syms = 1; | ||
1590 | + continue; | ||
1591 | + } | ||
1592 | + if (strcmp(arg, "--abs-relocs") == 0) { | ||
1593 | + show_absolute_relocs = 1; | ||
1594 | + continue; | ||
1595 | + } | ||
1596 | + if (strcmp(arg, "--text") == 0) { | ||
1597 | + as_text = 1; | ||
1598 | + continue; | ||
1599 | + } | ||
1600 | + if (strcmp(arg, "--realmode") == 0) { | ||
1601 | + use_real_mode = 1; | ||
1602 | + continue; | ||
1603 | + } | ||
1604 | + } | ||
1605 | + else if (!fname) { | ||
1606 | + fname = arg; | ||
1607 | + continue; | ||
1608 | + } | ||
1609 | + usage(); | ||
1610 | + } | ||
1611 | + if (!fname) { | ||
1612 | + usage(); | ||
1613 | + } | ||
1614 | + regex_init(use_real_mode); | ||
1615 | + fp = fopen(fname, "r"); | ||
1616 | + if (!fp) { | ||
1617 | + die("Cannot open %s: %s\n", | ||
1618 | + fname, strerror(errno)); | ||
1619 | + } | ||
1620 | + read_ehdr(fp); | ||
1621 | + read_shdrs(fp); | ||
1622 | + read_strtabs(fp); | ||
1623 | + read_symtabs(fp); | ||
1624 | + read_relocs(fp); | ||
1625 | + if (show_absolute_syms) { | ||
1626 | + print_absolute_symbols(); | ||
1627 | + return 0; | ||
1628 | + } | ||
1629 | + if (show_absolute_relocs) { | ||
1630 | + print_absolute_relocs(); | ||
1631 | + return 0; | ||
1632 | + } | ||
1633 | + emit_relocs(as_text, use_real_mode); | ||
1634 | + return 0; | ||
1635 | +} | ||
1636 | diff --git a/scripts/Makefile b/scripts/Makefile | ||
1637 | index df7678f..3626666 100644 | ||
1638 | --- a/scripts/Makefile | ||
1639 | +++ b/scripts/Makefile | ||
1640 | @@ -8,6 +8,8 @@ | ||
1641 | # conmakehash: Create arrays for initializing the kernel console tables | ||
1642 | # docproc: Used in Documentation/DocBook | ||
1643 | |||
1644 | +HOST_EXTRACFLAGS += -I$(srctree)/tools/include | ||
1645 | + | ||
1646 | hostprogs-$(CONFIG_KALLSYMS) += kallsyms | ||
1647 | hostprogs-$(CONFIG_LOGO) += pnmtologo | ||
1648 | hostprogs-$(CONFIG_VT) += conmakehash | ||
1649 | -- | ||
1650 | 1.7.9.5 | ||
1651 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0112-x86-relocs-Workaround-for-binutils-2.22.52.0.1-secti.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0112-x86-relocs-Workaround-for-binutils-2.22.52.0.1-secti.patch new file mode 100644 index 00000000..870616fe --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0112-x86-relocs-Workaround-for-binutils-2.22.52.0.1-secti.patch | |||
@@ -0,0 +1,43 @@ | |||
1 | From 41c3afdbac5e0d6a1dd88fcffb21e0916a517409 Mon Sep 17 00:00:00 2001 | ||
2 | From: "H. Peter Anvin" <hpa@linux.intel.com> | ||
3 | Date: Fri, 18 May 2012 00:24:09 -0700 | ||
4 | Subject: [PATCH 112/117] x86, relocs: Workaround for binutils 2.22.52.0.1 | ||
5 | section bug | ||
6 | |||
7 | commit a3e854d95a76862cd37937e0b0438f540536771a upstream. | ||
8 | |||
9 | GNU ld 2.22.52.0.1 has a bug that it blindly changes symbols from | ||
10 | section-relative to absolute if they are in a section of zero length. | ||
11 | This turns the symbols __init_begin and __init_end into absolute | ||
12 | symbols. Let the relocs program know that those should be treated as | ||
13 | relative symbols. | ||
14 | |||
15 | Reported-by: Ingo Molnar <mingo@kernel.org> | ||
16 | Signed-off-by: H. Peter Anvin <hpa@zytor.com> | ||
17 | Cc: H.J. Lu <hjl.tools@gmail.com> | ||
18 | Cc: Jarkko Sakkinen <jarkko.sakkinen@intel.com> | ||
19 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
20 | --- | ||
21 | arch/x86/tools/relocs.c | 6 +++++- | ||
22 | 1 file changed, 5 insertions(+), 1 deletion(-) | ||
23 | |||
24 | diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c | ||
25 | index 2071bad..c218b07 100644 | ||
26 | --- a/arch/x86/tools/relocs.c | ||
27 | +++ b/arch/x86/tools/relocs.c | ||
28 | @@ -55,7 +55,11 @@ static const char * const sym_regex_kernel[S_NSYMTYPES] = { | ||
29 | * as absolute (typically defined outside any section in the linker script.) | ||
30 | */ | ||
31 | [S_REL] = | ||
32 | - "^_end$", | ||
33 | + "^(__init_(begin|end)|" | ||
34 | + "__x86_cpu_dev_(start|end)|" | ||
35 | + "(__parainstructions|__alt_instructions)(|_end)|" | ||
36 | + "(__iommu_table|__apicdrivers|__smp_locks)(|_end)|" | ||
37 | + "_end)$" | ||
38 | }; | ||
39 | |||
40 | |||
41 | -- | ||
42 | 1.7.9.5 | ||
43 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0113-x86-relocs-When-printing-an-error-say-relative-or-ab.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0113-x86-relocs-When-printing-an-error-say-relative-or-ab.patch new file mode 100644 index 00000000..1908b5fc --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0113-x86-relocs-When-printing-an-error-say-relative-or-ab.patch | |||
@@ -0,0 +1,69 @@ | |||
1 | From 4deb87f411769d6a601fa0994480b83e2b39e49c Mon Sep 17 00:00:00 2001 | ||
2 | From: "H. Peter Anvin" <hpa@linux.intel.com> | ||
3 | Date: Fri, 18 May 2012 09:52:01 -0700 | ||
4 | Subject: [PATCH 113/117] x86, relocs: When printing an error, say relative or | ||
5 | absolute | ||
6 | |||
7 | commit 24ab82bd9bf18f3efc69a131d73577940941e1b7 upstream. | ||
8 | |||
9 | When the relocs tool throws an error, let the error message say if it | ||
10 | is an absolute or relative symbol. This should make it a lot more | ||
11 | clear what action the programmer needs to take and should help us find | ||
12 | the reason if additional symbol bugs show up. | ||
13 | |||
14 | Signed-off-by: H. Peter Anvin <hpa@zytor.com> | ||
15 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
16 | --- | ||
17 | arch/x86/tools/relocs.c | 11 ++++++++--- | ||
18 | 1 file changed, 8 insertions(+), 3 deletions(-) | ||
19 | |||
20 | diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c | ||
21 | index c218b07..c075507 100644 | ||
22 | --- a/arch/x86/tools/relocs.c | ||
23 | +++ b/arch/x86/tools/relocs.c | ||
24 | @@ -562,10 +562,14 @@ static void walk_relocs(void (*visit)(Elf32_Rel *rel, Elf32_Sym *sym), | ||
25 | Elf32_Sym *sym; | ||
26 | unsigned r_type; | ||
27 | const char *symname; | ||
28 | + int shn_abs; | ||
29 | + | ||
30 | rel = &sec->reltab[j]; | ||
31 | sym = &sh_symtab[ELF32_R_SYM(rel->r_info)]; | ||
32 | r_type = ELF32_R_TYPE(rel->r_info); | ||
33 | |||
34 | + shn_abs = sym->st_shndx == SHN_ABS; | ||
35 | + | ||
36 | switch (r_type) { | ||
37 | case R_386_NONE: | ||
38 | case R_386_PC32: | ||
39 | @@ -581,7 +585,7 @@ static void walk_relocs(void (*visit)(Elf32_Rel *rel, Elf32_Sym *sym), | ||
40 | symname = sym_name(sym_strtab, sym); | ||
41 | if (!use_real_mode) | ||
42 | goto bad; | ||
43 | - if (sym->st_shndx == SHN_ABS) { | ||
44 | + if (shn_abs) { | ||
45 | if (is_reloc(S_ABS, symname)) | ||
46 | break; | ||
47 | else if (!is_reloc(S_SEG, symname)) | ||
48 | @@ -597,7 +601,7 @@ static void walk_relocs(void (*visit)(Elf32_Rel *rel, Elf32_Sym *sym), | ||
49 | |||
50 | case R_386_32: | ||
51 | symname = sym_name(sym_strtab, sym); | ||
52 | - if (sym->st_shndx == SHN_ABS) { | ||
53 | + if (shn_abs) { | ||
54 | if (is_reloc(S_ABS, symname)) | ||
55 | break; | ||
56 | else if (!is_reloc(S_REL, symname)) | ||
57 | @@ -615,7 +619,8 @@ static void walk_relocs(void (*visit)(Elf32_Rel *rel, Elf32_Sym *sym), | ||
58 | break; | ||
59 | bad: | ||
60 | symname = sym_name(sym_strtab, sym); | ||
61 | - die("Invalid %s relocation: %s\n", | ||
62 | + die("Invalid %s %s relocation: %s\n", | ||
63 | + shn_abs ? "absolute" : "relative", | ||
64 | rel_type(r_type), symname); | ||
65 | } | ||
66 | } | ||
67 | -- | ||
68 | 1.7.9.5 | ||
69 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0114-x86-relocs-Build-clean-fix.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0114-x86-relocs-Build-clean-fix.patch new file mode 100644 index 00000000..e05d5e0b --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0114-x86-relocs-Build-clean-fix.patch | |||
@@ -0,0 +1,33 @@ | |||
1 | From fcc41e2fb71499938dcbeef7614bb60e1d3be391 Mon Sep 17 00:00:00 2001 | ||
2 | From: Jarkko Sakkinen <jarkko.sakkinen@intel.com> | ||
3 | Date: Mon, 21 May 2012 20:51:24 +0300 | ||
4 | Subject: [PATCH 114/117] x86, relocs: Build clean fix | ||
5 | |||
6 | commit b2d668da9307c4c163dd603d2bb3cadb10f9fd37 upstream. | ||
7 | |||
8 | relocs was not cleaned up when "make clean" is issued. This | ||
9 | patch fixes the issue. | ||
10 | |||
11 | Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@intel.com> | ||
12 | Link: http://lkml.kernel.org/r/1337622684-6834-1-git-send-email-jarkko.sakkinen@intel.com | ||
13 | Signed-off-by: H. Peter Anvin <hpa@zytor.com> | ||
14 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
15 | --- | ||
16 | arch/x86/Makefile | 1 + | ||
17 | 1 file changed, 1 insertion(+) | ||
18 | |||
19 | diff --git a/arch/x86/Makefile b/arch/x86/Makefile | ||
20 | index 774fd16..03dbc7f5b 100644 | ||
21 | --- a/arch/x86/Makefile | ||
22 | +++ b/arch/x86/Makefile | ||
23 | @@ -183,6 +183,7 @@ archclean: | ||
24 | $(Q)rm -rf $(objtree)/arch/i386 | ||
25 | $(Q)rm -rf $(objtree)/arch/x86_64 | ||
26 | $(Q)$(MAKE) $(clean)=$(boot) | ||
27 | + $(Q)$(MAKE) $(clean)=arch/x86/tools | ||
28 | |||
29 | define archhelp | ||
30 | echo '* bzImage - Compressed kernel image (arch/x86/boot/bzImage)' | ||
31 | -- | ||
32 | 1.7.9.5 | ||
33 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0115-x86-32-relocs-Whitelist-more-symbols-for-ld-bug-work.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0115-x86-32-relocs-Whitelist-more-symbols-for-ld-bug-work.patch new file mode 100644 index 00000000..da90c195 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0115-x86-32-relocs-Whitelist-more-symbols-for-ld-bug-work.patch | |||
@@ -0,0 +1,73 @@ | |||
1 | From 4cef8ea9c2bb186461b7f50c806d2e1ecfb81ceb Mon Sep 17 00:00:00 2001 | ||
2 | From: "H. Peter Anvin" <hpa@zytor.com> | ||
3 | Date: Wed, 23 May 2012 14:02:34 -0700 | ||
4 | Subject: [PATCH 115/117] x86-32, relocs: Whitelist more symbols for ld bug | ||
5 | workaround | ||
6 | |||
7 | commit fd952815307f0f272bf49fd364a7fd2f9992bc42 upstream. | ||
8 | |||
9 | As noted in checkin: | ||
10 | |||
11 | a3e854d95 x86, relocs: Workaround for binutils 2.22.52.0.1 section bug | ||
12 | |||
13 | ld version 2.22.52.0.[12] can incorrectly promote relative symbols to | ||
14 | absolute, if the output section they appear in is otherwise empty. | ||
15 | |||
16 | Since checkin: | ||
17 | |||
18 | 6520fe55 x86, realmode: 16-bit real-mode code support for relocs tool | ||
19 | |||
20 | we actually check for this and error out rather than silently creating | ||
21 | a kernel which will malfunction if relocated. | ||
22 | |||
23 | Ingo found a configuration in which __start_builtin_fw triggered the | ||
24 | warning. | ||
25 | |||
26 | Go through the linker script sources and look for more symbols that | ||
27 | could plausibly get bogusly promoted to absolute, and add them to the | ||
28 | whitelist. | ||
29 | |||
30 | In general, if the following error triggers: | ||
31 | |||
32 | Invalid absolute R_386_32 relocation: <symbol> | ||
33 | |||
34 | ... then we should verify that <symbol> is really meant to be | ||
35 | relocated, and add it and any related symbols manually to the S_REL | ||
36 | regexp. | ||
37 | |||
38 | Please note that 6520fe55 does not introduce the error, only the check | ||
39 | for the error -- without 6520fe55 this version of ld will simply | ||
40 | produce a corrupt kernel if CONFIG_RELOCATABLE is set on x86-32. | ||
41 | |||
42 | Reported-by: Ingo Molnar <mingo@kernel.org> | ||
43 | Signed-off-by: H. Peter Anvin <hpa@zytor.com> | ||
44 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
45 | --- | ||
46 | arch/x86/tools/relocs.c | 11 +++++++++++ | ||
47 | 1 file changed, 11 insertions(+) | ||
48 | |||
49 | diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c | ||
50 | index c075507..eb1ad63 100644 | ||
51 | --- a/arch/x86/tools/relocs.c | ||
52 | +++ b/arch/x86/tools/relocs.c | ||
53 | @@ -59,6 +59,17 @@ static const char * const sym_regex_kernel[S_NSYMTYPES] = { | ||
54 | "__x86_cpu_dev_(start|end)|" | ||
55 | "(__parainstructions|__alt_instructions)(|_end)|" | ||
56 | "(__iommu_table|__apicdrivers|__smp_locks)(|_end)|" | ||
57 | + "__(start|end)_pci_.*|" | ||
58 | + "__(start|end)_builtin_fw|" | ||
59 | + "__(start|stop)___ksymtab(|_gpl|_unused|_unused_gpl|_gpl_future)|" | ||
60 | + "__(start|stop)___kcrctab(|_gpl|_unused|_unused_gpl|_gpl_future)|" | ||
61 | + "__(start|stop)___param|" | ||
62 | + "__(start|stop)___modver|" | ||
63 | + "__(start|stop)___bug_table|" | ||
64 | + "__tracedata_(start|end)|" | ||
65 | + "__(start|stop)_notes|" | ||
66 | + "__end_rodata|" | ||
67 | + "__initramfs_start|" | ||
68 | "_end)$" | ||
69 | }; | ||
70 | |||
71 | -- | ||
72 | 1.7.9.5 | ||
73 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0116-x86-relocs-Add-jiffies-and-jiffies_64-to-the-relativ.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0116-x86-relocs-Add-jiffies-and-jiffies_64-to-the-relativ.patch new file mode 100644 index 00000000..ad47cacd --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0116-x86-relocs-Add-jiffies-and-jiffies_64-to-the-relativ.patch | |||
@@ -0,0 +1,42 @@ | |||
1 | From 31885c2e45d56acc14aff8d0fafe4b0bee3be940 Mon Sep 17 00:00:00 2001 | ||
2 | From: "H. Peter Anvin" <hpa@zytor.com> | ||
3 | Date: Thu, 24 May 2012 07:01:38 -0700 | ||
4 | Subject: [PATCH 116/117] x86, relocs: Add jiffies and jiffies_64 to the | ||
5 | relative whitelist | ||
6 | |||
7 | commit ea17e7414bc62e8d3bde8d08e3df1d921c518c17 upstream. | ||
8 | |||
9 | The symbol jiffies is created in the linker script as an alias to | ||
10 | jiffies_64. Unfortunately this is done outside any section, and | ||
11 | apparently GNU ld 2.21 doesn't carry the section with it, so we end up | ||
12 | with an absolute symbol and therefore a broken kernel. | ||
13 | |||
14 | Add jiffies and jiffies_64 to the whitelist. | ||
15 | |||
16 | The most disturbing bit with this discovery is that it shows that we | ||
17 | have had multiple linker bugs in this area crossing multiple | ||
18 | generations, and have been silently building bad kernels for some time. | ||
19 | |||
20 | Link: http://lkml.kernel.org/r/20120524171604.0d98284f3affc643e9714470@canb.auug.org.au | ||
21 | Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> | ||
22 | Signed-off-by: H. Peter Anvin <hpa@zytor.com> | ||
23 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
24 | --- | ||
25 | arch/x86/tools/relocs.c | 1 + | ||
26 | 1 file changed, 1 insertion(+) | ||
27 | |||
28 | diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c | ||
29 | index eb1ad63..e529730 100644 | ||
30 | --- a/arch/x86/tools/relocs.c | ||
31 | +++ b/arch/x86/tools/relocs.c | ||
32 | @@ -70,6 +70,7 @@ static const char * const sym_regex_kernel[S_NSYMTYPES] = { | ||
33 | "__(start|stop)_notes|" | ||
34 | "__end_rodata|" | ||
35 | "__initramfs_start|" | ||
36 | + "(jiffies|jiffies_64)|" | ||
37 | "_end)$" | ||
38 | }; | ||
39 | |||
40 | -- | ||
41 | 1.7.9.5 | ||
42 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0117-Linux-3.2.19.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0117-Linux-3.2.19.patch new file mode 100644 index 00000000..e71638ba --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.19/0117-Linux-3.2.19.patch | |||
@@ -0,0 +1,24 @@ | |||
1 | From 6ffcfc07eaa7389cee6c647a604b444e3b890a21 Mon Sep 17 00:00:00 2001 | ||
2 | From: Ben Hutchings <ben@decadent.org.uk> | ||
3 | Date: Thu, 31 May 2012 00:44:12 +0100 | ||
4 | Subject: [PATCH 117/117] Linux 3.2.19 | ||
5 | |||
6 | --- | ||
7 | Makefile | 2 +- | ||
8 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
9 | |||
10 | diff --git a/Makefile b/Makefile | ||
11 | index 0226da5..c291184 100644 | ||
12 | --- a/Makefile | ||
13 | +++ b/Makefile | ||
14 | @@ -1,6 +1,6 @@ | ||
15 | VERSION = 3 | ||
16 | PATCHLEVEL = 2 | ||
17 | -SUBLEVEL = 18 | ||
18 | +SUBLEVEL = 19 | ||
19 | EXTRAVERSION = | ||
20 | NAME = Saber-toothed Squirrel | ||
21 | |||
22 | -- | ||
23 | 1.7.9.5 | ||
24 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0001-mtdoops-fix-the-oops_page_used-array-size.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0001-mtdoops-fix-the-oops_page_used-array-size.patch index 733bacd0..ed10e3a9 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0001-mtdoops-fix-the-oops_page_used-array-size.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0001-mtdoops-fix-the-oops_page_used-array-size.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 47779e5a9fdb39f5cbe51d214a548c2c877d82c0 Mon Sep 17 00:00:00 2001 | 1 | From 8ca3e7c57df66813802542ce347e79ba5537f303 Mon Sep 17 00:00:00 2001 |
2 | From: Roman Tereshonkov <roman.tereshonkov@nokia.com> | 2 | From: Roman Tereshonkov <roman.tereshonkov@nokia.com> |
3 | Date: Tue, 29 Nov 2011 12:49:18 +0200 | 3 | Date: Tue, 29 Nov 2011 12:49:18 +0200 |
4 | Subject: [PATCH 001/130] mtdoops: fix the oops_page_used array size | 4 | Subject: [PATCH 001/129] mtdoops: fix the oops_page_used array size |
5 | 5 | ||
6 | commit 556f063580db2953a7e53cd46b47724246320f60 upstream. | 6 | commit 556f063580db2953a7e53cd46b47724246320f60 upstream. |
7 | 7 | ||
@@ -35,5 +35,5 @@ index 1e2fa62..0782b31 100644 | |||
35 | printk(KERN_ERR "mtdoops: could not allocate page array\n"); | 35 | printk(KERN_ERR "mtdoops: could not allocate page array\n"); |
36 | return; | 36 | return; |
37 | -- | 37 | -- |
38 | 1.7.9.4 | 38 | 1.7.9.5 |
39 | 39 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0002-mtd-mtdoops-skip-reading-initially-bad-blocks.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0002-mtd-mtdoops-skip-reading-initially-bad-blocks.patch index 669ebc41..3933c59d 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0002-mtd-mtdoops-skip-reading-initially-bad-blocks.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0002-mtd-mtdoops-skip-reading-initially-bad-blocks.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 485b51057dd6e8de3541b41d9369a2791889ac65 Mon Sep 17 00:00:00 2001 | 1 | From bfaedde2c4ae9dcab0aabf7dc7172999df5669ec Mon Sep 17 00:00:00 2001 |
2 | From: Roman Tereshonkov <roman.tereshonkov@nokia.com> | 2 | From: Roman Tereshonkov <roman.tereshonkov@nokia.com> |
3 | Date: Fri, 2 Dec 2011 15:07:17 +0200 | 3 | Date: Fri, 2 Dec 2011 15:07:17 +0200 |
4 | Subject: [PATCH 002/130] mtd: mtdoops: skip reading initially bad blocks | 4 | Subject: [PATCH 002/129] mtd: mtdoops: skip reading initially bad blocks |
5 | 5 | ||
6 | commit 3538c56329936c78f7d356889908790006d0124c upstream. | 6 | commit 3538c56329936c78f7d356889908790006d0124c upstream. |
7 | 7 | ||
@@ -32,5 +32,5 @@ index 0782b31..f3cdce9 100644 | |||
32 | mark_page_used(cxt, page); | 32 | mark_page_used(cxt, page); |
33 | ret = mtd->read(mtd, page * record_size, MTDOOPS_HEADER_SIZE, | 33 | ret = mtd->read(mtd, page * record_size, MTDOOPS_HEADER_SIZE, |
34 | -- | 34 | -- |
35 | 1.7.9.4 | 35 | 1.7.9.5 |
36 | 36 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0003-mtd-mtd_blkdevs-don-t-increase-open-count-on-error-p.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0003-mtd-mtd_blkdevs-don-t-increase-open-count-on-error-p.patch index 27b74872..11ea5834 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0003-mtd-mtd_blkdevs-don-t-increase-open-count-on-error-p.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0003-mtd-mtd_blkdevs-don-t-increase-open-count-on-error-p.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 9e050cc5ce9a3890b8bcd2ec63b81921719cba83 Mon Sep 17 00:00:00 2001 | 1 | From 1e5cac540c54d687fea366251cc0ddf9266c0685 Mon Sep 17 00:00:00 2001 |
2 | From: Brian Norris <computersforpeace@gmail.com> | 2 | From: Brian Norris <computersforpeace@gmail.com> |
3 | Date: Mon, 7 Nov 2011 15:51:05 -0800 | 3 | Date: Mon, 7 Nov 2011 15:51:05 -0800 |
4 | Subject: [PATCH 003/130] mtd: mtd_blkdevs: don't increase 'open' count on | 4 | Subject: [PATCH 003/129] mtd: mtd_blkdevs: don't increase 'open' count on |
5 | error path | 5 | error path |
6 | 6 | ||
7 | commit 342ff28f5a2e5aa3236617bd2bddf6c749677ef2 upstream. | 7 | commit 342ff28f5a2e5aa3236617bd2bddf6c749677ef2 upstream. |
@@ -81,5 +81,5 @@ index ed8b5e7..424ca5f 100644 | |||
81 | blktrans_dev_put(dev); | 81 | blktrans_dev_put(dev); |
82 | return ret; | 82 | return ret; |
83 | -- | 83 | -- |
84 | 1.7.9.4 | 84 | 1.7.9.5 |
85 | 85 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0004-mtd-tests-stresstest-bail-out-if-device-has-not-enou.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0004-mtd-tests-stresstest-bail-out-if-device-has-not-enou.patch index a205a864..6a4a0e05 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0004-mtd-tests-stresstest-bail-out-if-device-has-not-enou.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0004-mtd-tests-stresstest-bail-out-if-device-has-not-enou.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 8d9f0b4614ddd61c2dc00c8de8865d75c1226860 Mon Sep 17 00:00:00 2001 | 1 | From 401f9918c9daf754c70eb65a895c8ef3bde5b441 Mon Sep 17 00:00:00 2001 |
2 | From: Wolfram Sang <w.sang@pengutronix.de> | 2 | From: Wolfram Sang <w.sang@pengutronix.de> |
3 | Date: Tue, 29 Nov 2011 15:34:08 +0100 | 3 | Date: Tue, 29 Nov 2011 15:34:08 +0100 |
4 | Subject: [PATCH 004/130] mtd: tests: stresstest: bail out if device has not | 4 | Subject: [PATCH 004/129] mtd: tests: stresstest: bail out if device has not |
5 | enough eraseblocks | 5 | enough eraseblocks |
6 | 6 | ||
7 | commit 2f4478ccff7df845dc9c0f8996a96373122c4417 upstream. | 7 | commit 2f4478ccff7df845dc9c0f8996a96373122c4417 upstream. |
@@ -56,5 +56,5 @@ index 52ffd91..811642f 100644 | |||
56 | if (err) | 56 | if (err) |
57 | printk(PRINT_PREF "error %d occurred\n", err); | 57 | printk(PRINT_PREF "error %d occurred\n", err); |
58 | -- | 58 | -- |
59 | 1.7.9.4 | 59 | 1.7.9.5 |
60 | 60 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0005-drivers-rtc-interface.c-fix-alarm-rollover-when-day-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0005-drivers-rtc-interface.c-fix-alarm-rollover-when-day-.patch index 5363d48c..26ba973b 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0005-drivers-rtc-interface.c-fix-alarm-rollover-when-day-.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0005-drivers-rtc-interface.c-fix-alarm-rollover-when-day-.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From ad9ec9a5123245692aeb7027beffcb35eeeb5bde Mon Sep 17 00:00:00 2001 | 1 | From 4795aa3e23be426bc3971ce821f37983dcee409f Mon Sep 17 00:00:00 2001 |
2 | From: Ben Hutchings <ben@decadent.org.uk> | 2 | From: Ben Hutchings <ben@decadent.org.uk> |
3 | Date: Tue, 10 Jan 2012 15:11:02 -0800 | 3 | Date: Tue, 10 Jan 2012 15:11:02 -0800 |
4 | Subject: [PATCH 005/130] drivers/rtc/interface.c: fix alarm rollover when day | 4 | Subject: [PATCH 005/129] drivers/rtc/interface.c: fix alarm rollover when day |
5 | or month is out-of-range | 5 | or month is out-of-range |
6 | 6 | ||
7 | commit e74a8f2edb92cb690b467cea0ab652c509e9f624 upstream. | 7 | commit e74a8f2edb92cb690b467cea0ab652c509e9f624 upstream. |
@@ -49,5 +49,5 @@ index 8e28625..8a1c031 100644 | |||
49 | if (missing == none) | 49 | if (missing == none) |
50 | missing = month; | 50 | missing = month; |
51 | -- | 51 | -- |
52 | 1.7.9.4 | 52 | 1.7.9.5 |
53 | 53 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0006-ext4-add-missing-ext4_resize_end-on-error-paths.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0006-ext4-add-missing-ext4_resize_end-on-error-paths.patch index d4bac4ef..31d7359c 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0006-ext4-add-missing-ext4_resize_end-on-error-paths.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0006-ext4-add-missing-ext4_resize_end-on-error-paths.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From e67a0d3a73760b3c5eb0a93784a6f690b8dcf766 Mon Sep 17 00:00:00 2001 | 1 | From e6f3a0306b95afbc5965b42a05d85c102401b48c Mon Sep 17 00:00:00 2001 |
2 | From: Djalal Harouni <tixxdz@opendz.org> | 2 | From: Djalal Harouni <tixxdz@opendz.org> |
3 | Date: Wed, 4 Jan 2012 17:09:52 -0500 | 3 | Date: Wed, 4 Jan 2012 17:09:52 -0500 |
4 | Subject: [PATCH 006/130] ext4: add missing ext4_resize_end on error paths | 4 | Subject: [PATCH 006/129] ext4: add missing ext4_resize_end on error paths |
5 | 5 | ||
6 | commit 014a1770371a028d22f364718c805f4216911ecd upstream. | 6 | commit 014a1770371a028d22f364718c805f4216911ecd upstream. |
7 | 7 | ||
@@ -105,5 +105,5 @@ index a567968..ab25f57 100644 | |||
105 | } | 105 | } |
106 | 106 | ||
107 | -- | 107 | -- |
108 | 1.7.9.4 | 108 | 1.7.9.5 |
109 | 109 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0007-ext4-fix-undefined-behavior-in-ext4_fill_flex_info.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0007-ext4-fix-undefined-behavior-in-ext4_fill_flex_info.patch index e4f98614..8d8449f9 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0007-ext4-fix-undefined-behavior-in-ext4_fill_flex_info.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0007-ext4-fix-undefined-behavior-in-ext4_fill_flex_info.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 448f3344b91e15d4f94a9e687bd95157c5dcc7e2 Mon Sep 17 00:00:00 2001 | 1 | From 7105c77677c92d13510d38fd5dd085944464015e Mon Sep 17 00:00:00 2001 |
2 | From: Xi Wang <xi.wang@gmail.com> | 2 | From: Xi Wang <xi.wang@gmail.com> |
3 | Date: Tue, 10 Jan 2012 11:51:10 -0500 | 3 | Date: Tue, 10 Jan 2012 11:51:10 -0500 |
4 | Subject: [PATCH 007/130] ext4: fix undefined behavior in | 4 | Subject: [PATCH 007/129] ext4: fix undefined behavior in |
5 | ext4_fill_flex_info() | 5 | ext4_fill_flex_info() |
6 | 6 | ||
7 | commit d50f2ab6f050311dbf7b8f5501b25f0bf64a439b upstream. | 7 | commit d50f2ab6f050311dbf7b8f5501b25f0bf64a439b upstream. |
@@ -70,5 +70,5 @@ index 3e1329e..9281dbe 100644 | |||
70 | /* We allocate both existing and potentially added groups */ | 70 | /* We allocate both existing and potentially added groups */ |
71 | flex_group_count = ((sbi->s_groups_count + groups_per_flex - 1) + | 71 | flex_group_count = ((sbi->s_groups_count + groups_per_flex - 1) + |
72 | -- | 72 | -- |
73 | 1.7.9.4 | 73 | 1.7.9.5 |
74 | 74 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0008-ALSA-snd-usb-us122l-Delete-calls-to-preempt_disable.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0008-ALSA-snd-usb-us122l-Delete-calls-to-preempt_disable.patch index a4ada732..bf1692bc 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0008-ALSA-snd-usb-us122l-Delete-calls-to-preempt_disable.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0008-ALSA-snd-usb-us122l-Delete-calls-to-preempt_disable.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 60bad6c7d409471b8e5dc3febe12a48a98ee1e98 Mon Sep 17 00:00:00 2001 | 1 | From 14f05d5692c7431710f71ea914ad07dc0b60d2a2 Mon Sep 17 00:00:00 2001 |
2 | From: Karsten Wiese <fzu@wemgehoertderstaat.de> | 2 | From: Karsten Wiese <fzu@wemgehoertderstaat.de> |
3 | Date: Fri, 30 Dec 2011 01:42:01 +0100 | 3 | Date: Fri, 30 Dec 2011 01:42:01 +0100 |
4 | Subject: [PATCH 008/130] ALSA: snd-usb-us122l: Delete calls to | 4 | Subject: [PATCH 008/129] ALSA: snd-usb-us122l: Delete calls to |
5 | preempt_disable | 5 | preempt_disable |
6 | 6 | ||
7 | commit d0f3a2eb9062560bebca8b923424f3ca02a331ba upstream. | 7 | commit d0f3a2eb9062560bebca8b923424f3ca02a331ba upstream. |
@@ -50,5 +50,5 @@ index c400ade..1e7a47a 100644 | |||
50 | snd_printd(KERN_DEBUG | 50 | snd_printd(KERN_DEBUG |
51 | "u[%i] start_frames differ in:%u out:%u\n", | 51 | "u[%i] start_frames differ in:%u out:%u\n", |
52 | -- | 52 | -- |
53 | 1.7.9.4 | 53 | 1.7.9.5 |
54 | 54 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0009-ALSA-HDA-Fix-master-control-for-Cirrus-Logic-421X.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0009-ALSA-HDA-Fix-master-control-for-Cirrus-Logic-421X.patch index ad1cc60b..17e9a30f 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0009-ALSA-HDA-Fix-master-control-for-Cirrus-Logic-421X.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0009-ALSA-HDA-Fix-master-control-for-Cirrus-Logic-421X.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From b619b7c91e4294d2be0c1f5a61f068bb759bcce2 Mon Sep 17 00:00:00 2001 | 1 | From 78e0e9b19b4202874115f3a2745dad208dad51e2 Mon Sep 17 00:00:00 2001 |
2 | From: David Henningsson <david.henningsson@canonical.com> | 2 | From: David Henningsson <david.henningsson@canonical.com> |
3 | Date: Mon, 2 Jan 2012 12:40:15 +0100 | 3 | Date: Mon, 2 Jan 2012 12:40:15 +0100 |
4 | Subject: [PATCH 009/130] ALSA: HDA: Fix master control for Cirrus Logic 421X | 4 | Subject: [PATCH 009/129] ALSA: HDA: Fix master control for Cirrus Logic 421X |
5 | 5 | ||
6 | commit 40d03e63e91af8ddccdfd5a536cc2a6e51433e1d upstream. | 6 | commit 40d03e63e91af8ddccdfd5a536cc2a6e51433e1d upstream. |
7 | 7 | ||
@@ -53,5 +53,5 @@ index 70a7abd..f55ceb6 100644 | |||
53 | if (cfg->speaker_outs) { | 53 | if (cfg->speaker_outs) { |
54 | err = snd_hda_ctl_add(codec, 0, | 54 | err = snd_hda_ctl_add(codec, 0, |
55 | -- | 55 | -- |
56 | 1.7.9.4 | 56 | 1.7.9.5 |
57 | 57 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0010-ALSA-HDA-Fix-automute-for-Cirrus-Logic-421x.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0010-ALSA-HDA-Fix-automute-for-Cirrus-Logic-421x.patch index d0dde2c0..4d0d47a7 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0010-ALSA-HDA-Fix-automute-for-Cirrus-Logic-421x.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0010-ALSA-HDA-Fix-automute-for-Cirrus-Logic-421x.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 80e0a3cf0ce88d6e335dc18017e1733e11361c22 Mon Sep 17 00:00:00 2001 | 1 | From d16d6a4af51d31f0b7a1a0109c99fd926416cd1f Mon Sep 17 00:00:00 2001 |
2 | From: David Henningsson <david.henningsson@canonical.com> | 2 | From: David Henningsson <david.henningsson@canonical.com> |
3 | Date: Mon, 2 Jan 2012 12:40:16 +0100 | 3 | Date: Mon, 2 Jan 2012 12:40:16 +0100 |
4 | Subject: [PATCH 010/130] ALSA: HDA: Fix automute for Cirrus Logic 421x | 4 | Subject: [PATCH 010/129] ALSA: HDA: Fix automute for Cirrus Logic 421x |
5 | 5 | ||
6 | commit 78e2a928e377d5124932d4399c6c581908b027a0 upstream. | 6 | commit 78e2a928e377d5124932d4399c6c581908b027a0 upstream. |
7 | 7 | ||
@@ -44,5 +44,5 @@ index f55ceb6..5b0a9bb 100644 | |||
44 | if (spec->gpio_eapd_hp) { | 44 | if (spec->gpio_eapd_hp) { |
45 | unsigned int gpio = hp_present ? | 45 | unsigned int gpio = hp_present ? |
46 | -- | 46 | -- |
47 | 1.7.9.4 | 47 | 1.7.9.5 |
48 | 48 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0011-ALSA-ice1724-Check-for-ac97-to-avoid-kernel-oops.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0011-ALSA-ice1724-Check-for-ac97-to-avoid-kernel-oops.patch index 248dca3c..4187528a 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0011-ALSA-ice1724-Check-for-ac97-to-avoid-kernel-oops.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0011-ALSA-ice1724-Check-for-ac97-to-avoid-kernel-oops.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From e6eeafa7a6932f54162e6412135d5ff6e3aabe9b Mon Sep 17 00:00:00 2001 | 1 | From 97a18462c03b9c0c3e22aaec73045024f198aacc Mon Sep 17 00:00:00 2001 |
2 | From: Pavel Hofman <pavel.hofman@ivitera.com> | 2 | From: Pavel Hofman <pavel.hofman@ivitera.com> |
3 | Date: Thu, 5 Jan 2012 23:05:18 +0100 | 3 | Date: Thu, 5 Jan 2012 23:05:18 +0100 |
4 | Subject: [PATCH 011/130] ALSA: ice1724 - Check for ac97 to avoid kernel oops | 4 | Subject: [PATCH 011/129] ALSA: ice1724 - Check for ac97 to avoid kernel oops |
5 | 5 | ||
6 | commit e7848163aa2a649d9065f230fadff80dc3519775 upstream. | 6 | commit e7848163aa2a649d9065f230fadff80dc3519775 upstream. |
7 | 7 | ||
@@ -34,5 +34,5 @@ index e328cfb..e525da2 100644 | |||
34 | } | 34 | } |
35 | 35 | ||
36 | -- | 36 | -- |
37 | 1.7.9.4 | 37 | 1.7.9.5 |
38 | 38 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0012-ALSA-usb-audio-Avoid-flood-of-frame-active-debug-mes.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0012-ALSA-usb-audio-Avoid-flood-of-frame-active-debug-mes.patch index 7c269c0f..1fe6016a 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0012-ALSA-usb-audio-Avoid-flood-of-frame-active-debug-mes.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0012-ALSA-usb-audio-Avoid-flood-of-frame-active-debug-mes.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 36a7bfaea157421f78e92f5ef8ccecb961cb6f35 Mon Sep 17 00:00:00 2001 | 1 | From fc0b965ed3b89f9f6cacff2dcd472f473b82ed99 Mon Sep 17 00:00:00 2001 |
2 | From: Takashi Iwai <tiwai@suse.de> | 2 | From: Takashi Iwai <tiwai@suse.de> |
3 | Date: Mon, 9 Jan 2012 11:37:20 +0100 | 3 | Date: Mon, 9 Jan 2012 11:37:20 +0100 |
4 | Subject: [PATCH 012/130] ALSA: usb-audio - Avoid flood of frame-active debug | 4 | Subject: [PATCH 012/129] ALSA: usb-audio - Avoid flood of frame-active debug |
5 | messages | 5 | messages |
6 | 6 | ||
7 | commit 80c8a2a372599e604b04a9c568952fe39cd1851d upstream. | 7 | commit 80c8a2a372599e604b04a9c568952fe39cd1851d upstream. |
@@ -42,5 +42,5 @@ index 81c6ede..08dcce5 100644 | |||
42 | } | 42 | } |
43 | bytes = urb->iso_frame_desc[i].actual_length; | 43 | bytes = urb->iso_frame_desc[i].actual_length; |
44 | -- | 44 | -- |
45 | 1.7.9.4 | 45 | 1.7.9.5 |
46 | 46 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0013-ALSA-hda-Use-auto-parser-for-HP-laptops-with-cx20459.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0013-ALSA-hda-Use-auto-parser-for-HP-laptops-with-cx20459.patch index d63ca079..5ab9509c 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0013-ALSA-hda-Use-auto-parser-for-HP-laptops-with-cx20459.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0013-ALSA-hda-Use-auto-parser-for-HP-laptops-with-cx20459.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 04e2d5556696dd62a2573c478118e7c4bedc9fba Mon Sep 17 00:00:00 2001 | 1 | From 0f951c7e3066c834b47172ee36435129c7c1d978 Mon Sep 17 00:00:00 2001 |
2 | From: Takashi Iwai <tiwai@suse.de> | 2 | From: Takashi Iwai <tiwai@suse.de> |
3 | Date: Tue, 10 Jan 2012 08:59:56 +0100 | 3 | Date: Tue, 10 Jan 2012 08:59:56 +0100 |
4 | Subject: [PATCH 013/130] ALSA: hda - Use auto-parser for HP laptops with | 4 | Subject: [PATCH 013/129] ALSA: hda - Use auto-parser for HP laptops with |
5 | cx20459 codec | 5 | cx20459 codec |
6 | 6 | ||
7 | commit de4da59e480cdf1075b33dbaf8078fc87bc52241 upstream. | 7 | commit de4da59e480cdf1075b33dbaf8078fc87bc52241 upstream. |
@@ -33,5 +33,5 @@ index 0de2119..7072251 100644 | |||
33 | SND_PCI_QUIRK(0x152d, 0x0753, "Benq R55E", CXT5045_BENQ), | 33 | SND_PCI_QUIRK(0x152d, 0x0753, "Benq R55E", CXT5045_BENQ), |
34 | SND_PCI_QUIRK(0x1734, 0x10ad, "Fujitsu Si1520", CXT5045_LAPTOP_MICSENSE), | 34 | SND_PCI_QUIRK(0x1734, 0x10ad, "Fujitsu Si1520", CXT5045_LAPTOP_MICSENSE), |
35 | -- | 35 | -- |
36 | 1.7.9.4 | 36 | 1.7.9.5 |
37 | 37 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0014-ALSA-hda-Return-the-error-from-get_wcaps_type-for-in.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0014-ALSA-hda-Return-the-error-from-get_wcaps_type-for-in.patch index f3aedb31..52789054 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0014-ALSA-hda-Return-the-error-from-get_wcaps_type-for-in.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0014-ALSA-hda-Return-the-error-from-get_wcaps_type-for-in.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From b0b4fe32da41718cd4989aa2c29bc0e8806d3d6f Mon Sep 17 00:00:00 2001 | 1 | From 244e54a801fd96fbe05447599832c9eb110debeb Mon Sep 17 00:00:00 2001 |
2 | From: Takashi Iwai <tiwai@suse.de> | 2 | From: Takashi Iwai <tiwai@suse.de> |
3 | Date: Tue, 10 Jan 2012 12:41:22 +0100 | 3 | Date: Tue, 10 Jan 2012 12:41:22 +0100 |
4 | Subject: [PATCH 014/130] ALSA: hda - Return the error from get_wcaps_type() | 4 | Subject: [PATCH 014/129] ALSA: hda - Return the error from get_wcaps_type() |
5 | for invalid NIDs | 5 | for invalid NIDs |
6 | 6 | ||
7 | commit 3a90274de3548ebb2aabfbf488cea8e275a73dc6 upstream. | 7 | commit 3a90274de3548ebb2aabfbf488cea8e275a73dc6 upstream. |
@@ -54,5 +54,5 @@ index 2c981b5..254ab52 100644 | |||
54 | if (names[wid_value]) | 54 | if (names[wid_value]) |
55 | return names[wid_value]; | 55 | return names[wid_value]; |
56 | -- | 56 | -- |
57 | 1.7.9.4 | 57 | 1.7.9.5 |
58 | 58 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0015-ALSA-hda-Fix-the-detection-of-Loopback-Mixing-contro.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0015-ALSA-hda-Fix-the-detection-of-Loopback-Mixing-contro.patch index b80cfc2d..5284246e 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0015-ALSA-hda-Fix-the-detection-of-Loopback-Mixing-contro.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0015-ALSA-hda-Fix-the-detection-of-Loopback-Mixing-contro.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 1bbf40a55f2df6d045b872384e8b7de72bce4c63 Mon Sep 17 00:00:00 2001 | 1 | From cf6e92f0c3bbf4cdbd62a8838b9b8f2153d9607a Mon Sep 17 00:00:00 2001 |
2 | From: Takashi Iwai <tiwai@suse.de> | 2 | From: Takashi Iwai <tiwai@suse.de> |
3 | Date: Tue, 10 Jan 2012 15:16:02 +0100 | 3 | Date: Tue, 10 Jan 2012 15:16:02 +0100 |
4 | Subject: [PATCH 015/130] ALSA: hda - Fix the detection of "Loopback Mixing" | 4 | Subject: [PATCH 015/129] ALSA: hda - Fix the detection of "Loopback Mixing" |
5 | control for VIA codecs | 5 | control for VIA codecs |
6 | 6 | ||
7 | commit 4808d12d1dddb046ec86425e5f6766f02e950292 upstream. | 7 | commit 4808d12d1dddb046ec86425e5f6766f02e950292 upstream. |
@@ -38,5 +38,5 @@ index b513762..8d69e59 100644 | |||
38 | if (!via_clone_control(spec, &via_aamix_ctl_enum)) | 38 | if (!via_clone_control(spec, &via_aamix_ctl_enum)) |
39 | return -ENOMEM; | 39 | return -ENOMEM; |
40 | -- | 40 | -- |
41 | 1.7.9.4 | 41 | 1.7.9.5 |
42 | 42 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0016-ALSA-hda-Fix-the-lost-power-setup-of-seconary-pins-a.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0016-ALSA-hda-Fix-the-lost-power-setup-of-seconary-pins-a.patch index 3c6db917..457ebc2c 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0016-ALSA-hda-Fix-the-lost-power-setup-of-seconary-pins-a.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0016-ALSA-hda-Fix-the-lost-power-setup-of-seconary-pins-a.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 6b60ca2b5f516c2ccb9e8b9bb6044f911f8707b3 Mon Sep 17 00:00:00 2001 | 1 | From 2fb2fe7e67d82706d84fdcf8876c28958c69998b Mon Sep 17 00:00:00 2001 |
2 | From: Takashi Iwai <tiwai@suse.de> | 2 | From: Takashi Iwai <tiwai@suse.de> |
3 | Date: Wed, 11 Jan 2012 12:34:11 +0100 | 3 | Date: Wed, 11 Jan 2012 12:34:11 +0100 |
4 | Subject: [PATCH 016/130] ALSA: hda - Fix the lost power-setup of seconary | 4 | Subject: [PATCH 016/129] ALSA: hda - Fix the lost power-setup of seconary |
5 | pins after PM resume | 5 | pins after PM resume |
6 | 6 | ||
7 | commit f2cbba7602383cd9cdd21f0a5d0b8bd1aad47b33 upstream. | 7 | commit f2cbba7602383cd9cdd21f0a5d0b8bd1aad47b33 upstream. |
@@ -88,5 +88,5 @@ index 616678f..a87b260 100644 | |||
88 | } | 88 | } |
89 | 89 | ||
90 | -- | 90 | -- |
91 | 1.7.9.4 | 91 | 1.7.9.5 |
92 | 92 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0017-drm-radeon-kms-workaround-invalid-AVI-infoframe-chec.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0017-drm-radeon-kms-workaround-invalid-AVI-infoframe-chec.patch index 316cb506..f39bef50 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0017-drm-radeon-kms-workaround-invalid-AVI-infoframe-chec.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0017-drm-radeon-kms-workaround-invalid-AVI-infoframe-chec.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From c57372d1bf1128cd5d5c6371bdc53470ff00d10d Mon Sep 17 00:00:00 2001 | 1 | From 27ce68d3d7c9f0815bb269da0495aa675eebf846 Mon Sep 17 00:00:00 2001 |
2 | From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> | 2 | From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> |
3 | Date: Fri, 23 Dec 2011 20:32:18 +0100 | 3 | Date: Fri, 23 Dec 2011 20:32:18 +0100 |
4 | Subject: [PATCH 017/130] drm/radeon/kms: workaround invalid AVI infoframe | 4 | Subject: [PATCH 017/129] drm/radeon/kms: workaround invalid AVI infoframe |
5 | checksum issue | 5 | checksum issue |
6 | MIME-Version: 1.0 | 6 | MIME-Version: 1.0 |
7 | Content-Type: text/plain; charset=UTF-8 | 7 | Content-Type: text/plain; charset=UTF-8 |
@@ -39,5 +39,5 @@ index f5ac7e7..c45d921 100644 | |||
39 | WREG32(offset+R600_HDMI_VIDEOINFOFRAME_0, | 39 | WREG32(offset+R600_HDMI_VIDEOINFOFRAME_0, |
40 | frame[0x0] | (frame[0x1] << 8) | (frame[0x2] << 16) | (frame[0x3] << 24)); | 40 | frame[0x0] | (frame[0x1] << 8) | (frame[0x2] << 16) | (frame[0x3] << 24)); |
41 | -- | 41 | -- |
42 | 1.7.9.4 | 42 | 1.7.9.5 |
43 | 43 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0018-drm-radeon-kms-disable-writeback-on-pre-R300-asics.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0018-drm-radeon-kms-disable-writeback-on-pre-R300-asics.patch index d6608b93..8eb632dd 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0018-drm-radeon-kms-disable-writeback-on-pre-R300-asics.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0018-drm-radeon-kms-disable-writeback-on-pre-R300-asics.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From f021f7ff80f10b57d44b122e655a8b8b32de0391 Mon Sep 17 00:00:00 2001 | 1 | From 4080c93fb98e70e64d31c2ab2bd036a940c0807b Mon Sep 17 00:00:00 2001 |
2 | From: Alex Deucher <alexander.deucher@amd.com> | 2 | From: Alex Deucher <alexander.deucher@amd.com> |
3 | Date: Tue, 3 Jan 2012 09:48:38 -0500 | 3 | Date: Tue, 3 Jan 2012 09:48:38 -0500 |
4 | Subject: [PATCH 018/130] drm/radeon/kms: disable writeback on pre-R300 asics | 4 | Subject: [PATCH 018/129] drm/radeon/kms: disable writeback on pre-R300 asics |
5 | 5 | ||
6 | commit 28eebb703e28bc455ba704adb1026f76649b768c upstream. | 6 | commit 28eebb703e28bc455ba704adb1026f76649b768c upstream. |
7 | 7 | ||
@@ -36,5 +36,5 @@ index c4d00a1..9b39145 100644 | |||
36 | } else { | 36 | } else { |
37 | rdev->wb.enabled = true; | 37 | rdev->wb.enabled = true; |
38 | -- | 38 | -- |
39 | 1.7.9.4 | 39 | 1.7.9.5 |
40 | 40 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0019-radeon-Fix-disabling-PCI-bus-mastering-on-big-endian.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0019-radeon-Fix-disabling-PCI-bus-mastering-on-big-endian.patch index 7424646b..64a0b207 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0019-radeon-Fix-disabling-PCI-bus-mastering-on-big-endian.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0019-radeon-Fix-disabling-PCI-bus-mastering-on-big-endian.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 8eb079554654f8de6153fa79f38b2cafcaaa6843 Mon Sep 17 00:00:00 2001 | 1 | From 73267cb0dea18d38a023f20c110e79b742c030c9 Mon Sep 17 00:00:00 2001 |
2 | From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <michel.daenzer@amd.com> | 2 | From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <michel.daenzer@amd.com> |
3 | Date: Thu, 5 Jan 2012 18:42:17 +0100 | 3 | Date: Thu, 5 Jan 2012 18:42:17 +0100 |
4 | Subject: [PATCH 019/130] radeon: Fix disabling PCI bus mastering on big | 4 | Subject: [PATCH 019/129] radeon: Fix disabling PCI bus mastering on big |
5 | endian hosts. | 5 | endian hosts. |
6 | MIME-Version: 1.0 | 6 | MIME-Version: 1.0 |
7 | Content-Type: text/plain; charset=UTF-8 | 7 | Content-Type: text/plain; charset=UTF-8 |
@@ -66,5 +66,5 @@ index b1053d6..c259e21 100644 | |||
66 | mdelay(1); | 66 | mdelay(1); |
67 | } | 67 | } |
68 | -- | 68 | -- |
69 | 1.7.9.4 | 69 | 1.7.9.5 |
70 | 70 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0020-pnfs-obj-pNFS-errors-are-communicated-on-iodata-pnfs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0020-pnfs-obj-pNFS-errors-are-communicated-on-iodata-pnfs.patch index 7b37b615..68ba0561 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0020-pnfs-obj-pNFS-errors-are-communicated-on-iodata-pnfs.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0020-pnfs-obj-pNFS-errors-are-communicated-on-iodata-pnfs.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 10d32d7599943b0209facd8ac9d12ce5024225d2 Mon Sep 17 00:00:00 2001 | 1 | From 873440a8680a5cf108ce5372f065fec762b7f73c Mon Sep 17 00:00:00 2001 |
2 | From: Boaz Harrosh <bharrosh@panasas.com> | 2 | From: Boaz Harrosh <bharrosh@panasas.com> |
3 | Date: Fri, 6 Jan 2012 09:28:12 +0200 | 3 | Date: Fri, 6 Jan 2012 09:28:12 +0200 |
4 | Subject: [PATCH 020/130] pnfs-obj: pNFS errors are communicated on | 4 | Subject: [PATCH 020/129] pnfs-obj: pNFS errors are communicated on |
5 | iodata->pnfs_error | 5 | iodata->pnfs_error |
6 | 6 | ||
7 | commit 5c0b4129c07b902b27d3f3ebc087757f534a3abd upstream. | 7 | commit 5c0b4129c07b902b27d3f3ebc087757f534a3abd upstream. |
@@ -46,5 +46,5 @@ index 72074e3..b3c2903 100644 | |||
46 | objlayout_iodone(oir); | 46 | objlayout_iodone(oir); |
47 | /* must not use oir after this point */ | 47 | /* must not use oir after this point */ |
48 | -- | 48 | -- |
49 | 1.7.9.4 | 49 | 1.7.9.5 |
50 | 50 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0021-pnfs-obj-Must-return-layout-on-IO-error.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0021-pnfs-obj-Must-return-layout-on-IO-error.patch index 38e28ee2..b05bc19e 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0021-pnfs-obj-Must-return-layout-on-IO-error.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0021-pnfs-obj-Must-return-layout-on-IO-error.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 26cc5985abb44928985dd7def7aace0f33b29644 Mon Sep 17 00:00:00 2001 | 1 | From e20497d523b9954e6fe3a3cd333d1286e3c241ed Mon Sep 17 00:00:00 2001 |
2 | From: Boaz Harrosh <bharrosh@panasas.com> | 2 | From: Boaz Harrosh <bharrosh@panasas.com> |
3 | Date: Fri, 6 Jan 2012 09:31:20 +0200 | 3 | Date: Fri, 6 Jan 2012 09:31:20 +0200 |
4 | Subject: [PATCH 021/130] pnfs-obj: Must return layout on IO error | 4 | Subject: [PATCH 021/129] pnfs-obj: Must return layout on IO error |
5 | 5 | ||
6 | commit fe0fe83585f88346557868a803a479dfaaa0688a upstream. | 6 | commit fe0fe83585f88346557868a803a479dfaaa0688a upstream. |
7 | 7 | ||
@@ -88,5 +88,5 @@ index 1509530..53d593a 100644 | |||
88 | 88 | ||
89 | struct nfs4_deviceid_node; | 89 | struct nfs4_deviceid_node; |
90 | -- | 90 | -- |
91 | 1.7.9.4 | 91 | 1.7.9.5 |
92 | 92 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0022-NFS-Retry-mounting-NFSROOT.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0022-NFS-Retry-mounting-NFSROOT.patch index 80051a83..ceac5a90 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0022-NFS-Retry-mounting-NFSROOT.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0022-NFS-Retry-mounting-NFSROOT.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From f55f86c3cb2a10b64e696c740b7945d8669d0d46 Mon Sep 17 00:00:00 2001 | 1 | From 51a699a0c53b199599fe16688248143ee98a167e Mon Sep 17 00:00:00 2001 |
2 | From: Chuck Lever <chuck.lever@oracle.com> | 2 | From: Chuck Lever <chuck.lever@oracle.com> |
3 | Date: Mon, 5 Dec 2011 15:40:30 -0500 | 3 | Date: Mon, 5 Dec 2011 15:40:30 -0500 |
4 | Subject: [PATCH 022/130] NFS: Retry mounting NFSROOT | 4 | Subject: [PATCH 022/129] NFS: Retry mounting NFSROOT |
5 | 5 | ||
6 | commit 43717c7daebf10b43f12e68512484b3095bb1ba5 upstream. | 6 | commit 43717c7daebf10b43f12e68512484b3095bb1ba5 upstream. |
7 | 7 | ||
@@ -90,5 +90,5 @@ index 0f6e1d9..db6e5ee 100644 | |||
90 | #endif | 90 | #endif |
91 | 91 | ||
92 | -- | 92 | -- |
93 | 1.7.9.4 | 93 | 1.7.9.5 |
94 | 94 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0023-NFSv4.1-fix-backchannel-slotid-off-by-one-bug.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0023-NFSv4.1-fix-backchannel-slotid-off-by-one-bug.patch index 17062e04..34ea494a 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0023-NFSv4.1-fix-backchannel-slotid-off-by-one-bug.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0023-NFSv4.1-fix-backchannel-slotid-off-by-one-bug.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From ae6644f8572872abad3082d4ecf29fa7c48f20d5 Mon Sep 17 00:00:00 2001 | 1 | From 4d12390d5a9b1c151416e0fbef4702455f4a2626 Mon Sep 17 00:00:00 2001 |
2 | From: Andy Adamson <andros@netapp.com> | 2 | From: Andy Adamson <andros@netapp.com> |
3 | Date: Wed, 9 Nov 2011 13:58:20 -0500 | 3 | Date: Wed, 9 Nov 2011 13:58:20 -0500 |
4 | Subject: [PATCH 023/130] NFSv4.1: fix backchannel slotid off-by-one bug | 4 | Subject: [PATCH 023/129] NFSv4.1: fix backchannel slotid off-by-one bug |
5 | 5 | ||
6 | commit 61f2e5106582d02f30b6807e3f9c07463c572ccb upstream. | 6 | commit 61f2e5106582d02f30b6807e3f9c07463c572ccb upstream. |
7 | 7 | ||
@@ -26,5 +26,5 @@ index 43926ad..54cea8a 100644 | |||
26 | 26 | ||
27 | slot = tbl->slots + args->csa_slotid; | 27 | slot = tbl->slots + args->csa_slotid; |
28 | -- | 28 | -- |
29 | 1.7.9.4 | 29 | 1.7.9.5 |
30 | 30 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0024-NFS-fix-recent-breakage-to-NFS-error-handling.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0024-NFS-fix-recent-breakage-to-NFS-error-handling.patch index 7ac8cca3..70d96b31 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0024-NFS-fix-recent-breakage-to-NFS-error-handling.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0024-NFS-fix-recent-breakage-to-NFS-error-handling.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 7738b871ed07b550480b1b26d7bb6349f54c3d55 Mon Sep 17 00:00:00 2001 | 1 | From 7aab7b372a174e80233a74ff10d55ded1ea28c2f Mon Sep 17 00:00:00 2001 |
2 | From: NeilBrown <neilb@suse.de> | 2 | From: NeilBrown <neilb@suse.de> |
3 | Date: Wed, 16 Nov 2011 11:46:31 +1100 | 3 | Date: Wed, 16 Nov 2011 11:46:31 +1100 |
4 | Subject: [PATCH 024/130] NFS - fix recent breakage to NFS error handling. | 4 | Subject: [PATCH 024/129] NFS - fix recent breakage to NFS error handling. |
5 | 5 | ||
6 | commit 2edb6bc3852c681c0d948245bd55108dc6407604 upstream. | 6 | commit 2edb6bc3852c681c0d948245bd55108dc6407604 upstream. |
7 | 7 | ||
@@ -56,5 +56,5 @@ index 606ef0f..c43a452 100644 | |||
56 | if (have_error) | 56 | if (have_error) |
57 | ret = xchg(&ctx->error, 0); | 57 | ret = xchg(&ctx->error, 0); |
58 | -- | 58 | -- |
59 | 1.7.9.4 | 59 | 1.7.9.5 |
60 | 60 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0025-NFSv4-include-bitmap-in-nfsv4-get-acl-data.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0025-NFSv4-include-bitmap-in-nfsv4-get-acl-data.patch index 208b0a75..f57d7326 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0025-NFSv4-include-bitmap-in-nfsv4-get-acl-data.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0025-NFSv4-include-bitmap-in-nfsv4-get-acl-data.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 02df7d0ce33039c06e2be9a446ed816f3d9c9177 Mon Sep 17 00:00:00 2001 | 1 | From 0ae2afe3f515d5e56beeefa0f0e5fd23cb358f4a Mon Sep 17 00:00:00 2001 |
2 | From: Andy Adamson <andros@netapp.com> | 2 | From: Andy Adamson <andros@netapp.com> |
3 | Date: Wed, 7 Dec 2011 11:55:27 -0500 | 3 | Date: Wed, 7 Dec 2011 11:55:27 -0500 |
4 | Subject: [PATCH 025/130] NFSv4: include bitmap in nfsv4 get acl data | 4 | Subject: [PATCH 025/129] NFSv4: include bitmap in nfsv4 get acl data |
5 | 5 | ||
6 | commit bf118a342f10dafe44b14451a1392c3254629a1f upstream. | 6 | commit bf118a342f10dafe44b14451a1392c3254629a1f upstream. |
7 | 7 | ||
@@ -309,5 +309,5 @@ index 277ebd4..593f4c6 100644 | |||
309 | /* | 309 | /* |
310 | * xdr_shrink_bufhead | 310 | * xdr_shrink_bufhead |
311 | -- | 311 | -- |
312 | 1.7.9.4 | 312 | 1.7.9.5 |
313 | 313 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0026-nfs-fix-regression-in-handling-of-context-option-in-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0026-nfs-fix-regression-in-handling-of-context-option-in-.patch index 34d00b64..ccc04bdc 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0026-nfs-fix-regression-in-handling-of-context-option-in-.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0026-nfs-fix-regression-in-handling-of-context-option-in-.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From e89768f97b1d5faa0cb6335e46558f889320621e Mon Sep 17 00:00:00 2001 | 1 | From 116cbe8665b2a7fd6538b2d92e04f016317fee84 Mon Sep 17 00:00:00 2001 |
2 | From: Jeff Layton <jlayton@redhat.com> | 2 | From: Jeff Layton <jlayton@redhat.com> |
3 | Date: Tue, 20 Dec 2011 06:57:45 -0500 | 3 | Date: Tue, 20 Dec 2011 06:57:45 -0500 |
4 | Subject: [PATCH 026/130] nfs: fix regression in handling of context= option | 4 | Subject: [PATCH 026/129] nfs: fix regression in handling of context= option |
5 | in NFSv4 | 5 | in NFSv4 |
6 | 6 | ||
7 | commit 8a0d551a59ac92d8ff048d6cb29d3a02073e81e8 upstream. | 7 | commit 8a0d551a59ac92d8ff048d6cb29d3a02073e81e8 upstream. |
@@ -143,5 +143,5 @@ index 1347774..3ada13c 100644 | |||
143 | error != 0 ? " [error]" : ""); | 143 | error != 0 ? " [error]" : ""); |
144 | return res; | 144 | return res; |
145 | -- | 145 | -- |
146 | 1.7.9.4 | 146 | 1.7.9.5 |
147 | 147 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0027-HID-bump-maximum-global-item-tag-report-size-to-96-b.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0027-HID-bump-maximum-global-item-tag-report-size-to-96-b.patch index 24664dcb..22df17c5 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0027-HID-bump-maximum-global-item-tag-report-size-to-96-b.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0027-HID-bump-maximum-global-item-tag-report-size-to-96-b.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From b362c0e865aececc1f7e47a96ed390b4407e92e1 Mon Sep 17 00:00:00 2001 | 1 | From b475e4ad0950706030ae96b367c2dbb065a785be Mon Sep 17 00:00:00 2001 |
2 | From: Chase Douglas <chase.douglas@canonical.com> | 2 | From: Chase Douglas <chase.douglas@canonical.com> |
3 | Date: Mon, 7 Nov 2011 11:08:05 -0800 | 3 | Date: Mon, 7 Nov 2011 11:08:05 -0800 |
4 | Subject: [PATCH 027/130] HID: bump maximum global item tag report size to 96 | 4 | Subject: [PATCH 027/129] HID: bump maximum global item tag report size to 96 |
5 | bytes | 5 | bytes |
6 | 6 | ||
7 | commit e46e927b9b7e8d95526e69322855243882b7e1a3 upstream. | 7 | commit e46e927b9b7e8d95526e69322855243882b7e1a3 upstream. |
@@ -31,5 +31,5 @@ index af35384..1473067 100644 | |||
31 | parser->global.report_size); | 31 | parser->global.report_size); |
32 | return -1; | 32 | return -1; |
33 | -- | 33 | -- |
34 | 1.7.9.4 | 34 | 1.7.9.5 |
35 | 35 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0028-HID-wiimote-Select-INPUT_FF_MEMLESS.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0028-HID-wiimote-Select-INPUT_FF_MEMLESS.patch index 6a825394..02166721 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0028-HID-wiimote-Select-INPUT_FF_MEMLESS.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0028-HID-wiimote-Select-INPUT_FF_MEMLESS.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 36ef51ce1bd874fab45b938646866fe76878d759 Mon Sep 17 00:00:00 2001 | 1 | From 2cfaf0fb0c2b2fb54ecae98d34df27d549a6e92c Mon Sep 17 00:00:00 2001 |
2 | From: David Herrmann <dh.herrmann@googlemail.com> | 2 | From: David Herrmann <dh.herrmann@googlemail.com> |
3 | Date: Wed, 7 Dec 2011 21:33:59 +0100 | 3 | Date: Wed, 7 Dec 2011 21:33:59 +0100 |
4 | Subject: [PATCH 028/130] HID: wiimote: Select INPUT_FF_MEMLESS | 4 | Subject: [PATCH 028/129] HID: wiimote: Select INPUT_FF_MEMLESS |
5 | 5 | ||
6 | commit ef6f41157f3864d9bf42671b2ed66062dcafb72e upstream. | 6 | commit ef6f41157f3864d9bf42671b2ed66062dcafb72e upstream. |
7 | 7 | ||
@@ -29,5 +29,5 @@ index 22a4a05..332c22a 100644 | |||
29 | Support for the Nintendo Wii Remote bluetooth device. | 29 | Support for the Nintendo Wii Remote bluetooth device. |
30 | 30 | ||
31 | -- | 31 | -- |
32 | 1.7.9.4 | 32 | 1.7.9.5 |
33 | 33 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0029-UBI-fix-missing-scrub-when-there-is-a-bit-flip.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0029-UBI-fix-missing-scrub-when-there-is-a-bit-flip.patch index ffda65f7..75dbf575 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0029-UBI-fix-missing-scrub-when-there-is-a-bit-flip.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0029-UBI-fix-missing-scrub-when-there-is-a-bit-flip.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 7c9f37ae89d2e888e7be2c0b23b96765670bf00f Mon Sep 17 00:00:00 2001 | 1 | From 68ff23dc67132bf9668c4e7dab105f7d8a83937f Mon Sep 17 00:00:00 2001 |
2 | From: Bhavesh Parekh <bparekh@nvidia.com> | 2 | From: Bhavesh Parekh <bparekh@nvidia.com> |
3 | Date: Wed, 30 Nov 2011 17:43:42 +0530 | 3 | Date: Wed, 30 Nov 2011 17:43:42 +0530 |
4 | Subject: [PATCH 029/130] UBI: fix missing scrub when there is a bit-flip | 4 | Subject: [PATCH 029/129] UBI: fix missing scrub when there is a bit-flip |
5 | 5 | ||
6 | commit e801e128b2200c40a0ec236cf2330b2586b6e05a upstream. | 6 | commit e801e128b2200c40a0ec236cf2330b2586b6e05a upstream. |
7 | 7 | ||
@@ -77,5 +77,5 @@ index 42c684c..277c429 100644 | |||
77 | err == MOVE_TARGET_RD_ERR) { | 77 | err == MOVE_TARGET_RD_ERR) { |
78 | /* | 78 | /* |
79 | -- | 79 | -- |
80 | 1.7.9.4 | 80 | 1.7.9.5 |
81 | 81 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0030-UBI-fix-use-after-free-on-error-path.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0030-UBI-fix-use-after-free-on-error-path.patch index c317d736..ee5d64cc 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0030-UBI-fix-use-after-free-on-error-path.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0030-UBI-fix-use-after-free-on-error-path.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From d28f4336976d7994bca4de5d2eb3a4b6cc003be8 Mon Sep 17 00:00:00 2001 | 1 | From 917c71669ddf01983d843f8fc19bbdc296748a9c Mon Sep 17 00:00:00 2001 |
2 | From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> | 2 | From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> |
3 | Date: Thu, 5 Jan 2012 10:47:18 +0200 | 3 | Date: Thu, 5 Jan 2012 10:47:18 +0200 |
4 | Subject: [PATCH 030/130] UBI: fix use-after-free on error path | 4 | Subject: [PATCH 030/129] UBI: fix use-after-free on error path |
5 | 5 | ||
6 | commit e57e0d8e818512047fe379157c3f77f1b9fabffb upstream. | 6 | commit e57e0d8e818512047fe379157c3f77f1b9fabffb upstream. |
7 | 7 | ||
@@ -48,5 +48,5 @@ index 277c429..0696e36 100644 | |||
48 | /* It is %-EIO, the PEB went bad */ | 48 | /* It is %-EIO, the PEB went bad */ |
49 | 49 | ||
50 | -- | 50 | -- |
51 | 1.7.9.4 | 51 | 1.7.9.5 |
52 | 52 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0031-PCI-Fix-PCI_EXP_TYPE_RC_EC-value.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0031-PCI-Fix-PCI_EXP_TYPE_RC_EC-value.patch index 7c925b75..ab3d2d47 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0031-PCI-Fix-PCI_EXP_TYPE_RC_EC-value.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0031-PCI-Fix-PCI_EXP_TYPE_RC_EC-value.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From b55d48c7cec81071f13dc9e88a657b507573a4ec Mon Sep 17 00:00:00 2001 | 1 | From 9e38af95ee520c7c6ffa8b4fcc976a3437ef8103 Mon Sep 17 00:00:00 2001 |
2 | From: Alex Williamson <alex.williamson@redhat.com> | 2 | From: Alex Williamson <alex.williamson@redhat.com> |
3 | Date: Wed, 16 Nov 2011 09:24:16 -0700 | 3 | Date: Wed, 16 Nov 2011 09:24:16 -0700 |
4 | Subject: [PATCH 031/130] PCI: Fix PCI_EXP_TYPE_RC_EC value | 4 | Subject: [PATCH 031/129] PCI: Fix PCI_EXP_TYPE_RC_EC value |
5 | 5 | ||
6 | commit 1830ea91c20b06608f7cdb2455ce05ba834b3214 upstream. | 6 | commit 1830ea91c20b06608f7cdb2455ce05ba834b3214 upstream. |
7 | 7 | ||
@@ -28,5 +28,5 @@ index b5d9657..411c412 100644 | |||
28 | #define PCI_EXP_FLAGS_IRQ 0x3e00 /* Interrupt message number */ | 28 | #define PCI_EXP_FLAGS_IRQ 0x3e00 /* Interrupt message number */ |
29 | #define PCI_EXP_DEVCAP 4 /* Device capabilities */ | 29 | #define PCI_EXP_DEVCAP 4 /* Device capabilities */ |
30 | -- | 30 | -- |
31 | 1.7.9.4 | 31 | 1.7.9.5 |
32 | 32 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0032-PCI-msi-Disable-msi-interrupts-when-we-initialize-a-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0032-PCI-msi-Disable-msi-interrupts-when-we-initialize-a-.patch index 8525a50f..6da8ef88 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0032-PCI-msi-Disable-msi-interrupts-when-we-initialize-a-.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0032-PCI-msi-Disable-msi-interrupts-when-we-initialize-a-.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 5b5be8901badfd9baec5d13fec6be5c942f2bf71 Mon Sep 17 00:00:00 2001 | 1 | From 948a5d9ea80dfda0b40581e02217f30ffefd8e60 Mon Sep 17 00:00:00 2001 |
2 | From: "Eric W. Biederman" <ebiederm@xmission.com> | 2 | From: "Eric W. Biederman" <ebiederm@xmission.com> |
3 | Date: Mon, 17 Oct 2011 11:46:06 -0700 | 3 | Date: Mon, 17 Oct 2011 11:46:06 -0700 |
4 | Subject: [PATCH 032/130] PCI: msi: Disable msi interrupts when we initialize | 4 | Subject: [PATCH 032/129] PCI: msi: Disable msi interrupts when we initialize |
5 | a pci device | 5 | a pci device |
6 | 6 | ||
7 | commit a776c491ca5e38c26d9f66923ff574d041e747f4 upstream. | 7 | commit a776c491ca5e38c26d9f66923ff574d041e747f4 upstream. |
@@ -49,5 +49,5 @@ index 0e6d04d..e3efb43 100644 | |||
49 | + msix_set_enable(dev, 0); | 49 | + msix_set_enable(dev, 0); |
50 | } | 50 | } |
51 | -- | 51 | -- |
52 | 1.7.9.4 | 52 | 1.7.9.5 |
53 | 53 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0033-x86-PCI-Ignore-CPU-non-addressable-_CRS-reserved-mem.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0033-x86-PCI-Ignore-CPU-non-addressable-_CRS-reserved-mem.patch index 9381af25..b7dc6e82 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0033-x86-PCI-Ignore-CPU-non-addressable-_CRS-reserved-mem.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0033-x86-PCI-Ignore-CPU-non-addressable-_CRS-reserved-mem.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 18329c64230886275000c9f9e4ff499d15ca7fb4 Mon Sep 17 00:00:00 2001 | 1 | From 08ba39eb25bcf540f859e7204c3307ee43b52eff Mon Sep 17 00:00:00 2001 |
2 | From: Gary Hade <garyhade@us.ibm.com> | 2 | From: Gary Hade <garyhade@us.ibm.com> |
3 | Date: Mon, 14 Nov 2011 15:42:16 -0800 | 3 | Date: Mon, 14 Nov 2011 15:42:16 -0800 |
4 | Subject: [PATCH 033/130] x86/PCI: Ignore CPU non-addressable _CRS reserved | 4 | Subject: [PATCH 033/129] x86/PCI: Ignore CPU non-addressable _CRS reserved |
5 | memory resources | 5 | memory resources |
6 | 6 | ||
7 | commit ae5cd86455381282ece162966183d3f208c6fad7 upstream. | 7 | commit ae5cd86455381282ece162966183d3f208c6fad7 upstream. |
@@ -61,5 +61,5 @@ index 404f21a..f8348ab 100644 | |||
61 | res = &info->res[info->res_num]; | 61 | res = &info->res[info->res_num]; |
62 | res->name = info->name; | 62 | res->name = info->name; |
63 | -- | 63 | -- |
64 | 1.7.9.4 | 64 | 1.7.9.5 |
65 | 65 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0034-x86-PCI-amd-factor-out-MMCONFIG-discovery.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0034-x86-PCI-amd-factor-out-MMCONFIG-discovery.patch index 891c47ac..8d30b65d 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0034-x86-PCI-amd-factor-out-MMCONFIG-discovery.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0034-x86-PCI-amd-factor-out-MMCONFIG-discovery.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 4d9bd6414c035d82f217aaee1cfa52079fdd7e0e Mon Sep 17 00:00:00 2001 | 1 | From 64525bdf1bbff67faf88ccd7bc83ef856489ed24 Mon Sep 17 00:00:00 2001 |
2 | From: Bjorn Helgaas <bhelgaas@google.com> | 2 | From: Bjorn Helgaas <bhelgaas@google.com> |
3 | Date: Thu, 5 Jan 2012 14:27:19 -0700 | 3 | Date: Thu, 5 Jan 2012 14:27:19 -0700 |
4 | Subject: [PATCH 034/130] x86/PCI: amd: factor out MMCONFIG discovery | 4 | Subject: [PATCH 034/129] x86/PCI: amd: factor out MMCONFIG discovery |
5 | 5 | ||
6 | commit 24d25dbfa63c376323096660bfa9ad45a08870ce upstream. | 6 | commit 24d25dbfa63c376323096660bfa9ad45a08870ce upstream. |
7 | 7 | ||
@@ -156,5 +156,5 @@ index 026e493..385a940 100644 | |||
156 | 156 | ||
157 | /* mmio resource */ | 157 | /* mmio resource */ |
158 | -- | 158 | -- |
159 | 1.7.9.4 | 159 | 1.7.9.5 |
160 | 160 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0035-x86-PCI-build-amd_bus.o-only-when-CONFIG_AMD_NB-y.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0035-x86-PCI-build-amd_bus.o-only-when-CONFIG_AMD_NB-y.patch index 48b1c0ed..3fd79be1 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0035-x86-PCI-build-amd_bus.o-only-when-CONFIG_AMD_NB-y.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0035-x86-PCI-build-amd_bus.o-only-when-CONFIG_AMD_NB-y.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 388420a808ce95390d4555b15d22731d247a1a1e Mon Sep 17 00:00:00 2001 | 1 | From ab624504467af8cf207855de15bc8b835605ba88 Mon Sep 17 00:00:00 2001 |
2 | From: Bjorn Helgaas <bhelgaas@google.com> | 2 | From: Bjorn Helgaas <bhelgaas@google.com> |
3 | Date: Thu, 12 Jan 2012 08:01:40 -0700 | 3 | Date: Thu, 12 Jan 2012 08:01:40 -0700 |
4 | Subject: [PATCH 035/130] x86/PCI: build amd_bus.o only when CONFIG_AMD_NB=y | 4 | Subject: [PATCH 035/129] x86/PCI: build amd_bus.o only when CONFIG_AMD_NB=y |
5 | 5 | ||
6 | commit 5cf9a4e69c1ff0ccdd1d2b7404f95c0531355274 upstream. | 6 | commit 5cf9a4e69c1ff0ccdd1d2b7404f95c0531355274 upstream. |
7 | 7 | ||
@@ -33,5 +33,5 @@ index 6b8759f..d24d3da 100644 | |||
33 | 33 | ||
34 | ifeq ($(CONFIG_PCI_DEBUG),y) | 34 | ifeq ($(CONFIG_PCI_DEBUG),y) |
35 | -- | 35 | -- |
36 | 1.7.9.4 | 36 | 1.7.9.5 |
37 | 37 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0036-SCSI-mpt2sas-Release-spinlock-for-the-raid-device-li.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0036-SCSI-mpt2sas-Release-spinlock-for-the-raid-device-li.patch index a00e4ad2..411ca8bc 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0036-SCSI-mpt2sas-Release-spinlock-for-the-raid-device-li.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0036-SCSI-mpt2sas-Release-spinlock-for-the-raid-device-li.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 5e3db86029f0b96de1fdd1a320c93a0a48301371 Mon Sep 17 00:00:00 2001 | 1 | From b76617ff2fa38409d3065f944359e5e47b290014 Mon Sep 17 00:00:00 2001 |
2 | From: "nagalakshmi.nandigama@lsi.com" <nagalakshmi.nandigama@lsi.com> | 2 | From: "nagalakshmi.nandigama@lsi.com" <nagalakshmi.nandigama@lsi.com> |
3 | Date: Thu, 1 Dec 2011 07:52:56 +0530 | 3 | Date: Thu, 1 Dec 2011 07:52:56 +0530 |
4 | Subject: [PATCH 036/130] SCSI: mpt2sas: Release spinlock for the raid device | 4 | Subject: [PATCH 036/129] SCSI: mpt2sas: Release spinlock for the raid device |
5 | list before blocking it | 5 | list before blocking it |
6 | 6 | ||
7 | commit 30c43282f3d347f47f9e05199d2b14f56f3f2837 upstream. | 7 | commit 30c43282f3d347f47f9e05199d2b14f56f3f2837 upstream. |
@@ -52,5 +52,5 @@ index d570573..3a4f666 100644 | |||
52 | } | 52 | } |
53 | 53 | ||
54 | -- | 54 | -- |
55 | 1.7.9.4 | 55 | 1.7.9.5 |
56 | 56 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0037-SCSI-mpt2sas-Fix-for-memory-allocation-error-for-lar.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0037-SCSI-mpt2sas-Fix-for-memory-allocation-error-for-lar.patch index 53aaf44d..d58ff27f 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0037-SCSI-mpt2sas-Fix-for-memory-allocation-error-for-lar.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0037-SCSI-mpt2sas-Fix-for-memory-allocation-error-for-lar.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 9ebea3b971f454ee2d1c0970ac76636d2fa4f5a2 Mon Sep 17 00:00:00 2001 | 1 | From c987e1592482d819fd950fbaad9a1405f892c39e Mon Sep 17 00:00:00 2001 |
2 | From: "nagalakshmi.nandigama@lsi.com" <nagalakshmi.nandigama@lsi.com> | 2 | From: "nagalakshmi.nandigama@lsi.com" <nagalakshmi.nandigama@lsi.com> |
3 | Date: Thu, 1 Dec 2011 07:53:08 +0530 | 3 | Date: Thu, 1 Dec 2011 07:53:08 +0530 |
4 | Subject: [PATCH 037/130] SCSI: mpt2sas : Fix for memory allocation error for | 4 | Subject: [PATCH 037/129] SCSI: mpt2sas : Fix for memory allocation error for |
5 | large host credits | 5 | large host credits |
6 | 6 | ||
7 | commit aff132d95ffe14eca96cab90597cdd010b457af7 upstream. | 7 | commit aff132d95ffe14eca96cab90597cdd010b457af7 upstream. |
@@ -173,5 +173,5 @@ index 3a4f666..9bc6fb2 100644 | |||
173 | } | 173 | } |
174 | chain_req = list_entry(ioc->free_chain_list.next, | 174 | chain_req = list_entry(ioc->free_chain_list.next, |
175 | -- | 175 | -- |
176 | 1.7.9.4 | 176 | 1.7.9.5 |
177 | 177 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0038-xen-xenbus-Reject-replies-with-payload-XENSTORE_PAYL.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0038-xen-xenbus-Reject-replies-with-payload-XENSTORE_PAYL.patch index 5e062932..ce8871b6 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0038-xen-xenbus-Reject-replies-with-payload-XENSTORE_PAYL.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0038-xen-xenbus-Reject-replies-with-payload-XENSTORE_PAYL.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 5a9209c05e1082f2394f483b7326cbf0efeb2ed2 Mon Sep 17 00:00:00 2001 | 1 | From 60ff826ed445ff093db42fd2e5ac97839c3c43d4 Mon Sep 17 00:00:00 2001 |
2 | From: Ian Campbell <Ian.Campbell@citrix.com> | 2 | From: Ian Campbell <Ian.Campbell@citrix.com> |
3 | Date: Wed, 4 Jan 2012 09:34:49 +0000 | 3 | Date: Wed, 4 Jan 2012 09:34:49 +0000 |
4 | Subject: [PATCH 038/130] xen/xenbus: Reject replies with payload > | 4 | Subject: [PATCH 038/129] xen/xenbus: Reject replies with payload > |
5 | XENSTORE_PAYLOAD_MAX. | 5 | XENSTORE_PAYLOAD_MAX. |
6 | 6 | ||
7 | commit 9e7860cee18241633eddb36a4c34c7b61d8cecbc upstream. | 7 | commit 9e7860cee18241633eddb36a4c34c7b61d8cecbc upstream. |
@@ -74,5 +74,5 @@ index f6f07aa..7cdfca2 100644 | |||
74 | + | 74 | + |
75 | #endif /* _XS_WIRE_H */ | 75 | #endif /* _XS_WIRE_H */ |
76 | -- | 76 | -- |
77 | 1.7.9.4 | 77 | 1.7.9.5 |
78 | 78 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0039-md-raid1-perform-bad-block-tests-for-WriteMostly-dev.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0039-md-raid1-perform-bad-block-tests-for-WriteMostly-dev.patch index 9931fbeb..a6df9065 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0039-md-raid1-perform-bad-block-tests-for-WriteMostly-dev.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0039-md-raid1-perform-bad-block-tests-for-WriteMostly-dev.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 1a8506bc77390a1f7e67a4176c6d4c5b05a18920 Mon Sep 17 00:00:00 2001 | 1 | From 4f2bf4b7d712836951cdbfa4807ae0309711487c Mon Sep 17 00:00:00 2001 |
2 | From: NeilBrown <neilb@suse.de> | 2 | From: NeilBrown <neilb@suse.de> |
3 | Date: Mon, 9 Jan 2012 01:41:51 +1100 | 3 | Date: Mon, 9 Jan 2012 01:41:51 +1100 |
4 | Subject: [PATCH 039/130] md/raid1: perform bad-block tests for WriteMostly | 4 | Subject: [PATCH 039/129] md/raid1: perform bad-block tests for WriteMostly |
5 | devices too. | 5 | devices too. |
6 | MIME-Version: 1.0 | 6 | MIME-Version: 1.0 |
7 | Content-Type: text/plain; charset=UTF-8 | 7 | Content-Type: text/plain; charset=UTF-8 |
@@ -52,5 +52,5 @@ index ede2461..7d9e071 100644 | |||
52 | } | 52 | } |
53 | /* This is a reasonable device to use. It might | 53 | /* This is a reasonable device to use. It might |
54 | -- | 54 | -- |
55 | 1.7.9.4 | 55 | 1.7.9.5 |
56 | 56 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0040-ima-free-duplicate-measurement-memory.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0040-ima-free-duplicate-measurement-memory.patch index 5237e81f..221f3df6 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0040-ima-free-duplicate-measurement-memory.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0040-ima-free-duplicate-measurement-memory.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 20da29ae3a7382bd51c44de1e5f5e8220b9f21b0 Mon Sep 17 00:00:00 2001 | 1 | From 5800ae9277818c4ce77d7efd4a1035738ec40400 Mon Sep 17 00:00:00 2001 |
2 | From: Roberto Sassu <roberto.sassu@polito.it> | 2 | From: Roberto Sassu <roberto.sassu@polito.it> |
3 | Date: Mon, 19 Dec 2011 15:57:27 +0100 | 3 | Date: Mon, 19 Dec 2011 15:57:27 +0100 |
4 | Subject: [PATCH 040/130] ima: free duplicate measurement memory | 4 | Subject: [PATCH 040/129] ima: free duplicate measurement memory |
5 | 5 | ||
6 | commit 45fae7493970d7c45626ccd96d4a74f5f1eea5a9 upstream. | 6 | commit 45fae7493970d7c45626ccd96d4a74f5f1eea5a9 upstream. |
7 | 7 | ||
@@ -48,5 +48,5 @@ index 8e28f04..e1a5062 100644 | |||
48 | } | 48 | } |
49 | } | 49 | } |
50 | -- | 50 | -- |
51 | 1.7.9.4 | 51 | 1.7.9.5 |
52 | 52 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0041-ima-fix-invalid-memory-reference.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0041-ima-fix-invalid-memory-reference.patch index de3d14ba..3f30fe21 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0041-ima-fix-invalid-memory-reference.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0041-ima-fix-invalid-memory-reference.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 52428cef38a83932b588b3ceff080a7411780dc9 Mon Sep 17 00:00:00 2001 | 1 | From 2c5908ebba650537dda1db47220afc062e7d61bd Mon Sep 17 00:00:00 2001 |
2 | From: Roberto Sassu <roberto.sassu@polito.it> | 2 | From: Roberto Sassu <roberto.sassu@polito.it> |
3 | Date: Mon, 19 Dec 2011 15:57:28 +0100 | 3 | Date: Mon, 19 Dec 2011 15:57:28 +0100 |
4 | Subject: [PATCH 041/130] ima: fix invalid memory reference | 4 | Subject: [PATCH 041/129] ima: fix invalid memory reference |
5 | 5 | ||
6 | commit 7b7e5916aa2f46e57f8bd8cb89c34620ebfda5da upstream. | 6 | commit 7b7e5916aa2f46e57f8bd8cb89c34620ebfda5da upstream. |
7 | 7 | ||
@@ -64,5 +64,5 @@ index e1a5062..55a6271 100644 | |||
64 | } | 64 | } |
65 | out: | 65 | out: |
66 | -- | 66 | -- |
67 | 1.7.9.4 | 67 | 1.7.9.5 |
68 | 68 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0042-slub-fix-a-possible-memleak-in-__slab_alloc.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0042-slub-fix-a-possible-memleak-in-__slab_alloc.patch index 1a2116f1..2af89dd8 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0042-slub-fix-a-possible-memleak-in-__slab_alloc.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0042-slub-fix-a-possible-memleak-in-__slab_alloc.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 7942ee2ec78601a85bc491a0b63dc2e45dfec3a6 Mon Sep 17 00:00:00 2001 | 1 | From 71490e8f6f58ec56533554888983ce09d6ee5cb1 Mon Sep 17 00:00:00 2001 |
2 | From: Eric Dumazet <eric.dumazet@gmail.com> | 2 | From: Eric Dumazet <eric.dumazet@gmail.com> |
3 | Date: Tue, 13 Dec 2011 04:57:06 +0100 | 3 | Date: Tue, 13 Dec 2011 04:57:06 +0100 |
4 | Subject: [PATCH 042/130] slub: fix a possible memleak in __slab_alloc() | 4 | Subject: [PATCH 042/129] slub: fix a possible memleak in __slab_alloc() |
5 | 5 | ||
6 | commit 73736e0387ba0e6d2b703407b4d26168d31516a7 upstream. | 6 | commit 73736e0387ba0e6d2b703407b4d26168d31516a7 upstream. |
7 | 7 | ||
@@ -43,5 +43,5 @@ index ed3334d..1a919f0 100644 | |||
43 | 43 | ||
44 | do { | 44 | do { |
45 | -- | 45 | -- |
46 | 1.7.9.4 | 46 | 1.7.9.5 |
47 | 47 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0043-PNP-work-around-Dell-1536-1546-BIOS-MMCONFIG-bug-tha.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0043-PNP-work-around-Dell-1536-1546-BIOS-MMCONFIG-bug-tha.patch index 0b3b1541..c8c5bd7a 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0043-PNP-work-around-Dell-1536-1546-BIOS-MMCONFIG-bug-tha.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0043-PNP-work-around-Dell-1536-1546-BIOS-MMCONFIG-bug-tha.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From b984f94bf34a9df2d49b84ff3a723c968e8e8c35 Mon Sep 17 00:00:00 2001 | 1 | From ac901f18d34bc2bf1be5e6b56cf6eeb045c0bbee Mon Sep 17 00:00:00 2001 |
2 | From: Bjorn Helgaas <bhelgaas@google.com> | 2 | From: Bjorn Helgaas <bhelgaas@google.com> |
3 | Date: Thu, 5 Jan 2012 14:27:24 -0700 | 3 | Date: Thu, 5 Jan 2012 14:27:24 -0700 |
4 | Subject: [PATCH 043/130] PNP: work around Dell 1536/1546 BIOS MMCONFIG bug | 4 | Subject: [PATCH 043/129] PNP: work around Dell 1536/1546 BIOS MMCONFIG bug |
5 | that breaks USB | 5 | that breaks USB |
6 | 6 | ||
7 | commit eb31aae8cb5eb54e234ed2d857ddac868195d911 upstream. | 7 | commit eb31aae8cb5eb54e234ed2d857ddac868195d911 upstream. |
@@ -97,5 +97,5 @@ index dfbd5a6..258fef2 100644 | |||
97 | }; | 97 | }; |
98 | 98 | ||
99 | -- | 99 | -- |
100 | 1.7.9.4 | 100 | 1.7.9.5 |
101 | 101 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0044-asix-fix-setting-custom-MAC-address-on-Asix-88178-de.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0044-asix-fix-setting-custom-MAC-address-on-Asix-88178-de.patch index 72134df1..ec9189d8 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0044-asix-fix-setting-custom-MAC-address-on-Asix-88178-de.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0044-asix-fix-setting-custom-MAC-address-on-Asix-88178-de.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From f4da550957683d2b4f271d222e936a79866c6242 Mon Sep 17 00:00:00 2001 | 1 | From 45268a6d90150936994e8b3e21eb91a54586685e Mon Sep 17 00:00:00 2001 |
2 | From: Jussi Kivilinna <jussi.kivilinna@mbnet.fi> | 2 | From: Jussi Kivilinna <jussi.kivilinna@mbnet.fi> |
3 | Date: Tue, 10 Jan 2012 06:40:23 +0000 | 3 | Date: Tue, 10 Jan 2012 06:40:23 +0000 |
4 | Subject: [PATCH 044/130] asix: fix setting custom MAC address on Asix 88178 | 4 | Subject: [PATCH 044/129] asix: fix setting custom MAC address on Asix 88178 |
5 | devices | 5 | devices |
6 | 6 | ||
7 | commit 71bc5d94061516c4e70303570128797bcf768b10 upstream. | 7 | commit 71bc5d94061516c4e70303570128797bcf768b10 upstream. |
@@ -41,5 +41,5 @@ index dd2625a..b495821 100644 | |||
41 | if (ret < 0) | 41 | if (ret < 0) |
42 | return ret; | 42 | return ret; |
43 | -- | 43 | -- |
44 | 1.7.9.4 | 44 | 1.7.9.5 |
45 | 45 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0045-asix-fix-setting-custom-MAC-address-on-Asix-88772-de.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0045-asix-fix-setting-custom-MAC-address-on-Asix-88772-de.patch index e4a46e52..b39ee830 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0045-asix-fix-setting-custom-MAC-address-on-Asix-88772-de.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0045-asix-fix-setting-custom-MAC-address-on-Asix-88772-de.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From d36c9125fa5835e571dcd975e20833450ff04b4f Mon Sep 17 00:00:00 2001 | 1 | From fa83c408b16aae1d3d85868c528caf491e14af76 Mon Sep 17 00:00:00 2001 |
2 | From: Jussi Kivilinna <jussi.kivilinna@mbnet.fi> | 2 | From: Jussi Kivilinna <jussi.kivilinna@mbnet.fi> |
3 | Date: Tue, 10 Jan 2012 06:40:17 +0000 | 3 | Date: Tue, 10 Jan 2012 06:40:17 +0000 |
4 | Subject: [PATCH 045/130] asix: fix setting custom MAC address on Asix 88772 | 4 | Subject: [PATCH 045/129] asix: fix setting custom MAC address on Asix 88772 |
5 | devices | 5 | devices |
6 | 6 | ||
7 | commit 8ef66bdc4bda6aac2dae73b84d79dc8c2db33637 upstream. | 7 | commit 8ef66bdc4bda6aac2dae73b84d79dc8c2db33637 upstream. |
@@ -49,5 +49,5 @@ index b495821..f5e063a 100644 | |||
49 | ret = asix_write_rx_ctl(dev, AX_DEFAULT_RX_CTL); | 49 | ret = asix_write_rx_ctl(dev, AX_DEFAULT_RX_CTL); |
50 | if (ret < 0) | 50 | if (ret < 0) |
51 | -- | 51 | -- |
52 | 1.7.9.4 | 52 | 1.7.9.5 |
53 | 53 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0046-include-linux-crash_dump.h-needs-elf.h.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0046-include-linux-crash_dump.h-needs-elf.h.patch index dbc03e26..3fe1fc76 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0046-include-linux-crash_dump.h-needs-elf.h.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0046-include-linux-crash_dump.h-needs-elf.h.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 5a7217fdd8cbda3e7d44d33a51c077ab84e6437d Mon Sep 17 00:00:00 2001 | 1 | From a509baa477542eca7e6f6d8d23dc1ba04248a62f Mon Sep 17 00:00:00 2001 |
2 | From: Fabio Estevam <festevam@gmail.com> | 2 | From: Fabio Estevam <festevam@gmail.com> |
3 | Date: Thu, 12 Jan 2012 17:20:20 -0800 | 3 | Date: Thu, 12 Jan 2012 17:20:20 -0800 |
4 | Subject: [PATCH 046/130] include/linux/crash_dump.h needs elf.h | 4 | Subject: [PATCH 046/129] include/linux/crash_dump.h needs elf.h |
5 | 5 | ||
6 | commit 1f536b9e9f85456df93614b3c2f6a1a2b7d7cb9b upstream. | 6 | commit 1f536b9e9f85456df93614b3c2f6a1a2b7d7cb9b upstream. |
7 | 7 | ||
@@ -50,5 +50,5 @@ index 5c4abce..b936763 100644 | |||
50 | #define ELFCORE_ADDR_MAX (-1ULL) | 50 | #define ELFCORE_ADDR_MAX (-1ULL) |
51 | #define ELFCORE_ADDR_ERR (-2ULL) | 51 | #define ELFCORE_ADDR_ERR (-2ULL) |
52 | -- | 52 | -- |
53 | 1.7.9.4 | 53 | 1.7.9.5 |
54 | 54 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0047-rtl8192se-Fix-BUG-caused-by-failure-to-check-skb-all.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0047-rtl8192se-Fix-BUG-caused-by-failure-to-check-skb-all.patch index c9702c64..083f876e 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0047-rtl8192se-Fix-BUG-caused-by-failure-to-check-skb-all.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0047-rtl8192se-Fix-BUG-caused-by-failure-to-check-skb-all.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From ee971ad4b1a94e768465a27de0357ed71d7e2b97 Mon Sep 17 00:00:00 2001 | 1 | From b12320439e84a510f0043ea4b2540080c8bbb9a7 Mon Sep 17 00:00:00 2001 |
2 | From: Larry Finger <Larry.Finger@lwfinger.net> | 2 | From: Larry Finger <Larry.Finger@lwfinger.net> |
3 | Date: Wed, 4 Jan 2012 20:50:47 -0600 | 3 | Date: Wed, 4 Jan 2012 20:50:47 -0600 |
4 | Subject: [PATCH 047/130] rtl8192se: Fix BUG caused by failure to check skb | 4 | Subject: [PATCH 047/129] rtl8192se: Fix BUG caused by failure to check skb |
5 | allocation | 5 | allocation |
6 | 6 | ||
7 | commit d90db4b12bc1b9b8a787ef28550fdb767ee25a49 upstream. | 7 | commit d90db4b12bc1b9b8a787ef28550fdb767ee25a49 upstream. |
@@ -40,5 +40,5 @@ index 6f91a14..3fda6b1 100644 | |||
40 | cb_desc->queue_index = TXCMD_QUEUE; | 40 | cb_desc->queue_index = TXCMD_QUEUE; |
41 | cb_desc->cmd_or_init = DESC_PACKET_TYPE_NORMAL; | 41 | cb_desc->cmd_or_init = DESC_PACKET_TYPE_NORMAL; |
42 | -- | 42 | -- |
43 | 1.7.9.4 | 43 | 1.7.9.5 |
44 | 44 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0048-mac80211-fix-rx-key-NULL-pointer-dereference-in-prom.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0048-mac80211-fix-rx-key-NULL-pointer-dereference-in-prom.patch index e6bd10fe..e7063dfc 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0048-mac80211-fix-rx-key-NULL-pointer-dereference-in-prom.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0048-mac80211-fix-rx-key-NULL-pointer-dereference-in-prom.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 967087957c3661dc97da0f17d3be6d7b105d8d0e Mon Sep 17 00:00:00 2001 | 1 | From 12b3ec5c806e2daef619f068f80115f4dc0aa6bb Mon Sep 17 00:00:00 2001 |
2 | From: Stanislaw Gruszka <sgruszka@redhat.com> | 2 | From: Stanislaw Gruszka <sgruszka@redhat.com> |
3 | Date: Wed, 11 Jan 2012 09:26:54 +0100 | 3 | Date: Wed, 11 Jan 2012 09:26:54 +0100 |
4 | Subject: [PATCH 048/130] mac80211: fix rx->key NULL pointer dereference in | 4 | Subject: [PATCH 048/129] mac80211: fix rx->key NULL pointer dereference in |
5 | promiscuous mode | 5 | promiscuous mode |
6 | 6 | ||
7 | commit 1140afa862842ac3e56678693050760edc4ecde9 upstream. | 7 | commit 1140afa862842ac3e56678693050760edc4ecde9 upstream. |
@@ -48,5 +48,5 @@ index f614ce7..28a39bb 100644 | |||
48 | 48 | ||
49 | return RX_CONTINUE; | 49 | return RX_CONTINUE; |
50 | -- | 50 | -- |
51 | 1.7.9.4 | 51 | 1.7.9.5 |
52 | 52 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0049-ath9k-Fix-regression-in-channelwidth-switch-at-the-s.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0049-ath9k-Fix-regression-in-channelwidth-switch-at-the-s.patch index ac047aba..13131032 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0049-ath9k-Fix-regression-in-channelwidth-switch-at-the-s.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0049-ath9k-Fix-regression-in-channelwidth-switch-at-the-s.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 83f574499fed31e6824e7c77f16353bc8a2e2cb4 Mon Sep 17 00:00:00 2001 | 1 | From f7938357cefb08ed00118138736f4d475fbc6578 Mon Sep 17 00:00:00 2001 |
2 | From: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> | 2 | From: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> |
3 | Date: Mon, 9 Jan 2012 15:37:53 +0530 | 3 | Date: Mon, 9 Jan 2012 15:37:53 +0530 |
4 | Subject: [PATCH 049/130] ath9k: Fix regression in channelwidth switch at the | 4 | Subject: [PATCH 049/129] ath9k: Fix regression in channelwidth switch at the |
5 | same channel | 5 | same channel |
6 | 6 | ||
7 | commit 1a19f77f3642b8194ad9cf55548cc5d92e841766 upstream. | 7 | commit 1a19f77f3642b8194ad9cf55548cc5d92e841766 upstream. |
@@ -64,5 +64,5 @@ index a9c5ae7..f76a814 100644 | |||
64 | ath9k_cmn_update_ichannel(&sc->sc_ah->channels[pos], | 64 | ath9k_cmn_update_ichannel(&sc->sc_ah->channels[pos], |
65 | curchan, conf->channel_type); | 65 | curchan, conf->channel_type); |
66 | -- | 66 | -- |
67 | 1.7.9.4 | 67 | 1.7.9.5 |
68 | 68 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0050-memcg-add-mem_cgroup_replace_page_cache-to-fix-LRU-i.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0050-memcg-add-mem_cgroup_replace_page_cache-to-fix-LRU-i.patch index 0be7af57..a3cc1885 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0050-memcg-add-mem_cgroup_replace_page_cache-to-fix-LRU-i.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0050-memcg-add-mem_cgroup_replace_page_cache-to-fix-LRU-i.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 650ad91dac98e319ac975a625b9cab24ebd132ce Mon Sep 17 00:00:00 2001 | 1 | From 3a43cb3518148d31838d97bff3e6fcc29487499d Mon Sep 17 00:00:00 2001 |
2 | From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> | 2 | From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> |
3 | Date: Thu, 12 Jan 2012 17:17:44 -0800 | 3 | Date: Thu, 12 Jan 2012 17:17:44 -0800 |
4 | Subject: [PATCH 050/130] memcg: add mem_cgroup_replace_page_cache() to fix | 4 | Subject: [PATCH 050/129] memcg: add mem_cgroup_replace_page_cache() to fix |
5 | LRU issue | 5 | LRU issue |
6 | 6 | ||
7 | commit ab936cbcd02072a34b60d268f94440fd5cf1970b upstream. | 7 | commit ab936cbcd02072a34b60d268f94440fd5cf1970b upstream. |
@@ -175,5 +175,5 @@ index b63f5f7..f538e9b 100644 | |||
175 | static struct page_cgroup *lookup_page_cgroup_used(struct page *page) | 175 | static struct page_cgroup *lookup_page_cgroup_used(struct page *page) |
176 | { | 176 | { |
177 | -- | 177 | -- |
178 | 1.7.9.4 | 178 | 1.7.9.5 |
179 | 179 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0051-x86-Fix-mmap-random-address-range.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0051-x86-Fix-mmap-random-address-range.patch index c9d95686..fce15686 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0051-x86-Fix-mmap-random-address-range.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0051-x86-Fix-mmap-random-address-range.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 441972dde2baf1369a136fcaa27c06881d6ef013 Mon Sep 17 00:00:00 2001 | 1 | From 65ce587697fd360eea3dc06a3a1422d63a159fd1 Mon Sep 17 00:00:00 2001 |
2 | From: Ludwig Nussel <ludwig.nussel@suse.de> | 2 | From: Ludwig Nussel <ludwig.nussel@suse.de> |
3 | Date: Tue, 15 Nov 2011 14:46:46 -0800 | 3 | Date: Tue, 15 Nov 2011 14:46:46 -0800 |
4 | Subject: [PATCH 051/130] x86: Fix mmap random address range | 4 | Subject: [PATCH 051/129] x86: Fix mmap random address range |
5 | 5 | ||
6 | commit 9af0c7a6fa860698d080481f24a342ba74b68982 upstream. | 6 | commit 9af0c7a6fa860698d080481f24a342ba74b68982 upstream. |
7 | 7 | ||
@@ -43,5 +43,5 @@ index 4b5ba85..845df68 100644 | |||
43 | return rnd << PAGE_SHIFT; | 43 | return rnd << PAGE_SHIFT; |
44 | } | 44 | } |
45 | -- | 45 | -- |
46 | 1.7.9.4 | 46 | 1.7.9.5 |
47 | 47 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0052-UBI-fix-nameless-volumes-handling.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0052-UBI-fix-nameless-volumes-handling.patch index c11f120f..5d261cc6 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0052-UBI-fix-nameless-volumes-handling.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0052-UBI-fix-nameless-volumes-handling.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From e267c0b024968875114941870843e03aed277585 Mon Sep 17 00:00:00 2001 | 1 | From addbb632cd11d02b5386a9ebf040b0f89b6e2c84 Mon Sep 17 00:00:00 2001 |
2 | From: Richard Weinberger <richard@nod.at> | 2 | From: Richard Weinberger <richard@nod.at> |
3 | Date: Fri, 13 Jan 2012 15:07:40 +0100 | 3 | Date: Fri, 13 Jan 2012 15:07:40 +0100 |
4 | Subject: [PATCH 052/130] UBI: fix nameless volumes handling | 4 | Subject: [PATCH 052/129] UBI: fix nameless volumes handling |
5 | 5 | ||
6 | commit 4a59c797a18917a5cf3ff7ade296b46134d91e6a upstream. | 6 | commit 4a59c797a18917a5cf3ff7ade296b46134d91e6a upstream. |
7 | 7 | ||
@@ -33,5 +33,5 @@ index 3320a50..ad76592 100644 | |||
33 | err = -ENAMETOOLONG; | 33 | err = -ENAMETOOLONG; |
34 | goto bad; | 34 | goto bad; |
35 | -- | 35 | -- |
36 | 1.7.9.4 | 36 | 1.7.9.5 |
37 | 37 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0053-UBI-fix-debugging-messages.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0053-UBI-fix-debugging-messages.patch index cb230bc0..83cd1b12 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0053-UBI-fix-debugging-messages.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0053-UBI-fix-debugging-messages.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From a28e25b364a1ed96a8a19fbf5328bb750af80342 Mon Sep 17 00:00:00 2001 | 1 | From 96bd5436400b64fe57b0be756f9424b1e1d1e430 Mon Sep 17 00:00:00 2001 |
2 | From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> | 2 | From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> |
3 | Date: Tue, 10 Jan 2012 19:32:30 +0200 | 3 | Date: Tue, 10 Jan 2012 19:32:30 +0200 |
4 | Subject: [PATCH 053/130] UBI: fix debugging messages | 4 | Subject: [PATCH 053/129] UBI: fix debugging messages |
5 | 5 | ||
6 | commit 72f0d453d81d35087b1d3ad7c8285628c2be6e1d upstream. | 6 | commit 72f0d453d81d35087b1d3ad7c8285628c2be6e1d upstream. |
7 | 7 | ||
@@ -38,5 +38,5 @@ index 64fbb00..ead2cd1 100644 | |||
38 | #define dbg_gen(fmt, ...) ubi_dbg_msg("gen", fmt, ##__VA_ARGS__) | 38 | #define dbg_gen(fmt, ...) ubi_dbg_msg("gen", fmt, ##__VA_ARGS__) |
39 | /* Messages from the eraseblock association sub-system */ | 39 | /* Messages from the eraseblock association sub-system */ |
40 | -- | 40 | -- |
41 | 1.7.9.4 | 41 | 1.7.9.5 |
42 | 42 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0054-UBI-make-vid_hdr-non-static.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0054-UBI-make-vid_hdr-non-static.patch index f64141e9..2790744f 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0054-UBI-make-vid_hdr-non-static.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0054-UBI-make-vid_hdr-non-static.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 1abfab7c1e994f5b4419387491666091141f9dbf Mon Sep 17 00:00:00 2001 | 1 | From f767fd8bc40accebf74bdee01946ed6452a626df Mon Sep 17 00:00:00 2001 |
2 | From: Richard Weinberger <rw@linutronix.de> | 2 | From: Richard Weinberger <rw@linutronix.de> |
3 | Date: Thu, 22 Dec 2011 16:12:57 +0100 | 3 | Date: Thu, 22 Dec 2011 16:12:57 +0100 |
4 | Subject: [PATCH 054/130] UBI: make vid_hdr non-static | 4 | Subject: [PATCH 054/129] UBI: make vid_hdr non-static |
5 | 5 | ||
6 | commit 6bdccffe8c4268d02f71873102131fb6ed37ed9a upstream. | 6 | commit 6bdccffe8c4268d02f71873102131fb6ed37ed9a upstream. |
7 | 7 | ||
@@ -32,5 +32,5 @@ index 9ad18da..890754c 100644 | |||
32 | 32 | ||
33 | ubi_msg("create volume table (copy #%d)", copy + 1); | 33 | ubi_msg("create volume table (copy #%d)", copy + 1); |
34 | -- | 34 | -- |
35 | 1.7.9.4 | 35 | 1.7.9.5 |
36 | 36 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0055-UBIFS-fix-debugging-messages.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0055-UBIFS-fix-debugging-messages.patch index 6b5fbd6e..9c457123 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0055-UBIFS-fix-debugging-messages.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0055-UBIFS-fix-debugging-messages.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 45ed8ba5d25772dde8ca17b50a3f5f64ceb9633e Mon Sep 17 00:00:00 2001 | 1 | From 6c07a86a7e8ac8231be518705c91ba4b32da1813 Mon Sep 17 00:00:00 2001 |
2 | From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> | 2 | From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> |
3 | Date: Tue, 10 Jan 2012 19:32:30 +0200 | 3 | Date: Tue, 10 Jan 2012 19:32:30 +0200 |
4 | Subject: [PATCH 055/130] UBIFS: fix debugging messages | 4 | Subject: [PATCH 055/129] UBIFS: fix debugging messages |
5 | 5 | ||
6 | commit d34315da9146253351146140ea4b277193ee5e5f upstream. | 6 | commit d34315da9146253351146140ea4b277193ee5e5f upstream. |
7 | 7 | ||
@@ -37,5 +37,5 @@ index 8d9c468..3f65829 100644 | |||
37 | #define dbg_gen(fmt, ...) ubifs_dbg_msg("gen", fmt, ##__VA_ARGS__) | 37 | #define dbg_gen(fmt, ...) ubifs_dbg_msg("gen", fmt, ##__VA_ARGS__) |
38 | /* Additional journal messages */ | 38 | /* Additional journal messages */ |
39 | -- | 39 | -- |
40 | 1.7.9.4 | 40 | 1.7.9.5 |
41 | 41 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0056-UBIFS-make-debugging-messages-light-again.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0056-UBIFS-make-debugging-messages-light-again.patch index 2f8c6fae..8ad2285d 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0056-UBIFS-make-debugging-messages-light-again.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0056-UBIFS-make-debugging-messages-light-again.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From a5db2eaeb04f9d74c9f7655cc87b4a41597a9878 Mon Sep 17 00:00:00 2001 | 1 | From 400fba6cfdfd168d550113f665c3b168cf9214cf Mon Sep 17 00:00:00 2001 |
2 | From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> | 2 | From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> |
3 | Date: Wed, 11 Jan 2012 15:13:27 +0200 | 3 | Date: Wed, 11 Jan 2012 15:13:27 +0200 |
4 | Subject: [PATCH 056/130] UBIFS: make debugging messages light again | 4 | Subject: [PATCH 056/129] UBIFS: make debugging messages light again |
5 | 5 | ||
6 | commit 1f5d78dc4823a85f112aaa2d0f17624f8c2a6c52 upstream. | 6 | commit 1f5d78dc4823a85f112aaa2d0f17624f8c2a6c52 upstream. |
7 | 7 | ||
@@ -53,5 +53,5 @@ index 3f65829..c9d2941 100644 | |||
53 | /* Just a debugging messages not related to any specific UBIFS subsystem */ | 53 | /* Just a debugging messages not related to any specific UBIFS subsystem */ |
54 | #define dbg_msg(fmt, ...) \ | 54 | #define dbg_msg(fmt, ...) \ |
55 | -- | 55 | -- |
56 | 1.7.9.4 | 56 | 1.7.9.5 |
57 | 57 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0057-i2c-Fix-error-value-returned-by-several-bus-drivers.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0057-i2c-Fix-error-value-returned-by-several-bus-drivers.patch index a3693943..528fc93d 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0057-i2c-Fix-error-value-returned-by-several-bus-drivers.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0057-i2c-Fix-error-value-returned-by-several-bus-drivers.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 87147adea587be2efe99757f6e8a87c585da9799 Mon Sep 17 00:00:00 2001 | 1 | From c9f51b32db94ab1e2dc628cc379f7cc7013801f5 Mon Sep 17 00:00:00 2001 |
2 | From: Jean Delvare <khali@linux-fr.org> | 2 | From: Jean Delvare <khali@linux-fr.org> |
3 | Date: Thu, 12 Jan 2012 20:32:03 +0100 | 3 | Date: Thu, 12 Jan 2012 20:32:03 +0100 |
4 | Subject: [PATCH 057/130] i2c: Fix error value returned by several bus drivers | 4 | Subject: [PATCH 057/129] i2c: Fix error value returned by several bus drivers |
5 | 5 | ||
6 | commit 7c1f59c9d5caf3a84f35549b5d58f3c055a68da5 upstream. | 6 | commit 7c1f59c9d5caf3a84f35549b5d58f3c055a68da5 upstream. |
7 | 7 | ||
@@ -193,5 +193,5 @@ index 0b012f1..58261d4 100644 | |||
193 | 193 | ||
194 | /* Always return failure here. This is to allow other drivers to bind | 194 | /* Always return failure here. This is to allow other drivers to bind |
195 | -- | 195 | -- |
196 | 1.7.9.4 | 196 | 1.7.9.5 |
197 | 197 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0058-mmc-core-Fix-voltage-select-in-DDR-mode.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0058-mmc-core-Fix-voltage-select-in-DDR-mode.patch index 77156946..db3a0d05 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0058-mmc-core-Fix-voltage-select-in-DDR-mode.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0058-mmc-core-Fix-voltage-select-in-DDR-mode.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 92ea9daee26a54bdae410e9361d5059506278450 Mon Sep 17 00:00:00 2001 | 1 | From 4272b6efe99cd197257777ddeaff1b2bf5428a13 Mon Sep 17 00:00:00 2001 |
2 | From: Girish K S <girish.shivananjappa@linaro.org> | 2 | From: Girish K S <girish.shivananjappa@linaro.org> |
3 | Date: Thu, 15 Dec 2011 17:27:42 +0530 | 3 | Date: Thu, 15 Dec 2011 17:27:42 +0530 |
4 | Subject: [PATCH 058/130] mmc: core: Fix voltage select in DDR mode | 4 | Subject: [PATCH 058/129] mmc: core: Fix voltage select in DDR mode |
5 | 5 | ||
6 | commit 913047e9e5787a90696533a9f109552b7694ecc9 upstream. | 6 | commit 913047e9e5787a90696533a9f109552b7694ecc9 upstream. |
7 | 7 | ||
@@ -35,5 +35,5 @@ index d240427..fb7c27f 100644 | |||
35 | MMC_SIGNAL_VOLTAGE_120, 0); | 35 | MMC_SIGNAL_VOLTAGE_120, 0); |
36 | if (err) | 36 | if (err) |
37 | -- | 37 | -- |
38 | 1.7.9.4 | 38 | 1.7.9.5 |
39 | 39 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0059-mmc-sdhci-Fix-tuning-timer-incorrect-setting-when-su.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0059-mmc-sdhci-Fix-tuning-timer-incorrect-setting-when-su.patch index 7b0bf1f9..2d011333 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0059-mmc-sdhci-Fix-tuning-timer-incorrect-setting-when-su.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0059-mmc-sdhci-Fix-tuning-timer-incorrect-setting-when-su.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 4e6fa28c494b5482b5ec4516a53c7c0961350788 Mon Sep 17 00:00:00 2001 | 1 | From 5fda16f987c13e470fd4a4ae87dd3ed6b4f5be46 Mon Sep 17 00:00:00 2001 |
2 | From: Aaron Lu <aaron.lu@amd.com> | 2 | From: Aaron Lu <aaron.lu@amd.com> |
3 | Date: Wed, 28 Dec 2011 11:11:12 +0800 | 3 | Date: Wed, 28 Dec 2011 11:11:12 +0800 |
4 | Subject: [PATCH 059/130] mmc: sdhci: Fix tuning timer incorrect setting when | 4 | Subject: [PATCH 059/129] mmc: sdhci: Fix tuning timer incorrect setting when |
5 | suspending host | 5 | suspending host |
6 | 6 | ||
7 | commit c6ced0db08010ed75df221a2946c5228454b38d5 upstream. | 7 | commit c6ced0db08010ed75df221a2946c5228454b38d5 upstream. |
@@ -35,5 +35,5 @@ index 19ed580..9279c1b 100644 | |||
35 | 35 | ||
36 | ret = mmc_suspend_host(host->mmc); | 36 | ret = mmc_suspend_host(host->mmc); |
37 | -- | 37 | -- |
38 | 1.7.9.4 | 38 | 1.7.9.5 |
39 | 39 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0060-mmc-sd-Fix-SDR12-timing-regression.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0060-mmc-sd-Fix-SDR12-timing-regression.patch index a861903f..0760c625 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0060-mmc-sd-Fix-SDR12-timing-regression.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0060-mmc-sd-Fix-SDR12-timing-regression.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 0fdade2c65ed31702e3babf8dd5df4caafe44aa4 Mon Sep 17 00:00:00 2001 | 1 | From 54914e0a2c7c46dd863ba4ca2f530591c8cea37f Mon Sep 17 00:00:00 2001 |
2 | From: Alexander Elbs <alex@segv.de> | 2 | From: Alexander Elbs <alex@segv.de> |
3 | Date: Tue, 3 Jan 2012 23:26:53 -0500 | 3 | Date: Tue, 3 Jan 2012 23:26:53 -0500 |
4 | Subject: [PATCH 060/130] mmc: sd: Fix SDR12 timing regression | 4 | Subject: [PATCH 060/129] mmc: sd: Fix SDR12 timing regression |
5 | 5 | ||
6 | commit dd8df17fe83483d7ea06ff229895e35a42071599 upstream. | 6 | commit dd8df17fe83483d7ea06ff229895e35a42071599 upstream. |
7 | 7 | ||
@@ -34,5 +34,5 @@ index 9279c1b..6ce32a7 100644 | |||
34 | 34 | ||
35 | ctrl_2 = sdhci_readw(host, SDHCI_HOST_CONTROL2); | 35 | ctrl_2 = sdhci_readw(host, SDHCI_HOST_CONTROL2); |
36 | -- | 36 | -- |
37 | 1.7.9.4 | 37 | 1.7.9.5 |
38 | 38 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0061-V4L-DVB-v4l2-ioctl-integer-overflow-in-video_usercop.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0061-V4L-DVB-v4l2-ioctl-integer-overflow-in-video_usercop.patch index 78fece96..293dd528 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0061-V4L-DVB-v4l2-ioctl-integer-overflow-in-video_usercop.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0061-V4L-DVB-v4l2-ioctl-integer-overflow-in-video_usercop.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From e0a32f416043d1d3dde8fccfacaaaf1dbaa07ea8 Mon Sep 17 00:00:00 2001 | 1 | From 51aa88e66716df0c5b5df5b8815cbf0b7b50ac35 Mon Sep 17 00:00:00 2001 |
2 | From: Dan Carpenter <dan.carpenter@oracle.com> | 2 | From: Dan Carpenter <dan.carpenter@oracle.com> |
3 | Date: Thu, 5 Jan 2012 02:27:57 -0300 | 3 | Date: Thu, 5 Jan 2012 02:27:57 -0300 |
4 | Subject: [PATCH 061/130] V4L/DVB: v4l2-ioctl: integer overflow in | 4 | Subject: [PATCH 061/129] V4L/DVB: v4l2-ioctl: integer overflow in |
5 | video_usercopy() | 5 | video_usercopy() |
6 | 6 | ||
7 | commit 6c06108be53ca5e94d8b0e93883d534dd9079646 upstream. | 7 | commit 6c06108be53ca5e94d8b0e93883d534dd9079646 upstream. |
@@ -50,5 +50,5 @@ index 4b752d5..45a7698 100644 | |||
50 | #define V4L2_CID_USER_BASE V4L2_CID_BASE | 50 | #define V4L2_CID_USER_BASE V4L2_CID_BASE |
51 | /* IDs reserved for driver specific controls */ | 51 | /* IDs reserved for driver specific controls */ |
52 | -- | 52 | -- |
53 | 1.7.9.4 | 53 | 1.7.9.5 |
54 | 54 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0062-Unused-iocbs-in-a-batch-should-not-be-accounted-as-a.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0062-Unused-iocbs-in-a-batch-should-not-be-accounted-as-a.patch index 6c6b7a7c..1ca3eaef 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0062-Unused-iocbs-in-a-batch-should-not-be-accounted-as-a.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0062-Unused-iocbs-in-a-batch-should-not-be-accounted-as-a.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From f7ba035a0f785d27f10fbd779056a8fb6b615b1c Mon Sep 17 00:00:00 2001 | 1 | From 0eeb9347d25c283bdbdd1a9e4d7d4881852887d1 Mon Sep 17 00:00:00 2001 |
2 | From: Gleb Natapov <gleb@redhat.com> | 2 | From: Gleb Natapov <gleb@redhat.com> |
3 | Date: Sun, 8 Jan 2012 17:07:28 +0200 | 3 | Date: Sun, 8 Jan 2012 17:07:28 +0200 |
4 | Subject: [PATCH 062/130] Unused iocbs in a batch should not be accounted as | 4 | Subject: [PATCH 062/129] Unused iocbs in a batch should not be accounted as |
5 | active. | 5 | active. |
6 | 6 | ||
7 | commit 69e4747ee9727d660b88d7e1efe0f4afcb35db1b upstream. | 7 | commit 69e4747ee9727d660b88d7e1efe0f4afcb35db1b upstream. |
@@ -67,5 +67,5 @@ index 78c514c..969beb0 100644 | |||
67 | return i ? i : ret; | 67 | return i ? i : ret; |
68 | } | 68 | } |
69 | -- | 69 | -- |
70 | 1.7.9.4 | 70 | 1.7.9.5 |
71 | 71 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0063-ftrace-Fix-unregister-ftrace_ops-accounting.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0063-ftrace-Fix-unregister-ftrace_ops-accounting.patch index 849d07bc..4a0cf7bd 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0063-ftrace-Fix-unregister-ftrace_ops-accounting.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0063-ftrace-Fix-unregister-ftrace_ops-accounting.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From a440374ae75fd885b2b2d0c2fd932affa09ca0e9 Mon Sep 17 00:00:00 2001 | 1 | From 87a8f79b24eaa28f865547dc85b9c10b97a80686 Mon Sep 17 00:00:00 2001 |
2 | From: Jiri Olsa <jolsa@redhat.com> | 2 | From: Jiri Olsa <jolsa@redhat.com> |
3 | Date: Mon, 5 Dec 2011 18:22:48 +0100 | 3 | Date: Mon, 5 Dec 2011 18:22:48 +0100 |
4 | Subject: [PATCH 063/130] ftrace: Fix unregister ftrace_ops accounting | 4 | Subject: [PATCH 063/129] ftrace: Fix unregister ftrace_ops accounting |
5 | 5 | ||
6 | commit 30fb6aa74011dcf595f306ca2727254d708b786e upstream. | 6 | commit 30fb6aa74011dcf595f306ca2727254d708b786e upstream. |
7 | 7 | ||
@@ -223,5 +223,5 @@ index b1e8943..25b4f4d 100644 | |||
223 | mutex_unlock(&ftrace_lock); | 223 | mutex_unlock(&ftrace_lock); |
224 | } | 224 | } |
225 | -- | 225 | -- |
226 | 1.7.9.4 | 226 | 1.7.9.5 |
227 | 227 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0064-kconfig-streamline-config.pl-Simplify-backslash-line.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0064-kconfig-streamline-config.pl-Simplify-backslash-line.patch index a58d2e69..383b3f8c 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0064-kconfig-streamline-config.pl-Simplify-backslash-line.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0064-kconfig-streamline-config.pl-Simplify-backslash-line.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From d52eba613a8cd0e74e52248bff0ed579f3e801bc Mon Sep 17 00:00:00 2001 | 1 | From a3bca61c4e149d9e00102d41a0b81cae4fbca06f Mon Sep 17 00:00:00 2001 |
2 | From: Steven Rostedt <srostedt@redhat.com> | 2 | From: Steven Rostedt <srostedt@redhat.com> |
3 | Date: Fri, 13 Jan 2012 17:50:39 -0500 | 3 | Date: Fri, 13 Jan 2012 17:50:39 -0500 |
4 | Subject: [PATCH 064/130] kconfig/streamline-config.pl: Simplify backslash | 4 | Subject: [PATCH 064/129] kconfig/streamline-config.pl: Simplify backslash |
5 | line concatination | 5 | line concatination |
6 | 6 | ||
7 | commit d060d963e88f3e990cec2fe5214de49de9a49eca upstream. | 7 | commit d060d963e88f3e990cec2fe5214de49de9a49eca upstream. |
@@ -64,5 +64,5 @@ index ec7afce..42ef5ea 100644 | |||
64 | $obj =~ s/-/_/g; | 64 | $obj =~ s/-/_/g; |
65 | if ($obj =~ /(.*)\.o$/) { | 65 | if ($obj =~ /(.*)\.o$/) { |
66 | -- | 66 | -- |
67 | 1.7.9.4 | 67 | 1.7.9.5 |
68 | 68 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0065-kconfig-streamline-config.pl-Fix-parsing-Makefile-wi.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0065-kconfig-streamline-config.pl-Fix-parsing-Makefile-wi.patch index 161c0535..141754e7 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0065-kconfig-streamline-config.pl-Fix-parsing-Makefile-wi.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0065-kconfig-streamline-config.pl-Fix-parsing-Makefile-wi.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 8b26929b86cded7fa66cc9074a4090e14ebb0c4b Mon Sep 17 00:00:00 2001 | 1 | From ac774661d11eb00497542857681b22c652d3d67c Mon Sep 17 00:00:00 2001 |
2 | From: Steven Rostedt <srostedt@redhat.com> | 2 | From: Steven Rostedt <srostedt@redhat.com> |
3 | Date: Fri, 13 Jan 2012 17:53:40 -0500 | 3 | Date: Fri, 13 Jan 2012 17:53:40 -0500 |
4 | Subject: [PATCH 065/130] kconfig/streamline-config.pl: Fix parsing Makefile | 4 | Subject: [PATCH 065/129] kconfig/streamline-config.pl: Fix parsing Makefile |
5 | with variables | 5 | with variables |
6 | 6 | ||
7 | commit 364212fddaaa60c5a64f67a0f5624ad996ecc8a0 upstream. | 7 | commit 364212fddaaa60c5a64f67a0f5624ad996ecc8a0 upstream. |
@@ -39,7 +39,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> | |||
39 | 1 file changed, 29 insertions(+) | 39 | 1 file changed, 29 insertions(+) |
40 | 40 | ||
41 | diff --git a/scripts/kconfig/streamline_config.pl b/scripts/kconfig/streamline_config.pl | 41 | diff --git a/scripts/kconfig/streamline_config.pl b/scripts/kconfig/streamline_config.pl |
42 | index 42ef5ea..bccf07d 100644 | 42 | index 42ef5ea..bccf07dd 100644 |
43 | --- a/scripts/kconfig/streamline_config.pl | 43 | --- a/scripts/kconfig/streamline_config.pl |
44 | +++ b/scripts/kconfig/streamline_config.pl | 44 | +++ b/scripts/kconfig/streamline_config.pl |
45 | @@ -250,10 +250,33 @@ if ($kconfig) { | 45 | @@ -250,10 +250,33 @@ if ($kconfig) { |
@@ -94,5 +94,5 @@ index 42ef5ea..bccf07d 100644 | |||
94 | if (defined($objs)) { | 94 | if (defined($objs)) { |
95 | foreach my $obj (split /\s+/,$objs) { | 95 | foreach my $obj (split /\s+/,$objs) { |
96 | -- | 96 | -- |
97 | 1.7.9.4 | 97 | 1.7.9.5 |
98 | 98 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0066-svcrpc-fix-double-free-on-shutdown-of-nfsd-after-cha.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0066-svcrpc-fix-double-free-on-shutdown-of-nfsd-after-cha.patch index b029800b..76168fbf 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0066-svcrpc-fix-double-free-on-shutdown-of-nfsd-after-cha.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0066-svcrpc-fix-double-free-on-shutdown-of-nfsd-after-cha.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From d3c9b9c72a382b9a4b8516e80896c278611b4f8a Mon Sep 17 00:00:00 2001 | 1 | From 184eee2d8b585d5e2a0ec3f2c50f682e91ef769a Mon Sep 17 00:00:00 2001 |
2 | From: "J. Bruce Fields" <bfields@redhat.com> | 2 | From: "J. Bruce Fields" <bfields@redhat.com> |
3 | Date: Thu, 22 Dec 2011 18:22:49 -0700 | 3 | Date: Thu, 22 Dec 2011 18:22:49 -0700 |
4 | Subject: [PATCH 066/130] svcrpc: fix double-free on shutdown of nfsd after | 4 | Subject: [PATCH 066/129] svcrpc: fix double-free on shutdown of nfsd after |
5 | changing pool mode | 5 | changing pool mode |
6 | 6 | ||
7 | commit 61c8504c428edcebf23b97775a129c5b393a302b upstream. | 7 | commit 61c8504c428edcebf23b97775a129c5b393a302b upstream. |
@@ -56,5 +56,5 @@ index 6e03888..5443ffd 100644 | |||
56 | } | 56 | } |
57 | 57 | ||
58 | -- | 58 | -- |
59 | 1.7.9.4 | 59 | 1.7.9.5 |
60 | 60 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0067-svcrpc-destroy-server-sockets-all-at-once.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0067-svcrpc-destroy-server-sockets-all-at-once.patch index ab58b1da..23264cae 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0067-svcrpc-destroy-server-sockets-all-at-once.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0067-svcrpc-destroy-server-sockets-all-at-once.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From d6eeab4595a510bd2e02a2e3055e02e9a70229de Mon Sep 17 00:00:00 2001 | 1 | From 7bbbb974406d83275664903d43b9e9bf4b99c131 Mon Sep 17 00:00:00 2001 |
2 | From: "J. Bruce Fields" <bfields@redhat.com> | 2 | From: "J. Bruce Fields" <bfields@redhat.com> |
3 | Date: Tue, 29 Nov 2011 11:35:35 -0500 | 3 | Date: Tue, 29 Nov 2011 11:35:35 -0500 |
4 | Subject: [PATCH 067/130] svcrpc: destroy server sockets all at once | 4 | Subject: [PATCH 067/129] svcrpc: destroy server sockets all at once |
5 | 5 | ||
6 | commit 2fefb8a09e7ed251ae8996e0c69066e74c5aa560 upstream. | 6 | commit 2fefb8a09e7ed251ae8996e0c69066e74c5aa560 upstream. |
7 | 7 | ||
@@ -81,5 +81,5 @@ index 447cd0e..dcdc8df 100644 | |||
81 | * Handle defer and revisit of requests | 81 | * Handle defer and revisit of requests |
82 | */ | 82 | */ |
83 | -- | 83 | -- |
84 | 1.7.9.4 | 84 | 1.7.9.5 |
85 | 85 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0068-svcrpc-avoid-memory-corruption-on-pool-shutdown.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0068-svcrpc-avoid-memory-corruption-on-pool-shutdown.patch index f66761f6..494d9098 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0068-svcrpc-avoid-memory-corruption-on-pool-shutdown.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0068-svcrpc-avoid-memory-corruption-on-pool-shutdown.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From a8f0e6b90652d17d0c024d07c2b2bebe5193fc38 Mon Sep 17 00:00:00 2001 | 1 | From 5faa65a4101dc292e7d43c525e87f4f2acae40e3 Mon Sep 17 00:00:00 2001 |
2 | From: "J. Bruce Fields" <bfields@redhat.com> | 2 | From: "J. Bruce Fields" <bfields@redhat.com> |
3 | Date: Tue, 29 Nov 2011 17:00:26 -0500 | 3 | Date: Tue, 29 Nov 2011 17:00:26 -0500 |
4 | Subject: [PATCH 068/130] svcrpc: avoid memory-corruption on pool shutdown | 4 | Subject: [PATCH 068/129] svcrpc: avoid memory-corruption on pool shutdown |
5 | 5 | ||
6 | commit b4f36f88b3ee7cf26bf0be84e6c7fc15f84dcb71 upstream. | 6 | commit b4f36f88b3ee7cf26bf0be84e6c7fc15f84dcb71 upstream. |
7 | 7 | ||
@@ -152,5 +152,5 @@ index dcdc8df..9ed2cd0 100644 | |||
152 | 152 | ||
153 | /* | 153 | /* |
154 | -- | 154 | -- |
155 | 1.7.9.4 | 155 | 1.7.9.5 |
156 | 156 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0069-nfsd4-fix-lockowner-matching.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0069-nfsd4-fix-lockowner-matching.patch index 47afe62e..06f300bf 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0069-nfsd4-fix-lockowner-matching.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0069-nfsd4-fix-lockowner-matching.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From f106681ab48d6ab554c724d829c7440ba7b02385 Mon Sep 17 00:00:00 2001 | 1 | From 041400912607efd62cf9aa6ad4e5ad6baf957f1a Mon Sep 17 00:00:00 2001 |
2 | From: "J. Bruce Fields" <bfields@redhat.com> | 2 | From: "J. Bruce Fields" <bfields@redhat.com> |
3 | Date: Mon, 7 Nov 2011 16:37:57 -0500 | 3 | Date: Mon, 7 Nov 2011 16:37:57 -0500 |
4 | Subject: [PATCH 069/130] nfsd4: fix lockowner matching | 4 | Subject: [PATCH 069/129] nfsd4: fix lockowner matching |
5 | 5 | ||
6 | commit b93d87c19821ba7d3ee11557403d782e541071ad upstream. | 6 | commit b93d87c19821ba7d3ee11557403d782e541071ad upstream. |
7 | 7 | ||
@@ -55,5 +55,5 @@ index 47e94e3..5abced7 100644 | |||
55 | return NULL; | 55 | return NULL; |
56 | } | 56 | } |
57 | -- | 57 | -- |
58 | 1.7.9.4 | 58 | 1.7.9.5 |
59 | 59 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0070-nfsd-Fix-oops-when-parsing-a-0-length-export.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0070-nfsd-Fix-oops-when-parsing-a-0-length-export.patch index 7e39e919..42f3853f 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0070-nfsd-Fix-oops-when-parsing-a-0-length-export.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0070-nfsd-Fix-oops-when-parsing-a-0-length-export.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 5e9cbf662652df0e31bfe68d1e490b59946903aa Mon Sep 17 00:00:00 2001 | 1 | From 57a7686869f3ca7dfb8694583c88b5dfd510e4f6 Mon Sep 17 00:00:00 2001 |
2 | From: Sasha Levin <levinsasha928@gmail.com> | 2 | From: Sasha Levin <levinsasha928@gmail.com> |
3 | Date: Fri, 18 Nov 2011 12:14:49 +0200 | 3 | Date: Fri, 18 Nov 2011 12:14:49 +0200 |
4 | Subject: [PATCH 070/130] nfsd: Fix oops when parsing a 0 length export | 4 | Subject: [PATCH 070/129] nfsd: Fix oops when parsing a 0 length export |
5 | 5 | ||
6 | commit b2ea70afade7080360ac55c4e64ff7a5fafdb67b upstream. | 6 | commit b2ea70afade7080360ac55c4e64ff7a5fafdb67b upstream. |
7 | 7 | ||
@@ -78,5 +78,5 @@ index 62f3b90..5f312ab 100644 | |||
78 | mesg[mlen-1] = 0; | 78 | mesg[mlen-1] = 0; |
79 | 79 | ||
80 | -- | 80 | -- |
81 | 1.7.9.4 | 81 | 1.7.9.5 |
82 | 82 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0071-fsnotify-don-t-BUG-in-fsnotify_destroy_mark.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0071-fsnotify-don-t-BUG-in-fsnotify_destroy_mark.patch index 77dc9814..b3204672 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0071-fsnotify-don-t-BUG-in-fsnotify_destroy_mark.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0071-fsnotify-don-t-BUG-in-fsnotify_destroy_mark.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 02b345f49fe190f76c4191d6f189ce6ba1c86a1f Mon Sep 17 00:00:00 2001 | 1 | From 25778654573b3763a5f34e694b17ec9ff43fb3bb Mon Sep 17 00:00:00 2001 |
2 | From: Miklos Szeredi <mszeredi@suse.cz> | 2 | From: Miklos Szeredi <mszeredi@suse.cz> |
3 | Date: Thu, 12 Jan 2012 17:59:46 +0100 | 3 | Date: Thu, 12 Jan 2012 17:59:46 +0100 |
4 | Subject: [PATCH 071/130] fsnotify: don't BUG in fsnotify_destroy_mark() | 4 | Subject: [PATCH 071/129] fsnotify: don't BUG in fsnotify_destroy_mark() |
5 | 5 | ||
6 | commit fed474857efbed79cd390d0aee224231ca718f63 upstream. | 6 | commit fed474857efbed79cd390d0aee224231ca718f63 upstream. |
7 | 7 | ||
@@ -57,5 +57,5 @@ index e14587d..f104d56 100644 | |||
57 | * this mark was simultaneously being freed by inode. If that's the | 57 | * this mark was simultaneously being freed by inode. If that's the |
58 | * case, we finish freeing the group here. | 58 | * case, we finish freeing the group here. |
59 | -- | 59 | -- |
60 | 1.7.9.4 | 60 | 1.7.9.5 |
61 | 61 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0072-x86-UV-Update-Boot-messages-for-SGI-UV2-platform.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0072-x86-UV-Update-Boot-messages-for-SGI-UV2-platform.patch index 80e9a737..fc5632bb 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0072-x86-UV-Update-Boot-messages-for-SGI-UV2-platform.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0072-x86-UV-Update-Boot-messages-for-SGI-UV2-platform.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From bf48d4506f72e6b2d8d6bd950aa5d32349f67d1d Mon Sep 17 00:00:00 2001 | 1 | From 76df9b14b1edf95a3f1194c0b08547e50931fefd Mon Sep 17 00:00:00 2001 |
2 | From: Jack Steiner <steiner@sgi.com> | 2 | From: Jack Steiner <steiner@sgi.com> |
3 | Date: Fri, 6 Jan 2012 13:19:00 -0600 | 3 | Date: Fri, 6 Jan 2012 13:19:00 -0600 |
4 | Subject: [PATCH 072/130] x86, UV: Update Boot messages for SGI UV2 platform | 4 | Subject: [PATCH 072/129] x86, UV: Update Boot messages for SGI UV2 platform |
5 | 5 | ||
6 | commit da517a08ac5913cd80ce3507cddd00f2a091b13c upstream. | 6 | commit da517a08ac5913cd80ce3507cddd00f2a091b13c upstream. |
7 | 7 | ||
@@ -40,5 +40,5 @@ index 9d59bba..79b05b8 100644 | |||
40 | bytes = sizeof(struct uv_blade_info) * uv_num_possible_blades(); | 40 | bytes = sizeof(struct uv_blade_info) * uv_num_possible_blades(); |
41 | uv_blade_info = kzalloc(bytes, GFP_KERNEL); | 41 | uv_blade_info = kzalloc(bytes, GFP_KERNEL); |
42 | -- | 42 | -- |
43 | 1.7.9.4 | 43 | 1.7.9.5 |
44 | 44 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0073-recordmcount-Fix-handling-of-elf64-big-endian-object.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0073-recordmcount-Fix-handling-of-elf64-big-endian-object.patch index f919b971..06552c01 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0073-recordmcount-Fix-handling-of-elf64-big-endian-object.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0073-recordmcount-Fix-handling-of-elf64-big-endian-object.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 44ee897aa3824a1e070fc8b307ece4d3e03fb1c6 Mon Sep 17 00:00:00 2001 | 1 | From 4b493a169e4e0955d63015a30910a15d4d2cefed Mon Sep 17 00:00:00 2001 |
2 | From: David Daney <david.daney@cavium.com> | 2 | From: David Daney <david.daney@cavium.com> |
3 | Date: Mon, 19 Dec 2011 17:42:42 -0800 | 3 | Date: Mon, 19 Dec 2011 17:42:42 -0800 |
4 | Subject: [PATCH 073/130] recordmcount: Fix handling of elf64 big-endian | 4 | Subject: [PATCH 073/129] recordmcount: Fix handling of elf64 big-endian |
5 | objects. | 5 | objects. |
6 | 6 | ||
7 | commit 2e885057b7f75035f0b85e02f737891482815a81 upstream. | 7 | commit 2e885057b7f75035f0b85e02f737891482815a81 upstream. |
@@ -42,5 +42,5 @@ index f40a6af6..54e35c1 100644 | |||
42 | return txtname; | 42 | return txtname; |
43 | } | 43 | } |
44 | -- | 44 | -- |
45 | 1.7.9.4 | 45 | 1.7.9.5 |
46 | 46 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0074-uvcvideo-Fix-integer-overflow-in-uvc_ioctl_ctrl_map.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0074-uvcvideo-Fix-integer-overflow-in-uvc_ioctl_ctrl_map.patch index 6692b99a..d9a8f19b 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0074-uvcvideo-Fix-integer-overflow-in-uvc_ioctl_ctrl_map.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0074-uvcvideo-Fix-integer-overflow-in-uvc_ioctl_ctrl_map.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 237564961047194a9d952292197ccc794264cab7 Mon Sep 17 00:00:00 2001 | 1 | From ea50d13fefca15eb7d541f1830b2361943090063 Mon Sep 17 00:00:00 2001 |
2 | From: Haogang Chen <haogangchen@gmail.com> | 2 | From: Haogang Chen <haogangchen@gmail.com> |
3 | Date: Tue, 29 Nov 2011 18:32:25 -0300 | 3 | Date: Tue, 29 Nov 2011 18:32:25 -0300 |
4 | Subject: [PATCH 074/130] uvcvideo: Fix integer overflow in | 4 | Subject: [PATCH 074/129] uvcvideo: Fix integer overflow in |
5 | uvc_ioctl_ctrl_map() | 5 | uvc_ioctl_ctrl_map() |
6 | 6 | ||
7 | commit 806e23e95f94a27ee445022d724060b9b45cb64a upstream. | 7 | commit 806e23e95f94a27ee445022d724060b9b45cb64a upstream. |
@@ -58,5 +58,5 @@ index 4c1392e..bc446ba 100644 | |||
58 | /* Devices quirks */ | 58 | /* Devices quirks */ |
59 | #define UVC_QUIRK_STATUS_INTERVAL 0x00000001 | 59 | #define UVC_QUIRK_STATUS_INTERVAL 0x00000001 |
60 | -- | 60 | -- |
61 | 1.7.9.4 | 61 | 1.7.9.5 |
62 | 62 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0075-dcache-use-a-dispose-list-in-select_parent.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0075-dcache-use-a-dispose-list-in-select_parent.patch index 4905db23..9ab9f3dc 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0075-dcache-use-a-dispose-list-in-select_parent.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0075-dcache-use-a-dispose-list-in-select_parent.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 396e27ebad49960c3fc3871b5d3204433c68228a Mon Sep 17 00:00:00 2001 | 1 | From 4289e10c1a424c39e50bb4c44447da025fdf37b9 Mon Sep 17 00:00:00 2001 |
2 | From: Dave Chinner <david@fromorbit.com> | 2 | From: Dave Chinner <david@fromorbit.com> |
3 | Date: Tue, 23 Aug 2011 18:56:24 +1000 | 3 | Date: Tue, 23 Aug 2011 18:56:24 +1000 |
4 | Subject: [PATCH 075/130] dcache: use a dispose list in select_parent | 4 | Subject: [PATCH 075/129] dcache: use a dispose list in select_parent |
5 | 5 | ||
6 | commit b48f03b319ba78f3abf9a7044d1f436d8d90f4f9 upstream. | 6 | commit b48f03b319ba78f3abf9a7044d1f436d8d90f4f9 upstream. |
7 | 7 | ||
@@ -168,5 +168,5 @@ index 89509b5..108116e 100644 | |||
168 | EXPORT_SYMBOL(shrink_dcache_parent); | 168 | EXPORT_SYMBOL(shrink_dcache_parent); |
169 | 169 | ||
170 | -- | 170 | -- |
171 | 1.7.9.4 | 171 | 1.7.9.5 |
172 | 172 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0076-fix-shrink_dcache_parent-livelock.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0076-fix-shrink_dcache_parent-livelock.patch index 1f4dc36a..7d33d3cb 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0076-fix-shrink_dcache_parent-livelock.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0076-fix-shrink_dcache_parent-livelock.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 6eab425273195281f84409f2d6dcc004b528d42c Mon Sep 17 00:00:00 2001 | 1 | From 72a350429f61098d46984c13e8da293ec7a8ffe4 Mon Sep 17 00:00:00 2001 |
2 | From: Miklos Szeredi <miklos@szeredi.hu> | 2 | From: Miklos Szeredi <miklos@szeredi.hu> |
3 | Date: Tue, 10 Jan 2012 18:22:25 +0100 | 3 | Date: Tue, 10 Jan 2012 18:22:25 +0100 |
4 | Subject: [PATCH 076/130] fix shrink_dcache_parent() livelock | 4 | Subject: [PATCH 076/129] fix shrink_dcache_parent() livelock |
5 | 5 | ||
6 | commit eaf5f9073533cde21c7121c136f1c3f072d9cf59 upstream. | 6 | commit eaf5f9073533cde21c7121c136f1c3f072d9cf59 upstream. |
7 | 7 | ||
@@ -126,5 +126,5 @@ index ed9f74f..4eb8c80 100644 | |||
126 | #define DCACHE_NFSFS_RENAMED 0x1000 | 126 | #define DCACHE_NFSFS_RENAMED 0x1000 |
127 | /* this dentry has been "silly renamed" and has to be deleted on the last | 127 | /* this dentry has been "silly renamed" and has to be deleted on the last |
128 | -- | 128 | -- |
129 | 1.7.9.4 | 129 | 1.7.9.5 |
130 | 130 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0077-pnfsblock-acquire-im_lock-in-_preload_range.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0077-pnfsblock-acquire-im_lock-in-_preload_range.patch index 03f3cfdd..50c770c6 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0077-pnfsblock-acquire-im_lock-in-_preload_range.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0077-pnfsblock-acquire-im_lock-in-_preload_range.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From d09a2f22bfced52dcccd53ccc62d2cd5d9f194b7 Mon Sep 17 00:00:00 2001 | 1 | From ff2123e28998f18ebfddf17f1babbc0db77e9857 Mon Sep 17 00:00:00 2001 |
2 | From: Peng Tao <bergwolf@gmail.com> | 2 | From: Peng Tao <bergwolf@gmail.com> |
3 | Date: Thu, 12 Jan 2012 23:18:41 +0800 | 3 | Date: Thu, 12 Jan 2012 23:18:41 +0800 |
4 | Subject: [PATCH 077/130] pnfsblock: acquire im_lock in _preload_range | 4 | Subject: [PATCH 077/129] pnfsblock: acquire im_lock in _preload_range |
5 | 5 | ||
6 | commit 39e567ae36fe03c2b446e1b83ee3d39bea08f90b upstream. | 6 | commit 39e567ae36fe03c2b446e1b83ee3d39bea08f90b upstream. |
7 | 7 | ||
@@ -60,5 +60,5 @@ index 19fa7b0..c69682a 100644 | |||
60 | 60 | ||
61 | spin_lock(&marks->im_lock); | 61 | spin_lock(&marks->im_lock); |
62 | -- | 62 | -- |
63 | 1.7.9.4 | 63 | 1.7.9.5 |
64 | 64 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0078-pnfsblock-don-t-spinlock-when-freeing-block_dev.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0078-pnfsblock-don-t-spinlock-when-freeing-block_dev.patch index 5896cb3a..bc8b40dd 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0078-pnfsblock-don-t-spinlock-when-freeing-block_dev.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0078-pnfsblock-don-t-spinlock-when-freeing-block_dev.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 0a4609957e5bbe4572cf9ace9e5011281295f296 Mon Sep 17 00:00:00 2001 | 1 | From c483f16efb181ee2384aa9d5672ebebfc714ab1d Mon Sep 17 00:00:00 2001 |
2 | From: Peng Tao <bergwolf@gmail.com> | 2 | From: Peng Tao <bergwolf@gmail.com> |
3 | Date: Thu, 12 Jan 2012 23:18:47 +0800 | 3 | Date: Thu, 12 Jan 2012 23:18:47 +0800 |
4 | Subject: [PATCH 078/130] pnfsblock: don't spinlock when freeing block_dev | 4 | Subject: [PATCH 078/129] pnfsblock: don't spinlock when freeing block_dev |
5 | 5 | ||
6 | commit 93a3844ee0f843b05a1df4b52e1a19ff26b98d24 upstream. | 6 | commit 93a3844ee0f843b05a1df4b52e1a19ff26b98d24 upstream. |
7 | 7 | ||
@@ -42,5 +42,5 @@ index 281ae95..ce8129d 100644 | |||
42 | } | 42 | } |
43 | } | 43 | } |
44 | -- | 44 | -- |
45 | 1.7.9.4 | 45 | 1.7.9.5 |
46 | 46 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0079-pnfsblock-limit-bio-page-count.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0079-pnfsblock-limit-bio-page-count.patch index 7adc892a..f003ff07 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0079-pnfsblock-limit-bio-page-count.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0079-pnfsblock-limit-bio-page-count.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From c4fcaffd613b46fc4257023138c60d8f164bf584 Mon Sep 17 00:00:00 2001 | 1 | From a9de14f6624613210b273a24046142495f745038 Mon Sep 17 00:00:00 2001 |
2 | From: Peng Tao <bergwolf@gmail.com> | 2 | From: Peng Tao <bergwolf@gmail.com> |
3 | Date: Thu, 12 Jan 2012 23:18:48 +0800 | 3 | Date: Thu, 12 Jan 2012 23:18:48 +0800 |
4 | Subject: [PATCH 079/130] pnfsblock: limit bio page count | 4 | Subject: [PATCH 079/129] pnfsblock: limit bio page count |
5 | 5 | ||
6 | commit 74a6eeb44ca6174d9cc93b9b8b4d58211c57bc80 upstream. | 6 | commit 74a6eeb44ca6174d9cc93b9b8b4d58211c57bc80 upstream. |
7 | 7 | ||
@@ -47,5 +47,5 @@ index ce8129d..3db6b82 100644 | |||
47 | } | 47 | } |
48 | 48 | ||
49 | -- | 49 | -- |
50 | 1.7.9.4 | 50 | 1.7.9.5 |
51 | 51 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0080-mac80211-revert-on-channel-work-optimisations.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0080-mac80211-revert-on-channel-work-optimisations.patch index 7437cf4b..77b753d0 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0080-mac80211-revert-on-channel-work-optimisations.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0080-mac80211-revert-on-channel-work-optimisations.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From f3c55c9f0c6182e6a455ae406406e280ac34544c Mon Sep 17 00:00:00 2001 | 1 | From 785fae0af79dd35416a44469930c2cbe87ff2c48 Mon Sep 17 00:00:00 2001 |
2 | From: Johannes Berg <johannes.berg@intel.com> | 2 | From: Johannes Berg <johannes.berg@intel.com> |
3 | Date: Tue, 29 Nov 2011 10:20:02 +0100 | 3 | Date: Tue, 29 Nov 2011 10:20:02 +0100 |
4 | Subject: [PATCH 080/130] mac80211: revert on-channel work optimisations | 4 | Subject: [PATCH 080/129] mac80211: revert on-channel work optimisations |
5 | 5 | ||
6 | commit e76aadc572288a158ae18ae1c10fe395c7bca066 upstream. | 6 | commit e76aadc572288a158ae18ae1c10fe395c7bca066 upstream. |
7 | 7 | ||
@@ -631,5 +631,5 @@ index 6c53b6d..99165ef 100644 | |||
631 | /* give connection some time to breathe */ | 631 | /* give connection some time to breathe */ |
632 | run_again(local, jiffies + HZ/2); | 632 | run_again(local, jiffies + HZ/2); |
633 | -- | 633 | -- |
634 | 1.7.9.4 | 634 | 1.7.9.5 |
635 | 635 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0081-HID-hid-multitouch-add-another-eGalax-id.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0081-HID-hid-multitouch-add-another-eGalax-id.patch index a03602e0..5db3fea1 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0081-HID-hid-multitouch-add-another-eGalax-id.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0081-HID-hid-multitouch-add-another-eGalax-id.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 461b534b6a695034c7554b2bdf163b2ecb73b80d Mon Sep 17 00:00:00 2001 | 1 | From 15efaf9be89966a57b4d147511de686976e4a4eb Mon Sep 17 00:00:00 2001 |
2 | From: Chris Bagwell <chris@cnpbagwell.com> | 2 | From: Chris Bagwell <chris@cnpbagwell.com> |
3 | Date: Wed, 23 Nov 2011 10:54:27 +0100 | 3 | Date: Wed, 23 Nov 2011 10:54:27 +0100 |
4 | Subject: [PATCH 081/130] HID: hid-multitouch - add another eGalax id | 4 | Subject: [PATCH 081/129] HID: hid-multitouch - add another eGalax id |
5 | 5 | ||
6 | commit 1fd8f047490dd0ec4e4db710fcbc1bd4798d944c upstream. | 6 | commit 1fd8f047490dd0ec4e4db710fcbc1bd4798d944c upstream. |
7 | 7 | ||
@@ -56,5 +56,5 @@ index f1c909f..a59d939 100644 | |||
56 | /* Elo TouchSystems IntelliTouch Plus panel */ | 56 | /* Elo TouchSystems IntelliTouch Plus panel */ |
57 | { .driver_data = MT_CLS_DUAL_NSMU_CONTACTID, | 57 | { .driver_data = MT_CLS_DUAL_NSMU_CONTACTID, |
58 | -- | 58 | -- |
59 | 1.7.9.4 | 59 | 1.7.9.5 |
60 | 60 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0082-HID-multitouch-cleanup-with-eGalax-PID-definitions.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0082-HID-multitouch-cleanup-with-eGalax-PID-definitions.patch index 1b523b8e..807223b6 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0082-HID-multitouch-cleanup-with-eGalax-PID-definitions.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0082-HID-multitouch-cleanup-with-eGalax-PID-definitions.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From c5c78207f8bd4e2613d6c132d92d53e7de9f2cba Mon Sep 17 00:00:00 2001 | 1 | From 13e475d4826aa0be579632fd2a7473aee213e82b Mon Sep 17 00:00:00 2001 |
2 | From: Benjamin Tissoires <benjamin.tissoires@enac.fr> | 2 | From: Benjamin Tissoires <benjamin.tissoires@enac.fr> |
3 | Date: Wed, 23 Nov 2011 10:54:31 +0100 | 3 | Date: Wed, 23 Nov 2011 10:54:31 +0100 |
4 | Subject: [PATCH 082/130] HID: multitouch: cleanup with eGalax PID definitions | 4 | Subject: [PATCH 082/129] HID: multitouch: cleanup with eGalax PID definitions |
5 | 5 | ||
6 | commit e36f690b37945e0a9bb1554e1546eeec93f7d1f6 upstream. | 6 | commit e36f690b37945e0a9bb1554e1546eeec93f7d1f6 upstream. |
7 | 7 | ||
@@ -108,5 +108,5 @@ index a59d939..815bd22 100644 | |||
108 | /* Elo TouchSystems IntelliTouch Plus panel */ | 108 | /* Elo TouchSystems IntelliTouch Plus panel */ |
109 | { .driver_data = MT_CLS_DUAL_NSMU_CONTACTID, | 109 | { .driver_data = MT_CLS_DUAL_NSMU_CONTACTID, |
110 | -- | 110 | -- |
111 | 1.7.9.4 | 111 | 1.7.9.5 |
112 | 112 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0083-HID-multitouch-Add-egalax-ID-for-Acer-Iconia-W500.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0083-HID-multitouch-Add-egalax-ID-for-Acer-Iconia-W500.patch index 7479c06a..f038705d 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0083-HID-multitouch-Add-egalax-ID-for-Acer-Iconia-W500.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0083-HID-multitouch-Add-egalax-ID-for-Acer-Iconia-W500.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From d920b5798c0d85998e5dae9304bef77c59320f12 Mon Sep 17 00:00:00 2001 | 1 | From d92a1f3e6dbdf628dec0f2a37f3920f89ef304fa Mon Sep 17 00:00:00 2001 |
2 | From: Marek Vasut <marek.vasut@gmail.com> | 2 | From: Marek Vasut <marek.vasut@gmail.com> |
3 | Date: Wed, 23 Nov 2011 10:54:32 +0100 | 3 | Date: Wed, 23 Nov 2011 10:54:32 +0100 |
4 | Subject: [PATCH 083/130] HID: multitouch: Add egalax ID for Acer Iconia W500 | 4 | Subject: [PATCH 083/129] HID: multitouch: Add egalax ID for Acer Iconia W500 |
5 | 5 | ||
6 | commit bb9ff21072043634f147c05ac65dbf8185d4af6d upstream. | 6 | commit bb9ff21072043634f147c05ac65dbf8185d4af6d upstream. |
7 | 7 | ||
@@ -58,5 +58,5 @@ index 815bd22..c77d495 100644 | |||
58 | 58 | ||
59 | /* Elo TouchSystems IntelliTouch Plus panel */ | 59 | /* Elo TouchSystems IntelliTouch Plus panel */ |
60 | -- | 60 | -- |
61 | 1.7.9.4 | 61 | 1.7.9.5 |
62 | 62 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0084-HID-multitouch-add-support-for-the-MSI-Windpad-110W.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0084-HID-multitouch-add-support-for-the-MSI-Windpad-110W.patch index 8494df7e..94eb6c36 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0084-HID-multitouch-add-support-for-the-MSI-Windpad-110W.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0084-HID-multitouch-add-support-for-the-MSI-Windpad-110W.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 9bd4b771e9f598f5cebad5146585eb30ececf118 Mon Sep 17 00:00:00 2001 | 1 | From a68c39aa3ae77996cb2f2cefe21ad1e62e1767a5 Mon Sep 17 00:00:00 2001 |
2 | From: Benjamin Tissoires <benjamin.tissoires@enac.fr> | 2 | From: Benjamin Tissoires <benjamin.tissoires@enac.fr> |
3 | Date: Wed, 23 Nov 2011 10:54:33 +0100 | 3 | Date: Wed, 23 Nov 2011 10:54:33 +0100 |
4 | Subject: [PATCH 084/130] HID: multitouch: add support for the MSI Windpad | 4 | Subject: [PATCH 084/129] HID: multitouch: add support for the MSI Windpad |
5 | 110W | 5 | 110W |
6 | 6 | ||
7 | commit 66f06127f34ad6e8a1b24a2c03144b694d19f99f upstream. | 7 | commit 66f06127f34ad6e8a1b24a2c03144b694d19f99f upstream. |
@@ -45,5 +45,5 @@ index c77d495..6f6b1d9 100644 | |||
45 | { .driver_data = MT_CLS_EGALAX, | 45 | { .driver_data = MT_CLS_EGALAX, |
46 | HID_USB_DEVICE(USB_VENDOR_ID_DWAV, | 46 | HID_USB_DEVICE(USB_VENDOR_ID_DWAV, |
47 | -- | 47 | -- |
48 | 1.7.9.4 | 48 | 1.7.9.5 |
49 | 49 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0085-HID-hid-multitouch-add-support-for-new-Hanvon-panels.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0085-HID-hid-multitouch-add-support-for-new-Hanvon-panels.patch index ea172f6e..f04d3eea 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0085-HID-hid-multitouch-add-support-for-new-Hanvon-panels.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0085-HID-hid-multitouch-add-support-for-new-Hanvon-panels.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 76fe9c37d75b5754a02958dfaa415b24e88e79f6 Mon Sep 17 00:00:00 2001 | 1 | From 4ed2fc990faee86390129e45efc3a3538bbac92b Mon Sep 17 00:00:00 2001 |
2 | From: Benjamin Tissoires <benjamin.tissoires@enac.fr> | 2 | From: Benjamin Tissoires <benjamin.tissoires@enac.fr> |
3 | Date: Tue, 29 Nov 2011 13:13:12 +0100 | 3 | Date: Tue, 29 Nov 2011 13:13:12 +0100 |
4 | Subject: [PATCH 085/130] HID: hid-multitouch: add support for new Hanvon | 4 | Subject: [PATCH 085/129] HID: hid-multitouch: add support for new Hanvon |
5 | panels | 5 | panels |
6 | 6 | ||
7 | commit 545803651da8dde248eeb8ce3ed1e547e9e4ac0a upstream. | 7 | commit 545803651da8dde248eeb8ce3ed1e547e9e4ac0a upstream. |
@@ -59,5 +59,5 @@ index 6f6b1d9..ea20c8e 100644 | |||
59 | { .driver_data = MT_CLS_SERIAL, | 59 | { .driver_data = MT_CLS_SERIAL, |
60 | HID_USB_DEVICE(USB_VENDOR_ID_IDEACOM, | 60 | HID_USB_DEVICE(USB_VENDOR_ID_IDEACOM, |
61 | -- | 61 | -- |
62 | 1.7.9.4 | 62 | 1.7.9.5 |
63 | 63 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0086-HID-multitouch-add-support-of-Atmel-multitouch-panel.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0086-HID-multitouch-add-support-of-Atmel-multitouch-panel.patch index a4613258..4298a32c 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0086-HID-multitouch-add-support-of-Atmel-multitouch-panel.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0086-HID-multitouch-add-support-of-Atmel-multitouch-panel.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 865db49262c7496029b756c88a64a274d22dcf08 Mon Sep 17 00:00:00 2001 | 1 | From e554f29a63f8eae08e42cb59b1bc715fbf91b340 Mon Sep 17 00:00:00 2001 |
2 | From: Benjamin Tissoires <benjamin.tissoires@gmail.com> | 2 | From: Benjamin Tissoires <benjamin.tissoires@gmail.com> |
3 | Date: Fri, 23 Dec 2011 15:40:59 +0100 | 3 | Date: Fri, 23 Dec 2011 15:40:59 +0100 |
4 | Subject: [PATCH 086/130] HID: multitouch: add support of Atmel multitouch | 4 | Subject: [PATCH 086/129] HID: multitouch: add support of Atmel multitouch |
5 | panels | 5 | panels |
6 | 6 | ||
7 | commit b105712469d957cf1ab223c1ea72b7ba88edb926 upstream. | 7 | commit b105712469d957cf1ab223c1ea72b7ba88edb926 upstream. |
@@ -59,5 +59,5 @@ index ea20c8e..7f83024 100644 | |||
59 | { .driver_data = MT_CLS_DUAL_INRANGE_CONTACTNUMBER, | 59 | { .driver_data = MT_CLS_DUAL_INRANGE_CONTACTNUMBER, |
60 | HID_USB_DEVICE(USB_VENDOR_ID_CANDO, | 60 | HID_USB_DEVICE(USB_VENDOR_ID_CANDO, |
61 | -- | 61 | -- |
62 | 1.7.9.4 | 62 | 1.7.9.5 |
63 | 63 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0087-HID-multitouch-add-support-for-3M-32.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0087-HID-multitouch-add-support-for-3M-32.patch index d0701b6b..f3afca55 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0087-HID-multitouch-add-support-for-3M-32.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0087-HID-multitouch-add-support-for-3M-32.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From a3e4bd3ab18fd8f60692869405d89513fa7caecc Mon Sep 17 00:00:00 2001 | 1 | From 40fd7506c85fcb799dedb54d4bce3118a56078cc Mon Sep 17 00:00:00 2001 |
2 | From: Benjamin Tissoires <benjamin.tissoires@gmail.com> | 2 | From: Benjamin Tissoires <benjamin.tissoires@gmail.com> |
3 | Date: Fri, 23 Dec 2011 15:41:00 +0100 | 3 | Date: Fri, 23 Dec 2011 15:41:00 +0100 |
4 | Subject: [PATCH 087/130] HID: multitouch: add support for 3M 32" | 4 | Subject: [PATCH 087/129] HID: multitouch: add support for 3M 32" |
5 | 5 | ||
6 | commit c4fad877cd0efb51d8180ae2eaa791c99c92051c upstream. | 6 | commit c4fad877cd0efb51d8180ae2eaa791c99c92051c upstream. |
7 | 7 | ||
@@ -41,5 +41,5 @@ index 7f83024..4a63dee 100644 | |||
41 | /* ActionStar panels */ | 41 | /* ActionStar panels */ |
42 | { .driver_data = MT_CLS_DEFAULT, | 42 | { .driver_data = MT_CLS_DEFAULT, |
43 | -- | 43 | -- |
44 | 1.7.9.4 | 44 | 1.7.9.5 |
45 | 45 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0088-HID-hid-multitouch-add-support-9-new-Xiroku-devices.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0088-HID-hid-multitouch-add-support-9-new-Xiroku-devices.patch index 666029c3..8d2bfef5 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0088-HID-hid-multitouch-add-support-9-new-Xiroku-devices.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0088-HID-hid-multitouch-add-support-9-new-Xiroku-devices.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 8b47318c07c10fa562d0e62a9d1b5d89d5338aa1 Mon Sep 17 00:00:00 2001 | 1 | From 7d63e2bd6f004a4c99c40f9768efe4fa3bef6d28 Mon Sep 17 00:00:00 2001 |
2 | From: Masatoshi Hoshikawa <hoshikawa@xiroku.com> | 2 | From: Masatoshi Hoshikawa <hoshikawa@xiroku.com> |
3 | Date: Thu, 5 Jan 2012 11:53:46 +0900 | 3 | Date: Thu, 5 Jan 2012 11:53:46 +0900 |
4 | Subject: [PATCH 088/130] HID: hid-multitouch: add support 9 new Xiroku | 4 | Subject: [PATCH 088/129] HID: hid-multitouch: add support 9 new Xiroku |
5 | devices | 5 | devices |
6 | 6 | ||
7 | commit 11576c6114c3b6505aea2e0c988bedb856a0e20c upstream. | 7 | commit 11576c6114c3b6505aea2e0c988bedb856a0e20c upstream. |
@@ -113,5 +113,5 @@ index 4a63dee..995fc4c 100644 | |||
113 | }; | 113 | }; |
114 | MODULE_DEVICE_TABLE(hid, mt_devices); | 114 | MODULE_DEVICE_TABLE(hid, mt_devices); |
115 | -- | 115 | -- |
116 | 1.7.9.4 | 116 | 1.7.9.5 |
117 | 117 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0089-fix-cputime-overflow-in-uptime_proc_show.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0089-fix-cputime-overflow-in-uptime_proc_show.patch index 1bd7ad2e..94a3da33 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0089-fix-cputime-overflow-in-uptime_proc_show.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0089-fix-cputime-overflow-in-uptime_proc_show.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 5f8cae871c99479c79aa493512b31ad830e8eaaa Mon Sep 17 00:00:00 2001 | 1 | From 36934c4efd11c4f65dd956b2a6649d99ccf5bd86 Mon Sep 17 00:00:00 2001 |
2 | From: Martin Schwidefsky <schwidefsky@de.ibm.com> | 2 | From: Martin Schwidefsky <schwidefsky@de.ibm.com> |
3 | Date: Thu, 15 Dec 2011 14:56:10 +0100 | 3 | Date: Thu, 15 Dec 2011 14:56:10 +0100 |
4 | Subject: [PATCH 089/130] fix cputime overflow in uptime_proc_show | 4 | Subject: [PATCH 089/129] fix cputime overflow in uptime_proc_show |
5 | 5 | ||
6 | commit c3e0ef9a298e028a82ada28101ccd5cf64d209ee upstream. | 6 | commit c3e0ef9a298e028a82ada28101ccd5cf64d209ee upstream. |
7 | 7 | ||
@@ -45,5 +45,5 @@ index 766b1d4..29166ec 100644 | |||
45 | (unsigned long) uptime.tv_sec, | 45 | (unsigned long) uptime.tv_sec, |
46 | (uptime.tv_nsec / (NSEC_PER_SEC / 100)), | 46 | (uptime.tv_nsec / (NSEC_PER_SEC / 100)), |
47 | -- | 47 | -- |
48 | 1.7.9.4 | 48 | 1.7.9.5 |
49 | 49 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0090-block-add-and-use-scsi_blk_cmd_ioctl.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0090-block-add-and-use-scsi_blk_cmd_ioctl.patch index 02ee9360..e9a2e707 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0090-block-add-and-use-scsi_blk_cmd_ioctl.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0090-block-add-and-use-scsi_blk_cmd_ioctl.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From fd9b7416ae26e584935f0a1fdf215fb318c54b07 Mon Sep 17 00:00:00 2001 | 1 | From 151de2f79ddb7f437ada87d5f204be82db004f9d Mon Sep 17 00:00:00 2001 |
2 | From: Paolo Bonzini <pbonzini@redhat.com> | 2 | From: Paolo Bonzini <pbonzini@redhat.com> |
3 | Date: Thu, 12 Jan 2012 16:01:27 +0100 | 3 | Date: Thu, 12 Jan 2012 16:01:27 +0100 |
4 | Subject: [PATCH 090/130] block: add and use scsi_blk_cmd_ioctl | 4 | Subject: [PATCH 090/129] block: add and use scsi_blk_cmd_ioctl |
5 | 5 | ||
6 | commit 577ebb374c78314ac4617242f509e2f5e7156649 upstream. | 6 | commit 577ebb374c78314ac4617242f509e2f5e7156649 upstream. |
7 | 7 | ||
@@ -162,5 +162,5 @@ index 94acd81..ca7b869 100644 | |||
162 | unsigned int, void __user *); | 162 | unsigned int, void __user *); |
163 | extern int sg_scsi_ioctl(struct request_queue *, struct gendisk *, fmode_t, | 163 | extern int sg_scsi_ioctl(struct request_queue *, struct gendisk *, fmode_t, |
164 | -- | 164 | -- |
165 | 1.7.9.4 | 165 | 1.7.9.5 |
166 | 166 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0091-block-fail-SCSI-passthrough-ioctls-on-partition-devi.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0091-block-fail-SCSI-passthrough-ioctls-on-partition-devi.patch index 96a4a599..1fa4e50c 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0091-block-fail-SCSI-passthrough-ioctls-on-partition-devi.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0091-block-fail-SCSI-passthrough-ioctls-on-partition-devi.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 5c9da4628ea28104cb0ec862b8564e413e7615db Mon Sep 17 00:00:00 2001 | 1 | From 8dbedb00985bf3ed9848b179a45bb399a733d311 Mon Sep 17 00:00:00 2001 |
2 | From: Paolo Bonzini <pbonzini@redhat.com> | 2 | From: Paolo Bonzini <pbonzini@redhat.com> |
3 | Date: Thu, 12 Jan 2012 16:01:28 +0100 | 3 | Date: Thu, 12 Jan 2012 16:01:28 +0100 |
4 | Subject: [PATCH 091/130] block: fail SCSI passthrough ioctls on partition | 4 | Subject: [PATCH 091/129] block: fail SCSI passthrough ioctls on partition |
5 | devices | 5 | devices |
6 | 6 | ||
7 | commit 0bfc96cb77224736dfa35c3c555d37b3646ef35e upstream. | 7 | commit 0bfc96cb77224736dfa35c3c555d37b3646ef35e upstream. |
@@ -162,5 +162,5 @@ index ca7b869..0ed1eb0 100644 | |||
162 | unsigned int, void __user *); | 162 | unsigned int, void __user *); |
163 | extern int scsi_cmd_ioctl(struct request_queue *, struct gendisk *, fmode_t, | 163 | extern int scsi_cmd_ioctl(struct request_queue *, struct gendisk *, fmode_t, |
164 | -- | 164 | -- |
165 | 1.7.9.4 | 165 | 1.7.9.5 |
166 | 166 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0092-dm-do-not-forward-ioctls-from-logical-volumes-to-the.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0092-dm-do-not-forward-ioctls-from-logical-volumes-to-the.patch index de870c20..044086f3 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0092-dm-do-not-forward-ioctls-from-logical-volumes-to-the.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0092-dm-do-not-forward-ioctls-from-logical-volumes-to-the.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 8b2ef9bc1880287a083605e630413a47e3a2f436 Mon Sep 17 00:00:00 2001 | 1 | From 3d35ea93b3f19f86a464814e7b59464ec3832e9c Mon Sep 17 00:00:00 2001 |
2 | From: Paolo Bonzini <pbonzini@redhat.com> | 2 | From: Paolo Bonzini <pbonzini@redhat.com> |
3 | Date: Thu, 12 Jan 2012 16:01:29 +0100 | 3 | Date: Thu, 12 Jan 2012 16:01:29 +0100 |
4 | Subject: [PATCH 092/130] dm: do not forward ioctls from logical volumes to | 4 | Subject: [PATCH 092/129] dm: do not forward ioctls from logical volumes to |
5 | the underlying device | 5 | the underlying device |
6 | 6 | ||
7 | commit ec8013beddd717d1740cfefb1a9b900deef85462 upstream. | 7 | commit ec8013beddd717d1740cfefb1a9b900deef85462 upstream. |
@@ -86,5 +86,5 @@ index 5e0090e..801d92d 100644 | |||
86 | } | 86 | } |
87 | 87 | ||
88 | -- | 88 | -- |
89 | 1.7.9.4 | 89 | 1.7.9.5 |
90 | 90 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0093-proc-clean-up-and-fix-proc-pid-mem-handling.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0093-proc-clean-up-and-fix-proc-pid-mem-handling.patch index 534e2e03..5c2c5661 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0093-proc-clean-up-and-fix-proc-pid-mem-handling.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0093-proc-clean-up-and-fix-proc-pid-mem-handling.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 7d09634d53fa1f102121d718ca837ebae0fdce18 Mon Sep 17 00:00:00 2001 | 1 | From b1eff256d4110a894a3a70a224d3581136645ada Mon Sep 17 00:00:00 2001 |
2 | From: Linus Torvalds <torvalds@linux-foundation.org> | 2 | From: Linus Torvalds <torvalds@linux-foundation.org> |
3 | Date: Tue, 17 Jan 2012 15:21:19 -0800 | 3 | Date: Tue, 17 Jan 2012 15:21:19 -0800 |
4 | Subject: [PATCH 093/130] proc: clean up and fix /proc/<pid>/mem handling | 4 | Subject: [PATCH 093/129] proc: clean up and fix /proc/<pid>/mem handling |
5 | MIME-Version: 1.0 | 5 | MIME-Version: 1.0 |
6 | Content-Type: text/plain; charset=UTF-8 | 6 | Content-Type: text/plain; charset=UTF-8 |
7 | Content-Transfer-Encoding: 8bit | 7 | Content-Transfer-Encoding: 8bit |
@@ -267,5 +267,5 @@ index 851ba3d..1fc1dca 100644 | |||
267 | 267 | ||
268 | static ssize_t environ_read(struct file *file, char __user *buf, | 268 | static ssize_t environ_read(struct file *file, char __user *buf, |
269 | -- | 269 | -- |
270 | 1.7.9.4 | 270 | 1.7.9.5 |
271 | 271 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0094-ALSA-HDA-Use-LPIB-position-fix-for-Macbook-Pro-7-1.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0094-ALSA-HDA-Use-LPIB-position-fix-for-Macbook-Pro-7-1.patch index a22e6a5e..92722cf2 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0094-ALSA-HDA-Use-LPIB-position-fix-for-Macbook-Pro-7-1.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0094-ALSA-HDA-Use-LPIB-position-fix-for-Macbook-Pro-7-1.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 718c5470bcef49ad7edc9674a4e96a222a2f4512 Mon Sep 17 00:00:00 2001 | 1 | From a8cd5ec584f74044ccca71a50312fac4e69f4d64 Mon Sep 17 00:00:00 2001 |
2 | From: David Henningsson <david.henningsson@canonical.com> | 2 | From: David Henningsson <david.henningsson@canonical.com> |
3 | Date: Thu, 12 Jan 2012 16:31:14 +0100 | 3 | Date: Thu, 12 Jan 2012 16:31:14 +0100 |
4 | Subject: [PATCH 094/130] ALSA: HDA: Use LPIB position fix for Macbook Pro 7,1 | 4 | Subject: [PATCH 094/129] ALSA: HDA: Use LPIB position fix for Macbook Pro 7,1 |
5 | 5 | ||
6 | commit b01de4fb40137fbda7530550ff0cd37171dafb0c upstream. | 6 | commit b01de4fb40137fbda7530550ff0cd37171dafb0c upstream. |
7 | 7 | ||
@@ -31,5 +31,5 @@ index c2f79e6..5b2b75b 100644 | |||
31 | SND_PCI_QUIRK(0x1458, 0xa022, "ga-ma770-ud3", POS_FIX_LPIB), | 31 | SND_PCI_QUIRK(0x1458, 0xa022, "ga-ma770-ud3", POS_FIX_LPIB), |
32 | SND_PCI_QUIRK(0x1462, 0x1002, "MSI Wind U115", POS_FIX_LPIB), | 32 | SND_PCI_QUIRK(0x1462, 0x1002, "MSI Wind U115", POS_FIX_LPIB), |
33 | -- | 33 | -- |
34 | 1.7.9.4 | 34 | 1.7.9.5 |
35 | 35 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0095-ALSA-virtuoso-Xonar-DS-fix-polarity-of-front-output.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0095-ALSA-virtuoso-Xonar-DS-fix-polarity-of-front-output.patch index 670db94b..5e1651fe 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0095-ALSA-virtuoso-Xonar-DS-fix-polarity-of-front-output.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0095-ALSA-virtuoso-Xonar-DS-fix-polarity-of-front-output.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 569face0953213dc1e6f92c6371d3246effc9404 Mon Sep 17 00:00:00 2001 | 1 | From 142a4939e76aa02d8e2d8338a63dabf59bc83f1b Mon Sep 17 00:00:00 2001 |
2 | From: Clemens Ladisch <clemens@ladisch.de> | 2 | From: Clemens Ladisch <clemens@ladisch.de> |
3 | Date: Sat, 14 Jan 2012 16:42:24 +0100 | 3 | Date: Sat, 14 Jan 2012 16:42:24 +0100 |
4 | Subject: [PATCH 095/130] ALSA: virtuoso: Xonar DS: fix polarity of front | 4 | Subject: [PATCH 095/129] ALSA: virtuoso: Xonar DS: fix polarity of front |
5 | output | 5 | output |
6 | 6 | ||
7 | commit f0e48b6bd4e407459715240cd241ddb6b89bdf81 upstream. | 7 | commit f0e48b6bd4e407459715240cd241ddb6b89bdf81 upstream. |
@@ -33,5 +33,5 @@ index 42d1ab1..915546a 100644 | |||
33 | WM8776_PL_LEFT_LEFT | WM8776_PL_RIGHT_RIGHT); | 33 | WM8776_PL_LEFT_LEFT | WM8776_PL_RIGHT_RIGHT); |
34 | wm8776_write(chip, WM8776_DACMUTE, chip->dac_mute ? WM8776_DMUTE : 0); | 34 | wm8776_write(chip, WM8776_DACMUTE, chip->dac_mute ? WM8776_DMUTE : 0); |
35 | -- | 35 | -- |
36 | 1.7.9.4 | 36 | 1.7.9.5 |
37 | 37 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0096-ALSA-HDA-Fix-internal-microphone-on-Dell-Studio-16-X.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0096-ALSA-HDA-Fix-internal-microphone-on-Dell-Studio-16-X.patch index 82d8935c..6bad4a43 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0096-ALSA-HDA-Fix-internal-microphone-on-Dell-Studio-16-X.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0096-ALSA-HDA-Fix-internal-microphone-on-Dell-Studio-16-X.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From d790354ebeffb41bfe1fb34572c258a7a5fdb475 Mon Sep 17 00:00:00 2001 | 1 | From c46905cc61a1b5ff0500d15d79ba8110283e6c58 Mon Sep 17 00:00:00 2001 |
2 | From: David Henningsson <david.henningsson@canonical.com> | 2 | From: David Henningsson <david.henningsson@canonical.com> |
3 | Date: Mon, 16 Jan 2012 10:52:20 +0100 | 3 | Date: Mon, 16 Jan 2012 10:52:20 +0100 |
4 | Subject: [PATCH 096/130] ALSA: HDA: Fix internal microphone on Dell Studio 16 | 4 | Subject: [PATCH 096/129] ALSA: HDA: Fix internal microphone on Dell Studio 16 |
5 | XPS 1645 | 5 | XPS 1645 |
6 | 6 | ||
7 | commit ffe535edb9a9c5b4d5fe03dfa3d89a1495580f1b upstream. | 7 | commit ffe535edb9a9c5b4d5fe03dfa3d89a1495580f1b upstream. |
@@ -32,5 +32,5 @@ index a87b260..f3c73a9 100644 | |||
32 | "Dell Studio 1558", STAC_DELL_M6_DMIC), | 32 | "Dell Studio 1558", STAC_DELL_M6_DMIC), |
33 | {} /* terminator */ | 33 | {} /* terminator */ |
34 | -- | 34 | -- |
35 | 1.7.9.4 | 35 | 1.7.9.5 |
36 | 36 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0097-TOMOYO-Accept-000-as-a-valid-character.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0097-TOMOYO-Accept-000-as-a-valid-character.patch index fba28aac..3393f768 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0097-TOMOYO-Accept-000-as-a-valid-character.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0097-TOMOYO-Accept-000-as-a-valid-character.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From b85512a847012899a22246572d01a7d223bd3222 Mon Sep 17 00:00:00 2001 | 1 | From df8b89ac669c66d219a762da1ba79151acce2bf1 Mon Sep 17 00:00:00 2001 |
2 | From: Tetsuo Handa <from-tomoyo-users-en@I-love.SAKURA.ne.jp> | 2 | From: Tetsuo Handa <from-tomoyo-users-en@I-love.SAKURA.ne.jp> |
3 | Date: Sun, 15 Jan 2012 11:05:59 +0900 | 3 | Date: Sun, 15 Jan 2012 11:05:59 +0900 |
4 | Subject: [PATCH 097/130] TOMOYO: Accept \000 as a valid character. | 4 | Subject: [PATCH 097/129] TOMOYO: Accept \000 as a valid character. |
5 | 5 | ||
6 | commit 25add8cf99c9ec8b8dc0acd8b9241e963fc0d29c upstream. | 6 | commit 25add8cf99c9ec8b8dc0acd8b9241e963fc0d29c upstream. |
7 | 7 | ||
@@ -39,5 +39,5 @@ index 4a9b4b2..867558c 100644 | |||
39 | } | 39 | } |
40 | } | 40 | } |
41 | -- | 41 | -- |
42 | 1.7.9.4 | 42 | 1.7.9.5 |
43 | 43 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0098-intel-idle-Make-idle-driver-more-robust.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0098-intel-idle-Make-idle-driver-more-robust.patch index d7a7611d..410dc4ff 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0098-intel-idle-Make-idle-driver-more-robust.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0098-intel-idle-Make-idle-driver-more-robust.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From ea9646e5ea87fd6140ed54f3b09ca46475ce6a2e Mon Sep 17 00:00:00 2001 | 1 | From 0e193a44b182c4d14fd4ec0eda63e1cba9e4a0a7 Mon Sep 17 00:00:00 2001 |
2 | From: Thomas Renninger <trenn@suse.de> | 2 | From: Thomas Renninger <trenn@suse.de> |
3 | Date: Sun, 4 Dec 2011 22:17:29 +0100 | 3 | Date: Sun, 4 Dec 2011 22:17:29 +0100 |
4 | Subject: [PATCH 098/130] intel idle: Make idle driver more robust | 4 | Subject: [PATCH 098/129] intel idle: Make idle driver more robust |
5 | 5 | ||
6 | commit 5c2a9f06a9cd7194f884cdc88144866235dec07d upstream. | 6 | commit 5c2a9f06a9cd7194f884cdc88144866235dec07d upstream. |
7 | 7 | ||
@@ -49,5 +49,5 @@ index 5d2f8e1..1dafcc3 100644 | |||
49 | 49 | ||
50 | pr_debug(PREFIX "MWAIT substates: 0x%x\n", mwait_substates); | 50 | pr_debug(PREFIX "MWAIT substates: 0x%x\n", mwait_substates); |
51 | -- | 51 | -- |
52 | 1.7.9.4 | 52 | 1.7.9.5 |
53 | 53 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0099-intel_idle-fix-API-misuse.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0099-intel_idle-fix-API-misuse.patch index e6b16977..cbebf3b7 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0099-intel_idle-fix-API-misuse.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0099-intel_idle-fix-API-misuse.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 6fc773be070e8390d544439896111359f7ad5d5e Mon Sep 17 00:00:00 2001 | 1 | From c8fa4b79449fe6d516847fc308c7126e65d5eec1 Mon Sep 17 00:00:00 2001 |
2 | From: Shaohua Li <shaohua.li@intel.com> | 2 | From: Shaohua Li <shaohua.li@intel.com> |
3 | Date: Tue, 10 Jan 2012 15:48:19 -0800 | 3 | Date: Tue, 10 Jan 2012 15:48:19 -0800 |
4 | Subject: [PATCH 099/130] intel_idle: fix API misuse | 4 | Subject: [PATCH 099/129] intel_idle: fix API misuse |
5 | 5 | ||
6 | commit 39a74fdedd1c1461d6fb6d330b5266886513c98f upstream. | 6 | commit 39a74fdedd1c1461d6fb6d330b5266886513c98f upstream. |
7 | 7 | ||
@@ -52,5 +52,5 @@ index 1dafcc3..5b39216 100644 | |||
52 | } | 52 | } |
53 | 53 | ||
54 | -- | 54 | -- |
55 | 1.7.9.4 | 55 | 1.7.9.5 |
56 | 56 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0100-ACPI-Store-SRAT-table-revision.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0100-ACPI-Store-SRAT-table-revision.patch index 0517a288..5f6eb014 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0100-ACPI-Store-SRAT-table-revision.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0100-ACPI-Store-SRAT-table-revision.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 728b80c9d9c824758d199b30badeede283997288 Mon Sep 17 00:00:00 2001 | 1 | From 8f15cb284e8a758b4040fd87729b365bb7805dbb Mon Sep 17 00:00:00 2001 |
2 | From: Kurt Garloff <kurt@garloff.de> | 2 | From: Kurt Garloff <kurt@garloff.de> |
3 | Date: Tue, 17 Jan 2012 04:18:02 -0500 | 3 | Date: Tue, 17 Jan 2012 04:18:02 -0500 |
4 | Subject: [PATCH 100/130] ACPI: Store SRAT table revision | 4 | Subject: [PATCH 100/129] ACPI: Store SRAT table revision |
5 | 5 | ||
6 | commit 8df0eb7c9d96f9e82f233ee8b74e0f0c8471f868 upstream. | 6 | commit 8df0eb7c9d96f9e82f233ee8b74e0f0c8471f868 upstream. |
7 | 7 | ||
@@ -62,5 +62,5 @@ index 1739726..451823c 100644 | |||
62 | #endif /* CONFIG_ACPI_NUMA */ | 62 | #endif /* CONFIG_ACPI_NUMA */ |
63 | #endif /* __ACP_NUMA_H */ | 63 | #endif /* __ACP_NUMA_H */ |
64 | -- | 64 | -- |
65 | 1.7.9.4 | 65 | 1.7.9.5 |
66 | 66 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0101-ACPI-x86-Use-SRAT-table-rev-to-use-8bit-or-32bit-PXM.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0101-ACPI-x86-Use-SRAT-table-rev-to-use-8bit-or-32bit-PXM.patch index e388bd86..22098603 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0101-ACPI-x86-Use-SRAT-table-rev-to-use-8bit-or-32bit-PXM.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0101-ACPI-x86-Use-SRAT-table-rev-to-use-8bit-or-32bit-PXM.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From a3f5e6cdc32940c2bb38883fbf59310e3f47562b Mon Sep 17 00:00:00 2001 | 1 | From 63a87105c14ecf9a81f741a3864b775901237f53 Mon Sep 17 00:00:00 2001 |
2 | From: Kurt Garloff <kurt@garloff.de> | 2 | From: Kurt Garloff <kurt@garloff.de> |
3 | Date: Tue, 17 Jan 2012 04:20:31 -0500 | 3 | Date: Tue, 17 Jan 2012 04:20:31 -0500 |
4 | Subject: [PATCH 101/130] ACPI, x86: Use SRAT table rev to use 8bit or 32bit | 4 | Subject: [PATCH 101/129] ACPI, x86: Use SRAT table rev to use 8bit or 32bit |
5 | PXM fields (x86/x86-64) | 5 | PXM fields (x86/x86-64) |
6 | 6 | ||
7 | commit cd298f60a2451a16e0f077404bf69b62ec868733 upstream. | 7 | commit cd298f60a2451a16e0f077404bf69b62ec868733 upstream. |
@@ -46,5 +46,5 @@ index 81dbfde..7efd0c6 100644 | |||
46 | if (node < 0) { | 46 | if (node < 0) { |
47 | printk(KERN_ERR "SRAT: Too many proximity domains.\n"); | 47 | printk(KERN_ERR "SRAT: Too many proximity domains.\n"); |
48 | -- | 48 | -- |
49 | 1.7.9.4 | 49 | 1.7.9.5 |
50 | 50 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0102-ACPI-ia64-Use-SRAT-table-rev-to-use-8bit-or-16-32bit.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0102-ACPI-ia64-Use-SRAT-table-rev-to-use-8bit-or-16-32bit.patch index 9db21e76..9aa68af7 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0102-ACPI-ia64-Use-SRAT-table-rev-to-use-8bit-or-16-32bit.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0102-ACPI-ia64-Use-SRAT-table-rev-to-use-8bit-or-16-32bit.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 4e2cabc871e43094be5d5e2968cf2759bfc42446 Mon Sep 17 00:00:00 2001 | 1 | From d9beea03fc99ab5df65264a47802449c6630a8bf Mon Sep 17 00:00:00 2001 |
2 | From: Kurt Garloff <kurt@garloff.de> | 2 | From: Kurt Garloff <kurt@garloff.de> |
3 | Date: Tue, 17 Jan 2012 04:21:49 -0500 | 3 | Date: Tue, 17 Jan 2012 04:21:49 -0500 |
4 | Subject: [PATCH 102/130] ACPI, ia64: Use SRAT table rev to use 8bit or | 4 | Subject: [PATCH 102/129] ACPI, ia64: Use SRAT table rev to use 8bit or |
5 | 16/32bit PXM fields (ia64) | 5 | 16/32bit PXM fields (ia64) |
6 | 6 | ||
7 | commit 9f10f6a520deb3639fac78d81151a3ade88b4e7f upstream. | 7 | commit 9f10f6a520deb3639fac78d81151a3ade88b4e7f upstream. |
@@ -62,5 +62,5 @@ index bfb4d01..5207035 100644 | |||
62 | 62 | ||
63 | return pxm; | 63 | return pxm; |
64 | -- | 64 | -- |
65 | 1.7.9.4 | 65 | 1.7.9.5 |
66 | 66 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0103-ACPICA-Put-back-the-call-to-acpi_os_validate_address.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0103-ACPICA-Put-back-the-call-to-acpi_os_validate_address.patch index 28e650a1..66d96729 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0103-ACPICA-Put-back-the-call-to-acpi_os_validate_address.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0103-ACPICA-Put-back-the-call-to-acpi_os_validate_address.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 1d0cc972d03315012d34ed57d5929597fe16513d Mon Sep 17 00:00:00 2001 | 1 | From 0279b040f1dafa5f545c9ef255b39a99f9490750 Mon Sep 17 00:00:00 2001 |
2 | From: Lin Ming <ming.m.lin@intel.com> | 2 | From: Lin Ming <ming.m.lin@intel.com> |
3 | Date: Tue, 29 Nov 2011 22:13:35 +0800 | 3 | Date: Tue, 29 Nov 2011 22:13:35 +0800 |
4 | Subject: [PATCH 103/130] ACPICA: Put back the call to | 4 | Subject: [PATCH 103/129] ACPICA: Put back the call to |
5 | acpi_os_validate_address | 5 | acpi_os_validate_address |
6 | 6 | ||
7 | commit da4d8b287abe783d30e968155614531a0937d090 upstream. | 7 | commit da4d8b287abe783d30e968155614531a0937d090 upstream. |
@@ -55,5 +55,5 @@ index 8c7b997..42163d8 100644 | |||
55 | return_ACPI_STATUS(status); | 55 | return_ACPI_STATUS(status); |
56 | } | 56 | } |
57 | -- | 57 | -- |
58 | 1.7.9.4 | 58 | 1.7.9.5 |
59 | 59 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0104-ACPI-processor-fix-acpi_get_cpuid-for-UP-processor.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0104-ACPI-processor-fix-acpi_get_cpuid-for-UP-processor.patch index 9a2227c9..edd3fc36 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0104-ACPI-processor-fix-acpi_get_cpuid-for-UP-processor.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0104-ACPI-processor-fix-acpi_get_cpuid-for-UP-processor.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 9a808d369e4ff2dea161f009f81fa4daf32218ad Mon Sep 17 00:00:00 2001 | 1 | From 639adc94e82ece74d00c447a2e5d9180bdfd5355 Mon Sep 17 00:00:00 2001 |
2 | From: Lin Ming <ming.m.lin@intel.com> | 2 | From: Lin Ming <ming.m.lin@intel.com> |
3 | Date: Tue, 13 Dec 2011 09:36:03 +0800 | 3 | Date: Tue, 13 Dec 2011 09:36:03 +0800 |
4 | Subject: [PATCH 104/130] ACPI: processor: fix acpi_get_cpuid for UP processor | 4 | Subject: [PATCH 104/129] ACPI: processor: fix acpi_get_cpuid for UP processor |
5 | 5 | ||
6 | commit d640113fe80e45ebd4a5b420b220d3f6bf37f682 upstream. | 6 | commit d640113fe80e45ebd4a5b420b220d3f6bf37f682 upstream. |
7 | 7 | ||
@@ -71,5 +71,5 @@ index 3a0428e..c850de4 100644 | |||
71 | #ifdef CONFIG_SMP | 71 | #ifdef CONFIG_SMP |
72 | for_each_possible_cpu(i) { | 72 | for_each_possible_cpu(i) { |
73 | -- | 73 | -- |
74 | 1.7.9.4 | 74 | 1.7.9.5 |
75 | 75 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0105-sym53c8xx-Fix-NULL-pointer-dereference-in-slave_dest.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0105-sym53c8xx-Fix-NULL-pointer-dereference-in-slave_dest.patch index 4d3dd26b..e91b3609 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0105-sym53c8xx-Fix-NULL-pointer-dereference-in-slave_dest.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0105-sym53c8xx-Fix-NULL-pointer-dereference-in-slave_dest.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 2d67bed9e2fee02c9cca9582ed2719394bcbc124 Mon Sep 17 00:00:00 2001 | 1 | From af1ad4d4ecbbfca6424c1f8fa40e1aec8fae4836 Mon Sep 17 00:00:00 2001 |
2 | From: Stratos Psomadakis <psomas@gentoo.org> | 2 | From: Stratos Psomadakis <psomas@gentoo.org> |
3 | Date: Sun, 4 Dec 2011 02:23:54 +0200 | 3 | Date: Sun, 4 Dec 2011 02:23:54 +0200 |
4 | Subject: [PATCH 105/130] sym53c8xx: Fix NULL pointer dereference in | 4 | Subject: [PATCH 105/129] sym53c8xx: Fix NULL pointer dereference in |
5 | slave_destroy | 5 | slave_destroy |
6 | 6 | ||
7 | commit cced5041ed5a2d1352186510944b0ddfbdbe4c0b upstream. | 7 | commit cced5041ed5a2d1352186510944b0ddfbdbe4c0b upstream. |
@@ -33,5 +33,5 @@ index b4543f5..36d1ed7 100644 | |||
33 | 33 | ||
34 | if (lp->busy_itlq || lp->busy_itl) { | 34 | if (lp->busy_itlq || lp->busy_itl) { |
35 | -- | 35 | -- |
36 | 1.7.9.4 | 36 | 1.7.9.5 |
37 | 37 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0106-target-Set-response-format-in-INQUIRY-response.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0106-target-Set-response-format-in-INQUIRY-response.patch index 4d00f5ec..22c0c37c 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0106-target-Set-response-format-in-INQUIRY-response.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0106-target-Set-response-format-in-INQUIRY-response.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From ce97634c9e0f76ad9e01acc6bc4d5d7c92e2cb52 Mon Sep 17 00:00:00 2001 | 1 | From 860d8eb163f67712acbcc072e5362e3ca01ef2b8 Mon Sep 17 00:00:00 2001 |
2 | From: Roland Dreier <roland@purestorage.com> | 2 | From: Roland Dreier <roland@purestorage.com> |
3 | Date: Tue, 6 Dec 2011 10:02:09 -0800 | 3 | Date: Tue, 6 Dec 2011 10:02:09 -0800 |
4 | Subject: [PATCH 106/130] target: Set response format in INQUIRY response | 4 | Subject: [PATCH 106/129] target: Set response format in INQUIRY response |
5 | 5 | ||
6 | commit ce136176fea522fc8f4c16dcae7e8ed1d890ca39 upstream. | 6 | commit ce136176fea522fc8f4c16dcae7e8ed1d890ca39 upstream. |
7 | 7 | ||
@@ -40,5 +40,5 @@ index 831468b..2e8c1be 100644 | |||
40 | */ | 40 | */ |
41 | if (dev->se_sub_dev->t10_alua.alua_type == SPC3_ALUA_EMULATED) | 41 | if (dev->se_sub_dev->t10_alua.alua_type == SPC3_ALUA_EMULATED) |
42 | -- | 42 | -- |
43 | 1.7.9.4 | 43 | 1.7.9.5 |
44 | 44 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0107-target-Set-additional-sense-length-field-in-sense-da.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0107-target-Set-additional-sense-length-field-in-sense-da.patch index 89cf1cb9..2d2bff53 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0107-target-Set-additional-sense-length-field-in-sense-da.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0107-target-Set-additional-sense-length-field-in-sense-da.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 02773707d85c4c5d94d7e75eec75a111dae1bf8b Mon Sep 17 00:00:00 2001 | 1 | From ae86c4561c40068ef81f484829a47512c99853d0 Mon Sep 17 00:00:00 2001 |
2 | From: Roland Dreier <roland@purestorage.com> | 2 | From: Roland Dreier <roland@purestorage.com> |
3 | Date: Tue, 13 Dec 2011 14:55:33 -0800 | 3 | Date: Tue, 13 Dec 2011 14:55:33 -0800 |
4 | Subject: [PATCH 107/130] target: Set additional sense length field in sense | 4 | Subject: [PATCH 107/129] target: Set additional sense length field in sense |
5 | data | 5 | data |
6 | 6 | ||
7 | commit 895f3022523361e9b383cf48f51feb1f7d5e7e53 upstream. | 7 | commit 895f3022523361e9b383cf48f51feb1f7d5e7e53 upstream. |
@@ -173,5 +173,5 @@ index 6873c7d..a79886c 100644 | |||
173 | #define SPC_ASCQ_KEY_OFFSET 13 | 173 | #define SPC_ASCQ_KEY_OFFSET 13 |
174 | #define TRANSPORT_IQN_LEN 224 | 174 | #define TRANSPORT_IQN_LEN 224 |
175 | -- | 175 | -- |
176 | 1.7.9.4 | 176 | 1.7.9.5 |
177 | 177 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0108-bcma-invalidate-the-mapped-core-over-suspend-resume.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0108-bcma-invalidate-the-mapped-core-over-suspend-resume.patch index 0a95caae..1d681ad2 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0108-bcma-invalidate-the-mapped-core-over-suspend-resume.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0108-bcma-invalidate-the-mapped-core-over-suspend-resume.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From f247747caad5d93e854a4ebab125e97e119a7c94 Mon Sep 17 00:00:00 2001 | 1 | From 744b53e5115a140039ef4e7834bb84797b4db37e Mon Sep 17 00:00:00 2001 |
2 | From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> | 2 | From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> |
3 | Date: Fri, 13 Jan 2012 23:58:38 +0100 | 3 | Date: Fri, 13 Jan 2012 23:58:38 +0100 |
4 | Subject: [PATCH 108/130] bcma: invalidate the mapped core over suspend/resume | 4 | Subject: [PATCH 108/129] bcma: invalidate the mapped core over suspend/resume |
5 | MIME-Version: 1.0 | 5 | MIME-Version: 1.0 |
6 | Content-Type: text/plain; charset=UTF-8 | 6 | Content-Type: text/plain; charset=UTF-8 |
7 | Content-Transfer-Encoding: 8bit | 7 | Content-Transfer-Encoding: 8bit |
@@ -40,5 +40,5 @@ index 990f5a8..48e06be 100644 | |||
40 | } | 40 | } |
41 | 41 | ||
42 | -- | 42 | -- |
43 | 1.7.9.4 | 43 | 1.7.9.5 |
44 | 44 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0109-cx23885-dvb-check-if-dvb_attach-succeded.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0109-cx23885-dvb-check-if-dvb_attach-succeded.patch index 68e70fa7..281a3800 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0109-cx23885-dvb-check-if-dvb_attach-succeded.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0109-cx23885-dvb-check-if-dvb_attach-succeded.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From eba71ad513d0aaab1592c2a0f96689fb99e84358 Mon Sep 17 00:00:00 2001 | 1 | From 3fcecb64e1ce21bda3d69718f0fefa1ed0d7f06b Mon Sep 17 00:00:00 2001 |
2 | From: Miroslav Slugen <thunder.mmm@gmail.com> | 2 | From: Miroslav Slugen <thunder.mmm@gmail.com> |
3 | Date: Sun, 11 Dec 2011 18:57:58 -0300 | 3 | Date: Sun, 11 Dec 2011 18:57:58 -0300 |
4 | Subject: [PATCH 109/130] cx23885-dvb: check if dvb_attach() succeded | 4 | Subject: [PATCH 109/129] cx23885-dvb: check if dvb_attach() succeded |
5 | 5 | ||
6 | commit a7c8aadad39428b64d26c3971d967f8314e2397d upstream. | 6 | commit a7c8aadad39428b64d26c3971d967f8314e2397d upstream. |
7 | 7 | ||
@@ -32,5 +32,5 @@ index bcb45be..f0482b2 100644 | |||
32 | break; | 32 | break; |
33 | case CX23885_BOARD_TBS_6920: | 33 | case CX23885_BOARD_TBS_6920: |
34 | -- | 34 | -- |
35 | 1.7.9.4 | 35 | 1.7.9.5 |
36 | 36 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0110-cx88-fix-don-t-duplicate-xc4000-entry-for-radio.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0110-cx88-fix-don-t-duplicate-xc4000-entry-for-radio.patch index 41af993c..3bb70b80 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0110-cx88-fix-don-t-duplicate-xc4000-entry-for-radio.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0110-cx88-fix-don-t-duplicate-xc4000-entry-for-radio.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 4cdd59d625b7597263d5bf1420baf29dda1dbcf9 Mon Sep 17 00:00:00 2001 | 1 | From dedbeeab016e8baaeed49bae9f4a0dab47da8a54 Mon Sep 17 00:00:00 2001 |
2 | From: Miroslav Slugen <thunder.mmm@gmail.com> | 2 | From: Miroslav Slugen <thunder.mmm@gmail.com> |
3 | Date: Sun, 11 Dec 2011 19:00:06 -0300 | 3 | Date: Sun, 11 Dec 2011 19:00:06 -0300 |
4 | Subject: [PATCH 110/130] cx88: fix: don't duplicate xc4000 entry for radio | 4 | Subject: [PATCH 110/129] cx88: fix: don't duplicate xc4000 entry for radio |
5 | 5 | ||
6 | commit b6854e3f31402476bcc9d2f41570389fa491de17 upstream. | 6 | commit b6854e3f31402476bcc9d2f41570389fa491de17 upstream. |
7 | 7 | ||
@@ -91,5 +91,5 @@ index 0d719fa..3929d93 100644 | |||
91 | * GPIO | 91 | * GPIO |
92 | * 2: 1: mute audio | 92 | * 2: 1: mute audio |
93 | -- | 93 | -- |
94 | 1.7.9.4 | 94 | 1.7.9.5 |
95 | 95 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0111-tuner-Fix-numberspace-conflict-between-xc4000-and-pt.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0111-tuner-Fix-numberspace-conflict-between-xc4000-and-pt.patch index 8eacbcac..ca034602 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0111-tuner-Fix-numberspace-conflict-between-xc4000-and-pt.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0111-tuner-Fix-numberspace-conflict-between-xc4000-and-pt.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 9f3c2f09e3c5ffbbbb98cb248b423cbdd8a86a9e Mon Sep 17 00:00:00 2001 | 1 | From 5af871e87d37ab57459c6c7244aa4837993ee9eb Mon Sep 17 00:00:00 2001 |
2 | From: Miroslav Slugen <thunder.mmm@gmail.com> | 2 | From: Miroslav Slugen <thunder.mmm@gmail.com> |
3 | Date: Sun, 11 Dec 2011 18:47:32 -0300 | 3 | Date: Sun, 11 Dec 2011 18:47:32 -0300 |
4 | Subject: [PATCH 111/130] tuner: Fix numberspace conflict between xc4000 and | 4 | Subject: [PATCH 111/129] tuner: Fix numberspace conflict between xc4000 and |
5 | pti 5nf05 tuners | 5 | pti 5nf05 tuners |
6 | 6 | ||
7 | commit cd4ca7afc61d3b18fcd635002459fb6b1d701099 upstream. | 7 | commit cd4ca7afc61d3b18fcd635002459fb6b1d701099 upstream. |
@@ -38,5 +38,5 @@ index 89c290b..29e1920 100644 | |||
38 | #define TDA9887_PRESENT (1<<0) | 38 | #define TDA9887_PRESENT (1<<0) |
39 | #define TDA9887_PORT1_INACTIVE (1<<1) | 39 | #define TDA9887_PORT1_INACTIVE (1<<1) |
40 | -- | 40 | -- |
41 | 1.7.9.4 | 41 | 1.7.9.5 |
42 | 42 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0112-tracepoints-module-Fix-disabling-tracepoints-with-ta.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0112-tracepoints-module-Fix-disabling-tracepoints-with-ta.patch index 484a59ac..fa68a226 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0112-tracepoints-module-Fix-disabling-tracepoints-with-ta.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0112-tracepoints-module-Fix-disabling-tracepoints-with-ta.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From f346bd3ef355be96371b53ec2e93f072618bdce7 Mon Sep 17 00:00:00 2001 | 1 | From 1c99223cf33c02c8f79d74bda8a0f4352bd4d7f6 Mon Sep 17 00:00:00 2001 |
2 | From: Steven Rostedt <srostedt@redhat.com> | 2 | From: Steven Rostedt <srostedt@redhat.com> |
3 | Date: Fri, 13 Jan 2012 21:40:59 -0500 | 3 | Date: Fri, 13 Jan 2012 21:40:59 -0500 |
4 | Subject: [PATCH 112/130] tracepoints/module: Fix disabling tracepoints with | 4 | Subject: [PATCH 112/129] tracepoints/module: Fix disabling tracepoints with |
5 | taint CRAP or OOT | 5 | taint CRAP or OOT |
6 | 6 | ||
7 | commit c10076c4304083af15a41f6bc5e657e781c1f9a6 upstream. | 7 | commit c10076c4304083af15a41f6bc5e657e781c1f9a6 upstream. |
@@ -46,5 +46,5 @@ index db110b8..f1539de 100644 | |||
46 | mutex_lock(&tracepoints_mutex); | 46 | mutex_lock(&tracepoints_mutex); |
47 | tp_mod = kmalloc(sizeof(struct tp_module), GFP_KERNEL); | 47 | tp_mod = kmalloc(sizeof(struct tp_module), GFP_KERNEL); |
48 | -- | 48 | -- |
49 | 1.7.9.4 | 49 | 1.7.9.5 |
50 | 50 | ||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0113-x86-UV2-Fix-new-UV2-hardware-by-using-native-UV2-bro.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0113-x86-UV2-Fix-new-UV2-hardware-by-using-native-UV2-bro.patch index 29557a49..aec34657 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0113-x86-UV2-Fix-new-UV2-hardware-by-using-native-UV2-bro.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0113-x86-UV2-Fix-new-UV2-hardware-by-using-native-UV2-bro.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From ec2a416f6ce2e5b896074a6e8c86fda4d1d21466 Mon Sep 17 00:00:00 2001 | 1 | From ebde7b91a72ac0cc014d021051f8a46a786dbb00 Mon Sep 17 00:00:00 2001 |
2 | From: Cliff Wickman <cpw@sgi.com> | 2 | From: Cliff Wickman <cpw@sgi.com> |
3 | Date: Mon, 16 Jan 2012 15:17:50 -0600 | 3 | Date: Mon, 16 Jan 2012 15:17:50 -0600 |
4 | Subject: [PATCH 113/129] x86/UV2: Fix new UV2 hardware by using native UV2 | 4 | Subject: [PATCH 113/129] x86/UV2: Fix new UV2 hardware by using native UV2 |
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0114-x86-UV2-Fix-BAU-destination-timeout-initialization.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0114-x86-UV2-Fix-BAU-destination-timeout-initialization.patch index a7502511..02118c96 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0114-x86-UV2-Fix-BAU-destination-timeout-initialization.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0114-x86-UV2-Fix-BAU-destination-timeout-initialization.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 0b3a1f5aefb71777fec89809de87c49b917a88e7 Mon Sep 17 00:00:00 2001 | 1 | From dcca45052472bcbd331d0451777cb947588e1dd5 Mon Sep 17 00:00:00 2001 |
2 | From: Cliff Wickman <cpw@sgi.com> | 2 | From: Cliff Wickman <cpw@sgi.com> |
3 | Date: Mon, 16 Jan 2012 15:18:48 -0600 | 3 | Date: Mon, 16 Jan 2012 15:18:48 -0600 |
4 | Subject: [PATCH 114/129] x86/UV2: Fix BAU destination timeout initialization | 4 | Subject: [PATCH 114/129] x86/UV2: Fix BAU destination timeout initialization |
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0115-x86-UV2-Work-around-BAU-bug.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0115-x86-UV2-Work-around-BAU-bug.patch index bfcab134..11d610cf 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0115-x86-UV2-Work-around-BAU-bug.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0115-x86-UV2-Work-around-BAU-bug.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From d1eaa067ea8545101d57f6d484519722ee8c3783 Mon Sep 17 00:00:00 2001 | 1 | From 3ebb4a034dca1cd312f42c9ff1ff47c873f211b6 Mon Sep 17 00:00:00 2001 |
2 | From: Cliff Wickman <cpw@sgi.com> | 2 | From: Cliff Wickman <cpw@sgi.com> |
3 | Date: Mon, 16 Jan 2012 15:19:47 -0600 | 3 | Date: Mon, 16 Jan 2012 15:19:47 -0600 |
4 | Subject: [PATCH 115/129] x86/UV2: Work around BAU bug | 4 | Subject: [PATCH 115/129] x86/UV2: Work around BAU bug |
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0116-ath9k_hw-fix-interpretation-of-the-rx-KeyMiss-flag.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0116-ath9k_hw-fix-interpretation-of-the-rx-KeyMiss-flag.patch index bde74d7f..33c20287 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0116-ath9k_hw-fix-interpretation-of-the-rx-KeyMiss-flag.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0116-ath9k_hw-fix-interpretation-of-the-rx-KeyMiss-flag.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 28cfb4fe93728e07bee3b360682f3a4b2ca6f1f0 Mon Sep 17 00:00:00 2001 | 1 | From 36fed113f3b66718282151fa962f644e793520f5 Mon Sep 17 00:00:00 2001 |
2 | From: Felix Fietkau <nbd@openwrt.org> | 2 | From: Felix Fietkau <nbd@openwrt.org> |
3 | Date: Sat, 14 Jan 2012 15:08:34 +0100 | 3 | Date: Sat, 14 Jan 2012 15:08:34 +0100 |
4 | Subject: [PATCH 116/129] ath9k_hw: fix interpretation of the rx KeyMiss flag | 4 | Subject: [PATCH 116/129] ath9k_hw: fix interpretation of the rx KeyMiss flag |
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0117-rt2800pci-fix-spurious-interrupts-generation.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0117-rt2800pci-fix-spurious-interrupts-generation.patch index 2911cede..9fc97d72 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0117-rt2800pci-fix-spurious-interrupts-generation.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0117-rt2800pci-fix-spurious-interrupts-generation.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 021083c5844b20210ced59ad5b760d2a7cb97cd2 Mon Sep 17 00:00:00 2001 | 1 | From a84e0b6f2dfb09db9a5cb66bb913f619d8973a62 Mon Sep 17 00:00:00 2001 |
2 | From: Stanislaw Gruszka <sgruszka@redhat.com> | 2 | From: Stanislaw Gruszka <sgruszka@redhat.com> |
3 | Date: Fri, 13 Jan 2012 12:59:32 +0100 | 3 | Date: Fri, 13 Jan 2012 12:59:32 +0100 |
4 | Subject: [PATCH 117/129] rt2800pci: fix spurious interrupts generation | 4 | Subject: [PATCH 117/129] rt2800pci: fix spurious interrupts generation |
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0118-xfs-fix-endian-conversion-issue-in-discard-code.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0118-xfs-fix-endian-conversion-issue-in-discard-code.patch index fda910b7..6a0feaa8 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0118-xfs-fix-endian-conversion-issue-in-discard-code.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0118-xfs-fix-endian-conversion-issue-in-discard-code.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 40713843ccb84ed06d4799763c3832376d6cd5cb Mon Sep 17 00:00:00 2001 | 1 | From 1075b6106024e51af7a5108626091322d2e91710 Mon Sep 17 00:00:00 2001 |
2 | From: Dave Chinner <dchinner@redhat.com> | 2 | From: Dave Chinner <dchinner@redhat.com> |
3 | Date: Wed, 18 Jan 2012 14:41:45 -0600 | 3 | Date: Wed, 18 Jan 2012 14:41:45 -0600 |
4 | Subject: [PATCH 118/129] xfs: fix endian conversion issue in discard code | 4 | Subject: [PATCH 118/129] xfs: fix endian conversion issue in discard code |
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0119-i2c-eg20t-modified-the-setting-of-transfer-rate.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0119-i2c-eg20t-modified-the-setting-of-transfer-rate.patch index 839253c1..15391676 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0119-i2c-eg20t-modified-the-setting-of-transfer-rate.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0119-i2c-eg20t-modified-the-setting-of-transfer-rate.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 072d0e473d1a1d4adc67a7d39be9f71fea4fadad Mon Sep 17 00:00:00 2001 | 1 | From d73358012ed5ac74a1f51fa250d221be5e3ca304 Mon Sep 17 00:00:00 2001 |
2 | From: Toshiharu Okada <toshiharu-linux@dsn.okisemi.com> | 2 | From: Toshiharu Okada <toshiharu-linux@dsn.okisemi.com> |
3 | Date: Mon, 26 Sep 2011 16:16:23 +0900 | 3 | Date: Mon, 26 Sep 2011 16:16:23 +0900 |
4 | Subject: [PATCH 119/129] i2c-eg20t: modified the setting of transfer rate. | 4 | Subject: [PATCH 119/129] i2c-eg20t: modified the setting of transfer rate. |
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0120-score-fix-off-by-one-index-into-syscall-table.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0120-score-fix-off-by-one-index-into-syscall-table.patch index 32a8d963..7926f229 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0120-score-fix-off-by-one-index-into-syscall-table.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0120-score-fix-off-by-one-index-into-syscall-table.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 9ed6d95eba2ead578e1fa4e5be8cb16b185c8c97 Mon Sep 17 00:00:00 2001 | 1 | From 9391ba8a34c0947af9b6c756387fc8bf70959648 Mon Sep 17 00:00:00 2001 |
2 | From: Dan Rosenberg <drosenberg@vsecurity.com> | 2 | From: Dan Rosenberg <drosenberg@vsecurity.com> |
3 | Date: Fri, 20 Jan 2012 14:34:27 -0800 | 3 | Date: Fri, 20 Jan 2012 14:34:27 -0800 |
4 | Subject: [PATCH 120/129] score: fix off-by-one index into syscall table | 4 | Subject: [PATCH 120/129] score: fix off-by-one index into syscall table |
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0121-cifs-lower-default-wsize-when-unix-extensions-are-no.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0121-cifs-lower-default-wsize-when-unix-extensions-are-no.patch index fb4af96b..f857485e 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0121-cifs-lower-default-wsize-when-unix-extensions-are-no.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0121-cifs-lower-default-wsize-when-unix-extensions-are-no.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From ac9426f8233d76fd80412576fb53a26a7b1bd7ea Mon Sep 17 00:00:00 2001 | 1 | From 95b45505920a18fb705ad35e9144aaf94ea01421 Mon Sep 17 00:00:00 2001 |
2 | From: Jeff Layton <jlayton@redhat.com> | 2 | From: Jeff Layton <jlayton@redhat.com> |
3 | Date: Tue, 17 Jan 2012 16:08:51 -0500 | 3 | Date: Tue, 17 Jan 2012 16:08:51 -0500 |
4 | Subject: [PATCH 121/129] cifs: lower default wsize when unix extensions are | 4 | Subject: [PATCH 121/129] cifs: lower default wsize when unix extensions are |
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0122-kprobes-initialize-before-using-a-hlist.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0122-kprobes-initialize-before-using-a-hlist.patch index 3d055c3c..ff829958 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0122-kprobes-initialize-before-using-a-hlist.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0122-kprobes-initialize-before-using-a-hlist.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From d159bea43eb9f0ba806a4ddc7e03dbb218b88136 Mon Sep 17 00:00:00 2001 | 1 | From b15b8b5f7a9cfc20c2e68ba4a6a402ff44bb6c4a Mon Sep 17 00:00:00 2001 |
2 | From: Ananth N Mavinakayanahalli <ananth@in.ibm.com> | 2 | From: Ananth N Mavinakayanahalli <ananth@in.ibm.com> |
3 | Date: Fri, 20 Jan 2012 14:34:04 -0800 | 3 | Date: Fri, 20 Jan 2012 14:34:04 -0800 |
4 | Subject: [PATCH 122/129] kprobes: initialize before using a hlist | 4 | Subject: [PATCH 122/129] kprobes: initialize before using a hlist |
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0123-proc-clear_refs-do-not-clear-reserved-pages.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0123-proc-clear_refs-do-not-clear-reserved-pages.patch index 23678bde..521c3d5d 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0123-proc-clear_refs-do-not-clear-reserved-pages.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0123-proc-clear_refs-do-not-clear-reserved-pages.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 1740c878a52dd4afc5b6e927d9b157d6db230184 Mon Sep 17 00:00:00 2001 | 1 | From 8077f2d3611dd0c75c64f018c7e01dc2a4948a27 Mon Sep 17 00:00:00 2001 |
2 | From: Will Deacon <will.deacon@arm.com> | 2 | From: Will Deacon <will.deacon@arm.com> |
3 | Date: Fri, 20 Jan 2012 14:34:09 -0800 | 3 | Date: Fri, 20 Jan 2012 14:34:09 -0800 |
4 | Subject: [PATCH 123/129] proc: clear_refs: do not clear reserved pages | 4 | Subject: [PATCH 123/129] proc: clear_refs: do not clear reserved pages |
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0124-mm-fix-NULL-ptr-dereference-in-__count_immobile_page.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0124-mm-fix-NULL-ptr-dereference-in-__count_immobile_page.patch index ca05e3e3..1d4d2f88 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0124-mm-fix-NULL-ptr-dereference-in-__count_immobile_page.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0124-mm-fix-NULL-ptr-dereference-in-__count_immobile_page.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From ddcb13eadda3bcb23d81672ea705d6bfa313bbf8 Mon Sep 17 00:00:00 2001 | 1 | From e4131b26d39c1bf1f739fd09451ade0906252661 Mon Sep 17 00:00:00 2001 |
2 | From: Michal Hocko <mhocko@suse.cz> | 2 | From: Michal Hocko <mhocko@suse.cz> |
3 | Date: Fri, 20 Jan 2012 14:33:55 -0800 | 3 | Date: Fri, 20 Jan 2012 14:33:55 -0800 |
4 | Subject: [PATCH 124/129] mm: fix NULL ptr dereference in | 4 | Subject: [PATCH 124/129] mm: fix NULL ptr dereference in |
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0125-iwlagn-check-for-SMPS-mode.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0125-iwlagn-check-for-SMPS-mode.patch index a3fffd51..b0cda033 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0125-iwlagn-check-for-SMPS-mode.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0125-iwlagn-check-for-SMPS-mode.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From cd3b4541cb6b11e119007268e0890a1a38e68f8e Mon Sep 17 00:00:00 2001 | 1 | From 70fd986c5b5171460831de5af79b0d62af90411f Mon Sep 17 00:00:00 2001 |
2 | From: Wey-Yi Guy <wey-yi.w.guy@intel.com> | 2 | From: Wey-Yi Guy <wey-yi.w.guy@intel.com> |
3 | Date: Thu, 10 Nov 2011 06:55:04 -0800 | 3 | Date: Thu, 10 Nov 2011 06:55:04 -0800 |
4 | Subject: [PATCH 125/129] iwlagn: check for SMPS mode | 4 | Subject: [PATCH 125/129] iwlagn: check for SMPS mode |
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0126-iwlegacy-3945-fix-hw-passive-scan-on-radar-channels.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0126-iwlegacy-3945-fix-hw-passive-scan-on-radar-channels.patch index 7cbd3d8d..b00ae5cf 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0126-iwlegacy-3945-fix-hw-passive-scan-on-radar-channels.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0126-iwlegacy-3945-fix-hw-passive-scan-on-radar-channels.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 98214e3fab80dbfdf54c908de2ae0c9730d6430d Mon Sep 17 00:00:00 2001 | 1 | From 2daa9185b2ac519603743cbc902f00633947e878 Mon Sep 17 00:00:00 2001 |
2 | From: Stanislaw Gruszka <sgruszka@redhat.com> | 2 | From: Stanislaw Gruszka <sgruszka@redhat.com> |
3 | Date: Fri, 23 Dec 2011 08:13:50 +0100 | 3 | Date: Fri, 23 Dec 2011 08:13:50 +0100 |
4 | Subject: [PATCH 126/129] iwlegacy: 3945: fix hw passive scan on radar | 4 | Subject: [PATCH 126/129] iwlegacy: 3945: fix hw passive scan on radar |
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0127-SHM_UNLOCK-fix-long-unpreemptible-section.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0127-SHM_UNLOCK-fix-long-unpreemptible-section.patch index 3731f657..dfab7529 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0127-SHM_UNLOCK-fix-long-unpreemptible-section.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0127-SHM_UNLOCK-fix-long-unpreemptible-section.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 5e2208d9c6ce1c5e57ad5fe56adc5b8f349ce23a Mon Sep 17 00:00:00 2001 | 1 | From e74be920e142da39a0824238a5031649fbec2890 Mon Sep 17 00:00:00 2001 |
2 | From: Hugh Dickins <hughd@google.com> | 2 | From: Hugh Dickins <hughd@google.com> |
3 | Date: Fri, 20 Jan 2012 14:34:19 -0800 | 3 | Date: Fri, 20 Jan 2012 14:34:19 -0800 |
4 | Subject: [PATCH 127/129] SHM_UNLOCK: fix long unpreemptible section | 4 | Subject: [PATCH 127/129] SHM_UNLOCK: fix long unpreemptible section |
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0128-SHM_UNLOCK-fix-Unevictable-pages-stranded-after-swap.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0128-SHM_UNLOCK-fix-Unevictable-pages-stranded-after-swap.patch index e7adafc9..70d0feea 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0128-SHM_UNLOCK-fix-Unevictable-pages-stranded-after-swap.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0128-SHM_UNLOCK-fix-Unevictable-pages-stranded-after-swap.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 8704b3941de0865d7c11921ee2dd7abbc04a0081 Mon Sep 17 00:00:00 2001 | 1 | From 67890984571f0de5f3d975ef1d67643d89d92174 Mon Sep 17 00:00:00 2001 |
2 | From: Hugh Dickins <hughd@google.com> | 2 | From: Hugh Dickins <hughd@google.com> |
3 | Date: Fri, 20 Jan 2012 14:34:21 -0800 | 3 | Date: Fri, 20 Jan 2012 14:34:21 -0800 |
4 | Subject: [PATCH 128/129] SHM_UNLOCK: fix Unevictable pages stranded after | 4 | Subject: [PATCH 128/129] SHM_UNLOCK: fix Unevictable pages stranded after |
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0129-Linux-3.2.2.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0129-Linux-3.2.2.patch index f4e3ff56..191a68f4 100644 --- a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0129-Linux-3.2.2.patch +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0129-Linux-3.2.2.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 8e03b0ed729407fef72578c24148208a079e7f2c Mon Sep 17 00:00:00 2001 | 1 | From 9c4bad0da47e7a8597bf0135088e482b1a970ba7 Mon Sep 17 00:00:00 2001 |
2 | From: Greg Kroah-Hartman <gregkh@suse.de> | 2 | From: Greg Kroah-Hartman <gregkh@suse.de> |
3 | Date: Wed, 25 Jan 2012 16:39:32 -0800 | 3 | Date: Wed, 25 Jan 2012 16:39:32 -0800 |
4 | Subject: [PATCH 129/129] Linux 3.2.2 | 4 | Subject: [PATCH 129/129] Linux 3.2.2 |
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0001-iommu-amd-Add-workaround-for-event-log-erratum.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0001-iommu-amd-Add-workaround-for-event-log-erratum.patch new file mode 100644 index 00000000..fbb82078 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0001-iommu-amd-Add-workaround-for-event-log-erratum.patch | |||
@@ -0,0 +1,68 @@ | |||
1 | From d08904adc2bdce433151a95add376e5446af13de Mon Sep 17 00:00:00 2001 | ||
2 | From: Joerg Roedel <joerg.roedel@amd.com> | ||
3 | Date: Thu, 12 Apr 2012 14:12:00 +0200 | ||
4 | Subject: [PATCH 01/86] iommu/amd: Add workaround for event log erratum | ||
5 | |||
6 | commit 3d06fca8d2aa3543030e40b95f1d62f9f5a03540 upstream. | ||
7 | |||
8 | Due to a recent erratum it can happen that the head pointer | ||
9 | of the event-log is updated before the actual event-log | ||
10 | entry is written. This patch implements the recommended | ||
11 | workaround. | ||
12 | |||
13 | Signed-off-by: Joerg Roedel <joerg.roedel@amd.com> | ||
14 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
15 | --- | ||
16 | drivers/iommu/amd_iommu.c | 29 +++++++++++++++++++++++------ | ||
17 | 1 file changed, 23 insertions(+), 6 deletions(-) | ||
18 | |||
19 | diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c | ||
20 | index 966a6e7..f1d5408 100644 | ||
21 | --- a/drivers/iommu/amd_iommu.c | ||
22 | +++ b/drivers/iommu/amd_iommu.c | ||
23 | @@ -381,12 +381,27 @@ static void dump_command(unsigned long phys_addr) | ||
24 | |||
25 | static void iommu_print_event(struct amd_iommu *iommu, void *__evt) | ||
26 | { | ||
27 | - u32 *event = __evt; | ||
28 | - int type = (event[1] >> EVENT_TYPE_SHIFT) & EVENT_TYPE_MASK; | ||
29 | - int devid = (event[0] >> EVENT_DEVID_SHIFT) & EVENT_DEVID_MASK; | ||
30 | - int domid = (event[1] >> EVENT_DOMID_SHIFT) & EVENT_DOMID_MASK; | ||
31 | - int flags = (event[1] >> EVENT_FLAGS_SHIFT) & EVENT_FLAGS_MASK; | ||
32 | - u64 address = (u64)(((u64)event[3]) << 32) | event[2]; | ||
33 | + int type, devid, domid, flags; | ||
34 | + volatile u32 *event = __evt; | ||
35 | + int count = 0; | ||
36 | + u64 address; | ||
37 | + | ||
38 | +retry: | ||
39 | + type = (event[1] >> EVENT_TYPE_SHIFT) & EVENT_TYPE_MASK; | ||
40 | + devid = (event[0] >> EVENT_DEVID_SHIFT) & EVENT_DEVID_MASK; | ||
41 | + domid = (event[1] >> EVENT_DOMID_SHIFT) & EVENT_DOMID_MASK; | ||
42 | + flags = (event[1] >> EVENT_FLAGS_SHIFT) & EVENT_FLAGS_MASK; | ||
43 | + address = (u64)(((u64)event[3]) << 32) | event[2]; | ||
44 | + | ||
45 | + if (type == 0) { | ||
46 | + /* Did we hit the erratum? */ | ||
47 | + if (++count == LOOP_TIMEOUT) { | ||
48 | + pr_err("AMD-Vi: No event written to event log\n"); | ||
49 | + return; | ||
50 | + } | ||
51 | + udelay(1); | ||
52 | + goto retry; | ||
53 | + } | ||
54 | |||
55 | printk(KERN_ERR "AMD-Vi: Event logged ["); | ||
56 | |||
57 | @@ -439,6 +454,8 @@ static void iommu_print_event(struct amd_iommu *iommu, void *__evt) | ||
58 | default: | ||
59 | printk(KERN_ERR "UNKNOWN type=0x%02x]\n", type); | ||
60 | } | ||
61 | + | ||
62 | + memset(__evt, 0, 4 * sizeof(u32)); | ||
63 | } | ||
64 | |||
65 | static void iommu_poll_events(struct amd_iommu *iommu) | ||
66 | -- | ||
67 | 1.7.9.5 | ||
68 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0002-MIPS-BCM63XX-Add-missing-include-for-bcm63xx_gpio.h.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0002-MIPS-BCM63XX-Add-missing-include-for-bcm63xx_gpio.h.patch new file mode 100644 index 00000000..33c5e4c4 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0002-MIPS-BCM63XX-Add-missing-include-for-bcm63xx_gpio.h.patch | |||
@@ -0,0 +1,52 @@ | |||
1 | From 46955a5e45c31c112caee68f0b31b6caac294ce0 Mon Sep 17 00:00:00 2001 | ||
2 | From: Jonas Gorski <jonas.gorski@gmail.com> | ||
3 | Date: Tue, 15 May 2012 17:47:52 +0200 | ||
4 | Subject: [PATCH 02/86] MIPS: BCM63XX: Add missing include for bcm63xx_gpio.h | ||
5 | |||
6 | commit 442209f31dafef9fde852858e1ce566b675b720d upstream. | ||
7 | |||
8 | bcm63xx_gpio.h uses macros defined in bcm63xx_cpu.h without including it, | ||
9 | leading to the following build failure: | ||
10 | |||
11 | CC [M] drivers/mmc/core/cd-gpio.o | ||
12 | In file included from arch/mips/include/asm/mach-bcm63xx/gpio.h:4:0, | ||
13 | from arch/mips/include/asm/gpio.h:4, | ||
14 | from include/linux/gpio.h:30, | ||
15 | from drivers/mmc/core/cd-gpio.c:12: | ||
16 | |||
17 | arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h: In function 'bcm63xx_gpio_count': | ||
18 | arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h:10:2: error: implicit declaration of function 'bcm63xx_get_cpu_id' | ||
19 | arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h:11:7: error: 'BCM6358_CPU_ID' undeclared (first use in this function) | ||
20 | arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h:11:7: note: each undeclared identifier is reported only once for each function it appears in | ||
21 | arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h:13:7: error: 'BCM6338_CPU_ID' undeclared (first use in this function) | ||
22 | arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h:15:7: error: 'BCM6345_CPU_ID' undeclared (first use in this function) | ||
23 | arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h:17:7: error: 'BCM6368_CPU_ID' undeclared (first use in this function) | ||
24 | arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h:19:7: error: 'BCM6348_CPU_ID' undeclared (first use in this function) | ||
25 | |||
26 | make[7]: *** [drivers/mmc/core/cd-gpio.o] Error 1 | ||
27 | |||
28 | Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com> | ||
29 | Cc: linux-mips@linux-mips.org | ||
30 | Cc: Maxime Bizon <mbizon@freebox.fr> | ||
31 | Cc: Florian Fainelli <florian@openwrt.org> | ||
32 | Signed-off-by: Ralf Baechle <ralf@linux-mips.org> | ||
33 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
34 | --- | ||
35 | arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h | 1 + | ||
36 | 1 file changed, 1 insertion(+) | ||
37 | |||
38 | diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h | ||
39 | index 3999ec0..67d1ce0 100644 | ||
40 | --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h | ||
41 | +++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h | ||
42 | @@ -2,6 +2,7 @@ | ||
43 | #define BCM63XX_GPIO_H | ||
44 | |||
45 | #include <linux/init.h> | ||
46 | +#include <bcm63xx_cpu.h> | ||
47 | |||
48 | int __init bcm63xx_gpio_init(void); | ||
49 | |||
50 | -- | ||
51 | 1.7.9.5 | ||
52 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0003-cifs-Include-backup-intent-search-flags-during-searc.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0003-cifs-Include-backup-intent-search-flags-during-searc.patch new file mode 100644 index 00000000..33f7854a --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0003-cifs-Include-backup-intent-search-flags-during-searc.patch | |||
@@ -0,0 +1,152 @@ | |||
1 | From 173ad16c027991780b0eb74f6ad49ae7621647f5 Mon Sep 17 00:00:00 2001 | ||
2 | From: Shirish Pargaonkar <shirishpargaonkar@gmail.com> | ||
3 | Date: Tue, 15 May 2012 10:19:16 -0500 | ||
4 | Subject: [PATCH 03/86] cifs: Include backup intent search flags during | ||
5 | searches {try #2) | ||
6 | |||
7 | commit 2608bee744a92d60d15ff4e6e0b913d8b406aedd upstream. | ||
8 | |||
9 | As observed and suggested by Tushar Gosavi... | ||
10 | |||
11 | --------- | ||
12 | readdir calls these function to send TRANS2_FIND_FIRST and | ||
13 | TRANS2_FIND_NEXT command to the server. The current cifs module is | ||
14 | not specifying CIFS_SEARCH_BACKUP_SEARCH flag while sending these | ||
15 | command when backupuid/backupgid is specified. This can be resolved | ||
16 | by specifying CIFS_SEARCH_BACKUP_SEARCH flag. | ||
17 | --------- | ||
18 | |||
19 | Reported-and-Tested-by: Tushar Gosavi <tugosavi@in.ibm.com> | ||
20 | Signed-off-by: Shirish Pargaonkar <shirishpargaonkar@gmail.com> | ||
21 | Acked-by: Jeff Layton <jlayton@redhat.com> | ||
22 | Signed-off-by: Steve French <sfrench@us.ibm.com> | ||
23 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
24 | --- | ||
25 | fs/cifs/cifsproto.h | 6 ++++-- | ||
26 | fs/cifs/cifssmb.c | 12 +++++------- | ||
27 | fs/cifs/readdir.c | 15 +++++++++++++-- | ||
28 | 3 files changed, 22 insertions(+), 11 deletions(-) | ||
29 | |||
30 | diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h | ||
31 | index 6f4e243..26917d3 100644 | ||
32 | --- a/fs/cifs/cifsproto.h | ||
33 | +++ b/fs/cifs/cifsproto.h | ||
34 | @@ -184,11 +184,13 @@ extern int CIFSTCon(unsigned int xid, struct cifs_ses *ses, | ||
35 | |||
36 | extern int CIFSFindFirst(const int xid, struct cifs_tcon *tcon, | ||
37 | const char *searchName, const struct nls_table *nls_codepage, | ||
38 | - __u16 *searchHandle, struct cifs_search_info *psrch_inf, | ||
39 | + __u16 *searchHandle, __u16 search_flags, | ||
40 | + struct cifs_search_info *psrch_inf, | ||
41 | int map, const char dirsep); | ||
42 | |||
43 | extern int CIFSFindNext(const int xid, struct cifs_tcon *tcon, | ||
44 | - __u16 searchHandle, struct cifs_search_info *psrch_inf); | ||
45 | + __u16 searchHandle, __u16 search_flags, | ||
46 | + struct cifs_search_info *psrch_inf); | ||
47 | |||
48 | extern int CIFSFindClose(const int, struct cifs_tcon *tcon, | ||
49 | const __u16 search_handle); | ||
50 | diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c | ||
51 | index e89803b..6aa7457 100644 | ||
52 | --- a/fs/cifs/cifssmb.c | ||
53 | +++ b/fs/cifs/cifssmb.c | ||
54 | @@ -4327,7 +4327,7 @@ int | ||
55 | CIFSFindFirst(const int xid, struct cifs_tcon *tcon, | ||
56 | const char *searchName, | ||
57 | const struct nls_table *nls_codepage, | ||
58 | - __u16 *pnetfid, | ||
59 | + __u16 *pnetfid, __u16 search_flags, | ||
60 | struct cifs_search_info *psrch_inf, int remap, const char dirsep) | ||
61 | { | ||
62 | /* level 257 SMB_ */ | ||
63 | @@ -4399,8 +4399,7 @@ findFirstRetry: | ||
64 | cpu_to_le16(ATTR_READONLY | ATTR_HIDDEN | ATTR_SYSTEM | | ||
65 | ATTR_DIRECTORY); | ||
66 | pSMB->SearchCount = cpu_to_le16(CIFSMaxBufSize/sizeof(FILE_UNIX_INFO)); | ||
67 | - pSMB->SearchFlags = cpu_to_le16(CIFS_SEARCH_CLOSE_AT_END | | ||
68 | - CIFS_SEARCH_RETURN_RESUME); | ||
69 | + pSMB->SearchFlags = cpu_to_le16(search_flags); | ||
70 | pSMB->InformationLevel = cpu_to_le16(psrch_inf->info_level); | ||
71 | |||
72 | /* BB what should we set StorageType to? Does it matter? BB */ | ||
73 | @@ -4470,8 +4469,8 @@ findFirstRetry: | ||
74 | return rc; | ||
75 | } | ||
76 | |||
77 | -int CIFSFindNext(const int xid, struct cifs_tcon *tcon, | ||
78 | - __u16 searchHandle, struct cifs_search_info *psrch_inf) | ||
79 | +int CIFSFindNext(const int xid, struct cifs_tcon *tcon, __u16 searchHandle, | ||
80 | + __u16 search_flags, struct cifs_search_info *psrch_inf) | ||
81 | { | ||
82 | TRANSACTION2_FNEXT_REQ *pSMB = NULL; | ||
83 | TRANSACTION2_FNEXT_RSP *pSMBr = NULL; | ||
84 | @@ -4514,8 +4513,7 @@ int CIFSFindNext(const int xid, struct cifs_tcon *tcon, | ||
85 | cpu_to_le16(CIFSMaxBufSize / sizeof(FILE_UNIX_INFO)); | ||
86 | pSMB->InformationLevel = cpu_to_le16(psrch_inf->info_level); | ||
87 | pSMB->ResumeKey = psrch_inf->resume_key; | ||
88 | - pSMB->SearchFlags = | ||
89 | - cpu_to_le16(CIFS_SEARCH_CLOSE_AT_END | CIFS_SEARCH_RETURN_RESUME); | ||
90 | + pSMB->SearchFlags = cpu_to_le16(search_flags); | ||
91 | |||
92 | name_len = psrch_inf->resume_name_len; | ||
93 | params += name_len; | ||
94 | diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c | ||
95 | index a090bbe..db4a138 100644 | ||
96 | --- a/fs/cifs/readdir.c | ||
97 | +++ b/fs/cifs/readdir.c | ||
98 | @@ -219,6 +219,7 @@ int get_symlink_reparse_path(char *full_path, struct cifs_sb_info *cifs_sb, | ||
99 | |||
100 | static int initiate_cifs_search(const int xid, struct file *file) | ||
101 | { | ||
102 | + __u16 search_flags; | ||
103 | int rc = 0; | ||
104 | char *full_path = NULL; | ||
105 | struct cifsFileInfo *cifsFile; | ||
106 | @@ -270,8 +271,12 @@ ffirst_retry: | ||
107 | cifsFile->srch_inf.info_level = SMB_FIND_FILE_DIRECTORY_INFO; | ||
108 | } | ||
109 | |||
110 | + search_flags = CIFS_SEARCH_CLOSE_AT_END | CIFS_SEARCH_RETURN_RESUME; | ||
111 | + if (backup_cred(cifs_sb)) | ||
112 | + search_flags |= CIFS_SEARCH_BACKUP_SEARCH; | ||
113 | + | ||
114 | rc = CIFSFindFirst(xid, pTcon, full_path, cifs_sb->local_nls, | ||
115 | - &cifsFile->netfid, &cifsFile->srch_inf, | ||
116 | + &cifsFile->netfid, search_flags, &cifsFile->srch_inf, | ||
117 | cifs_sb->mnt_cifs_flags & | ||
118 | CIFS_MOUNT_MAP_SPECIAL_CHR, CIFS_DIR_SEP(cifs_sb)); | ||
119 | if (rc == 0) | ||
120 | @@ -502,11 +507,13 @@ static int cifs_save_resume_key(const char *current_entry, | ||
121 | static int find_cifs_entry(const int xid, struct cifs_tcon *pTcon, | ||
122 | struct file *file, char **ppCurrentEntry, int *num_to_ret) | ||
123 | { | ||
124 | + __u16 search_flags; | ||
125 | int rc = 0; | ||
126 | int pos_in_buf = 0; | ||
127 | loff_t first_entry_in_buffer; | ||
128 | loff_t index_to_find = file->f_pos; | ||
129 | struct cifsFileInfo *cifsFile = file->private_data; | ||
130 | + struct cifs_sb_info *cifs_sb = CIFS_SB(file->f_path.dentry->d_sb); | ||
131 | /* check if index in the buffer */ | ||
132 | |||
133 | if ((cifsFile == NULL) || (ppCurrentEntry == NULL) || | ||
134 | @@ -560,10 +567,14 @@ static int find_cifs_entry(const int xid, struct cifs_tcon *pTcon, | ||
135 | cifsFile); | ||
136 | } | ||
137 | |||
138 | + search_flags = CIFS_SEARCH_CLOSE_AT_END | CIFS_SEARCH_RETURN_RESUME; | ||
139 | + if (backup_cred(cifs_sb)) | ||
140 | + search_flags |= CIFS_SEARCH_BACKUP_SEARCH; | ||
141 | + | ||
142 | while ((index_to_find >= cifsFile->srch_inf.index_of_last_entry) && | ||
143 | (rc == 0) && !cifsFile->srch_inf.endOfSearch) { | ||
144 | cFYI(1, "calling findnext2"); | ||
145 | - rc = CIFSFindNext(xid, pTcon, cifsFile->netfid, | ||
146 | + rc = CIFSFindNext(xid, pTcon, cifsFile->netfid, search_flags, | ||
147 | &cifsFile->srch_inf); | ||
148 | /* FindFirst/Next set last_entry to NULL on malformed reply */ | ||
149 | if (cifsFile->srch_inf.last_entry) | ||
150 | -- | ||
151 | 1.7.9.5 | ||
152 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0004-sunrpc-fix-loss-of-task-tk_status-after-rpc_delay-ca.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0004-sunrpc-fix-loss-of-task-tk_status-after-rpc_delay-ca.patch new file mode 100644 index 00000000..f3aea621 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0004-sunrpc-fix-loss-of-task-tk_status-after-rpc_delay-ca.patch | |||
@@ -0,0 +1,63 @@ | |||
1 | From 0a5a9dc98eefca8c849daa43b5763fc53d672ebf Mon Sep 17 00:00:00 2001 | ||
2 | From: Trond Myklebust <Trond.Myklebust@netapp.com> | ||
3 | Date: Sat, 19 May 2012 12:12:53 -0400 | ||
4 | Subject: [PATCH 04/86] sunrpc: fix loss of task->tk_status after rpc_delay | ||
5 | call in xprt_alloc_slot | ||
6 | |||
7 | commit 1afeaf5c29aa07db25760d2fbed5c08a3aec3498 upstream. | ||
8 | |||
9 | xprt_alloc_slot will call rpc_delay() to make the task wait a bit before | ||
10 | retrying when it gets back an -ENOMEM error from xprt_dynamic_alloc_slot. | ||
11 | The problem is that rpc_delay will clear the task->tk_status, causing | ||
12 | call_reserveresult to abort the task. | ||
13 | |||
14 | The solution is simply to let call_reserveresult handle the ENOMEM error | ||
15 | directly. | ||
16 | |||
17 | Reported-by: Jeff Layton <jlayton@redhat.com> | ||
18 | Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com> | ||
19 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
20 | --- | ||
21 | net/sunrpc/clnt.c | 2 ++ | ||
22 | net/sunrpc/xprt.c | 5 +++-- | ||
23 | 2 files changed, 5 insertions(+), 2 deletions(-) | ||
24 | |||
25 | diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c | ||
26 | index f0268ea..b2250da 100644 | ||
27 | --- a/net/sunrpc/clnt.c | ||
28 | +++ b/net/sunrpc/clnt.c | ||
29 | @@ -959,6 +959,8 @@ call_reserveresult(struct rpc_task *task) | ||
30 | } | ||
31 | |||
32 | switch (status) { | ||
33 | + case -ENOMEM: | ||
34 | + rpc_delay(task, HZ >> 2); | ||
35 | case -EAGAIN: /* woken up; retry */ | ||
36 | task->tk_action = call_reserve; | ||
37 | return; | ||
38 | diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c | ||
39 | index c64c0ef..3ac9789 100644 | ||
40 | --- a/net/sunrpc/xprt.c | ||
41 | +++ b/net/sunrpc/xprt.c | ||
42 | @@ -977,15 +977,16 @@ static void xprt_alloc_slot(struct rpc_task *task) | ||
43 | goto out_init_req; | ||
44 | switch (PTR_ERR(req)) { | ||
45 | case -ENOMEM: | ||
46 | - rpc_delay(task, HZ >> 2); | ||
47 | dprintk("RPC: dynamic allocation of request slot " | ||
48 | "failed! Retrying\n"); | ||
49 | + task->tk_status = -ENOMEM; | ||
50 | break; | ||
51 | case -EAGAIN: | ||
52 | rpc_sleep_on(&xprt->backlog, task, NULL); | ||
53 | dprintk("RPC: waiting for request slot\n"); | ||
54 | + default: | ||
55 | + task->tk_status = -EAGAIN; | ||
56 | } | ||
57 | - task->tk_status = -EAGAIN; | ||
58 | return; | ||
59 | out_init_req: | ||
60 | task->tk_status = 0; | ||
61 | -- | ||
62 | 1.7.9.5 | ||
63 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0005-exofs-Fix-CRASH-on-very-early-IO-errors.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0005-exofs-Fix-CRASH-on-very-early-IO-errors.patch new file mode 100644 index 00000000..0b0abbd8 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0005-exofs-Fix-CRASH-on-very-early-IO-errors.patch | |||
@@ -0,0 +1,49 @@ | |||
1 | From afd117116e98d0444a0ace7d152207a54cc15ff5 Mon Sep 17 00:00:00 2001 | ||
2 | From: Boaz Harrosh <bharrosh@panasas.com> | ||
3 | Date: Wed, 16 May 2012 14:22:21 +0300 | ||
4 | Subject: [PATCH 05/86] exofs: Fix CRASH on very early IO errors. | ||
5 | |||
6 | commit 6abe4a87f7bc7978705c386dbba0ca0c7790b3ec upstream. | ||
7 | |||
8 | If at exofs_fill_super() we had an early termination | ||
9 | do to any error, like an IO error while reading the | ||
10 | super-block. We would crash inside exofs_free_sbi(). | ||
11 | |||
12 | This is because sbi->oc.numdevs was set to 1, before | ||
13 | we actually have a device table at all. | ||
14 | |||
15 | Fix it by moving the sbi->oc.numdevs = 1 to after the | ||
16 | allocation of the device table. | ||
17 | |||
18 | Reported-by: Johannes Schild <JSchild@gmx.de> | ||
19 | |||
20 | Stable: This is a bug since v3.2.0 | ||
21 | Signed-off-by: Boaz Harrosh <bharrosh@panasas.com> | ||
22 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
23 | --- | ||
24 | fs/exofs/super.c | 2 +- | ||
25 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
26 | |||
27 | diff --git a/fs/exofs/super.c b/fs/exofs/super.c | ||
28 | index e6085ec..7ed5000 100644 | ||
29 | --- a/fs/exofs/super.c | ||
30 | +++ b/fs/exofs/super.c | ||
31 | @@ -745,7 +745,6 @@ static int exofs_fill_super(struct super_block *sb, void *data, int silent) | ||
32 | sbi->one_comp.obj.partition = opts->pid; | ||
33 | sbi->one_comp.obj.id = 0; | ||
34 | exofs_make_credential(sbi->one_comp.cred, &sbi->one_comp.obj); | ||
35 | - sbi->oc.numdevs = 1; | ||
36 | sbi->oc.single_comp = EC_SINGLE_COMP; | ||
37 | sbi->oc.comps = &sbi->one_comp; | ||
38 | |||
39 | @@ -803,6 +802,7 @@ static int exofs_fill_super(struct super_block *sb, void *data, int silent) | ||
40 | goto free_sbi; | ||
41 | |||
42 | ore_comp_set_dev(&sbi->oc, 0, od); | ||
43 | + sbi->oc.numdevs = 1; | ||
44 | } | ||
45 | |||
46 | __sbi_read_stats(sbi); | ||
47 | -- | ||
48 | 1.7.9.5 | ||
49 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0006-cifs-fix-oops-while-traversing-open-file-list-try-4.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0006-cifs-fix-oops-while-traversing-open-file-list-try-4.patch new file mode 100644 index 00000000..d54b0cdb --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0006-cifs-fix-oops-while-traversing-open-file-list-try-4.patch | |||
@@ -0,0 +1,141 @@ | |||
1 | From 4efa0e1388965846f96dfa4afd84b6ee7560eec7 Mon Sep 17 00:00:00 2001 | ||
2 | From: Shirish Pargaonkar <shirishpargaonkar@gmail.com> | ||
3 | Date: Mon, 21 May 2012 09:20:12 -0500 | ||
4 | Subject: [PATCH 06/86] cifs: fix oops while traversing open file list (try | ||
5 | #4) | ||
6 | |||
7 | commit 2c0c2a08bed7a3b791f88d09d16ace56acb3dd98 upstream. | ||
8 | |||
9 | While traversing the linked list of open file handles, if the identfied | ||
10 | file handle is invalid, a reopen is attempted and if it fails, we | ||
11 | resume traversing where we stopped and cifs can oops while accessing | ||
12 | invalid next element, for list might have changed. | ||
13 | |||
14 | So mark the invalid file handle and attempt reopen if no | ||
15 | valid file handle is found in rest of the list. | ||
16 | If reopen fails, move the invalid file handle to the end of the list | ||
17 | and start traversing the list again from the begining. | ||
18 | Repeat this four times before giving up and returning an error if | ||
19 | file reopen keeps failing. | ||
20 | |||
21 | Signed-off-by: Shirish Pargaonkar <shirishpargaonkar@gmail.com> | ||
22 | Reviewed-by: Jeff Layton <jlayton@redhat.com> | ||
23 | Signed-off-by: Steve French <sfrench@us.ibm.com> | ||
24 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
25 | --- | ||
26 | fs/cifs/cifsglob.h | 1 + | ||
27 | fs/cifs/file.c | 57 ++++++++++++++++++++++++++++++---------------------- | ||
28 | 2 files changed, 34 insertions(+), 24 deletions(-) | ||
29 | |||
30 | diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h | ||
31 | index c467ac8..2f3ff59 100644 | ||
32 | --- a/fs/cifs/cifsglob.h | ||
33 | +++ b/fs/cifs/cifsglob.h | ||
34 | @@ -43,6 +43,7 @@ | ||
35 | |||
36 | #define CIFS_MIN_RCV_POOL 4 | ||
37 | |||
38 | +#define MAX_REOPEN_ATT 5 /* these many maximum attempts to reopen a file */ | ||
39 | /* | ||
40 | * default attribute cache timeout (jiffies) | ||
41 | */ | ||
42 | diff --git a/fs/cifs/file.c b/fs/cifs/file.c | ||
43 | index 0f7dc22..0bb785f 100644 | ||
44 | --- a/fs/cifs/file.c | ||
45 | +++ b/fs/cifs/file.c | ||
46 | @@ -1534,10 +1534,11 @@ struct cifsFileInfo *find_readable_file(struct cifsInodeInfo *cifs_inode, | ||
47 | struct cifsFileInfo *find_writable_file(struct cifsInodeInfo *cifs_inode, | ||
48 | bool fsuid_only) | ||
49 | { | ||
50 | - struct cifsFileInfo *open_file; | ||
51 | + struct cifsFileInfo *open_file, *inv_file = NULL; | ||
52 | struct cifs_sb_info *cifs_sb; | ||
53 | bool any_available = false; | ||
54 | int rc; | ||
55 | + unsigned int refind = 0; | ||
56 | |||
57 | /* Having a null inode here (because mapping->host was set to zero by | ||
58 | the VFS or MM) should not happen but we had reports of on oops (due to | ||
59 | @@ -1557,40 +1558,25 @@ struct cifsFileInfo *find_writable_file(struct cifsInodeInfo *cifs_inode, | ||
60 | |||
61 | spin_lock(&cifs_file_list_lock); | ||
62 | refind_writable: | ||
63 | + if (refind > MAX_REOPEN_ATT) { | ||
64 | + spin_unlock(&cifs_file_list_lock); | ||
65 | + return NULL; | ||
66 | + } | ||
67 | list_for_each_entry(open_file, &cifs_inode->openFileList, flist) { | ||
68 | if (!any_available && open_file->pid != current->tgid) | ||
69 | continue; | ||
70 | if (fsuid_only && open_file->uid != current_fsuid()) | ||
71 | continue; | ||
72 | if (OPEN_FMODE(open_file->f_flags) & FMODE_WRITE) { | ||
73 | - cifsFileInfo_get(open_file); | ||
74 | - | ||
75 | if (!open_file->invalidHandle) { | ||
76 | /* found a good writable file */ | ||
77 | + cifsFileInfo_get(open_file); | ||
78 | spin_unlock(&cifs_file_list_lock); | ||
79 | return open_file; | ||
80 | + } else { | ||
81 | + if (!inv_file) | ||
82 | + inv_file = open_file; | ||
83 | } | ||
84 | - | ||
85 | - spin_unlock(&cifs_file_list_lock); | ||
86 | - | ||
87 | - /* Had to unlock since following call can block */ | ||
88 | - rc = cifs_reopen_file(open_file, false); | ||
89 | - if (!rc) | ||
90 | - return open_file; | ||
91 | - | ||
92 | - /* if it fails, try another handle if possible */ | ||
93 | - cFYI(1, "wp failed on reopen file"); | ||
94 | - cifsFileInfo_put(open_file); | ||
95 | - | ||
96 | - spin_lock(&cifs_file_list_lock); | ||
97 | - | ||
98 | - /* else we simply continue to the next entry. Thus | ||
99 | - we do not loop on reopen errors. If we | ||
100 | - can not reopen the file, for example if we | ||
101 | - reconnected to a server with another client | ||
102 | - racing to delete or lock the file we would not | ||
103 | - make progress if we restarted before the beginning | ||
104 | - of the loop here. */ | ||
105 | } | ||
106 | } | ||
107 | /* couldn't find useable FH with same pid, try any available */ | ||
108 | @@ -1598,7 +1584,30 @@ refind_writable: | ||
109 | any_available = true; | ||
110 | goto refind_writable; | ||
111 | } | ||
112 | + | ||
113 | + if (inv_file) { | ||
114 | + any_available = false; | ||
115 | + cifsFileInfo_get(inv_file); | ||
116 | + } | ||
117 | + | ||
118 | spin_unlock(&cifs_file_list_lock); | ||
119 | + | ||
120 | + if (inv_file) { | ||
121 | + rc = cifs_reopen_file(inv_file, false); | ||
122 | + if (!rc) | ||
123 | + return inv_file; | ||
124 | + else { | ||
125 | + spin_lock(&cifs_file_list_lock); | ||
126 | + list_move_tail(&inv_file->flist, | ||
127 | + &cifs_inode->openFileList); | ||
128 | + spin_unlock(&cifs_file_list_lock); | ||
129 | + cifsFileInfo_put(inv_file); | ||
130 | + spin_lock(&cifs_file_list_lock); | ||
131 | + ++refind; | ||
132 | + goto refind_writable; | ||
133 | + } | ||
134 | + } | ||
135 | + | ||
136 | return NULL; | ||
137 | } | ||
138 | |||
139 | -- | ||
140 | 1.7.9.5 | ||
141 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0007-Fix-dm-multipath-starvation-when-scsi-host-is-busy.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0007-Fix-dm-multipath-starvation-when-scsi-host-is-busy.patch new file mode 100644 index 00000000..abd3752a --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0007-Fix-dm-multipath-starvation-when-scsi-host-is-busy.patch | |||
@@ -0,0 +1,61 @@ | |||
1 | From 49f60fdaf9a6a36e04829a74b3b1f28ab99dc96a Mon Sep 17 00:00:00 2001 | ||
2 | From: Jun'ichi Nomura <j-nomura@ce.jp.nec.com> | ||
3 | Date: Tue, 22 May 2012 18:57:17 +0900 | ||
4 | Subject: [PATCH 07/86] Fix dm-multipath starvation when scsi host is busy | ||
5 | |||
6 | commit b7e94a1686c5daef4f649f7f4f839cc294f07710 upstream. | ||
7 | |||
8 | block congestion control doesn't have any concept of fairness across | ||
9 | multiple queues. This means that if SCSI reports the host as busy in | ||
10 | the queue congestion control it can result in an unfair starvation | ||
11 | situation in dm-mp if there are multiple multipath devices on the same | ||
12 | host. For example: | ||
13 | http://www.redhat.com/archives/dm-devel/2012-May/msg00123.html | ||
14 | |||
15 | The fix for this is to report only the sdev busy state (and ignore the | ||
16 | host busy state) in the block congestion control call back. | ||
17 | The host is still congested, but the SCSI subsystem will sort out the | ||
18 | congestion in a fair way because it knows the relation between the | ||
19 | queues and the host. | ||
20 | |||
21 | [jejb: fixed up trailing whitespace] | ||
22 | Reported-by: Bernd Schubert <bernd.schubert@itwm.fraunhofer.de> | ||
23 | Tested-by: Bernd Schubert <bernd.schubert@itwm.fraunhofer.de> | ||
24 | Signed-off-by: Jun'ichi Nomura <j-nomura@ce.jp.nec.com> | ||
25 | Signed-off-by: James Bottomley <JBottomley@Parallels.com> | ||
26 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
27 | --- | ||
28 | drivers/scsi/scsi_lib.c | 11 +++++++---- | ||
29 | 1 file changed, 7 insertions(+), 4 deletions(-) | ||
30 | |||
31 | diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c | ||
32 | index f85cfa6..f0ab58e 100644 | ||
33 | --- a/drivers/scsi/scsi_lib.c | ||
34 | +++ b/drivers/scsi/scsi_lib.c | ||
35 | @@ -1382,16 +1382,19 @@ static int scsi_lld_busy(struct request_queue *q) | ||
36 | { | ||
37 | struct scsi_device *sdev = q->queuedata; | ||
38 | struct Scsi_Host *shost; | ||
39 | - struct scsi_target *starget; | ||
40 | |||
41 | if (!sdev) | ||
42 | return 0; | ||
43 | |||
44 | shost = sdev->host; | ||
45 | - starget = scsi_target(sdev); | ||
46 | |||
47 | - if (scsi_host_in_recovery(shost) || scsi_host_is_busy(shost) || | ||
48 | - scsi_target_is_busy(starget) || scsi_device_is_busy(sdev)) | ||
49 | + /* | ||
50 | + * Ignore host/starget busy state. | ||
51 | + * Since block layer does not have a concept of fairness across | ||
52 | + * multiple queues, congestion of host/starget needs to be handled | ||
53 | + * in SCSI layer. | ||
54 | + */ | ||
55 | + if (scsi_host_in_recovery(shost) || scsi_device_is_busy(sdev)) | ||
56 | return 1; | ||
57 | |||
58 | return 0; | ||
59 | -- | ||
60 | 1.7.9.5 | ||
61 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0008-ixp4xx-fix-compilation-by-adding-gpiolib-support.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0008-ixp4xx-fix-compilation-by-adding-gpiolib-support.patch new file mode 100644 index 00000000..57522bf1 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0008-ixp4xx-fix-compilation-by-adding-gpiolib-support.patch | |||
@@ -0,0 +1,210 @@ | |||
1 | From ee8e09be6e0d533351740fc80d291bab8e2686c3 Mon Sep 17 00:00:00 2001 | ||
2 | From: Richard Cochran <richardcochran@gmail.com> | ||
3 | Date: Wed, 23 May 2012 18:19:51 +0200 | ||
4 | Subject: [PATCH 08/86] ixp4xx: fix compilation by adding gpiolib support | ||
5 | |||
6 | commit 9dde0ae3769875ec1370cb316e50c54b57d52c1a upstream. | ||
7 | |||
8 | Once again, ixp4xx no longer even compiles. This patch fixes the issue | ||
9 | by converting over to gpiolib. This patch was first made by Imre and | ||
10 | posted by Marc, and I added in Russell's suggestion to empty the gpio | ||
11 | header file. | ||
12 | |||
13 | This fix should also go for 3.1, 3.2, 3.3, and 3.4. | ||
14 | |||
15 | Signed-off-by: Richard Cochran <richardcochran@gmail.com> | ||
16 | Signed-off-by: Arnd Bergmann <arnd@arndb.de> | ||
17 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
18 | --- | ||
19 | arch/arm/Kconfig | 2 +- | ||
20 | arch/arm/mach-ixp4xx/common.c | 48 +++++++++++++++++- | ||
21 | arch/arm/mach-ixp4xx/include/mach/gpio.h | 79 +----------------------------- | ||
22 | 3 files changed, 48 insertions(+), 81 deletions(-) | ||
23 | |||
24 | diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig | ||
25 | index 26574f0..cad2ec2 100644 | ||
26 | --- a/arch/arm/Kconfig | ||
27 | +++ b/arch/arm/Kconfig | ||
28 | @@ -520,7 +520,7 @@ config ARCH_IXP4XX | ||
29 | depends on MMU | ||
30 | select CLKSRC_MMIO | ||
31 | select CPU_XSCALE | ||
32 | - select GENERIC_GPIO | ||
33 | + select ARCH_REQUIRE_GPIOLIB | ||
34 | select GENERIC_CLOCKEVENTS | ||
35 | select HAVE_SCHED_CLOCK | ||
36 | select MIGHT_HAVE_PCI | ||
37 | diff --git a/arch/arm/mach-ixp4xx/common.c b/arch/arm/mach-ixp4xx/common.c | ||
38 | index b86a005..caf28fc 100644 | ||
39 | --- a/arch/arm/mach-ixp4xx/common.c | ||
40 | +++ b/arch/arm/mach-ixp4xx/common.c | ||
41 | @@ -29,6 +29,7 @@ | ||
42 | #include <linux/clockchips.h> | ||
43 | #include <linux/io.h> | ||
44 | #include <linux/export.h> | ||
45 | +#include <linux/gpio.h> | ||
46 | |||
47 | #include <mach/udc.h> | ||
48 | #include <mach/hardware.h> | ||
49 | @@ -106,7 +107,7 @@ static signed char irq2gpio[32] = { | ||
50 | 7, 8, 9, 10, 11, 12, -1, -1, | ||
51 | }; | ||
52 | |||
53 | -int gpio_to_irq(int gpio) | ||
54 | +static int ixp4xx_gpio_to_irq(struct gpio_chip *chip, unsigned gpio) | ||
55 | { | ||
56 | int irq; | ||
57 | |||
58 | @@ -116,7 +117,6 @@ int gpio_to_irq(int gpio) | ||
59 | } | ||
60 | return -EINVAL; | ||
61 | } | ||
62 | -EXPORT_SYMBOL(gpio_to_irq); | ||
63 | |||
64 | int irq_to_gpio(unsigned int irq) | ||
65 | { | ||
66 | @@ -376,12 +376,56 @@ static struct platform_device *ixp46x_devices[] __initdata = { | ||
67 | unsigned long ixp4xx_exp_bus_size; | ||
68 | EXPORT_SYMBOL(ixp4xx_exp_bus_size); | ||
69 | |||
70 | +static int ixp4xx_gpio_direction_input(struct gpio_chip *chip, unsigned gpio) | ||
71 | +{ | ||
72 | + gpio_line_config(gpio, IXP4XX_GPIO_IN); | ||
73 | + | ||
74 | + return 0; | ||
75 | +} | ||
76 | + | ||
77 | +static int ixp4xx_gpio_direction_output(struct gpio_chip *chip, unsigned gpio, | ||
78 | + int level) | ||
79 | +{ | ||
80 | + gpio_line_set(gpio, level); | ||
81 | + gpio_line_config(gpio, IXP4XX_GPIO_OUT); | ||
82 | + | ||
83 | + return 0; | ||
84 | +} | ||
85 | + | ||
86 | +static int ixp4xx_gpio_get_value(struct gpio_chip *chip, unsigned gpio) | ||
87 | +{ | ||
88 | + int value; | ||
89 | + | ||
90 | + gpio_line_get(gpio, &value); | ||
91 | + | ||
92 | + return value; | ||
93 | +} | ||
94 | + | ||
95 | +static void ixp4xx_gpio_set_value(struct gpio_chip *chip, unsigned gpio, | ||
96 | + int value) | ||
97 | +{ | ||
98 | + gpio_line_set(gpio, value); | ||
99 | +} | ||
100 | + | ||
101 | +static struct gpio_chip ixp4xx_gpio_chip = { | ||
102 | + .label = "IXP4XX_GPIO_CHIP", | ||
103 | + .direction_input = ixp4xx_gpio_direction_input, | ||
104 | + .direction_output = ixp4xx_gpio_direction_output, | ||
105 | + .get = ixp4xx_gpio_get_value, | ||
106 | + .set = ixp4xx_gpio_set_value, | ||
107 | + .to_irq = ixp4xx_gpio_to_irq, | ||
108 | + .base = 0, | ||
109 | + .ngpio = 16, | ||
110 | +}; | ||
111 | + | ||
112 | void __init ixp4xx_sys_init(void) | ||
113 | { | ||
114 | ixp4xx_exp_bus_size = SZ_16M; | ||
115 | |||
116 | platform_add_devices(ixp4xx_devices, ARRAY_SIZE(ixp4xx_devices)); | ||
117 | |||
118 | + gpiochip_add(&ixp4xx_gpio_chip); | ||
119 | + | ||
120 | if (cpu_is_ixp46x()) { | ||
121 | int region; | ||
122 | |||
123 | diff --git a/arch/arm/mach-ixp4xx/include/mach/gpio.h b/arch/arm/mach-ixp4xx/include/mach/gpio.h | ||
124 | index 83d6b4e..ef37f26 100644 | ||
125 | --- a/arch/arm/mach-ixp4xx/include/mach/gpio.h | ||
126 | +++ b/arch/arm/mach-ixp4xx/include/mach/gpio.h | ||
127 | @@ -1,79 +1,2 @@ | ||
128 | -/* | ||
129 | - * arch/arm/mach-ixp4xx/include/mach/gpio.h | ||
130 | - * | ||
131 | - * IXP4XX GPIO wrappers for arch-neutral GPIO calls | ||
132 | - * | ||
133 | - * Written by Milan Svoboda <msvoboda@ra.rockwell.com> | ||
134 | - * Based on PXA implementation by Philipp Zabel <philipp.zabel@gmail.com> | ||
135 | - * | ||
136 | - * This program is free software; you can redistribute it and/or modify | ||
137 | - * it under the terms of the GNU General Public License as published by | ||
138 | - * the Free Software Foundation; either version 2 of the License, or | ||
139 | - * (at your option) any later version. | ||
140 | - * | ||
141 | - * This program is distributed in the hope that it will be useful, | ||
142 | - * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
143 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
144 | - * GNU General Public License for more details. | ||
145 | - * | ||
146 | - * You should have received a copy of the GNU General Public License | ||
147 | - * along with this program; if not, write to the Free Software | ||
148 | - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
149 | - * | ||
150 | - */ | ||
151 | - | ||
152 | -#ifndef __ASM_ARCH_IXP4XX_GPIO_H | ||
153 | -#define __ASM_ARCH_IXP4XX_GPIO_H | ||
154 | - | ||
155 | -#include <linux/kernel.h> | ||
156 | -#include <mach/hardware.h> | ||
157 | - | ||
158 | -#define __ARM_GPIOLIB_COMPLEX | ||
159 | - | ||
160 | -static inline int gpio_request(unsigned gpio, const char *label) | ||
161 | -{ | ||
162 | - return 0; | ||
163 | -} | ||
164 | - | ||
165 | -static inline void gpio_free(unsigned gpio) | ||
166 | -{ | ||
167 | - might_sleep(); | ||
168 | - | ||
169 | - return; | ||
170 | -} | ||
171 | - | ||
172 | -static inline int gpio_direction_input(unsigned gpio) | ||
173 | -{ | ||
174 | - gpio_line_config(gpio, IXP4XX_GPIO_IN); | ||
175 | - return 0; | ||
176 | -} | ||
177 | - | ||
178 | -static inline int gpio_direction_output(unsigned gpio, int level) | ||
179 | -{ | ||
180 | - gpio_line_set(gpio, level); | ||
181 | - gpio_line_config(gpio, IXP4XX_GPIO_OUT); | ||
182 | - return 0; | ||
183 | -} | ||
184 | - | ||
185 | -static inline int gpio_get_value(unsigned gpio) | ||
186 | -{ | ||
187 | - int value; | ||
188 | - | ||
189 | - gpio_line_get(gpio, &value); | ||
190 | - | ||
191 | - return value; | ||
192 | -} | ||
193 | - | ||
194 | -static inline void gpio_set_value(unsigned gpio, int value) | ||
195 | -{ | ||
196 | - gpio_line_set(gpio, value); | ||
197 | -} | ||
198 | - | ||
199 | -#include <asm-generic/gpio.h> /* cansleep wrappers */ | ||
200 | - | ||
201 | -extern int gpio_to_irq(int gpio); | ||
202 | -#define gpio_to_irq gpio_to_irq | ||
203 | -extern int irq_to_gpio(unsigned int irq); | ||
204 | - | ||
205 | -#endif | ||
206 | +/* empty */ | ||
207 | |||
208 | -- | ||
209 | 1.7.9.5 | ||
210 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0009-drm-i915-properly-handle-interlaced-bit-for-sdvo-dtd.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0009-drm-i915-properly-handle-interlaced-bit-for-sdvo-dtd.patch new file mode 100644 index 00000000..c470feb4 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0009-drm-i915-properly-handle-interlaced-bit-for-sdvo-dtd.patch | |||
@@ -0,0 +1,78 @@ | |||
1 | From b519a21cd90e7ce2e8e8474c5beb3671862018b3 Mon Sep 17 00:00:00 2001 | ||
2 | From: Daniel Vetter <daniel.vetter@ffwll.ch> | ||
3 | Date: Sat, 12 May 2012 22:22:58 +0200 | ||
4 | Subject: [PATCH 09/86] drm/i915: properly handle interlaced bit for sdvo dtd | ||
5 | conversion | ||
6 | |||
7 | commit 59d92bfa5f0cdf57f82f5181b0ad6af75c3fdf41 upstream. | ||
8 | |||
9 | We've simply ignored this, which isn't too great. With this, interlaced | ||
10 | 1080i works on my HDMI screen connected through sdvo. For no apparent | ||
11 | reason anything else still doesn't work as it should. | ||
12 | |||
13 | While at it, give these magic numbers in the dtd proper names and | ||
14 | add a comment that they match with EDID detailed timings. | ||
15 | |||
16 | v2: Actually use the right bit for interlaced. | ||
17 | |||
18 | Tested-by: Peter Ross <pross@xvid.org> | ||
19 | Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com> | ||
20 | Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch> | ||
21 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
22 | --- | ||
23 | drivers/gpu/drm/i915/intel_sdvo.c | 12 ++++++++---- | ||
24 | drivers/gpu/drm/i915/intel_sdvo_regs.h | 5 +++++ | ||
25 | 2 files changed, 13 insertions(+), 4 deletions(-) | ||
26 | |||
27 | diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c | ||
28 | index 8eddcca..a8d8ee5 100644 | ||
29 | --- a/drivers/gpu/drm/i915/intel_sdvo.c | ||
30 | +++ b/drivers/gpu/drm/i915/intel_sdvo.c | ||
31 | @@ -769,10 +769,12 @@ static void intel_sdvo_get_dtd_from_mode(struct intel_sdvo_dtd *dtd, | ||
32 | ((v_sync_len & 0x30) >> 4); | ||
33 | |||
34 | dtd->part2.dtd_flags = 0x18; | ||
35 | + if (mode->flags & DRM_MODE_FLAG_INTERLACE) | ||
36 | + dtd->part2.dtd_flags |= DTD_FLAG_INTERLACE; | ||
37 | if (mode->flags & DRM_MODE_FLAG_PHSYNC) | ||
38 | - dtd->part2.dtd_flags |= 0x2; | ||
39 | + dtd->part2.dtd_flags |= DTD_FLAG_HSYNC_POSITIVE; | ||
40 | if (mode->flags & DRM_MODE_FLAG_PVSYNC) | ||
41 | - dtd->part2.dtd_flags |= 0x4; | ||
42 | + dtd->part2.dtd_flags |= DTD_FLAG_VSYNC_POSITIVE; | ||
43 | |||
44 | dtd->part2.sdvo_flags = 0; | ||
45 | dtd->part2.v_sync_off_high = v_sync_offset & 0xc0; | ||
46 | @@ -806,9 +808,11 @@ static void intel_sdvo_get_mode_from_dtd(struct drm_display_mode * mode, | ||
47 | mode->clock = dtd->part1.clock * 10; | ||
48 | |||
49 | mode->flags &= ~(DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC); | ||
50 | - if (dtd->part2.dtd_flags & 0x2) | ||
51 | + if (dtd->part2.dtd_flags & DTD_FLAG_INTERLACE) | ||
52 | + mode->flags |= DRM_MODE_FLAG_INTERLACE; | ||
53 | + if (dtd->part2.dtd_flags & DTD_FLAG_HSYNC_POSITIVE) | ||
54 | mode->flags |= DRM_MODE_FLAG_PHSYNC; | ||
55 | - if (dtd->part2.dtd_flags & 0x4) | ||
56 | + if (dtd->part2.dtd_flags & DTD_FLAG_VSYNC_POSITIVE) | ||
57 | mode->flags |= DRM_MODE_FLAG_PVSYNC; | ||
58 | } | ||
59 | |||
60 | diff --git a/drivers/gpu/drm/i915/intel_sdvo_regs.h b/drivers/gpu/drm/i915/intel_sdvo_regs.h | ||
61 | index 4aa6f34..372f33b 100644 | ||
62 | --- a/drivers/gpu/drm/i915/intel_sdvo_regs.h | ||
63 | +++ b/drivers/gpu/drm/i915/intel_sdvo_regs.h | ||
64 | @@ -61,6 +61,11 @@ struct intel_sdvo_caps { | ||
65 | u16 output_flags; | ||
66 | } __attribute__((packed)); | ||
67 | |||
68 | +/* Note: SDVO detailed timing flags match EDID misc flags. */ | ||
69 | +#define DTD_FLAG_HSYNC_POSITIVE (1 << 1) | ||
70 | +#define DTD_FLAG_VSYNC_POSITIVE (1 << 2) | ||
71 | +#define DTD_FLAG_INTERLACE (1 << 7) | ||
72 | + | ||
73 | /** This matches the EDID DTD structure, more or less */ | ||
74 | struct intel_sdvo_dtd { | ||
75 | struct { | ||
76 | -- | ||
77 | 1.7.9.5 | ||
78 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0010-drm-i915-enable-vdd-when-switching-off-the-eDP-panel.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0010-drm-i915-enable-vdd-when-switching-off-the-eDP-panel.patch new file mode 100644 index 00000000..78fa10a9 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0010-drm-i915-enable-vdd-when-switching-off-the-eDP-panel.patch | |||
@@ -0,0 +1,97 @@ | |||
1 | From d915c2455a13d5067c95770d33dd71dae5fdabf0 Mon Sep 17 00:00:00 2001 | ||
2 | From: Daniel Vetter <daniel.vetter@ffwll.ch> | ||
3 | Date: Sun, 20 May 2012 17:14:50 +0200 | ||
4 | Subject: [PATCH 10/86] drm/i915: enable vdd when switching off the eDP panel | ||
5 | |||
6 | commit 6cb49835da0426f69a2931bc2a0a8156344b0e41 upstream. | ||
7 | |||
8 | We have one bug report from a validation team that we get the eDP | ||
9 | panel sequencing still somewhat wrong: We need to enable VDD while | ||
10 | switching off the panel and backlight. Unfortunately that reporter | ||
11 | seems to have fallen off the earth :( | ||
12 | |||
13 | For another reporter this actually fixes a black panel issue because | ||
14 | without this the backlight/panel gets confused and doesn't light up | ||
15 | again. | ||
16 | |||
17 | v2: I've forgotten to remove the vdd_off call in panel_off which is | ||
18 | now bogus. This essentially reverts | ||
19 | |||
20 | commit 17038de5f16569a25343cf68668f3b657eafb00e | ||
21 | Author: Chris Wilson <chris@chris-wilson.co.uk> | ||
22 | Date: Mon Apr 16 22:43:42 2012 +0100 | ||
23 | |||
24 | drm/i915/dp: Flush any outstanding work to turn the VDD off | ||
25 | |||
26 | v3: the current panel_off code forces off the vdd power, too. Which is | ||
27 | bogus and resulted in some funny warnings later on when we've tried to | ||
28 | do aux channel communications with just the vdd forced on. Fix this, | ||
29 | too. | ||
30 | |||
31 | Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=46312 | ||
32 | Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=43163 | ||
33 | Tested-by: Vincent Frentzel <zcecc22@gmail.com> | ||
34 | Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org> | ||
35 | Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch> | ||
36 | [bwh: Backported to 3.2: nothing to revert here] | ||
37 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
38 | --- | ||
39 | drivers/gpu/drm/i915/intel_dp.c | 17 ++++++++--------- | ||
40 | 1 file changed, 8 insertions(+), 9 deletions(-) | ||
41 | |||
42 | diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c | ||
43 | index 12eb789..d4c4937 100644 | ||
44 | --- a/drivers/gpu/drm/i915/intel_dp.c | ||
45 | +++ b/drivers/gpu/drm/i915/intel_dp.c | ||
46 | @@ -1149,10 +1149,10 @@ static void ironlake_edp_panel_off(struct intel_dp *intel_dp) | ||
47 | |||
48 | DRM_DEBUG_KMS("Turn eDP power off\n"); | ||
49 | |||
50 | - WARN(intel_dp->want_panel_vdd, "Cannot turn power off while VDD is on\n"); | ||
51 | + WARN(!intel_dp->want_panel_vdd, "Need VDD to turn off panel\n"); | ||
52 | |||
53 | pp = ironlake_get_pp_control(dev_priv); | ||
54 | - pp &= ~(POWER_TARGET_ON | EDP_FORCE_VDD | PANEL_POWER_RESET | EDP_BLC_ENABLE); | ||
55 | + pp &= ~(POWER_TARGET_ON | PANEL_POWER_RESET | EDP_BLC_ENABLE); | ||
56 | I915_WRITE(PCH_PP_CONTROL, pp); | ||
57 | POSTING_READ(PCH_PP_CONTROL); | ||
58 | |||
59 | @@ -1260,18 +1260,16 @@ static void intel_dp_prepare(struct drm_encoder *encoder) | ||
60 | { | ||
61 | struct intel_dp *intel_dp = enc_to_intel_dp(encoder); | ||
62 | |||
63 | + | ||
64 | + /* Make sure the panel is off before trying to change the mode. But also | ||
65 | + * ensure that we have vdd while we switch off the panel. */ | ||
66 | + ironlake_edp_panel_vdd_on(intel_dp); | ||
67 | ironlake_edp_backlight_off(intel_dp); | ||
68 | ironlake_edp_panel_off(intel_dp); | ||
69 | |||
70 | - /* Wake up the sink first */ | ||
71 | - ironlake_edp_panel_vdd_on(intel_dp); | ||
72 | intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON); | ||
73 | intel_dp_link_down(intel_dp); | ||
74 | ironlake_edp_panel_vdd_off(intel_dp, false); | ||
75 | - | ||
76 | - /* Make sure the panel is off before trying to | ||
77 | - * change the mode | ||
78 | - */ | ||
79 | } | ||
80 | |||
81 | static void intel_dp_commit(struct drm_encoder *encoder) | ||
82 | @@ -1303,10 +1301,11 @@ intel_dp_dpms(struct drm_encoder *encoder, int mode) | ||
83 | uint32_t dp_reg = I915_READ(intel_dp->output_reg); | ||
84 | |||
85 | if (mode != DRM_MODE_DPMS_ON) { | ||
86 | + /* Switching the panel off requires vdd. */ | ||
87 | + ironlake_edp_panel_vdd_on(intel_dp); | ||
88 | ironlake_edp_backlight_off(intel_dp); | ||
89 | ironlake_edp_panel_off(intel_dp); | ||
90 | |||
91 | - ironlake_edp_panel_vdd_on(intel_dp); | ||
92 | intel_dp_sink_dpms(intel_dp, mode); | ||
93 | intel_dp_link_down(intel_dp); | ||
94 | ironlake_edp_panel_vdd_off(intel_dp, false); | ||
95 | -- | ||
96 | 1.7.9.5 | ||
97 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0011-drm-i915-Add-Clientron-E830-to-the-ignore-LVDS-list.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0011-drm-i915-Add-Clientron-E830-to-the-ignore-LVDS-list.patch new file mode 100644 index 00000000..ad6ab9f4 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0011-drm-i915-Add-Clientron-E830-to-the-ignore-LVDS-list.patch | |||
@@ -0,0 +1,37 @@ | |||
1 | From ef4b47456ac4610f22bb2920e5562a6f854193d6 Mon Sep 17 00:00:00 2001 | ||
2 | From: Joel Sass <jsass@disklessworkstations.com> | ||
3 | Date: Tue, 10 Jan 2012 13:03:55 -0500 | ||
4 | Subject: [PATCH 11/86] drm/i915: Add Clientron E830 to the ignore LVDS list | ||
5 | |||
6 | commit 44306ab302687b519a31aa498b954c1e26f95a6b upstream. | ||
7 | |||
8 | Signed-off-by: Joel Sass <jsass@disklessworkstations.com> | ||
9 | Reviewed-by: Adam Jackson <ajax@redhat.com> | ||
10 | Signed-off-by: Keith Packard <keithp@keithp.com> | ||
11 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
12 | --- | ||
13 | drivers/gpu/drm/i915/intel_lvds.c | 8 ++++++++ | ||
14 | 1 file changed, 8 insertions(+) | ||
15 | |||
16 | diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c | ||
17 | index 583c2d0..8b42354 100644 | ||
18 | --- a/drivers/gpu/drm/i915/intel_lvds.c | ||
19 | +++ b/drivers/gpu/drm/i915/intel_lvds.c | ||
20 | @@ -716,6 +716,14 @@ static const struct dmi_system_id intel_no_lvds[] = { | ||
21 | }, | ||
22 | }, | ||
23 | { | ||
24 | + .callback = intel_no_lvds_dmi_callback, | ||
25 | + .ident = "Clientron E830", | ||
26 | + .matches = { | ||
27 | + DMI_MATCH(DMI_SYS_VENDOR, "Clientron"), | ||
28 | + DMI_MATCH(DMI_PRODUCT_NAME, "E830"), | ||
29 | + }, | ||
30 | + }, | ||
31 | + { | ||
32 | .callback = intel_no_lvds_dmi_callback, | ||
33 | .ident = "Asus EeeBox PC EB1007", | ||
34 | .matches = { | ||
35 | -- | ||
36 | 1.7.9.5 | ||
37 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0012-drm-i915-Ignore-LVDS-on-hp-t5745-and-hp-st5747-thin-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0012-drm-i915-Ignore-LVDS-on-hp-t5745-and-hp-st5747-thin-.patch new file mode 100644 index 00000000..8ffca2fe --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0012-drm-i915-Ignore-LVDS-on-hp-t5745-and-hp-st5747-thin-.patch | |||
@@ -0,0 +1,54 @@ | |||
1 | From 6beb441393de6232df05c7850c99d26dd5ebbded Mon Sep 17 00:00:00 2001 | ||
2 | From: Marc Gariepy <mgariepy@ubuntu.com> | ||
3 | Date: Thu, 9 Feb 2012 09:35:21 -0500 | ||
4 | Subject: [PATCH 12/86] drm/i915: Ignore LVDS on hp t5745 and hp st5747 thin | ||
5 | client | ||
6 | |||
7 | commit f5b8a7ed0405d48fd096acce48fbefbed77fb055 upstream. | ||
8 | |||
9 | Add a no_lvds quirk for the HP t5745 and HP st5747 thin clients | ||
10 | |||
11 | dmidecode for those thin clients are attached in thoses bugs: | ||
12 | https://bugs.launchpad.net/ubuntu/+source/linux/+bug/911916 | ||
13 | https://bugs.launchpad.net/ubuntu/+source/linux/+bug/911920 | ||
14 | |||
15 | Signed-off-by: Marc Gariepy <mgariepy@ubuntu.com> | ||
16 | Acked-by: Adam Jackson <ajax@redhat.com> | ||
17 | Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> | ||
18 | [bwh: Backported to 3.2: adjust context because these quirk entries aren't | ||
19 | consistently cc'd to stable and are now being applied out of order] | ||
20 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
21 | --- | ||
22 | drivers/gpu/drm/i915/intel_lvds.c | 16 ++++++++++++++++ | ||
23 | 1 file changed, 16 insertions(+) | ||
24 | |||
25 | diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c | ||
26 | index 8b42354..8c8a242 100644 | ||
27 | --- a/drivers/gpu/drm/i915/intel_lvds.c | ||
28 | +++ b/drivers/gpu/drm/i915/intel_lvds.c | ||
29 | @@ -741,6 +741,22 @@ static const struct dmi_system_id intel_no_lvds[] = { | ||
30 | }, | ||
31 | { | ||
32 | .callback = intel_no_lvds_dmi_callback, | ||
33 | + .ident = "Hewlett-Packard t5745", | ||
34 | + .matches = { | ||
35 | + DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"), | ||
36 | + DMI_MATCH(DMI_BOARD_NAME, "hp t5745"), | ||
37 | + }, | ||
38 | + }, | ||
39 | + { | ||
40 | + .callback = intel_no_lvds_dmi_callback, | ||
41 | + .ident = "Hewlett-Packard st5747", | ||
42 | + .matches = { | ||
43 | + DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"), | ||
44 | + DMI_MATCH(DMI_BOARD_NAME, "hp st5747"), | ||
45 | + }, | ||
46 | + }, | ||
47 | + { | ||
48 | + .callback = intel_no_lvds_dmi_callback, | ||
49 | .ident = "MSI Wind Box DC500", | ||
50 | .matches = { | ||
51 | DMI_MATCH(DMI_BOARD_VENDOR, "MICRO-STAR INTERNATIONAL CO., LTD"), | ||
52 | -- | ||
53 | 1.7.9.5 | ||
54 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0013-drm-i915-no-lvds-quirk-for-HP-t5740e-Thin-Client.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0013-drm-i915-no-lvds-quirk-for-HP-t5740e-Thin-Client.patch new file mode 100644 index 00000000..dc269a7f --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0013-drm-i915-no-lvds-quirk-for-HP-t5740e-Thin-Client.patch | |||
@@ -0,0 +1,40 @@ | |||
1 | From f2171756e0e65d51316644162826fd3c64774734 Mon Sep 17 00:00:00 2001 | ||
2 | From: Jan-Benedict Glaw <jan-benedict.glaw@getslash.de> | ||
3 | Date: Tue, 22 May 2012 15:21:53 +0200 | ||
4 | Subject: [PATCH 13/86] drm/i915: no lvds quirk for HP t5740e Thin Client | ||
5 | |||
6 | commit 3347111999870c37eab1b969e90af9fdaf0334ba upstream. | ||
7 | |||
8 | This box has DisplayPort and VGA, but no LVDS. Product specs are at | ||
9 | http://h10010.www1.hp.com/wwpc/us/en/sm/WF25a/12454-12454-321959-338927-3640406-4282707.html?dnr=1 | ||
10 | and dmidecode output can be found at http://www.getslash.de/bug_attachments/dmidecode-t5740e.txt | ||
11 | |||
12 | Signed-off-by: Jan-Benedict Glaw <jbglaw@getslash.de> | ||
13 | Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> | ||
14 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
15 | --- | ||
16 | drivers/gpu/drm/i915/intel_lvds.c | 8 ++++++++ | ||
17 | 1 file changed, 8 insertions(+) | ||
18 | |||
19 | diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c | ||
20 | index 8c8a242..ceec71b 100644 | ||
21 | --- a/drivers/gpu/drm/i915/intel_lvds.c | ||
22 | +++ b/drivers/gpu/drm/i915/intel_lvds.c | ||
23 | @@ -741,6 +741,14 @@ static const struct dmi_system_id intel_no_lvds[] = { | ||
24 | }, | ||
25 | { | ||
26 | .callback = intel_no_lvds_dmi_callback, | ||
27 | + .ident = "Hewlett-Packard HP t5740e Thin Client", | ||
28 | + .matches = { | ||
29 | + DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"), | ||
30 | + DMI_MATCH(DMI_PRODUCT_NAME, "HP t5740e Thin Client"), | ||
31 | + }, | ||
32 | + }, | ||
33 | + { | ||
34 | + .callback = intel_no_lvds_dmi_callback, | ||
35 | .ident = "Hewlett-Packard t5745", | ||
36 | .matches = { | ||
37 | DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"), | ||
38 | -- | ||
39 | 1.7.9.5 | ||
40 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0014-drm-i915-wait-for-a-vblank-to-pass-after-tv-detect.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0014-drm-i915-wait-for-a-vblank-to-pass-after-tv-detect.patch new file mode 100644 index 00000000..8a83f69e --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0014-drm-i915-wait-for-a-vblank-to-pass-after-tv-detect.patch | |||
@@ -0,0 +1,66 @@ | |||
1 | From f3a0b43b245485fb298eac1ba14679bf95a2a88b Mon Sep 17 00:00:00 2001 | ||
2 | From: Daniel Vetter <daniel.vetter@ffwll.ch> | ||
3 | Date: Tue, 22 May 2012 21:41:25 +0200 | ||
4 | Subject: [PATCH 14/86] drm/i915: wait for a vblank to pass after tv detect | ||
5 | |||
6 | commit bf2125e2f7e931b50a6c76ba0435ba001409ccbf upstream. | ||
7 | |||
8 | Otherwise the hw will get confused and result in a black screen. | ||
9 | |||
10 | This regression has been most likely introduce in | ||
11 | |||
12 | commit 974b93315b2213b74a42a87e8a9d4fc8c0dbe90c | ||
13 | Author: Chris Wilson <chris@chris-wilson.co.uk> | ||
14 | Date: Sun Sep 5 00:44:20 2010 +0100 | ||
15 | |||
16 | drm/i915/tv: Poll for DAC state change | ||
17 | |||
18 | That commit replace the first msleep(20) with a busy-loop, but failed | ||
19 | to keep the 2nd msleep around. Later on we've replaced all these | ||
20 | msleep(20) by proper vblanks. | ||
21 | |||
22 | For reference also see the commit in xf86-video-intel: | ||
23 | |||
24 | commit 1142be53eb8d2ee8a9b60ace5d49f0ba27332275 | ||
25 | Author: Jesse Barnes <jbarnes@hobbes.lan> | ||
26 | Date: Mon Jun 9 08:52:59 2008 -0700 | ||
27 | |||
28 | Fix TV programming: add vblank wait after TV_CTL writes | ||
29 | |||
30 | Fxies FDO bug #14000; we need to wait for vblank after | ||
31 | writing TV_CTL or following "DPMS on" calls may not actually enable the output. | ||
32 | |||
33 | v2: As suggested by Chris Wilson, add a small comment to ensure that | ||
34 | no one accidentally removes this vblank wait again - there really | ||
35 | seems to be no sane explanation for why we need it, but it is | ||
36 | required. | ||
37 | |||
38 | Launchpad: https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/763688 | ||
39 | Reported-and-Tested-by: Robert Lowery <rglowery@exemail.com.au> | ||
40 | Cc: Rodrigo Vivi <rodrigo.vivi@gmail.com> | ||
41 | Acked-by: Chris Wilson <chris@chris-wilson.co.uk> | ||
42 | Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch> | ||
43 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
44 | --- | ||
45 | drivers/gpu/drm/i915/intel_tv.c | 5 +++++ | ||
46 | 1 file changed, 5 insertions(+) | ||
47 | |||
48 | diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c | ||
49 | index 2b1fcad..12041fa 100644 | ||
50 | --- a/drivers/gpu/drm/i915/intel_tv.c | ||
51 | +++ b/drivers/gpu/drm/i915/intel_tv.c | ||
52 | @@ -1307,6 +1307,11 @@ intel_tv_detect_type(struct intel_tv *intel_tv, | ||
53 | |||
54 | I915_WRITE(TV_DAC, save_tv_dac & ~TVDAC_STATE_CHG_EN); | ||
55 | I915_WRITE(TV_CTL, save_tv_ctl); | ||
56 | + POSTING_READ(TV_CTL); | ||
57 | + | ||
58 | + /* For unknown reasons the hw barfs if we don't do this vblank wait. */ | ||
59 | + intel_wait_for_vblank(intel_tv->base.base.dev, | ||
60 | + to_intel_crtc(intel_tv->base.base.crtc)->pipe); | ||
61 | |||
62 | /* Restore interrupt config */ | ||
63 | if (connector->polled & DRM_CONNECTOR_POLL_HPD) { | ||
64 | -- | ||
65 | 1.7.9.5 | ||
66 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0015-drm-i915-Update-GEN6_RP_CONTROL-definitions.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0015-drm-i915-Update-GEN6_RP_CONTROL-definitions.patch new file mode 100644 index 00000000..74edb53b --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0015-drm-i915-Update-GEN6_RP_CONTROL-definitions.patch | |||
@@ -0,0 +1,55 @@ | |||
1 | From f303698996052a0fcd44d1fbfbfa58a20d59a1e1 Mon Sep 17 00:00:00 2001 | ||
2 | From: Ben Widawsky <ben@bwidawsk.net> | ||
3 | Date: Mon, 12 Dec 2011 19:21:59 -0800 | ||
4 | Subject: [PATCH 15/86] drm/i915: Update GEN6_RP_CONTROL definitions | ||
5 | |||
6 | commit 6ed55ee7da15329476174bc5821dbc723f671f44 upstream. | ||
7 | |||
8 | This matches the modern specs more accurately. | ||
9 | |||
10 | This will be used by the following patch to fix the way we display RC | ||
11 | status. | ||
12 | |||
13 | Signed-off-by: Ben Widawsky <ben@bwidawsk.net> | ||
14 | Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org> | ||
15 | Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com> | ||
16 | Signed-off-by: Keith Packard <keithp@keithp.com> | ||
17 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
18 | --- | ||
19 | drivers/gpu/drm/i915/i915_reg.h | 6 +++++- | ||
20 | drivers/gpu/drm/i915/intel_display.c | 2 +- | ||
21 | 2 files changed, 6 insertions(+), 2 deletions(-) | ||
22 | |||
23 | diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h | ||
24 | index a1d53b6..06ec1e5 100644 | ||
25 | --- a/drivers/gpu/drm/i915/i915_reg.h | ||
26 | +++ b/drivers/gpu/drm/i915/i915_reg.h | ||
27 | @@ -3533,7 +3533,11 @@ | ||
28 | #define GEN6_CAGF_MASK (0x7f << GEN6_CAGF_SHIFT) | ||
29 | #define GEN6_RP_CONTROL 0xA024 | ||
30 | #define GEN6_RP_MEDIA_TURBO (1<<11) | ||
31 | -#define GEN6_RP_USE_NORMAL_FREQ (1<<9) | ||
32 | +#define GEN6_RP_MEDIA_MODE_MASK (3<<9) | ||
33 | +#define GEN6_RP_MEDIA_HW_TURBO_MODE (3<<9) | ||
34 | +#define GEN6_RP_MEDIA_HW_NORMAL_MODE (2<<9) | ||
35 | +#define GEN6_RP_MEDIA_HW_MODE (1<<9) | ||
36 | +#define GEN6_RP_MEDIA_SW_MODE (0<<9) | ||
37 | #define GEN6_RP_MEDIA_IS_GFX (1<<8) | ||
38 | #define GEN6_RP_ENABLE (1<<7) | ||
39 | #define GEN6_RP_UP_IDLE_MIN (0x1<<3) | ||
40 | diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c | ||
41 | index 3ff980d..ed27fbc 100644 | ||
42 | --- a/drivers/gpu/drm/i915/intel_display.c | ||
43 | +++ b/drivers/gpu/drm/i915/intel_display.c | ||
44 | @@ -8005,7 +8005,7 @@ void gen6_enable_rps(struct drm_i915_private *dev_priv) | ||
45 | I915_WRITE(GEN6_RP_IDLE_HYSTERSIS, 10); | ||
46 | I915_WRITE(GEN6_RP_CONTROL, | ||
47 | GEN6_RP_MEDIA_TURBO | | ||
48 | - GEN6_RP_USE_NORMAL_FREQ | | ||
49 | + GEN6_RP_MEDIA_HW_MODE | | ||
50 | GEN6_RP_MEDIA_IS_GFX | | ||
51 | GEN6_RP_ENABLE | | ||
52 | GEN6_RP_UP_BUSY_AVG | | ||
53 | -- | ||
54 | 1.7.9.5 | ||
55 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0016-drm-i915-always-use-RPNSWREQ-for-turbo-change-reques.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0016-drm-i915-always-use-RPNSWREQ-for-turbo-change-reques.patch new file mode 100644 index 00000000..5a9ce7b6 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0016-drm-i915-always-use-RPNSWREQ-for-turbo-change-reques.patch | |||
@@ -0,0 +1,39 @@ | |||
1 | From f3c8f039e644d5ce7961567174a9d5b8ebb4b447 Mon Sep 17 00:00:00 2001 | ||
2 | From: Jesse Barnes <jbarnes@virtuousgeek.org> | ||
3 | Date: Tue, 22 May 2012 09:30:33 -0700 | ||
4 | Subject: [PATCH 16/86] drm/i915: always use RPNSWREQ for turbo change | ||
5 | requests | ||
6 | |||
7 | commit 89ba829e38bd500f438bc08af4229204c8ed7f35 upstream. | ||
8 | |||
9 | Media turbo requests can either use RPVSWREQ or RPNSWREQ to indicate | ||
10 | what the interrupt handler should do. Since we only deal with the | ||
11 | latter in our turbo code, make the media engine use that for turbo | ||
12 | requests. | ||
13 | |||
14 | Tested-by: Joe Bloggsian <joebloggsian@gmail.com> | ||
15 | Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org> | ||
16 | Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com> | ||
17 | Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> | ||
18 | [bwh: Backported to 3.2: adjust filename] | ||
19 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
20 | --- | ||
21 | drivers/gpu/drm/i915/intel_display.c | 2 +- | ||
22 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
23 | |||
24 | diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c | ||
25 | index ed27fbc..41bbe78 100644 | ||
26 | --- a/drivers/gpu/drm/i915/intel_display.c | ||
27 | +++ b/drivers/gpu/drm/i915/intel_display.c | ||
28 | @@ -8005,7 +8005,7 @@ void gen6_enable_rps(struct drm_i915_private *dev_priv) | ||
29 | I915_WRITE(GEN6_RP_IDLE_HYSTERSIS, 10); | ||
30 | I915_WRITE(GEN6_RP_CONTROL, | ||
31 | GEN6_RP_MEDIA_TURBO | | ||
32 | - GEN6_RP_MEDIA_HW_MODE | | ||
33 | + GEN6_RP_MEDIA_HW_NORMAL_MODE | | ||
34 | GEN6_RP_MEDIA_IS_GFX | | ||
35 | GEN6_RP_ENABLE | | ||
36 | GEN6_RP_UP_BUSY_AVG | | ||
37 | -- | ||
38 | 1.7.9.5 | ||
39 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0017-solos-pci-Fix-DMA-support.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0017-solos-pci-Fix-DMA-support.patch new file mode 100644 index 00000000..87672915 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0017-solos-pci-Fix-DMA-support.patch | |||
@@ -0,0 +1,51 @@ | |||
1 | From 44882d3e1cf0d691b04f438f70a32e6b918961d7 Mon Sep 17 00:00:00 2001 | ||
2 | From: David Woodhouse <dwmw2@infradead.org> | ||
3 | Date: Thu, 24 May 2012 04:58:27 +0000 | ||
4 | Subject: [PATCH 17/86] solos-pci: Fix DMA support | ||
5 | |||
6 | commit b4bd8ad9bb311e8536f726f7a633620ccd358cde upstream. | ||
7 | |||
8 | DMA support has finally made its way to the top of the TODO list, having | ||
9 | realised that a Geode using MMIO can't keep up with two ADSL2+ lines | ||
10 | each running at 21Mb/s. | ||
11 | |||
12 | This patch fixes a couple of bugs in the DMA support in the driver, so | ||
13 | once the corresponding FPGA update is complete and tested everything | ||
14 | should work properly. | ||
15 | |||
16 | We weren't storing the currently-transmitting skb, so we were never | ||
17 | unmapping it and never freeing/popping it when the TX was done. | ||
18 | And the addition of pci_set_master() is fairly self-explanatory. | ||
19 | |||
20 | Signed-off-by: David Woodhouse <David.Woodhouse@intel.com> | ||
21 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
22 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
23 | --- | ||
24 | drivers/atm/solos-pci.c | 4 +++- | ||
25 | 1 file changed, 3 insertions(+), 1 deletion(-) | ||
26 | |||
27 | diff --git a/drivers/atm/solos-pci.c b/drivers/atm/solos-pci.c | ||
28 | index 5d1d076..d452592 100644 | ||
29 | --- a/drivers/atm/solos-pci.c | ||
30 | +++ b/drivers/atm/solos-pci.c | ||
31 | @@ -984,6 +984,7 @@ static uint32_t fpga_tx(struct solos_card *card) | ||
32 | } else if (skb && card->using_dma) { | ||
33 | SKB_CB(skb)->dma_addr = pci_map_single(card->dev, skb->data, | ||
34 | skb->len, PCI_DMA_TODEVICE); | ||
35 | + card->tx_skb[port] = skb; | ||
36 | iowrite32(SKB_CB(skb)->dma_addr, | ||
37 | card->config_regs + TX_DMA_ADDR(port)); | ||
38 | } | ||
39 | @@ -1152,7 +1153,8 @@ static int fpga_probe(struct pci_dev *dev, const struct pci_device_id *id) | ||
40 | db_fpga_upgrade = db_firmware_upgrade = 0; | ||
41 | } | ||
42 | |||
43 | - if (card->fpga_version >= DMA_SUPPORTED){ | ||
44 | + if (card->fpga_version >= DMA_SUPPORTED) { | ||
45 | + pci_set_master(dev); | ||
46 | card->using_dma = 1; | ||
47 | } else { | ||
48 | card->using_dma = 0; | ||
49 | -- | ||
50 | 1.7.9.5 | ||
51 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0018-microblaze-Do-not-select-GENERIC_GPIO-by-default.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0018-microblaze-Do-not-select-GENERIC_GPIO-by-default.patch new file mode 100644 index 00000000..0aa2bcaa --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0018-microblaze-Do-not-select-GENERIC_GPIO-by-default.patch | |||
@@ -0,0 +1,42 @@ | |||
1 | From d821eff0a262c36772be73973e20aea13568911e Mon Sep 17 00:00:00 2001 | ||
2 | From: Lars-Peter Clausen <lars@metafoo.de> | ||
3 | Date: Mon, 9 Apr 2012 15:05:44 +0200 | ||
4 | Subject: [PATCH 18/86] microblaze: Do not select GENERIC_GPIO by default | ||
5 | |||
6 | commit 59516b07b4ffa7e607a5787674ea3c405f1b390c upstream. | ||
7 | |||
8 | The microblaze architecture does not provide a native GPIO API implementation | ||
9 | nor requires GPIOLIB, but still selects GENERIC_GPIO by default. As a result the | ||
10 | following build error occurs, if GPIOLIB is not selected: | ||
11 | |||
12 | include/asm-generic/gpio.h: In function 'gpio_get_value_cansleep': | ||
13 | include/asm-generic/gpio.h:218: error: implicit declaration of function '__gpio_get_value' | ||
14 | include/asm-generic/gpio.h: In function 'gpio_set_value_cansleep': | ||
15 | include/asm-generic/gpio.h:224: error: implicit declaration of function '__gpio_set_value' | ||
16 | |||
17 | This patch addresses the issue by not selecting GENERIC_GPIO by default. This | ||
18 | causes the GPIO API to be stubbed out if no implementation is provided. | ||
19 | |||
20 | Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> | ||
21 | Tested-by: Michal Simek <monstr@monstr.eu> | ||
22 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
23 | --- | ||
24 | arch/microblaze/Kconfig | 2 +- | ||
25 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
26 | |||
27 | diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig | ||
28 | index e446bab..a93ed04 100644 | ||
29 | --- a/arch/microblaze/Kconfig | ||
30 | +++ b/arch/microblaze/Kconfig | ||
31 | @@ -46,7 +46,7 @@ config GENERIC_CLOCKEVENTS | ||
32 | def_bool y | ||
33 | |||
34 | config GENERIC_GPIO | ||
35 | - def_bool y | ||
36 | + bool | ||
37 | |||
38 | config GENERIC_CSUM | ||
39 | def_bool y | ||
40 | -- | ||
41 | 1.7.9.5 | ||
42 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0019-fix-boot-failure-on-32-bit-systems-caused-by-branch-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0019-fix-boot-failure-on-32-bit-systems-caused-by-branch-.patch new file mode 100644 index 00000000..5bf5053f --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0019-fix-boot-failure-on-32-bit-systems-caused-by-branch-.patch | |||
@@ -0,0 +1,49 @@ | |||
1 | From c3697804cdbf0ae3b5ae49ce49abea593e03e08c Mon Sep 17 00:00:00 2001 | ||
2 | From: John David Anglin <dave.anglin@bell.net> | ||
3 | Date: Thu, 17 May 2012 10:34:34 -0400 | ||
4 | Subject: [PATCH 19/86] fix boot failure on 32-bit systems caused by branch | ||
5 | stubs placed before .text | ||
6 | |||
7 | commit ed5fb2471b7060767957fb964eb1aaec71533ab1 upstream. | ||
8 | |||
9 | In certain configurations, the resulting kernel becomes too large to boot | ||
10 | because the linker places the long branch stubs for the merged .text section | ||
11 | at the very start of the image. As a result, the initial transfer of control | ||
12 | jumps to an unexpected location. Fix this by placing the head text in a | ||
13 | separate section so the stubs for .text are not at the start of the image. | ||
14 | |||
15 | Signed-off-by: John David Anglin <dave.anglin@bell.net> | ||
16 | Signed-off-by: James Bottomley <JBottomley@Parallels.com> | ||
17 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
18 | --- | ||
19 | arch/parisc/kernel/vmlinux.lds.S | 6 ++++-- | ||
20 | 1 file changed, 4 insertions(+), 2 deletions(-) | ||
21 | |||
22 | diff --git a/arch/parisc/kernel/vmlinux.lds.S b/arch/parisc/kernel/vmlinux.lds.S | ||
23 | index fa6f2b8..64a9998 100644 | ||
24 | --- a/arch/parisc/kernel/vmlinux.lds.S | ||
25 | +++ b/arch/parisc/kernel/vmlinux.lds.S | ||
26 | @@ -50,8 +50,10 @@ SECTIONS | ||
27 | . = KERNEL_BINARY_TEXT_START; | ||
28 | |||
29 | _text = .; /* Text and read-only data */ | ||
30 | - .text ALIGN(16) : { | ||
31 | + .head ALIGN(16) : { | ||
32 | HEAD_TEXT | ||
33 | + } = 0 | ||
34 | + .text ALIGN(16) : { | ||
35 | TEXT_TEXT | ||
36 | SCHED_TEXT | ||
37 | LOCK_TEXT | ||
38 | @@ -65,7 +67,7 @@ SECTIONS | ||
39 | *(.fixup) | ||
40 | *(.lock.text) /* out-of-line lock text */ | ||
41 | *(.gnu.warning) | ||
42 | - } = 0 | ||
43 | + } | ||
44 | /* End of text section */ | ||
45 | _etext = .; | ||
46 | |||
47 | -- | ||
48 | 1.7.9.5 | ||
49 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0020-fix-TLB-fault-path-on-PA2.0-narrow-systems.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0020-fix-TLB-fault-path-on-PA2.0-narrow-systems.patch new file mode 100644 index 00000000..45a00c5f --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0020-fix-TLB-fault-path-on-PA2.0-narrow-systems.patch | |||
@@ -0,0 +1,142 @@ | |||
1 | From 4eb3b7f46aefa5899d72767e3bf1a826fd563a7a Mon Sep 17 00:00:00 2001 | ||
2 | From: James Bottomley <JBottomley@Parallels.com> | ||
3 | Date: Mon, 21 May 2012 07:49:01 +0100 | ||
4 | Subject: [PATCH 20/86] fix TLB fault path on PA2.0 narrow systems | ||
5 | |||
6 | commit 2f649c1f6f0fef445ce79a19b79e5ce8fe9d7f19 upstream. | ||
7 | |||
8 | commit 5e185581d7c46ddd33cd9c01106d1fc86efb9376 | ||
9 | Author: James Bottomley <JBottomley@Parallels.com> | ||
10 | |||
11 | [PARISC] fix PA1.1 oops on boot | ||
12 | |||
13 | Didn't quite fix the crash on boot. It moved it from PA1.1 processors to | ||
14 | PA2.0 narrow kernels. The final fix is to make sure the [id]tlb_miss_20 paths | ||
15 | also work. Even on narrow systems, these paths require using the wide | ||
16 | instructions becuase the tlb insertion format is wide. Fix this by | ||
17 | conditioning the dep[wd],z on whether we're being called from _11 or _20[w] | ||
18 | paths. | ||
19 | |||
20 | Tested-by: Helge Deller <deller@gmx.de> | ||
21 | Signed-off-by: James Bottomley <JBottomley@Parallels.com> | ||
22 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
23 | --- | ||
24 | arch/parisc/kernel/entry.S | 30 +++++++++++++++++------------- | ||
25 | 1 file changed, 17 insertions(+), 13 deletions(-) | ||
26 | |||
27 | diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S | ||
28 | index 5350342..07ef351 100644 | ||
29 | --- a/arch/parisc/kernel/entry.S | ||
30 | +++ b/arch/parisc/kernel/entry.S | ||
31 | @@ -552,7 +552,7 @@ | ||
32 | * entry (identifying the physical page) and %r23 up with | ||
33 | * the from tlb entry (or nothing if only a to entry---for | ||
34 | * clear_user_page_asm) */ | ||
35 | - .macro do_alias spc,tmp,tmp1,va,pte,prot,fault | ||
36 | + .macro do_alias spc,tmp,tmp1,va,pte,prot,fault,patype | ||
37 | cmpib,COND(<>),n 0,\spc,\fault | ||
38 | ldil L%(TMPALIAS_MAP_START),\tmp | ||
39 | #if defined(CONFIG_64BIT) && (TMPALIAS_MAP_START >= 0x80000000) | ||
40 | @@ -581,11 +581,15 @@ | ||
41 | */ | ||
42 | cmpiclr,= 0x01,\tmp,%r0 | ||
43 | ldi (_PAGE_DIRTY|_PAGE_READ|_PAGE_WRITE),\prot | ||
44 | -#ifdef CONFIG_64BIT | ||
45 | +.ifc \patype,20 | ||
46 | depd,z \prot,8,7,\prot | ||
47 | -#else | ||
48 | +.else | ||
49 | +.ifc \patype,11 | ||
50 | depw,z \prot,8,7,\prot | ||
51 | -#endif | ||
52 | +.else | ||
53 | + .error "undefined PA type to do_alias" | ||
54 | +.endif | ||
55 | +.endif | ||
56 | /* | ||
57 | * OK, it is in the temp alias region, check whether "from" or "to". | ||
58 | * Check "subtle" note in pacache.S re: r23/r26. | ||
59 | @@ -1189,7 +1193,7 @@ dtlb_miss_20w: | ||
60 | nop | ||
61 | |||
62 | dtlb_check_alias_20w: | ||
63 | - do_alias spc,t0,t1,va,pte,prot,dtlb_fault | ||
64 | + do_alias spc,t0,t1,va,pte,prot,dtlb_fault,20 | ||
65 | |||
66 | idtlbt pte,prot | ||
67 | |||
68 | @@ -1213,7 +1217,7 @@ nadtlb_miss_20w: | ||
69 | nop | ||
70 | |||
71 | nadtlb_check_alias_20w: | ||
72 | - do_alias spc,t0,t1,va,pte,prot,nadtlb_emulate | ||
73 | + do_alias spc,t0,t1,va,pte,prot,nadtlb_emulate,20 | ||
74 | |||
75 | idtlbt pte,prot | ||
76 | |||
77 | @@ -1245,7 +1249,7 @@ dtlb_miss_11: | ||
78 | nop | ||
79 | |||
80 | dtlb_check_alias_11: | ||
81 | - do_alias spc,t0,t1,va,pte,prot,dtlb_fault | ||
82 | + do_alias spc,t0,t1,va,pte,prot,dtlb_fault,11 | ||
83 | |||
84 | idtlba pte,(va) | ||
85 | idtlbp prot,(va) | ||
86 | @@ -1277,7 +1281,7 @@ nadtlb_miss_11: | ||
87 | nop | ||
88 | |||
89 | nadtlb_check_alias_11: | ||
90 | - do_alias spc,t0,t1,va,pte,prot,nadtlb_emulate | ||
91 | + do_alias spc,t0,t1,va,pte,prot,nadtlb_emulate,11 | ||
92 | |||
93 | idtlba pte,(va) | ||
94 | idtlbp prot,(va) | ||
95 | @@ -1304,7 +1308,7 @@ dtlb_miss_20: | ||
96 | nop | ||
97 | |||
98 | dtlb_check_alias_20: | ||
99 | - do_alias spc,t0,t1,va,pte,prot,dtlb_fault | ||
100 | + do_alias spc,t0,t1,va,pte,prot,dtlb_fault,20 | ||
101 | |||
102 | idtlbt pte,prot | ||
103 | |||
104 | @@ -1330,7 +1334,7 @@ nadtlb_miss_20: | ||
105 | nop | ||
106 | |||
107 | nadtlb_check_alias_20: | ||
108 | - do_alias spc,t0,t1,va,pte,prot,nadtlb_emulate | ||
109 | + do_alias spc,t0,t1,va,pte,prot,nadtlb_emulate,20 | ||
110 | |||
111 | idtlbt pte,prot | ||
112 | |||
113 | @@ -1457,7 +1461,7 @@ naitlb_miss_20w: | ||
114 | nop | ||
115 | |||
116 | naitlb_check_alias_20w: | ||
117 | - do_alias spc,t0,t1,va,pte,prot,naitlb_fault | ||
118 | + do_alias spc,t0,t1,va,pte,prot,naitlb_fault,20 | ||
119 | |||
120 | iitlbt pte,prot | ||
121 | |||
122 | @@ -1511,7 +1515,7 @@ naitlb_miss_11: | ||
123 | nop | ||
124 | |||
125 | naitlb_check_alias_11: | ||
126 | - do_alias spc,t0,t1,va,pte,prot,itlb_fault | ||
127 | + do_alias spc,t0,t1,va,pte,prot,itlb_fault,11 | ||
128 | |||
129 | iitlba pte,(%sr0, va) | ||
130 | iitlbp prot,(%sr0, va) | ||
131 | @@ -1557,7 +1561,7 @@ naitlb_miss_20: | ||
132 | nop | ||
133 | |||
134 | naitlb_check_alias_20: | ||
135 | - do_alias spc,t0,t1,va,pte,prot,naitlb_fault | ||
136 | + do_alias spc,t0,t1,va,pte,prot,naitlb_fault,20 | ||
137 | |||
138 | iitlbt pte,prot | ||
139 | |||
140 | -- | ||
141 | 1.7.9.5 | ||
142 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0021-iwlwifi-update-BT-traffic-load-states-correctly.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0021-iwlwifi-update-BT-traffic-load-states-correctly.patch new file mode 100644 index 00000000..ae85f302 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0021-iwlwifi-update-BT-traffic-load-states-correctly.patch | |||
@@ -0,0 +1,43 @@ | |||
1 | From d6c8a717c65d6ffaf27d7eead214275785dfd47d Mon Sep 17 00:00:00 2001 | ||
2 | From: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com> | ||
3 | Date: Wed, 16 May 2012 22:35:57 +0200 | ||
4 | Subject: [PATCH 21/86] iwlwifi: update BT traffic load states correctly | ||
5 | |||
6 | commit 882dde8eb0d49ce0f853f8f4084dde56a21fe55f upstream. | ||
7 | |||
8 | When BT traffic load changes from its | ||
9 | previous state, a new LQ command needs to be | ||
10 | sent down to the firmware. This needs to | ||
11 | be done only once per change. The state | ||
12 | variable that keeps track of this change is | ||
13 | last_bt_traffic_load. However, it was not | ||
14 | being updated when the change had been | ||
15 | handled. Not updating this variable was | ||
16 | causing a flood of advanced BT config | ||
17 | commands to be sent to the firmware. Fix | ||
18 | this. | ||
19 | |||
20 | Signed-off-by: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com> | ||
21 | Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> | ||
22 | Signed-off-by: Johannes Berg <johannes.berg@intel.com> | ||
23 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
24 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
25 | --- | ||
26 | drivers/net/wireless/iwlwifi/iwl-agn-rs.c | 1 + | ||
27 | 1 file changed, 1 insertion(+) | ||
28 | |||
29 | diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c | ||
30 | index 66118ce..9ba2c1b 100644 | ||
31 | --- a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c | ||
32 | +++ b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c | ||
33 | @@ -886,6 +886,7 @@ static void rs_bt_update_lq(struct iwl_priv *priv, struct iwl_rxon_context *ctx, | ||
34 | if ((priv->bt_traffic_load != priv->last_bt_traffic_load) || | ||
35 | (priv->bt_full_concurrent != full_concurrent)) { | ||
36 | priv->bt_full_concurrent = full_concurrent; | ||
37 | + priv->last_bt_traffic_load = priv->bt_traffic_load; | ||
38 | |||
39 | /* Update uCode's rate table. */ | ||
40 | tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); | ||
41 | -- | ||
42 | 1.7.9.5 | ||
43 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0022-iwlwifi-do-not-use-shadow-registers-by-default.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0022-iwlwifi-do-not-use-shadow-registers-by-default.patch new file mode 100644 index 00000000..e07210e1 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0022-iwlwifi-do-not-use-shadow-registers-by-default.patch | |||
@@ -0,0 +1,84 @@ | |||
1 | From 1b2a3d0a7a21c97a9803bafe00e150d6b7d6b7c3 Mon Sep 17 00:00:00 2001 | ||
2 | From: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com> | ||
3 | Date: Wed, 16 May 2012 22:35:59 +0200 | ||
4 | Subject: [PATCH 22/86] iwlwifi: do not use shadow registers by default | ||
5 | |||
6 | commit 66a770729a5cdd24efed8afa5258f81232d8bba2 upstream. | ||
7 | |||
8 | Shadow registers in the device are meant to | ||
9 | allow the driver to update certain device | ||
10 | registers without needing to wake up all | ||
11 | components of the device. However, using | ||
12 | this feature in the device causes | ||
13 | communication between the driver and the | ||
14 | device to become unreliable, resulting in | ||
15 | host command timeouts. | ||
16 | |||
17 | Disable this feature by default till a fix is | ||
18 | available for the bug. | ||
19 | |||
20 | Signed-off-by: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com> | ||
21 | Signed-off-by: Johannes Berg <johannes.berg@intel.com> | ||
22 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
23 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
24 | --- | ||
25 | drivers/net/wireless/iwlwifi/iwl-2000.c | 4 ++-- | ||
26 | drivers/net/wireless/iwlwifi/iwl-6000.c | 6 +++--- | ||
27 | 2 files changed, 5 insertions(+), 5 deletions(-) | ||
28 | |||
29 | diff --git a/drivers/net/wireless/iwlwifi/iwl-2000.c b/drivers/net/wireless/iwlwifi/iwl-2000.c | ||
30 | index 9823e41..a97a52a 100644 | ||
31 | --- a/drivers/net/wireless/iwlwifi/iwl-2000.c | ||
32 | +++ b/drivers/net/wireless/iwlwifi/iwl-2000.c | ||
33 | @@ -211,7 +211,7 @@ static struct iwl_base_params iwl2000_base_params = { | ||
34 | .chain_noise_scale = 1000, | ||
35 | .wd_timeout = IWL_DEF_WD_TIMEOUT, | ||
36 | .max_event_log_size = 512, | ||
37 | - .shadow_reg_enable = true, | ||
38 | + .shadow_reg_enable = false, /* TODO: fix bugs using this feature */ | ||
39 | .hd_v2 = true, | ||
40 | }; | ||
41 | |||
42 | @@ -230,7 +230,7 @@ static struct iwl_base_params iwl2030_base_params = { | ||
43 | .chain_noise_scale = 1000, | ||
44 | .wd_timeout = IWL_LONG_WD_TIMEOUT, | ||
45 | .max_event_log_size = 512, | ||
46 | - .shadow_reg_enable = true, | ||
47 | + .shadow_reg_enable = false, /* TODO: fix bugs using this feature */ | ||
48 | .hd_v2 = true, | ||
49 | }; | ||
50 | |||
51 | diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c | ||
52 | index b4f809c..0b9f797 100644 | ||
53 | --- a/drivers/net/wireless/iwlwifi/iwl-6000.c | ||
54 | +++ b/drivers/net/wireless/iwlwifi/iwl-6000.c | ||
55 | @@ -308,7 +308,7 @@ static struct iwl_base_params iwl6000_base_params = { | ||
56 | .chain_noise_scale = 1000, | ||
57 | .wd_timeout = IWL_DEF_WD_TIMEOUT, | ||
58 | .max_event_log_size = 512, | ||
59 | - .shadow_reg_enable = true, | ||
60 | + .shadow_reg_enable = false, /* TODO: fix bugs using this feature */ | ||
61 | }; | ||
62 | |||
63 | static struct iwl_base_params iwl6050_base_params = { | ||
64 | @@ -325,7 +325,7 @@ static struct iwl_base_params iwl6050_base_params = { | ||
65 | .chain_noise_scale = 1500, | ||
66 | .wd_timeout = IWL_DEF_WD_TIMEOUT, | ||
67 | .max_event_log_size = 1024, | ||
68 | - .shadow_reg_enable = true, | ||
69 | + .shadow_reg_enable = false, /* TODO: fix bugs using this feature */ | ||
70 | }; | ||
71 | static struct iwl_base_params iwl6000_g2_base_params = { | ||
72 | .eeprom_size = OTP_LOW_IMAGE_SIZE, | ||
73 | @@ -341,7 +341,7 @@ static struct iwl_base_params iwl6000_g2_base_params = { | ||
74 | .chain_noise_scale = 1000, | ||
75 | .wd_timeout = IWL_LONG_WD_TIMEOUT, | ||
76 | .max_event_log_size = 512, | ||
77 | - .shadow_reg_enable = true, | ||
78 | + .shadow_reg_enable = false, /* TODO: fix bugs using this feature */ | ||
79 | }; | ||
80 | |||
81 | static struct iwl_ht_params iwl6000_ht_params = { | ||
82 | -- | ||
83 | 1.7.9.5 | ||
84 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0023-wl1251-fix-oops-on-early-interrupt.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0023-wl1251-fix-oops-on-early-interrupt.patch new file mode 100644 index 00000000..63e29df7 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0023-wl1251-fix-oops-on-early-interrupt.patch | |||
@@ -0,0 +1,69 @@ | |||
1 | From 430e704f68d8b8c21a7d764e1f0ea94614a303e2 Mon Sep 17 00:00:00 2001 | ||
2 | From: Grazvydas Ignotas <notasas@gmail.com> | ||
3 | Date: Fri, 18 May 2012 03:04:08 +0300 | ||
4 | Subject: [PATCH 23/86] wl1251: fix oops on early interrupt | ||
5 | |||
6 | commit f380f2c4a12e913356bd49f8790ec1063c4fe9f8 upstream. | ||
7 | |||
8 | This driver disables interrupt just after requesting it and enables it | ||
9 | later, after interface is up. However currently there is a time window | ||
10 | between request_irq() and disable_irq() where if interrupt arrives, the | ||
11 | driver oopses because it's not yet ready to process it. This can be | ||
12 | reproduced by inserting the module, associating and removing the module | ||
13 | multiple times. | ||
14 | |||
15 | Eliminate this race by setting IRQF_NOAUTOEN flag before request_irq(). | ||
16 | |||
17 | Signed-off-by: Grazvydas Ignotas <notasas@gmail.com> | ||
18 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
19 | [bwh: Backported to 3.2: adjust filename] | ||
20 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
21 | --- | ||
22 | drivers/net/wireless/wl1251/sdio.c | 2 +- | ||
23 | drivers/net/wireless/wl1251/spi.c | 3 +-- | ||
24 | 2 files changed, 2 insertions(+), 3 deletions(-) | ||
25 | |||
26 | diff --git a/drivers/net/wireless/wl1251/sdio.c b/drivers/net/wireless/wl1251/sdio.c | ||
27 | index 1b851f6..e2750a1 100644 | ||
28 | --- a/drivers/net/wireless/wl1251/sdio.c | ||
29 | +++ b/drivers/net/wireless/wl1251/sdio.c | ||
30 | @@ -260,6 +260,7 @@ static int wl1251_sdio_probe(struct sdio_func *func, | ||
31 | } | ||
32 | |||
33 | if (wl->irq) { | ||
34 | + irq_set_status_flags(wl->irq, IRQ_NOAUTOEN); | ||
35 | ret = request_irq(wl->irq, wl1251_line_irq, 0, "wl1251", wl); | ||
36 | if (ret < 0) { | ||
37 | wl1251_error("request_irq() failed: %d", ret); | ||
38 | @@ -267,7 +268,6 @@ static int wl1251_sdio_probe(struct sdio_func *func, | ||
39 | } | ||
40 | |||
41 | irq_set_irq_type(wl->irq, IRQ_TYPE_EDGE_RISING); | ||
42 | - disable_irq(wl->irq); | ||
43 | |||
44 | wl1251_sdio_ops.enable_irq = wl1251_enable_line_irq; | ||
45 | wl1251_sdio_ops.disable_irq = wl1251_disable_line_irq; | ||
46 | diff --git a/drivers/net/wireless/wl1251/spi.c b/drivers/net/wireless/wl1251/spi.c | ||
47 | index eaa5f95..134ae9c 100644 | ||
48 | --- a/drivers/net/wireless/wl1251/spi.c | ||
49 | +++ b/drivers/net/wireless/wl1251/spi.c | ||
50 | @@ -281,6 +281,7 @@ static int __devinit wl1251_spi_probe(struct spi_device *spi) | ||
51 | |||
52 | wl->use_eeprom = pdata->use_eeprom; | ||
53 | |||
54 | + irq_set_status_flags(wl->irq, IRQ_NOAUTOEN); | ||
55 | ret = request_irq(wl->irq, wl1251_irq, 0, DRIVER_NAME, wl); | ||
56 | if (ret < 0) { | ||
57 | wl1251_error("request_irq() failed: %d", ret); | ||
58 | @@ -289,8 +290,6 @@ static int __devinit wl1251_spi_probe(struct spi_device *spi) | ||
59 | |||
60 | irq_set_irq_type(wl->irq, IRQ_TYPE_EDGE_RISING); | ||
61 | |||
62 | - disable_irq(wl->irq); | ||
63 | - | ||
64 | ret = wl1251_init_ieee80211(wl); | ||
65 | if (ret) | ||
66 | goto out_irq; | ||
67 | -- | ||
68 | 1.7.9.5 | ||
69 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0024-NFSv4-Map-NFS4ERR_SHARE_DENIED-into-an-EACCES-error-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0024-NFSv4-Map-NFS4ERR_SHARE_DENIED-into-an-EACCES-error-.patch new file mode 100644 index 00000000..0eacfc1b --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0024-NFSv4-Map-NFS4ERR_SHARE_DENIED-into-an-EACCES-error-.patch | |||
@@ -0,0 +1,37 @@ | |||
1 | From b93bea69232a6e245feb4094ffbb43181a057a31 Mon Sep 17 00:00:00 2001 | ||
2 | From: Trond Myklebust <Trond.Myklebust@netapp.com> | ||
3 | Date: Mon, 28 May 2012 11:36:28 -0400 | ||
4 | Subject: [PATCH 24/86] NFSv4: Map NFS4ERR_SHARE_DENIED into an EACCES error | ||
5 | instead of EIO | ||
6 | |||
7 | commit fb13bfa7e1bcfdcfdece47c24b62f1a1cad957e9 upstream. | ||
8 | |||
9 | If a file OPEN is denied due to a share lock, the resulting | ||
10 | NFS4ERR_SHARE_DENIED is currently mapped to the default EIO. | ||
11 | This patch adds a more appropriate mapping, and brings Linux | ||
12 | into line with what Solaris 10 does. | ||
13 | |||
14 | See https://bugzilla.kernel.org/show_bug.cgi?id=43286 | ||
15 | |||
16 | Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com> | ||
17 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
18 | --- | ||
19 | fs/nfs/nfs4proc.c | 2 ++ | ||
20 | 1 file changed, 2 insertions(+) | ||
21 | |||
22 | diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c | ||
23 | index 03d9b90..a3cae5d 100644 | ||
24 | --- a/fs/nfs/nfs4proc.c | ||
25 | +++ b/fs/nfs/nfs4proc.c | ||
26 | @@ -96,6 +96,8 @@ static int nfs4_map_errors(int err) | ||
27 | case -NFS4ERR_BADOWNER: | ||
28 | case -NFS4ERR_BADNAME: | ||
29 | return -EINVAL; | ||
30 | + case -NFS4ERR_SHARE_DENIED: | ||
31 | + return -EACCES; | ||
32 | default: | ||
33 | dprintk("%s could not handle NFSv4 error %d\n", | ||
34 | __func__, -err); | ||
35 | -- | ||
36 | 1.7.9.5 | ||
37 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0025-drm-radeon-fix-XFX-quirk.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0025-drm-radeon-fix-XFX-quirk.patch new file mode 100644 index 00000000..4f3f1651 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0025-drm-radeon-fix-XFX-quirk.patch | |||
@@ -0,0 +1,40 @@ | |||
1 | From cce4054d32b88b0f9402746063937e36af798333 Mon Sep 17 00:00:00 2001 | ||
2 | From: Alex Deucher <alexander.deucher@amd.com> | ||
3 | Date: Wed, 23 May 2012 11:48:59 -0400 | ||
4 | Subject: [PATCH 25/86] drm/radeon: fix XFX quirk | ||
5 | |||
6 | commit 1ebf169ad4dc68f18cc0dab35163b0f324fc6c41 upstream. | ||
7 | |||
8 | Only override the ddc bus if the connector doesn't have | ||
9 | a valid one. The existing code overrode the ddc bus for | ||
10 | all connectors even if it had ddc bus. | ||
11 | |||
12 | Fixes ddc on another XFX card with the same pci ids that | ||
13 | was broken by the quirk overwriting the correct ddc bus. | ||
14 | |||
15 | Reported-by: Mehdi Aqadjani Memar <m.aqadjanimemar@student.ru.nl> | ||
16 | Signed-off-by: Alex Deucher <alexander.deucher@amd.com> | ||
17 | Signed-off-by: Dave Airlie <airlied@redhat.com> | ||
18 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
19 | --- | ||
20 | drivers/gpu/drm/radeon/radeon_atombios.c | 4 +++- | ||
21 | 1 file changed, 3 insertions(+), 1 deletion(-) | ||
22 | |||
23 | diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c | ||
24 | index 8e1532f..9d2c369 100644 | ||
25 | --- a/drivers/gpu/drm/radeon/radeon_atombios.c | ||
26 | +++ b/drivers/gpu/drm/radeon/radeon_atombios.c | ||
27 | @@ -438,7 +438,9 @@ static bool radeon_atom_apply_quirks(struct drm_device *dev, | ||
28 | */ | ||
29 | if ((dev->pdev->device == 0x9498) && | ||
30 | (dev->pdev->subsystem_vendor == 0x1682) && | ||
31 | - (dev->pdev->subsystem_device == 0x2452)) { | ||
32 | + (dev->pdev->subsystem_device == 0x2452) && | ||
33 | + (i2c_bus->valid == false) && | ||
34 | + !(supported_device & (ATOM_DEVICE_TV_SUPPORT | ATOM_DEVICE_CV_SUPPORT))) { | ||
35 | struct radeon_device *rdev = dev->dev_private; | ||
36 | *i2c_bus = radeon_lookup_i2c_gpio(rdev, 0x93); | ||
37 | } | ||
38 | -- | ||
39 | 1.7.9.5 | ||
40 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0026-ath9k-fix-a-use-after-free-bug-when-ath_tx_setup_buf.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0026-ath9k-fix-a-use-after-free-bug-when-ath_tx_setup_buf.patch new file mode 100644 index 00000000..ee6bd618 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0026-ath9k-fix-a-use-after-free-bug-when-ath_tx_setup_buf.patch | |||
@@ -0,0 +1,92 @@ | |||
1 | From 1e0f99c0848ee2dfcc5a814f141c2c81c20a23ca Mon Sep 17 00:00:00 2001 | ||
2 | From: Felix Fietkau <nbd@openwrt.org> | ||
3 | Date: Thu, 24 May 2012 14:32:20 +0200 | ||
4 | Subject: [PATCH 26/86] ath9k: fix a use-after-free-bug when | ||
5 | ath_tx_setup_buffer() fails | ||
6 | |||
7 | commit 81357a281dcc454841532c46b30e6f2ba12b73ea upstream. | ||
8 | |||
9 | ath_tx_setup_buffer() can fail if there is no ath_buf left, or if mapping DMA | ||
10 | failed. In this case it frees the skb passed to it. | ||
11 | If ath_tx_setup_buffer is called from ath_tx_form_aggr, the skb is still | ||
12 | linked into the tid buffer list and must be dequeued before being released. | ||
13 | |||
14 | Signed-off-by: Felix Fietkau <nbd@openwrt.org> | ||
15 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | drivers/net/wireless/ath/ath9k/xmit.c | 16 ++++++++++------ | ||
19 | 1 file changed, 10 insertions(+), 6 deletions(-) | ||
20 | |||
21 | diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c | ||
22 | index 03b0a65..76fd277 100644 | ||
23 | --- a/drivers/net/wireless/ath/ath9k/xmit.c | ||
24 | +++ b/drivers/net/wireless/ath/ath9k/xmit.c | ||
25 | @@ -64,7 +64,8 @@ static void ath_tx_update_baw(struct ath_softc *sc, struct ath_atx_tid *tid, | ||
26 | static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc, | ||
27 | struct ath_txq *txq, | ||
28 | struct ath_atx_tid *tid, | ||
29 | - struct sk_buff *skb); | ||
30 | + struct sk_buff *skb, | ||
31 | + bool dequeue); | ||
32 | |||
33 | enum { | ||
34 | MCS_HT20, | ||
35 | @@ -761,7 +762,7 @@ static enum ATH_AGGR_STATUS ath_tx_form_aggr(struct ath_softc *sc, | ||
36 | fi = get_frame_info(skb); | ||
37 | bf = fi->bf; | ||
38 | if (!fi->bf) | ||
39 | - bf = ath_tx_setup_buffer(sc, txq, tid, skb); | ||
40 | + bf = ath_tx_setup_buffer(sc, txq, tid, skb, true); | ||
41 | |||
42 | if (!bf) | ||
43 | continue; | ||
44 | @@ -1669,7 +1670,7 @@ static void ath_tx_send_ampdu(struct ath_softc *sc, struct ath_atx_tid *tid, | ||
45 | return; | ||
46 | } | ||
47 | |||
48 | - bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb); | ||
49 | + bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb, false); | ||
50 | if (!bf) | ||
51 | return; | ||
52 | |||
53 | @@ -1696,7 +1697,7 @@ static void ath_tx_send_normal(struct ath_softc *sc, struct ath_txq *txq, | ||
54 | |||
55 | bf = fi->bf; | ||
56 | if (!bf) | ||
57 | - bf = ath_tx_setup_buffer(sc, txq, tid, skb); | ||
58 | + bf = ath_tx_setup_buffer(sc, txq, tid, skb, false); | ||
59 | |||
60 | if (!bf) | ||
61 | return; | ||
62 | @@ -1761,7 +1762,8 @@ u8 ath_txchainmask_reduction(struct ath_softc *sc, u8 chainmask, u32 rate) | ||
63 | static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc, | ||
64 | struct ath_txq *txq, | ||
65 | struct ath_atx_tid *tid, | ||
66 | - struct sk_buff *skb) | ||
67 | + struct sk_buff *skb, | ||
68 | + bool dequeue) | ||
69 | { | ||
70 | struct ath_common *common = ath9k_hw_common(sc->sc_ah); | ||
71 | struct ath_frame_info *fi = get_frame_info(skb); | ||
72 | @@ -1802,6 +1804,8 @@ static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc, | ||
73 | return bf; | ||
74 | |||
75 | error: | ||
76 | + if (dequeue) | ||
77 | + __skb_unlink(skb, &tid->buf_q); | ||
78 | dev_kfree_skb_any(skb); | ||
79 | return NULL; | ||
80 | } | ||
81 | @@ -1833,7 +1837,7 @@ static void ath_tx_start_dma(struct ath_softc *sc, struct sk_buff *skb, | ||
82 | */ | ||
83 | ath_tx_send_ampdu(sc, tid, skb, txctl); | ||
84 | } else { | ||
85 | - bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb); | ||
86 | + bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb, false); | ||
87 | if (!bf) | ||
88 | goto out; | ||
89 | |||
90 | -- | ||
91 | 1.7.9.5 | ||
92 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0027-mac80211-fix-ADDBA-declined-after-suspend-with-wowla.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0027-mac80211-fix-ADDBA-declined-after-suspend-with-wowla.patch new file mode 100644 index 00000000..d357b19b --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0027-mac80211-fix-ADDBA-declined-after-suspend-with-wowla.patch | |||
@@ -0,0 +1,53 @@ | |||
1 | From 8446a84cc5885f2d4b3816dccac474f97fc047a9 Mon Sep 17 00:00:00 2001 | ||
2 | From: Eyal Shapira <eyal@wizery.com> | ||
3 | Date: Tue, 29 May 2012 02:00:22 -0700 | ||
4 | Subject: [PATCH 27/86] mac80211: fix ADDBA declined after suspend with wowlan | ||
5 | |||
6 | commit 7b21aea04d084916ac4e0e8852dcc9cd60ec0d1d upstream. | ||
7 | |||
8 | WLAN_STA_BLOCK_BA is set while suspending but doesn't get cleared | ||
9 | when resuming in case of wowlan. This causes further ADDBA requests | ||
10 | received to be rejected. Fix it by clearing it in the wowlan path | ||
11 | as well. | ||
12 | |||
13 | Signed-off-by: Eyal Shapira <eyal@wizery.com> | ||
14 | Reviewed-by: Johannes Berg <johannes@sipsolutions.net> | ||
15 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | net/mac80211/util.c | 12 ++++++------ | ||
19 | 1 file changed, 6 insertions(+), 6 deletions(-) | ||
20 | |||
21 | diff --git a/net/mac80211/util.c b/net/mac80211/util.c | ||
22 | index d5230ec..7095ae5 100644 | ||
23 | --- a/net/mac80211/util.c | ||
24 | +++ b/net/mac80211/util.c | ||
25 | @@ -1111,6 +1111,12 @@ int ieee80211_reconfig(struct ieee80211_local *local) | ||
26 | } | ||
27 | } | ||
28 | |||
29 | + /* add back keys */ | ||
30 | + list_for_each_entry(sdata, &local->interfaces, list) | ||
31 | + if (ieee80211_sdata_running(sdata)) | ||
32 | + ieee80211_enable_keys(sdata); | ||
33 | + | ||
34 | + wake_up: | ||
35 | /* | ||
36 | * Clear the WLAN_STA_BLOCK_BA flag so new aggregation | ||
37 | * sessions can be established after a resume. | ||
38 | @@ -1132,12 +1138,6 @@ int ieee80211_reconfig(struct ieee80211_local *local) | ||
39 | mutex_unlock(&local->sta_mtx); | ||
40 | } | ||
41 | |||
42 | - /* add back keys */ | ||
43 | - list_for_each_entry(sdata, &local->interfaces, list) | ||
44 | - if (ieee80211_sdata_running(sdata)) | ||
45 | - ieee80211_enable_keys(sdata); | ||
46 | - | ||
47 | - wake_up: | ||
48 | ieee80211_wake_queues_by_reason(hw, | ||
49 | IEEE80211_QUEUE_STOP_REASON_SUSPEND); | ||
50 | |||
51 | -- | ||
52 | 1.7.9.5 | ||
53 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0028-mm-fork-fix-overflow-in-vma-length-when-copying-mmap.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0028-mm-fork-fix-overflow-in-vma-length-when-copying-mmap.patch new file mode 100644 index 00000000..56441d00 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0028-mm-fork-fix-overflow-in-vma-length-when-copying-mmap.patch | |||
@@ -0,0 +1,81 @@ | |||
1 | From 078ef70fff8b069bb9bc4eb27aa649ee8aa977dd Mon Sep 17 00:00:00 2001 | ||
2 | From: Siddhesh Poyarekar <siddhesh.poyarekar@gmail.com> | ||
3 | Date: Tue, 29 May 2012 15:06:22 -0700 | ||
4 | Subject: [PATCH 28/86] mm/fork: fix overflow in vma length when copying mmap | ||
5 | on clone | ||
6 | |||
7 | commit 7edc8b0ac16cbaed7cb4ea4c6b95ce98d2997e84 upstream. | ||
8 | |||
9 | The vma length in dup_mmap is calculated and stored in a unsigned int, | ||
10 | which is insufficient and hence overflows for very large maps (beyond | ||
11 | 16TB). The following program demonstrates this: | ||
12 | |||
13 | #include <stdio.h> | ||
14 | #include <unistd.h> | ||
15 | #include <sys/mman.h> | ||
16 | |||
17 | #define GIG 1024 * 1024 * 1024L | ||
18 | #define EXTENT 16393 | ||
19 | |||
20 | int main(void) | ||
21 | { | ||
22 | int i, r; | ||
23 | void *m; | ||
24 | char buf[1024]; | ||
25 | |||
26 | for (i = 0; i < EXTENT; i++) { | ||
27 | m = mmap(NULL, (size_t) 1 * 1024 * 1024 * 1024L, | ||
28 | PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); | ||
29 | |||
30 | if (m == (void *)-1) | ||
31 | printf("MMAP Failed: %d\n", m); | ||
32 | else | ||
33 | printf("%d : MMAP returned %p\n", i, m); | ||
34 | |||
35 | r = fork(); | ||
36 | |||
37 | if (r == 0) { | ||
38 | printf("%d: successed\n", i); | ||
39 | return 0; | ||
40 | } else if (r < 0) | ||
41 | printf("FORK Failed: %d\n", r); | ||
42 | else if (r > 0) | ||
43 | wait(NULL); | ||
44 | } | ||
45 | return 0; | ||
46 | } | ||
47 | |||
48 | Increase the storage size of the result to unsigned long, which is | ||
49 | sufficient for storing the difference between addresses. | ||
50 | |||
51 | Signed-off-by: Siddhesh Poyarekar <siddhesh.poyarekar@gmail.com> | ||
52 | Cc: Tejun Heo <tj@kernel.org> | ||
53 | Cc: Oleg Nesterov <oleg@redhat.com> | ||
54 | Cc: Jens Axboe <axboe@kernel.dk> | ||
55 | Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> | ||
56 | Acked-by: Hugh Dickins <hughd@google.com> | ||
57 | Signed-off-by: Andrew Morton <akpm@linux-foundation.org> | ||
58 | Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> | ||
59 | [bwh: Backported to 3.2: adjust context] | ||
60 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
61 | --- | ||
62 | kernel/fork.c | 3 ++- | ||
63 | 1 file changed, 2 insertions(+), 1 deletion(-) | ||
64 | |||
65 | diff --git a/kernel/fork.c b/kernel/fork.c | ||
66 | index 26f1ab0..79ee71f 100644 | ||
67 | --- a/kernel/fork.c | ||
68 | +++ b/kernel/fork.c | ||
69 | @@ -352,7 +352,8 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) | ||
70 | } | ||
71 | charge = 0; | ||
72 | if (mpnt->vm_flags & VM_ACCOUNT) { | ||
73 | - unsigned int len = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT; | ||
74 | + unsigned long len; | ||
75 | + len = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT; | ||
76 | if (security_vm_enough_memory(len)) | ||
77 | goto fail_nomem; | ||
78 | charge = len; | ||
79 | -- | ||
80 | 1.7.9.5 | ||
81 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0029-mm-consider-all-swapped-back-pages-in-used-once-logi.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0029-mm-consider-all-swapped-back-pages-in-used-once-logi.patch new file mode 100644 index 00000000..efa5eeb7 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0029-mm-consider-all-swapped-back-pages-in-used-once-logi.patch | |||
@@ -0,0 +1,65 @@ | |||
1 | From cf8d6db03ffac6e6a8fa566942bb47d2cc2957bf Mon Sep 17 00:00:00 2001 | ||
2 | From: Michal Hocko <mhocko@suse.cz> | ||
3 | Date: Tue, 29 May 2012 15:06:45 -0700 | ||
4 | Subject: [PATCH 29/86] mm: consider all swapped back pages in used-once logic | ||
5 | |||
6 | commit e48982734ea0500d1eba4f9d96195acc5406cad6 upstream. | ||
7 | |||
8 | Commit 645747462435 ("vmscan: detect mapped file pages used only once") | ||
9 | made mapped pages have another round in inactive list because they might | ||
10 | be just short lived and so we could consider them again next time. This | ||
11 | heuristic helps to reduce pressure on the active list with a streaming | ||
12 | IO worklods. | ||
13 | |||
14 | This patch fixes a regression introduced by this commit for heavy shmem | ||
15 | based workloads because unlike Anon pages, which are excluded from this | ||
16 | heuristic because they are usually long lived, shmem pages are handled | ||
17 | as a regular page cache. | ||
18 | |||
19 | This doesn't work quite well, unfortunately, if the workload is mostly | ||
20 | backed by shmem (in memory database sitting on 80% of memory) with a | ||
21 | streaming IO in the background (backup - up to 20% of memory). Anon | ||
22 | inactive list is full of (dirty) shmem pages when watermarks are hit. | ||
23 | Shmem pages are kept in the inactive list (they are referenced) in the | ||
24 | first round and it is hard to reclaim anything else so we reach lower | ||
25 | scanning priorities very quickly which leads to an excessive swap out. | ||
26 | |||
27 | Let's fix this by excluding all swap backed pages (they tend to be long | ||
28 | lived wrt. the regular page cache anyway) from used-once heuristic and | ||
29 | rather activate them if they are referenced. | ||
30 | |||
31 | The customer's workload is shmem backed database (80% of RAM) and they | ||
32 | are measuring transactions/s with an IO in the background (20%). | ||
33 | Transactions touch more or less random rows in the table. The | ||
34 | transaction rate fell by a factor of 3 (in the worst case) because of | ||
35 | commit 64574746. This patch restores the previous numbers. | ||
36 | |||
37 | Signed-off-by: Michal Hocko <mhocko@suse.cz> | ||
38 | Acked-by: Johannes Weiner <hannes@cmpxchg.org> | ||
39 | Cc: Mel Gorman <mel@csn.ul.ie> | ||
40 | Cc: Minchan Kim <minchan@kernel.org> | ||
41 | Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> | ||
42 | Reviewed-by: Rik van Riel <riel@redhat.com> | ||
43 | Signed-off-by: Andrew Morton <akpm@linux-foundation.org> | ||
44 | Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> | ||
45 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
46 | --- | ||
47 | mm/vmscan.c | 2 +- | ||
48 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
49 | |||
50 | diff --git a/mm/vmscan.c b/mm/vmscan.c | ||
51 | index cb33d9c..fbe2d2c 100644 | ||
52 | --- a/mm/vmscan.c | ||
53 | +++ b/mm/vmscan.c | ||
54 | @@ -697,7 +697,7 @@ static enum page_references page_check_references(struct page *page, | ||
55 | return PAGEREF_RECLAIM; | ||
56 | |||
57 | if (referenced_ptes) { | ||
58 | - if (PageAnon(page)) | ||
59 | + if (PageSwapBacked(page)) | ||
60 | return PAGEREF_ACTIVATE; | ||
61 | /* | ||
62 | * All mapped pages start out with page table | ||
63 | -- | ||
64 | 1.7.9.5 | ||
65 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0030-hugetlb-fix-resv_map-leak-in-error-path.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0030-hugetlb-fix-resv_map-leak-in-error-path.patch new file mode 100644 index 00000000..eb99e735 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0030-hugetlb-fix-resv_map-leak-in-error-path.patch | |||
@@ -0,0 +1,101 @@ | |||
1 | From a82ac9b8fd3715f2bb17cd888fad25cfefa4bccb Mon Sep 17 00:00:00 2001 | ||
2 | From: Dave Hansen <dave@linux.vnet.ibm.com> | ||
3 | Date: Fri, 18 May 2012 11:46:30 -0700 | ||
4 | Subject: [PATCH 30/86] hugetlb: fix resv_map leak in error path | ||
5 | |||
6 | commit c50ac050811d6485616a193eb0f37bfbd191cc89 upstream. | ||
7 | |||
8 | When called for anonymous (non-shared) mappings, hugetlb_reserve_pages() | ||
9 | does a resv_map_alloc(). It depends on code in hugetlbfs's | ||
10 | vm_ops->close() to release that allocation. | ||
11 | |||
12 | However, in the mmap() failure path, we do a plain unmap_region() without | ||
13 | the remove_vma() which actually calls vm_ops->close(). | ||
14 | |||
15 | This is a decent fix. This leak could get reintroduced if new code (say, | ||
16 | after hugetlb_reserve_pages() in hugetlbfs_file_mmap()) decides to return | ||
17 | an error. But, I think it would have to unroll the reservation anyway. | ||
18 | |||
19 | Christoph's test case: | ||
20 | |||
21 | http://marc.info/?l=linux-mm&m=133728900729735 | ||
22 | |||
23 | Signed-off-by: Dave Hansen <dave@linux.vnet.ibm.com> | ||
24 | [Christoph Lameter: I have rediffed the patch against 2.6.32 and 3.2.0.] | ||
25 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
26 | --- | ||
27 | mm/hugetlb.c | 28 ++++++++++++++++++++++------ | ||
28 | 1 file changed, 22 insertions(+), 6 deletions(-) | ||
29 | |||
30 | diff --git a/mm/hugetlb.c b/mm/hugetlb.c | ||
31 | index 7120c2e..c715bb9 100644 | ||
32 | --- a/mm/hugetlb.c | ||
33 | +++ b/mm/hugetlb.c | ||
34 | @@ -2068,6 +2068,15 @@ static void hugetlb_vm_op_open(struct vm_area_struct *vma) | ||
35 | kref_get(&reservations->refs); | ||
36 | } | ||
37 | |||
38 | +static void resv_map_put(struct vm_area_struct *vma) | ||
39 | +{ | ||
40 | + struct resv_map *reservations = vma_resv_map(vma); | ||
41 | + | ||
42 | + if (!reservations) | ||
43 | + return; | ||
44 | + kref_put(&reservations->refs, resv_map_release); | ||
45 | +} | ||
46 | + | ||
47 | static void hugetlb_vm_op_close(struct vm_area_struct *vma) | ||
48 | { | ||
49 | struct hstate *h = hstate_vma(vma); | ||
50 | @@ -2083,7 +2092,7 @@ static void hugetlb_vm_op_close(struct vm_area_struct *vma) | ||
51 | reserve = (end - start) - | ||
52 | region_count(&reservations->regions, start, end); | ||
53 | |||
54 | - kref_put(&reservations->refs, resv_map_release); | ||
55 | + resv_map_put(vma); | ||
56 | |||
57 | if (reserve) { | ||
58 | hugetlb_acct_memory(h, -reserve); | ||
59 | @@ -2884,12 +2893,16 @@ int hugetlb_reserve_pages(struct inode *inode, | ||
60 | set_vma_resv_flags(vma, HPAGE_RESV_OWNER); | ||
61 | } | ||
62 | |||
63 | - if (chg < 0) | ||
64 | - return chg; | ||
65 | + if (chg < 0) { | ||
66 | + ret = chg; | ||
67 | + goto out_err; | ||
68 | + } | ||
69 | |||
70 | /* There must be enough filesystem quota for the mapping */ | ||
71 | - if (hugetlb_get_quota(inode->i_mapping, chg)) | ||
72 | - return -ENOSPC; | ||
73 | + if (hugetlb_get_quota(inode->i_mapping, chg)) { | ||
74 | + ret = -ENOSPC; | ||
75 | + goto out_err; | ||
76 | + } | ||
77 | |||
78 | /* | ||
79 | * Check enough hugepages are available for the reservation. | ||
80 | @@ -2898,7 +2911,7 @@ int hugetlb_reserve_pages(struct inode *inode, | ||
81 | ret = hugetlb_acct_memory(h, chg); | ||
82 | if (ret < 0) { | ||
83 | hugetlb_put_quota(inode->i_mapping, chg); | ||
84 | - return ret; | ||
85 | + goto out_err; | ||
86 | } | ||
87 | |||
88 | /* | ||
89 | @@ -2915,6 +2928,9 @@ int hugetlb_reserve_pages(struct inode *inode, | ||
90 | if (!vma || vma->vm_flags & VM_MAYSHARE) | ||
91 | region_add(&inode->i_mapping->private_list, from, to); | ||
92 | return 0; | ||
93 | +out_err: | ||
94 | + resv_map_put(vma); | ||
95 | + return ret; | ||
96 | } | ||
97 | |||
98 | void hugetlb_unreserve_pages(struct inode *inode, long offset, long freed) | ||
99 | -- | ||
100 | 1.7.9.5 | ||
101 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0031-mm-vmalloc.c-change-void-into-explict-vm_struct.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0031-mm-vmalloc.c-change-void-into-explict-vm_struct.patch new file mode 100644 index 00000000..002d8e8c --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0031-mm-vmalloc.c-change-void-into-explict-vm_struct.patch | |||
@@ -0,0 +1,63 @@ | |||
1 | From ac48cea598418be2acfa451a3488cdd51570641e Mon Sep 17 00:00:00 2001 | ||
2 | From: Minchan Kim <minchan@kernel.org> | ||
3 | Date: Tue, 10 Jan 2012 15:08:39 -0800 | ||
4 | Subject: [PATCH 31/86] mm/vmalloc.c: change void* into explict vm_struct* | ||
5 | |||
6 | commit db1aecafef58b5dda39c4228debe2c845e4a27ab upstream. | ||
7 | |||
8 | vmap_area->private is void* but we don't use the field for various purpose | ||
9 | but use only for vm_struct. So change it to a vm_struct* with naming to | ||
10 | improve for readability and type checking. | ||
11 | |||
12 | Signed-off-by: Minchan Kim <minchan@kernel.org> | ||
13 | Acked-by: David Rientjes <rientjes@google.com> | ||
14 | Signed-off-by: Andrew Morton <akpm@linux-foundation.org> | ||
15 | Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | mm/vmalloc.c | 8 ++++---- | ||
19 | 1 file changed, 4 insertions(+), 4 deletions(-) | ||
20 | |||
21 | diff --git a/mm/vmalloc.c b/mm/vmalloc.c | ||
22 | index 21fdf46..877ca04 100644 | ||
23 | --- a/mm/vmalloc.c | ||
24 | +++ b/mm/vmalloc.c | ||
25 | @@ -256,7 +256,7 @@ struct vmap_area { | ||
26 | struct rb_node rb_node; /* address sorted rbtree */ | ||
27 | struct list_head list; /* address sorted list */ | ||
28 | struct list_head purge_list; /* "lazy purge" list */ | ||
29 | - void *private; | ||
30 | + struct vm_struct *vm; | ||
31 | struct rcu_head rcu_head; | ||
32 | }; | ||
33 | |||
34 | @@ -1285,7 +1285,7 @@ static void setup_vmalloc_vm(struct vm_struct *vm, struct vmap_area *va, | ||
35 | vm->addr = (void *)va->va_start; | ||
36 | vm->size = va->va_end - va->va_start; | ||
37 | vm->caller = caller; | ||
38 | - va->private = vm; | ||
39 | + va->vm = vm; | ||
40 | va->flags |= VM_VM_AREA; | ||
41 | } | ||
42 | |||
43 | @@ -1408,7 +1408,7 @@ static struct vm_struct *find_vm_area(const void *addr) | ||
44 | |||
45 | va = find_vmap_area((unsigned long)addr); | ||
46 | if (va && va->flags & VM_VM_AREA) | ||
47 | - return va->private; | ||
48 | + return va->vm; | ||
49 | |||
50 | return NULL; | ||
51 | } | ||
52 | @@ -1427,7 +1427,7 @@ struct vm_struct *remove_vm_area(const void *addr) | ||
53 | |||
54 | va = find_vmap_area((unsigned long)addr); | ||
55 | if (va && va->flags & VM_VM_AREA) { | ||
56 | - struct vm_struct *vm = va->private; | ||
57 | + struct vm_struct *vm = va->vm; | ||
58 | |||
59 | if (!(vm->flags & VM_UNLIST)) { | ||
60 | struct vm_struct *tmp, **p; | ||
61 | -- | ||
62 | 1.7.9.5 | ||
63 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0032-mm-fix-faulty-initialization-in-vmalloc_init.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0032-mm-fix-faulty-initialization-in-vmalloc_init.patch new file mode 100644 index 00000000..80181407 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0032-mm-fix-faulty-initialization-in-vmalloc_init.patch | |||
@@ -0,0 +1,51 @@ | |||
1 | From 25ca214b138f89e6881a9fee029f1c55756bd8a3 Mon Sep 17 00:00:00 2001 | ||
2 | From: KyongHo <pullip.cho@samsung.com> | ||
3 | Date: Tue, 29 May 2012 15:06:49 -0700 | ||
4 | Subject: [PATCH 32/86] mm: fix faulty initialization in vmalloc_init() | ||
5 | |||
6 | commit dbda591d920b4c7692725b13e3f68ecb251e9080 upstream. | ||
7 | |||
8 | The transfer of ->flags causes some of the static mapping virtual | ||
9 | addresses to be prematurely freed (before the mapping is removed) because | ||
10 | VM_LAZY_FREE gets "set" if tmp->flags has VM_IOREMAP set. This might | ||
11 | cause subsequent vmalloc/ioremap calls to fail because it might allocate | ||
12 | one of the freed virtual address ranges that aren't unmapped. | ||
13 | |||
14 | va->flags has different types of flags from tmp->flags. If a region with | ||
15 | VM_IOREMAP set is registered with vm_area_add_early(), it will be removed | ||
16 | by __purge_vmap_area_lazy(). | ||
17 | |||
18 | Fix vmalloc_init() to correctly initialize vmap_area for the given | ||
19 | vm_struct. | ||
20 | |||
21 | Also initialise va->vm. If it is not set, find_vm_area() for the early | ||
22 | vm regions will always fail. | ||
23 | |||
24 | Signed-off-by: KyongHo Cho <pullip.cho@samsung.com> | ||
25 | Cc: "Olav Haugan" <ohaugan@codeaurora.org> | ||
26 | Signed-off-by: Andrew Morton <akpm@linux-foundation.org> | ||
27 | Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> | ||
28 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
29 | --- | ||
30 | mm/vmalloc.c | 3 ++- | ||
31 | 1 file changed, 2 insertions(+), 1 deletion(-) | ||
32 | |||
33 | diff --git a/mm/vmalloc.c b/mm/vmalloc.c | ||
34 | index 877ca04..577e51d 100644 | ||
35 | --- a/mm/vmalloc.c | ||
36 | +++ b/mm/vmalloc.c | ||
37 | @@ -1185,9 +1185,10 @@ void __init vmalloc_init(void) | ||
38 | /* Import existing vmlist entries. */ | ||
39 | for (tmp = vmlist; tmp; tmp = tmp->next) { | ||
40 | va = kzalloc(sizeof(struct vmap_area), GFP_NOWAIT); | ||
41 | - va->flags = tmp->flags | VM_VM_AREA; | ||
42 | + va->flags = VM_VM_AREA; | ||
43 | va->va_start = (unsigned long)tmp->addr; | ||
44 | va->va_end = va->va_start + tmp->size; | ||
45 | + va->vm = tmp; | ||
46 | __insert_vmap_area(va); | ||
47 | } | ||
48 | |||
49 | -- | ||
50 | 1.7.9.5 | ||
51 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0033-fix-scsi_wait_scan.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0033-fix-scsi_wait_scan.patch new file mode 100644 index 00000000..e95f557a --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0033-fix-scsi_wait_scan.patch | |||
@@ -0,0 +1,44 @@ | |||
1 | From f7eda9338b67b376df9a1d42b9533035dde4bf80 Mon Sep 17 00:00:00 2001 | ||
2 | From: James Bottomley <jbottomley@parallels.com> | ||
3 | Date: Wed, 30 May 2012 09:45:39 +0000 | ||
4 | Subject: [PATCH 33/86] fix scsi_wait_scan | ||
5 | |||
6 | commit 1ff2f40305772b159a91c19590ee159d3a504afc upstream. | ||
7 | |||
8 | Commit c751085943362143f84346d274e0011419c84202 | ||
9 | Author: Rafael J. Wysocki <rjw@sisk.pl> | ||
10 | Date: Sun Apr 12 20:06:56 2009 +0200 | ||
11 | |||
12 | PM/Hibernate: Wait for SCSI devices scan to complete during resume | ||
13 | |||
14 | Broke the scsi_wait_scan module in 2.6.30. Apparently debian still uses it so | ||
15 | fix it and backport to stable before removing it in 3.6. | ||
16 | |||
17 | The breakage is caused because the function template in | ||
18 | include/scsi/scsi_scan.h is defined to be a nop unless SCSI is built in. | ||
19 | That means that in the modular case (which is every distro), the | ||
20 | scsi_wait_scan module does a simple async_synchronize_full() instead of | ||
21 | waiting for scans. | ||
22 | |||
23 | Signed-off-by: James Bottomley <JBottomley@Parallels.com> | ||
24 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
25 | --- | ||
26 | drivers/scsi/scsi_wait_scan.c | 2 +- | ||
27 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
28 | |||
29 | diff --git a/drivers/scsi/scsi_wait_scan.c b/drivers/scsi/scsi_wait_scan.c | ||
30 | index 74708fc..ae78148 100644 | ||
31 | --- a/drivers/scsi/scsi_wait_scan.c | ||
32 | +++ b/drivers/scsi/scsi_wait_scan.c | ||
33 | @@ -12,7 +12,7 @@ | ||
34 | |||
35 | #include <linux/module.h> | ||
36 | #include <linux/device.h> | ||
37 | -#include <scsi/scsi_scan.h> | ||
38 | +#include "scsi_priv.h" | ||
39 | |||
40 | static int __init wait_scan_init(void) | ||
41 | { | ||
42 | -- | ||
43 | 1.7.9.5 | ||
44 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0034-mm-fix-vma_resv_map-NULL-pointer.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0034-mm-fix-vma_resv_map-NULL-pointer.patch new file mode 100644 index 00000000..df287529 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0034-mm-fix-vma_resv_map-NULL-pointer.patch | |||
@@ -0,0 +1,70 @@ | |||
1 | From 17ceee89567f7c23b2f1eb1d44a323e20912dd59 Mon Sep 17 00:00:00 2001 | ||
2 | From: Dave Hansen <dave@linux.vnet.ibm.com> | ||
3 | Date: Wed, 30 May 2012 07:51:07 -0700 | ||
4 | Subject: [PATCH 34/86] mm: fix vma_resv_map() NULL pointer | ||
5 | |||
6 | commit 4523e1458566a0e8ecfaff90f380dd23acc44d27 upstream. | ||
7 | |||
8 | hugetlb_reserve_pages() can be used for either normal file-backed | ||
9 | hugetlbfs mappings, or MAP_HUGETLB. In the MAP_HUGETLB, semi-anonymous | ||
10 | mode, there is not a VMA around. The new call to resv_map_put() assumed | ||
11 | that there was, and resulted in a NULL pointer dereference: | ||
12 | |||
13 | BUG: unable to handle kernel NULL pointer dereference at 0000000000000030 | ||
14 | IP: vma_resv_map+0x9/0x30 | ||
15 | PGD 141453067 PUD 1421e1067 PMD 0 | ||
16 | Oops: 0000 [#1] PREEMPT SMP | ||
17 | ... | ||
18 | Pid: 14006, comm: trinity-child6 Not tainted 3.4.0+ #36 | ||
19 | RIP: vma_resv_map+0x9/0x30 | ||
20 | ... | ||
21 | Process trinity-child6 (pid: 14006, threadinfo ffff8801414e0000, task ffff8801414f26b0) | ||
22 | Call Trace: | ||
23 | resv_map_put+0xe/0x40 | ||
24 | hugetlb_reserve_pages+0xa6/0x1d0 | ||
25 | hugetlb_file_setup+0x102/0x2c0 | ||
26 | newseg+0x115/0x360 | ||
27 | ipcget+0x1ce/0x310 | ||
28 | sys_shmget+0x5a/0x60 | ||
29 | system_call_fastpath+0x16/0x1b | ||
30 | |||
31 | This was reported by Dave Jones, but was reproducible with the | ||
32 | libhugetlbfs test cases, so shame on me for not running them in the | ||
33 | first place. | ||
34 | |||
35 | With this, the oops is gone, and the output of libhugetlbfs's | ||
36 | run_tests.py is identical to plain 3.4 again. | ||
37 | |||
38 | [ Marked for stable, since this was introduced by commit c50ac050811d | ||
39 | ("hugetlb: fix resv_map leak in error path") which was also marked for | ||
40 | stable ] | ||
41 | |||
42 | Reported-by: Dave Jones <davej@redhat.com> | ||
43 | Cc: Mel Gorman <mel@csn.ul.ie> | ||
44 | Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> | ||
45 | Cc: Christoph Lameter <cl@linux.com> | ||
46 | Cc: Andrea Arcangeli <aarcange@redhat.com> | ||
47 | Cc: Andrew Morton <akpm@linux-foundation.org> | ||
48 | Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> | ||
49 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
50 | --- | ||
51 | mm/hugetlb.c | 3 ++- | ||
52 | 1 file changed, 2 insertions(+), 1 deletion(-) | ||
53 | |||
54 | diff --git a/mm/hugetlb.c b/mm/hugetlb.c | ||
55 | index c715bb9..5f5c545 100644 | ||
56 | --- a/mm/hugetlb.c | ||
57 | +++ b/mm/hugetlb.c | ||
58 | @@ -2929,7 +2929,8 @@ int hugetlb_reserve_pages(struct inode *inode, | ||
59 | region_add(&inode->i_mapping->private_list, from, to); | ||
60 | return 0; | ||
61 | out_err: | ||
62 | - resv_map_put(vma); | ||
63 | + if (vma) | ||
64 | + resv_map_put(vma); | ||
65 | return ret; | ||
66 | } | ||
67 | |||
68 | -- | ||
69 | 1.7.9.5 | ||
70 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0035-x86-amd-xen-Avoid-NULL-pointer-paravirt-references.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0035-x86-amd-xen-Avoid-NULL-pointer-paravirt-references.patch new file mode 100644 index 00000000..53bf5494 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0035-x86-amd-xen-Avoid-NULL-pointer-paravirt-references.patch | |||
@@ -0,0 +1,38 @@ | |||
1 | From 827eb1e22d5bbbd59b40cffc5d1e811c4d2e6a24 Mon Sep 17 00:00:00 2001 | ||
2 | From: Konrad Rzeszutek Wilk <konrad@darnok.org> | ||
3 | Date: Wed, 30 May 2012 18:23:56 -0400 | ||
4 | Subject: [PATCH 35/86] x86, amd, xen: Avoid NULL pointer paravirt references | ||
5 | |||
6 | commit 1ab46fd319bcf1fcd9fb6311727d532b580e4eba upstream. | ||
7 | |||
8 | Stub out MSR methods that aren't actually needed. This fixes a crash | ||
9 | as Xen Dom0 on AMD Trinity systems. A bigger patch should be added to | ||
10 | remove the paravirt machinery completely for the methods which | ||
11 | apparently have no users! | ||
12 | |||
13 | Reported-by: Andre Przywara <andre.przywara@amd.com> | ||
14 | Link: http://lkml.kernel.org/r/20120530222356.GA28417@andromeda.dapyr.net | ||
15 | Signed-off-by: H. Peter Anvin <hpa@zytor.com> | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | arch/x86/xen/enlighten.c | 3 +++ | ||
19 | 1 file changed, 3 insertions(+) | ||
20 | |||
21 | diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c | ||
22 | index e7c920b..cca659e 100644 | ||
23 | --- a/arch/x86/xen/enlighten.c | ||
24 | +++ b/arch/x86/xen/enlighten.c | ||
25 | @@ -982,7 +982,10 @@ static const struct pv_cpu_ops xen_cpu_ops __initconst = { | ||
26 | .wbinvd = native_wbinvd, | ||
27 | |||
28 | .read_msr = native_read_msr_safe, | ||
29 | + .rdmsr_regs = native_rdmsr_safe_regs, | ||
30 | .write_msr = xen_write_msr_safe, | ||
31 | + .wrmsr_regs = native_wrmsr_safe_regs, | ||
32 | + | ||
33 | .read_tsc = native_read_tsc, | ||
34 | .read_pmc = native_read_pmc, | ||
35 | |||
36 | -- | ||
37 | 1.7.9.5 | ||
38 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0036-slub-fix-a-memory-leak-in-get_partial_node.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0036-slub-fix-a-memory-leak-in-get_partial_node.patch new file mode 100644 index 00000000..e399e073 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0036-slub-fix-a-memory-leak-in-get_partial_node.patch | |||
@@ -0,0 +1,86 @@ | |||
1 | From e03e067f960f7714ac98fdef365cafff22086a6b Mon Sep 17 00:00:00 2001 | ||
2 | From: Joonsoo Kim <js1304@gmail.com> | ||
3 | Date: Thu, 17 May 2012 00:13:02 +0900 | ||
4 | Subject: [PATCH 36/86] slub: fix a memory leak in get_partial_node() | ||
5 | |||
6 | commit 02d7633fa567be7bf55a993b79d2a31b95ce2227 upstream. | ||
7 | |||
8 | In the case which is below, | ||
9 | |||
10 | 1. acquire slab for cpu partial list | ||
11 | 2. free object to it by remote cpu | ||
12 | 3. page->freelist = t | ||
13 | |||
14 | then memory leak is occurred. | ||
15 | |||
16 | Change acquire_slab() not to zap freelist when it works for cpu partial list. | ||
17 | I think it is a sufficient solution for fixing a memory leak. | ||
18 | |||
19 | Below is output of 'slabinfo -r kmalloc-256' | ||
20 | when './perf stat -r 30 hackbench 50 process 4000 > /dev/null' is done. | ||
21 | |||
22 | ***Vanilla*** | ||
23 | Sizes (bytes) Slabs Debug Memory | ||
24 | ------------------------------------------------------------------------ | ||
25 | Object : 256 Total : 468 Sanity Checks : Off Total: 3833856 | ||
26 | SlabObj: 256 Full : 111 Redzoning : Off Used : 2004992 | ||
27 | SlabSiz: 8192 Partial: 302 Poisoning : Off Loss : 1828864 | ||
28 | Loss : 0 CpuSlab: 55 Tracking : Off Lalig: 0 | ||
29 | Align : 8 Objects: 32 Tracing : Off Lpadd: 0 | ||
30 | |||
31 | ***Patched*** | ||
32 | Sizes (bytes) Slabs Debug Memory | ||
33 | ------------------------------------------------------------------------ | ||
34 | Object : 256 Total : 300 Sanity Checks : Off Total: 2457600 | ||
35 | SlabObj: 256 Full : 204 Redzoning : Off Used : 2348800 | ||
36 | SlabSiz: 8192 Partial: 33 Poisoning : Off Loss : 108800 | ||
37 | Loss : 0 CpuSlab: 63 Tracking : Off Lalig: 0 | ||
38 | Align : 8 Objects: 32 Tracing : Off Lpadd: 0 | ||
39 | |||
40 | Total and loss number is the impact of this patch. | ||
41 | |||
42 | Acked-by: Christoph Lameter <cl@linux.com> | ||
43 | Signed-off-by: Joonsoo Kim <js1304@gmail.com> | ||
44 | Signed-off-by: Pekka Enberg <penberg@kernel.org> | ||
45 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
46 | --- | ||
47 | mm/slub.c | 9 ++++++--- | ||
48 | 1 file changed, 6 insertions(+), 3 deletions(-) | ||
49 | |||
50 | diff --git a/mm/slub.c b/mm/slub.c | ||
51 | index a99c785..af47188 100644 | ||
52 | --- a/mm/slub.c | ||
53 | +++ b/mm/slub.c | ||
54 | @@ -1506,15 +1506,19 @@ static inline void *acquire_slab(struct kmem_cache *s, | ||
55 | freelist = page->freelist; | ||
56 | counters = page->counters; | ||
57 | new.counters = counters; | ||
58 | - if (mode) | ||
59 | + if (mode) { | ||
60 | new.inuse = page->objects; | ||
61 | + new.freelist = NULL; | ||
62 | + } else { | ||
63 | + new.freelist = freelist; | ||
64 | + } | ||
65 | |||
66 | VM_BUG_ON(new.frozen); | ||
67 | new.frozen = 1; | ||
68 | |||
69 | } while (!__cmpxchg_double_slab(s, page, | ||
70 | freelist, counters, | ||
71 | - NULL, new.counters, | ||
72 | + new.freelist, new.counters, | ||
73 | "lock and freeze")); | ||
74 | |||
75 | remove_partial(n, page); | ||
76 | @@ -1556,7 +1560,6 @@ static void *get_partial_node(struct kmem_cache *s, | ||
77 | object = t; | ||
78 | available = page->objects - page->inuse; | ||
79 | } else { | ||
80 | - page->freelist = t; | ||
81 | available = put_cpu_partial(s, page, 0); | ||
82 | } | ||
83 | if (kmem_cache_debug(s) || available > s->cpu_partial / 2) | ||
84 | -- | ||
85 | 1.7.9.5 | ||
86 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0037-ext4-force-ro-mount-if-ext4_setup_super-fails.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0037-ext4-force-ro-mount-if-ext4_setup_super-fails.patch new file mode 100644 index 00000000..6fbcfa09 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0037-ext4-force-ro-mount-if-ext4_setup_super-fails.patch | |||
@@ -0,0 +1,45 @@ | |||
1 | From ce325abe66432bbcf9d8dc2834d7c8c77f32ce52 Mon Sep 17 00:00:00 2001 | ||
2 | From: Eric Sandeen <sandeen@redhat.com> | ||
3 | Date: Mon, 28 May 2012 14:17:25 -0400 | ||
4 | Subject: [PATCH 37/86] ext4: force ro mount if ext4_setup_super() fails | ||
5 | |||
6 | commit 7e84b6216467b84cd332c8e567bf5aa113fd2f38 upstream. | ||
7 | |||
8 | If ext4_setup_super() fails i.e. due to a too-high revision, | ||
9 | the error is logged in dmesg but the fs is not mounted RO as | ||
10 | indicated. | ||
11 | |||
12 | Tested by: | ||
13 | |||
14 | # mkfs.ext4 -r 4 /dev/sdb6 | ||
15 | # mount /dev/sdb6 /mnt/test | ||
16 | # dmesg | grep "too high" | ||
17 | [164919.759248] EXT4-fs (sdb6): revision level too high, forcing read-only mode | ||
18 | # grep sdb6 /proc/mounts | ||
19 | /dev/sdb6 /mnt/test2 ext4 rw,seclabel,relatime,data=ordered 0 0 | ||
20 | |||
21 | Reviewed-by: Andreas Dilger <adilger@whamcloud.com> | ||
22 | Signed-off-by: Eric Sandeen <sandeen@redhat.com> | ||
23 | Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> | ||
24 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
25 | --- | ||
26 | fs/ext4/super.c | 3 ++- | ||
27 | 1 file changed, 2 insertions(+), 1 deletion(-) | ||
28 | |||
29 | diff --git a/fs/ext4/super.c b/fs/ext4/super.c | ||
30 | index 961059b..c91811e 100644 | ||
31 | --- a/fs/ext4/super.c | ||
32 | +++ b/fs/ext4/super.c | ||
33 | @@ -3727,7 +3727,8 @@ no_journal: | ||
34 | goto failed_mount4; | ||
35 | } | ||
36 | |||
37 | - ext4_setup_super(sb, es, sb->s_flags & MS_RDONLY); | ||
38 | + if (ext4_setup_super(sb, es, sb->s_flags & MS_RDONLY)) | ||
39 | + sb->s_flags |= MS_RDONLY; | ||
40 | |||
41 | /* determine the minimum size of new large inodes, if present */ | ||
42 | if (sbi->s_inode_size > EXT4_GOOD_OLD_INODE_SIZE) { | ||
43 | -- | ||
44 | 1.7.9.5 | ||
45 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0038-ext4-disallow-hard-linked-directory-in-ext4_lookup.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0038-ext4-disallow-hard-linked-directory-in-ext4_lookup.patch new file mode 100644 index 00000000..60e970a6 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0038-ext4-disallow-hard-linked-directory-in-ext4_lookup.patch | |||
@@ -0,0 +1,38 @@ | |||
1 | From 7d7a4c4be4fc37041962a101a848c38bf13dc0c4 Mon Sep 17 00:00:00 2001 | ||
2 | From: Andreas Dilger <adilger@dilger.ca> | ||
3 | Date: Mon, 28 May 2012 17:02:25 -0400 | ||
4 | Subject: [PATCH 38/86] ext4: disallow hard-linked directory in ext4_lookup | ||
5 | |||
6 | commit 7e936b737211e6b54e34b71a827e56b872e958d8 upstream. | ||
7 | |||
8 | A hard-linked directory to its parent can cause the VFS to deadlock, | ||
9 | and is a sign of a corrupted file system. So detect this case in | ||
10 | ext4_lookup(), before the rmdir() lockup scenario can take place. | ||
11 | |||
12 | Signed-off-by: Andreas Dilger <adilger@dilger.ca> | ||
13 | Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> | ||
14 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
15 | --- | ||
16 | fs/ext4/namei.c | 6 ++++++ | ||
17 | 1 file changed, 6 insertions(+) | ||
18 | |||
19 | diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c | ||
20 | index aa4c782..4dd0890 100644 | ||
21 | --- a/fs/ext4/namei.c | ||
22 | +++ b/fs/ext4/namei.c | ||
23 | @@ -1037,6 +1037,12 @@ static struct dentry *ext4_lookup(struct inode *dir, struct dentry *dentry, stru | ||
24 | EXT4_ERROR_INODE(dir, "bad inode number: %u", ino); | ||
25 | return ERR_PTR(-EIO); | ||
26 | } | ||
27 | + if (unlikely(ino == dir->i_ino)) { | ||
28 | + EXT4_ERROR_INODE(dir, "'%.*s' linked to parent dir", | ||
29 | + dentry->d_name.len, | ||
30 | + dentry->d_name.name); | ||
31 | + return ERR_PTR(-EIO); | ||
32 | + } | ||
33 | inode = ext4_iget(dir->i_sb, ino); | ||
34 | if (inode == ERR_PTR(-ESTALE)) { | ||
35 | EXT4_ERROR_INODE(dir, | ||
36 | -- | ||
37 | 1.7.9.5 | ||
38 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0039-mtd-nand-fix-scan_read_raw_oob.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0039-mtd-nand-fix-scan_read_raw_oob.patch new file mode 100644 index 00000000..e2b0f241 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0039-mtd-nand-fix-scan_read_raw_oob.patch | |||
@@ -0,0 +1,33 @@ | |||
1 | From ec329940d4991f4051c3b8cf971aa2e67ad9da20 Mon Sep 17 00:00:00 2001 | ||
2 | From: Dmitry Maluka <D.Maluka@adbglobal.com> | ||
3 | Date: Fri, 11 May 2012 20:51:51 +0300 | ||
4 | Subject: [PATCH 39/86] mtd: nand: fix scan_read_raw_oob | ||
5 | |||
6 | commit 34a5704d91d6f8376a4c0a0143a1dd3eb3ccb37e upstream. | ||
7 | |||
8 | It seems there is a bug in scan_read_raw_oob() in nand_bbt.c which | ||
9 | should cause wrong functioning of NAND_BBT_SCANALLPAGES option. | ||
10 | |||
11 | Artem: the patch did not apply and I had to amend it a bit. | ||
12 | |||
13 | Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> | ||
14 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
15 | --- | ||
16 | drivers/mtd/nand/nand_bbt.c | 1 + | ||
17 | 1 file changed, 1 insertion(+) | ||
18 | |||
19 | diff --git a/drivers/mtd/nand/nand_bbt.c b/drivers/mtd/nand/nand_bbt.c | ||
20 | index 69148ae..f024375 100644 | ||
21 | --- a/drivers/mtd/nand/nand_bbt.c | ||
22 | +++ b/drivers/mtd/nand/nand_bbt.c | ||
23 | @@ -324,6 +324,7 @@ static int scan_read_raw_oob(struct mtd_info *mtd, uint8_t *buf, loff_t offs, | ||
24 | |||
25 | buf += mtd->oobsize + mtd->writesize; | ||
26 | len -= mtd->writesize; | ||
27 | + offs += mtd->writesize; | ||
28 | } | ||
29 | return 0; | ||
30 | } | ||
31 | -- | ||
32 | 1.7.9.5 | ||
33 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0040-vfs-increment-iversion-when-a-file-is-truncated.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0040-vfs-increment-iversion-when-a-file-is-truncated.patch new file mode 100644 index 00000000..cab17c9c --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0040-vfs-increment-iversion-when-a-file-is-truncated.patch | |||
@@ -0,0 +1,48 @@ | |||
1 | From dcbd120f33b3df21a22bb7e09710f9f078c5b459 Mon Sep 17 00:00:00 2001 | ||
2 | From: Dmitry Kasatkin <dmitry.kasatkin@intel.com> | ||
3 | Date: Tue, 29 May 2012 11:02:21 -0700 | ||
4 | Subject: [PATCH 40/86] vfs: increment iversion when a file is truncated | ||
5 | |||
6 | commit 799243a389bde0de10fa21ca1ca453d2fe538b85 upstream. | ||
7 | |||
8 | When a file is truncated with truncate()/ftruncate() and then closed, | ||
9 | iversion is not updated. This patch uses ATTR_SIZE flag as an indication | ||
10 | to increment iversion. | ||
11 | |||
12 | Mimi said: | ||
13 | |||
14 | On fput(), i_version is used to detect and flag files that have changed | ||
15 | and need to be re-measured in the IMA measurement policy. When a file | ||
16 | is truncated with truncate()/ftruncate() and then closed, i_version is | ||
17 | not updated. As a result, although the file has changed, it will not be | ||
18 | re-measured and added to the IMA measurement list on subsequent access. | ||
19 | |||
20 | Signed-off-by: Dmitry Kasatkin <dmitry.kasatkin@intel.com> | ||
21 | Acked-by: Mimi Zohar <zohar@us.ibm.com> | ||
22 | Cc: Al Viro <viro@zeniv.linux.org.uk> | ||
23 | Signed-off-by: Andrew Morton <akpm@linux-foundation.org> | ||
24 | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> | ||
25 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
26 | --- | ||
27 | fs/attr.c | 5 +++++ | ||
28 | 1 file changed, 5 insertions(+) | ||
29 | |||
30 | diff --git a/fs/attr.c b/fs/attr.c | ||
31 | index 7ee7ba4..b8f55c4 100644 | ||
32 | --- a/fs/attr.c | ||
33 | +++ b/fs/attr.c | ||
34 | @@ -176,6 +176,11 @@ int notify_change(struct dentry * dentry, struct iattr * attr) | ||
35 | return -EPERM; | ||
36 | } | ||
37 | |||
38 | + if ((ia_valid & ATTR_SIZE) && IS_I_VERSION(inode)) { | ||
39 | + if (attr->ia_size != inode->i_size) | ||
40 | + inode_inc_iversion(inode); | ||
41 | + } | ||
42 | + | ||
43 | if ((ia_valid & ATTR_MODE)) { | ||
44 | mode_t amode = attr->ia_mode; | ||
45 | /* Flag setting protected by i_mutex */ | ||
46 | -- | ||
47 | 1.7.9.5 | ||
48 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0041-vfs-umount_tree-might-be-called-on-subtree-that-had-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0041-vfs-umount_tree-might-be-called-on-subtree-that-had-.patch new file mode 100644 index 00000000..99722a55 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0041-vfs-umount_tree-might-be-called-on-subtree-that-had-.patch | |||
@@ -0,0 +1,37 @@ | |||
1 | From 7124b305f5c83709f41473a2cf6025bcdb9b88fe Mon Sep 17 00:00:00 2001 | ||
2 | From: Al Viro <viro@zeniv.linux.org.uk> | ||
3 | Date: Tue, 29 May 2012 22:03:48 -0400 | ||
4 | Subject: [PATCH 41/86] vfs: umount_tree() might be called on subtree that had | ||
5 | never made it | ||
6 | |||
7 | commit 63d37a84ab6004c235314ffd7a76c5eb28c2fae0 upstream. | ||
8 | |||
9 | __mnt_make_shortterm() in there undoes the effect of __mnt_make_longterm() | ||
10 | we'd done back when we set ->mnt_ns non-NULL; it should not be done to | ||
11 | vfsmounts that had never gone through commit_tree() and friends. Kudos to | ||
12 | lczerner for catching that one... | ||
13 | |||
14 | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> | ||
15 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
16 | --- | ||
17 | fs/namespace.c | 3 ++- | ||
18 | 1 file changed, 2 insertions(+), 1 deletion(-) | ||
19 | |||
20 | diff --git a/fs/namespace.c b/fs/namespace.c | ||
21 | index cfc6d44..ca4913a 100644 | ||
22 | --- a/fs/namespace.c | ||
23 | +++ b/fs/namespace.c | ||
24 | @@ -1244,8 +1244,9 @@ void umount_tree(struct vfsmount *mnt, int propagate, struct list_head *kill) | ||
25 | list_del_init(&p->mnt_expire); | ||
26 | list_del_init(&p->mnt_list); | ||
27 | __touch_mnt_namespace(p->mnt_ns); | ||
28 | + if (p->mnt_ns) | ||
29 | + __mnt_make_shortterm(p); | ||
30 | p->mnt_ns = NULL; | ||
31 | - __mnt_make_shortterm(p); | ||
32 | list_del_init(&p->mnt_child); | ||
33 | if (p->mnt_parent != p) { | ||
34 | p->mnt_parent->mnt_ghosts++; | ||
35 | -- | ||
36 | 1.7.9.5 | ||
37 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0042-ext4-add-missing-save_error_info-to-ext4_error.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0042-ext4-add-missing-save_error_info-to-ext4_error.patch new file mode 100644 index 00000000..e9720b22 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0042-ext4-add-missing-save_error_info-to-ext4_error.patch | |||
@@ -0,0 +1,36 @@ | |||
1 | From 1b72b00b0a3384ac8e6b2ddb6b06132e714e9441 Mon Sep 17 00:00:00 2001 | ||
2 | From: Theodore Ts'o <tytso@mit.edu> | ||
3 | Date: Wed, 30 May 2012 23:00:16 -0400 | ||
4 | Subject: [PATCH 42/86] ext4: add missing save_error_info() to ext4_error() | ||
5 | |||
6 | commit f3fc0210c0fc91900766c995f089c39170e68305 upstream. | ||
7 | |||
8 | The ext4_error() function is missing a call to save_error_info(). | ||
9 | Since this is the function which marks the file system as containing | ||
10 | an error, this oversight (which was introduced in 2.6.36) is quite | ||
11 | significant, and should be backported to older stable kernels with | ||
12 | high urgency. | ||
13 | |||
14 | Reported-by: Ken Sumrall <ksumrall@google.com> | ||
15 | Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> | ||
16 | Cc: ksumrall@google.com | ||
17 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
18 | --- | ||
19 | fs/ext4/super.c | 1 + | ||
20 | 1 file changed, 1 insertion(+) | ||
21 | |||
22 | diff --git a/fs/ext4/super.c b/fs/ext4/super.c | ||
23 | index c91811e..ab7aa3f 100644 | ||
24 | --- a/fs/ext4/super.c | ||
25 | +++ b/fs/ext4/super.c | ||
26 | @@ -480,6 +480,7 @@ void __ext4_error(struct super_block *sb, const char *function, | ||
27 | printk(KERN_CRIT "EXT4-fs error (device %s): %s:%d: comm %s: %pV\n", | ||
28 | sb->s_id, function, line, current->comm, &vaf); | ||
29 | va_end(args); | ||
30 | + save_error_info(sb, function, line); | ||
31 | |||
32 | ext4_handle_error(sb); | ||
33 | } | ||
34 | -- | ||
35 | 1.7.9.5 | ||
36 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0043-ALSA-usb-audio-fix-rate_list-memory-leak.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0043-ALSA-usb-audio-fix-rate_list-memory-leak.patch new file mode 100644 index 00000000..7c69f666 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0043-ALSA-usb-audio-fix-rate_list-memory-leak.patch | |||
@@ -0,0 +1,35 @@ | |||
1 | From 881cf192607e150b2843d5a504a6c05bd6be8136 Mon Sep 17 00:00:00 2001 | ||
2 | From: Clemens Ladisch <clemens@ladisch.de> | ||
3 | Date: Fri, 18 May 2012 18:00:43 +0200 | ||
4 | Subject: [PATCH 43/86] ALSA: usb-audio: fix rate_list memory leak | ||
5 | |||
6 | commit 5cd5d7c44990658df6ab49f6253c39617c53b03d upstream. | ||
7 | |||
8 | The array of sample rates is reallocated every time when opening | ||
9 | the PCM device, but was freed only once when unplugging the device. | ||
10 | |||
11 | Reported-by: "Alexander E. Patrakov" <patrakov@gmail.com> | ||
12 | Signed-off-by: Clemens Ladisch <clemens@ladisch.de> | ||
13 | Signed-off-by: Takashi Iwai <tiwai@suse.de> | ||
14 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
15 | --- | ||
16 | sound/usb/pcm.c | 3 +++ | ||
17 | 1 file changed, 3 insertions(+) | ||
18 | |||
19 | diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c | ||
20 | index 0220b0f..839165f 100644 | ||
21 | --- a/sound/usb/pcm.c | ||
22 | +++ b/sound/usb/pcm.c | ||
23 | @@ -698,6 +698,9 @@ static int snd_usb_pcm_check_knot(struct snd_pcm_runtime *runtime, | ||
24 | int count = 0, needs_knot = 0; | ||
25 | int err; | ||
26 | |||
27 | + kfree(subs->rate_list.list); | ||
28 | + subs->rate_list.list = NULL; | ||
29 | + | ||
30 | list_for_each_entry(fp, &subs->fmt_list, list) { | ||
31 | if (fp->rates & SNDRV_PCM_RATE_CONTINUOUS) | ||
32 | return 0; | ||
33 | -- | ||
34 | 1.7.9.5 | ||
35 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0044-ext4-add-ext4_mb_unload_buddy-in-the-error-path.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0044-ext4-add-ext4_mb_unload_buddy-in-the-error-path.patch new file mode 100644 index 00000000..63a6bf4a --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0044-ext4-add-ext4_mb_unload_buddy-in-the-error-path.patch | |||
@@ -0,0 +1,32 @@ | |||
1 | From 63234d728c49257d747db57d3dfeb9989b9d040a Mon Sep 17 00:00:00 2001 | ||
2 | From: Salman Qazi <sqazi@google.com> | ||
3 | Date: Thu, 31 May 2012 23:51:27 -0400 | ||
4 | Subject: [PATCH 44/86] ext4: add ext4_mb_unload_buddy in the error path | ||
5 | |||
6 | commit 02b7831019ea4e7994968c84b5826fa8b248ffc8 upstream. | ||
7 | |||
8 | ext4_free_blocks fails to pair an ext4_mb_load_buddy with a matching | ||
9 | ext4_mb_unload_buddy when it fails a memory allocation. | ||
10 | |||
11 | Signed-off-by: Salman Qazi <sqazi@google.com> | ||
12 | Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> | ||
13 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
14 | --- | ||
15 | fs/ext4/mballoc.c | 1 + | ||
16 | 1 file changed, 1 insertion(+) | ||
17 | |||
18 | diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c | ||
19 | index e2d8be8..382e4fc 100644 | ||
20 | --- a/fs/ext4/mballoc.c | ||
21 | +++ b/fs/ext4/mballoc.c | ||
22 | @@ -4693,6 +4693,7 @@ do_more: | ||
23 | */ | ||
24 | new_entry = kmem_cache_alloc(ext4_free_ext_cachep, GFP_NOFS); | ||
25 | if (!new_entry) { | ||
26 | + ext4_mb_unload_buddy(&e4b); | ||
27 | err = -ENOMEM; | ||
28 | goto error_return; | ||
29 | } | ||
30 | -- | ||
31 | 1.7.9.5 | ||
32 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0045-ext4-remove-mb_groups-before-tearing-down-the-buddy_.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0045-ext4-remove-mb_groups-before-tearing-down-the-buddy_.patch new file mode 100644 index 00000000..0fc4e4b7 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0045-ext4-remove-mb_groups-before-tearing-down-the-buddy_.patch | |||
@@ -0,0 +1,53 @@ | |||
1 | From 36ac3cf2860adbbe83743fd5ec6f89e54e67605c Mon Sep 17 00:00:00 2001 | ||
2 | From: Salman Qazi <sqazi@google.com> | ||
3 | Date: Thu, 31 May 2012 23:52:14 -0400 | ||
4 | Subject: [PATCH 45/86] ext4: remove mb_groups before tearing down the | ||
5 | buddy_cache | ||
6 | |||
7 | commit 95599968d19db175829fb580baa6b68939b320fb upstream. | ||
8 | |||
9 | We can't have references held on pages in the s_buddy_cache while we are | ||
10 | trying to truncate its pages and put the inode. All the pages must be | ||
11 | gone before we reach clear_inode. This can only be gauranteed if we | ||
12 | can prevent new users from grabbing references to s_buddy_cache's pages. | ||
13 | |||
14 | The original bug can be reproduced and the bug fix can be verified by: | ||
15 | |||
16 | while true; do mount -t ext4 /dev/ram0 /export/hda3/ram0; \ | ||
17 | umount /export/hda3/ram0; done & | ||
18 | |||
19 | while true; do cat /proc/fs/ext4/ram0/mb_groups; done | ||
20 | |||
21 | Signed-off-by: Salman Qazi <sqazi@google.com> | ||
22 | Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> | ||
23 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
24 | --- | ||
25 | fs/ext4/mballoc.c | 5 +++-- | ||
26 | 1 file changed, 3 insertions(+), 2 deletions(-) | ||
27 | |||
28 | diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c | ||
29 | index 382e4fc..1d07c12 100644 | ||
30 | --- a/fs/ext4/mballoc.c | ||
31 | +++ b/fs/ext4/mballoc.c | ||
32 | @@ -2567,6 +2567,9 @@ int ext4_mb_release(struct super_block *sb) | ||
33 | struct ext4_sb_info *sbi = EXT4_SB(sb); | ||
34 | struct kmem_cache *cachep = get_groupinfo_cache(sb->s_blocksize_bits); | ||
35 | |||
36 | + if (sbi->s_proc) | ||
37 | + remove_proc_entry("mb_groups", sbi->s_proc); | ||
38 | + | ||
39 | if (sbi->s_group_info) { | ||
40 | for (i = 0; i < ngroups; i++) { | ||
41 | grinfo = ext4_get_group_info(sb, i); | ||
42 | @@ -2614,8 +2617,6 @@ int ext4_mb_release(struct super_block *sb) | ||
43 | } | ||
44 | |||
45 | free_percpu(sbi->s_locality_groups); | ||
46 | - if (sbi->s_proc) | ||
47 | - remove_proc_entry("mb_groups", sbi->s_proc); | ||
48 | |||
49 | return 0; | ||
50 | } | ||
51 | -- | ||
52 | 1.7.9.5 | ||
53 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0046-drm-radeon-fix-bank-information-in-tiling-config.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0046-drm-radeon-fix-bank-information-in-tiling-config.patch new file mode 100644 index 00000000..96c23eca --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0046-drm-radeon-fix-bank-information-in-tiling-config.patch | |||
@@ -0,0 +1,84 @@ | |||
1 | From 08a5d338c177aeaff3fed888cf9a36feb07a033d Mon Sep 17 00:00:00 2001 | ||
2 | From: Alex Deucher <alexander.deucher@amd.com> | ||
3 | Date: Thu, 31 May 2012 18:53:36 -0400 | ||
4 | Subject: [PATCH 46/86] drm/radeon: fix bank information in tiling config | ||
5 | |||
6 | commit 29d654067a98c1cb8874c774e5fd799a038af8a6 upstream. | ||
7 | |||
8 | While there are cards with more than 8 mem banks, the max | ||
9 | number of banks from a tiling perspective is 8, so cap | ||
10 | the tiling config at 8 banks. | ||
11 | |||
12 | Fixes: | ||
13 | https://bugs.freedesktop.org/show_bug.cgi?id=43448 | ||
14 | |||
15 | Signed-off-by: Alex Deucher <alexander.deucher@amd.com> | ||
16 | Signed-off-by: Dave Airlie <airlied@redhat.com> | ||
17 | [bwh: Backported to 3.2: fix up context and indentation for missing | ||
18 | IGP condition in ni.c] | ||
19 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
20 | --- | ||
21 | drivers/gpu/drm/radeon/evergreen.c | 9 ++++++--- | ||
22 | drivers/gpu/drm/radeon/ni.c | 6 ++++-- | ||
23 | drivers/gpu/drm/radeon/rv770.c | 8 ++++++-- | ||
24 | 3 files changed, 16 insertions(+), 7 deletions(-) | ||
25 | |||
26 | diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c | ||
27 | index 92c9628..88d080c 100644 | ||
28 | --- a/drivers/gpu/drm/radeon/evergreen.c | ||
29 | +++ b/drivers/gpu/drm/radeon/evergreen.c | ||
30 | @@ -2074,9 +2074,12 @@ static void evergreen_gpu_init(struct radeon_device *rdev) | ||
31 | /* num banks is 8 on all fusion asics. 0 = 4, 1 = 8, 2 = 16 */ | ||
32 | if (rdev->flags & RADEON_IS_IGP) | ||
33 | rdev->config.evergreen.tile_config |= 1 << 4; | ||
34 | - else | ||
35 | - rdev->config.evergreen.tile_config |= | ||
36 | - ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) << 4; | ||
37 | + else { | ||
38 | + if ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) | ||
39 | + rdev->config.evergreen.tile_config |= 1 << 4; | ||
40 | + else | ||
41 | + rdev->config.evergreen.tile_config |= 0 << 4; | ||
42 | + } | ||
43 | rdev->config.evergreen.tile_config |= | ||
44 | ((mc_arb_ramcfg & BURSTLENGTH_MASK) >> BURSTLENGTH_SHIFT) << 8; | ||
45 | rdev->config.evergreen.tile_config |= | ||
46 | diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c | ||
47 | index 0e57998..9e50814 100644 | ||
48 | --- a/drivers/gpu/drm/radeon/ni.c | ||
49 | +++ b/drivers/gpu/drm/radeon/ni.c | ||
50 | @@ -804,8 +804,10 @@ static void cayman_gpu_init(struct radeon_device *rdev) | ||
51 | rdev->config.cayman.tile_config |= (3 << 0); | ||
52 | break; | ||
53 | } | ||
54 | - rdev->config.cayman.tile_config |= | ||
55 | - ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) << 4; | ||
56 | + if ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) | ||
57 | + rdev->config.cayman.tile_config |= 1 << 4; | ||
58 | + else | ||
59 | + rdev->config.cayman.tile_config |= 0 << 4; | ||
60 | rdev->config.cayman.tile_config |= | ||
61 | ((gb_addr_config & PIPE_INTERLEAVE_SIZE_MASK) >> PIPE_INTERLEAVE_SIZE_SHIFT) << 8; | ||
62 | rdev->config.cayman.tile_config |= | ||
63 | diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c | ||
64 | index 23ae1c6..e3f01b8 100644 | ||
65 | --- a/drivers/gpu/drm/radeon/rv770.c | ||
66 | +++ b/drivers/gpu/drm/radeon/rv770.c | ||
67 | @@ -689,8 +689,12 @@ static void rv770_gpu_init(struct radeon_device *rdev) | ||
68 | |||
69 | if (rdev->family == CHIP_RV770) | ||
70 | gb_tiling_config |= BANK_TILING(1); | ||
71 | - else | ||
72 | - gb_tiling_config |= BANK_TILING((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT); | ||
73 | + else { | ||
74 | + if ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) | ||
75 | + gb_tiling_config |= BANK_TILING(1); | ||
76 | + else | ||
77 | + gb_tiling_config |= BANK_TILING(0); | ||
78 | + } | ||
79 | rdev->config.rv770.tiling_nbanks = 4 << ((gb_tiling_config >> 4) & 0x3); | ||
80 | gb_tiling_config |= GROUP_SIZE((mc_arb_ramcfg & BURSTLENGTH_MASK) >> BURSTLENGTH_SHIFT); | ||
81 | if ((mc_arb_ramcfg & BURSTLENGTH_MASK) >> BURSTLENGTH_SHIFT) | ||
82 | -- | ||
83 | 1.7.9.5 | ||
84 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0047-drm-radeon-properly-program-gart-on-rv740-juniper-cy.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0047-drm-radeon-properly-program-gart-on-rv740-juniper-cy.patch new file mode 100644 index 00000000..51d41d97 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0047-drm-radeon-properly-program-gart-on-rv740-juniper-cy.patch | |||
@@ -0,0 +1,79 @@ | |||
1 | From b872949a1d4d4a7587bbbfa4adb1a69216c625a8 Mon Sep 17 00:00:00 2001 | ||
2 | From: Alex Deucher <alexander.deucher@amd.com> | ||
3 | Date: Thu, 31 May 2012 18:54:43 -0400 | ||
4 | Subject: [PATCH 47/86] drm/radeon: properly program gart on rv740, juniper, | ||
5 | cypress, barts, hemlock | ||
6 | |||
7 | commit 0b8c30bc4943137a4a36b9cb059b1cc684f5d702 upstream. | ||
8 | |||
9 | Need to program an additional VM register. This doesn't not currently | ||
10 | cause any problems, but allows us to program the proper backend | ||
11 | map in a subsequent patch which should improve performance on these | ||
12 | asics. | ||
13 | |||
14 | Signed-off-by: Alex Deucher <alexander.deucher@amd.com> | ||
15 | Signed-off-by: Dave Airlie <airlied@redhat.com> | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | drivers/gpu/drm/radeon/evergreen.c | 5 +++++ | ||
19 | drivers/gpu/drm/radeon/evergreend.h | 1 + | ||
20 | drivers/gpu/drm/radeon/rv770.c | 2 ++ | ||
21 | drivers/gpu/drm/radeon/rv770d.h | 1 + | ||
22 | 4 files changed, 9 insertions(+) | ||
23 | |||
24 | diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c | ||
25 | index 88d080c..7777c2f 100644 | ||
26 | --- a/drivers/gpu/drm/radeon/evergreen.c | ||
27 | +++ b/drivers/gpu/drm/radeon/evergreen.c | ||
28 | @@ -977,6 +977,11 @@ int evergreen_pcie_gart_enable(struct radeon_device *rdev) | ||
29 | WREG32(MC_VM_MD_L1_TLB0_CNTL, tmp); | ||
30 | WREG32(MC_VM_MD_L1_TLB1_CNTL, tmp); | ||
31 | WREG32(MC_VM_MD_L1_TLB2_CNTL, tmp); | ||
32 | + if ((rdev->family == CHIP_JUNIPER) || | ||
33 | + (rdev->family == CHIP_CYPRESS) || | ||
34 | + (rdev->family == CHIP_HEMLOCK) || | ||
35 | + (rdev->family == CHIP_BARTS)) | ||
36 | + WREG32(MC_VM_MD_L1_TLB3_CNTL, tmp); | ||
37 | } | ||
38 | WREG32(MC_VM_MB_L1_TLB0_CNTL, tmp); | ||
39 | WREG32(MC_VM_MB_L1_TLB1_CNTL, tmp); | ||
40 | diff --git a/drivers/gpu/drm/radeon/evergreend.h b/drivers/gpu/drm/radeon/evergreend.h | ||
41 | index e00039e..0128445 100644 | ||
42 | --- a/drivers/gpu/drm/radeon/evergreend.h | ||
43 | +++ b/drivers/gpu/drm/radeon/evergreend.h | ||
44 | @@ -230,6 +230,7 @@ | ||
45 | #define MC_VM_MD_L1_TLB0_CNTL 0x2654 | ||
46 | #define MC_VM_MD_L1_TLB1_CNTL 0x2658 | ||
47 | #define MC_VM_MD_L1_TLB2_CNTL 0x265C | ||
48 | +#define MC_VM_MD_L1_TLB3_CNTL 0x2698 | ||
49 | |||
50 | #define FUS_MC_VM_MD_L1_TLB0_CNTL 0x265C | ||
51 | #define FUS_MC_VM_MD_L1_TLB1_CNTL 0x2660 | ||
52 | diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c | ||
53 | index e3f01b8..e36ba7f 100644 | ||
54 | --- a/drivers/gpu/drm/radeon/rv770.c | ||
55 | +++ b/drivers/gpu/drm/radeon/rv770.c | ||
56 | @@ -151,6 +151,8 @@ int rv770_pcie_gart_enable(struct radeon_device *rdev) | ||
57 | WREG32(MC_VM_MD_L1_TLB0_CNTL, tmp); | ||
58 | WREG32(MC_VM_MD_L1_TLB1_CNTL, tmp); | ||
59 | WREG32(MC_VM_MD_L1_TLB2_CNTL, tmp); | ||
60 | + if (rdev->family == CHIP_RV740) | ||
61 | + WREG32(MC_VM_MD_L1_TLB3_CNTL, tmp); | ||
62 | WREG32(MC_VM_MB_L1_TLB0_CNTL, tmp); | ||
63 | WREG32(MC_VM_MB_L1_TLB1_CNTL, tmp); | ||
64 | WREG32(MC_VM_MB_L1_TLB2_CNTL, tmp); | ||
65 | diff --git a/drivers/gpu/drm/radeon/rv770d.h b/drivers/gpu/drm/radeon/rv770d.h | ||
66 | index 79fa588..7538092 100644 | ||
67 | --- a/drivers/gpu/drm/radeon/rv770d.h | ||
68 | +++ b/drivers/gpu/drm/radeon/rv770d.h | ||
69 | @@ -174,6 +174,7 @@ | ||
70 | #define MC_VM_MD_L1_TLB0_CNTL 0x2654 | ||
71 | #define MC_VM_MD_L1_TLB1_CNTL 0x2658 | ||
72 | #define MC_VM_MD_L1_TLB2_CNTL 0x265C | ||
73 | +#define MC_VM_MD_L1_TLB3_CNTL 0x2698 | ||
74 | #define MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR 0x203C | ||
75 | #define MC_VM_SYSTEM_APERTURE_HIGH_ADDR 0x2038 | ||
76 | #define MC_VM_SYSTEM_APERTURE_LOW_ADDR 0x2034 | ||
77 | -- | ||
78 | 1.7.9.5 | ||
79 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0048-drm-radeon-fix-HD6790-HD6570-backend-programming.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0048-drm-radeon-fix-HD6790-HD6570-backend-programming.patch new file mode 100644 index 00000000..e4ec73cd --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0048-drm-radeon-fix-HD6790-HD6570-backend-programming.patch | |||
@@ -0,0 +1,44 @@ | |||
1 | From 78a76c99190cb06c44e3432b33fa1641f6c75fa9 Mon Sep 17 00:00:00 2001 | ||
2 | From: Jerome Glisse <jglisse@redhat.com> | ||
3 | Date: Thu, 31 May 2012 19:00:24 -0400 | ||
4 | Subject: [PATCH 48/86] drm/radeon: fix HD6790, HD6570 backend programming | ||
5 | |||
6 | commit 95c4b23ec4e2fa5604df229ddf134e31d7b3b378 upstream. | ||
7 | |||
8 | Without this bit sets we get broken rendering and | ||
9 | lockups. | ||
10 | |||
11 | fglrx sets this bit. | ||
12 | |||
13 | Bugs that should be fixed by this patch : | ||
14 | https://bugs.freedesktop.org/show_bug.cgi?id=49792 | ||
15 | https://bugzilla.kernel.org/show_bug.cgi?id=43207 | ||
16 | https://bugs.freedesktop.org/show_bug.cgi?id=39282 | ||
17 | |||
18 | Signed-off-by: Jerome Glisse <jglisse@redhat.com> | ||
19 | Acked-by: Alex Deucher <alexander.deucher@amd.com> | ||
20 | Signed-off-by: Dave Airlie <airlied@redhat.com> | ||
21 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
22 | --- | ||
23 | drivers/gpu/drm/radeon/evergreen.c | 4 ++-- | ||
24 | 1 file changed, 2 insertions(+), 2 deletions(-) | ||
25 | |||
26 | diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c | ||
27 | index 7777c2f..dac178b 100644 | ||
28 | --- a/drivers/gpu/drm/radeon/evergreen.c | ||
29 | +++ b/drivers/gpu/drm/radeon/evergreen.c | ||
30 | @@ -2116,9 +2116,9 @@ static void evergreen_gpu_init(struct radeon_device *rdev) | ||
31 | WREG32(CC_SYS_RB_BACKEND_DISABLE, rb); | ||
32 | WREG32(GC_USER_RB_BACKEND_DISABLE, rb); | ||
33 | WREG32(CC_GC_SHADER_PIPE_CONFIG, sp); | ||
34 | - } | ||
35 | + } | ||
36 | |||
37 | - grbm_gfx_index |= SE_BROADCAST_WRITES; | ||
38 | + grbm_gfx_index = INSTANCE_BROADCAST_WRITES | SE_BROADCAST_WRITES; | ||
39 | WREG32(GRBM_GFX_INDEX, grbm_gfx_index); | ||
40 | WREG32(RLC_GFX_INDEX, grbm_gfx_index); | ||
41 | |||
42 | -- | ||
43 | 1.7.9.5 | ||
44 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0049-drm-ttm-Fix-spinlock-imbalance.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0049-drm-ttm-Fix-spinlock-imbalance.patch new file mode 100644 index 00000000..6529366c --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0049-drm-ttm-Fix-spinlock-imbalance.patch | |||
@@ -0,0 +1,33 @@ | |||
1 | From 309af9e8861e14263a958a70779944d8208f4323 Mon Sep 17 00:00:00 2001 | ||
2 | From: Thomas Hellstrom <thellstrom@vmware.com> | ||
3 | Date: Fri, 1 Jun 2012 15:39:11 +0200 | ||
4 | Subject: [PATCH 49/86] drm/ttm: Fix spinlock imbalance | ||
5 | |||
6 | commit a8ff3ee211fccf708e1911bbc096625453ebf759 upstream. | ||
7 | |||
8 | This imbalance may cause hangs when TTM is trying to swap out a buffer | ||
9 | that is already on the delayed delete list. | ||
10 | |||
11 | Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> | ||
12 | Reviewed-by: Jakob Bornecrantz <jakob@vmware.com> | ||
13 | Signed-off-by: Dave Airlie <airlied@redhat.com> | ||
14 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
15 | --- | ||
16 | drivers/gpu/drm/ttm/ttm_bo.c | 1 + | ||
17 | 1 file changed, 1 insertion(+) | ||
18 | |||
19 | diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c | ||
20 | index 0bb0f5f..0d27bff 100644 | ||
21 | --- a/drivers/gpu/drm/ttm/ttm_bo.c | ||
22 | +++ b/drivers/gpu/drm/ttm/ttm_bo.c | ||
23 | @@ -1816,6 +1816,7 @@ static int ttm_bo_swapout(struct ttm_mem_shrink *shrink) | ||
24 | spin_unlock(&glob->lru_lock); | ||
25 | (void) ttm_bo_cleanup_refs(bo, false, false, false); | ||
26 | kref_put(&bo->list_kref, ttm_bo_release_list); | ||
27 | + spin_lock(&glob->lru_lock); | ||
28 | continue; | ||
29 | } | ||
30 | |||
31 | -- | ||
32 | 1.7.9.5 | ||
33 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0050-drm-vmwgfx-Fix-nasty-write-past-alloced-memory-area.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0050-drm-vmwgfx-Fix-nasty-write-past-alloced-memory-area.patch new file mode 100644 index 00000000..81726bbb --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0050-drm-vmwgfx-Fix-nasty-write-past-alloced-memory-area.patch | |||
@@ -0,0 +1,31 @@ | |||
1 | From 345d5c3e9925e3a22b7974adfdb8bbb257432aee Mon Sep 17 00:00:00 2001 | ||
2 | From: Thomas Hellstrom <thellstrom@vmware.com> | ||
3 | Date: Fri, 1 Jun 2012 15:48:04 +0200 | ||
4 | Subject: [PATCH 50/86] drm/vmwgfx: Fix nasty write past alloced memory area | ||
5 | |||
6 | commit 0824db38e515644f8d1bfd64adbd7cb2c6ea7c62 upstream. | ||
7 | |||
8 | Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> | ||
9 | Reviewed-by: Jakob Bornecrantz <jakob@vmware.com> | ||
10 | Signed-off-by: Dave Airlie <airlied@redhat.com> | ||
11 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
12 | --- | ||
13 | drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c | 2 +- | ||
14 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
15 | |||
16 | diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c b/drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c | ||
17 | index f4e7763..c41226a 100644 | ||
18 | --- a/drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c | ||
19 | +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c | ||
20 | @@ -66,7 +66,7 @@ static int vmw_gmr2_bind(struct vmw_private *dev_priv, | ||
21 | cmd += sizeof(remap_cmd) / sizeof(uint32); | ||
22 | |||
23 | for (i = 0; i < num_pages; ++i) { | ||
24 | - if (VMW_PPN_SIZE > 4) | ||
25 | + if (VMW_PPN_SIZE <= 4) | ||
26 | *cmd = page_to_pfn(*pages++); | ||
27 | else | ||
28 | *((uint64_t *)cmd) = page_to_pfn(*pages++); | ||
29 | -- | ||
30 | 1.7.9.5 | ||
31 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0051-mtd-of_parts-fix-breakage-in-Kconfig.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0051-mtd-of_parts-fix-breakage-in-Kconfig.patch new file mode 100644 index 00000000..f2451df3 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0051-mtd-of_parts-fix-breakage-in-Kconfig.patch | |||
@@ -0,0 +1,37 @@ | |||
1 | From a0ca2787e60cec97689e654987149ead8fa6253b Mon Sep 17 00:00:00 2001 | ||
2 | From: Frank Svendsboe <frank.svendsboe@gmail.com> | ||
3 | Date: Thu, 17 May 2012 22:43:09 +0200 | ||
4 | Subject: [PATCH 51/86] mtd: of_parts: fix breakage in Kconfig | ||
5 | |||
6 | commit 2e929d001e85126d9267de373d4b76014789661d upstream. | ||
7 | |||
8 | MTD_OF_PARTS and the default setting is not working due to using 'Y' | ||
9 | instead of 'y', introduced in commit | ||
10 | d6137badeff1ef64b4e0092ec249ebdeaeb3ff37. This made our board, and | ||
11 | possibly other boards using DTS defined partitions and not having | ||
12 | CONFIG_MTD_OF_PARTS=y defined in the defconfig, fail to mount root. | ||
13 | |||
14 | Signed-off-by: Frank Svendsboe <frank.svendsboe@gmail.com> | ||
15 | Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> | ||
16 | Signed-off-by: David Woodhouse <David.Woodhouse@intel.com> | ||
17 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
18 | --- | ||
19 | drivers/mtd/Kconfig | 2 +- | ||
20 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
21 | |||
22 | diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig | ||
23 | index 318a869..4035b6d 100644 | ||
24 | --- a/drivers/mtd/Kconfig | ||
25 | +++ b/drivers/mtd/Kconfig | ||
26 | @@ -128,7 +128,7 @@ config MTD_AFS_PARTS | ||
27 | |||
28 | config MTD_OF_PARTS | ||
29 | tristate "OpenFirmware partitioning information support" | ||
30 | - default Y | ||
31 | + default y | ||
32 | depends on OF | ||
33 | help | ||
34 | This provides a partition parsing function which derives | ||
35 | -- | ||
36 | 1.7.9.5 | ||
37 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0052-fec_mpc52xx-fix-timestamp-filtering.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0052-fec_mpc52xx-fix-timestamp-filtering.patch new file mode 100644 index 00000000..c808bfed --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0052-fec_mpc52xx-fix-timestamp-filtering.patch | |||
@@ -0,0 +1,34 @@ | |||
1 | From cc0b272fadb6be36a03152cbd37a95725a5114d4 Mon Sep 17 00:00:00 2001 | ||
2 | From: Stephan Gatzka <stephan@gatzka.org> | ||
3 | Date: Sat, 2 Jun 2012 03:04:06 +0000 | ||
4 | Subject: [PATCH 52/86] fec_mpc52xx: fix timestamp filtering | ||
5 | |||
6 | commit 9ca3cc6f3026946ba655e863ca2096339e667639 upstream. | ||
7 | |||
8 | skb_defer_rx_timestamp was called with a freshly allocated skb but must | ||
9 | be called with rskb instead. | ||
10 | |||
11 | Signed-off-by: Stephan Gatzka <stephan@gatzka.org> | ||
12 | Acked-by: Richard Cochran <richardcochran@gmail.com> | ||
13 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
14 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
15 | --- | ||
16 | drivers/net/ethernet/freescale/fec_mpc52xx.c | 2 +- | ||
17 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
18 | |||
19 | diff --git a/drivers/net/ethernet/freescale/fec_mpc52xx.c b/drivers/net/ethernet/freescale/fec_mpc52xx.c | ||
20 | index 30745b5..1e52736 100644 | ||
21 | --- a/drivers/net/ethernet/freescale/fec_mpc52xx.c | ||
22 | +++ b/drivers/net/ethernet/freescale/fec_mpc52xx.c | ||
23 | @@ -437,7 +437,7 @@ static irqreturn_t mpc52xx_fec_rx_interrupt(int irq, void *dev_id) | ||
24 | length = status & BCOM_FEC_RX_BD_LEN_MASK; | ||
25 | skb_put(rskb, length - 4); /* length without CRC32 */ | ||
26 | rskb->protocol = eth_type_trans(rskb, dev); | ||
27 | - if (!skb_defer_rx_timestamp(skb)) | ||
28 | + if (!skb_defer_rx_timestamp(rskb)) | ||
29 | netif_rx(rskb); | ||
30 | |||
31 | spin_lock(&priv->lock); | ||
32 | -- | ||
33 | 1.7.9.5 | ||
34 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0053-Bluetooth-btusb-Add-vendor-specific-ID-0a5c-21f3-for.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0053-Bluetooth-btusb-Add-vendor-specific-ID-0a5c-21f3-for.patch new file mode 100644 index 00000000..e8bb82ba --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0053-Bluetooth-btusb-Add-vendor-specific-ID-0a5c-21f3-for.patch | |||
@@ -0,0 +1,44 @@ | |||
1 | From b57ea95f303c57eecda3fabdf246147ca9236cc3 Mon Sep 17 00:00:00 2001 | ||
2 | From: Manoj Iyer <manoj.iyer@canonical.com> | ||
3 | Date: Thu, 2 Feb 2012 09:32:36 -0600 | ||
4 | Subject: [PATCH 53/86] Bluetooth: btusb: Add vendor specific ID (0a5c 21f3) | ||
5 | for BCM20702A0 | ||
6 | |||
7 | commit 37305cf649689a4d2341dd6fd89b091c6007f9ba upstream. | ||
8 | |||
9 | T: Bus=01 Lev=02 Prnt=02 Port=03 Cnt=03 Dev#= 5 Spd=12 MxCh= 0 | ||
10 | D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1 | ||
11 | P: Vendor=0a5c ProdID=21f3 Rev=01.12 | ||
12 | S: Manufacturer=Broadcom Corp | ||
13 | S: Product=BCM20702A0 | ||
14 | S: SerialNumber=74DE2B344A7B | ||
15 | C: #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA | ||
16 | I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none) | ||
17 | I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none) | ||
18 | I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none) | ||
19 | I: If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none) | ||
20 | |||
21 | Signed-off-by: Manoj Iyer <manoj.iyer@canonical.com> | ||
22 | Tested-by: Dennis Chua <dennis.chua@canonical.com> | ||
23 | Acked-by: Marcel Holtmann <marcel@holtmann.org> | ||
24 | Signed-off-by: Johan Hedberg <johan.hedberg@intel.com> | ||
25 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
26 | --- | ||
27 | drivers/bluetooth/btusb.c | 1 + | ||
28 | 1 file changed, 1 insertion(+) | ||
29 | |||
30 | diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c | ||
31 | index e56da6a..1f8c8ca 100644 | ||
32 | --- a/drivers/bluetooth/btusb.c | ||
33 | +++ b/drivers/bluetooth/btusb.c | ||
34 | @@ -102,6 +102,7 @@ static struct usb_device_id btusb_table[] = { | ||
35 | |||
36 | /* Broadcom BCM20702A0 */ | ||
37 | { USB_DEVICE(0x0a5c, 0x21e3) }, | ||
38 | + { USB_DEVICE(0x0a5c, 0x21f3) }, | ||
39 | { USB_DEVICE(0x413c, 0x8197) }, | ||
40 | |||
41 | { } /* Terminating entry */ | ||
42 | -- | ||
43 | 1.7.9.5 | ||
44 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0054-Bluetooth-btusb-add-support-for-BCM20702A0-0a5c-21e6.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0054-Bluetooth-btusb-add-support-for-BCM20702A0-0a5c-21e6.patch new file mode 100644 index 00000000..4adefece --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0054-Bluetooth-btusb-add-support-for-BCM20702A0-0a5c-21e6.patch | |||
@@ -0,0 +1,48 @@ | |||
1 | From c2b51905d0a995131d0e4ad248ebe4bc4a5c9470 Mon Sep 17 00:00:00 2001 | ||
2 | From: "James M. Leddy" <james.leddy@canonical.com> | ||
3 | Date: Tue, 6 Mar 2012 02:41:33 +0200 | ||
4 | Subject: [PATCH 54/86] Bluetooth: btusb: add support for BCM20702A0 | ||
5 | [0a5c:21e6] | ||
6 | |||
7 | commit 0a4eaeeb993658a4d6cff054a863241f32d3d2fb upstream. | ||
8 | |||
9 | Add another vendor specific ID for BCM20702A0. This has been tested and | ||
10 | works on hardware with this device. | ||
11 | |||
12 | output of usb-devices: | ||
13 | T: Bus=01 Lev=02 Prnt=02 Port=03 Cnt=04 Dev#= 6 Spd=12 MxCh= 0 | ||
14 | D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1 | ||
15 | P: Vendor=0a5c ProdID=21e6 Rev=01.12 | ||
16 | S: Manufacturer=Broadcom Corp | ||
17 | S: Product=BCM20702A0 | ||
18 | S: SerialNumber=D0DF9AFB227B | ||
19 | C: #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA | ||
20 | I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none) | ||
21 | I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none) | ||
22 | I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none) | ||
23 | I: If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none) | ||
24 | |||
25 | Signed-off-by: James M. Leddy <james.leddy@canonical.com> | ||
26 | Acked-by: Marcel Holtmann <marcel@holtmann.org> | ||
27 | Signed-off-by: Andrew Morton <akpm@linux-foundation.org> | ||
28 | Signed-off-by: Johan Hedberg <johan.hedberg@intel.com> | ||
29 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
30 | --- | ||
31 | drivers/bluetooth/btusb.c | 1 + | ||
32 | 1 file changed, 1 insertion(+) | ||
33 | |||
34 | diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c | ||
35 | index 1f8c8ca..fde7512 100644 | ||
36 | --- a/drivers/bluetooth/btusb.c | ||
37 | +++ b/drivers/bluetooth/btusb.c | ||
38 | @@ -102,6 +102,7 @@ static struct usb_device_id btusb_table[] = { | ||
39 | |||
40 | /* Broadcom BCM20702A0 */ | ||
41 | { USB_DEVICE(0x0a5c, 0x21e3) }, | ||
42 | + { USB_DEVICE(0x0a5c, 0x21e6) }, | ||
43 | { USB_DEVICE(0x0a5c, 0x21f3) }, | ||
44 | { USB_DEVICE(0x413c, 0x8197) }, | ||
45 | |||
46 | -- | ||
47 | 1.7.9.5 | ||
48 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0055-Bluetooth-btusb-Add-USB-device-ID-0a5c-21e8.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0055-Bluetooth-btusb-Add-USB-device-ID-0a5c-21e8.patch new file mode 100644 index 00000000..65aed69b --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0055-Bluetooth-btusb-Add-USB-device-ID-0a5c-21e8.patch | |||
@@ -0,0 +1,47 @@ | |||
1 | From 67248cba79392f35493056ea7262d27fc1fe06f3 Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Rechi=20Vita?= <jprvita@openbossa.org> | ||
3 | Date: Wed, 14 Mar 2012 21:45:16 +0200 | ||
4 | Subject: [PATCH 55/86] Bluetooth: btusb: Add USB device ID "0a5c 21e8" | ||
5 | MIME-Version: 1.0 | ||
6 | Content-Type: text/plain; charset=UTF-8 | ||
7 | Content-Transfer-Encoding: 8bit | ||
8 | |||
9 | commit 6dfc326f0605fd87e4c10ccde10de0ce4280d72d upstream. | ||
10 | |||
11 | One more vendor-specific ID for BCM20702A0. | ||
12 | |||
13 | T: Bus=01 Lev=03 Prnt=05 Port=02 Cnt=01 Dev#= 9 Spd=12 MxCh= 0 | ||
14 | D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1 | ||
15 | P: Vendor=0a5c ProdID=21e8 Rev=01.12 | ||
16 | S: Manufacturer=Broadcom Corp | ||
17 | S: Product=BCM20702A0 | ||
18 | S: SerialNumber=00027221F4E2 | ||
19 | C: #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA | ||
20 | I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none) | ||
21 | I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none) | ||
22 | I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none) | ||
23 | I: If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none) | ||
24 | |||
25 | Signed-off-by: João Paulo Rechi Vita <jprvita@openbossa.org> | ||
26 | Acked-by: Gustavo F. Padovan <padovan@profusion.mobi> | ||
27 | Signed-off-by: Johan Hedberg <johan.hedberg@intel.com> | ||
28 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
29 | --- | ||
30 | drivers/bluetooth/btusb.c | 1 + | ||
31 | 1 file changed, 1 insertion(+) | ||
32 | |||
33 | diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c | ||
34 | index fde7512..d4859bf 100644 | ||
35 | --- a/drivers/bluetooth/btusb.c | ||
36 | +++ b/drivers/bluetooth/btusb.c | ||
37 | @@ -103,6 +103,7 @@ static struct usb_device_id btusb_table[] = { | ||
38 | /* Broadcom BCM20702A0 */ | ||
39 | { USB_DEVICE(0x0a5c, 0x21e3) }, | ||
40 | { USB_DEVICE(0x0a5c, 0x21e6) }, | ||
41 | + { USB_DEVICE(0x0a5c, 0x21e8) }, | ||
42 | { USB_DEVICE(0x0a5c, 0x21f3) }, | ||
43 | { USB_DEVICE(0x413c, 0x8197) }, | ||
44 | |||
45 | -- | ||
46 | 1.7.9.5 | ||
47 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0056-Bluetooth-btusb-typo-in-Broadcom-SoftSailing-id.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0056-Bluetooth-btusb-typo-in-Broadcom-SoftSailing-id.patch new file mode 100644 index 00000000..35c5c392 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0056-Bluetooth-btusb-typo-in-Broadcom-SoftSailing-id.patch | |||
@@ -0,0 +1,66 @@ | |||
1 | From e109dadcc7d05181ac8e093311d8a242b0d58ca7 Mon Sep 17 00:00:00 2001 | ||
2 | From: Don Zickus <dzickus@redhat.com> | ||
3 | Date: Wed, 28 Mar 2012 16:41:11 -0400 | ||
4 | Subject: [PATCH 56/86] Bluetooth: btusb: typo in Broadcom SoftSailing id | ||
5 | |||
6 | commit 2e8b506310f6433d5558387fd568d4bfb1d6a799 upstream. | ||
7 | |||
8 | I was trying to backport the following commit to RHEL-6 | ||
9 | |||
10 | From 0cea73465cd22373c5cd43a3edd25fbd4bb532ef Mon Sep 17 00:00:00 2001 | ||
11 | From: Oliver Neukum <oliver@neukum.org> | ||
12 | Date: Wed, 21 Sep 2011 11:37:15 +0200 | ||
13 | Subject: [PATCH] btusb: add device entry for Broadcom SoftSailing | ||
14 | |||
15 | and noticed it wasn't working on an HP Elitebook. Looking into the patch I | ||
16 | noticed a very subtle typo in the ids. The patch has '0x05ac' instead of | ||
17 | '0x0a5c'. A snippet of the lsusb -v output also shows this: | ||
18 | |||
19 | Bus 002 Device 003: ID 0a5c:21e1 Broadcom Corp. | ||
20 | Device Descriptor: | ||
21 | bLength 18 | ||
22 | bDescriptorType 1 | ||
23 | bcdUSB 2.00 | ||
24 | bDeviceClass 255 Vendor Specific Class | ||
25 | bDeviceSubClass 1 | ||
26 | bDeviceProtocol 1 | ||
27 | bMaxPacketSize0 64 | ||
28 | idVendor 0x0a5c Broadcom Corp. | ||
29 | idProduct 0x21e1 | ||
30 | bcdDevice 1.12 | ||
31 | iManufacturer 1 Broadcom Corp | ||
32 | iProduct 2 BCM20702A0 | ||
33 | iSerial 3 60D819F0338C | ||
34 | bNumConfigurations 1 | ||
35 | |||
36 | Looking at other Broadcom ids, the fix matches them whereas the original patch | ||
37 | matches Apple's ids. | ||
38 | |||
39 | Tested on an HP Elitebook 8760w. The btusb binds and the userspace stuff loads | ||
40 | correctly. | ||
41 | |||
42 | Cc: Oliver Neukum <oliver@neukum.org> | ||
43 | Signed-off-by: Don Zickus <dzickus@redhat.com> | ||
44 | Acked-by: Marcel Holtmann <marcel@holtmann.org> | ||
45 | Signed-off-by: Johan Hedberg <johan.hedberg@intel.com> | ||
46 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
47 | --- | ||
48 | drivers/bluetooth/btusb.c | 2 +- | ||
49 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
50 | |||
51 | diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c | ||
52 | index d4859bf..f8a0b7f 100644 | ||
53 | --- a/drivers/bluetooth/btusb.c | ||
54 | +++ b/drivers/bluetooth/btusb.c | ||
55 | @@ -61,7 +61,7 @@ static struct usb_device_id btusb_table[] = { | ||
56 | { USB_DEVICE_INFO(0xe0, 0x01, 0x01) }, | ||
57 | |||
58 | /* Broadcom SoftSailing reporting vendor specific */ | ||
59 | - { USB_DEVICE(0x05ac, 0x21e1) }, | ||
60 | + { USB_DEVICE(0x0a5c, 0x21e1) }, | ||
61 | |||
62 | /* Apple MacBookPro 7,1 */ | ||
63 | { USB_DEVICE(0x05ac, 0x8213) }, | ||
64 | -- | ||
65 | 1.7.9.5 | ||
66 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0057-Bluetooth-btusb-Add-vendor-specific-ID-0489-e042-for.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0057-Bluetooth-btusb-Add-vendor-specific-ID-0489-e042-for.patch new file mode 100644 index 00000000..4e9b6d6f --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0057-Bluetooth-btusb-Add-vendor-specific-ID-0489-e042-for.patch | |||
@@ -0,0 +1,43 @@ | |||
1 | From d7988c4b2a641a23d6156b650616eada6ba6152a Mon Sep 17 00:00:00 2001 | ||
2 | From: Manoj Iyer <manoj.iyer@canonical.com> | ||
3 | Date: Mon, 9 Apr 2012 09:22:28 -0500 | ||
4 | Subject: [PATCH 57/86] Bluetooth: btusb: Add vendor specific ID (0489 e042) | ||
5 | for BCM20702A0 | ||
6 | |||
7 | commit 79cd76022044f8177bb00e3fd590ec8d6b5f8c35 upstream. | ||
8 | |||
9 | T: Bus=02 Lev=02 Prnt=02 Port=04 Cnt=01 Dev#= 3 Spd=12 MxCh= 0 | ||
10 | D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1 | ||
11 | P: Vendor=0489 ProdID=e042 Rev=01.12 | ||
12 | S: Manufacturer=Broadcom Corp | ||
13 | S: Product=BCM20702A0 | ||
14 | S: SerialNumber=E4D53DCA61B5 | ||
15 | C: #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA | ||
16 | I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none) | ||
17 | I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none) | ||
18 | I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none) | ||
19 | I: If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none) | ||
20 | |||
21 | Reported-by: Dennis Chua <dennis.chua@canonical.com> | ||
22 | Signed-off-by: Manoj Iyer <manoj.iyer@canonical.com> | ||
23 | Signed-off-by: Johan Hedberg <johan.hedberg@intel.com> | ||
24 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
25 | --- | ||
26 | drivers/bluetooth/btusb.c | 1 + | ||
27 | 1 file changed, 1 insertion(+) | ||
28 | |||
29 | diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c | ||
30 | index f8a0b7f..41fe990 100644 | ||
31 | --- a/drivers/bluetooth/btusb.c | ||
32 | +++ b/drivers/bluetooth/btusb.c | ||
33 | @@ -101,6 +101,7 @@ static struct usb_device_id btusb_table[] = { | ||
34 | { USB_DEVICE(0x0c10, 0x0000) }, | ||
35 | |||
36 | /* Broadcom BCM20702A0 */ | ||
37 | + { USB_DEVICE(0x0489, 0xe042) }, | ||
38 | { USB_DEVICE(0x0a5c, 0x21e3) }, | ||
39 | { USB_DEVICE(0x0a5c, 0x21e6) }, | ||
40 | { USB_DEVICE(0x0a5c, 0x21e8) }, | ||
41 | -- | ||
42 | 1.7.9.5 | ||
43 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0058-Bluetooth-Add-support-for-Atheros-13d3-3362.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0058-Bluetooth-Add-support-for-Atheros-13d3-3362.patch new file mode 100644 index 00000000..f383af87 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0058-Bluetooth-Add-support-for-Atheros-13d3-3362.patch | |||
@@ -0,0 +1,64 @@ | |||
1 | From e98b15f43ca380ca2d8adeae78da99222cf12f8a Mon Sep 17 00:00:00 2001 | ||
2 | From: AceLan Kao <acelan.kao@canonical.com> | ||
3 | Date: Fri, 13 Apr 2012 17:39:57 +0800 | ||
4 | Subject: [PATCH 58/86] Bluetooth: Add support for Atheros [13d3:3362] | ||
5 | |||
6 | commit 87522a433ba6886b5ccbb497e0a7cb8097def64e upstream. | ||
7 | |||
8 | Add another vendor specific ID for Atheros AR3012 device. | ||
9 | This chip is wrapped by IMC Networks. | ||
10 | |||
11 | output of usb-devices: | ||
12 | T: Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 5 Spd=12 MxCh= 0 | ||
13 | D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1 | ||
14 | P: Vendor=13d3 ProdID=3362 Rev=00.02 | ||
15 | S: Manufacturer=Atheros Communications | ||
16 | S: Product=Bluetooth USB Host Controller | ||
17 | S: SerialNumber=Alaska Day 2006 | ||
18 | C: #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA | ||
19 | I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb | ||
20 | I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb | ||
21 | |||
22 | Signed-off-by: AceLan Kao <acelan.kao@canonical.com> | ||
23 | Signed-off-by: Johan Hedberg <johan.hedberg@intel.com> | ||
24 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
25 | --- | ||
26 | drivers/bluetooth/ath3k.c | 2 ++ | ||
27 | drivers/bluetooth/btusb.c | 1 + | ||
28 | 2 files changed, 3 insertions(+) | ||
29 | |||
30 | diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c | ||
31 | index 99fefbd..90482ef 100644 | ||
32 | --- a/drivers/bluetooth/ath3k.c | ||
33 | +++ b/drivers/bluetooth/ath3k.c | ||
34 | @@ -74,6 +74,7 @@ static struct usb_device_id ath3k_table[] = { | ||
35 | { USB_DEVICE(0x0CF3, 0x311D) }, | ||
36 | { USB_DEVICE(0x13d3, 0x3375) }, | ||
37 | { USB_DEVICE(0x04CA, 0x3005) }, | ||
38 | + { USB_DEVICE(0x13d3, 0x3362) }, | ||
39 | |||
40 | /* Atheros AR5BBU12 with sflash firmware */ | ||
41 | { USB_DEVICE(0x0489, 0xE02C) }, | ||
42 | @@ -93,6 +94,7 @@ static struct usb_device_id ath3k_blist_tbl[] = { | ||
43 | { USB_DEVICE(0x0cf3, 0x311D), .driver_info = BTUSB_ATH3012 }, | ||
44 | { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 }, | ||
45 | { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 }, | ||
46 | + { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 }, | ||
47 | |||
48 | { } /* Terminating entry */ | ||
49 | }; | ||
50 | diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c | ||
51 | index 41fe990..1329fa7 100644 | ||
52 | --- a/drivers/bluetooth/btusb.c | ||
53 | +++ b/drivers/bluetooth/btusb.c | ||
54 | @@ -134,6 +134,7 @@ static struct usb_device_id blacklist_table[] = { | ||
55 | { USB_DEVICE(0x0cf3, 0x311d), .driver_info = BTUSB_ATH3012 }, | ||
56 | { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 }, | ||
57 | { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 }, | ||
58 | + { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 }, | ||
59 | |||
60 | /* Atheros AR5BBU12 with sflash firmware */ | ||
61 | { USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE }, | ||
62 | -- | ||
63 | 1.7.9.5 | ||
64 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0059-Bluetooth-Add-support-for-AR3012-0cf3-e004.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0059-Bluetooth-Add-support-for-AR3012-0cf3-e004.patch new file mode 100644 index 00000000..b52635a4 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0059-Bluetooth-Add-support-for-AR3012-0cf3-e004.patch | |||
@@ -0,0 +1,65 @@ | |||
1 | From d86daa62c84ee4f586aed288307d8086ffd03db9 Mon Sep 17 00:00:00 2001 | ||
2 | From: AceLan Kao <acelan.kao@canonical.com> | ||
3 | Date: Thu, 19 Apr 2012 14:53:45 +0800 | ||
4 | Subject: [PATCH 59/86] Bluetooth: Add support for AR3012 [0cf3:e004] | ||
5 | |||
6 | commit ac71311e65e2c4c2dbac76db698fecbee755b016 upstream. | ||
7 | |||
8 | Add another vendor specific ID for Atheros AR3012 | ||
9 | |||
10 | output of usb-devices: | ||
11 | T: Bus=02 Lev=02 Prnt=02 Port=04 Cnt=01 Dev#= 4 Spd=12 MxCh= 0 | ||
12 | D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1 | ||
13 | P: Vendor=0cf3 ProdID=e004 Rev=00.02 | ||
14 | S: Manufacturer=Atheros Communications | ||
15 | S: Product=Bluetooth USB Host Controller | ||
16 | S: SerialNumber=Alaska Day 2006 | ||
17 | C: #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA | ||
18 | I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb | ||
19 | I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb | ||
20 | |||
21 | BugLink: https://bugs.launchpad.net/bugs/922715 | ||
22 | |||
23 | Signed-off-by: AceLan Kao <acelan.kao@canonical.com> | ||
24 | Signed-off-by: Marcel Holtmann <marcel@holtmann.org> | ||
25 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
26 | --- | ||
27 | drivers/bluetooth/ath3k.c | 2 ++ | ||
28 | drivers/bluetooth/btusb.c | 1 + | ||
29 | 2 files changed, 3 insertions(+) | ||
30 | |||
31 | diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c | ||
32 | index 90482ef..7e0b3c4 100644 | ||
33 | --- a/drivers/bluetooth/ath3k.c | ||
34 | +++ b/drivers/bluetooth/ath3k.c | ||
35 | @@ -75,6 +75,7 @@ static struct usb_device_id ath3k_table[] = { | ||
36 | { USB_DEVICE(0x13d3, 0x3375) }, | ||
37 | { USB_DEVICE(0x04CA, 0x3005) }, | ||
38 | { USB_DEVICE(0x13d3, 0x3362) }, | ||
39 | + { USB_DEVICE(0x0CF3, 0xE004) }, | ||
40 | |||
41 | /* Atheros AR5BBU12 with sflash firmware */ | ||
42 | { USB_DEVICE(0x0489, 0xE02C) }, | ||
43 | @@ -95,6 +96,7 @@ static struct usb_device_id ath3k_blist_tbl[] = { | ||
44 | { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 }, | ||
45 | { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 }, | ||
46 | { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 }, | ||
47 | + { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 }, | ||
48 | |||
49 | { } /* Terminating entry */ | ||
50 | }; | ||
51 | diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c | ||
52 | index 1329fa7..d6217c2 100644 | ||
53 | --- a/drivers/bluetooth/btusb.c | ||
54 | +++ b/drivers/bluetooth/btusb.c | ||
55 | @@ -135,6 +135,7 @@ static struct usb_device_id blacklist_table[] = { | ||
56 | { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 }, | ||
57 | { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 }, | ||
58 | { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 }, | ||
59 | + { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 }, | ||
60 | |||
61 | /* Atheros AR5BBU12 with sflash firmware */ | ||
62 | { USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE }, | ||
63 | -- | ||
64 | 1.7.9.5 | ||
65 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0060-Add-Foxconn-Hon-Hai-IDs-for-btusb-module.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0060-Add-Foxconn-Hon-Hai-IDs-for-btusb-module.patch new file mode 100644 index 00000000..ca759ca8 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0060-Add-Foxconn-Hon-Hai-IDs-for-btusb-module.patch | |||
@@ -0,0 +1,71 @@ | |||
1 | From ebe49536c92d57d8147efb128bbd6e3aff2e9289 Mon Sep 17 00:00:00 2001 | ||
2 | From: Steven Harms <sjharms@gmail.com> | ||
3 | Date: Fri, 13 Apr 2012 14:45:55 -0400 | ||
4 | Subject: [PATCH 60/86] Add Foxconn / Hon Hai IDs for btusb module | ||
5 | |||
6 | commit 985140369be1e886754d8ac0375dd64e4f727311 upstream. | ||
7 | |||
8 | This change adds 0x0489:0xe033 to the btusb module. | ||
9 | |||
10 | This bluetooth usb device is integrated in the Acer TimelineX AS4830TG-6808 notebook. | ||
11 | |||
12 | Output from /sys/kernel/debug/usb/devices: | ||
13 | |||
14 | T: Bus=01 Lev=02 Prnt=02 Port=05 Cnt=02 Dev#= 4 Spd=12 MxCh= 0 | ||
15 | D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1 | ||
16 | P: Vendor=0489 ProdID=e033 Rev= 2.29 | ||
17 | S: Manufacturer=Broadcom Corp | ||
18 | S: Product=Acer Module | ||
19 | S: SerialNumber=60D819F74101 | ||
20 | C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr= 0mA | ||
21 | I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb | ||
22 | E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=1ms | ||
23 | E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms | ||
24 | E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms | ||
25 | I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb | ||
26 | E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms | ||
27 | E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms | ||
28 | I: If#= 1 Alt= 1 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb | ||
29 | E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms | ||
30 | E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms | ||
31 | I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb | ||
32 | E: Ad=83(I) Atr=01(Isoc) MxPS= 17 Ivl=1ms | ||
33 | E: Ad=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms | ||
34 | I: If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb | ||
35 | E: Ad=83(I) Atr=01(Isoc) MxPS= 32 Ivl=1ms | ||
36 | E: Ad=03(O) Atr=01(Isoc) MxPS= 32 Ivl=1ms | ||
37 | I: If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb | ||
38 | E: Ad=83(I) Atr=01(Isoc) MxPS= 64 Ivl=1ms | ||
39 | E: Ad=03(O) Atr=01(Isoc) MxPS= 64 Ivl=1ms | ||
40 | I: If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb | ||
41 | E: Ad=83(I) Atr=01(Isoc) MxPS= 64 Ivl=1ms | ||
42 | E: Ad=03(O) Atr=01(Isoc) MxPS= 64 Ivl=1ms | ||
43 | I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none) | ||
44 | E: Ad=84(I) Atr=02(Bulk) MxPS= 32 Ivl=0ms | ||
45 | E: Ad=04(O) Atr=02(Bulk) MxPS= 32 Ivl=0ms | ||
46 | I:* If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none) | ||
47 | |||
48 | Signed-off-by: Steven Harms <sjharms@gmail.com> | ||
49 | Signed-off-by: Gustavo Padovan <gustavo@padovan.org> | ||
50 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
51 | --- | ||
52 | drivers/bluetooth/btusb.c | 3 +++ | ||
53 | 1 file changed, 3 insertions(+) | ||
54 | |||
55 | diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c | ||
56 | index d6217c2..fdceeac 100644 | ||
57 | --- a/drivers/bluetooth/btusb.c | ||
58 | +++ b/drivers/bluetooth/btusb.c | ||
59 | @@ -108,6 +108,9 @@ static struct usb_device_id btusb_table[] = { | ||
60 | { USB_DEVICE(0x0a5c, 0x21f3) }, | ||
61 | { USB_DEVICE(0x413c, 0x8197) }, | ||
62 | |||
63 | + /* Foxconn - Hon Hai */ | ||
64 | + { USB_DEVICE(0x0489, 0xe033) }, | ||
65 | + | ||
66 | { } /* Terminating entry */ | ||
67 | }; | ||
68 | |||
69 | -- | ||
70 | 1.7.9.5 | ||
71 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0061-Bluetooth-Add-support-for-Foxconn-Hon-Hai-AR5BBU22-0.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0061-Bluetooth-Add-support-for-Foxconn-Hon-Hai-AR5BBU22-0.patch new file mode 100644 index 00000000..f0c30e1a --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0061-Bluetooth-Add-support-for-Foxconn-Hon-Hai-AR5BBU22-0.patch | |||
@@ -0,0 +1,94 @@ | |||
1 | From c28bcb8c3f6bdeb976832e0726872944c739ae6a Mon Sep 17 00:00:00 2001 | ||
2 | From: Michael Gruetzner <mgruetzn@gmx.de> | ||
3 | Date: Wed, 2 May 2012 22:33:40 +0200 | ||
4 | Subject: [PATCH 61/86] Bluetooth: Add support for Foxconn/Hon Hai AR5BBU22 | ||
5 | 0489:E03C | ||
6 | |||
7 | commit 85d59726c5c66016a507f1f4a60db8e374dd284d upstream. | ||
8 | |||
9 | Add Foxconn/Hon Hai AR5BBU22 Bluetooth Module( 0x489:0xE03C) to | ||
10 | the blacklist of btusb module and add it to the ath3k module to properly | ||
11 | load the firmware in Kernel 3.3.4 | ||
12 | The device is integrated in e.g. some Acer Aspire 7750G. | ||
13 | |||
14 | Output from /sys/kernel/debug/usb/devices: | ||
15 | |||
16 | T: Bus=01 Lev=02 Prnt=02 Port=05 Cnt=02 Dev#= 6 Spd=12 MxCh= 0 | ||
17 | D: Ver= 2.00 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1 | ||
18 | P: Vendor=0489 ProdID=e03c Rev= 0.02 | ||
19 | S: Manufacturer=Atheros Communications | ||
20 | S: Product=Bluetooth USB Host Controller | ||
21 | S: SerialNumber=Alaska Day 2006 | ||
22 | C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA | ||
23 | I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb | ||
24 | E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=1ms | ||
25 | E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms | ||
26 | E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms | ||
27 | I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb | ||
28 | E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms | ||
29 | E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms | ||
30 | I: If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb | ||
31 | E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms | ||
32 | E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms | ||
33 | I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb | ||
34 | E: Ad=83(I) Atr=01(Isoc) MxPS= 17 Ivl=1ms | ||
35 | E: Ad=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms | ||
36 | I: If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb | ||
37 | E: Ad=83(I) Atr=01(Isoc) MxPS= 25 Ivl=1ms | ||
38 | E: Ad=03(O) Atr=01(Isoc) MxPS= 25 Ivl=1ms | ||
39 | I: If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb | ||
40 | E: Ad=83(I) Atr=01(Isoc) MxPS= 33 Ivl=1ms | ||
41 | E: Ad=03(O) Atr=01(Isoc) MxPS= 33 Ivl=1ms | ||
42 | I: If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb | ||
43 | E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms | ||
44 | E: Ad=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms | ||
45 | |||
46 | Signed-off-by: Michael Gruetzner <mgruetzn@gmx.de> | ||
47 | Signed-off-by: Gustavo Padovan <gustavo@padovan.org> | ||
48 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
49 | --- | ||
50 | drivers/bluetooth/ath3k.c | 6 ++++++ | ||
51 | drivers/bluetooth/btusb.c | 3 +++ | ||
52 | 2 files changed, 9 insertions(+) | ||
53 | |||
54 | diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c | ||
55 | index 7e0b3c4..f1bd44f 100644 | ||
56 | --- a/drivers/bluetooth/ath3k.c | ||
57 | +++ b/drivers/bluetooth/ath3k.c | ||
58 | @@ -80,6 +80,9 @@ static struct usb_device_id ath3k_table[] = { | ||
59 | /* Atheros AR5BBU12 with sflash firmware */ | ||
60 | { USB_DEVICE(0x0489, 0xE02C) }, | ||
61 | |||
62 | + /* Atheros AR5BBU22 with sflash firmware */ | ||
63 | + { USB_DEVICE(0x0489, 0xE03C) }, | ||
64 | + | ||
65 | { } /* Terminating entry */ | ||
66 | }; | ||
67 | |||
68 | @@ -98,6 +101,9 @@ static struct usb_device_id ath3k_blist_tbl[] = { | ||
69 | { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 }, | ||
70 | { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 }, | ||
71 | |||
72 | + /* Atheros AR5BBU22 with sflash firmware */ | ||
73 | + { USB_DEVICE(0x0489, 0xE03C), .driver_info = BTUSB_ATH3012 }, | ||
74 | + | ||
75 | { } /* Terminating entry */ | ||
76 | }; | ||
77 | |||
78 | diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c | ||
79 | index fdceeac..fc4bcd6 100644 | ||
80 | --- a/drivers/bluetooth/btusb.c | ||
81 | +++ b/drivers/bluetooth/btusb.c | ||
82 | @@ -143,6 +143,9 @@ static struct usb_device_id blacklist_table[] = { | ||
83 | /* Atheros AR5BBU12 with sflash firmware */ | ||
84 | { USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE }, | ||
85 | |||
86 | + /* Atheros AR5BBU12 with sflash firmware */ | ||
87 | + { USB_DEVICE(0x0489, 0xe03c), .driver_info = BTUSB_ATH3012 }, | ||
88 | + | ||
89 | /* Broadcom BCM2035 */ | ||
90 | { USB_DEVICE(0x0a5c, 0x2035), .driver_info = BTUSB_WRONG_SCO_MTU }, | ||
91 | { USB_DEVICE(0x0a5c, 0x200a), .driver_info = BTUSB_WRONG_SCO_MTU }, | ||
92 | -- | ||
93 | 1.7.9.5 | ||
94 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0062-drm-i915-Disable-FBC-on-SandyBridge.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0062-drm-i915-Disable-FBC-on-SandyBridge.patch new file mode 100644 index 00000000..de381738 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0062-drm-i915-Disable-FBC-on-SandyBridge.patch | |||
@@ -0,0 +1,34 @@ | |||
1 | From d23ccb0cbe37783fcfb8879480160ed840488bb2 Mon Sep 17 00:00:00 2001 | ||
2 | From: Chris Wilson <chris@chris-wilson.co.uk> | ||
3 | Date: Tue, 8 Nov 2011 23:17:34 +0000 | ||
4 | Subject: [PATCH 62/86] drm/i915:: Disable FBC on SandyBridge | ||
5 | |||
6 | commit d56d8b28e9247e7e35e02fbb12b12239a2c33ad1 upstream. | ||
7 | |||
8 | Enabling FBC is causing the BLT ring to run between 10-100x slower than | ||
9 | normal and frequently lockup. The interim solution is disable FBC once | ||
10 | more until we know why. | ||
11 | |||
12 | Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> | ||
13 | Signed-off-by: Keith Packard <keithp@keithp.com> | ||
14 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
15 | --- | ||
16 | drivers/gpu/drm/i915/intel_display.c | 2 +- | ||
17 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
18 | |||
19 | diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c | ||
20 | index 41bbe78..4720397 100644 | ||
21 | --- a/drivers/gpu/drm/i915/intel_display.c | ||
22 | +++ b/drivers/gpu/drm/i915/intel_display.c | ||
23 | @@ -1864,7 +1864,7 @@ static void intel_update_fbc(struct drm_device *dev) | ||
24 | if (enable_fbc < 0) { | ||
25 | DRM_DEBUG_KMS("fbc set to per-chip default\n"); | ||
26 | enable_fbc = 1; | ||
27 | - if (INTEL_INFO(dev)->gen <= 5) | ||
28 | + if (INTEL_INFO(dev)->gen <= 6) | ||
29 | enable_fbc = 0; | ||
30 | } | ||
31 | if (!enable_fbc) { | ||
32 | -- | ||
33 | 1.7.9.5 | ||
34 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0063-ipv4-Do-not-use-dead-fib_info-entries.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0063-ipv4-Do-not-use-dead-fib_info-entries.patch new file mode 100644 index 00000000..71f8710c --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0063-ipv4-Do-not-use-dead-fib_info-entries.patch | |||
@@ -0,0 +1,36 @@ | |||
1 | From 1fc7ceff08329209e4c28263a5b545343d4cce19 Mon Sep 17 00:00:00 2001 | ||
2 | From: "David S. Miller" <davem@davemloft.net> | ||
3 | Date: Thu, 10 May 2012 22:16:32 -0400 | ||
4 | Subject: [PATCH 63/86] ipv4: Do not use dead fib_info entries. | ||
5 | |||
6 | [ Upstream commit dccd9ecc374462e5d6a5b8f8110415a86c2213d8 ] | ||
7 | |||
8 | Due to RCU lookups and RCU based release, fib_info objects can | ||
9 | be found during lookup which have fi->fib_dead set. | ||
10 | |||
11 | We must ignore these entries, otherwise we risk dereferencing | ||
12 | the parts of the entry which are being torn down. | ||
13 | |||
14 | Reported-by: Yevgen Pronenko <yevgen.pronenko@sonymobile.com> | ||
15 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | net/ipv4/fib_trie.c | 2 ++ | ||
19 | 1 file changed, 2 insertions(+) | ||
20 | |||
21 | diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c | ||
22 | index 3ce23f9..cd2d639 100644 | ||
23 | --- a/net/ipv4/fib_trie.c | ||
24 | +++ b/net/ipv4/fib_trie.c | ||
25 | @@ -1372,6 +1372,8 @@ static int check_leaf(struct fib_table *tb, struct trie *t, struct leaf *l, | ||
26 | |||
27 | if (fa->fa_tos && fa->fa_tos != flp->flowi4_tos) | ||
28 | continue; | ||
29 | + if (fi->fib_dead) | ||
30 | + continue; | ||
31 | if (fa->fa_info->fib_scope < flp->flowi4_scope) | ||
32 | continue; | ||
33 | fib_alias_accessed(fa); | ||
34 | -- | ||
35 | 1.7.9.5 | ||
36 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0064-ipv4-fix-the-rcu-race-between-free_fib_info-and-ip_r.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0064-ipv4-fix-the-rcu-race-between-free_fib_info-and-ip_r.patch new file mode 100644 index 00000000..80f8f2c2 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0064-ipv4-fix-the-rcu-race-between-free_fib_info-and-ip_r.patch | |||
@@ -0,0 +1,92 @@ | |||
1 | From 5d360e327490263d01b60ed06f9c48ec923e93c4 Mon Sep 17 00:00:00 2001 | ||
2 | From: Yanmin Zhang <yanmin_zhang@linux.intel.com> | ||
3 | Date: Wed, 23 May 2012 15:39:45 +0000 | ||
4 | Subject: [PATCH 64/86] ipv4: fix the rcu race between free_fib_info and | ||
5 | ip_route_output_slow | ||
6 | |||
7 | [ Upstream commit e49cc0da7283088c5e03d475ffe2fdcb24a6d5b1 ] | ||
8 | |||
9 | We hit a kernel OOPS. | ||
10 | |||
11 | <3>[23898.789643] BUG: sleeping function called from invalid context at | ||
12 | /data/buildbot/workdir/ics/hardware/intel/linux-2.6/arch/x86/mm/fault.c:1103 | ||
13 | <3>[23898.862215] in_atomic(): 0, irqs_disabled(): 0, pid: 10526, name: | ||
14 | Thread-6683 | ||
15 | <4>[23898.967805] HSU serial 0000:00:05.1: 0000:00:05.2:HSU serial prevented me | ||
16 | to suspend... | ||
17 | <4>[23899.258526] Pid: 10526, comm: Thread-6683 Tainted: G W | ||
18 | 3.0.8-137685-ge7742f9 #1 | ||
19 | <4>[23899.357404] HSU serial 0000:00:05.1: 0000:00:05.2:HSU serial prevented me | ||
20 | to suspend... | ||
21 | <4>[23899.904225] Call Trace: | ||
22 | <4>[23899.989209] [<c1227f50>] ? pgtable_bad+0x130/0x130 | ||
23 | <4>[23900.000416] [<c1238c2a>] __might_sleep+0x10a/0x110 | ||
24 | <4>[23900.007357] [<c1228021>] do_page_fault+0xd1/0x3c0 | ||
25 | <4>[23900.013764] [<c18e9ba9>] ? restore_all+0xf/0xf | ||
26 | <4>[23900.024024] [<c17c007b>] ? napi_complete+0x8b/0x690 | ||
27 | <4>[23900.029297] [<c1227f50>] ? pgtable_bad+0x130/0x130 | ||
28 | <4>[23900.123739] [<c1227f50>] ? pgtable_bad+0x130/0x130 | ||
29 | <4>[23900.128955] [<c18ea0c3>] error_code+0x5f/0x64 | ||
30 | <4>[23900.133466] [<c1227f50>] ? pgtable_bad+0x130/0x130 | ||
31 | <4>[23900.138450] [<c17f6298>] ? __ip_route_output_key+0x698/0x7c0 | ||
32 | <4>[23900.144312] [<c17f5f8d>] ? __ip_route_output_key+0x38d/0x7c0 | ||
33 | <4>[23900.150730] [<c17f63df>] ip_route_output_flow+0x1f/0x60 | ||
34 | <4>[23900.156261] [<c181de58>] ip4_datagram_connect+0x188/0x2b0 | ||
35 | <4>[23900.161960] [<c18e981f>] ? _raw_spin_unlock_bh+0x1f/0x30 | ||
36 | <4>[23900.167834] [<c18298d6>] inet_dgram_connect+0x36/0x80 | ||
37 | <4>[23900.173224] [<c14f9e88>] ? _copy_from_user+0x48/0x140 | ||
38 | <4>[23900.178817] [<c17ab9da>] sys_connect+0x9a/0xd0 | ||
39 | <4>[23900.183538] [<c132e93c>] ? alloc_file+0xdc/0x240 | ||
40 | <4>[23900.189111] [<c123925d>] ? sub_preempt_count+0x3d/0x50 | ||
41 | |||
42 | Function free_fib_info resets nexthop_nh->nh_dev to NULL before releasing | ||
43 | fi. Other cpu might be accessing fi. Fixing it by delaying the releasing. | ||
44 | |||
45 | With the patch, we ran MTBF testing on Android mobile for 12 hours | ||
46 | and didn't trigger the issue. | ||
47 | |||
48 | Thank Eric for very detailed review/checking the issue. | ||
49 | |||
50 | Signed-off-by: Yanmin Zhang <yanmin_zhang@linux.intel.com> | ||
51 | Signed-off-by: Kun Jiang <kunx.jiang@intel.com> | ||
52 | Acked-by: Eric Dumazet <edumazet@google.com> | ||
53 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
54 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
55 | --- | ||
56 | net/ipv4/fib_semantics.c | 12 ++++++------ | ||
57 | 1 file changed, 6 insertions(+), 6 deletions(-) | ||
58 | |||
59 | diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c | ||
60 | index 80106d8..d01f9c6 100644 | ||
61 | --- a/net/ipv4/fib_semantics.c | ||
62 | +++ b/net/ipv4/fib_semantics.c | ||
63 | @@ -146,6 +146,12 @@ static void free_fib_info_rcu(struct rcu_head *head) | ||
64 | { | ||
65 | struct fib_info *fi = container_of(head, struct fib_info, rcu); | ||
66 | |||
67 | + change_nexthops(fi) { | ||
68 | + if (nexthop_nh->nh_dev) | ||
69 | + dev_put(nexthop_nh->nh_dev); | ||
70 | + } endfor_nexthops(fi); | ||
71 | + | ||
72 | + release_net(fi->fib_net); | ||
73 | if (fi->fib_metrics != (u32 *) dst_default_metrics) | ||
74 | kfree(fi->fib_metrics); | ||
75 | kfree(fi); | ||
76 | @@ -157,13 +163,7 @@ void free_fib_info(struct fib_info *fi) | ||
77 | pr_warning("Freeing alive fib_info %p\n", fi); | ||
78 | return; | ||
79 | } | ||
80 | - change_nexthops(fi) { | ||
81 | - if (nexthop_nh->nh_dev) | ||
82 | - dev_put(nexthop_nh->nh_dev); | ||
83 | - nexthop_nh->nh_dev = NULL; | ||
84 | - } endfor_nexthops(fi); | ||
85 | fib_info_cnt--; | ||
86 | - release_net(fi->fib_net); | ||
87 | call_rcu(&fi->rcu, free_fib_info_rcu); | ||
88 | } | ||
89 | |||
90 | -- | ||
91 | 1.7.9.5 | ||
92 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0065-set-fake_rtable-s-dst-to-NULL-to-avoid-kernel-Oops.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0065-set-fake_rtable-s-dst-to-NULL-to-avoid-kernel-Oops.patch new file mode 100644 index 00000000..2d134535 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0065-set-fake_rtable-s-dst-to-NULL-to-avoid-kernel-Oops.patch | |||
@@ -0,0 +1,110 @@ | |||
1 | From aebe9f30c2e54be6030a3a5a25c005053d1e26ef Mon Sep 17 00:00:00 2001 | ||
2 | From: "Peter Huang (Peng)" <peter.huangpeng@huawei.com> | ||
3 | Date: Thu, 19 Apr 2012 20:12:51 +0000 | ||
4 | Subject: [PATCH 65/86] set fake_rtable's dst to NULL to avoid kernel Oops | ||
5 | |||
6 | [ Upstream commit a881e963c7fe1f226e991ee9bbe8907acda93294 ] | ||
7 | |||
8 | bridge: set fake_rtable's dst to NULL to avoid kernel Oops | ||
9 | |||
10 | when bridge is deleted before tap/vif device's delete, kernel may | ||
11 | encounter an oops because of NULL reference to fake_rtable's dst. | ||
12 | Set fake_rtable's dst to NULL before sending packets out can solve | ||
13 | this problem. | ||
14 | |||
15 | v4 reformat, change br_drop_fake_rtable(skb) to {} | ||
16 | |||
17 | v3 enrich commit header | ||
18 | |||
19 | v2 introducing new flag DST_FAKE_RTABLE to dst_entry struct. | ||
20 | |||
21 | [ Use "do { } while (0)" for nop br_drop_fake_rtable() | ||
22 | implementation -DaveM ] | ||
23 | |||
24 | Acked-by: Eric Dumazet <eric.dumazet@gmail.com> | ||
25 | Signed-off-by: Peter Huang <peter.huangpeng@huawei.com> | ||
26 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
27 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
28 | --- | ||
29 | include/linux/netfilter_bridge.h | 9 +++++++++ | ||
30 | include/net/dst.h | 1 + | ||
31 | net/bridge/br_forward.c | 1 + | ||
32 | net/bridge/br_netfilter.c | 8 ++------ | ||
33 | 4 files changed, 13 insertions(+), 6 deletions(-) | ||
34 | |||
35 | diff --git a/include/linux/netfilter_bridge.h b/include/linux/netfilter_bridge.h | ||
36 | index 0ddd161..31d2844 100644 | ||
37 | --- a/include/linux/netfilter_bridge.h | ||
38 | +++ b/include/linux/netfilter_bridge.h | ||
39 | @@ -104,9 +104,18 @@ struct bridge_skb_cb { | ||
40 | } daddr; | ||
41 | }; | ||
42 | |||
43 | +static inline void br_drop_fake_rtable(struct sk_buff *skb) | ||
44 | +{ | ||
45 | + struct dst_entry *dst = skb_dst(skb); | ||
46 | + | ||
47 | + if (dst && (dst->flags & DST_FAKE_RTABLE)) | ||
48 | + skb_dst_drop(skb); | ||
49 | +} | ||
50 | + | ||
51 | #else | ||
52 | #define nf_bridge_maybe_copy_header(skb) (0) | ||
53 | #define nf_bridge_pad(skb) (0) | ||
54 | +#define br_drop_fake_rtable(skb) do { } while (0) | ||
55 | #endif /* CONFIG_BRIDGE_NETFILTER */ | ||
56 | |||
57 | #endif /* __KERNEL__ */ | ||
58 | diff --git a/include/net/dst.h b/include/net/dst.h | ||
59 | index 75766b4..65bca65 100644 | ||
60 | --- a/include/net/dst.h | ||
61 | +++ b/include/net/dst.h | ||
62 | @@ -54,6 +54,7 @@ struct dst_entry { | ||
63 | #define DST_NOCACHE 0x0010 | ||
64 | #define DST_NOCOUNT 0x0020 | ||
65 | #define DST_NOPEER 0x0040 | ||
66 | +#define DST_FAKE_RTABLE 0x0080 | ||
67 | |||
68 | short error; | ||
69 | short obsolete; | ||
70 | diff --git a/net/bridge/br_forward.c b/net/bridge/br_forward.c | ||
71 | index ee64287..e221f88 100644 | ||
72 | --- a/net/bridge/br_forward.c | ||
73 | +++ b/net/bridge/br_forward.c | ||
74 | @@ -47,6 +47,7 @@ int br_dev_queue_push_xmit(struct sk_buff *skb) | ||
75 | kfree_skb(skb); | ||
76 | } else { | ||
77 | skb_push(skb, ETH_HLEN); | ||
78 | + br_drop_fake_rtable(skb); | ||
79 | dev_queue_xmit(skb); | ||
80 | } | ||
81 | |||
82 | diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c | ||
83 | index fa8b8f7..577ea5d 100644 | ||
84 | --- a/net/bridge/br_netfilter.c | ||
85 | +++ b/net/bridge/br_netfilter.c | ||
86 | @@ -147,7 +147,7 @@ void br_netfilter_rtable_init(struct net_bridge *br) | ||
87 | rt->dst.dev = br->dev; | ||
88 | rt->dst.path = &rt->dst; | ||
89 | dst_init_metrics(&rt->dst, br_dst_default_metrics, true); | ||
90 | - rt->dst.flags = DST_NOXFRM | DST_NOPEER; | ||
91 | + rt->dst.flags = DST_NOXFRM | DST_NOPEER | DST_FAKE_RTABLE; | ||
92 | rt->dst.ops = &fake_dst_ops; | ||
93 | } | ||
94 | |||
95 | @@ -687,11 +687,7 @@ static unsigned int br_nf_local_in(unsigned int hook, struct sk_buff *skb, | ||
96 | const struct net_device *out, | ||
97 | int (*okfn)(struct sk_buff *)) | ||
98 | { | ||
99 | - struct rtable *rt = skb_rtable(skb); | ||
100 | - | ||
101 | - if (rt && rt == bridge_parent_rtable(in)) | ||
102 | - skb_dst_drop(skb); | ||
103 | - | ||
104 | + br_drop_fake_rtable(skb); | ||
105 | return NF_ACCEPT; | ||
106 | } | ||
107 | |||
108 | -- | ||
109 | 1.7.9.5 | ||
110 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0066-ipv6-fix-incorrect-ipsec-fragment.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0066-ipv6-fix-incorrect-ipsec-fragment.patch new file mode 100644 index 00000000..c9b4d220 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0066-ipv6-fix-incorrect-ipsec-fragment.patch | |||
@@ -0,0 +1,181 @@ | |||
1 | From 8e6278442fffb4bfa735336a954144198fd7d778 Mon Sep 17 00:00:00 2001 | ||
2 | From: Gao feng <gaofeng@cn.fujitsu.com> | ||
3 | Date: Sat, 26 May 2012 01:30:53 +0000 | ||
4 | Subject: [PATCH 66/86] ipv6: fix incorrect ipsec fragment | ||
5 | |||
6 | [ Upstream commit 0c1833797a5a6ec23ea9261d979aa18078720b74 ] | ||
7 | |||
8 | Since commit ad0081e43a | ||
9 | "ipv6: Fragment locally generated tunnel-mode IPSec6 packets as needed" | ||
10 | the fragment of packets is incorrect. | ||
11 | because tunnel mode needs IPsec headers and trailer for all fragments, | ||
12 | while on transport mode it is sufficient to add the headers to the | ||
13 | first fragment and the trailer to the last. | ||
14 | |||
15 | so modify mtu and maxfraglen base on ipsec mode and if fragment is first | ||
16 | or last. | ||
17 | |||
18 | with my test,it work well(every fragment's size is the mtu) | ||
19 | and does not trigger slow fragment path. | ||
20 | |||
21 | Changes from v1: | ||
22 | though optimization, mtu_prev and maxfraglen_prev can be delete. | ||
23 | replace xfrm mode codes with dst_entry's new frag DST_XFRM_TUNNEL. | ||
24 | add fuction ip6_append_data_mtu to make codes clearer. | ||
25 | |||
26 | Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com> | ||
27 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
28 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
29 | --- | ||
30 | include/net/dst.h | 1 + | ||
31 | net/ipv6/ip6_output.c | 68 +++++++++++++++++++++++++++++++++++------------- | ||
32 | net/xfrm/xfrm_policy.c | 3 +++ | ||
33 | 3 files changed, 54 insertions(+), 18 deletions(-) | ||
34 | |||
35 | diff --git a/include/net/dst.h b/include/net/dst.h | ||
36 | index 65bca65..16010d1 100644 | ||
37 | --- a/include/net/dst.h | ||
38 | +++ b/include/net/dst.h | ||
39 | @@ -55,6 +55,7 @@ struct dst_entry { | ||
40 | #define DST_NOCOUNT 0x0020 | ||
41 | #define DST_NOPEER 0x0040 | ||
42 | #define DST_FAKE_RTABLE 0x0080 | ||
43 | +#define DST_XFRM_TUNNEL 0x0100 | ||
44 | |||
45 | short error; | ||
46 | short obsolete; | ||
47 | diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c | ||
48 | index f7f07e2..ae98e09 100644 | ||
49 | --- a/net/ipv6/ip6_output.c | ||
50 | +++ b/net/ipv6/ip6_output.c | ||
51 | @@ -1178,6 +1178,29 @@ static inline struct ipv6_rt_hdr *ip6_rthdr_dup(struct ipv6_rt_hdr *src, | ||
52 | return src ? kmemdup(src, (src->hdrlen + 1) * 8, gfp) : NULL; | ||
53 | } | ||
54 | |||
55 | +static void ip6_append_data_mtu(int *mtu, | ||
56 | + int *maxfraglen, | ||
57 | + unsigned int fragheaderlen, | ||
58 | + struct sk_buff *skb, | ||
59 | + struct rt6_info *rt) | ||
60 | +{ | ||
61 | + if (!(rt->dst.flags & DST_XFRM_TUNNEL)) { | ||
62 | + if (skb == NULL) { | ||
63 | + /* first fragment, reserve header_len */ | ||
64 | + *mtu = *mtu - rt->dst.header_len; | ||
65 | + | ||
66 | + } else { | ||
67 | + /* | ||
68 | + * this fragment is not first, the headers | ||
69 | + * space is regarded as data space. | ||
70 | + */ | ||
71 | + *mtu = dst_mtu(rt->dst.path); | ||
72 | + } | ||
73 | + *maxfraglen = ((*mtu - fragheaderlen) & ~7) | ||
74 | + + fragheaderlen - sizeof(struct frag_hdr); | ||
75 | + } | ||
76 | +} | ||
77 | + | ||
78 | int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to, | ||
79 | int offset, int len, int odd, struct sk_buff *skb), | ||
80 | void *from, int length, int transhdrlen, | ||
81 | @@ -1187,7 +1210,7 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to, | ||
82 | struct inet_sock *inet = inet_sk(sk); | ||
83 | struct ipv6_pinfo *np = inet6_sk(sk); | ||
84 | struct inet_cork *cork; | ||
85 | - struct sk_buff *skb; | ||
86 | + struct sk_buff *skb, *skb_prev = NULL; | ||
87 | unsigned int maxfraglen, fragheaderlen; | ||
88 | int exthdrlen; | ||
89 | int dst_exthdrlen; | ||
90 | @@ -1245,8 +1268,12 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to, | ||
91 | inet->cork.fl.u.ip6 = *fl6; | ||
92 | np->cork.hop_limit = hlimit; | ||
93 | np->cork.tclass = tclass; | ||
94 | - mtu = np->pmtudisc == IPV6_PMTUDISC_PROBE ? | ||
95 | - rt->dst.dev->mtu : dst_mtu(&rt->dst); | ||
96 | + if (rt->dst.flags & DST_XFRM_TUNNEL) | ||
97 | + mtu = np->pmtudisc == IPV6_PMTUDISC_PROBE ? | ||
98 | + rt->dst.dev->mtu : dst_mtu(&rt->dst); | ||
99 | + else | ||
100 | + mtu = np->pmtudisc == IPV6_PMTUDISC_PROBE ? | ||
101 | + rt->dst.dev->mtu : dst_mtu(rt->dst.path); | ||
102 | if (np->frag_size < mtu) { | ||
103 | if (np->frag_size) | ||
104 | mtu = np->frag_size; | ||
105 | @@ -1342,25 +1369,27 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to, | ||
106 | unsigned int fraglen; | ||
107 | unsigned int fraggap; | ||
108 | unsigned int alloclen; | ||
109 | - struct sk_buff *skb_prev; | ||
110 | alloc_new_skb: | ||
111 | - skb_prev = skb; | ||
112 | - | ||
113 | /* There's no room in the current skb */ | ||
114 | - if (skb_prev) | ||
115 | - fraggap = skb_prev->len - maxfraglen; | ||
116 | + if (skb) | ||
117 | + fraggap = skb->len - maxfraglen; | ||
118 | else | ||
119 | fraggap = 0; | ||
120 | + /* update mtu and maxfraglen if necessary */ | ||
121 | + if (skb == NULL || skb_prev == NULL) | ||
122 | + ip6_append_data_mtu(&mtu, &maxfraglen, | ||
123 | + fragheaderlen, skb, rt); | ||
124 | + | ||
125 | + skb_prev = skb; | ||
126 | |||
127 | /* | ||
128 | * If remaining data exceeds the mtu, | ||
129 | * we know we need more fragment(s). | ||
130 | */ | ||
131 | datalen = length + fraggap; | ||
132 | - if (datalen > (cork->length <= mtu && !(cork->flags & IPCORK_ALLFRAG) ? mtu : maxfraglen) - fragheaderlen) | ||
133 | - datalen = maxfraglen - fragheaderlen; | ||
134 | |||
135 | - fraglen = datalen + fragheaderlen; | ||
136 | + if (datalen > (cork->length <= mtu && !(cork->flags & IPCORK_ALLFRAG) ? mtu : maxfraglen) - fragheaderlen) | ||
137 | + datalen = maxfraglen - fragheaderlen - rt->dst.trailer_len; | ||
138 | if ((flags & MSG_MORE) && | ||
139 | !(rt->dst.dev->features&NETIF_F_SG)) | ||
140 | alloclen = mtu; | ||
141 | @@ -1369,13 +1398,16 @@ alloc_new_skb: | ||
142 | |||
143 | alloclen += dst_exthdrlen; | ||
144 | |||
145 | - /* | ||
146 | - * The last fragment gets additional space at tail. | ||
147 | - * Note: we overallocate on fragments with MSG_MODE | ||
148 | - * because we have no idea if we're the last one. | ||
149 | - */ | ||
150 | - if (datalen == length + fraggap) | ||
151 | - alloclen += rt->dst.trailer_len; | ||
152 | + if (datalen != length + fraggap) { | ||
153 | + /* | ||
154 | + * this is not the last fragment, the trailer | ||
155 | + * space is regarded as data space. | ||
156 | + */ | ||
157 | + datalen += rt->dst.trailer_len; | ||
158 | + } | ||
159 | + | ||
160 | + alloclen += rt->dst.trailer_len; | ||
161 | + fraglen = datalen + fragheaderlen; | ||
162 | |||
163 | /* | ||
164 | * We just reserve space for fragment header. | ||
165 | diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c | ||
166 | index 9049a5c..0174034 100644 | ||
167 | --- a/net/xfrm/xfrm_policy.c | ||
168 | +++ b/net/xfrm/xfrm_policy.c | ||
169 | @@ -1919,6 +1919,9 @@ no_transform: | ||
170 | } | ||
171 | ok: | ||
172 | xfrm_pols_put(pols, drop_pols); | ||
173 | + if (dst && dst->xfrm && | ||
174 | + dst->xfrm->props.mode == XFRM_MODE_TUNNEL) | ||
175 | + dst->flags |= DST_XFRM_TUNNEL; | ||
176 | return dst; | ||
177 | |||
178 | nopol: | ||
179 | -- | ||
180 | 1.7.9.5 | ||
181 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0067-l2tp-fix-oops-in-L2TP-IP-sockets-for-connect-AF_UNSP.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0067-l2tp-fix-oops-in-L2TP-IP-sockets-for-connect-AF_UNSP.patch new file mode 100644 index 00000000..258e4128 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0067-l2tp-fix-oops-in-L2TP-IP-sockets-for-connect-AF_UNSP.patch | |||
@@ -0,0 +1,113 @@ | |||
1 | From d1517b97762180b241f3e888abb8c1ec72e760be Mon Sep 17 00:00:00 2001 | ||
2 | From: James Chapman <jchapman@katalix.com> | ||
3 | Date: Tue, 29 May 2012 23:13:23 +0000 | ||
4 | Subject: [PATCH 67/86] l2tp: fix oops in L2TP IP sockets for connect() | ||
5 | AF_UNSPEC case | ||
6 | |||
7 | [ Upstream commit c51ce49735c183ef2592db70f918ee698716276b ] | ||
8 | |||
9 | An application may call connect() to disconnect a socket using an | ||
10 | address with family AF_UNSPEC. The L2TP IP sockets were not handling | ||
11 | this case when the socket is not bound and an attempt to connect() | ||
12 | using AF_UNSPEC in such cases would result in an oops. This patch | ||
13 | addresses the problem by protecting the sk_prot->disconnect() call | ||
14 | against trying to unhash the socket before it is bound. | ||
15 | |||
16 | The patch also adds more checks that the sockaddr supplied to bind() | ||
17 | and connect() calls is valid. | ||
18 | |||
19 | RIP: 0010:[<ffffffff82e133b0>] [<ffffffff82e133b0>] inet_unhash+0x50/0xd0 | ||
20 | RSP: 0018:ffff88001989be28 EFLAGS: 00010293 | ||
21 | Stack: | ||
22 | ffff8800407a8000 0000000000000000 ffff88001989be78 ffffffff82e3a249 | ||
23 | ffffffff82e3a050 ffff88001989bec8 ffff88001989be88 ffff8800407a8000 | ||
24 | 0000000000000010 ffff88001989bec8 ffff88001989bea8 ffffffff82e42639 | ||
25 | Call Trace: | ||
26 | [<ffffffff82e3a249>] udp_disconnect+0x1f9/0x290 | ||
27 | [<ffffffff82e42639>] inet_dgram_connect+0x29/0x80 | ||
28 | [<ffffffff82d012fc>] sys_connect+0x9c/0x100 | ||
29 | |||
30 | Reported-by: Sasha Levin <levinsasha928@gmail.com> | ||
31 | Signed-off-by: James Chapman <jchapman@katalix.com> | ||
32 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
33 | --- | ||
34 | net/l2tp/l2tp_ip.c | 30 ++++++++++++++++++++++++------ | ||
35 | 1 file changed, 24 insertions(+), 6 deletions(-) | ||
36 | |||
37 | diff --git a/net/l2tp/l2tp_ip.c b/net/l2tp/l2tp_ip.c | ||
38 | index 2a2a3e7..2fbbe1f 100644 | ||
39 | --- a/net/l2tp/l2tp_ip.c | ||
40 | +++ b/net/l2tp/l2tp_ip.c | ||
41 | @@ -251,9 +251,16 @@ static int l2tp_ip_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len) | ||
42 | { | ||
43 | struct inet_sock *inet = inet_sk(sk); | ||
44 | struct sockaddr_l2tpip *addr = (struct sockaddr_l2tpip *) uaddr; | ||
45 | - int ret = -EINVAL; | ||
46 | + int ret; | ||
47 | int chk_addr_ret; | ||
48 | |||
49 | + if (!sock_flag(sk, SOCK_ZAPPED)) | ||
50 | + return -EINVAL; | ||
51 | + if (addr_len < sizeof(struct sockaddr_l2tpip)) | ||
52 | + return -EINVAL; | ||
53 | + if (addr->l2tp_family != AF_INET) | ||
54 | + return -EINVAL; | ||
55 | + | ||
56 | ret = -EADDRINUSE; | ||
57 | read_lock_bh(&l2tp_ip_lock); | ||
58 | if (__l2tp_ip_bind_lookup(&init_net, addr->l2tp_addr.s_addr, sk->sk_bound_dev_if, addr->l2tp_conn_id)) | ||
59 | @@ -283,6 +290,8 @@ static int l2tp_ip_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len) | ||
60 | sk_del_node_init(sk); | ||
61 | write_unlock_bh(&l2tp_ip_lock); | ||
62 | ret = 0; | ||
63 | + sock_reset_flag(sk, SOCK_ZAPPED); | ||
64 | + | ||
65 | out: | ||
66 | release_sock(sk); | ||
67 | |||
68 | @@ -303,13 +312,14 @@ static int l2tp_ip_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len | ||
69 | __be32 saddr; | ||
70 | int oif, rc; | ||
71 | |||
72 | - rc = -EINVAL; | ||
73 | + if (sock_flag(sk, SOCK_ZAPPED)) /* Must bind first - autobinding does not work */ | ||
74 | + return -EINVAL; | ||
75 | + | ||
76 | if (addr_len < sizeof(*lsa)) | ||
77 | - goto out; | ||
78 | + return -EINVAL; | ||
79 | |||
80 | - rc = -EAFNOSUPPORT; | ||
81 | if (lsa->l2tp_family != AF_INET) | ||
82 | - goto out; | ||
83 | + return -EAFNOSUPPORT; | ||
84 | |||
85 | lock_sock(sk); | ||
86 | |||
87 | @@ -363,6 +373,14 @@ out: | ||
88 | return rc; | ||
89 | } | ||
90 | |||
91 | +static int l2tp_ip_disconnect(struct sock *sk, int flags) | ||
92 | +{ | ||
93 | + if (sock_flag(sk, SOCK_ZAPPED)) | ||
94 | + return 0; | ||
95 | + | ||
96 | + return udp_disconnect(sk, flags); | ||
97 | +} | ||
98 | + | ||
99 | static int l2tp_ip_getname(struct socket *sock, struct sockaddr *uaddr, | ||
100 | int *uaddr_len, int peer) | ||
101 | { | ||
102 | @@ -598,7 +616,7 @@ static struct proto l2tp_ip_prot = { | ||
103 | .close = l2tp_ip_close, | ||
104 | .bind = l2tp_ip_bind, | ||
105 | .connect = l2tp_ip_connect, | ||
106 | - .disconnect = udp_disconnect, | ||
107 | + .disconnect = l2tp_ip_disconnect, | ||
108 | .ioctl = udp_ioctl, | ||
109 | .destroy = l2tp_ip_destroy_sock, | ||
110 | .setsockopt = ip_setsockopt, | ||
111 | -- | ||
112 | 1.7.9.5 | ||
113 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0068-r8169-missing-barriers.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0068-r8169-missing-barriers.patch new file mode 100644 index 00000000..3cc1e86c --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0068-r8169-missing-barriers.patch | |||
@@ -0,0 +1,47 @@ | |||
1 | From c354bf6217e04a41a963b465634ff37450c68c1e Mon Sep 17 00:00:00 2001 | ||
2 | From: Francois Romieu <romieu@fr.zoreil.com> | ||
3 | Date: Fri, 27 Jan 2012 15:05:38 +0100 | ||
4 | Subject: [PATCH 68/86] r8169: missing barriers. | ||
5 | |||
6 | [ Upstream commit 1e874e041fc7c222cbd85b20c4406070be1f687a ] | ||
7 | |||
8 | Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> | ||
9 | Cc: Hayes Wang <hayeswang@realtek.com> | ||
10 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
11 | --- | ||
12 | drivers/net/ethernet/realtek/r8169.c | 5 ++--- | ||
13 | 1 file changed, 2 insertions(+), 3 deletions(-) | ||
14 | |||
15 | diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c | ||
16 | index 697cae3..5104d76 100644 | ||
17 | --- a/drivers/net/ethernet/realtek/r8169.c | ||
18 | +++ b/drivers/net/ethernet/realtek/r8169.c | ||
19 | @@ -5562,7 +5562,7 @@ static netdev_tx_t rtl8169_start_xmit(struct sk_buff *skb, | ||
20 | |||
21 | if (TX_BUFFS_AVAIL(tp) < MAX_SKB_FRAGS) { | ||
22 | netif_stop_queue(dev); | ||
23 | - smp_rmb(); | ||
24 | + smp_mb(); | ||
25 | if (TX_BUFFS_AVAIL(tp) >= MAX_SKB_FRAGS) | ||
26 | netif_wake_queue(dev); | ||
27 | } | ||
28 | @@ -5663,7 +5663,7 @@ static void rtl8169_tx_interrupt(struct net_device *dev, | ||
29 | |||
30 | if (tp->dirty_tx != dirty_tx) { | ||
31 | tp->dirty_tx = dirty_tx; | ||
32 | - smp_wmb(); | ||
33 | + smp_mb(); | ||
34 | if (netif_queue_stopped(dev) && | ||
35 | (TX_BUFFS_AVAIL(tp) >= MAX_SKB_FRAGS)) { | ||
36 | netif_wake_queue(dev); | ||
37 | @@ -5674,7 +5674,6 @@ static void rtl8169_tx_interrupt(struct net_device *dev, | ||
38 | * of start_xmit activity is detected (if it is not detected, | ||
39 | * it is slow enough). -- FR | ||
40 | */ | ||
41 | - smp_rmb(); | ||
42 | if (tp->cur_tx != dirty_tx) | ||
43 | RTL_W8(TxPoll, NPQ); | ||
44 | } | ||
45 | -- | ||
46 | 1.7.9.5 | ||
47 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0069-r8169-fix-early-queue-wake-up.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0069-r8169-fix-early-queue-wake-up.patch new file mode 100644 index 00000000..e8e1ad5c --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0069-r8169-fix-early-queue-wake-up.patch | |||
@@ -0,0 +1,58 @@ | |||
1 | From 88d5ff14a80522c59577194a954942feefd47d67 Mon Sep 17 00:00:00 2001 | ||
2 | From: Francois Romieu <romieu@fr.zoreil.com> | ||
3 | Date: Tue, 31 Jan 2012 00:00:19 +0100 | ||
4 | Subject: [PATCH 69/86] r8169: fix early queue wake-up. | ||
5 | |||
6 | [ Upstream commit ae1f23fb433ac0aaff8aeaa5a7b14348e9aa8277 ] | ||
7 | |||
8 | With infinite gratitude to Eric Dumazet for allowing me to identify | ||
9 | the error. | ||
10 | |||
11 | Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> | ||
12 | Acked-by: Eric Dumazet <eric.dumazet@gmail.com> | ||
13 | Cc: Hayes Wang <hayeswang@realtek.com> | ||
14 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
15 | --- | ||
16 | drivers/net/ethernet/realtek/r8169.c | 18 ++++++++++++++++++ | ||
17 | 1 file changed, 18 insertions(+) | ||
18 | |||
19 | diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c | ||
20 | index 5104d76..5f3fa32 100644 | ||
21 | --- a/drivers/net/ethernet/realtek/r8169.c | ||
22 | +++ b/drivers/net/ethernet/realtek/r8169.c | ||
23 | @@ -5561,7 +5561,18 @@ static netdev_tx_t rtl8169_start_xmit(struct sk_buff *skb, | ||
24 | RTL_W8(TxPoll, NPQ); | ||
25 | |||
26 | if (TX_BUFFS_AVAIL(tp) < MAX_SKB_FRAGS) { | ||
27 | + /* Avoid wrongly optimistic queue wake-up: rtl_tx thread must | ||
28 | + * not miss a ring update when it notices a stopped queue. | ||
29 | + */ | ||
30 | + smp_wmb(); | ||
31 | netif_stop_queue(dev); | ||
32 | + /* Sync with rtl_tx: | ||
33 | + * - publish queue status and cur_tx ring index (write barrier) | ||
34 | + * - refresh dirty_tx ring index (read barrier). | ||
35 | + * May the current thread have a pessimistic view of the ring | ||
36 | + * status and forget to wake up queue, a racing rtl_tx thread | ||
37 | + * can't. | ||
38 | + */ | ||
39 | smp_mb(); | ||
40 | if (TX_BUFFS_AVAIL(tp) >= MAX_SKB_FRAGS) | ||
41 | netif_wake_queue(dev); | ||
42 | @@ -5663,6 +5674,13 @@ static void rtl8169_tx_interrupt(struct net_device *dev, | ||
43 | |||
44 | if (tp->dirty_tx != dirty_tx) { | ||
45 | tp->dirty_tx = dirty_tx; | ||
46 | + /* Sync with rtl8169_start_xmit: | ||
47 | + * - publish dirty_tx ring index (write barrier) | ||
48 | + * - refresh cur_tx ring index and queue status (read barrier) | ||
49 | + * May the current thread miss the stopped queue condition, | ||
50 | + * a racing xmit thread can only have a right view of the | ||
51 | + * ring status. | ||
52 | + */ | ||
53 | smp_mb(); | ||
54 | if (netif_queue_stopped(dev) && | ||
55 | (TX_BUFFS_AVAIL(tp) >= MAX_SKB_FRAGS)) { | ||
56 | -- | ||
57 | 1.7.9.5 | ||
58 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0070-r8169-fix-unsigned-int-wraparound-with-TSO.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0070-r8169-fix-unsigned-int-wraparound-with-TSO.patch new file mode 100644 index 00000000..c124fb6f --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0070-r8169-fix-unsigned-int-wraparound-with-TSO.patch | |||
@@ -0,0 +1,82 @@ | |||
1 | From 70031dbb0e0a38f332ddb13359f9984bd25eb8c2 Mon Sep 17 00:00:00 2001 | ||
2 | From: Julien Ducourthial <jducourt@free.fr> | ||
3 | Date: Wed, 9 May 2012 00:00:06 +0200 | ||
4 | Subject: [PATCH 70/86] r8169: fix unsigned int wraparound with TSO | ||
5 | |||
6 | [ Upstream commit 477206a018f902895bfcd069dd820bfe94c187b1 ] | ||
7 | |||
8 | The r8169 may get stuck or show bad behaviour after activating TSO : | ||
9 | the net_device is not stopped when it has no more TX descriptors. | ||
10 | This problem comes from TX_BUFS_AVAIL which may reach -1 when all | ||
11 | transmit descriptors are in use. The patch simply tries to keep positive | ||
12 | values. | ||
13 | |||
14 | Tested with 8111d(onboard) on a D510MO, and with 8111e(onboard) on a | ||
15 | Zotac 890GXITX. | ||
16 | |||
17 | Signed-off-by: Julien Ducourthial <jducourt@free.fr> | ||
18 | Acked-by: Francois Romieu <romieu@fr.zoreil.com> | ||
19 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
20 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
21 | --- | ||
22 | drivers/net/ethernet/realtek/r8169.c | 16 ++++++++++------ | ||
23 | 1 file changed, 10 insertions(+), 6 deletions(-) | ||
24 | |||
25 | diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c | ||
26 | index 5f3fa32..cc2565c 100644 | ||
27 | --- a/drivers/net/ethernet/realtek/r8169.c | ||
28 | +++ b/drivers/net/ethernet/realtek/r8169.c | ||
29 | @@ -62,8 +62,12 @@ | ||
30 | #define R8169_MSG_DEFAULT \ | ||
31 | (NETIF_MSG_DRV | NETIF_MSG_PROBE | NETIF_MSG_IFUP | NETIF_MSG_IFDOWN) | ||
32 | |||
33 | -#define TX_BUFFS_AVAIL(tp) \ | ||
34 | - (tp->dirty_tx + NUM_TX_DESC - tp->cur_tx - 1) | ||
35 | +#define TX_SLOTS_AVAIL(tp) \ | ||
36 | + (tp->dirty_tx + NUM_TX_DESC - tp->cur_tx) | ||
37 | + | ||
38 | +/* A skbuff with nr_frags needs nr_frags+1 entries in the tx queue */ | ||
39 | +#define TX_FRAGS_READY_FOR(tp,nr_frags) \ | ||
40 | + (TX_SLOTS_AVAIL(tp) >= (nr_frags + 1)) | ||
41 | |||
42 | /* Maximum number of multicast addresses to filter (vs. Rx-all-multicast). | ||
43 | The RTL chips use a 64 element hash table based on the Ethernet CRC. */ | ||
44 | @@ -5512,7 +5516,7 @@ static netdev_tx_t rtl8169_start_xmit(struct sk_buff *skb, | ||
45 | u32 opts[2]; | ||
46 | int frags; | ||
47 | |||
48 | - if (unlikely(TX_BUFFS_AVAIL(tp) < skb_shinfo(skb)->nr_frags)) { | ||
49 | + if (unlikely(!TX_FRAGS_READY_FOR(tp, skb_shinfo(skb)->nr_frags))) { | ||
50 | netif_err(tp, drv, dev, "BUG! Tx Ring full when queue awake!\n"); | ||
51 | goto err_stop_0; | ||
52 | } | ||
53 | @@ -5560,7 +5564,7 @@ static netdev_tx_t rtl8169_start_xmit(struct sk_buff *skb, | ||
54 | |||
55 | RTL_W8(TxPoll, NPQ); | ||
56 | |||
57 | - if (TX_BUFFS_AVAIL(tp) < MAX_SKB_FRAGS) { | ||
58 | + if (!TX_FRAGS_READY_FOR(tp, MAX_SKB_FRAGS)) { | ||
59 | /* Avoid wrongly optimistic queue wake-up: rtl_tx thread must | ||
60 | * not miss a ring update when it notices a stopped queue. | ||
61 | */ | ||
62 | @@ -5574,7 +5578,7 @@ static netdev_tx_t rtl8169_start_xmit(struct sk_buff *skb, | ||
63 | * can't. | ||
64 | */ | ||
65 | smp_mb(); | ||
66 | - if (TX_BUFFS_AVAIL(tp) >= MAX_SKB_FRAGS) | ||
67 | + if (TX_FRAGS_READY_FOR(tp, MAX_SKB_FRAGS)) | ||
68 | netif_wake_queue(dev); | ||
69 | } | ||
70 | |||
71 | @@ -5683,7 +5687,7 @@ static void rtl8169_tx_interrupt(struct net_device *dev, | ||
72 | */ | ||
73 | smp_mb(); | ||
74 | if (netif_queue_stopped(dev) && | ||
75 | - (TX_BUFFS_AVAIL(tp) >= MAX_SKB_FRAGS)) { | ||
76 | + TX_FRAGS_READY_FOR(tp, MAX_SKB_FRAGS)) { | ||
77 | netif_wake_queue(dev); | ||
78 | } | ||
79 | /* | ||
80 | -- | ||
81 | 1.7.9.5 | ||
82 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0071-Revert-net-maintain-namespace-isolation-between-vlan.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0071-Revert-net-maintain-namespace-isolation-between-vlan.patch new file mode 100644 index 00000000..53583ee9 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0071-Revert-net-maintain-namespace-isolation-between-vlan.patch | |||
@@ -0,0 +1,138 @@ | |||
1 | From 8094a25020703041f42a531dfac0a2ee24319119 Mon Sep 17 00:00:00 2001 | ||
2 | From: "David S. Miller" <davem@davemloft.net> | ||
3 | Date: Thu, 10 May 2012 23:03:34 -0400 | ||
4 | Subject: [PATCH 71/86] Revert "net: maintain namespace isolation between vlan | ||
5 | and real device" | ||
6 | |||
7 | [ Upstream commit 59b9997baba5242997ddc7bd96b1391f5275a5a4 ] | ||
8 | |||
9 | This reverts commit 8a83a00b0735190384a348156837918271034144. | ||
10 | |||
11 | It causes regressions for S390 devices, because it does an | ||
12 | unconditional DST drop on SKBs for vlans and the QETH device | ||
13 | needs the neighbour entry hung off the DST for certain things | ||
14 | on transmit. | ||
15 | |||
16 | Arnd can't remember exactly why he even needed this change. | ||
17 | |||
18 | Conflicts: | ||
19 | |||
20 | drivers/net/macvlan.c | ||
21 | net/8021q/vlan_dev.c | ||
22 | net/core/dev.c | ||
23 | |||
24 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
25 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
26 | --- | ||
27 | drivers/net/macvlan.c | 2 +- | ||
28 | include/linux/netdevice.h | 9 --------- | ||
29 | net/8021q/vlan_dev.c | 2 +- | ||
30 | net/core/dev.c | 36 +++++------------------------------- | ||
31 | 4 files changed, 7 insertions(+), 42 deletions(-) | ||
32 | |||
33 | diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c | ||
34 | index 959d448..97f342e 100644 | ||
35 | --- a/drivers/net/macvlan.c | ||
36 | +++ b/drivers/net/macvlan.c | ||
37 | @@ -258,7 +258,7 @@ static int macvlan_queue_xmit(struct sk_buff *skb, struct net_device *dev) | ||
38 | |||
39 | xmit_world: | ||
40 | skb->ip_summed = ip_summed; | ||
41 | - skb_set_dev(skb, vlan->lowerdev); | ||
42 | + skb->dev = vlan->lowerdev; | ||
43 | return dev_queue_xmit(skb); | ||
44 | } | ||
45 | |||
46 | diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h | ||
47 | index cbeb586..cb52340 100644 | ||
48 | --- a/include/linux/netdevice.h | ||
49 | +++ b/include/linux/netdevice.h | ||
50 | @@ -1420,15 +1420,6 @@ static inline bool netdev_uses_dsa_tags(struct net_device *dev) | ||
51 | return 0; | ||
52 | } | ||
53 | |||
54 | -#ifndef CONFIG_NET_NS | ||
55 | -static inline void skb_set_dev(struct sk_buff *skb, struct net_device *dev) | ||
56 | -{ | ||
57 | - skb->dev = dev; | ||
58 | -} | ||
59 | -#else /* CONFIG_NET_NS */ | ||
60 | -void skb_set_dev(struct sk_buff *skb, struct net_device *dev); | ||
61 | -#endif | ||
62 | - | ||
63 | static inline bool netdev_uses_trailer_tags(struct net_device *dev) | ||
64 | { | ||
65 | #ifdef CONFIG_NET_DSA_TAG_TRAILER | ||
66 | diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c | ||
67 | index bc25286..0cccca8 100644 | ||
68 | --- a/net/8021q/vlan_dev.c | ||
69 | +++ b/net/8021q/vlan_dev.c | ||
70 | @@ -156,7 +156,7 @@ static netdev_tx_t vlan_dev_hard_start_xmit(struct sk_buff *skb, | ||
71 | skb = __vlan_hwaccel_put_tag(skb, vlan_tci); | ||
72 | } | ||
73 | |||
74 | - skb_set_dev(skb, vlan_dev_info(dev)->real_dev); | ||
75 | + skb->dev = vlan_dev_info(dev)->real_dev; | ||
76 | len = skb->len; | ||
77 | ret = dev_queue_xmit(skb); | ||
78 | |||
79 | diff --git a/net/core/dev.c b/net/core/dev.c | ||
80 | index 61a7baa..1cbddc9 100644 | ||
81 | --- a/net/core/dev.c | ||
82 | +++ b/net/core/dev.c | ||
83 | @@ -1607,10 +1607,14 @@ int dev_forward_skb(struct net_device *dev, struct sk_buff *skb) | ||
84 | kfree_skb(skb); | ||
85 | return NET_RX_DROP; | ||
86 | } | ||
87 | - skb_set_dev(skb, dev); | ||
88 | + skb->dev = dev; | ||
89 | + skb_dst_drop(skb); | ||
90 | skb->tstamp.tv64 = 0; | ||
91 | skb->pkt_type = PACKET_HOST; | ||
92 | skb->protocol = eth_type_trans(skb, dev); | ||
93 | + skb->mark = 0; | ||
94 | + secpath_reset(skb); | ||
95 | + nf_reset(skb); | ||
96 | return netif_rx(skb); | ||
97 | } | ||
98 | EXPORT_SYMBOL_GPL(dev_forward_skb); | ||
99 | @@ -1865,36 +1869,6 @@ void netif_device_attach(struct net_device *dev) | ||
100 | } | ||
101 | EXPORT_SYMBOL(netif_device_attach); | ||
102 | |||
103 | -/** | ||
104 | - * skb_dev_set -- assign a new device to a buffer | ||
105 | - * @skb: buffer for the new device | ||
106 | - * @dev: network device | ||
107 | - * | ||
108 | - * If an skb is owned by a device already, we have to reset | ||
109 | - * all data private to the namespace a device belongs to | ||
110 | - * before assigning it a new device. | ||
111 | - */ | ||
112 | -#ifdef CONFIG_NET_NS | ||
113 | -void skb_set_dev(struct sk_buff *skb, struct net_device *dev) | ||
114 | -{ | ||
115 | - skb_dst_drop(skb); | ||
116 | - if (skb->dev && !net_eq(dev_net(skb->dev), dev_net(dev))) { | ||
117 | - secpath_reset(skb); | ||
118 | - nf_reset(skb); | ||
119 | - skb_init_secmark(skb); | ||
120 | - skb->mark = 0; | ||
121 | - skb->priority = 0; | ||
122 | - skb->nf_trace = 0; | ||
123 | - skb->ipvs_property = 0; | ||
124 | -#ifdef CONFIG_NET_SCHED | ||
125 | - skb->tc_index = 0; | ||
126 | -#endif | ||
127 | - } | ||
128 | - skb->dev = dev; | ||
129 | -} | ||
130 | -EXPORT_SYMBOL(skb_set_dev); | ||
131 | -#endif /* CONFIG_NET_NS */ | ||
132 | - | ||
133 | /* | ||
134 | * Invalidate hardware checksum when packet is to be mangled, and | ||
135 | * complete checksum manually on outgoing path. | ||
136 | -- | ||
137 | 1.7.9.5 | ||
138 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0072-sctp-check-cached-dst-before-using-it.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0072-sctp-check-cached-dst-before-using-it.patch new file mode 100644 index 00000000..6cb2e1a3 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0072-sctp-check-cached-dst-before-using-it.patch | |||
@@ -0,0 +1,88 @@ | |||
1 | From 23c5783d07dcd62f8b86c4eaefef08f2892cbbd0 Mon Sep 17 00:00:00 2001 | ||
2 | From: Nicolas Dichtel <nicolas.dichtel@6wind.com> | ||
3 | Date: Fri, 4 May 2012 05:24:54 +0000 | ||
4 | Subject: [PATCH 72/86] sctp: check cached dst before using it | ||
5 | |||
6 | [ Upstream commit e0268868ba064980488fc8c194db3d8e9fb2959c ] | ||
7 | |||
8 | dst_check() will take care of SA (and obsolete field), hence | ||
9 | IPsec rekeying scenario is taken into account. | ||
10 | |||
11 | Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> | ||
12 | Acked-by: Vlad Yaseivch <vyasevich@gmail.com> | ||
13 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
14 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
15 | --- | ||
16 | include/net/sctp/sctp.h | 13 +++++++++++++ | ||
17 | net/sctp/output.c | 4 +--- | ||
18 | net/sctp/transport.c | 17 ----------------- | ||
19 | 3 files changed, 14 insertions(+), 20 deletions(-) | ||
20 | |||
21 | diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h | ||
22 | index 6a72a58..ad03988 100644 | ||
23 | --- a/include/net/sctp/sctp.h | ||
24 | +++ b/include/net/sctp/sctp.h | ||
25 | @@ -703,4 +703,17 @@ static inline void sctp_v4_map_v6(union sctp_addr *addr) | ||
26 | addr->v6.sin6_addr.s6_addr32[2] = htonl(0x0000ffff); | ||
27 | } | ||
28 | |||
29 | +/* The cookie is always 0 since this is how it's used in the | ||
30 | + * pmtu code. | ||
31 | + */ | ||
32 | +static inline struct dst_entry *sctp_transport_dst_check(struct sctp_transport *t) | ||
33 | +{ | ||
34 | + if (t->dst && !dst_check(t->dst, 0)) { | ||
35 | + dst_release(t->dst); | ||
36 | + t->dst = NULL; | ||
37 | + } | ||
38 | + | ||
39 | + return t->dst; | ||
40 | +} | ||
41 | + | ||
42 | #endif /* __net_sctp_h__ */ | ||
43 | diff --git a/net/sctp/output.c b/net/sctp/output.c | ||
44 | index 817174e..8fc4dcd 100644 | ||
45 | --- a/net/sctp/output.c | ||
46 | +++ b/net/sctp/output.c | ||
47 | @@ -377,9 +377,7 @@ int sctp_packet_transmit(struct sctp_packet *packet) | ||
48 | */ | ||
49 | skb_set_owner_w(nskb, sk); | ||
50 | |||
51 | - /* The 'obsolete' field of dst is set to 2 when a dst is freed. */ | ||
52 | - if (!dst || (dst->obsolete > 1)) { | ||
53 | - dst_release(dst); | ||
54 | + if (!sctp_transport_dst_check(tp)) { | ||
55 | sctp_transport_route(tp, NULL, sctp_sk(sk)); | ||
56 | if (asoc && (asoc->param_flags & SPP_PMTUD_ENABLE)) { | ||
57 | sctp_assoc_sync_pmtu(asoc); | ||
58 | diff --git a/net/sctp/transport.c b/net/sctp/transport.c | ||
59 | index 394c57c..8da4481 100644 | ||
60 | --- a/net/sctp/transport.c | ||
61 | +++ b/net/sctp/transport.c | ||
62 | @@ -226,23 +226,6 @@ void sctp_transport_pmtu(struct sctp_transport *transport, struct sock *sk) | ||
63 | transport->pathmtu = SCTP_DEFAULT_MAXSEGMENT; | ||
64 | } | ||
65 | |||
66 | -/* this is a complete rip-off from __sk_dst_check | ||
67 | - * the cookie is always 0 since this is how it's used in the | ||
68 | - * pmtu code | ||
69 | - */ | ||
70 | -static struct dst_entry *sctp_transport_dst_check(struct sctp_transport *t) | ||
71 | -{ | ||
72 | - struct dst_entry *dst = t->dst; | ||
73 | - | ||
74 | - if (dst && dst->obsolete && dst->ops->check(dst, 0) == NULL) { | ||
75 | - dst_release(t->dst); | ||
76 | - t->dst = NULL; | ||
77 | - return NULL; | ||
78 | - } | ||
79 | - | ||
80 | - return dst; | ||
81 | -} | ||
82 | - | ||
83 | void sctp_transport_update_pmtu(struct sctp_transport *t, u32 pmtu) | ||
84 | { | ||
85 | struct dst_entry *dst; | ||
86 | -- | ||
87 | 1.7.9.5 | ||
88 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0073-skb-avoid-unnecessary-reallocations-in-__skb_cow.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0073-skb-avoid-unnecessary-reallocations-in-__skb_cow.patch new file mode 100644 index 00000000..797dd949 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0073-skb-avoid-unnecessary-reallocations-in-__skb_cow.patch | |||
@@ -0,0 +1,42 @@ | |||
1 | From 102f9a70f2f084fe0380f1df716f89427cf5f965 Mon Sep 17 00:00:00 2001 | ||
2 | From: Felix Fietkau <nbd@openwrt.org> | ||
3 | Date: Tue, 29 May 2012 03:35:08 +0000 | ||
4 | Subject: [PATCH 73/86] skb: avoid unnecessary reallocations in __skb_cow | ||
5 | |||
6 | [ Upstream commit 617c8c11236716dcbda877e764b7bf37c6fd8063 ] | ||
7 | |||
8 | At the beginning of __skb_cow, headroom gets set to a minimum of | ||
9 | NET_SKB_PAD. This causes unnecessary reallocations if the buffer was not | ||
10 | cloned and the headroom is just below NET_SKB_PAD, but still more than the | ||
11 | amount requested by the caller. | ||
12 | This was showing up frequently in my tests on VLAN tx, where | ||
13 | vlan_insert_tag calls skb_cow_head(skb, VLAN_HLEN). | ||
14 | |||
15 | Locally generated packets should have enough headroom, and for forward | ||
16 | paths, we already have NET_SKB_PAD bytes of headroom, so we don't need to | ||
17 | add any extra space here. | ||
18 | |||
19 | Signed-off-by: Felix Fietkau <nbd@openwrt.org> | ||
20 | Signed-off-by: Eric Dumazet <edumazet@google.com> | ||
21 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
22 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
23 | --- | ||
24 | include/linux/skbuff.h | 2 -- | ||
25 | 1 file changed, 2 deletions(-) | ||
26 | |||
27 | diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h | ||
28 | index e689b47..bdb4590 100644 | ||
29 | --- a/include/linux/skbuff.h | ||
30 | +++ b/include/linux/skbuff.h | ||
31 | @@ -1866,8 +1866,6 @@ static inline int __skb_cow(struct sk_buff *skb, unsigned int headroom, | ||
32 | { | ||
33 | int delta = 0; | ||
34 | |||
35 | - if (headroom < NET_SKB_PAD) | ||
36 | - headroom = NET_SKB_PAD; | ||
37 | if (headroom > skb_headroom(skb)) | ||
38 | delta = headroom - skb_headroom(skb); | ||
39 | |||
40 | -- | ||
41 | 1.7.9.5 | ||
42 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0074-xfrm-take-net-hdr-len-into-account-for-esp-payload-s.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0074-xfrm-take-net-hdr-len-into-account-for-esp-payload-s.patch new file mode 100644 index 00000000..421e97ac --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0074-xfrm-take-net-hdr-len-into-account-for-esp-payload-s.patch | |||
@@ -0,0 +1,100 @@ | |||
1 | From f7088713900622e33404d09b3b16e44d780ea515 Mon Sep 17 00:00:00 2001 | ||
2 | From: Benjamin Poirier <bpoirier@suse.de> | ||
3 | Date: Thu, 24 May 2012 11:32:38 +0000 | ||
4 | Subject: [PATCH 74/86] xfrm: take net hdr len into account for esp payload | ||
5 | size calculation | ||
6 | |||
7 | [ Upstream commit 91657eafb64b4cb53ec3a2fbc4afc3497f735788 ] | ||
8 | |||
9 | Corrects the function that determines the esp payload size. The calculations | ||
10 | done in esp{4,6}_get_mtu() lead to overlength frames in transport mode for | ||
11 | certain mtu values and suboptimal frames for others. | ||
12 | |||
13 | According to what is done, mainly in esp{,6}_output() and tcp_mtu_to_mss(), | ||
14 | net_header_len must be taken into account before doing the alignment | ||
15 | calculation. | ||
16 | |||
17 | Signed-off-by: Benjamin Poirier <bpoirier@suse.de> | ||
18 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
19 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
20 | --- | ||
21 | net/ipv4/esp4.c | 24 +++++++++--------------- | ||
22 | net/ipv6/esp6.c | 18 +++++++----------- | ||
23 | 2 files changed, 16 insertions(+), 26 deletions(-) | ||
24 | |||
25 | diff --git a/net/ipv4/esp4.c b/net/ipv4/esp4.c | ||
26 | index a5b4134..530787b 100644 | ||
27 | --- a/net/ipv4/esp4.c | ||
28 | +++ b/net/ipv4/esp4.c | ||
29 | @@ -457,28 +457,22 @@ static u32 esp4_get_mtu(struct xfrm_state *x, int mtu) | ||
30 | struct esp_data *esp = x->data; | ||
31 | u32 blksize = ALIGN(crypto_aead_blocksize(esp->aead), 4); | ||
32 | u32 align = max_t(u32, blksize, esp->padlen); | ||
33 | - u32 rem; | ||
34 | - | ||
35 | - mtu -= x->props.header_len + crypto_aead_authsize(esp->aead); | ||
36 | - rem = mtu & (align - 1); | ||
37 | - mtu &= ~(align - 1); | ||
38 | + unsigned int net_adj; | ||
39 | |||
40 | switch (x->props.mode) { | ||
41 | - case XFRM_MODE_TUNNEL: | ||
42 | - break; | ||
43 | - default: | ||
44 | case XFRM_MODE_TRANSPORT: | ||
45 | - /* The worst case */ | ||
46 | - mtu -= blksize - 4; | ||
47 | - mtu += min_t(u32, blksize - 4, rem); | ||
48 | - break; | ||
49 | case XFRM_MODE_BEET: | ||
50 | - /* The worst case. */ | ||
51 | - mtu += min_t(u32, IPV4_BEET_PHMAXLEN, rem); | ||
52 | + net_adj = sizeof(struct iphdr); | ||
53 | break; | ||
54 | + case XFRM_MODE_TUNNEL: | ||
55 | + net_adj = 0; | ||
56 | + break; | ||
57 | + default: | ||
58 | + BUG(); | ||
59 | } | ||
60 | |||
61 | - return mtu - 2; | ||
62 | + return ((mtu - x->props.header_len - crypto_aead_authsize(esp->aead) - | ||
63 | + net_adj) & ~(align - 1)) + (net_adj - 2); | ||
64 | } | ||
65 | |||
66 | static void esp4_err(struct sk_buff *skb, u32 info) | ||
67 | diff --git a/net/ipv6/esp6.c b/net/ipv6/esp6.c | ||
68 | index 1ac7938..65dd543 100644 | ||
69 | --- a/net/ipv6/esp6.c | ||
70 | +++ b/net/ipv6/esp6.c | ||
71 | @@ -411,19 +411,15 @@ static u32 esp6_get_mtu(struct xfrm_state *x, int mtu) | ||
72 | struct esp_data *esp = x->data; | ||
73 | u32 blksize = ALIGN(crypto_aead_blocksize(esp->aead), 4); | ||
74 | u32 align = max_t(u32, blksize, esp->padlen); | ||
75 | - u32 rem; | ||
76 | + unsigned int net_adj; | ||
77 | |||
78 | - mtu -= x->props.header_len + crypto_aead_authsize(esp->aead); | ||
79 | - rem = mtu & (align - 1); | ||
80 | - mtu &= ~(align - 1); | ||
81 | - | ||
82 | - if (x->props.mode != XFRM_MODE_TUNNEL) { | ||
83 | - u32 padsize = ((blksize - 1) & 7) + 1; | ||
84 | - mtu -= blksize - padsize; | ||
85 | - mtu += min_t(u32, blksize - padsize, rem); | ||
86 | - } | ||
87 | + if (x->props.mode != XFRM_MODE_TUNNEL) | ||
88 | + net_adj = sizeof(struct ipv6hdr); | ||
89 | + else | ||
90 | + net_adj = 0; | ||
91 | |||
92 | - return mtu - 2; | ||
93 | + return ((mtu - x->props.header_len - crypto_aead_authsize(esp->aead) - | ||
94 | + net_adj) & ~(align - 1)) + (net_adj - 2); | ||
95 | } | ||
96 | |||
97 | static void esp6_err(struct sk_buff *skb, struct inet6_skb_parm *opt, | ||
98 | -- | ||
99 | 1.7.9.5 | ||
100 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0075-ACPI-battery-only-refresh-the-sysfs-files-when-perti.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0075-ACPI-battery-only-refresh-the-sysfs-files-when-perti.patch new file mode 100644 index 00000000..868bccea --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0075-ACPI-battery-only-refresh-the-sysfs-files-when-perti.patch | |||
@@ -0,0 +1,51 @@ | |||
1 | From f01aa357417f413fff9af7ef10496ece02d2c8d7 Mon Sep 17 00:00:00 2001 | ||
2 | From: Andy Whitcroft <apw@canonical.com> | ||
3 | Date: Thu, 3 May 2012 14:48:26 +0100 | ||
4 | Subject: [PATCH 75/86] ACPI battery: only refresh the sysfs files when | ||
5 | pertinent information changes | ||
6 | |||
7 | commit c5971456964290da7e98222892797b71ef793e62 upstream. | ||
8 | |||
9 | We only need to regenerate the sysfs files when the capacity units | ||
10 | change, avoid the update otherwise. | ||
11 | |||
12 | The origin of this issue is dates way back to 2.6.38: | ||
13 | da8aeb92d4853f37e281f11fddf61f9c7d84c3cd | ||
14 | (ACPI / Battery: Update information on info notification and resume) | ||
15 | |||
16 | Signed-off-by: Andy Whitcroft <apw@canonical.com> | ||
17 | Tested-by: Ralf Jung <post@ralfj.de> | ||
18 | Signed-off-by: Len Brown <len.brown@intel.com> | ||
19 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
20 | --- | ||
21 | drivers/acpi/battery.c | 10 +++++++++- | ||
22 | 1 file changed, 9 insertions(+), 1 deletion(-) | ||
23 | |||
24 | diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c | ||
25 | index 7711d94..5535477 100644 | ||
26 | --- a/drivers/acpi/battery.c | ||
27 | +++ b/drivers/acpi/battery.c | ||
28 | @@ -643,11 +643,19 @@ static int acpi_battery_update(struct acpi_battery *battery) | ||
29 | |||
30 | static void acpi_battery_refresh(struct acpi_battery *battery) | ||
31 | { | ||
32 | + int power_unit; | ||
33 | + | ||
34 | if (!battery->bat.dev) | ||
35 | return; | ||
36 | |||
37 | + power_unit = battery->power_unit; | ||
38 | + | ||
39 | acpi_battery_get_info(battery); | ||
40 | - /* The battery may have changed its reporting units. */ | ||
41 | + | ||
42 | + if (power_unit == battery->power_unit) | ||
43 | + return; | ||
44 | + | ||
45 | + /* The battery has changed its reporting units. */ | ||
46 | sysfs_remove_battery(battery); | ||
47 | sysfs_add_battery(battery); | ||
48 | } | ||
49 | -- | ||
50 | 1.7.9.5 | ||
51 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0076-target-file-Use-O_DSYNC-by-default-for-FILEIO-backen.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0076-target-file-Use-O_DSYNC-by-default-for-FILEIO-backen.patch new file mode 100644 index 00000000..7c0a003c --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0076-target-file-Use-O_DSYNC-by-default-for-FILEIO-backen.patch | |||
@@ -0,0 +1,188 @@ | |||
1 | From f959a45c2bfd20be1435dee828b7e4eadd862b45 Mon Sep 17 00:00:00 2001 | ||
2 | From: Nicholas Bellinger <nab@linux-iscsi.org> | ||
3 | Date: Wed, 30 May 2012 16:25:41 -0700 | ||
4 | Subject: [PATCH 76/86] target/file: Use O_DSYNC by default for FILEIO | ||
5 | backends | ||
6 | |||
7 | commit a4dff3043c231d57f982af635c9d2192ee40e5ae upstream. | ||
8 | |||
9 | Convert to use O_DSYNC for all cases at FILEIO backend creation time to | ||
10 | avoid the extra syncing of pure timestamp updates with legacy O_SYNC during | ||
11 | default operation as recommended by hch. Continue to do this independently of | ||
12 | Write Cache Enable (WCE) bit, as WCE=0 is currently the default for all backend | ||
13 | devices and enabled by user on per device basis via attrib/emulate_write_cache. | ||
14 | |||
15 | This patch drops the now unnecessary fd_buffered_io= token usage that was | ||
16 | originally signalling when to explictly disable O_SYNC at backend creation | ||
17 | time for buffered I/O operation. This can end up being dangerous for a number | ||
18 | of reasons during physical node failure, so go ahead and drop this option | ||
19 | for now when O_DSYNC is used as the default. | ||
20 | |||
21 | Also allow explict FUA WRITEs -> vfs_fsync_range() call to function in | ||
22 | fd_execute_cmd() independently of WCE bit setting. | ||
23 | |||
24 | Reported-by: Christoph Hellwig <hch@lst.de> | ||
25 | Cc: Linus Torvalds <torvalds@linux-foundation.org> | ||
26 | Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org> | ||
27 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
28 | [bwh: Backported to 3.2: | ||
29 | - We have fd_do_task() and not fd_execute_cmd() | ||
30 | - Various fields are in struct se_task rather than struct se_cmd | ||
31 | - fd_create_virtdevice() flags initialisation hasn't been cleaned up] | ||
32 | --- | ||
33 | drivers/target/target_core_file.c | 78 ++++++++----------------------------- | ||
34 | drivers/target/target_core_file.h | 1 - | ||
35 | 2 files changed, 17 insertions(+), 62 deletions(-) | ||
36 | |||
37 | diff --git a/drivers/target/target_core_file.c b/drivers/target/target_core_file.c | ||
38 | index cad8b92..455a251 100644 | ||
39 | --- a/drivers/target/target_core_file.c | ||
40 | +++ b/drivers/target/target_core_file.c | ||
41 | @@ -134,21 +134,11 @@ static struct se_device *fd_create_virtdevice( | ||
42 | ret = PTR_ERR(dev_p); | ||
43 | goto fail; | ||
44 | } | ||
45 | -#if 0 | ||
46 | - if (di->no_create_file) | ||
47 | - flags = O_RDWR | O_LARGEFILE; | ||
48 | - else | ||
49 | - flags = O_RDWR | O_CREAT | O_LARGEFILE; | ||
50 | -#else | ||
51 | - flags = O_RDWR | O_CREAT | O_LARGEFILE; | ||
52 | -#endif | ||
53 | -/* flags |= O_DIRECT; */ | ||
54 | /* | ||
55 | - * If fd_buffered_io=1 has not been set explicitly (the default), | ||
56 | - * use O_SYNC to force FILEIO writes to disk. | ||
57 | + * Use O_DSYNC by default instead of O_SYNC to forgo syncing | ||
58 | + * of pure timestamp updates. | ||
59 | */ | ||
60 | - if (!(fd_dev->fbd_flags & FDBD_USE_BUFFERED_IO)) | ||
61 | - flags |= O_SYNC; | ||
62 | + flags = O_RDWR | O_CREAT | O_LARGEFILE | O_DSYNC; | ||
63 | |||
64 | file = filp_open(dev_p, flags, 0600); | ||
65 | if (IS_ERR(file)) { | ||
66 | @@ -400,26 +390,6 @@ static void fd_emulate_sync_cache(struct se_task *task) | ||
67 | transport_complete_sync_cache(cmd, ret == 0); | ||
68 | } | ||
69 | |||
70 | -/* | ||
71 | - * WRITE Force Unit Access (FUA) emulation on a per struct se_task | ||
72 | - * LBA range basis.. | ||
73 | - */ | ||
74 | -static void fd_emulate_write_fua(struct se_cmd *cmd, struct se_task *task) | ||
75 | -{ | ||
76 | - struct se_device *dev = cmd->se_dev; | ||
77 | - struct fd_dev *fd_dev = dev->dev_ptr; | ||
78 | - loff_t start = task->task_lba * dev->se_sub_dev->se_dev_attrib.block_size; | ||
79 | - loff_t end = start + task->task_size; | ||
80 | - int ret; | ||
81 | - | ||
82 | - pr_debug("FILEIO: FUA WRITE LBA: %llu, bytes: %u\n", | ||
83 | - task->task_lba, task->task_size); | ||
84 | - | ||
85 | - ret = vfs_fsync_range(fd_dev->fd_file, start, end, 1); | ||
86 | - if (ret != 0) | ||
87 | - pr_err("FILEIO: vfs_fsync_range() failed: %d\n", ret); | ||
88 | -} | ||
89 | - | ||
90 | static int fd_do_task(struct se_task *task) | ||
91 | { | ||
92 | struct se_cmd *cmd = task->task_se_cmd; | ||
93 | @@ -434,19 +404,21 @@ static int fd_do_task(struct se_task *task) | ||
94 | ret = fd_do_readv(task); | ||
95 | } else { | ||
96 | ret = fd_do_writev(task); | ||
97 | - | ||
98 | + /* | ||
99 | + * Perform implict vfs_fsync_range() for fd_do_writev() ops | ||
100 | + * for SCSI WRITEs with Forced Unit Access (FUA) set. | ||
101 | + * Allow this to happen independent of WCE=0 setting. | ||
102 | + */ | ||
103 | if (ret > 0 && | ||
104 | - dev->se_sub_dev->se_dev_attrib.emulate_write_cache > 0 && | ||
105 | dev->se_sub_dev->se_dev_attrib.emulate_fua_write > 0 && | ||
106 | (cmd->se_cmd_flags & SCF_FUA)) { | ||
107 | - /* | ||
108 | - * We might need to be a bit smarter here | ||
109 | - * and return some sense data to let the initiator | ||
110 | - * know the FUA WRITE cache sync failed..? | ||
111 | - */ | ||
112 | - fd_emulate_write_fua(cmd, task); | ||
113 | - } | ||
114 | + struct fd_dev *fd_dev = dev->dev_ptr; | ||
115 | + loff_t start = task->task_lba * | ||
116 | + dev->se_sub_dev->se_dev_attrib.block_size; | ||
117 | + loff_t end = start + task->task_size; | ||
118 | |||
119 | + vfs_fsync_range(fd_dev->fd_file, start, end, 1); | ||
120 | + } | ||
121 | } | ||
122 | |||
123 | if (ret < 0) { | ||
124 | @@ -478,7 +450,6 @@ enum { | ||
125 | static match_table_t tokens = { | ||
126 | {Opt_fd_dev_name, "fd_dev_name=%s"}, | ||
127 | {Opt_fd_dev_size, "fd_dev_size=%s"}, | ||
128 | - {Opt_fd_buffered_io, "fd_buffered_io=%d"}, | ||
129 | {Opt_err, NULL} | ||
130 | }; | ||
131 | |||
132 | @@ -490,7 +461,7 @@ static ssize_t fd_set_configfs_dev_params( | ||
133 | struct fd_dev *fd_dev = se_dev->se_dev_su_ptr; | ||
134 | char *orig, *ptr, *arg_p, *opts; | ||
135 | substring_t args[MAX_OPT_ARGS]; | ||
136 | - int ret = 0, arg, token; | ||
137 | + int ret = 0, token; | ||
138 | |||
139 | opts = kstrdup(page, GFP_KERNEL); | ||
140 | if (!opts) | ||
141 | @@ -534,19 +505,6 @@ static ssize_t fd_set_configfs_dev_params( | ||
142 | " bytes\n", fd_dev->fd_dev_size); | ||
143 | fd_dev->fbd_flags |= FBDF_HAS_SIZE; | ||
144 | break; | ||
145 | - case Opt_fd_buffered_io: | ||
146 | - match_int(args, &arg); | ||
147 | - if (arg != 1) { | ||
148 | - pr_err("bogus fd_buffered_io=%d value\n", arg); | ||
149 | - ret = -EINVAL; | ||
150 | - goto out; | ||
151 | - } | ||
152 | - | ||
153 | - pr_debug("FILEIO: Using buffered I/O" | ||
154 | - " operations for struct fd_dev\n"); | ||
155 | - | ||
156 | - fd_dev->fbd_flags |= FDBD_USE_BUFFERED_IO; | ||
157 | - break; | ||
158 | default: | ||
159 | break; | ||
160 | } | ||
161 | @@ -578,10 +536,8 @@ static ssize_t fd_show_configfs_dev_params( | ||
162 | ssize_t bl = 0; | ||
163 | |||
164 | bl = sprintf(b + bl, "TCM FILEIO ID: %u", fd_dev->fd_dev_id); | ||
165 | - bl += sprintf(b + bl, " File: %s Size: %llu Mode: %s\n", | ||
166 | - fd_dev->fd_dev_name, fd_dev->fd_dev_size, | ||
167 | - (fd_dev->fbd_flags & FDBD_USE_BUFFERED_IO) ? | ||
168 | - "Buffered" : "Synchronous"); | ||
169 | + bl += sprintf(b + bl, " File: %s Size: %llu Mode: O_DSYNC\n", | ||
170 | + fd_dev->fd_dev_name, fd_dev->fd_dev_size); | ||
171 | return bl; | ||
172 | } | ||
173 | |||
174 | diff --git a/drivers/target/target_core_file.h b/drivers/target/target_core_file.h | ||
175 | index 59e6e73..53ece69 100644 | ||
176 | --- a/drivers/target/target_core_file.h | ||
177 | +++ b/drivers/target/target_core_file.h | ||
178 | @@ -18,7 +18,6 @@ struct fd_request { | ||
179 | |||
180 | #define FBDF_HAS_PATH 0x01 | ||
181 | #define FBDF_HAS_SIZE 0x02 | ||
182 | -#define FDBD_USE_BUFFERED_IO 0x04 | ||
183 | |||
184 | struct fd_dev { | ||
185 | u32 fbd_flags; | ||
186 | -- | ||
187 | 1.7.9.5 | ||
188 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0077-iommu-amd-Cache-pdev-pointer-to-root-bridge.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0077-iommu-amd-Cache-pdev-pointer-to-root-bridge.patch new file mode 100644 index 00000000..5d13500c --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0077-iommu-amd-Cache-pdev-pointer-to-root-bridge.patch | |||
@@ -0,0 +1,84 @@ | |||
1 | From 24791636a8052063d0f0ee3df30d8fce92e59398 Mon Sep 17 00:00:00 2001 | ||
2 | From: Joerg Roedel <joerg.roedel@amd.com> | ||
3 | Date: Thu, 31 May 2012 17:38:11 +0200 | ||
4 | Subject: [PATCH 77/86] iommu/amd: Cache pdev pointer to root-bridge | ||
5 | |||
6 | commit c1bf94ec1e12d76838ad485158aecf208ebd8fb9 upstream. | ||
7 | |||
8 | At some point pci_get_bus_and_slot started to enable | ||
9 | interrupts. Since this function is used in the | ||
10 | amd_iommu_resume path it will enable interrupts on resume | ||
11 | which causes a warning. The fix will use a cached pointer | ||
12 | to the root-bridge to re-enable the IOMMU in case the BIOS | ||
13 | is broken. | ||
14 | |||
15 | Signed-off-by: Joerg Roedel <joerg.roedel@amd.com> | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | drivers/iommu/amd_iommu_init.c | 13 +++++-------- | ||
19 | drivers/iommu/amd_iommu_types.h | 3 +++ | ||
20 | 2 files changed, 8 insertions(+), 8 deletions(-) | ||
21 | |||
22 | diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c | ||
23 | index 20d5852..6269eb0 100644 | ||
24 | --- a/drivers/iommu/amd_iommu_init.c | ||
25 | +++ b/drivers/iommu/amd_iommu_init.c | ||
26 | @@ -943,6 +943,9 @@ static int __init init_iommu_one(struct amd_iommu *iommu, struct ivhd_header *h) | ||
27 | if (!iommu->dev) | ||
28 | return 1; | ||
29 | |||
30 | + iommu->root_pdev = pci_get_bus_and_slot(iommu->dev->bus->number, | ||
31 | + PCI_DEVFN(0, 0)); | ||
32 | + | ||
33 | iommu->cap_ptr = h->cap_ptr; | ||
34 | iommu->pci_seg = h->pci_seg; | ||
35 | iommu->mmio_phys = h->mmio_phys; | ||
36 | @@ -1225,20 +1228,16 @@ static void iommu_apply_resume_quirks(struct amd_iommu *iommu) | ||
37 | { | ||
38 | int i, j; | ||
39 | u32 ioc_feature_control; | ||
40 | - struct pci_dev *pdev = NULL; | ||
41 | + struct pci_dev *pdev = iommu->root_pdev; | ||
42 | |||
43 | /* RD890 BIOSes may not have completely reconfigured the iommu */ | ||
44 | - if (!is_rd890_iommu(iommu->dev)) | ||
45 | + if (!is_rd890_iommu(iommu->dev) || !pdev) | ||
46 | return; | ||
47 | |||
48 | /* | ||
49 | * First, we need to ensure that the iommu is enabled. This is | ||
50 | * controlled by a register in the northbridge | ||
51 | */ | ||
52 | - pdev = pci_get_bus_and_slot(iommu->dev->bus->number, PCI_DEVFN(0, 0)); | ||
53 | - | ||
54 | - if (!pdev) | ||
55 | - return; | ||
56 | |||
57 | /* Select Northbridge indirect register 0x75 and enable writing */ | ||
58 | pci_write_config_dword(pdev, 0x60, 0x75 | (1 << 7)); | ||
59 | @@ -1248,8 +1247,6 @@ static void iommu_apply_resume_quirks(struct amd_iommu *iommu) | ||
60 | if (!(ioc_feature_control & 0x1)) | ||
61 | pci_write_config_dword(pdev, 0x64, ioc_feature_control | 1); | ||
62 | |||
63 | - pci_dev_put(pdev); | ||
64 | - | ||
65 | /* Restore the iommu BAR */ | ||
66 | pci_write_config_dword(iommu->dev, iommu->cap_ptr + 4, | ||
67 | iommu->stored_addr_lo); | ||
68 | diff --git a/drivers/iommu/amd_iommu_types.h b/drivers/iommu/amd_iommu_types.h | ||
69 | index 5b9c507..40ab83b 100644 | ||
70 | --- a/drivers/iommu/amd_iommu_types.h | ||
71 | +++ b/drivers/iommu/amd_iommu_types.h | ||
72 | @@ -385,6 +385,9 @@ struct amd_iommu { | ||
73 | /* Pointer to PCI device of this IOMMU */ | ||
74 | struct pci_dev *dev; | ||
75 | |||
76 | + /* Cache pdev to root device for resume quirks */ | ||
77 | + struct pci_dev *root_pdev; | ||
78 | + | ||
79 | /* physical address of MMIO space */ | ||
80 | u64 mmio_phys; | ||
81 | /* virtual address of MMIO space */ | ||
82 | -- | ||
83 | 1.7.9.5 | ||
84 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0078-drm-radeon-kms-add-new-Palm-Sumo-PCI-ids.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0078-drm-radeon-kms-add-new-Palm-Sumo-PCI-ids.patch new file mode 100644 index 00000000..70ca675d --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0078-drm-radeon-kms-add-new-Palm-Sumo-PCI-ids.patch | |||
@@ -0,0 +1,38 @@ | |||
1 | From eec9a1ae19fea9a7eeab32de2371932e845f8486 Mon Sep 17 00:00:00 2001 | ||
2 | From: Alex Deucher <alexander.deucher@amd.com> | ||
3 | Date: Tue, 5 Jun 2012 09:50:29 -0400 | ||
4 | Subject: [PATCH 78/86] drm/radeon/kms: add new Palm, Sumo PCI ids | ||
5 | |||
6 | commit 4a6991cc1fad514745b79181df3ace72d561e7aa upstream. | ||
7 | |||
8 | Signed-off-by: Alex Deucher <alexander.deucher@amd.com> | ||
9 | Signed-off-by: Dave Airlie <airlied@redhat.com> | ||
10 | [bwh: Backported to 3.2: adjust context] | ||
11 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
12 | --- | ||
13 | include/drm/drm_pciids.h | 2 ++ | ||
14 | 1 file changed, 2 insertions(+) | ||
15 | |||
16 | diff --git a/include/drm/drm_pciids.h b/include/drm/drm_pciids.h | ||
17 | index 14b6cd0..78654ca 100644 | ||
18 | --- a/include/drm/drm_pciids.h | ||
19 | +++ b/include/drm/drm_pciids.h | ||
20 | @@ -493,6 +493,7 @@ | ||
21 | {0x1002, 0x9645, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO2|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ | ||
22 | {0x1002, 0x9647, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP},\ | ||
23 | {0x1002, 0x9648, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP},\ | ||
24 | + {0x1002, 0x9649, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP},\ | ||
25 | {0x1002, 0x964a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ | ||
26 | {0x1002, 0x964b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ | ||
27 | {0x1002, 0x964c, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ | ||
28 | @@ -512,6 +513,7 @@ | ||
29 | {0x1002, 0x9807, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PALM|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ | ||
30 | {0x1002, 0x9808, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PALM|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ | ||
31 | {0x1002, 0x9809, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PALM|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ | ||
32 | + {0x1002, 0x980A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PALM|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ | ||
33 | {0, 0, 0} | ||
34 | |||
35 | #define r128_PCI_IDS \ | ||
36 | -- | ||
37 | 1.7.9.5 | ||
38 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0079-drm-radeon-kms-add-new-BTC-PCI-ids.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0079-drm-radeon-kms-add-new-BTC-PCI-ids.patch new file mode 100644 index 00000000..024015e7 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0079-drm-radeon-kms-add-new-BTC-PCI-ids.patch | |||
@@ -0,0 +1,37 @@ | |||
1 | From 3ed59dee924ffa272751ccbb5d84c57cef96a779 Mon Sep 17 00:00:00 2001 | ||
2 | From: Alex Deucher <alexander.deucher@amd.com> | ||
3 | Date: Tue, 5 Jun 2012 09:50:30 -0400 | ||
4 | Subject: [PATCH 79/86] drm/radeon/kms: add new BTC PCI ids | ||
5 | |||
6 | commit a2bef8ce826dd1e787fd8ad9b6e0566ba59dab43 upstream. | ||
7 | |||
8 | Signed-off-by: Alex Deucher <alexander.deucher@amd.com> | ||
9 | Signed-off-by: Dave Airlie <airlied@redhat.com> | ||
10 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
11 | --- | ||
12 | include/drm/drm_pciids.h | 2 ++ | ||
13 | 1 file changed, 2 insertions(+) | ||
14 | |||
15 | diff --git a/include/drm/drm_pciids.h b/include/drm/drm_pciids.h | ||
16 | index 78654ca..def807c 100644 | ||
17 | --- a/include/drm/drm_pciids.h | ||
18 | +++ b/include/drm/drm_pciids.h | ||
19 | @@ -181,6 +181,7 @@ | ||
20 | {0x1002, 0x6747, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ | ||
21 | {0x1002, 0x6748, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ | ||
22 | {0x1002, 0x6749, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ | ||
23 | + {0x1002, 0x674A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ | ||
24 | {0x1002, 0x6750, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ | ||
25 | {0x1002, 0x6751, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ | ||
26 | {0x1002, 0x6758, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ | ||
27 | @@ -198,6 +199,7 @@ | ||
28 | {0x1002, 0x6767, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \ | ||
29 | {0x1002, 0x6768, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \ | ||
30 | {0x1002, 0x6770, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \ | ||
31 | + {0x1002, 0x6771, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \ | ||
32 | {0x1002, 0x6772, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \ | ||
33 | {0x1002, 0x6778, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \ | ||
34 | {0x1002, 0x6779, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \ | ||
35 | -- | ||
36 | 1.7.9.5 | ||
37 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0080-btree-fix-tree-corruption-in-btree_get_prev.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0080-btree-fix-tree-corruption-in-btree_get_prev.patch new file mode 100644 index 00000000..7314c7dd --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0080-btree-fix-tree-corruption-in-btree_get_prev.patch | |||
@@ -0,0 +1,56 @@ | |||
1 | From b209359cc7df5f400a4c1cd342bf19afc377961e Mon Sep 17 00:00:00 2001 | ||
2 | From: Roland Dreier <roland@purestorage.com> | ||
3 | Date: Thu, 7 Jun 2012 14:21:13 -0700 | ||
4 | Subject: [PATCH 80/86] btree: fix tree corruption in btree_get_prev() | ||
5 | |||
6 | commit cbf8ae32f66a9ceb8907ad9e16663c2a29e48990 upstream. | ||
7 | |||
8 | The memory the parameter __key points to is used as an iterator in | ||
9 | btree_get_prev(), so if we save off a bkey() pointer in retry_key and | ||
10 | then assign that to __key, we'll end up corrupting the btree internals | ||
11 | when we do eg | ||
12 | |||
13 | longcpy(__key, bkey(geo, node, i), geo->keylen); | ||
14 | |||
15 | to return the key value. What we should do instead is use longcpy() to | ||
16 | copy the key value that retry_key points to __key. | ||
17 | |||
18 | This can cause a btree to get corrupted by seemingly read-only | ||
19 | operations such as btree_for_each_safe. | ||
20 | |||
21 | [akpm@linux-foundation.org: avoid the double longcpy()] | ||
22 | Signed-off-by: Roland Dreier <roland@purestorage.com> | ||
23 | Acked-by: Joern Engel <joern@logfs.org> | ||
24 | Signed-off-by: Andrew Morton <akpm@linux-foundation.org> | ||
25 | Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> | ||
26 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
27 | --- | ||
28 | lib/btree.c | 4 ++-- | ||
29 | 1 file changed, 2 insertions(+), 2 deletions(-) | ||
30 | |||
31 | diff --git a/lib/btree.c b/lib/btree.c | ||
32 | index 2a34392..297124d 100644 | ||
33 | --- a/lib/btree.c | ||
34 | +++ b/lib/btree.c | ||
35 | @@ -319,8 +319,8 @@ void *btree_get_prev(struct btree_head *head, struct btree_geo *geo, | ||
36 | |||
37 | if (head->height == 0) | ||
38 | return NULL; | ||
39 | -retry: | ||
40 | longcpy(key, __key, geo->keylen); | ||
41 | +retry: | ||
42 | dec_key(geo, key); | ||
43 | |||
44 | node = head->node; | ||
45 | @@ -351,7 +351,7 @@ retry: | ||
46 | } | ||
47 | miss: | ||
48 | if (retry_key) { | ||
49 | - __key = retry_key; | ||
50 | + longcpy(key, retry_key, geo->keylen); | ||
51 | retry_key = NULL; | ||
52 | goto retry; | ||
53 | } | ||
54 | -- | ||
55 | 1.7.9.5 | ||
56 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0081-kbuild-install-kernel-page-flags.h.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0081-kbuild-install-kernel-page-flags.h.patch new file mode 100644 index 00000000..0c34a7d5 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0081-kbuild-install-kernel-page-flags.h.patch | |||
@@ -0,0 +1,62 @@ | |||
1 | From 5e25d4d8ce731b609f1be874fd76f66bc03de441 Mon Sep 17 00:00:00 2001 | ||
2 | From: Ulrich Drepper <drepper@akkadia.org> | ||
3 | Date: Tue, 29 May 2012 15:06:30 -0700 | ||
4 | Subject: [PATCH 81/86] kbuild: install kernel-page-flags.h | ||
5 | |||
6 | commit 9295b7a07c859a42346221b5839be0ae612333b0 upstream. | ||
7 | |||
8 | Programs using /proc/kpageflags need to know about the various flags. The | ||
9 | <linux/kernel-page-flags.h> provides them and the comments in the file | ||
10 | indicate that it is supposed to be used by user-level code. But the file | ||
11 | is not installed. | ||
12 | |||
13 | Install the headers and mark the unstable flags as out-of-bounds. The | ||
14 | page-type tool is also adjusted to not duplicate the definitions | ||
15 | |||
16 | Signed-off-by: Ulrich Drepper <drepper@gmail.com> | ||
17 | Acked-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> | ||
18 | Acked-by: Fengguang Wu <fengguang.wu@intel.com> | ||
19 | Signed-off-by: Andrew Morton <akpm@linux-foundation.org> | ||
20 | Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> | ||
21 | [bwh: Backported to 3.2: adjust context; drop change to missing tools/vm/] | ||
22 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
23 | --- | ||
24 | include/linux/Kbuild | 1 + | ||
25 | include/linux/kernel-page-flags.h | 4 ++++ | ||
26 | 2 files changed, 5 insertions(+) | ||
27 | |||
28 | diff --git a/include/linux/Kbuild b/include/linux/Kbuild | ||
29 | index 619b565..bd21ecd 100644 | ||
30 | --- a/include/linux/Kbuild | ||
31 | +++ b/include/linux/Kbuild | ||
32 | @@ -224,6 +224,7 @@ header-y += kd.h | ||
33 | header-y += kdev_t.h | ||
34 | header-y += kernel.h | ||
35 | header-y += kernelcapi.h | ||
36 | +header-y += kernel-page-flags.h | ||
37 | header-y += keyboard.h | ||
38 | header-y += keyctl.h | ||
39 | header-y += l2tp.h | ||
40 | diff --git a/include/linux/kernel-page-flags.h b/include/linux/kernel-page-flags.h | ||
41 | index bd92a89..096b05d 100644 | ||
42 | --- a/include/linux/kernel-page-flags.h | ||
43 | +++ b/include/linux/kernel-page-flags.h | ||
44 | @@ -31,6 +31,8 @@ | ||
45 | |||
46 | #define KPF_KSM 21 | ||
47 | |||
48 | +#ifdef __KERNEL__ | ||
49 | + | ||
50 | /* kernel hacking assistances | ||
51 | * WARNING: subject to change, never rely on them! | ||
52 | */ | ||
53 | @@ -43,4 +45,6 @@ | ||
54 | #define KPF_ARCH 38 | ||
55 | #define KPF_UNCACHED 39 | ||
56 | |||
57 | +#endif /* __KERNEL__ */ | ||
58 | + | ||
59 | #endif /* LINUX_KERNEL_PAGE_FLAGS_H */ | ||
60 | -- | ||
61 | 1.7.9.5 | ||
62 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0082-asix-allow-full-size-8021Q-frames-to-be-received.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0082-asix-allow-full-size-8021Q-frames-to-be-received.patch new file mode 100644 index 00000000..a55d8f9e --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0082-asix-allow-full-size-8021Q-frames-to-be-received.patch | |||
@@ -0,0 +1,49 @@ | |||
1 | From 7d6dc5bd5f0608f96ec3d12d9eaecf45b053ccb8 Mon Sep 17 00:00:00 2001 | ||
2 | From: Eric Dumazet <edumazet@google.com> | ||
3 | Date: Mon, 28 May 2012 22:31:41 +0000 | ||
4 | Subject: [PATCH 82/86] asix: allow full size 8021Q frames to be received | ||
5 | |||
6 | commit 9dae31009b1a00d926c6fe032d5a88099620adc3 upstream. | ||
7 | |||
8 | asix driver drops 8021Q full size frames because it doesn't take into | ||
9 | account VLAN header size. | ||
10 | |||
11 | Tested on AX88772 adapter. | ||
12 | |||
13 | Signed-off-by: Eric Dumazet <edumazet@google.com> | ||
14 | CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
15 | CC: Allan Chou <allan@asix.com.tw> | ||
16 | CC: Trond Wuellner <trond@chromium.org> | ||
17 | CC: Grant Grundler <grundler@chromium.org> | ||
18 | CC: Paul Stewart <pstew@chromium.org> | ||
19 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
20 | [bwh: Backported to 3.2: no offset used in asix_rx_fixup()] | ||
21 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
22 | --- | ||
23 | drivers/net/usb/asix.c | 3 ++- | ||
24 | 1 file changed, 2 insertions(+), 1 deletion(-) | ||
25 | |||
26 | diff --git a/drivers/net/usb/asix.c b/drivers/net/usb/asix.c | ||
27 | index a9abee8..fc147a5 100644 | ||
28 | --- a/drivers/net/usb/asix.c | ||
29 | +++ b/drivers/net/usb/asix.c | ||
30 | @@ -35,6 +35,7 @@ | ||
31 | #include <linux/crc32.h> | ||
32 | #include <linux/usb/usbnet.h> | ||
33 | #include <linux/slab.h> | ||
34 | +#include <linux/if_vlan.h> | ||
35 | |||
36 | #define DRIVER_VERSION "08-Nov-2011" | ||
37 | #define DRIVER_NAME "asix" | ||
38 | @@ -348,7 +349,7 @@ static int asix_rx_fixup(struct usbnet *dev, struct sk_buff *skb) | ||
39 | return 2; | ||
40 | } | ||
41 | |||
42 | - if (size > dev->net->mtu + ETH_HLEN) { | ||
43 | + if (size > dev->net->mtu + ETH_HLEN + VLAN_HLEN) { | ||
44 | netdev_err(dev->net, "asix_rx_fixup() Bad RX Length %d\n", | ||
45 | size); | ||
46 | return 0; | ||
47 | -- | ||
48 | 1.7.9.5 | ||
49 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0083-ext4-don-t-trash-state-flags-in-EXT4_IOC_SETFLAGS.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0083-ext4-don-t-trash-state-flags-in-EXT4_IOC_SETFLAGS.patch new file mode 100644 index 00000000..b306294d --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0083-ext4-don-t-trash-state-flags-in-EXT4_IOC_SETFLAGS.patch | |||
@@ -0,0 +1,54 @@ | |||
1 | From 2060683e126ab7d9bb0ed4a089f572d6f1563015 Mon Sep 17 00:00:00 2001 | ||
2 | From: Theodore Ts'o <tytso@mit.edu> | ||
3 | Date: Thu, 31 May 2012 23:46:01 -0400 | ||
4 | Subject: [PATCH 83/86] ext4: don't trash state flags in EXT4_IOC_SETFLAGS | ||
5 | |||
6 | commit 79906964a187c405db72a3abc60eb9b50d804fbc upstream. | ||
7 | |||
8 | In commit 353eb83c we removed i_state_flags with 64-bit longs, But | ||
9 | when handling the EXT4_IOC_SETFLAGS ioctl, we replace i_flags | ||
10 | directly, which trashes the state flags which are stored in the high | ||
11 | 32-bits of i_flags on 64-bit platforms. So use the the | ||
12 | ext4_{set,clear}_inode_flags() functions which use atomic bit | ||
13 | manipulation functions instead. | ||
14 | |||
15 | Reported-by: Tao Ma <boyu.mt@taobao.com> | ||
16 | Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> | ||
17 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
18 | --- | ||
19 | fs/ext4/ioctl.c | 12 +++++++++--- | ||
20 | 1 file changed, 9 insertions(+), 3 deletions(-) | ||
21 | |||
22 | diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c | ||
23 | index ab25f57..1b7bc39 100644 | ||
24 | --- a/fs/ext4/ioctl.c | ||
25 | +++ b/fs/ext4/ioctl.c | ||
26 | @@ -36,7 +36,7 @@ long ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) | ||
27 | handle_t *handle = NULL; | ||
28 | int err, migrate = 0; | ||
29 | struct ext4_iloc iloc; | ||
30 | - unsigned int oldflags; | ||
31 | + unsigned int oldflags, mask, i; | ||
32 | unsigned int jflag; | ||
33 | |||
34 | if (!inode_owner_or_capable(inode)) | ||
35 | @@ -113,8 +113,14 @@ long ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) | ||
36 | if (err) | ||
37 | goto flags_err; | ||
38 | |||
39 | - flags = flags & EXT4_FL_USER_MODIFIABLE; | ||
40 | - flags |= oldflags & ~EXT4_FL_USER_MODIFIABLE; | ||
41 | + for (i = 0, mask = 1; i < 32; i++, mask <<= 1) { | ||
42 | + if (!(mask & EXT4_FL_USER_MODIFIABLE)) | ||
43 | + continue; | ||
44 | + if (mask & flags) | ||
45 | + ext4_set_inode_flag(inode, i); | ||
46 | + else | ||
47 | + ext4_clear_inode_flag(inode, i); | ||
48 | + } | ||
49 | ei->i_flags = flags; | ||
50 | |||
51 | ext4_set_inode_flags(inode); | ||
52 | -- | ||
53 | 1.7.9.5 | ||
54 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0084-ext4-don-t-set-i_flags-in-EXT4_IOC_SETFLAGS.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0084-ext4-don-t-set-i_flags-in-EXT4_IOC_SETFLAGS.patch new file mode 100644 index 00000000..1529c65e --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0084-ext4-don-t-set-i_flags-in-EXT4_IOC_SETFLAGS.patch | |||
@@ -0,0 +1,34 @@ | |||
1 | From 829f95bac40b76e3eb7d26d5bab4a156d749ae33 Mon Sep 17 00:00:00 2001 | ||
2 | From: Tao Ma <boyu.mt@taobao.com> | ||
3 | Date: Thu, 7 Jun 2012 19:04:19 -0400 | ||
4 | Subject: [PATCH 84/86] ext4: don't set i_flags in EXT4_IOC_SETFLAGS | ||
5 | |||
6 | commit b22b1f178f6799278d3178d894f37facb2085765 upstream. | ||
7 | |||
8 | Commit 7990696 uses the ext4_{set,clear}_inode_flags() functions to | ||
9 | change the i_flags automatically but fails to remove the error setting | ||
10 | of i_flags. So we still have the problem of trashing state flags. | ||
11 | Fix this by removing the assignment. | ||
12 | |||
13 | Signed-off-by: Tao Ma <boyu.mt@taobao.com> | ||
14 | Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> | ||
15 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
16 | --- | ||
17 | fs/ext4/ioctl.c | 1 - | ||
18 | 1 file changed, 1 deletion(-) | ||
19 | |||
20 | diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c | ||
21 | index 1b7bc39..76a6e3b 100644 | ||
22 | --- a/fs/ext4/ioctl.c | ||
23 | +++ b/fs/ext4/ioctl.c | ||
24 | @@ -121,7 +121,6 @@ long ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) | ||
25 | else | ||
26 | ext4_clear_inode_flag(inode, i); | ||
27 | } | ||
28 | - ei->i_flags = flags; | ||
29 | |||
30 | ext4_set_inode_flags(inode); | ||
31 | inode->i_ctime = ext4_current_time(inode); | ||
32 | -- | ||
33 | 1.7.9.5 | ||
34 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0085-ext4-fix-the-free-blocks-calculation-for-ext3-file-s.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0085-ext4-fix-the-free-blocks-calculation-for-ext3-file-s.patch new file mode 100644 index 00000000..3d05f088 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0085-ext4-fix-the-free-blocks-calculation-for-ext3-file-s.patch | |||
@@ -0,0 +1,76 @@ | |||
1 | From f83716d6c669e13a5c79262a51a267a752559c5d Mon Sep 17 00:00:00 2001 | ||
2 | From: Theodore Ts'o <tytso@mit.edu> | ||
3 | Date: Thu, 7 Jun 2012 18:56:06 -0400 | ||
4 | Subject: [PATCH 85/86] ext4: fix the free blocks calculation for ext3 file | ||
5 | systems w/ uninit_bg | ||
6 | |||
7 | commit b0dd6b70f0fda17ae9762fbb72d98e40a4f66556 upstream. | ||
8 | |||
9 | Ext3 filesystems that are converted to use as many ext4 file system | ||
10 | features as possible will enable uninit_bg to speed up e2fsck times. | ||
11 | These file systems will have a native ext3 layout of inode tables and | ||
12 | block allocation bitmaps (as opposed to ext4's flex_bg layout). | ||
13 | Unfortunately, in these cases, when first allocating a block in an | ||
14 | uninitialized block group, ext4 would incorrectly calculate the number | ||
15 | of free blocks in that block group, and then errorneously report that | ||
16 | the file system was corrupt: | ||
17 | |||
18 | EXT4-fs error (device vdd): ext4_mb_generate_buddy:741: group 30, 32254 clusters in bitmap, 32258 in gd | ||
19 | |||
20 | This problem can be reproduced via: | ||
21 | |||
22 | mke2fs -q -t ext4 -O ^flex_bg /dev/vdd 5g | ||
23 | mount -t ext4 /dev/vdd /mnt | ||
24 | fallocate -l 4600m /mnt/test | ||
25 | |||
26 | The problem was caused by a bone headed mistake in the check to see if a | ||
27 | particular metadata block was part of the block group. | ||
28 | |||
29 | Many thanks to Kees Cook for finding and bisecting the buggy commit | ||
30 | which introduced this bug (commit fd034a84e1, present since v3.2). | ||
31 | |||
32 | Reported-by: Sander Eikelenboom <linux@eikelenboom.it> | ||
33 | Reported-by: Kees Cook <keescook@chromium.org> | ||
34 | Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> | ||
35 | Tested-by: Kees Cook <keescook@chromium.org> | ||
36 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
37 | --- | ||
38 | fs/ext4/balloc.c | 8 ++++---- | ||
39 | 1 file changed, 4 insertions(+), 4 deletions(-) | ||
40 | |||
41 | diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c | ||
42 | index 12ccacd..914bf9e 100644 | ||
43 | --- a/fs/ext4/balloc.c | ||
44 | +++ b/fs/ext4/balloc.c | ||
45 | @@ -88,8 +88,8 @@ unsigned ext4_num_overhead_clusters(struct super_block *sb, | ||
46 | * unusual file system layouts. | ||
47 | */ | ||
48 | if (ext4_block_in_group(sb, ext4_block_bitmap(sb, gdp), block_group)) { | ||
49 | - block_cluster = EXT4_B2C(sbi, (start - | ||
50 | - ext4_block_bitmap(sb, gdp))); | ||
51 | + block_cluster = EXT4_B2C(sbi, | ||
52 | + ext4_block_bitmap(sb, gdp) - start); | ||
53 | if (block_cluster < num_clusters) | ||
54 | block_cluster = -1; | ||
55 | else if (block_cluster == num_clusters) { | ||
56 | @@ -100,7 +100,7 @@ unsigned ext4_num_overhead_clusters(struct super_block *sb, | ||
57 | |||
58 | if (ext4_block_in_group(sb, ext4_inode_bitmap(sb, gdp), block_group)) { | ||
59 | inode_cluster = EXT4_B2C(sbi, | ||
60 | - start - ext4_inode_bitmap(sb, gdp)); | ||
61 | + ext4_inode_bitmap(sb, gdp) - start); | ||
62 | if (inode_cluster < num_clusters) | ||
63 | inode_cluster = -1; | ||
64 | else if (inode_cluster == num_clusters) { | ||
65 | @@ -112,7 +112,7 @@ unsigned ext4_num_overhead_clusters(struct super_block *sb, | ||
66 | itbl_blk = ext4_inode_table(sb, gdp); | ||
67 | for (i = 0; i < sbi->s_itb_per_group; i++) { | ||
68 | if (ext4_block_in_group(sb, itbl_blk + i, block_group)) { | ||
69 | - c = EXT4_B2C(sbi, start - itbl_blk + i); | ||
70 | + c = EXT4_B2C(sbi, itbl_blk + i - start); | ||
71 | if ((c < num_clusters) || (c == inode_cluster) || | ||
72 | (c == block_cluster) || (c == itbl_cluster)) | ||
73 | continue; | ||
74 | -- | ||
75 | 1.7.9.5 | ||
76 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0086-Linux-3.2.20.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0086-Linux-3.2.20.patch new file mode 100644 index 00000000..58597da2 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.20/0086-Linux-3.2.20.patch | |||
@@ -0,0 +1,24 @@ | |||
1 | From 12056d4d781913f38e7d7a05fbf7c1b48a1f7d4d Mon Sep 17 00:00:00 2001 | ||
2 | From: Ben Hutchings <ben@decadent.org.uk> | ||
3 | Date: Sun, 10 Jun 2012 14:42:13 +0100 | ||
4 | Subject: [PATCH 86/86] Linux 3.2.20 | ||
5 | |||
6 | --- | ||
7 | Makefile | 2 +- | ||
8 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
9 | |||
10 | diff --git a/Makefile b/Makefile | ||
11 | index c291184..c7e9cc4 100644 | ||
12 | --- a/Makefile | ||
13 | +++ b/Makefile | ||
14 | @@ -1,6 +1,6 @@ | ||
15 | VERSION = 3 | ||
16 | PATCHLEVEL = 2 | ||
17 | -SUBLEVEL = 19 | ||
18 | +SUBLEVEL = 20 | ||
19 | EXTRAVERSION = | ||
20 | NAME = Saber-toothed Squirrel | ||
21 | |||
22 | -- | ||
23 | 1.7.9.5 | ||
24 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0001-drm-i915-Mark-the-ringbuffers-as-being-in-the-GTT-do.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0001-drm-i915-Mark-the-ringbuffers-as-being-in-the-GTT-do.patch new file mode 100644 index 00000000..f55f3ea4 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0001-drm-i915-Mark-the-ringbuffers-as-being-in-the-GTT-do.patch | |||
@@ -0,0 +1,44 @@ | |||
1 | From 70a948c214a99cc13d1258bee77c13ca8a430c3d Mon Sep 17 00:00:00 2001 | ||
2 | From: Chris Wilson <chris@chris-wilson.co.uk> | ||
3 | Date: Mon, 4 Jun 2012 17:05:40 +0100 | ||
4 | Subject: [PATCH 01/67] drm/i915: Mark the ringbuffers as being in the GTT | ||
5 | domain | ||
6 | |||
7 | commit 3eef8918ff440837f6af791942d8dd07e1a268ee upstream. | ||
8 | |||
9 | By correctly describing the rinbuffers as being in the GTT domain, it | ||
10 | appears that we are more careful with the management of the CPU cache | ||
11 | upon resume and so prevent some coherency issue when submitting commands | ||
12 | to the GPU later. A secondary effect is that the debug logs are then | ||
13 | consistent with the actual usage (i.e. they no longer describe the | ||
14 | ringbuffers as being in the CPU write domain when we are accessing them | ||
15 | through an wc iomapping.) | ||
16 | |||
17 | Reported-and-tested-by: Daniel Gnoutcheff <daniel@gnoutcheff.name> | ||
18 | Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=41092 | ||
19 | Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> | ||
20 | Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> | ||
21 | [bwh: Backported to 3.2: adjust context] | ||
22 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
23 | --- | ||
24 | drivers/gpu/drm/i915/intel_ringbuffer.c | 4 ++++ | ||
25 | 1 file changed, 4 insertions(+) | ||
26 | |||
27 | diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c | ||
28 | index 62f9ac5..83da6e5 100644 | ||
29 | --- a/drivers/gpu/drm/i915/intel_ringbuffer.c | ||
30 | +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c | ||
31 | @@ -1045,6 +1045,10 @@ int intel_init_ring_buffer(struct drm_device *dev, | ||
32 | if (ret) | ||
33 | goto err_unref; | ||
34 | |||
35 | + ret = i915_gem_object_set_to_gtt_domain(obj, true); | ||
36 | + if (ret) | ||
37 | + goto err_unpin; | ||
38 | + | ||
39 | ring->map.size = ring->size; | ||
40 | ring->map.offset = dev->agp->base + obj->gtt_offset; | ||
41 | ring->map.type = 0; | ||
42 | -- | ||
43 | 1.7.9.5 | ||
44 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0002-drm-i915-hold-forcewake-around-ring-hw-init.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0002-drm-i915-hold-forcewake-around-ring-hw-init.patch new file mode 100644 index 00000000..14782bd5 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0002-drm-i915-hold-forcewake-around-ring-hw-init.patch | |||
@@ -0,0 +1,158 @@ | |||
1 | From 56894d493cca01018bd2f3222a8a20b87abc1edd Mon Sep 17 00:00:00 2001 | ||
2 | From: Daniel Vetter <daniel.vetter@ffwll.ch> | ||
3 | Date: Mon, 4 Jun 2012 11:18:15 +0200 | ||
4 | Subject: [PATCH 02/67] drm/i915: hold forcewake around ring hw init | ||
5 | |||
6 | commit b7884eb45ec98c0d34c7f49005ae9d4b4b4e38f6 upstream. | ||
7 | |||
8 | Empirical evidence suggests that we need to: On at least one ivb | ||
9 | machine when running the hangman i-g-t test, the rings don't properly | ||
10 | initialize properly - the RING_START registers seems to be stuck at | ||
11 | all zeros. | ||
12 | |||
13 | Holding forcewake around this register init sequences makes chip reset | ||
14 | reliable again. Note that this is not the first such issue: | ||
15 | |||
16 | commit f01db988ef6f6c70a6cc36ee71e4a98a68901229 | ||
17 | Author: Sean Paul <seanpaul@chromium.org> | ||
18 | Date: Fri Mar 16 12:43:22 2012 -0400 | ||
19 | |||
20 | drm/i915: Add wait_for in init_ring_common | ||
21 | |||
22 | added delay loops to make RING_START and RING_CTL initialization | ||
23 | reliable on the blt ring at boot-up. So I guess it won't hurt if we do | ||
24 | this unconditionally for all force_wake needing gpus. | ||
25 | |||
26 | To avoid copy&pasting of the HAS_FORCE_WAKE check I've added a new | ||
27 | intel_info bit for that. | ||
28 | |||
29 | v2: Fixup missing commas in static struct and properly handling the | ||
30 | error case in init_ring_common, both noticed by Jani Nikula. | ||
31 | |||
32 | Reported-and-tested-by: Yang Guang <guang.a.yang@intel.com> | ||
33 | Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com> | ||
34 | Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50522 | ||
35 | Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch> | ||
36 | [bwh: Backported to 3.2: | ||
37 | - drop changes to Haswell device information | ||
38 | - NEEDS_FORCE_WAKE didn't refer to Valley View anyway] | ||
39 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
40 | --- | ||
41 | drivers/gpu/drm/i915/i915_drv.c | 6 +++++- | ||
42 | drivers/gpu/drm/i915/i915_drv.h | 3 +++ | ||
43 | drivers/gpu/drm/i915/intel_ringbuffer.c | 16 +++++++++++++--- | ||
44 | 3 files changed, 21 insertions(+), 4 deletions(-) | ||
45 | |||
46 | diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c | ||
47 | index d0f8830..3a1bfd7 100644 | ||
48 | --- a/drivers/gpu/drm/i915/i915_drv.c | ||
49 | +++ b/drivers/gpu/drm/i915/i915_drv.c | ||
50 | @@ -214,6 +214,7 @@ static const struct intel_device_info intel_sandybridge_d_info = { | ||
51 | .need_gfx_hws = 1, .has_hotplug = 1, | ||
52 | .has_bsd_ring = 1, | ||
53 | .has_blt_ring = 1, | ||
54 | + .has_force_wake = 1, | ||
55 | }; | ||
56 | |||
57 | static const struct intel_device_info intel_sandybridge_m_info = { | ||
58 | @@ -222,6 +223,7 @@ static const struct intel_device_info intel_sandybridge_m_info = { | ||
59 | .has_fbc = 1, | ||
60 | .has_bsd_ring = 1, | ||
61 | .has_blt_ring = 1, | ||
62 | + .has_force_wake = 1, | ||
63 | }; | ||
64 | |||
65 | static const struct intel_device_info intel_ivybridge_d_info = { | ||
66 | @@ -229,6 +231,7 @@ static const struct intel_device_info intel_ivybridge_d_info = { | ||
67 | .need_gfx_hws = 1, .has_hotplug = 1, | ||
68 | .has_bsd_ring = 1, | ||
69 | .has_blt_ring = 1, | ||
70 | + .has_force_wake = 1, | ||
71 | }; | ||
72 | |||
73 | static const struct intel_device_info intel_ivybridge_m_info = { | ||
74 | @@ -237,6 +240,7 @@ static const struct intel_device_info intel_ivybridge_m_info = { | ||
75 | .has_fbc = 0, /* FBC is not enabled on Ivybridge mobile yet */ | ||
76 | .has_bsd_ring = 1, | ||
77 | .has_blt_ring = 1, | ||
78 | + .has_force_wake = 1, | ||
79 | }; | ||
80 | |||
81 | static const struct pci_device_id pciidlist[] = { /* aka */ | ||
82 | @@ -939,7 +943,7 @@ MODULE_LICENSE("GPL and additional rights"); | ||
83 | |||
84 | /* We give fast paths for the really cool registers */ | ||
85 | #define NEEDS_FORCE_WAKE(dev_priv, reg) \ | ||
86 | - (((dev_priv)->info->gen >= 6) && \ | ||
87 | + ((HAS_FORCE_WAKE((dev_priv)->dev)) && \ | ||
88 | ((reg) < 0x40000) && \ | ||
89 | ((reg) != FORCEWAKE) && \ | ||
90 | ((reg) != ECOBUS)) | ||
91 | diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h | ||
92 | index ae294a0..d62c731 100644 | ||
93 | --- a/drivers/gpu/drm/i915/i915_drv.h | ||
94 | +++ b/drivers/gpu/drm/i915/i915_drv.h | ||
95 | @@ -244,6 +244,7 @@ struct intel_device_info { | ||
96 | u8 is_broadwater:1; | ||
97 | u8 is_crestline:1; | ||
98 | u8 is_ivybridge:1; | ||
99 | + u8 has_force_wake:1; | ||
100 | u8 has_fbc:1; | ||
101 | u8 has_pipe_cxsr:1; | ||
102 | u8 has_hotplug:1; | ||
103 | @@ -1001,6 +1002,8 @@ struct drm_i915_file_private { | ||
104 | #define HAS_PCH_CPT(dev) (INTEL_PCH_TYPE(dev) == PCH_CPT) | ||
105 | #define HAS_PCH_IBX(dev) (INTEL_PCH_TYPE(dev) == PCH_IBX) | ||
106 | |||
107 | +#define HAS_FORCE_WAKE(dev) (INTEL_INFO(dev)->has_force_wake) | ||
108 | + | ||
109 | #include "i915_trace.h" | ||
110 | |||
111 | extern struct drm_ioctl_desc i915_ioctls[]; | ||
112 | diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c | ||
113 | index 83da6e5..933e66b 100644 | ||
114 | --- a/drivers/gpu/drm/i915/intel_ringbuffer.c | ||
115 | +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c | ||
116 | @@ -263,10 +263,15 @@ u32 intel_ring_get_active_head(struct intel_ring_buffer *ring) | ||
117 | |||
118 | static int init_ring_common(struct intel_ring_buffer *ring) | ||
119 | { | ||
120 | - drm_i915_private_t *dev_priv = ring->dev->dev_private; | ||
121 | + struct drm_device *dev = ring->dev; | ||
122 | + drm_i915_private_t *dev_priv = dev->dev_private; | ||
123 | struct drm_i915_gem_object *obj = ring->obj; | ||
124 | + int ret = 0; | ||
125 | u32 head; | ||
126 | |||
127 | + if (HAS_FORCE_WAKE(dev)) | ||
128 | + gen6_gt_force_wake_get(dev_priv); | ||
129 | + | ||
130 | /* Stop the ring if it's running. */ | ||
131 | I915_WRITE_CTL(ring, 0); | ||
132 | I915_WRITE_HEAD(ring, 0); | ||
133 | @@ -314,7 +319,8 @@ static int init_ring_common(struct intel_ring_buffer *ring) | ||
134 | I915_READ_HEAD(ring), | ||
135 | I915_READ_TAIL(ring), | ||
136 | I915_READ_START(ring)); | ||
137 | - return -EIO; | ||
138 | + ret = -EIO; | ||
139 | + goto out; | ||
140 | } | ||
141 | |||
142 | if (!drm_core_check_feature(ring->dev, DRIVER_MODESET)) | ||
143 | @@ -325,7 +331,11 @@ static int init_ring_common(struct intel_ring_buffer *ring) | ||
144 | ring->space = ring_space(ring); | ||
145 | } | ||
146 | |||
147 | - return 0; | ||
148 | +out: | ||
149 | + if (HAS_FORCE_WAKE(dev)) | ||
150 | + gen6_gt_force_wake_put(dev_priv); | ||
151 | + | ||
152 | + return ret; | ||
153 | } | ||
154 | |||
155 | static int | ||
156 | -- | ||
157 | 1.7.9.5 | ||
158 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0003-drm-i915-Unpin-the-flip-target-if-we-fail-to-queue-t.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0003-drm-i915-Unpin-the-flip-target-if-we-fail-to-queue-t.patch new file mode 100644 index 00000000..95935261 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0003-drm-i915-Unpin-the-flip-target-if-we-fail-to-queue-t.patch | |||
@@ -0,0 +1,166 @@ | |||
1 | From d2d41b738ccb89bf3e5903fdf04bb43a712dd5d3 Mon Sep 17 00:00:00 2001 | ||
2 | From: Chris Wilson <chris@chris-wilson.co.uk> | ||
3 | Date: Tue, 17 Apr 2012 19:35:53 +0100 | ||
4 | Subject: [PATCH 03/67] drm/i915: Unpin the flip target if we fail to queue | ||
5 | the flip | ||
6 | |||
7 | commit 83d4092b0381e5dd6f312b2ec57121dcf0fcbade upstream. | ||
8 | |||
9 | Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> | ||
10 | Cc: Jesse Barnes <jbarnes@virtuousgeek.org> | ||
11 | Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> | ||
12 | [bwh: Backported to 3.2: | ||
13 | - adjust context | ||
14 | - we don't have intel_unpin_fb_obj(); use i915_gem_object_unpin()] | ||
15 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
16 | --- | ||
17 | drivers/gpu/drm/i915/intel_display.c | 50 ++++++++++++++++++++++++---------- | ||
18 | 1 file changed, 35 insertions(+), 15 deletions(-) | ||
19 | |||
20 | diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c | ||
21 | index 4720397..1f43ae5 100644 | ||
22 | --- a/drivers/gpu/drm/i915/intel_display.c | ||
23 | +++ b/drivers/gpu/drm/i915/intel_display.c | ||
24 | @@ -7009,14 +7009,14 @@ static int intel_gen2_queue_flip(struct drm_device *dev, | ||
25 | |||
26 | ret = intel_pin_and_fence_fb_obj(dev, obj, LP_RING(dev_priv)); | ||
27 | if (ret) | ||
28 | - goto out; | ||
29 | + goto err; | ||
30 | |||
31 | /* Offset into the new buffer for cases of shared fbs between CRTCs */ | ||
32 | offset = crtc->y * fb->pitch + crtc->x * fb->bits_per_pixel/8; | ||
33 | |||
34 | ret = BEGIN_LP_RING(6); | ||
35 | if (ret) | ||
36 | - goto out; | ||
37 | + goto err_unpin; | ||
38 | |||
39 | /* Can't queue multiple flips, so wait for the previous | ||
40 | * one to finish before executing the next. | ||
41 | @@ -7033,7 +7033,11 @@ static int intel_gen2_queue_flip(struct drm_device *dev, | ||
42 | OUT_RING(obj->gtt_offset + offset); | ||
43 | OUT_RING(MI_NOOP); | ||
44 | ADVANCE_LP_RING(); | ||
45 | -out: | ||
46 | + return 0; | ||
47 | + | ||
48 | +err_unpin: | ||
49 | + i915_gem_object_unpin(obj); | ||
50 | +err: | ||
51 | return ret; | ||
52 | } | ||
53 | |||
54 | @@ -7050,14 +7054,14 @@ static int intel_gen3_queue_flip(struct drm_device *dev, | ||
55 | |||
56 | ret = intel_pin_and_fence_fb_obj(dev, obj, LP_RING(dev_priv)); | ||
57 | if (ret) | ||
58 | - goto out; | ||
59 | + goto err; | ||
60 | |||
61 | /* Offset into the new buffer for cases of shared fbs between CRTCs */ | ||
62 | offset = crtc->y * fb->pitch + crtc->x * fb->bits_per_pixel/8; | ||
63 | |||
64 | ret = BEGIN_LP_RING(6); | ||
65 | if (ret) | ||
66 | - goto out; | ||
67 | + goto err_unpin; | ||
68 | |||
69 | if (intel_crtc->plane) | ||
70 | flip_mask = MI_WAIT_FOR_PLANE_B_FLIP; | ||
71 | @@ -7072,7 +7076,11 @@ static int intel_gen3_queue_flip(struct drm_device *dev, | ||
72 | OUT_RING(MI_NOOP); | ||
73 | |||
74 | ADVANCE_LP_RING(); | ||
75 | -out: | ||
76 | + return 0; | ||
77 | + | ||
78 | +err_unpin: | ||
79 | + i915_gem_object_unpin(obj); | ||
80 | +err: | ||
81 | return ret; | ||
82 | } | ||
83 | |||
84 | @@ -7088,11 +7096,11 @@ static int intel_gen4_queue_flip(struct drm_device *dev, | ||
85 | |||
86 | ret = intel_pin_and_fence_fb_obj(dev, obj, LP_RING(dev_priv)); | ||
87 | if (ret) | ||
88 | - goto out; | ||
89 | + goto err; | ||
90 | |||
91 | ret = BEGIN_LP_RING(4); | ||
92 | if (ret) | ||
93 | - goto out; | ||
94 | + goto err_unpin; | ||
95 | |||
96 | /* i965+ uses the linear or tiled offsets from the | ||
97 | * Display Registers (which do not change across a page-flip) | ||
98 | @@ -7111,7 +7119,11 @@ static int intel_gen4_queue_flip(struct drm_device *dev, | ||
99 | pipesrc = I915_READ(PIPESRC(intel_crtc->pipe)) & 0x0fff0fff; | ||
100 | OUT_RING(pf | pipesrc); | ||
101 | ADVANCE_LP_RING(); | ||
102 | -out: | ||
103 | + return 0; | ||
104 | + | ||
105 | +err_unpin: | ||
106 | + i915_gem_object_unpin(obj); | ||
107 | +err: | ||
108 | return ret; | ||
109 | } | ||
110 | |||
111 | @@ -7127,11 +7139,11 @@ static int intel_gen6_queue_flip(struct drm_device *dev, | ||
112 | |||
113 | ret = intel_pin_and_fence_fb_obj(dev, obj, LP_RING(dev_priv)); | ||
114 | if (ret) | ||
115 | - goto out; | ||
116 | + goto err; | ||
117 | |||
118 | ret = BEGIN_LP_RING(4); | ||
119 | if (ret) | ||
120 | - goto out; | ||
121 | + goto err_unpin; | ||
122 | |||
123 | OUT_RING(MI_DISPLAY_FLIP | | ||
124 | MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); | ||
125 | @@ -7142,7 +7154,11 @@ static int intel_gen6_queue_flip(struct drm_device *dev, | ||
126 | pipesrc = I915_READ(PIPESRC(intel_crtc->pipe)) & 0x0fff0fff; | ||
127 | OUT_RING(pf | pipesrc); | ||
128 | ADVANCE_LP_RING(); | ||
129 | -out: | ||
130 | + return 0; | ||
131 | + | ||
132 | +err_unpin: | ||
133 | + i915_gem_object_unpin(obj); | ||
134 | +err: | ||
135 | return ret; | ||
136 | } | ||
137 | |||
138 | @@ -7164,18 +7180,22 @@ static int intel_gen7_queue_flip(struct drm_device *dev, | ||
139 | |||
140 | ret = intel_pin_and_fence_fb_obj(dev, obj, ring); | ||
141 | if (ret) | ||
142 | - goto out; | ||
143 | + goto err; | ||
144 | |||
145 | ret = intel_ring_begin(ring, 4); | ||
146 | if (ret) | ||
147 | - goto out; | ||
148 | + goto err_unpin; | ||
149 | |||
150 | intel_ring_emit(ring, MI_DISPLAY_FLIP_I915 | (intel_crtc->plane << 19)); | ||
151 | intel_ring_emit(ring, (fb->pitch | obj->tiling_mode)); | ||
152 | intel_ring_emit(ring, (obj->gtt_offset)); | ||
153 | intel_ring_emit(ring, (MI_NOOP)); | ||
154 | intel_ring_advance(ring); | ||
155 | -out: | ||
156 | + return 0; | ||
157 | + | ||
158 | +err_unpin: | ||
159 | + i915_gem_object_unpin(obj); | ||
160 | +err: | ||
161 | return ret; | ||
162 | } | ||
163 | |||
164 | -- | ||
165 | 1.7.9.5 | ||
166 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0004-drm-i915-fix-up-ivb-plane-3-pageflips.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0004-drm-i915-fix-up-ivb-plane-3-pageflips.patch new file mode 100644 index 00000000..33031c77 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0004-drm-i915-fix-up-ivb-plane-3-pageflips.patch | |||
@@ -0,0 +1,93 @@ | |||
1 | From e76a063bd6b6038a0fd3ab502ae6f14ebc145944 Mon Sep 17 00:00:00 2001 | ||
2 | From: Daniel Vetter <daniel.vetter@ffwll.ch> | ||
3 | Date: Wed, 23 May 2012 14:02:00 +0200 | ||
4 | Subject: [PATCH 04/67] drm/i915: fix up ivb plane 3 pageflips | ||
5 | |||
6 | commit cb05d8dedefa3066bf5d74ef88c6ca6cf4bd1c87 upstream. | ||
7 | |||
8 | Or at least plug another gapping hole. Apparrently hw desingers only | ||
9 | moved the bit field, but did not bother ot re-enumerate the planes | ||
10 | when adding support for a 3rd pipe. | ||
11 | |||
12 | Discovered by i-g-t/flip_test. | ||
13 | |||
14 | This may or may not fix the reference bugzilla, because that one | ||
15 | smells like we have still larger fish to fry. | ||
16 | |||
17 | v2: Fixup the impossible case to catch programming errors, noticed by | ||
18 | Chris Wilson. | ||
19 | |||
20 | References: https://bugs.freedesktop.org/show_bug.cgi?id=50069 | ||
21 | Acked-by: Chris Wilson <chris@chris-wilson.co.uk> | ||
22 | Tested-by: Eugeni Dodonov <eugeni.dodonov@intel.com> | ||
23 | Eugeni Dodonov <eugeni.dodonov@intel.com> | ||
24 | Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch> | ||
25 | [bwh: Backported to 3.2: adjust context] | ||
26 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
27 | --- | ||
28 | drivers/gpu/drm/i915/i915_reg.h | 8 ++++++++ | ||
29 | drivers/gpu/drm/i915/intel_display.c | 19 ++++++++++++++++++- | ||
30 | 2 files changed, 26 insertions(+), 1 deletion(-) | ||
31 | |||
32 | diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h | ||
33 | index 06ec1e5..fd53122 100644 | ||
34 | --- a/drivers/gpu/drm/i915/i915_reg.h | ||
35 | +++ b/drivers/gpu/drm/i915/i915_reg.h | ||
36 | @@ -164,6 +164,14 @@ | ||
37 | #define MI_DISPLAY_FLIP MI_INSTR(0x14, 2) | ||
38 | #define MI_DISPLAY_FLIP_I915 MI_INSTR(0x14, 1) | ||
39 | #define MI_DISPLAY_FLIP_PLANE(n) ((n) << 20) | ||
40 | +/* IVB has funny definitions for which plane to flip. */ | ||
41 | +#define MI_DISPLAY_FLIP_IVB_PLANE_A (0 << 19) | ||
42 | +#define MI_DISPLAY_FLIP_IVB_PLANE_B (1 << 19) | ||
43 | +#define MI_DISPLAY_FLIP_IVB_SPRITE_A (2 << 19) | ||
44 | +#define MI_DISPLAY_FLIP_IVB_SPRITE_B (3 << 19) | ||
45 | +#define MI_DISPLAY_FLIP_IVB_PLANE_C (4 << 19) | ||
46 | +#define MI_DISPLAY_FLIP_IVB_SPRITE_C (5 << 19) | ||
47 | + | ||
48 | #define MI_SET_CONTEXT MI_INSTR(0x18, 0) | ||
49 | #define MI_MM_SPACE_GTT (1<<8) | ||
50 | #define MI_MM_SPACE_PHYSICAL (0<<8) | ||
51 | diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c | ||
52 | index 1f43ae5..5c1cdb8 100644 | ||
53 | --- a/drivers/gpu/drm/i915/intel_display.c | ||
54 | +++ b/drivers/gpu/drm/i915/intel_display.c | ||
55 | @@ -7176,17 +7176,34 @@ static int intel_gen7_queue_flip(struct drm_device *dev, | ||
56 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
57 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); | ||
58 | struct intel_ring_buffer *ring = &dev_priv->ring[BCS]; | ||
59 | + uint32_t plane_bit = 0; | ||
60 | int ret; | ||
61 | |||
62 | ret = intel_pin_and_fence_fb_obj(dev, obj, ring); | ||
63 | if (ret) | ||
64 | goto err; | ||
65 | |||
66 | + switch(intel_crtc->plane) { | ||
67 | + case PLANE_A: | ||
68 | + plane_bit = MI_DISPLAY_FLIP_IVB_PLANE_A; | ||
69 | + break; | ||
70 | + case PLANE_B: | ||
71 | + plane_bit = MI_DISPLAY_FLIP_IVB_PLANE_B; | ||
72 | + break; | ||
73 | + case PLANE_C: | ||
74 | + plane_bit = MI_DISPLAY_FLIP_IVB_PLANE_C; | ||
75 | + break; | ||
76 | + default: | ||
77 | + WARN_ONCE(1, "unknown plane in flip command\n"); | ||
78 | + ret = -ENODEV; | ||
79 | + goto err; | ||
80 | + } | ||
81 | + | ||
82 | ret = intel_ring_begin(ring, 4); | ||
83 | if (ret) | ||
84 | goto err_unpin; | ||
85 | |||
86 | - intel_ring_emit(ring, MI_DISPLAY_FLIP_I915 | (intel_crtc->plane << 19)); | ||
87 | + intel_ring_emit(ring, MI_DISPLAY_FLIP_I915 | plane_bit); | ||
88 | intel_ring_emit(ring, (fb->pitch | obj->tiling_mode)); | ||
89 | intel_ring_emit(ring, (obj->gtt_offset)); | ||
90 | intel_ring_emit(ring, (MI_NOOP)); | ||
91 | -- | ||
92 | 1.7.9.5 | ||
93 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0005-char-agp-add-another-Ironlake-host-bridge.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0005-char-agp-add-another-Ironlake-host-bridge.patch new file mode 100644 index 00000000..8b303d2e --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0005-char-agp-add-another-Ironlake-host-bridge.patch | |||
@@ -0,0 +1,46 @@ | |||
1 | From afd5d9b3973b65b15dd6c48f3f403c4809f71b66 Mon Sep 17 00:00:00 2001 | ||
2 | From: Eugeni Dodonov <eugeni.dodonov@intel.com> | ||
3 | Date: Wed, 6 Jun 2012 11:59:06 -0300 | ||
4 | Subject: [PATCH 05/67] char/agp: add another Ironlake host bridge | ||
5 | |||
6 | commit 67384fe3fd450536342330f684ea1f7dcaef8130 upstream. | ||
7 | |||
8 | This seems to come on Gigabyte H55M-S2V and was discovered through the | ||
9 | https://bugs.freedesktop.org/show_bug.cgi?id=50381 debugging. | ||
10 | |||
11 | Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50381 | ||
12 | Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com> | ||
13 | Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> | ||
14 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
15 | --- | ||
16 | drivers/char/agp/intel-agp.c | 1 + | ||
17 | drivers/char/agp/intel-agp.h | 1 + | ||
18 | 2 files changed, 2 insertions(+) | ||
19 | |||
20 | diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c | ||
21 | index b427711..58b49d1 100644 | ||
22 | --- a/drivers/char/agp/intel-agp.c | ||
23 | +++ b/drivers/char/agp/intel-agp.c | ||
24 | @@ -897,6 +897,7 @@ static struct pci_device_id agp_intel_pci_table[] = { | ||
25 | ID(PCI_DEVICE_ID_INTEL_B43_HB), | ||
26 | ID(PCI_DEVICE_ID_INTEL_B43_1_HB), | ||
27 | ID(PCI_DEVICE_ID_INTEL_IRONLAKE_D_HB), | ||
28 | + ID(PCI_DEVICE_ID_INTEL_IRONLAKE_D2_HB), | ||
29 | ID(PCI_DEVICE_ID_INTEL_IRONLAKE_M_HB), | ||
30 | ID(PCI_DEVICE_ID_INTEL_IRONLAKE_MA_HB), | ||
31 | ID(PCI_DEVICE_ID_INTEL_IRONLAKE_MC2_HB), | ||
32 | diff --git a/drivers/char/agp/intel-agp.h b/drivers/char/agp/intel-agp.h | ||
33 | index 5da67f1..6f24604 100644 | ||
34 | --- a/drivers/char/agp/intel-agp.h | ||
35 | +++ b/drivers/char/agp/intel-agp.h | ||
36 | @@ -211,6 +211,7 @@ | ||
37 | #define PCI_DEVICE_ID_INTEL_G41_HB 0x2E30 | ||
38 | #define PCI_DEVICE_ID_INTEL_G41_IG 0x2E32 | ||
39 | #define PCI_DEVICE_ID_INTEL_IRONLAKE_D_HB 0x0040 | ||
40 | +#define PCI_DEVICE_ID_INTEL_IRONLAKE_D2_HB 0x0069 | ||
41 | #define PCI_DEVICE_ID_INTEL_IRONLAKE_D_IG 0x0042 | ||
42 | #define PCI_DEVICE_ID_INTEL_IRONLAKE_M_HB 0x0044 | ||
43 | #define PCI_DEVICE_ID_INTEL_IRONLAKE_MA_HB 0x0062 | ||
44 | -- | ||
45 | 1.7.9.5 | ||
46 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0006-x86-uv-Fix-UV2-BAU-legacy-mode.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0006-x86-uv-Fix-UV2-BAU-legacy-mode.patch new file mode 100644 index 00000000..26dc10f8 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0006-x86-uv-Fix-UV2-BAU-legacy-mode.patch | |||
@@ -0,0 +1,53 @@ | |||
1 | From ccfbdd3321d88685a0c3a2f69838a7a4706e32ef Mon Sep 17 00:00:00 2001 | ||
2 | From: Cliff Wickman <cpw@sgi.com> | ||
3 | Date: Thu, 7 Jun 2012 08:31:40 -0500 | ||
4 | Subject: [PATCH 06/67] x86/uv: Fix UV2 BAU legacy mode | ||
5 | |||
6 | commit d5d2d2eea84b0d8450b082edbc3dbde41fb8bfd8 upstream. | ||
7 | |||
8 | The SGI Altix UV2 BAU (Broadcast Assist Unit) as used for | ||
9 | tlb-shootdown (selective broadcast mode) always uses UV2 | ||
10 | broadcast descriptor format. There is no need to clear the | ||
11 | 'legacy' (UV1) mode, because the hardware always uses UV2 mode | ||
12 | for selective broadcast. | ||
13 | |||
14 | But the BIOS uses general broadcast and legacy mode, and the | ||
15 | hardware pays attention to the legacy mode bit for general | ||
16 | broadcast. So the kernel must not clear that mode bit. | ||
17 | |||
18 | Signed-off-by: Cliff Wickman <cpw@sgi.com> | ||
19 | Link: http://lkml.kernel.org/r/E1SccoO-0002Lh-Cb@eag09.americas.sgi.com | ||
20 | Signed-off-by: Ingo Molnar <mingo@kernel.org> | ||
21 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
22 | --- | ||
23 | arch/x86/include/asm/uv/uv_bau.h | 1 - | ||
24 | arch/x86/platform/uv/tlb_uv.c | 1 - | ||
25 | 2 files changed, 2 deletions(-) | ||
26 | |||
27 | diff --git a/arch/x86/include/asm/uv/uv_bau.h b/arch/x86/include/asm/uv/uv_bau.h | ||
28 | index 1b82f7e..679229f 100644 | ||
29 | --- a/arch/x86/include/asm/uv/uv_bau.h | ||
30 | +++ b/arch/x86/include/asm/uv/uv_bau.h | ||
31 | @@ -149,7 +149,6 @@ | ||
32 | /* 4 bits of software ack period */ | ||
33 | #define UV2_ACK_MASK 0x7UL | ||
34 | #define UV2_ACK_UNITS_SHFT 3 | ||
35 | -#define UV2_LEG_SHFT UV2H_LB_BAU_MISC_CONTROL_USE_LEGACY_DESCRIPTOR_FORMATS_SHFT | ||
36 | #define UV2_EXT_SHFT UV2H_LB_BAU_MISC_CONTROL_ENABLE_EXTENDED_SB_STATUS_SHFT | ||
37 | |||
38 | /* | ||
39 | diff --git a/arch/x86/platform/uv/tlb_uv.c b/arch/x86/platform/uv/tlb_uv.c | ||
40 | index 81aee5a..29a69550 100644 | ||
41 | --- a/arch/x86/platform/uv/tlb_uv.c | ||
42 | +++ b/arch/x86/platform/uv/tlb_uv.c | ||
43 | @@ -1304,7 +1304,6 @@ static void __init enable_timeouts(void) | ||
44 | */ | ||
45 | mmr_image |= (1L << SOFTACK_MSHIFT); | ||
46 | if (is_uv2_hub()) { | ||
47 | - mmr_image &= ~(1L << UV2_LEG_SHFT); | ||
48 | mmr_image |= (1L << UV2_EXT_SHFT); | ||
49 | } | ||
50 | write_mmr_misc_control(pnode, mmr_image); | ||
51 | -- | ||
52 | 1.7.9.5 | ||
53 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0007-powerpc-Fix-kernel-panic-during-kernel-module-load.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0007-powerpc-Fix-kernel-panic-during-kernel-module-load.patch new file mode 100644 index 00000000..3076ce9b --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0007-powerpc-Fix-kernel-panic-during-kernel-module-load.patch | |||
@@ -0,0 +1,70 @@ | |||
1 | From 5c6f8c50fe40cec7015a6bfa9762bf76d52211d6 Mon Sep 17 00:00:00 2001 | ||
2 | From: Steffen Rumler <steffen.rumler.ext@nsn.com> | ||
3 | Date: Wed, 6 Jun 2012 16:37:17 +0200 | ||
4 | Subject: [PATCH 07/67] powerpc: Fix kernel panic during kernel module load | ||
5 | |||
6 | commit 3c75296562f43e6fbc6cddd3de948a7b3e4e9bcf upstream. | ||
7 | |||
8 | This fixes a problem which can causes kernel oopses while loading | ||
9 | a kernel module. | ||
10 | |||
11 | According to the PowerPC EABI specification, GPR r11 is assigned | ||
12 | the dedicated function to point to the previous stack frame. | ||
13 | In the powerpc-specific kernel module loader, do_plt_call() | ||
14 | (in arch/powerpc/kernel/module_32.c), GPR r11 is also used | ||
15 | to generate trampoline code. | ||
16 | |||
17 | This combination crashes the kernel, in the case where the compiler | ||
18 | chooses to use a helper function for saving GPRs on entry, and the | ||
19 | module loader has placed the .init.text section far away from the | ||
20 | .text section, meaning that it has to generate a trampoline for | ||
21 | functions in the .init.text section to call the GPR save helper. | ||
22 | Because the trampoline trashes r11, references to the stack frame | ||
23 | using r11 can cause an oops. | ||
24 | |||
25 | The fix just uses GPR r12 instead of GPR r11 for generating the | ||
26 | trampoline code. According to the statements from Freescale, this is | ||
27 | safe from an EABI perspective. | ||
28 | |||
29 | I've tested the fix for kernel 2.6.33 on MPC8541. | ||
30 | |||
31 | Signed-off-by: Steffen Rumler <steffen.rumler.ext@nsn.com> | ||
32 | [paulus@samba.org: reworded the description] | ||
33 | Signed-off-by: Paul Mackerras <paulus@samba.org> | ||
34 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
35 | --- | ||
36 | arch/powerpc/kernel/module_32.c | 11 +++++------ | ||
37 | 1 file changed, 5 insertions(+), 6 deletions(-) | ||
38 | |||
39 | diff --git a/arch/powerpc/kernel/module_32.c b/arch/powerpc/kernel/module_32.c | ||
40 | index 0b6d796..2e3200c 100644 | ||
41 | --- a/arch/powerpc/kernel/module_32.c | ||
42 | +++ b/arch/powerpc/kernel/module_32.c | ||
43 | @@ -176,8 +176,8 @@ int module_frob_arch_sections(Elf32_Ehdr *hdr, | ||
44 | |||
45 | static inline int entry_matches(struct ppc_plt_entry *entry, Elf32_Addr val) | ||
46 | { | ||
47 | - if (entry->jump[0] == 0x3d600000 + ((val + 0x8000) >> 16) | ||
48 | - && entry->jump[1] == 0x396b0000 + (val & 0xffff)) | ||
49 | + if (entry->jump[0] == 0x3d800000 + ((val + 0x8000) >> 16) | ||
50 | + && entry->jump[1] == 0x398c0000 + (val & 0xffff)) | ||
51 | return 1; | ||
52 | return 0; | ||
53 | } | ||
54 | @@ -204,10 +204,9 @@ static uint32_t do_plt_call(void *location, | ||
55 | entry++; | ||
56 | } | ||
57 | |||
58 | - /* Stolen from Paul Mackerras as well... */ | ||
59 | - entry->jump[0] = 0x3d600000+((val+0x8000)>>16); /* lis r11,sym@ha */ | ||
60 | - entry->jump[1] = 0x396b0000 + (val&0xffff); /* addi r11,r11,sym@l*/ | ||
61 | - entry->jump[2] = 0x7d6903a6; /* mtctr r11 */ | ||
62 | + entry->jump[0] = 0x3d800000+((val+0x8000)>>16); /* lis r12,sym@ha */ | ||
63 | + entry->jump[1] = 0x398c0000 + (val&0xffff); /* addi r12,r12,sym@l*/ | ||
64 | + entry->jump[2] = 0x7d8903a6; /* mtctr r12 */ | ||
65 | entry->jump[3] = 0x4e800420; /* bctr */ | ||
66 | |||
67 | DEBUGP("Initialized plt for 0x%x at %p\n", val, entry); | ||
68 | -- | ||
69 | 1.7.9.5 | ||
70 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0008-drm-nouveau-determine-a-value-for-display_info.bpc-i.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0008-drm-nouveau-determine-a-value-for-display_info.bpc-i.patch new file mode 100644 index 00000000..4b3559b7 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0008-drm-nouveau-determine-a-value-for-display_info.bpc-i.patch | |||
@@ -0,0 +1,81 @@ | |||
1 | From ac9d749e3f0fcf7e8ce73cf00cf3a7d91debdc89 Mon Sep 17 00:00:00 2001 | ||
2 | From: Ben Skeggs <bskeggs@redhat.com> | ||
3 | Date: Mon, 17 Oct 2011 10:24:49 +1000 | ||
4 | Subject: [PATCH 08/67] drm/nouveau: determine a value for display_info.bpc if | ||
5 | edid doesn't | ||
6 | |||
7 | commit 6322175530c89ab719cea28202f96a3660491727 upstream. | ||
8 | |||
9 | Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | ||
10 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
11 | --- | ||
12 | drivers/gpu/drm/nouveau/nouveau_connector.c | 46 +++++++++++++++++++++++++++ | ||
13 | 1 file changed, 46 insertions(+) | ||
14 | |||
15 | diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c | ||
16 | index cea6696..e2c50d8 100644 | ||
17 | --- a/drivers/gpu/drm/nouveau/nouveau_connector.c | ||
18 | +++ b/drivers/gpu/drm/nouveau/nouveau_connector.c | ||
19 | @@ -602,6 +602,46 @@ nouveau_connector_scaler_modes_add(struct drm_connector *connector) | ||
20 | return modes; | ||
21 | } | ||
22 | |||
23 | +static void | ||
24 | +nouveau_connector_detect_depth(struct drm_connector *connector) | ||
25 | +{ | ||
26 | + struct drm_nouveau_private *dev_priv = connector->dev->dev_private; | ||
27 | + struct nouveau_connector *nv_connector = nouveau_connector(connector); | ||
28 | + struct nouveau_encoder *nv_encoder = nv_connector->detected_encoder; | ||
29 | + struct nvbios *bios = &dev_priv->vbios; | ||
30 | + struct drm_display_mode *mode = nv_connector->native_mode; | ||
31 | + bool duallink; | ||
32 | + | ||
33 | + /* if the edid is feeling nice enough to provide this info, use it */ | ||
34 | + if (nv_connector->edid && connector->display_info.bpc) | ||
35 | + return; | ||
36 | + | ||
37 | + /* if not, we're out of options unless we're LVDS, default to 6bpc */ | ||
38 | + connector->display_info.bpc = 6; | ||
39 | + if (nv_encoder->dcb->type != OUTPUT_LVDS) | ||
40 | + return; | ||
41 | + | ||
42 | + /* LVDS: panel straps */ | ||
43 | + if (bios->fp_no_ddc) { | ||
44 | + if (bios->fp.if_is_24bit) | ||
45 | + connector->display_info.bpc = 8; | ||
46 | + return; | ||
47 | + } | ||
48 | + | ||
49 | + /* LVDS: DDC panel, need to first determine the number of links to | ||
50 | + * know which if_is_24bit flag to check... | ||
51 | + */ | ||
52 | + if (nv_connector->edid && | ||
53 | + nv_connector->dcb->type == DCB_CONNECTOR_LVDS_SPWG) | ||
54 | + duallink = ((u8 *)nv_connector->edid)[121] == 2; | ||
55 | + else | ||
56 | + duallink = mode->clock >= bios->fp.duallink_transition_clk; | ||
57 | + | ||
58 | + if ((!duallink && (bios->fp.strapless_is_24bit & 1)) || | ||
59 | + ( duallink && (bios->fp.strapless_is_24bit & 2))) | ||
60 | + connector->display_info.bpc = 8; | ||
61 | +} | ||
62 | + | ||
63 | static int | ||
64 | nouveau_connector_get_modes(struct drm_connector *connector) | ||
65 | { | ||
66 | @@ -646,6 +686,12 @@ nouveau_connector_get_modes(struct drm_connector *connector) | ||
67 | ret = 1; | ||
68 | } | ||
69 | |||
70 | + /* Attempt to determine display colour depth, this has to happen after | ||
71 | + * we've determined the "native" mode for LVDS, as the VBIOS tables | ||
72 | + * require us to compare against a pixel clock in some cases.. | ||
73 | + */ | ||
74 | + nouveau_connector_detect_depth(connector); | ||
75 | + | ||
76 | if (nv_encoder->dcb->type == OUTPUT_TV) | ||
77 | ret = get_slave_funcs(encoder)->get_modes(encoder, connector); | ||
78 | |||
79 | -- | ||
80 | 1.7.9.5 | ||
81 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0009-drm-nouveau-default-to-8bpc-for-non-LVDS-panels-if-E.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0009-drm-nouveau-default-to-8bpc-for-non-LVDS-panels-if-E.patch new file mode 100644 index 00000000..eeb07d11 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0009-drm-nouveau-default-to-8bpc-for-non-LVDS-panels-if-E.patch | |||
@@ -0,0 +1,42 @@ | |||
1 | From 672b73575b5fb47166e255cc9a374b858d5f59da Mon Sep 17 00:00:00 2001 | ||
2 | From: Ben Skeggs <bskeggs@redhat.com> | ||
3 | Date: Sat, 24 Mar 2012 16:26:13 +1000 | ||
4 | Subject: [PATCH 09/67] drm/nouveau: default to 8bpc for non-LVDS panels if | ||
5 | EDID isn't useful | ||
6 | |||
7 | commit c8435362f2211086b34ce871fa9c3fcc7ca79ff9 upstream. | ||
8 | |||
9 | A few reports of bad behaviour since the autodetection defaulted to 6bpc, | ||
10 | lets fix this. | ||
11 | |||
12 | Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | ||
13 | Signed-off-by: Dave Airlie <airlied@redhat.com> | ||
14 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
15 | --- | ||
16 | drivers/gpu/drm/nouveau/nouveau_connector.c | 9 ++++++--- | ||
17 | 1 file changed, 6 insertions(+), 3 deletions(-) | ||
18 | |||
19 | diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c | ||
20 | index e2c50d8..eeaa8ca 100644 | ||
21 | --- a/drivers/gpu/drm/nouveau/nouveau_connector.c | ||
22 | +++ b/drivers/gpu/drm/nouveau/nouveau_connector.c | ||
23 | @@ -616,10 +616,13 @@ nouveau_connector_detect_depth(struct drm_connector *connector) | ||
24 | if (nv_connector->edid && connector->display_info.bpc) | ||
25 | return; | ||
26 | |||
27 | - /* if not, we're out of options unless we're LVDS, default to 6bpc */ | ||
28 | - connector->display_info.bpc = 6; | ||
29 | - if (nv_encoder->dcb->type != OUTPUT_LVDS) | ||
30 | + /* if not, we're out of options unless we're LVDS, default to 8bpc */ | ||
31 | + if (nv_encoder->dcb->type != OUTPUT_LVDS) { | ||
32 | + connector->display_info.bpc = 8; | ||
33 | return; | ||
34 | + } | ||
35 | + | ||
36 | + connector->display_info.bpc = 6; | ||
37 | |||
38 | /* LVDS: panel straps */ | ||
39 | if (bios->fp_no_ddc) { | ||
40 | -- | ||
41 | 1.7.9.5 | ||
42 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0010-drm-nouveau-disp-fix-dithering-not-being-enabled-on-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0010-drm-nouveau-disp-fix-dithering-not-being-enabled-on-.patch new file mode 100644 index 00000000..f9a20411 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0010-drm-nouveau-disp-fix-dithering-not-being-enabled-on-.patch | |||
@@ -0,0 +1,38 @@ | |||
1 | From 1c16b668a8c284025dc8c639a1b760eccaed3864 Mon Sep 17 00:00:00 2001 | ||
2 | From: Ben Skeggs <bskeggs@redhat.com> | ||
3 | Date: Sat, 5 May 2012 00:39:21 +1000 | ||
4 | Subject: [PATCH 10/67] drm/nouveau/disp: fix dithering not being enabled on | ||
5 | some eDP macbooks | ||
6 | |||
7 | commit a6a17859f1bdf607650ee055101f54c5f207762b upstream. | ||
8 | |||
9 | Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | ||
10 | [Maarten Lankhorst backported to 3.2, | ||
11 | changing nv_connector->type to nv_connector->dcb->type] | ||
12 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
13 | --- | ||
14 | drivers/gpu/drm/nouveau/nouveau_connector.c | 8 +++++++- | ||
15 | 1 file changed, 7 insertions(+), 1 deletion(-) | ||
16 | |||
17 | diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c | ||
18 | index eeaa8ca..1e72db5 100644 | ||
19 | --- a/drivers/gpu/drm/nouveau/nouveau_connector.c | ||
20 | +++ b/drivers/gpu/drm/nouveau/nouveau_connector.c | ||
21 | @@ -616,7 +616,13 @@ nouveau_connector_detect_depth(struct drm_connector *connector) | ||
22 | if (nv_connector->edid && connector->display_info.bpc) | ||
23 | return; | ||
24 | |||
25 | - /* if not, we're out of options unless we're LVDS, default to 8bpc */ | ||
26 | + /* EDID 1.4 is *supposed* to be supported on eDP, but, Apple... */ | ||
27 | + if (nv_connector->dcb->type == DCB_CONNECTOR_eDP) { | ||
28 | + connector->display_info.bpc = 6; | ||
29 | + return; | ||
30 | + } | ||
31 | + | ||
32 | + /* we're out of options unless we're LVDS, default to 8bpc */ | ||
33 | if (nv_encoder->dcb->type != OUTPUT_LVDS) { | ||
34 | connector->display_info.bpc = 8; | ||
35 | return; | ||
36 | -- | ||
37 | 1.7.9.5 | ||
38 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0011-fuse-fix-stat-call-on-32-bit-platforms.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0011-fuse-fix-stat-call-on-32-bit-platforms.patch new file mode 100644 index 00000000..041098ac --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0011-fuse-fix-stat-call-on-32-bit-platforms.patch | |||
@@ -0,0 +1,103 @@ | |||
1 | From 16bebb9a3715d7d06a3bcc4b4ec1c1209251d494 Mon Sep 17 00:00:00 2001 | ||
2 | From: Pavel Shilovsky <piastry@etersoft.ru> | ||
3 | Date: Thu, 10 May 2012 19:49:38 +0400 | ||
4 | Subject: [PATCH 11/67] fuse: fix stat call on 32 bit platforms | ||
5 | |||
6 | commit 45c72cd73c788dd18c8113d4a404d6b4a01decf1 upstream. | ||
7 | |||
8 | Now we store attr->ino at inode->i_ino, return attr->ino at the | ||
9 | first time and then return inode->i_ino if the attribute timeout | ||
10 | isn't expired. That's wrong on 32 bit platforms because attr->ino | ||
11 | is 64 bit and inode->i_ino is 32 bit in this case. | ||
12 | |||
13 | Fix this by saving 64 bit ino in fuse_inode structure and returning | ||
14 | it every time we call getattr. Also squash attr->ino into inode->i_ino | ||
15 | explicitly. | ||
16 | |||
17 | Signed-off-by: Pavel Shilovsky <piastry@etersoft.ru> | ||
18 | Signed-off-by: Miklos Szeredi <mszeredi@suse.cz> | ||
19 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
20 | --- | ||
21 | fs/fuse/dir.c | 1 + | ||
22 | fs/fuse/fuse_i.h | 3 +++ | ||
23 | fs/fuse/inode.c | 17 ++++++++++++++++- | ||
24 | 3 files changed, 20 insertions(+), 1 deletion(-) | ||
25 | |||
26 | diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c | ||
27 | index 9f63e49..5ef7afb 100644 | ||
28 | --- a/fs/fuse/dir.c | ||
29 | +++ b/fs/fuse/dir.c | ||
30 | @@ -858,6 +858,7 @@ int fuse_update_attributes(struct inode *inode, struct kstat *stat, | ||
31 | if (stat) { | ||
32 | generic_fillattr(inode, stat); | ||
33 | stat->mode = fi->orig_i_mode; | ||
34 | + stat->ino = fi->orig_ino; | ||
35 | } | ||
36 | } | ||
37 | |||
38 | diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h | ||
39 | index cf6db0a..89c4a58 100644 | ||
40 | --- a/fs/fuse/fuse_i.h | ||
41 | +++ b/fs/fuse/fuse_i.h | ||
42 | @@ -82,6 +82,9 @@ struct fuse_inode { | ||
43 | preserve the original mode */ | ||
44 | mode_t orig_i_mode; | ||
45 | |||
46 | + /** 64 bit inode number */ | ||
47 | + u64 orig_ino; | ||
48 | + | ||
49 | /** Version of last attribute change */ | ||
50 | u64 attr_version; | ||
51 | |||
52 | diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c | ||
53 | index aa83109..1f82d95 100644 | ||
54 | --- a/fs/fuse/inode.c | ||
55 | +++ b/fs/fuse/inode.c | ||
56 | @@ -91,6 +91,7 @@ static struct inode *fuse_alloc_inode(struct super_block *sb) | ||
57 | fi->nlookup = 0; | ||
58 | fi->attr_version = 0; | ||
59 | fi->writectr = 0; | ||
60 | + fi->orig_ino = 0; | ||
61 | INIT_LIST_HEAD(&fi->write_files); | ||
62 | INIT_LIST_HEAD(&fi->queued_writes); | ||
63 | INIT_LIST_HEAD(&fi->writepages); | ||
64 | @@ -140,6 +141,18 @@ static int fuse_remount_fs(struct super_block *sb, int *flags, char *data) | ||
65 | return 0; | ||
66 | } | ||
67 | |||
68 | +/* | ||
69 | + * ino_t is 32-bits on 32-bit arch. We have to squash the 64-bit value down | ||
70 | + * so that it will fit. | ||
71 | + */ | ||
72 | +static ino_t fuse_squash_ino(u64 ino64) | ||
73 | +{ | ||
74 | + ino_t ino = (ino_t) ino64; | ||
75 | + if (sizeof(ino_t) < sizeof(u64)) | ||
76 | + ino ^= ino64 >> (sizeof(u64) - sizeof(ino_t)) * 8; | ||
77 | + return ino; | ||
78 | +} | ||
79 | + | ||
80 | void fuse_change_attributes_common(struct inode *inode, struct fuse_attr *attr, | ||
81 | u64 attr_valid) | ||
82 | { | ||
83 | @@ -149,7 +162,7 @@ void fuse_change_attributes_common(struct inode *inode, struct fuse_attr *attr, | ||
84 | fi->attr_version = ++fc->attr_version; | ||
85 | fi->i_time = attr_valid; | ||
86 | |||
87 | - inode->i_ino = attr->ino; | ||
88 | + inode->i_ino = fuse_squash_ino(attr->ino); | ||
89 | inode->i_mode = (inode->i_mode & S_IFMT) | (attr->mode & 07777); | ||
90 | set_nlink(inode, attr->nlink); | ||
91 | inode->i_uid = attr->uid; | ||
92 | @@ -175,6 +188,8 @@ void fuse_change_attributes_common(struct inode *inode, struct fuse_attr *attr, | ||
93 | fi->orig_i_mode = inode->i_mode; | ||
94 | if (!(fc->flags & FUSE_DEFAULT_PERMISSIONS)) | ||
95 | inode->i_mode &= ~S_ISVTX; | ||
96 | + | ||
97 | + fi->orig_ino = attr->ino; | ||
98 | } | ||
99 | |||
100 | void fuse_change_attributes(struct inode *inode, struct fuse_attr *attr, | ||
101 | -- | ||
102 | 1.7.9.5 | ||
103 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0012-x86-MCE-AMD-Make-APIC-LVT-thresholding-interrupt-opt.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0012-x86-MCE-AMD-Make-APIC-LVT-thresholding-interrupt-opt.patch new file mode 100644 index 00000000..29c63183 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0012-x86-MCE-AMD-Make-APIC-LVT-thresholding-interrupt-opt.patch | |||
@@ -0,0 +1,146 @@ | |||
1 | From 558e69f643c0c8492df4bb6898cbf3caf3e1e160 Mon Sep 17 00:00:00 2001 | ||
2 | From: Borislav Petkov <borislav.petkov@amd.com> | ||
3 | Date: Sun, 10 Jun 2012 00:50:15 +0900 | ||
4 | Subject: [PATCH 12/67] x86, MCE, AMD: Make APIC LVT thresholding interrupt | ||
5 | optional | ||
6 | |||
7 | commit f227d4306cf30e1d5b6f231e8ef9006c34f3d186 upstream. | ||
8 | |||
9 | Currently, the APIC LVT interrupt for error thresholding is implicitly | ||
10 | enabled. However, there are models in the F15h range which do not enable | ||
11 | it. Make the code machinery which sets up the APIC interrupt support | ||
12 | an optional setting and add an ->interrupt_capable member to the bank | ||
13 | representation mirroring that capability and enable the interrupt offset | ||
14 | programming only if it is true. | ||
15 | |||
16 | Simplify code and fixup comment style while at it. | ||
17 | |||
18 | This patch is for stable kernels v3.0 to v3.2. | ||
19 | |||
20 | Signed-off-by: Borislav Petkov <borislav.petkov@amd.com> | ||
21 | Signed-off-by: Robert Richter <robert.richter@amd.com> | ||
22 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
23 | --- | ||
24 | arch/x86/kernel/cpu/mcheck/mce_amd.c | 55 +++++++++++++++++++++++++++------- | ||
25 | 1 file changed, 44 insertions(+), 11 deletions(-) | ||
26 | |||
27 | diff --git a/arch/x86/kernel/cpu/mcheck/mce_amd.c b/arch/x86/kernel/cpu/mcheck/mce_amd.c | ||
28 | index f547421..445a61c 100644 | ||
29 | --- a/arch/x86/kernel/cpu/mcheck/mce_amd.c | ||
30 | +++ b/arch/x86/kernel/cpu/mcheck/mce_amd.c | ||
31 | @@ -52,6 +52,7 @@ struct threshold_block { | ||
32 | unsigned int cpu; | ||
33 | u32 address; | ||
34 | u16 interrupt_enable; | ||
35 | + bool interrupt_capable; | ||
36 | u16 threshold_limit; | ||
37 | struct kobject kobj; | ||
38 | struct list_head miscj; | ||
39 | @@ -86,6 +87,21 @@ struct thresh_restart { | ||
40 | u16 old_limit; | ||
41 | }; | ||
42 | |||
43 | +static bool lvt_interrupt_supported(unsigned int bank, u32 msr_high_bits) | ||
44 | +{ | ||
45 | + /* | ||
46 | + * bank 4 supports APIC LVT interrupts implicitly since forever. | ||
47 | + */ | ||
48 | + if (bank == 4) | ||
49 | + return true; | ||
50 | + | ||
51 | + /* | ||
52 | + * IntP: interrupt present; if this bit is set, the thresholding | ||
53 | + * bank can generate APIC LVT interrupts | ||
54 | + */ | ||
55 | + return msr_high_bits & BIT(28); | ||
56 | +} | ||
57 | + | ||
58 | static int lvt_off_valid(struct threshold_block *b, int apic, u32 lo, u32 hi) | ||
59 | { | ||
60 | int msr = (hi & MASK_LVTOFF_HI) >> 20; | ||
61 | @@ -107,8 +123,10 @@ static int lvt_off_valid(struct threshold_block *b, int apic, u32 lo, u32 hi) | ||
62 | return 1; | ||
63 | }; | ||
64 | |||
65 | -/* must be called with correct cpu affinity */ | ||
66 | -/* Called via smp_call_function_single() */ | ||
67 | +/* | ||
68 | + * Called via smp_call_function_single(), must be called with correct | ||
69 | + * cpu affinity. | ||
70 | + */ | ||
71 | static void threshold_restart_bank(void *_tr) | ||
72 | { | ||
73 | struct thresh_restart *tr = _tr; | ||
74 | @@ -131,6 +149,12 @@ static void threshold_restart_bank(void *_tr) | ||
75 | (new_count & THRESHOLD_MAX); | ||
76 | } | ||
77 | |||
78 | + /* clear IntType */ | ||
79 | + hi &= ~MASK_INT_TYPE_HI; | ||
80 | + | ||
81 | + if (!tr->b->interrupt_capable) | ||
82 | + goto done; | ||
83 | + | ||
84 | if (tr->set_lvt_off) { | ||
85 | if (lvt_off_valid(tr->b, tr->lvt_off, lo, hi)) { | ||
86 | /* set new lvt offset */ | ||
87 | @@ -139,9 +163,10 @@ static void threshold_restart_bank(void *_tr) | ||
88 | } | ||
89 | } | ||
90 | |||
91 | - tr->b->interrupt_enable ? | ||
92 | - (hi = (hi & ~MASK_INT_TYPE_HI) | INT_TYPE_APIC) : | ||
93 | - (hi &= ~MASK_INT_TYPE_HI); | ||
94 | + if (tr->b->interrupt_enable) | ||
95 | + hi |= INT_TYPE_APIC; | ||
96 | + | ||
97 | + done: | ||
98 | |||
99 | hi |= MASK_COUNT_EN_HI; | ||
100 | wrmsr(tr->b->address, lo, hi); | ||
101 | @@ -206,14 +231,18 @@ void mce_amd_feature_init(struct cpuinfo_x86 *c) | ||
102 | if (shared_bank[bank] && c->cpu_core_id) | ||
103 | break; | ||
104 | #endif | ||
105 | - offset = setup_APIC_mce(offset, | ||
106 | - (high & MASK_LVTOFF_HI) >> 20); | ||
107 | |||
108 | memset(&b, 0, sizeof(b)); | ||
109 | - b.cpu = cpu; | ||
110 | - b.bank = bank; | ||
111 | - b.block = block; | ||
112 | - b.address = address; | ||
113 | + b.cpu = cpu; | ||
114 | + b.bank = bank; | ||
115 | + b.block = block; | ||
116 | + b.address = address; | ||
117 | + b.interrupt_capable = lvt_interrupt_supported(bank, high); | ||
118 | + | ||
119 | + if (b.interrupt_capable) { | ||
120 | + int new = (high & MASK_LVTOFF_HI) >> 20; | ||
121 | + offset = setup_APIC_mce(offset, new); | ||
122 | + } | ||
123 | |||
124 | mce_threshold_block_init(&b, offset); | ||
125 | mce_threshold_vector = amd_threshold_interrupt; | ||
126 | @@ -313,6 +342,9 @@ store_interrupt_enable(struct threshold_block *b, const char *buf, size_t size) | ||
127 | struct thresh_restart tr; | ||
128 | unsigned long new; | ||
129 | |||
130 | + if (!b->interrupt_capable) | ||
131 | + return -EINVAL; | ||
132 | + | ||
133 | if (strict_strtoul(buf, 0, &new) < 0) | ||
134 | return -EINVAL; | ||
135 | |||
136 | @@ -471,6 +503,7 @@ static __cpuinit int allocate_threshold_blocks(unsigned int cpu, | ||
137 | b->cpu = cpu; | ||
138 | b->address = address; | ||
139 | b->interrupt_enable = 0; | ||
140 | + b->interrupt_capable = lvt_interrupt_supported(bank, high); | ||
141 | b->threshold_limit = THRESHOLD_MAX; | ||
142 | |||
143 | INIT_LIST_HEAD(&b->miscj); | ||
144 | -- | ||
145 | 1.7.9.5 | ||
146 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0013-x86-amd-Re-enable-CPU-topology-extensions-in-case-BI.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0013-x86-amd-Re-enable-CPU-topology-extensions-in-case-BI.patch new file mode 100644 index 00000000..e453609e --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0013-x86-amd-Re-enable-CPU-topology-extensions-in-case-BI.patch | |||
@@ -0,0 +1,60 @@ | |||
1 | From ab8b86f7a27c50219b82e9dfc92a21d8715403bf Mon Sep 17 00:00:00 2001 | ||
2 | From: Andreas Herrmann <andreas.herrmann3@amd.com> | ||
3 | Date: Tue, 3 Apr 2012 12:13:07 +0200 | ||
4 | Subject: [PATCH 13/67] x86/amd: Re-enable CPU topology extensions in case | ||
5 | BIOS has disabled it | ||
6 | |||
7 | BIOS will switch off the corresponding feature flag on family | ||
8 | 15h models 10h-1fh non-desktop CPUs. | ||
9 | |||
10 | The topology extension CPUID leafs are required to detect which | ||
11 | cores belong to the same compute unit. (thread siblings mask is | ||
12 | set accordingly and also correct information about L1i and L2 | ||
13 | cache sharing depends on this). | ||
14 | |||
15 | W/o this patch we wouldn't see which cores belong to the same | ||
16 | compute unit and also cache sharing information for L1i and L2 | ||
17 | would be incorrect on such systems. | ||
18 | |||
19 | Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com> | ||
20 | Signed-off-by: Ingo Molnar <mingo@kernel.org> | ||
21 | (cherry picked from commit f7f286a910221ae18b21c18d9d0f4cd88965829f) | ||
22 | |||
23 | Signed-off-by: Tim Gardner <tim.gardner@canonical.com> | ||
24 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
25 | --- | ||
26 | arch/x86/kernel/cpu/amd.c | 18 ++++++++++++++++++ | ||
27 | 1 file changed, 18 insertions(+) | ||
28 | |||
29 | diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c | ||
30 | index 0bab2b1..3524e1f 100644 | ||
31 | --- a/arch/x86/kernel/cpu/amd.c | ||
32 | +++ b/arch/x86/kernel/cpu/amd.c | ||
33 | @@ -571,6 +571,24 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c) | ||
34 | } | ||
35 | } | ||
36 | |||
37 | + /* re-enable TopologyExtensions if switched off by BIOS */ | ||
38 | + if ((c->x86 == 0x15) && | ||
39 | + (c->x86_model >= 0x10) && (c->x86_model <= 0x1f) && | ||
40 | + !cpu_has(c, X86_FEATURE_TOPOEXT)) { | ||
41 | + u64 val; | ||
42 | + | ||
43 | + if (!rdmsrl_amd_safe(0xc0011005, &val)) { | ||
44 | + val |= 1ULL << 54; | ||
45 | + wrmsrl_amd_safe(0xc0011005, val); | ||
46 | + rdmsrl(0xc0011005, val); | ||
47 | + if (val & (1ULL << 54)) { | ||
48 | + set_cpu_cap(c, X86_FEATURE_TOPOEXT); | ||
49 | + printk(KERN_INFO FW_INFO "CPU: Re-enabling " | ||
50 | + "disabled Topology Extensions Support\n"); | ||
51 | + } | ||
52 | + } | ||
53 | + } | ||
54 | + | ||
55 | cpu_detect_cache_sizes(c); | ||
56 | |||
57 | /* Multi core CPU? */ | ||
58 | -- | ||
59 | 1.7.9.5 | ||
60 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0014-hwmon-fam15h_power-Increase-output-resolution.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0014-hwmon-fam15h_power-Increase-output-resolution.patch new file mode 100644 index 00000000..cf74ee5f --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0014-hwmon-fam15h_power-Increase-output-resolution.patch | |||
@@ -0,0 +1,56 @@ | |||
1 | From e88182a80fd1abfed0a667c28fd70632c728b9b0 Mon Sep 17 00:00:00 2001 | ||
2 | From: Andre Przywara <andre.przywara@amd.com> | ||
3 | Date: Fri, 23 Mar 2012 10:02:17 +0100 | ||
4 | Subject: [PATCH 14/67] hwmon: (fam15h_power) Increase output resolution | ||
5 | |||
6 | On high CPU load the accumulating values in the running_avg_cap | ||
7 | register are very low (below 10), so averaging them too early leads | ||
8 | to unnecessary poor output resolution. Since we pretend to output | ||
9 | micro-Watt we better keep all the bits we have as long as possible. | ||
10 | |||
11 | Signed-off-by: Andre Przywara <andre.przywara@amd.com> | ||
12 | Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com> | ||
13 | Acked-by: Guenter Roeck <guenter.roeck@ericsson.com> | ||
14 | Signed-off-by: Jean Delvare <khali@linux-fr.org> | ||
15 | (cherry picked from commit 941a956b0e387b21f385f486c34ef67576775cfc) | ||
16 | |||
17 | Signed-off-by: Tim Gardner <tim.gardner@canonical.com> | ||
18 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
19 | --- | ||
20 | drivers/hwmon/fam15h_power.c | 8 ++++---- | ||
21 | 1 file changed, 4 insertions(+), 4 deletions(-) | ||
22 | |||
23 | diff --git a/drivers/hwmon/fam15h_power.c b/drivers/hwmon/fam15h_power.c | ||
24 | index 9a4c3ab..e8e18ca 100644 | ||
25 | --- a/drivers/hwmon/fam15h_power.c | ||
26 | +++ b/drivers/hwmon/fam15h_power.c | ||
27 | @@ -61,14 +61,14 @@ static ssize_t show_power(struct device *dev, | ||
28 | REG_TDP_RUNNING_AVERAGE, &val); | ||
29 | running_avg_capture = (val >> 4) & 0x3fffff; | ||
30 | running_avg_capture = sign_extend32(running_avg_capture, 21); | ||
31 | - running_avg_range = val & 0xf; | ||
32 | + running_avg_range = (val & 0xf) + 1; | ||
33 | |||
34 | pci_bus_read_config_dword(f4->bus, PCI_DEVFN(PCI_SLOT(f4->devfn), 5), | ||
35 | REG_TDP_LIMIT3, &val); | ||
36 | |||
37 | tdp_limit = val >> 16; | ||
38 | - curr_pwr_watts = tdp_limit + data->base_tdp - | ||
39 | - (s32)(running_avg_capture >> (running_avg_range + 1)); | ||
40 | + curr_pwr_watts = (tdp_limit + data->base_tdp) << running_avg_range; | ||
41 | + curr_pwr_watts -= running_avg_capture; | ||
42 | curr_pwr_watts *= data->tdp_to_watts; | ||
43 | |||
44 | /* | ||
45 | @@ -78,7 +78,7 @@ static ssize_t show_power(struct device *dev, | ||
46 | * scaling factor 1/(2^16). For conversion we use | ||
47 | * (10^6)/(2^16) = 15625/(2^10) | ||
48 | */ | ||
49 | - curr_pwr_watts = (curr_pwr_watts * 15625) >> 10; | ||
50 | + curr_pwr_watts = (curr_pwr_watts * 15625) >> (10 + running_avg_range); | ||
51 | return sprintf(buf, "%u\n", (unsigned int) curr_pwr_watts); | ||
52 | } | ||
53 | static DEVICE_ATTR(power1_input, S_IRUGO, show_power, NULL); | ||
54 | -- | ||
55 | 1.7.9.5 | ||
56 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0015-sched-Fix-the-relax_domain_level-boot-parameter.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0015-sched-Fix-the-relax_domain_level-boot-parameter.patch new file mode 100644 index 00000000..ea7a120f --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0015-sched-Fix-the-relax_domain_level-boot-parameter.patch | |||
@@ -0,0 +1,65 @@ | |||
1 | From 701bbc54cf5b05f981bd595a0662317d4d7576fc Mon Sep 17 00:00:00 2001 | ||
2 | From: Dimitri Sivanich <sivanich@sgi.com> | ||
3 | Date: Tue, 5 Jun 2012 13:44:36 -0500 | ||
4 | Subject: [PATCH 15/67] sched: Fix the relax_domain_level boot parameter | ||
5 | |||
6 | commit a841f8cef4bb124f0f5563314d0beaf2e1249d72 upstream. | ||
7 | |||
8 | It does not get processed because sched_domain_level_max is 0 at the | ||
9 | time that setup_relax_domain_level() is run. | ||
10 | |||
11 | Simply accept the value as it is, as we don't know the value of | ||
12 | sched_domain_level_max until sched domain construction is completed. | ||
13 | |||
14 | Fix sched_relax_domain_level in cpuset. The build_sched_domain() routine calls | ||
15 | the set_domain_attribute() routine prior to setting the sd->level, however, | ||
16 | the set_domain_attribute() routine relies on the sd->level to decide whether | ||
17 | idle load balancing will be off/on. | ||
18 | |||
19 | Signed-off-by: Dimitri Sivanich <sivanich@sgi.com> | ||
20 | Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> | ||
21 | Link: http://lkml.kernel.org/r/20120605184436.GA15668@sgi.com | ||
22 | Signed-off-by: Ingo Molnar <mingo@kernel.org> | ||
23 | [bwh: Backported to 3.2: adjust the filename] | ||
24 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
25 | --- | ||
26 | kernel/sched.c | 9 +++------ | ||
27 | 1 file changed, 3 insertions(+), 6 deletions(-) | ||
28 | |||
29 | diff --git a/kernel/sched.c b/kernel/sched.c | ||
30 | index 299f55c..576a27f 100644 | ||
31 | --- a/kernel/sched.c | ||
32 | +++ b/kernel/sched.c | ||
33 | @@ -7429,11 +7429,8 @@ int sched_domain_level_max; | ||
34 | |||
35 | static int __init setup_relax_domain_level(char *str) | ||
36 | { | ||
37 | - unsigned long val; | ||
38 | - | ||
39 | - val = simple_strtoul(str, NULL, 0); | ||
40 | - if (val < sched_domain_level_max) | ||
41 | - default_relax_domain_level = val; | ||
42 | + if (kstrtoint(str, 0, &default_relax_domain_level)) | ||
43 | + pr_warn("Unable to set relax_domain_level\n"); | ||
44 | |||
45 | return 1; | ||
46 | } | ||
47 | @@ -7636,7 +7633,6 @@ struct sched_domain *build_sched_domain(struct sched_domain_topology_level *tl, | ||
48 | if (!sd) | ||
49 | return child; | ||
50 | |||
51 | - set_domain_attribute(sd, attr); | ||
52 | cpumask_and(sched_domain_span(sd), cpu_map, tl->mask(cpu)); | ||
53 | if (child) { | ||
54 | sd->level = child->level + 1; | ||
55 | @@ -7644,6 +7640,7 @@ struct sched_domain *build_sched_domain(struct sched_domain_topology_level *tl, | ||
56 | child->parent = sd; | ||
57 | } | ||
58 | sd->child = child; | ||
59 | + set_domain_attribute(sd, attr); | ||
60 | |||
61 | return sd; | ||
62 | } | ||
63 | -- | ||
64 | 1.7.9.5 | ||
65 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0016-iwlwifi-don-t-mess-up-the-SCD-when-removing-a-key.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0016-iwlwifi-don-t-mess-up-the-SCD-when-removing-a-key.patch new file mode 100644 index 00000000..01d143e2 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0016-iwlwifi-don-t-mess-up-the-SCD-when-removing-a-key.patch | |||
@@ -0,0 +1,47 @@ | |||
1 | From 9dfeca7b52fe58b2a49b59834a976405a424b622 Mon Sep 17 00:00:00 2001 | ||
2 | From: Emmanuel Grumbach <emmanuel.grumbach@intel.com> | ||
3 | Date: Wed, 6 Jun 2012 09:13:36 +0200 | ||
4 | Subject: [PATCH 16/67] iwlwifi: don't mess up the SCD when removing a key | ||
5 | |||
6 | commit d6ee27eb13beab94056e0de52d81220058ca2297 upstream. | ||
7 | |||
8 | When we remove a key, we put a key index which was supposed | ||
9 | to tell the fw that we are actually removing the key. But | ||
10 | instead the fw took that index as a valid index and messed | ||
11 | up the SRAM of the device. | ||
12 | |||
13 | This memory corruption on the device mangled the data of | ||
14 | the SCD. The impact on the user is that SCD queue 2 got | ||
15 | stuck after having removed keys. | ||
16 | The message is the log that was printed is: | ||
17 | |||
18 | Queue 2 stuck for 10000ms | ||
19 | |||
20 | This doesn't seem to fix the higher queues that get stuck | ||
21 | from time to time. | ||
22 | |||
23 | Reviewed-by: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com> | ||
24 | Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> | ||
25 | Signed-off-by: Johannes Berg <johannes.berg@intel.com> | ||
26 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
27 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
28 | --- | ||
29 | drivers/net/wireless/iwlwifi/iwl-agn-sta.c | 2 +- | ||
30 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
31 | |||
32 | diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-sta.c b/drivers/net/wireless/iwlwifi/iwl-agn-sta.c | ||
33 | index 5cfb3d1..ccf1524 100644 | ||
34 | --- a/drivers/net/wireless/iwlwifi/iwl-agn-sta.c | ||
35 | +++ b/drivers/net/wireless/iwlwifi/iwl-agn-sta.c | ||
36 | @@ -1245,7 +1245,7 @@ int iwl_remove_dynamic_key(struct iwl_priv *priv, | ||
37 | key_flags |= STA_KEY_MULTICAST_MSK; | ||
38 | |||
39 | sta_cmd.key.key_flags = key_flags; | ||
40 | - sta_cmd.key.key_offset = WEP_INVALID_OFFSET; | ||
41 | + sta_cmd.key.key_offset = keyconf->hw_key_idx; | ||
42 | sta_cmd.sta.modify_mask = STA_MODIFY_KEY_MASK; | ||
43 | sta_cmd.mode = STA_CONTROL_MODIFY_MSK; | ||
44 | |||
45 | -- | ||
46 | 1.7.9.5 | ||
47 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0017-hwrng-atmel-rng-fix-race-condition-leading-to-repeat.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0017-hwrng-atmel-rng-fix-race-condition-leading-to-repeat.patch new file mode 100644 index 00000000..24e1bed4 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0017-hwrng-atmel-rng-fix-race-condition-leading-to-repeat.patch | |||
@@ -0,0 +1,85 @@ | |||
1 | From 1468193368592ea5ed063093a7f776a19af2a131 Mon Sep 17 00:00:00 2001 | ||
2 | From: Peter Korsgaard <jacmet@sunsite.dk> | ||
3 | Date: Thu, 31 May 2012 20:53:08 +1000 | ||
4 | Subject: [PATCH 17/67] hwrng: atmel-rng - fix race condition leading to | ||
5 | repeated bits | ||
6 | |||
7 | commit 121daad8fd1dce63076fa55aaedd5dc3f981b334 upstream. | ||
8 | |||
9 | Data valid gets cleared by reading the ISR (status register) and NOT from | ||
10 | reading ODATA (data register). A new data word can become available between | ||
11 | checking ISR and reading ODATA, causing us to reuse the same data word next | ||
12 | time atmel_trng_read() gets called, if that happens before the following | ||
13 | data word is ready. | ||
14 | |||
15 | With this fixed, rngtest no longer complains of 'Continous run' errors. | ||
16 | Before: | ||
17 | |||
18 | rngtest -c 1000 < /dev/hwrng | ||
19 | rngtest 3 | ||
20 | Copyright (c) 2004 by Henrique de Moraes Holschuh | ||
21 | This is free software; see the source for copying conditions. There is NO warr. | ||
22 | |||
23 | rngtest: starting FIPS tests... | ||
24 | rngtest: bits received from input: 20000032 | ||
25 | rngtest: FIPS 140-2 successes: 923 | ||
26 | rngtest: FIPS 140-2 failures: 77 | ||
27 | rngtest: FIPS 140-2(2001-10-10) Monobit: 0 | ||
28 | rngtest: FIPS 140-2(2001-10-10) Poker: 0 | ||
29 | rngtest: FIPS 140-2(2001-10-10) Runs: 1 | ||
30 | rngtest: FIPS 140-2(2001-10-10) Long run: 0 | ||
31 | rngtest: FIPS 140-2(2001-10-10) Continuous run: 76 | ||
32 | rngtest: input channel speed: (min=721.402; avg=46003.510; max=49321.338)Kibitss | ||
33 | rngtest: FIPS tests speed: (min=11.442; avg=12.714; max=12.801)Mibits/s | ||
34 | rngtest: Program run time: 1931860 microseconds | ||
35 | |||
36 | After: | ||
37 | |||
38 | rngtest -c 1000 < /dev/hwrng | ||
39 | rngtest 3 | ||
40 | Copyright (c) 2004 by Henrique de Moraes Holschuh | ||
41 | This is free software; see the source for copying conditions. There is NO warr. | ||
42 | |||
43 | rngtest: starting FIPS tests... | ||
44 | rngtest: bits received from input: 20000032 | ||
45 | rngtest: FIPS 140-2 successes: 1000 | ||
46 | rngtest: FIPS 140-2 failures: 0 | ||
47 | rngtest: FIPS 140-2(2001-10-10) Monobit: 0 | ||
48 | rngtest: FIPS 140-2(2001-10-10) Poker: 0 | ||
49 | rngtest: FIPS 140-2(2001-10-10) Runs: 0 | ||
50 | rngtest: FIPS 140-2(2001-10-10) Long run: 0 | ||
51 | rngtest: FIPS 140-2(2001-10-10) Continuous run: 0 | ||
52 | rngtest: input channel speed: (min=777.518; avg=36988.482; max=43115.342)Kibitss | ||
53 | rngtest: FIPS tests speed: (min=11.951; avg=12.715; max=12.887)Mibits/s | ||
54 | rngtest: Program run time: 2035543 microseconds | ||
55 | |||
56 | Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk> | ||
57 | Reported-by: George Pontis <GPontis@z9.com> | ||
58 | Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com> | ||
59 | Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> | ||
60 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
61 | --- | ||
62 | drivers/char/hw_random/atmel-rng.c | 7 +++++++ | ||
63 | 1 file changed, 7 insertions(+) | ||
64 | |||
65 | diff --git a/drivers/char/hw_random/atmel-rng.c b/drivers/char/hw_random/atmel-rng.c | ||
66 | index 241df2e..0477982 100644 | ||
67 | --- a/drivers/char/hw_random/atmel-rng.c | ||
68 | +++ b/drivers/char/hw_random/atmel-rng.c | ||
69 | @@ -36,6 +36,13 @@ static int atmel_trng_read(struct hwrng *rng, void *buf, size_t max, | ||
70 | /* data ready? */ | ||
71 | if (readl(trng->base + TRNG_ODATA) & 1) { | ||
72 | *data = readl(trng->base + TRNG_ODATA); | ||
73 | + /* | ||
74 | + ensure data ready is only set again AFTER the next data | ||
75 | + word is ready in case it got set between checking ISR | ||
76 | + and reading ODATA, so we don't risk re-reading the | ||
77 | + same word | ||
78 | + */ | ||
79 | + readl(trng->base + TRNG_ISR); | ||
80 | return 4; | ||
81 | } else | ||
82 | return 0; | ||
83 | -- | ||
84 | 1.7.9.5 | ||
85 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0018-crypto-aesni-intel-fix-unaligned-cbc-decrypt-for-x86.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0018-crypto-aesni-intel-fix-unaligned-cbc-decrypt-for-x86.patch new file mode 100644 index 00000000..fa13f31f --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0018-crypto-aesni-intel-fix-unaligned-cbc-decrypt-for-x86.patch | |||
@@ -0,0 +1,46 @@ | |||
1 | From e7814580e8b3d8f81dac54f4919f7f3b75b40c0d Mon Sep 17 00:00:00 2001 | ||
2 | From: Mathias Krause <minipli@googlemail.com> | ||
3 | Date: Wed, 30 May 2012 01:43:08 +0200 | ||
4 | Subject: [PATCH 18/67] crypto: aesni-intel - fix unaligned cbc decrypt for | ||
5 | x86-32 | ||
6 | |||
7 | commit 7c8d51848a88aafdb68f42b6b650c83485ea2f84 upstream. | ||
8 | |||
9 | The 32 bit variant of cbc(aes) decrypt is using instructions requiring | ||
10 | 128 bit aligned memory locations but fails to ensure this constraint in | ||
11 | the code. Fix this by loading the data into intermediate registers with | ||
12 | load unaligned instructions. | ||
13 | |||
14 | This fixes reported general protection faults related to aesni. | ||
15 | |||
16 | References: https://bugzilla.kernel.org/show_bug.cgi?id=43223 | ||
17 | Reported-by: Daniel <garkein@mailueberfall.de> | ||
18 | Signed-off-by: Mathias Krause <minipli@googlemail.com> | ||
19 | Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> | ||
20 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
21 | --- | ||
22 | arch/x86/crypto/aesni-intel_asm.S | 6 ++++-- | ||
23 | 1 file changed, 4 insertions(+), 2 deletions(-) | ||
24 | |||
25 | diff --git a/arch/x86/crypto/aesni-intel_asm.S b/arch/x86/crypto/aesni-intel_asm.S | ||
26 | index be6d9e3..3470624 100644 | ||
27 | --- a/arch/x86/crypto/aesni-intel_asm.S | ||
28 | +++ b/arch/x86/crypto/aesni-intel_asm.S | ||
29 | @@ -2460,10 +2460,12 @@ ENTRY(aesni_cbc_dec) | ||
30 | pxor IN3, STATE4 | ||
31 | movaps IN4, IV | ||
32 | #else | ||
33 | - pxor (INP), STATE2 | ||
34 | - pxor 0x10(INP), STATE3 | ||
35 | pxor IN1, STATE4 | ||
36 | movaps IN2, IV | ||
37 | + movups (INP), IN1 | ||
38 | + pxor IN1, STATE2 | ||
39 | + movups 0x10(INP), IN2 | ||
40 | + pxor IN2, STATE3 | ||
41 | #endif | ||
42 | movups STATE1, (OUTP) | ||
43 | movups STATE2, 0x10(OUTP) | ||
44 | -- | ||
45 | 1.7.9.5 | ||
46 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0019-xen-setup-filter-APERFMPERF-cpuid-feature-out.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0019-xen-setup-filter-APERFMPERF-cpuid-feature-out.patch new file mode 100644 index 00000000..7135b15c --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0019-xen-setup-filter-APERFMPERF-cpuid-feature-out.patch | |||
@@ -0,0 +1,58 @@ | |||
1 | From 88d89048f346736a57637924307749c8cc782751 Mon Sep 17 00:00:00 2001 | ||
2 | From: Andre Przywara <andre.przywara@amd.com> | ||
3 | Date: Tue, 29 May 2012 13:07:31 +0200 | ||
4 | Subject: [PATCH 19/67] xen/setup: filter APERFMPERF cpuid feature out | ||
5 | |||
6 | commit 5e626254206a709c6e937f3dda69bf26c7344f6f upstream. | ||
7 | |||
8 | Xen PV kernels allow access to the APERF/MPERF registers to read the | ||
9 | effective frequency. Access to the MSRs is however redirected to the | ||
10 | currently scheduled physical CPU, making consecutive read and | ||
11 | compares unreliable. In addition each rdmsr traps into the hypervisor. | ||
12 | So to avoid bogus readouts and expensive traps, disable the kernel | ||
13 | internal feature flag for APERF/MPERF if running under Xen. | ||
14 | This will | ||
15 | a) remove the aperfmperf flag from /proc/cpuinfo | ||
16 | b) not mislead the power scheduler (arch/x86/kernel/cpu/sched.c) to | ||
17 | use the feature to improve scheduling (by default disabled) | ||
18 | c) not mislead the cpufreq driver to use the MSRs | ||
19 | |||
20 | This does not cover userland programs which access the MSRs via the | ||
21 | device file interface, but this will be addressed separately. | ||
22 | |||
23 | Signed-off-by: Andre Przywara <andre.przywara@amd.com> | ||
24 | Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | ||
25 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
26 | --- | ||
27 | arch/x86/xen/enlighten.c | 8 ++++++++ | ||
28 | 1 file changed, 8 insertions(+) | ||
29 | |||
30 | diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c | ||
31 | index cca659e..44d4393 100644 | ||
32 | --- a/arch/x86/xen/enlighten.c | ||
33 | +++ b/arch/x86/xen/enlighten.c | ||
34 | @@ -198,6 +198,9 @@ static void __init xen_banner(void) | ||
35 | xen_feature(XENFEAT_mmu_pt_update_preserve_ad) ? " (preserve-AD)" : ""); | ||
36 | } | ||
37 | |||
38 | +#define CPUID_THERM_POWER_LEAF 6 | ||
39 | +#define APERFMPERF_PRESENT 0 | ||
40 | + | ||
41 | static __read_mostly unsigned int cpuid_leaf1_edx_mask = ~0; | ||
42 | static __read_mostly unsigned int cpuid_leaf1_ecx_mask = ~0; | ||
43 | |||
44 | @@ -218,6 +221,11 @@ static void xen_cpuid(unsigned int *ax, unsigned int *bx, | ||
45 | maskedx = cpuid_leaf1_edx_mask; | ||
46 | break; | ||
47 | |||
48 | + case CPUID_THERM_POWER_LEAF: | ||
49 | + /* Disabling APERFMPERF for kernel usage */ | ||
50 | + maskecx = ~(1 << APERFMPERF_PRESENT); | ||
51 | + break; | ||
52 | + | ||
53 | case 0xb: | ||
54 | /* Suppress extended topology stuff */ | ||
55 | maskebx = 0; | ||
56 | -- | ||
57 | 1.7.9.5 | ||
58 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0020-NFSv4.1-Fix-a-request-leak-on-the-back-channel.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0020-NFSv4.1-Fix-a-request-leak-on-the-back-channel.patch new file mode 100644 index 00000000..8d9f08cd --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0020-NFSv4.1-Fix-a-request-leak-on-the-back-channel.patch | |||
@@ -0,0 +1,33 @@ | |||
1 | From 11e050e0bcf1f48f656630c0e603752e8d537126 Mon Sep 17 00:00:00 2001 | ||
2 | From: Trond Myklebust <Trond.Myklebust@netapp.com> | ||
3 | Date: Thu, 31 May 2012 15:26:38 -0400 | ||
4 | Subject: [PATCH 20/67] NFSv4.1: Fix a request leak on the back channel | ||
5 | |||
6 | commit b3b02ae5865c2dcd506322e0fc6def59a042e72f upstream. | ||
7 | |||
8 | If the call to svc_process_common() fails, then the request | ||
9 | needs to be freed before we can exit bc_svc_process. | ||
10 | |||
11 | Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com> | ||
12 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
13 | --- | ||
14 | net/sunrpc/svc.c | 3 ++- | ||
15 | 1 file changed, 2 insertions(+), 1 deletion(-) | ||
16 | |||
17 | diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c | ||
18 | index d4ad50e..c80c162 100644 | ||
19 | --- a/net/sunrpc/svc.c | ||
20 | +++ b/net/sunrpc/svc.c | ||
21 | @@ -1358,7 +1358,8 @@ bc_svc_process(struct svc_serv *serv, struct rpc_rqst *req, | ||
22 | sizeof(req->rq_snd_buf)); | ||
23 | return bc_send(req); | ||
24 | } else { | ||
25 | - /* Nothing to do to drop request */ | ||
26 | + /* drop request */ | ||
27 | + xprt_free_bc_request(req); | ||
28 | return 0; | ||
29 | } | ||
30 | } | ||
31 | -- | ||
32 | 1.7.9.5 | ||
33 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0021-can-c_can-fix-BUG-echo_skb-is-occupied-during-transm.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0021-can-c_can-fix-BUG-echo_skb-is-occupied-during-transm.patch new file mode 100644 index 00000000..b2ff99be --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0021-can-c_can-fix-BUG-echo_skb-is-occupied-during-transm.patch | |||
@@ -0,0 +1,70 @@ | |||
1 | From a17c423f5b57ba5a2c6dc959b6259d07f7d32741 Mon Sep 17 00:00:00 2001 | ||
2 | From: AnilKumar Ch <anilkumar@ti.com> | ||
3 | Date: Wed, 23 May 2012 17:45:09 +0530 | ||
4 | Subject: [PATCH 21/67] can: c_can: fix "BUG! echo_skb is occupied!" during | ||
5 | transmit | ||
6 | |||
7 | commit 617caccebe451716df21c069b079d5936ed7b0f3 upstream. | ||
8 | |||
9 | This patch fixes an issue with transmit routine, which causes | ||
10 | "can_put_echo_skb: BUG! echo_skb is occupied!" message when | ||
11 | using "cansequence -p" on D_CAN controller. | ||
12 | |||
13 | In c_can driver, while transmitting packets tx_echo flag holds | ||
14 | the no of can frames put for transmission into the hardware. | ||
15 | |||
16 | As the comment above c_can_do_tx() indicates, if we find any packet | ||
17 | which is not transmitted then we should stop looking for more. | ||
18 | In the current implementation this is not taken care of causing the | ||
19 | said message. | ||
20 | |||
21 | Also, fix the condition used to find if the packet is transmitted | ||
22 | or not. Current code skips the first tx message object and ends up | ||
23 | checking one extra invalid object. | ||
24 | |||
25 | While at it, fix the comment on top of c_can_do_tx() to use the | ||
26 | terminology "packet" instead of "package" since it is more | ||
27 | standard. | ||
28 | |||
29 | Signed-off-by: AnilKumar Ch <anilkumar@ti.com> | ||
30 | Acked-by: Wolfgang Grandegger <wg@grandegger.com> | ||
31 | Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | ||
32 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
33 | --- | ||
34 | drivers/net/can/c_can/c_can.c | 6 ++++-- | ||
35 | 1 file changed, 4 insertions(+), 2 deletions(-) | ||
36 | |||
37 | diff --git a/drivers/net/can/c_can/c_can.c b/drivers/net/can/c_can/c_can.c | ||
38 | index 536bda0..9ac28df 100644 | ||
39 | --- a/drivers/net/can/c_can/c_can.c | ||
40 | +++ b/drivers/net/can/c_can/c_can.c | ||
41 | @@ -686,7 +686,7 @@ static int c_can_get_berr_counter(const struct net_device *dev, | ||
42 | * | ||
43 | * We iterate from priv->tx_echo to priv->tx_next and check if the | ||
44 | * packet has been transmitted, echo it back to the CAN framework. | ||
45 | - * If we discover a not yet transmitted package, stop looking for more. | ||
46 | + * If we discover a not yet transmitted packet, stop looking for more. | ||
47 | */ | ||
48 | static void c_can_do_tx(struct net_device *dev) | ||
49 | { | ||
50 | @@ -698,7 +698,7 @@ static void c_can_do_tx(struct net_device *dev) | ||
51 | for (/* nix */; (priv->tx_next - priv->tx_echo) > 0; priv->tx_echo++) { | ||
52 | msg_obj_no = get_tx_echo_msg_obj(priv); | ||
53 | val = c_can_read_reg32(priv, &priv->regs->txrqst1); | ||
54 | - if (!(val & (1 << msg_obj_no))) { | ||
55 | + if (!(val & (1 << (msg_obj_no - 1)))) { | ||
56 | can_get_echo_skb(dev, | ||
57 | msg_obj_no - C_CAN_MSG_OBJ_TX_FIRST); | ||
58 | stats->tx_bytes += priv->read_reg(priv, | ||
59 | @@ -706,6 +706,8 @@ static void c_can_do_tx(struct net_device *dev) | ||
60 | & IF_MCONT_DLC_MASK; | ||
61 | stats->tx_packets++; | ||
62 | c_can_inval_msg_object(dev, 0, msg_obj_no); | ||
63 | + } else { | ||
64 | + break; | ||
65 | } | ||
66 | } | ||
67 | |||
68 | -- | ||
69 | 1.7.9.5 | ||
70 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0022-can-c_can-fix-an-interrupt-thrash-issue-with-c_can-d.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0022-can-c_can-fix-an-interrupt-thrash-issue-with-c_can-d.patch new file mode 100644 index 00000000..34b220e2 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0022-can-c_can-fix-an-interrupt-thrash-issue-with-c_can-d.patch | |||
@@ -0,0 +1,73 @@ | |||
1 | From b030affc0fa9283e4ee79a349f6b41d3217c0dc7 Mon Sep 17 00:00:00 2001 | ||
2 | From: AnilKumar Ch <anilkumar@ti.com> | ||
3 | Date: Wed, 23 May 2012 17:45:10 +0530 | ||
4 | Subject: [PATCH 22/67] can: c_can: fix an interrupt thrash issue with c_can | ||
5 | driver | ||
6 | |||
7 | commit 148c87c89e1a8863d3d965179f3ab1a06490569e upstream. | ||
8 | |||
9 | This patch fixes an interrupt thrash issue with c_can driver. | ||
10 | |||
11 | In c_can_isr() function interrupts are disabled and enabled only in | ||
12 | c_can_poll() function. c_can_isr() & c_can_poll() both read the | ||
13 | irqstatus flag. However, irqstatus is always read as 0 in c_can_poll() | ||
14 | because all C_CAN interrupts are disabled in c_can_isr(). This causes | ||
15 | all interrupts to be re-enabled in c_can_poll() which in turn causes | ||
16 | another interrupt since the event is not really handled. This keeps | ||
17 | happening causing a flood of interrupts. | ||
18 | |||
19 | To fix this, read the irqstatus register in isr and use the same cached | ||
20 | value in the poll function. | ||
21 | |||
22 | Signed-off-by: AnilKumar Ch <anilkumar@ti.com> | ||
23 | Acked-by: Wolfgang Grandegger <wg@grandegger.com> | ||
24 | Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | ||
25 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
26 | --- | ||
27 | drivers/net/can/c_can/c_can.c | 7 +++---- | ||
28 | drivers/net/can/c_can/c_can.h | 1 + | ||
29 | 2 files changed, 4 insertions(+), 4 deletions(-) | ||
30 | |||
31 | diff --git a/drivers/net/can/c_can/c_can.c b/drivers/net/can/c_can/c_can.c | ||
32 | index 9ac28df..fa01621 100644 | ||
33 | --- a/drivers/net/can/c_can/c_can.c | ||
34 | +++ b/drivers/net/can/c_can/c_can.c | ||
35 | @@ -952,7 +952,7 @@ static int c_can_poll(struct napi_struct *napi, int quota) | ||
36 | struct net_device *dev = napi->dev; | ||
37 | struct c_can_priv *priv = netdev_priv(dev); | ||
38 | |||
39 | - irqstatus = priv->read_reg(priv, &priv->regs->interrupt); | ||
40 | + irqstatus = priv->irqstatus; | ||
41 | if (!irqstatus) | ||
42 | goto end; | ||
43 | |||
44 | @@ -1030,12 +1030,11 @@ end: | ||
45 | |||
46 | static irqreturn_t c_can_isr(int irq, void *dev_id) | ||
47 | { | ||
48 | - u16 irqstatus; | ||
49 | struct net_device *dev = (struct net_device *)dev_id; | ||
50 | struct c_can_priv *priv = netdev_priv(dev); | ||
51 | |||
52 | - irqstatus = priv->read_reg(priv, &priv->regs->interrupt); | ||
53 | - if (!irqstatus) | ||
54 | + priv->irqstatus = priv->read_reg(priv, &priv->regs->interrupt); | ||
55 | + if (!priv->irqstatus) | ||
56 | return IRQ_NONE; | ||
57 | |||
58 | /* disable all interrupts and schedule the NAPI */ | ||
59 | diff --git a/drivers/net/can/c_can/c_can.h b/drivers/net/can/c_can/c_can.h | ||
60 | index 9b7fbef..5f32d34 100644 | ||
61 | --- a/drivers/net/can/c_can/c_can.h | ||
62 | +++ b/drivers/net/can/c_can/c_can.h | ||
63 | @@ -76,6 +76,7 @@ struct c_can_priv { | ||
64 | unsigned int tx_next; | ||
65 | unsigned int tx_echo; | ||
66 | void *priv; /* for board-specific data */ | ||
67 | + u16 irqstatus; | ||
68 | }; | ||
69 | |||
70 | struct net_device *alloc_c_can_dev(void); | ||
71 | -- | ||
72 | 1.7.9.5 | ||
73 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0023-can-c_can-fix-race-condition-in-c_can_open.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0023-can-c_can-fix-race-condition-in-c_can_open.patch new file mode 100644 index 00000000..8baf6c31 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0023-can-c_can-fix-race-condition-in-c_can_open.patch | |||
@@ -0,0 +1,47 @@ | |||
1 | From cf14ce22ab2b0faada7f120865c7970a07a0d06d Mon Sep 17 00:00:00 2001 | ||
2 | From: AnilKumar Ch <anilkumar@ti.com> | ||
3 | Date: Wed, 23 May 2012 17:45:11 +0530 | ||
4 | Subject: [PATCH 23/67] can: c_can: fix race condition in c_can_open() | ||
5 | |||
6 | commit f461f27a4436dbe691908fe08b867ef888848cc3 upstream. | ||
7 | |||
8 | Fix the issue of C_CAN interrupts getting disabled forever when canconfig | ||
9 | utility is used multiple times. According to NAPI usage we disable all | ||
10 | the hardware interrupts in ISR and re-enable them in poll(). Current | ||
11 | implementation calls napi_enable() after hardware interrupts are enabled. | ||
12 | If we get any interrupts between these two steps then we do not process | ||
13 | those interrupts because napi is not enabled. Mostly these interrupts | ||
14 | come because of STATUS is not 0x7 or ERROR interrupts. If napi_enable() | ||
15 | happens before HW interrupts enabled then c_can_poll() function will be | ||
16 | called eventual re-enabling. | ||
17 | |||
18 | This patch moves the napi_enable() call before interrupts enabled. | ||
19 | |||
20 | Signed-off-by: AnilKumar Ch <anilkumar@ti.com> | ||
21 | Acked-by: Wolfgang Grandegger <wg@grandegger.com> | ||
22 | Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | ||
23 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
24 | --- | ||
25 | drivers/net/can/c_can/c_can.c | 3 ++- | ||
26 | 1 file changed, 2 insertions(+), 1 deletion(-) | ||
27 | |||
28 | diff --git a/drivers/net/can/c_can/c_can.c b/drivers/net/can/c_can/c_can.c | ||
29 | index fa01621..8dc84d6 100644 | ||
30 | --- a/drivers/net/can/c_can/c_can.c | ||
31 | +++ b/drivers/net/can/c_can/c_can.c | ||
32 | @@ -1064,10 +1064,11 @@ static int c_can_open(struct net_device *dev) | ||
33 | goto exit_irq_fail; | ||
34 | } | ||
35 | |||
36 | + napi_enable(&priv->napi); | ||
37 | + | ||
38 | /* start the c_can controller */ | ||
39 | c_can_start(dev); | ||
40 | |||
41 | - napi_enable(&priv->napi); | ||
42 | netif_start_queue(dev); | ||
43 | |||
44 | return 0; | ||
45 | -- | ||
46 | 1.7.9.5 | ||
47 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0024-ARM-i.MX53-Fix-PLL4-base-address.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0024-ARM-i.MX53-Fix-PLL4-base-address.patch new file mode 100644 index 00000000..6714a866 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0024-ARM-i.MX53-Fix-PLL4-base-address.patch | |||
@@ -0,0 +1,33 @@ | |||
1 | From 8b306e31b138a75a790c1f78f911714fee071ab8 Mon Sep 17 00:00:00 2001 | ||
2 | From: Sascha Hauer <s.hauer@pengutronix.de> | ||
3 | Date: Mon, 4 Jun 2012 14:58:07 +0200 | ||
4 | Subject: [PATCH 24/67] ARM i.MX53: Fix PLL4 base address | ||
5 | |||
6 | commit cdd781ab1906d039c2a93078385645d2d5af8491 upstream. | ||
7 | |||
8 | MX53_DPLL4_BASE accidently returned the base address of PLL3. | ||
9 | Fix this. | ||
10 | |||
11 | Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> | ||
12 | [bwh: Backported to 3.2: adjust filename] | ||
13 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
14 | --- | ||
15 | arch/arm/mach-mx5/crm_regs.h | 2 +- | ||
16 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
17 | |||
18 | diff --git a/arch/arm/mach-mx5/crm_regs.h b/arch/arm/mach-mx5/crm_regs.h | ||
19 | index 5e11ba7..5e3f1f0 100644 | ||
20 | --- a/arch/arm/mach-mx5/crm_regs.h | ||
21 | +++ b/arch/arm/mach-mx5/crm_regs.h | ||
22 | @@ -23,7 +23,7 @@ | ||
23 | #define MX53_DPLL1_BASE MX53_IO_ADDRESS(MX53_PLL1_BASE_ADDR) | ||
24 | #define MX53_DPLL2_BASE MX53_IO_ADDRESS(MX53_PLL2_BASE_ADDR) | ||
25 | #define MX53_DPLL3_BASE MX53_IO_ADDRESS(MX53_PLL3_BASE_ADDR) | ||
26 | -#define MX53_DPLL4_BASE MX53_IO_ADDRESS(MX53_PLL3_BASE_ADDR) | ||
27 | +#define MX53_DPLL4_BASE MX53_IO_ADDRESS(MX53_PLL4_BASE_ADDR) | ||
28 | |||
29 | /* PLL Register Offsets */ | ||
30 | #define MXC_PLL_DP_CTL 0x00 | ||
31 | -- | ||
32 | 1.7.9.5 | ||
33 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0025-usb-musb_gadget-fix-crash-caused-by-dangling-pointer.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0025-usb-musb_gadget-fix-crash-caused-by-dangling-pointer.patch new file mode 100644 index 00000000..d7a896eb --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0025-usb-musb_gadget-fix-crash-caused-by-dangling-pointer.patch | |||
@@ -0,0 +1,50 @@ | |||
1 | From cb8353a20faf8ec806f2e04848e1a8d2ba17194c Mon Sep 17 00:00:00 2001 | ||
2 | From: Grazvydas Ignotas <notasas@gmail.com> | ||
3 | Date: Sat, 26 May 2012 00:21:33 +0300 | ||
4 | Subject: [PATCH 25/67] usb: musb_gadget: fix crash caused by dangling pointer | ||
5 | |||
6 | commit 08f75bf14fadaa81fe362d5acda9b77b113dd0a2 upstream. | ||
7 | |||
8 | usb_ep_ops.disable must clear external copy of the endpoint descriptor, | ||
9 | otherwise musb crashes after loading/unloading several gadget modules | ||
10 | in a row: | ||
11 | |||
12 | Unable to handle kernel paging request at virtual address bf013730 | ||
13 | pgd = c0004000 | ||
14 | [bf013730] *pgd=8f26d811, *pte=00000000, *ppte=00000000 | ||
15 | Internal error: Oops: 7 [#1] | ||
16 | Modules linked in: g_cdc [last unloaded: g_file_storage] | ||
17 | CPU: 0 Not tainted (3.2.17 #647) | ||
18 | PC is at musb_gadget_enable+0x4c/0x24c | ||
19 | LR is at _raw_spin_lock_irqsave+0x4c/0x58 | ||
20 | [<c027c030>] (musb_gadget_enable+0x4c/0x24c) from [<bf01b760>] (gether_connect+0x3c/0x19c [g_cdc]) | ||
21 | [<bf01b760>] (gether_connect+0x3c/0x19c [g_cdc]) from [<bf01ba1c>] (ecm_set_alt+0x15c/0x180 [g_cdc]) | ||
22 | [<bf01ba1c>] (ecm_set_alt+0x15c/0x180 [g_cdc]) from [<bf01ecd4>] (composite_setup+0x85c/0xac4 [g_cdc]) | ||
23 | [<bf01ecd4>] (composite_setup+0x85c/0xac4 [g_cdc]) from [<c027b744>] (musb_g_ep0_irq+0x844/0x924) | ||
24 | [<c027b744>] (musb_g_ep0_irq+0x844/0x924) from [<c027a97c>] (musb_interrupt+0x79c/0x864) | ||
25 | [<c027a97c>] (musb_interrupt+0x79c/0x864) from [<c027aaa8>] (generic_interrupt+0x64/0x7c) | ||
26 | [<c027aaa8>] (generic_interrupt+0x64/0x7c) from [<c00797cc>] (handle_irq_event_percpu+0x28/0x178) | ||
27 | ... | ||
28 | |||
29 | Signed-off-by: Grazvydas Ignotas <notasas@gmail.com> | ||
30 | Signed-off-by: Felipe Balbi <balbi@ti.com> | ||
31 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
32 | --- | ||
33 | drivers/usb/musb/musb_gadget.c | 1 + | ||
34 | 1 file changed, 1 insertion(+) | ||
35 | |||
36 | diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c | ||
37 | index 47349ca..28ea50c 100644 | ||
38 | --- a/drivers/usb/musb/musb_gadget.c | ||
39 | +++ b/drivers/usb/musb/musb_gadget.c | ||
40 | @@ -1206,6 +1206,7 @@ static int musb_gadget_disable(struct usb_ep *ep) | ||
41 | } | ||
42 | |||
43 | musb_ep->desc = NULL; | ||
44 | + musb_ep->end_point.desc = NULL; | ||
45 | |||
46 | /* abort all pending DMA and requests */ | ||
47 | nuke(musb_ep, -ESHUTDOWN); | ||
48 | -- | ||
49 | 1.7.9.5 | ||
50 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0026-mac80211-clean-up-remain-on-channel-on-interface-sto.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0026-mac80211-clean-up-remain-on-channel-on-interface-sto.patch new file mode 100644 index 00000000..0829b272 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0026-mac80211-clean-up-remain-on-channel-on-interface-sto.patch | |||
@@ -0,0 +1,80 @@ | |||
1 | From 7b2ac3203d120ea1afdf29bdcd5e99d59875e348 Mon Sep 17 00:00:00 2001 | ||
2 | From: Johannes Berg <johannes.berg@intel.com> | ||
3 | Date: Thu, 31 May 2012 15:09:27 +0200 | ||
4 | Subject: [PATCH 26/67] mac80211: clean up remain-on-channel on interface stop | ||
5 | |||
6 | commit 71ecfa1893034eeb1c93e02e22ee2ad26d080858 upstream. | ||
7 | |||
8 | When any interface goes down, it could be the one that we | ||
9 | were doing a remain-on-channel with. We therefore need to | ||
10 | cancel the remain-on-channel and flush the related work | ||
11 | structs so they don't run after the interface has been | ||
12 | removed or even destroyed. | ||
13 | |||
14 | It's also possible in this case that an off-channel SKB | ||
15 | was never transmitted, so free it if this is the case. | ||
16 | Note that this can also happen if the driver finishes | ||
17 | the off-channel period without ever starting it. | ||
18 | |||
19 | Reported-by: Nirav Shah <nirav.j2.shah@intel.com> | ||
20 | Signed-off-by: Johannes Berg <johannes.berg@intel.com> | ||
21 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
22 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
23 | --- | ||
24 | net/mac80211/iface.c | 12 ++++++++++++ | ||
25 | net/mac80211/offchannel.c | 16 ++++++++++++++++ | ||
26 | 2 files changed, 28 insertions(+) | ||
27 | |||
28 | diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c | ||
29 | index 30d7355..f4ddf34 100644 | ||
30 | --- a/net/mac80211/iface.c | ||
31 | +++ b/net/mac80211/iface.c | ||
32 | @@ -495,6 +495,18 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, | ||
33 | ieee80211_configure_filter(local); | ||
34 | break; | ||
35 | default: | ||
36 | + mutex_lock(&local->mtx); | ||
37 | + if (local->hw_roc_dev == sdata->dev && | ||
38 | + local->hw_roc_channel) { | ||
39 | + /* ignore return value since this is racy */ | ||
40 | + drv_cancel_remain_on_channel(local); | ||
41 | + ieee80211_queue_work(&local->hw, &local->hw_roc_done); | ||
42 | + } | ||
43 | + mutex_unlock(&local->mtx); | ||
44 | + | ||
45 | + flush_work(&local->hw_roc_start); | ||
46 | + flush_work(&local->hw_roc_done); | ||
47 | + | ||
48 | flush_work(&sdata->work); | ||
49 | /* | ||
50 | * When we get here, the interface is marked down. | ||
51 | diff --git a/net/mac80211/offchannel.c b/net/mac80211/offchannel.c | ||
52 | index 1b239be..db2c215 100644 | ||
53 | --- a/net/mac80211/offchannel.c | ||
54 | +++ b/net/mac80211/offchannel.c | ||
55 | @@ -246,6 +246,22 @@ static void ieee80211_hw_roc_done(struct work_struct *work) | ||
56 | return; | ||
57 | } | ||
58 | |||
59 | + /* was never transmitted */ | ||
60 | + if (local->hw_roc_skb) { | ||
61 | + u64 cookie; | ||
62 | + | ||
63 | + cookie = local->hw_roc_cookie ^ 2; | ||
64 | + | ||
65 | + cfg80211_mgmt_tx_status(local->hw_roc_dev, cookie, | ||
66 | + local->hw_roc_skb->data, | ||
67 | + local->hw_roc_skb->len, false, | ||
68 | + GFP_KERNEL); | ||
69 | + | ||
70 | + kfree_skb(local->hw_roc_skb); | ||
71 | + local->hw_roc_skb = NULL; | ||
72 | + local->hw_roc_skb_for_status = NULL; | ||
73 | + } | ||
74 | + | ||
75 | if (!local->hw_roc_for_tx) | ||
76 | cfg80211_remain_on_channel_expired(local->hw_roc_dev, | ||
77 | local->hw_roc_cookie, | ||
78 | -- | ||
79 | 1.7.9.5 | ||
80 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0027-rt2x00-use-atomic-variable-for-seqno.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0027-rt2x00-use-atomic-variable-for-seqno.patch new file mode 100644 index 00000000..892b6c2e --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0027-rt2x00-use-atomic-variable-for-seqno.patch | |||
@@ -0,0 +1,174 @@ | |||
1 | From da83f4fb1b871f4b4398362b12ca03b82b223a2e Mon Sep 17 00:00:00 2001 | ||
2 | From: Stanislaw Gruszka <sgruszka@redhat.com> | ||
3 | Date: Fri, 1 Jun 2012 11:29:40 +0200 | ||
4 | Subject: [PATCH 27/67] rt2x00: use atomic variable for seqno | ||
5 | |||
6 | commit e5851dac2c95af7159716832300b9f50c62c648e upstream. | ||
7 | |||
8 | Remove spinlock as atomic_t can be used instead. Note we use only 16 | ||
9 | lower bits, upper bits are changed but we impilcilty cast to u16. | ||
10 | |||
11 | This fix possible deadlock on IBSS mode reproted by lockdep: | ||
12 | |||
13 | ================================= | ||
14 | [ INFO: inconsistent lock state ] | ||
15 | 3.4.0-wl+ #4 Not tainted | ||
16 | --------------------------------- | ||
17 | inconsistent {IN-SOFTIRQ-W} -> {SOFTIRQ-ON-W} usage. | ||
18 | kworker/u:2/30374 [HC0[0]:SC0[0]:HE1:SE1] takes: | ||
19 | (&(&intf->seqlock)->rlock){+.?...}, at: [<f9979a20>] rt2x00queue_create_tx_descriptor+0x380/0x490 [rt2x00lib] | ||
20 | {IN-SOFTIRQ-W} state was registered at: | ||
21 | [<c04978ab>] __lock_acquire+0x47b/0x1050 | ||
22 | [<c0498504>] lock_acquire+0x84/0xf0 | ||
23 | [<c0835733>] _raw_spin_lock+0x33/0x40 | ||
24 | [<f9979a20>] rt2x00queue_create_tx_descriptor+0x380/0x490 [rt2x00lib] | ||
25 | [<f9979f2a>] rt2x00queue_write_tx_frame+0x1a/0x300 [rt2x00lib] | ||
26 | [<f997834f>] rt2x00mac_tx+0x7f/0x380 [rt2x00lib] | ||
27 | [<f98fe363>] __ieee80211_tx+0x1b3/0x300 [mac80211] | ||
28 | [<f98ffdf5>] ieee80211_tx+0x105/0x130 [mac80211] | ||
29 | [<f99000dd>] ieee80211_xmit+0xad/0x100 [mac80211] | ||
30 | [<f9900519>] ieee80211_subif_start_xmit+0x2d9/0x930 [mac80211] | ||
31 | [<c0782e87>] dev_hard_start_xmit+0x307/0x660 | ||
32 | [<c079bb71>] sch_direct_xmit+0xa1/0x1e0 | ||
33 | [<c0784bb3>] dev_queue_xmit+0x183/0x730 | ||
34 | [<c078c27a>] neigh_resolve_output+0xfa/0x1e0 | ||
35 | [<c07b436a>] ip_finish_output+0x24a/0x460 | ||
36 | [<c07b4897>] ip_output+0xb7/0x100 | ||
37 | [<c07b2d60>] ip_local_out+0x20/0x60 | ||
38 | [<c07e01ff>] igmpv3_sendpack+0x4f/0x60 | ||
39 | [<c07e108f>] igmp_ifc_timer_expire+0x29f/0x330 | ||
40 | [<c04520fc>] run_timer_softirq+0x15c/0x2f0 | ||
41 | [<c0449e3e>] __do_softirq+0xae/0x1e0 | ||
42 | irq event stamp: 18380437 | ||
43 | hardirqs last enabled at (18380437): [<c0526027>] __slab_alloc.clone.3+0x67/0x5f0 | ||
44 | hardirqs last disabled at (18380436): [<c0525ff3>] __slab_alloc.clone.3+0x33/0x5f0 | ||
45 | softirqs last enabled at (18377616): [<c0449eb3>] __do_softirq+0x123/0x1e0 | ||
46 | softirqs last disabled at (18377611): [<c041278d>] do_softirq+0x9d/0xe0 | ||
47 | |||
48 | other info that might help us debug this: | ||
49 | Possible unsafe locking scenario: | ||
50 | |||
51 | CPU0 | ||
52 | ---- | ||
53 | lock(&(&intf->seqlock)->rlock); | ||
54 | <Interrupt> | ||
55 | lock(&(&intf->seqlock)->rlock); | ||
56 | |||
57 | *** DEADLOCK *** | ||
58 | |||
59 | 4 locks held by kworker/u:2/30374: | ||
60 | #0: (wiphy_name(local->hw.wiphy)){++++.+}, at: [<c045cf99>] process_one_work+0x109/0x3f0 | ||
61 | #1: ((&sdata->work)){+.+.+.}, at: [<c045cf99>] process_one_work+0x109/0x3f0 | ||
62 | #2: (&ifibss->mtx){+.+.+.}, at: [<f98f005b>] ieee80211_ibss_work+0x1b/0x470 [mac80211] | ||
63 | #3: (&intf->beacon_skb_mutex){+.+...}, at: [<f997a644>] rt2x00queue_update_beacon+0x24/0x50 [rt2x00lib] | ||
64 | |||
65 | stack backtrace: | ||
66 | Pid: 30374, comm: kworker/u:2 Not tainted 3.4.0-wl+ #4 | ||
67 | Call Trace: | ||
68 | [<c04962a6>] print_usage_bug+0x1f6/0x220 | ||
69 | [<c0496a12>] mark_lock+0x2c2/0x300 | ||
70 | [<c0495ff0>] ? check_usage_forwards+0xc0/0xc0 | ||
71 | [<c04978ec>] __lock_acquire+0x4bc/0x1050 | ||
72 | [<c0527890>] ? __kmalloc_track_caller+0x1c0/0x1d0 | ||
73 | [<c0777fb6>] ? copy_skb_header+0x26/0x90 | ||
74 | [<c0498504>] lock_acquire+0x84/0xf0 | ||
75 | [<f9979a20>] ? rt2x00queue_create_tx_descriptor+0x380/0x490 [rt2x00lib] | ||
76 | [<c0835733>] _raw_spin_lock+0x33/0x40 | ||
77 | [<f9979a20>] ? rt2x00queue_create_tx_descriptor+0x380/0x490 [rt2x00lib] | ||
78 | [<f9979a20>] rt2x00queue_create_tx_descriptor+0x380/0x490 [rt2x00lib] | ||
79 | [<f997a5cf>] rt2x00queue_update_beacon_locked+0x5f/0xb0 [rt2x00lib] | ||
80 | [<f997a64d>] rt2x00queue_update_beacon+0x2d/0x50 [rt2x00lib] | ||
81 | [<f9977e3a>] rt2x00mac_bss_info_changed+0x1ca/0x200 [rt2x00lib] | ||
82 | [<f9977c70>] ? rt2x00mac_remove_interface+0x70/0x70 [rt2x00lib] | ||
83 | [<f98e4dd0>] ieee80211_bss_info_change_notify+0xe0/0x1d0 [mac80211] | ||
84 | [<f98ef7b8>] __ieee80211_sta_join_ibss+0x3b8/0x610 [mac80211] | ||
85 | [<c0496ab4>] ? mark_held_locks+0x64/0xc0 | ||
86 | [<c0440012>] ? virt_efi_query_capsule_caps+0x12/0x50 | ||
87 | [<f98efb09>] ieee80211_sta_join_ibss+0xf9/0x140 [mac80211] | ||
88 | [<f98f0456>] ieee80211_ibss_work+0x416/0x470 [mac80211] | ||
89 | [<c0496d8b>] ? trace_hardirqs_on+0xb/0x10 | ||
90 | [<c077683b>] ? skb_dequeue+0x4b/0x70 | ||
91 | [<f98f207f>] ieee80211_iface_work+0x13f/0x230 [mac80211] | ||
92 | [<c045cf99>] ? process_one_work+0x109/0x3f0 | ||
93 | [<c045d015>] process_one_work+0x185/0x3f0 | ||
94 | [<c045cf99>] ? process_one_work+0x109/0x3f0 | ||
95 | [<f98f1f40>] ? ieee80211_teardown_sdata+0xa0/0xa0 [mac80211] | ||
96 | [<c045ed86>] worker_thread+0x116/0x270 | ||
97 | [<c045ec70>] ? manage_workers+0x1e0/0x1e0 | ||
98 | [<c0462f64>] kthread+0x84/0x90 | ||
99 | [<c0462ee0>] ? __init_kthread_worker+0x60/0x60 | ||
100 | [<c083d382>] kernel_thread_helper+0x6/0x10 | ||
101 | |||
102 | Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> | ||
103 | Acked-by: Helmut Schaa <helmut.schaa@googlemail.com> | ||
104 | Acked-by: Gertjan van Wingerde <gwingerde@gmail.com> | ||
105 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
106 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
107 | --- | ||
108 | drivers/net/wireless/rt2x00/rt2x00.h | 3 +-- | ||
109 | drivers/net/wireless/rt2x00/rt2x00mac.c | 1 - | ||
110 | drivers/net/wireless/rt2x00/rt2x00queue.c | 13 ++++++------- | ||
111 | 3 files changed, 7 insertions(+), 10 deletions(-) | ||
112 | |||
113 | diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h | ||
114 | index 99ff12d..c778164 100644 | ||
115 | --- a/drivers/net/wireless/rt2x00/rt2x00.h | ||
116 | +++ b/drivers/net/wireless/rt2x00/rt2x00.h | ||
117 | @@ -390,8 +390,7 @@ struct rt2x00_intf { | ||
118 | * for hardware which doesn't support hardware | ||
119 | * sequence counting. | ||
120 | */ | ||
121 | - spinlock_t seqlock; | ||
122 | - u16 seqno; | ||
123 | + atomic_t seqno; | ||
124 | }; | ||
125 | |||
126 | static inline struct rt2x00_intf* vif_to_intf(struct ieee80211_vif *vif) | ||
127 | diff --git a/drivers/net/wireless/rt2x00/rt2x00mac.c b/drivers/net/wireless/rt2x00/rt2x00mac.c | ||
128 | index 373dae1..921da9a 100644 | ||
129 | --- a/drivers/net/wireless/rt2x00/rt2x00mac.c | ||
130 | +++ b/drivers/net/wireless/rt2x00/rt2x00mac.c | ||
131 | @@ -277,7 +277,6 @@ int rt2x00mac_add_interface(struct ieee80211_hw *hw, | ||
132 | else | ||
133 | rt2x00dev->intf_sta_count++; | ||
134 | |||
135 | - spin_lock_init(&intf->seqlock); | ||
136 | mutex_init(&intf->beacon_skb_mutex); | ||
137 | intf->beacon = entry; | ||
138 | |||
139 | diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c | ||
140 | index 9b1b2b7..50f92d5 100644 | ||
141 | --- a/drivers/net/wireless/rt2x00/rt2x00queue.c | ||
142 | +++ b/drivers/net/wireless/rt2x00/rt2x00queue.c | ||
143 | @@ -207,6 +207,7 @@ static void rt2x00queue_create_tx_descriptor_seq(struct rt2x00_dev *rt2x00dev, | ||
144 | struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); | ||
145 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; | ||
146 | struct rt2x00_intf *intf = vif_to_intf(tx_info->control.vif); | ||
147 | + u16 seqno; | ||
148 | |||
149 | if (!(tx_info->flags & IEEE80211_TX_CTL_ASSIGN_SEQ)) | ||
150 | return; | ||
151 | @@ -227,15 +228,13 @@ static void rt2x00queue_create_tx_descriptor_seq(struct rt2x00_dev *rt2x00dev, | ||
152 | * sequence counting per-frame, since those will override the | ||
153 | * sequence counter given by mac80211. | ||
154 | */ | ||
155 | - spin_lock(&intf->seqlock); | ||
156 | - | ||
157 | if (test_bit(ENTRY_TXD_FIRST_FRAGMENT, &txdesc->flags)) | ||
158 | - intf->seqno += 0x10; | ||
159 | - hdr->seq_ctrl &= cpu_to_le16(IEEE80211_SCTL_FRAG); | ||
160 | - hdr->seq_ctrl |= cpu_to_le16(intf->seqno); | ||
161 | - | ||
162 | - spin_unlock(&intf->seqlock); | ||
163 | + seqno = atomic_add_return(0x10, &intf->seqno); | ||
164 | + else | ||
165 | + seqno = atomic_read(&intf->seqno); | ||
166 | |||
167 | + hdr->seq_ctrl &= cpu_to_le16(IEEE80211_SCTL_FRAG); | ||
168 | + hdr->seq_ctrl |= cpu_to_le16(seqno); | ||
169 | } | ||
170 | |||
171 | static void rt2x00queue_create_tx_descriptor_plcp(struct rt2x00_dev *rt2x00dev, | ||
172 | -- | ||
173 | 1.7.9.5 | ||
174 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0028-iwlwifi-disable-WoWLAN-if-CONFIG_PM_SLEEP.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0028-iwlwifi-disable-WoWLAN-if-CONFIG_PM_SLEEP.patch new file mode 100644 index 00000000..29025929 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0028-iwlwifi-disable-WoWLAN-if-CONFIG_PM_SLEEP.patch | |||
@@ -0,0 +1,44 @@ | |||
1 | From 17276afbec2e85771fb30bc2ea9150e4d75ccc89 Mon Sep 17 00:00:00 2001 | ||
2 | From: Johannes Berg <johannes.berg@intel.com> | ||
3 | Date: Mon, 4 Jun 2012 13:43:11 +0200 | ||
4 | Subject: [PATCH 28/67] iwlwifi: disable WoWLAN if !CONFIG_PM_SLEEP | ||
5 | |||
6 | commit fcb6ff5e2cb83e1de10631f6621f45ca3401bf61 upstream. | ||
7 | |||
8 | If CONFIG_PM_SLEEP is disabled, then iwlwifi doesn't | ||
9 | support suspend/resume handlers and thus mac80211 | ||
10 | (correctly) refuses advertising WoWLAN. Disable | ||
11 | WoWLAN in the driver in this case. | ||
12 | |||
13 | Reported-by: Sebastian Kemper <sebastian_ml@gmx.net> | ||
14 | Signed-off-by: Johannes Berg <johannes.berg@intel.com> | ||
15 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
16 | [bwh: Backported to 3.2: adjust filename, context] | ||
17 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
18 | --- | ||
19 | drivers/net/wireless/iwlwifi/iwl-agn.c | 2 ++ | ||
20 | 1 file changed, 2 insertions(+) | ||
21 | |||
22 | diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c | ||
23 | index d7d2512..8b88e87 100644 | ||
24 | --- a/drivers/net/wireless/iwlwifi/iwl-agn.c | ||
25 | +++ b/drivers/net/wireless/iwlwifi/iwl-agn.c | ||
26 | @@ -1696,6 +1696,7 @@ static int iwlagn_mac_setup_register(struct iwl_priv *priv, | ||
27 | WIPHY_FLAG_DISABLE_BEACON_HINTS | | ||
28 | WIPHY_FLAG_IBSS_RSN; | ||
29 | |||
30 | +#ifdef CONFIG_PM_SLEEP | ||
31 | if (priv->ucode_wowlan.code.len && device_can_wakeup(bus(priv)->dev)) { | ||
32 | hw->wiphy->wowlan.flags = WIPHY_WOWLAN_MAGIC_PKT | | ||
33 | WIPHY_WOWLAN_DISCONNECT | | ||
34 | @@ -1712,6 +1713,7 @@ static int iwlagn_mac_setup_register(struct iwl_priv *priv, | ||
35 | hw->wiphy->wowlan.pattern_max_len = | ||
36 | IWLAGN_WOWLAN_MAX_PATTERN_LEN; | ||
37 | } | ||
38 | +#endif | ||
39 | |||
40 | if (iwlagn_mod_params.power_save) | ||
41 | hw->wiphy->flags |= WIPHY_FLAG_PS_ON_BY_DEFAULT; | ||
42 | -- | ||
43 | 1.7.9.5 | ||
44 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0029-ASoC-wm8994-Ensure-all-AIFnCLK-events-are-run-from-t.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0029-ASoC-wm8994-Ensure-all-AIFnCLK-events-are-run-from-t.patch new file mode 100644 index 00000000..4b600f20 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0029-ASoC-wm8994-Ensure-all-AIFnCLK-events-are-run-from-t.patch | |||
@@ -0,0 +1,66 @@ | |||
1 | From d3ca90f12aa66e72ccb2e1674664d498971f0d77 Mon Sep 17 00:00:00 2001 | ||
2 | From: Mark Brown <broonie@opensource.wolfsonmicro.com> | ||
3 | Date: Tue, 5 Jun 2012 12:25:19 +0100 | ||
4 | Subject: [PATCH 29/67] ASoC: wm8994: Ensure all AIFnCLK events are run from | ||
5 | the _late variants | ||
6 | |||
7 | commit c8fdc1b56611faa7b38eab6b99da5e20113661ff upstream. | ||
8 | |||
9 | Ensure that all the actions get taken at appropriate times by calling the | ||
10 | _PRE and _POST events for the aifNclk_ev functions explicitly. | ||
11 | |||
12 | Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> | ||
13 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
14 | --- | ||
15 | sound/soc/codecs/wm8994.c | 12 ++++++++---- | ||
16 | 1 file changed, 8 insertions(+), 4 deletions(-) | ||
17 | |||
18 | diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c | ||
19 | index 3e7aa22..3de9c6a 100644 | ||
20 | --- a/sound/soc/codecs/wm8994.c | ||
21 | +++ b/sound/soc/codecs/wm8994.c | ||
22 | @@ -1090,17 +1090,19 @@ static int late_enable_ev(struct snd_soc_dapm_widget *w, | ||
23 | switch (event) { | ||
24 | case SND_SOC_DAPM_PRE_PMU: | ||
25 | if (wm8994->aif1clk_enable) { | ||
26 | - aif1clk_ev(w, kcontrol, event); | ||
27 | + aif1clk_ev(w, kcontrol, SND_SOC_DAPM_PRE_PMU); | ||
28 | snd_soc_update_bits(codec, WM8994_AIF1_CLOCKING_1, | ||
29 | WM8994_AIF1CLK_ENA_MASK, | ||
30 | WM8994_AIF1CLK_ENA); | ||
31 | + aif1clk_ev(w, kcontrol, SND_SOC_DAPM_POST_PMU); | ||
32 | wm8994->aif1clk_enable = 0; | ||
33 | } | ||
34 | if (wm8994->aif2clk_enable) { | ||
35 | - aif2clk_ev(w, kcontrol, event); | ||
36 | + aif2clk_ev(w, kcontrol, SND_SOC_DAPM_PRE_PMU); | ||
37 | snd_soc_update_bits(codec, WM8994_AIF2_CLOCKING_1, | ||
38 | WM8994_AIF2CLK_ENA_MASK, | ||
39 | WM8994_AIF2CLK_ENA); | ||
40 | + aif2clk_ev(w, kcontrol, SND_SOC_DAPM_POST_PMU); | ||
41 | wm8994->aif2clk_enable = 0; | ||
42 | } | ||
43 | break; | ||
44 | @@ -1121,15 +1123,17 @@ static int late_disable_ev(struct snd_soc_dapm_widget *w, | ||
45 | switch (event) { | ||
46 | case SND_SOC_DAPM_POST_PMD: | ||
47 | if (wm8994->aif1clk_disable) { | ||
48 | + aif1clk_ev(w, kcontrol, SND_SOC_DAPM_PRE_PMD); | ||
49 | snd_soc_update_bits(codec, WM8994_AIF1_CLOCKING_1, | ||
50 | WM8994_AIF1CLK_ENA_MASK, 0); | ||
51 | - aif1clk_ev(w, kcontrol, event); | ||
52 | + aif1clk_ev(w, kcontrol, SND_SOC_DAPM_POST_PMD); | ||
53 | wm8994->aif1clk_disable = 0; | ||
54 | } | ||
55 | if (wm8994->aif2clk_disable) { | ||
56 | + aif2clk_ev(w, kcontrol, SND_SOC_DAPM_PRE_PMD); | ||
57 | snd_soc_update_bits(codec, WM8994_AIF2_CLOCKING_1, | ||
58 | WM8994_AIF2CLK_ENA_MASK, 0); | ||
59 | - aif2clk_ev(w, kcontrol, event); | ||
60 | + aif2clk_ev(w, kcontrol, SND_SOC_DAPM_POST_PMD); | ||
61 | wm8994->aif2clk_disable = 0; | ||
62 | } | ||
63 | break; | ||
64 | -- | ||
65 | 1.7.9.5 | ||
66 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0030-ASoC-wm8994-Apply-volume-updates-with-clocks-enabled.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0030-ASoC-wm8994-Apply-volume-updates-with-clocks-enabled.patch new file mode 100644 index 00000000..5d536dbe --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0030-ASoC-wm8994-Apply-volume-updates-with-clocks-enabled.patch | |||
@@ -0,0 +1,170 @@ | |||
1 | From 35621bc53d008a89c20278c6bf5e049addcd4cd1 Mon Sep 17 00:00:00 2001 | ||
2 | From: Mark Brown <broonie@opensource.wolfsonmicro.com> | ||
3 | Date: Tue, 5 Jun 2012 12:31:32 +0100 | ||
4 | Subject: [PATCH 30/67] ASoC: wm8994: Apply volume updates with clocks enabled | ||
5 | |||
6 | commit bfd37bb5f681961e255fd2f346c20fdae2ef3f27 upstream. | ||
7 | |||
8 | Volume updates may not be acted upon if there is no clock applied when | ||
9 | the volume update is written. Ensure this doesn't happen by writing out | ||
10 | registers with volume updates after we enable each of the clocks. | ||
11 | |||
12 | There are more registers updated than before as previously we were | ||
13 | relying on wm_hubs to set those for controls it manages. | ||
14 | |||
15 | Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | sound/soc/codecs/wm8994.c | 93 ++++++++++++++++++++++++++++----------------- | ||
19 | 1 file changed, 58 insertions(+), 35 deletions(-) | ||
20 | |||
21 | diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c | ||
22 | index 3de9c6a..de61b8a 100644 | ||
23 | --- a/sound/soc/codecs/wm8994.c | ||
24 | +++ b/sound/soc/codecs/wm8994.c | ||
25 | @@ -41,6 +41,39 @@ | ||
26 | #define WM8994_NUM_DRC 3 | ||
27 | #define WM8994_NUM_EQ 3 | ||
28 | |||
29 | +static struct { | ||
30 | + unsigned int reg; | ||
31 | + unsigned int mask; | ||
32 | +} wm8994_vu_bits[] = { | ||
33 | + { WM8994_LEFT_LINE_INPUT_1_2_VOLUME, WM8994_IN1_VU }, | ||
34 | + { WM8994_RIGHT_LINE_INPUT_1_2_VOLUME, WM8994_IN1_VU }, | ||
35 | + { WM8994_LEFT_LINE_INPUT_3_4_VOLUME, WM8994_IN2_VU }, | ||
36 | + { WM8994_RIGHT_LINE_INPUT_3_4_VOLUME, WM8994_IN2_VU }, | ||
37 | + { WM8994_SPEAKER_VOLUME_LEFT, WM8994_SPKOUT_VU }, | ||
38 | + { WM8994_SPEAKER_VOLUME_RIGHT, WM8994_SPKOUT_VU }, | ||
39 | + { WM8994_LEFT_OUTPUT_VOLUME, WM8994_HPOUT1_VU }, | ||
40 | + { WM8994_RIGHT_OUTPUT_VOLUME, WM8994_HPOUT1_VU }, | ||
41 | + { WM8994_LEFT_OPGA_VOLUME, WM8994_MIXOUT_VU }, | ||
42 | + { WM8994_RIGHT_OPGA_VOLUME, WM8994_MIXOUT_VU }, | ||
43 | + | ||
44 | + { WM8994_AIF1_DAC1_LEFT_VOLUME, WM8994_AIF1DAC1_VU }, | ||
45 | + { WM8994_AIF1_DAC1_RIGHT_VOLUME, WM8994_AIF1DAC1_VU }, | ||
46 | + { WM8994_AIF1_DAC2_LEFT_VOLUME, WM8994_AIF1DAC2_VU }, | ||
47 | + { WM8994_AIF1_DAC2_RIGHT_VOLUME, WM8994_AIF1DAC2_VU }, | ||
48 | + { WM8994_AIF2_DAC_LEFT_VOLUME, WM8994_AIF2DAC_VU }, | ||
49 | + { WM8994_AIF2_DAC_RIGHT_VOLUME, WM8994_AIF2DAC_VU }, | ||
50 | + { WM8994_AIF1_ADC1_LEFT_VOLUME, WM8994_AIF1ADC1_VU }, | ||
51 | + { WM8994_AIF1_ADC1_RIGHT_VOLUME, WM8994_AIF1ADC1_VU }, | ||
52 | + { WM8994_AIF1_ADC2_LEFT_VOLUME, WM8994_AIF1ADC2_VU }, | ||
53 | + { WM8994_AIF1_ADC2_RIGHT_VOLUME, WM8994_AIF1ADC2_VU }, | ||
54 | + { WM8994_AIF2_ADC_LEFT_VOLUME, WM8994_AIF2ADC_VU }, | ||
55 | + { WM8994_AIF2_ADC_RIGHT_VOLUME, WM8994_AIF1ADC2_VU }, | ||
56 | + { WM8994_DAC1_LEFT_VOLUME, WM8994_DAC1_VU }, | ||
57 | + { WM8994_DAC1_RIGHT_VOLUME, WM8994_DAC1_VU }, | ||
58 | + { WM8994_DAC2_LEFT_VOLUME, WM8994_DAC2_VU }, | ||
59 | + { WM8994_DAC2_RIGHT_VOLUME, WM8994_DAC2_VU }, | ||
60 | +}; | ||
61 | + | ||
62 | static int wm8994_drc_base[] = { | ||
63 | WM8994_AIF1_DRC1_1, | ||
64 | WM8994_AIF1_DRC2_1, | ||
65 | @@ -889,6 +922,7 @@ static int aif1clk_ev(struct snd_soc_dapm_widget *w, | ||
66 | struct snd_soc_codec *codec = w->codec; | ||
67 | struct wm8994 *control = codec->control_data; | ||
68 | int mask = WM8994_AIF1DAC1L_ENA | WM8994_AIF1DAC1R_ENA; | ||
69 | + int i; | ||
70 | int dac; | ||
71 | int adc; | ||
72 | int val; | ||
73 | @@ -947,6 +981,13 @@ static int aif1clk_ev(struct snd_soc_dapm_widget *w, | ||
74 | WM8994_AIF1DAC2L_ENA); | ||
75 | break; | ||
76 | |||
77 | + case SND_SOC_DAPM_POST_PMU: | ||
78 | + for (i = 0; i < ARRAY_SIZE(wm8994_vu_bits); i++) | ||
79 | + snd_soc_write(codec, wm8994_vu_bits[i].reg, | ||
80 | + snd_soc_read(codec, | ||
81 | + wm8994_vu_bits[i].reg)); | ||
82 | + break; | ||
83 | + | ||
84 | case SND_SOC_DAPM_PRE_PMD: | ||
85 | case SND_SOC_DAPM_POST_PMD: | ||
86 | snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_5, | ||
87 | @@ -972,6 +1013,7 @@ static int aif2clk_ev(struct snd_soc_dapm_widget *w, | ||
88 | struct snd_kcontrol *kcontrol, int event) | ||
89 | { | ||
90 | struct snd_soc_codec *codec = w->codec; | ||
91 | + int i; | ||
92 | int dac; | ||
93 | int adc; | ||
94 | int val; | ||
95 | @@ -1022,6 +1064,13 @@ static int aif2clk_ev(struct snd_soc_dapm_widget *w, | ||
96 | WM8994_AIF2DACR_ENA); | ||
97 | break; | ||
98 | |||
99 | + case SND_SOC_DAPM_POST_PMU: | ||
100 | + for (i = 0; i < ARRAY_SIZE(wm8994_vu_bits); i++) | ||
101 | + snd_soc_write(codec, wm8994_vu_bits[i].reg, | ||
102 | + snd_soc_read(codec, | ||
103 | + wm8994_vu_bits[i].reg)); | ||
104 | + break; | ||
105 | + | ||
106 | case SND_SOC_DAPM_PRE_PMD: | ||
107 | case SND_SOC_DAPM_POST_PMD: | ||
108 | snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_5, | ||
109 | @@ -1470,9 +1519,11 @@ SND_SOC_DAPM_POST("Late Disable PGA", late_disable_ev) | ||
110 | |||
111 | static const struct snd_soc_dapm_widget wm8994_lateclk_widgets[] = { | ||
112 | SND_SOC_DAPM_SUPPLY("AIF1CLK", WM8994_AIF1_CLOCKING_1, 0, 0, aif1clk_ev, | ||
113 | - SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_PRE_PMD), | ||
114 | + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU | | ||
115 | + SND_SOC_DAPM_PRE_PMD), | ||
116 | SND_SOC_DAPM_SUPPLY("AIF2CLK", WM8994_AIF2_CLOCKING_1, 0, 0, aif2clk_ev, | ||
117 | - SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_PRE_PMD), | ||
118 | + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU | | ||
119 | + SND_SOC_DAPM_PRE_PMD), | ||
120 | SND_SOC_DAPM_PGA("Direct Voice", SND_SOC_NOPM, 0, 0, NULL, 0), | ||
121 | SND_SOC_DAPM_MIXER("SPKL", WM8994_POWER_MANAGEMENT_3, 8, 0, | ||
122 | left_speaker_mixer, ARRAY_SIZE(left_speaker_mixer)), | ||
123 | @@ -3486,39 +3537,11 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec) | ||
124 | |||
125 | wm8994_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | ||
126 | |||
127 | - /* Latch volume updates (right only; we always do left then right). */ | ||
128 | - snd_soc_update_bits(codec, WM8994_AIF1_DAC1_LEFT_VOLUME, | ||
129 | - WM8994_AIF1DAC1_VU, WM8994_AIF1DAC1_VU); | ||
130 | - snd_soc_update_bits(codec, WM8994_AIF1_DAC1_RIGHT_VOLUME, | ||
131 | - WM8994_AIF1DAC1_VU, WM8994_AIF1DAC1_VU); | ||
132 | - snd_soc_update_bits(codec, WM8994_AIF1_DAC2_LEFT_VOLUME, | ||
133 | - WM8994_AIF1DAC2_VU, WM8994_AIF1DAC2_VU); | ||
134 | - snd_soc_update_bits(codec, WM8994_AIF1_DAC2_RIGHT_VOLUME, | ||
135 | - WM8994_AIF1DAC2_VU, WM8994_AIF1DAC2_VU); | ||
136 | - snd_soc_update_bits(codec, WM8994_AIF2_DAC_LEFT_VOLUME, | ||
137 | - WM8994_AIF2DAC_VU, WM8994_AIF2DAC_VU); | ||
138 | - snd_soc_update_bits(codec, WM8994_AIF2_DAC_RIGHT_VOLUME, | ||
139 | - WM8994_AIF2DAC_VU, WM8994_AIF2DAC_VU); | ||
140 | - snd_soc_update_bits(codec, WM8994_AIF1_ADC1_LEFT_VOLUME, | ||
141 | - WM8994_AIF1ADC1_VU, WM8994_AIF1ADC1_VU); | ||
142 | - snd_soc_update_bits(codec, WM8994_AIF1_ADC1_RIGHT_VOLUME, | ||
143 | - WM8994_AIF1ADC1_VU, WM8994_AIF1ADC1_VU); | ||
144 | - snd_soc_update_bits(codec, WM8994_AIF1_ADC2_LEFT_VOLUME, | ||
145 | - WM8994_AIF1ADC2_VU, WM8994_AIF1ADC2_VU); | ||
146 | - snd_soc_update_bits(codec, WM8994_AIF1_ADC2_RIGHT_VOLUME, | ||
147 | - WM8994_AIF1ADC2_VU, WM8994_AIF1ADC2_VU); | ||
148 | - snd_soc_update_bits(codec, WM8994_AIF2_ADC_LEFT_VOLUME, | ||
149 | - WM8994_AIF2ADC_VU, WM8994_AIF1ADC2_VU); | ||
150 | - snd_soc_update_bits(codec, WM8994_AIF2_ADC_RIGHT_VOLUME, | ||
151 | - WM8994_AIF2ADC_VU, WM8994_AIF1ADC2_VU); | ||
152 | - snd_soc_update_bits(codec, WM8994_DAC1_LEFT_VOLUME, | ||
153 | - WM8994_DAC1_VU, WM8994_DAC1_VU); | ||
154 | - snd_soc_update_bits(codec, WM8994_DAC1_RIGHT_VOLUME, | ||
155 | - WM8994_DAC1_VU, WM8994_DAC1_VU); | ||
156 | - snd_soc_update_bits(codec, WM8994_DAC2_LEFT_VOLUME, | ||
157 | - WM8994_DAC2_VU, WM8994_DAC2_VU); | ||
158 | - snd_soc_update_bits(codec, WM8994_DAC2_RIGHT_VOLUME, | ||
159 | - WM8994_DAC2_VU, WM8994_DAC2_VU); | ||
160 | + /* Latch volume update bits */ | ||
161 | + for (i = 0; i < ARRAY_SIZE(wm8994_vu_bits); i++) | ||
162 | + snd_soc_update_bits(codec, wm8994_vu_bits[i].reg, | ||
163 | + wm8994_vu_bits[i].mask, | ||
164 | + wm8994_vu_bits[i].mask); | ||
165 | |||
166 | /* Set the low bit of the 3D stereo depth so TLV matches */ | ||
167 | snd_soc_update_bits(codec, WM8994_AIF1_DAC1_FILTERS_2, | ||
168 | -- | ||
169 | 1.7.9.5 | ||
170 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0031-iwlwifi-unregister-LEDs-if-mac80211-registration-fai.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0031-iwlwifi-unregister-LEDs-if-mac80211-registration-fai.patch new file mode 100644 index 00000000..51d633ba --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0031-iwlwifi-unregister-LEDs-if-mac80211-registration-fai.patch | |||
@@ -0,0 +1,35 @@ | |||
1 | From 95f7667f3af2005c125446c8a5d59f60a4d05ad7 Mon Sep 17 00:00:00 2001 | ||
2 | From: Johannes Berg <johannes.berg@intel.com> | ||
3 | Date: Tue, 5 Jun 2012 09:38:35 +0200 | ||
4 | Subject: [PATCH 31/67] iwlwifi: unregister LEDs if mac80211 registration | ||
5 | fails | ||
6 | |||
7 | commit 0e1fa7ef25004b9c1a14147bce61c15c2f1c6744 upstream. | ||
8 | |||
9 | Otherwise the LEDs stick around and cause issues the | ||
10 | next time around since they're still there but not | ||
11 | really hooked up. | ||
12 | |||
13 | Signed-off-by: Johannes Berg <johannes.berg@intel.com> | ||
14 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
15 | [bwh: Backported to 3.2: adjust filename] | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | drivers/net/wireless/iwlwifi/iwl-agn.c | 1 + | ||
19 | 1 file changed, 1 insertion(+) | ||
20 | |||
21 | diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c | ||
22 | index 8b88e87..16cdd12 100644 | ||
23 | --- a/drivers/net/wireless/iwlwifi/iwl-agn.c | ||
24 | +++ b/drivers/net/wireless/iwlwifi/iwl-agn.c | ||
25 | @@ -1741,6 +1741,7 @@ static int iwlagn_mac_setup_register(struct iwl_priv *priv, | ||
26 | ret = ieee80211_register_hw(priv->hw); | ||
27 | if (ret) { | ||
28 | IWL_ERR(priv, "Failed to register hw (error %d)\n", ret); | ||
29 | + iwl_leds_exit(priv); | ||
30 | return ret; | ||
31 | } | ||
32 | priv->mac80211_registered = 1; | ||
33 | -- | ||
34 | 1.7.9.5 | ||
35 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0032-cfg80211-fix-interface-combinations-check.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0032-cfg80211-fix-interface-combinations-check.patch new file mode 100644 index 00000000..fd32445e --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0032-cfg80211-fix-interface-combinations-check.patch | |||
@@ -0,0 +1,81 @@ | |||
1 | From 5b6e7b80e2a121632158da46a21f6be9d561ce8c Mon Sep 17 00:00:00 2001 | ||
2 | From: Johannes Berg <johannes.berg@intel.com> | ||
3 | Date: Tue, 5 Jun 2012 12:16:50 +0200 | ||
4 | Subject: [PATCH 32/67] cfg80211: fix interface combinations check | ||
5 | |||
6 | commit 463454b5dbd8dbab6e2fc6c557329e5b811b9c32 upstream. | ||
7 | |||
8 | If a given interface combination doesn't contain | ||
9 | a required interface type then we missed checking | ||
10 | that and erroneously allowed it even though iface | ||
11 | type wasn't there at all. Add a check that makes | ||
12 | sure that all interface types are accounted for. | ||
13 | |||
14 | Reported-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com> | ||
15 | Signed-off-by: Johannes Berg <johannes.berg@intel.com> | ||
16 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
17 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
18 | --- | ||
19 | net/wireless/util.c | 19 ++++++++++++++++++- | ||
20 | 1 file changed, 18 insertions(+), 1 deletion(-) | ||
21 | |||
22 | diff --git a/net/wireless/util.c b/net/wireless/util.c | ||
23 | index 8bf8902..d38815d 100644 | ||
24 | --- a/net/wireless/util.c | ||
25 | +++ b/net/wireless/util.c | ||
26 | @@ -943,6 +943,7 @@ int cfg80211_can_change_interface(struct cfg80211_registered_device *rdev, | ||
27 | enum nl80211_iftype iftype) | ||
28 | { | ||
29 | struct wireless_dev *wdev_iter; | ||
30 | + u32 used_iftypes = BIT(iftype); | ||
31 | int num[NUM_NL80211_IFTYPES]; | ||
32 | int total = 1; | ||
33 | int i, j; | ||
34 | @@ -976,12 +977,14 @@ int cfg80211_can_change_interface(struct cfg80211_registered_device *rdev, | ||
35 | |||
36 | num[wdev_iter->iftype]++; | ||
37 | total++; | ||
38 | + used_iftypes |= BIT(wdev_iter->iftype); | ||
39 | } | ||
40 | mutex_unlock(&rdev->devlist_mtx); | ||
41 | |||
42 | for (i = 0; i < rdev->wiphy.n_iface_combinations; i++) { | ||
43 | const struct ieee80211_iface_combination *c; | ||
44 | struct ieee80211_iface_limit *limits; | ||
45 | + u32 all_iftypes = 0; | ||
46 | |||
47 | c = &rdev->wiphy.iface_combinations[i]; | ||
48 | |||
49 | @@ -996,6 +999,7 @@ int cfg80211_can_change_interface(struct cfg80211_registered_device *rdev, | ||
50 | if (rdev->wiphy.software_iftypes & BIT(iftype)) | ||
51 | continue; | ||
52 | for (j = 0; j < c->n_limits; j++) { | ||
53 | + all_iftypes |= limits[j].types; | ||
54 | if (!(limits[j].types & BIT(iftype))) | ||
55 | continue; | ||
56 | if (limits[j].max < num[iftype]) | ||
57 | @@ -1003,7 +1007,20 @@ int cfg80211_can_change_interface(struct cfg80211_registered_device *rdev, | ||
58 | limits[j].max -= num[iftype]; | ||
59 | } | ||
60 | } | ||
61 | - /* yay, it fits */ | ||
62 | + | ||
63 | + /* | ||
64 | + * Finally check that all iftypes that we're currently | ||
65 | + * using are actually part of this combination. If they | ||
66 | + * aren't then we can't use this combination and have | ||
67 | + * to continue to the next. | ||
68 | + */ | ||
69 | + if ((all_iftypes & used_iftypes) != used_iftypes) | ||
70 | + goto cont; | ||
71 | + | ||
72 | + /* | ||
73 | + * This combination covered all interface types and | ||
74 | + * supported the requested numbers, so we're good. | ||
75 | + */ | ||
76 | kfree(limits); | ||
77 | return 0; | ||
78 | cont: | ||
79 | -- | ||
80 | 1.7.9.5 | ||
81 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0033-mpt2sas-Fix-unsafe-using-smp_processor_id-in-preempt.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0033-mpt2sas-Fix-unsafe-using-smp_processor_id-in-preempt.patch new file mode 100644 index 00000000..d51719d4 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0033-mpt2sas-Fix-unsafe-using-smp_processor_id-in-preempt.patch | |||
@@ -0,0 +1,36 @@ | |||
1 | From 3c997939218ed3d4fec3441eaea74d04392d2007 Mon Sep 17 00:00:00 2001 | ||
2 | From: "nagalakshmi.nandigama@lsi.com" <nagalakshmi.nandigama@lsi.com> | ||
3 | Date: Tue, 17 Apr 2012 11:25:04 +0530 | ||
4 | Subject: [PATCH 33/67] mpt2sas: Fix unsafe using smp_processor_id() in | ||
5 | preemptible | ||
6 | |||
7 | commit a2c658505bf5c75516ee0a79287223e86a2474af upstream. | ||
8 | |||
9 | When CONFIG_DEBUG_PREEMPT is enabled, bug is observed in the smp_processor_id(). | ||
10 | This is because smp_processor_id() is not called in preempt safe condition. | ||
11 | |||
12 | To fix this issue, use raw_smp_processor_id instead of smp_processor_id. | ||
13 | |||
14 | Signed-off-by: Nagalakshmi Nandigama <nagalakshmi.nandigama@lsi.com> | ||
15 | Signed-off-by: James Bottomley <JBottomley@Parallels.com> | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | drivers/scsi/mpt2sas/mpt2sas_base.c | 2 +- | ||
19 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
20 | |||
21 | diff --git a/drivers/scsi/mpt2sas/mpt2sas_base.c b/drivers/scsi/mpt2sas/mpt2sas_base.c | ||
22 | index ac336e1..e903077 100644 | ||
23 | --- a/drivers/scsi/mpt2sas/mpt2sas_base.c | ||
24 | +++ b/drivers/scsi/mpt2sas/mpt2sas_base.c | ||
25 | @@ -1739,7 +1739,7 @@ static inline void _base_writeq(__u64 b, volatile void __iomem *addr, | ||
26 | static inline u8 | ||
27 | _base_get_msix_index(struct MPT2SAS_ADAPTER *ioc) | ||
28 | { | ||
29 | - return ioc->cpu_msix_table[smp_processor_id()]; | ||
30 | + return ioc->cpu_msix_table[raw_smp_processor_id()]; | ||
31 | } | ||
32 | |||
33 | /** | ||
34 | -- | ||
35 | 1.7.9.5 | ||
36 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0034-net-sierra_net-device-IDs-for-Aircard-320U.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0034-net-sierra_net-device-IDs-for-Aircard-320U.patch new file mode 100644 index 00000000..797282b7 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0034-net-sierra_net-device-IDs-for-Aircard-320U.patch | |||
@@ -0,0 +1,70 @@ | |||
1 | From a6d6029227b3b65257a974953df957d28ea190e7 Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn@mork.no> | ||
3 | Date: Tue, 5 Jun 2012 21:18:10 +0000 | ||
4 | Subject: [PATCH 34/67] net: sierra_net: device IDs for Aircard 320U++ | ||
5 | MIME-Version: 1.0 | ||
6 | Content-Type: text/plain; charset=UTF-8 | ||
7 | Content-Transfer-Encoding: 8bit | ||
8 | |||
9 | commit dd03cff23d694cfb0fdae80cb618e7ced05ea696 upstream. | ||
10 | |||
11 | Adding device IDs for Aircard 320U and two other devices | ||
12 | found in the out-of-tree version of this driver. | ||
13 | |||
14 | Cc: linux@sierrawireless.com | ||
15 | Cc: Autif Khan <autif.mlist@gmail.com> | ||
16 | Cc: Tom Cassidy <tomas.cassidy@gmail.com> | ||
17 | Signed-off-by: Bjørn Mork <bjorn@mork.no> | ||
18 | Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
19 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
20 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
21 | --- | ||
22 | drivers/net/usb/sierra_net.c | 14 ++++++++++---- | ||
23 | 1 file changed, 10 insertions(+), 4 deletions(-) | ||
24 | |||
25 | diff --git a/drivers/net/usb/sierra_net.c b/drivers/net/usb/sierra_net.c | ||
26 | index ed1b432..864448b 100644 | ||
27 | --- a/drivers/net/usb/sierra_net.c | ||
28 | +++ b/drivers/net/usb/sierra_net.c | ||
29 | @@ -943,7 +943,7 @@ struct sk_buff *sierra_net_tx_fixup(struct usbnet *dev, struct sk_buff *skb, | ||
30 | } | ||
31 | |||
32 | static const u8 sierra_net_ifnum_list[] = { 7, 10, 11 }; | ||
33 | -static const struct sierra_net_info_data sierra_net_info_data_68A3 = { | ||
34 | +static const struct sierra_net_info_data sierra_net_info_data_direct_ip = { | ||
35 | .rx_urb_size = 8 * 1024, | ||
36 | .whitelist = { | ||
37 | .infolen = ARRAY_SIZE(sierra_net_ifnum_list), | ||
38 | @@ -951,7 +951,7 @@ static const struct sierra_net_info_data sierra_net_info_data_68A3 = { | ||
39 | } | ||
40 | }; | ||
41 | |||
42 | -static const struct driver_info sierra_net_info_68A3 = { | ||
43 | +static const struct driver_info sierra_net_info_direct_ip = { | ||
44 | .description = "Sierra Wireless USB-to-WWAN Modem", | ||
45 | .flags = FLAG_WWAN | FLAG_SEND_ZLP, | ||
46 | .bind = sierra_net_bind, | ||
47 | @@ -959,12 +959,18 @@ static const struct driver_info sierra_net_info_68A3 = { | ||
48 | .status = sierra_net_status, | ||
49 | .rx_fixup = sierra_net_rx_fixup, | ||
50 | .tx_fixup = sierra_net_tx_fixup, | ||
51 | - .data = (unsigned long)&sierra_net_info_data_68A3, | ||
52 | + .data = (unsigned long)&sierra_net_info_data_direct_ip, | ||
53 | }; | ||
54 | |||
55 | static const struct usb_device_id products[] = { | ||
56 | {USB_DEVICE(0x1199, 0x68A3), /* Sierra Wireless USB-to-WWAN modem */ | ||
57 | - .driver_info = (unsigned long) &sierra_net_info_68A3}, | ||
58 | + .driver_info = (unsigned long) &sierra_net_info_direct_ip}, | ||
59 | + {USB_DEVICE(0x0F3D, 0x68A3), /* AT&T Direct IP modem */ | ||
60 | + .driver_info = (unsigned long) &sierra_net_info_direct_ip}, | ||
61 | + {USB_DEVICE(0x1199, 0x68AA), /* Sierra Wireless Direct IP LTE modem */ | ||
62 | + .driver_info = (unsigned long) &sierra_net_info_direct_ip}, | ||
63 | + {USB_DEVICE(0x0F3D, 0x68AA), /* AT&T Direct IP LTE modem */ | ||
64 | + .driver_info = (unsigned long) &sierra_net_info_direct_ip}, | ||
65 | |||
66 | {}, /* last item */ | ||
67 | }; | ||
68 | -- | ||
69 | 1.7.9.5 | ||
70 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0035-ARM-imx6-exit-coherency-when-shutting-down-a-cpu.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0035-ARM-imx6-exit-coherency-when-shutting-down-a-cpu.patch new file mode 100644 index 00000000..e14a5f36 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0035-ARM-imx6-exit-coherency-when-shutting-down-a-cpu.patch | |||
@@ -0,0 +1,98 @@ | |||
1 | From 863d8967cf0028dc6f7ca98d88f4e93045ec143e Mon Sep 17 00:00:00 2001 | ||
2 | From: Shawn Guo <shawn.guo@linaro.org> | ||
3 | Date: Tue, 22 May 2012 22:13:46 +0800 | ||
4 | Subject: [PATCH 35/67] ARM: imx6: exit coherency when shutting down a cpu | ||
5 | |||
6 | commit 602bf40971d7f9a1ec0b7ba2b7e6427849828651 upstream. | ||
7 | |||
8 | There is a system hang issue on imx6q which can easily be seen with | ||
9 | running a cpu hotplug stress testing (hotplug secondary cores from | ||
10 | user space via sysfs interface for thousands iterations). | ||
11 | |||
12 | It turns out that the issue is caused by coherency of the cpu that | ||
13 | is being shut down. When shutting down a cpu, we need to have the | ||
14 | cpu exit coherency to prevent it from receiving cache, TLB, or BTB | ||
15 | maintenance operations broadcast by other CPUs in the cluster. | ||
16 | |||
17 | Copy cpu_enter_lowpower() and cpu_leave_lowpower() from mach-vexpress | ||
18 | to have coherency properly handled in platform_cpu_die(), thus fix | ||
19 | the issue. | ||
20 | |||
21 | Signed-off-by: Shawn Guo <shawn.guo@linaro.org> | ||
22 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
23 | --- | ||
24 | arch/arm/mach-imx/hotplug.c | 42 +++++++++++++++++++++++++++++++++++++++++- | ||
25 | 1 file changed, 41 insertions(+), 1 deletion(-) | ||
26 | |||
27 | diff --git a/arch/arm/mach-imx/hotplug.c b/arch/arm/mach-imx/hotplug.c | ||
28 | index 89493ab..20ed2d5 100644 | ||
29 | --- a/arch/arm/mach-imx/hotplug.c | ||
30 | +++ b/arch/arm/mach-imx/hotplug.c | ||
31 | @@ -12,6 +12,7 @@ | ||
32 | |||
33 | #include <linux/errno.h> | ||
34 | #include <asm/cacheflush.h> | ||
35 | +#include <asm/cp15.h> | ||
36 | #include <mach/common.h> | ||
37 | |||
38 | int platform_cpu_kill(unsigned int cpu) | ||
39 | @@ -19,6 +20,44 @@ int platform_cpu_kill(unsigned int cpu) | ||
40 | return 1; | ||
41 | } | ||
42 | |||
43 | +static inline void cpu_enter_lowpower(void) | ||
44 | +{ | ||
45 | + unsigned int v; | ||
46 | + | ||
47 | + flush_cache_all(); | ||
48 | + asm volatile( | ||
49 | + "mcr p15, 0, %1, c7, c5, 0\n" | ||
50 | + " mcr p15, 0, %1, c7, c10, 4\n" | ||
51 | + /* | ||
52 | + * Turn off coherency | ||
53 | + */ | ||
54 | + " mrc p15, 0, %0, c1, c0, 1\n" | ||
55 | + " bic %0, %0, %3\n" | ||
56 | + " mcr p15, 0, %0, c1, c0, 1\n" | ||
57 | + " mrc p15, 0, %0, c1, c0, 0\n" | ||
58 | + " bic %0, %0, %2\n" | ||
59 | + " mcr p15, 0, %0, c1, c0, 0\n" | ||
60 | + : "=&r" (v) | ||
61 | + : "r" (0), "Ir" (CR_C), "Ir" (0x40) | ||
62 | + : "cc"); | ||
63 | +} | ||
64 | + | ||
65 | +static inline void cpu_leave_lowpower(void) | ||
66 | +{ | ||
67 | + unsigned int v; | ||
68 | + | ||
69 | + asm volatile( | ||
70 | + "mrc p15, 0, %0, c1, c0, 0\n" | ||
71 | + " orr %0, %0, %1\n" | ||
72 | + " mcr p15, 0, %0, c1, c0, 0\n" | ||
73 | + " mrc p15, 0, %0, c1, c0, 1\n" | ||
74 | + " orr %0, %0, %2\n" | ||
75 | + " mcr p15, 0, %0, c1, c0, 1\n" | ||
76 | + : "=&r" (v) | ||
77 | + : "Ir" (CR_C), "Ir" (0x40) | ||
78 | + : "cc"); | ||
79 | +} | ||
80 | + | ||
81 | /* | ||
82 | * platform-specific code to shutdown a CPU | ||
83 | * | ||
84 | @@ -26,9 +65,10 @@ int platform_cpu_kill(unsigned int cpu) | ||
85 | */ | ||
86 | void platform_cpu_die(unsigned int cpu) | ||
87 | { | ||
88 | - flush_cache_all(); | ||
89 | + cpu_enter_lowpower(); | ||
90 | imx_enable_cpu(cpu, false); | ||
91 | cpu_do_idle(); | ||
92 | + cpu_leave_lowpower(); | ||
93 | |||
94 | /* We should never return from idle */ | ||
95 | panic("cpu %d unexpectedly exit from shutdown\n", cpu); | ||
96 | -- | ||
97 | 1.7.9.5 | ||
98 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0036-ARM-i.MX-imx21ads-Fix-overlapping-static-i-o-mapping.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0036-ARM-i.MX-imx21ads-Fix-overlapping-static-i-o-mapping.patch new file mode 100644 index 00000000..e0f48f54 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0036-ARM-i.MX-imx21ads-Fix-overlapping-static-i-o-mapping.patch | |||
@@ -0,0 +1,36 @@ | |||
1 | From b56e5718560c09bd064d57a3de17be1a329f2c65 Mon Sep 17 00:00:00 2001 | ||
2 | From: Jaccon Bastiaansen <jaccon.bastiaansen@gmail.com> | ||
3 | Date: Mon, 30 Apr 2012 11:53:43 +0200 | ||
4 | Subject: [PATCH 36/67] ARM i.MX imx21ads: Fix overlapping static i/o mappings | ||
5 | |||
6 | commit 350ab15bb2ffe7103bc6bf6c634f3c5b286eaf2a upstream. | ||
7 | |||
8 | The statically defined I/O memory regions for the i.MX21 on chip | ||
9 | peripherals and the on board I/O peripherals of the i.MX21ADS board | ||
10 | overlap. This results in a kernel crash during startup. This is fixed | ||
11 | by reducing the memory range for the on board I/O peripherals to the | ||
12 | actually required range. | ||
13 | |||
14 | Signed-off-by: Jaccon Bastiaansen <jaccon.bastiaansen@gmail.com> | ||
15 | Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | arch/arm/mach-imx/mach-mx21ads.c | 2 +- | ||
19 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
20 | |||
21 | diff --git a/arch/arm/mach-imx/mach-mx21ads.c b/arch/arm/mach-imx/mach-mx21ads.c | ||
22 | index 25f8402..ad994b3 100644 | ||
23 | --- a/arch/arm/mach-imx/mach-mx21ads.c | ||
24 | +++ b/arch/arm/mach-imx/mach-mx21ads.c | ||
25 | @@ -32,7 +32,7 @@ | ||
26 | * Memory-mapped I/O on MX21ADS base board | ||
27 | */ | ||
28 | #define MX21ADS_MMIO_BASE_ADDR 0xf5000000 | ||
29 | -#define MX21ADS_MMIO_SIZE SZ_16M | ||
30 | +#define MX21ADS_MMIO_SIZE 0xc00000 | ||
31 | |||
32 | #define MX21ADS_REG_ADDR(offset) (void __force __iomem *) \ | ||
33 | (MX21ADS_MMIO_BASE_ADDR + (offset)) | ||
34 | -- | ||
35 | 1.7.9.5 | ||
36 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0037-NFSv4-Fix-unnecessary-delegation-returns-in-nfs4_do_.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0037-NFSv4-Fix-unnecessary-delegation-returns-in-nfs4_do_.patch new file mode 100644 index 00000000..9f00f9f3 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0037-NFSv4-Fix-unnecessary-delegation-returns-in-nfs4_do_.patch | |||
@@ -0,0 +1,39 @@ | |||
1 | From 2b0262efb8720c3199a4fc4c119de05df5957bbc Mon Sep 17 00:00:00 2001 | ||
2 | From: Trond Myklebust <Trond.Myklebust@netapp.com> | ||
3 | Date: Fri, 8 Jun 2012 10:58:09 -0400 | ||
4 | Subject: [PATCH 37/67] NFSv4: Fix unnecessary delegation returns in | ||
5 | nfs4_do_open | ||
6 | |||
7 | commit 2d0dbc6ae8a5194aaecb9cfffb9053f38fce8b86 upstream. | ||
8 | |||
9 | While nfs4_do_open() expects the fmode argument to be restricted to | ||
10 | combinations of FMODE_READ and FMODE_WRITE, both nfs4_atomic_open() | ||
11 | and nfs4_proc_create will pass the nfs_open_context->mode, | ||
12 | which contains the full fmode_t. | ||
13 | |||
14 | This patch ensures that nfs4_do_open strips the other fmode_t bits, | ||
15 | fixing a problem in which the nfs4_do_open call would result in an | ||
16 | unnecessary delegation return. | ||
17 | |||
18 | Reported-by: Fred Isaman <iisaman@netapp.com> | ||
19 | Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com> | ||
20 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
21 | --- | ||
22 | fs/nfs/nfs4proc.c | 1 + | ||
23 | 1 file changed, 1 insertion(+) | ||
24 | |||
25 | diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c | ||
26 | index a3cae5d..8000459 100644 | ||
27 | --- a/fs/nfs/nfs4proc.c | ||
28 | +++ b/fs/nfs/nfs4proc.c | ||
29 | @@ -1825,6 +1825,7 @@ static struct nfs4_state *nfs4_do_open(struct inode *dir, struct dentry *dentry, | ||
30 | struct nfs4_state *res; | ||
31 | int status; | ||
32 | |||
33 | + fmode &= FMODE_READ|FMODE_WRITE; | ||
34 | do { | ||
35 | status = _nfs4_do_open(dir, dentry, fmode, flags, sattr, cred, &res); | ||
36 | if (status == 0) | ||
37 | -- | ||
38 | 1.7.9.5 | ||
39 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0038-iwlwifi-use-correct-supported-firmware-for-6035-and-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0038-iwlwifi-use-correct-supported-firmware-for-6035-and-.patch new file mode 100644 index 00000000..0bc6aded --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0038-iwlwifi-use-correct-supported-firmware-for-6035-and-.patch | |||
@@ -0,0 +1,88 @@ | |||
1 | From f4ef6f3f77fa0419a906d75f96c4dea111956872 Mon Sep 17 00:00:00 2001 | ||
2 | From: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com> | ||
3 | Date: Tue, 5 Jun 2012 20:24:37 +0200 | ||
4 | Subject: [PATCH 38/67] iwlwifi: use correct supported firmware for 6035 and | ||
5 | 6000g2 | ||
6 | |||
7 | commit d2c8b15d0cb486f4938ba7f2af349d9d1220cb10 upstream. | ||
8 | |||
9 | My patch | ||
10 | |||
11 | iwlwifi: use correct released ucode version | ||
12 | |||
13 | did not correctly report supported firmware | ||
14 | for the 6035 device. This patch fixes it. The | ||
15 | minimum supported firmware version for 6035 | ||
16 | is v6. | ||
17 | |||
18 | Also correct the minimum supported firmware | ||
19 | version for the 6000g2 series of devices. | ||
20 | |||
21 | Signed-off-by: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com> | ||
22 | Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> | ||
23 | Signed-off-by: Johannes Berg <johannes.berg@intel.com> | ||
24 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
25 | [bwh: Backported to 3.2: | ||
26 | - adjust context | ||
27 | - make IWL_DEVICE_6035 identical for IWL_DEVICE_6030 except for the | ||
28 | ucode_api_* fields] | ||
29 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
30 | --- | ||
31 | drivers/net/wireless/iwlwifi/iwl-6000.c | 22 ++++++++++++++++++++-- | ||
32 | 1 file changed, 20 insertions(+), 2 deletions(-) | ||
33 | |||
34 | diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c | ||
35 | index 0b9f797..9b6b010 100644 | ||
36 | --- a/drivers/net/wireless/iwlwifi/iwl-6000.c | ||
37 | +++ b/drivers/net/wireless/iwlwifi/iwl-6000.c | ||
38 | @@ -49,17 +49,20 @@ | ||
39 | #define IWL6000_UCODE_API_MAX 6 | ||
40 | #define IWL6050_UCODE_API_MAX 5 | ||
41 | #define IWL6000G2_UCODE_API_MAX 6 | ||
42 | +#define IWL6035_UCODE_API_MAX 6 | ||
43 | |||
44 | /* Oldest version we won't warn about */ | ||
45 | #define IWL6000_UCODE_API_OK 4 | ||
46 | #define IWL6000G2_UCODE_API_OK 5 | ||
47 | #define IWL6050_UCODE_API_OK 5 | ||
48 | #define IWL6000G2B_UCODE_API_OK 6 | ||
49 | +#define IWL6035_UCODE_API_OK 6 | ||
50 | |||
51 | /* Lowest firmware API version supported */ | ||
52 | #define IWL6000_UCODE_API_MIN 4 | ||
53 | #define IWL6050_UCODE_API_MIN 4 | ||
54 | -#define IWL6000G2_UCODE_API_MIN 4 | ||
55 | +#define IWL6000G2_UCODE_API_MIN 5 | ||
56 | +#define IWL6035_UCODE_API_MIN 6 | ||
57 | |||
58 | #define IWL6000_FW_PRE "iwlwifi-6000-" | ||
59 | #define IWL6000_MODULE_FIRMWARE(api) IWL6000_FW_PRE __stringify(api) ".ucode" | ||
60 | @@ -436,9 +439,24 @@ struct iwl_cfg iwl6030_2bg_cfg = { | ||
61 | IWL_DEVICE_6030, | ||
62 | }; | ||
63 | |||
64 | +#define IWL_DEVICE_6035 \ | ||
65 | + .fw_name_pre = IWL6030_FW_PRE, \ | ||
66 | + .ucode_api_max = IWL6035_UCODE_API_MAX, \ | ||
67 | + .ucode_api_ok = IWL6035_UCODE_API_OK, \ | ||
68 | + .ucode_api_min = IWL6035_UCODE_API_MIN, \ | ||
69 | + .eeprom_ver = EEPROM_6030_EEPROM_VERSION, \ | ||
70 | + .eeprom_calib_ver = EEPROM_6030_TX_POWER_VERSION, \ | ||
71 | + .lib = &iwl6030_lib, \ | ||
72 | + .base_params = &iwl6000_g2_base_params, \ | ||
73 | + .bt_params = &iwl6000_bt_params, \ | ||
74 | + .need_dc_calib = true, \ | ||
75 | + .need_temp_offset_calib = true, \ | ||
76 | + .led_mode = IWL_LED_RF_STATE, \ | ||
77 | + .adv_pm = true | ||
78 | + | ||
79 | struct iwl_cfg iwl6035_2agn_cfg = { | ||
80 | .name = "6035 Series 2x2 AGN/BT", | ||
81 | - IWL_DEVICE_6030, | ||
82 | + IWL_DEVICE_6035, | ||
83 | .ht_params = &iwl6000_ht_params, | ||
84 | }; | ||
85 | |||
86 | -- | ||
87 | 1.7.9.5 | ||
88 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0039-iwlwifi-disable-the-buggy-chain-extension-feature-in.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0039-iwlwifi-disable-the-buggy-chain-extension-feature-in.patch new file mode 100644 index 00000000..e13734be --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0039-iwlwifi-disable-the-buggy-chain-extension-feature-in.patch | |||
@@ -0,0 +1,52 @@ | |||
1 | From 0011758ae1822920fd9c6bcd18cafb780971a7b3 Mon Sep 17 00:00:00 2001 | ||
2 | From: Emmanuel Grumbach <emmanuel.grumbach@intel.com> | ||
3 | Date: Wed, 6 Jun 2012 13:55:02 +0200 | ||
4 | Subject: [PATCH 39/67] iwlwifi: disable the buggy chain extension feature in | ||
5 | HW | ||
6 | |||
7 | commit d012d04e4d6312ea157b6cf19e9689af934f5aa7 upstream. | ||
8 | |||
9 | This feature has been reported to be buggy and enabled by | ||
10 | default. We therefore need to disable it manually. | ||
11 | |||
12 | Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> | ||
13 | Signed-off-by: Johannes Berg <johannes.berg@intel.com> | ||
14 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
15 | [bwh: Backported to 3.2 as instructed: pass bus(trans) to iwl_write_prph()] | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | drivers/net/wireless/iwlwifi/iwl-prph.h | 1 + | ||
19 | drivers/net/wireless/iwlwifi/iwl-trans-pcie.c | 5 +++++ | ||
20 | 2 files changed, 6 insertions(+) | ||
21 | |||
22 | diff --git a/drivers/net/wireless/iwlwifi/iwl-prph.h b/drivers/net/wireless/iwlwifi/iwl-prph.h | ||
23 | index d9b089e..0683006 100644 | ||
24 | --- a/drivers/net/wireless/iwlwifi/iwl-prph.h | ||
25 | +++ b/drivers/net/wireless/iwlwifi/iwl-prph.h | ||
26 | @@ -228,6 +228,7 @@ | ||
27 | #define SCD_TXFACT (SCD_BASE + 0x10) | ||
28 | #define SCD_ACTIVE (SCD_BASE + 0x14) | ||
29 | #define SCD_QUEUECHAIN_SEL (SCD_BASE + 0xe8) | ||
30 | +#define SCD_CHAINEXT_EN (SCD_BASE + 0x244) | ||
31 | #define SCD_AGGR_SEL (SCD_BASE + 0x248) | ||
32 | #define SCD_INTERRUPT_MASK (SCD_BASE + 0x108) | ||
33 | |||
34 | diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c | ||
35 | index 5f17ab8..5815cf5 100644 | ||
36 | --- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c | ||
37 | +++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c | ||
38 | @@ -868,6 +868,11 @@ static void iwl_trans_pcie_tx_start(struct iwl_trans *trans) | ||
39 | iwl_write_prph(bus(trans), SCD_DRAM_BASE_ADDR, | ||
40 | trans_pcie->scd_bc_tbls.dma >> 10); | ||
41 | |||
42 | + /* The chain extension of the SCD doesn't work well. This feature is | ||
43 | + * enabled by default by the HW, so we need to disable it manually. | ||
44 | + */ | ||
45 | + iwl_write_prph(bus(trans), SCD_CHAINEXT_EN, 0); | ||
46 | + | ||
47 | /* Enable DMA channel */ | ||
48 | for (chan = 0; chan < FH_TCSR_CHNL_NUM ; chan++) | ||
49 | iwl_write_direct32(bus(trans), FH_TCSR_CHNL_TX_CONFIG_REG(chan), | ||
50 | -- | ||
51 | 1.7.9.5 | ||
52 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0040-ALSA-hda-Add-codec-no_jack_detect-flag.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0040-ALSA-hda-Add-codec-no_jack_detect-flag.patch new file mode 100644 index 00000000..619df983 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0040-ALSA-hda-Add-codec-no_jack_detect-flag.patch | |||
@@ -0,0 +1,47 @@ | |||
1 | From 6b9a3be3e496ccc4125e0c6daded90e823864642 Mon Sep 17 00:00:00 2001 | ||
2 | From: Takashi Iwai <tiwai@suse.de> | ||
3 | Date: Mon, 13 Feb 2012 11:55:02 +0100 | ||
4 | Subject: [PATCH 40/67] ALSA: hda - Add codec->no_jack_detect flag | ||
5 | |||
6 | commit 71b1e9e43d5199f57c109e20c0f4dffc5c048130 upstream. | ||
7 | |||
8 | Add a new flag to indicate that the codec has no jack-detection cap. | ||
9 | This flag should be set for hardwares that have no jack-detect | ||
10 | implementation although the codec chip itself supports it. | ||
11 | |||
12 | Signed-off-by: Takashi Iwai <tiwai@suse.de> | ||
13 | [bwh: Backported to 3.2: adjust filename and context for is_jack_detectable()] | ||
14 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
15 | --- | ||
16 | sound/pci/hda/hda_codec.h | 1 + | ||
17 | sound/pci/hda/hda_local.h | 2 ++ | ||
18 | 2 files changed, 3 insertions(+) | ||
19 | |||
20 | diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h | ||
21 | index 71f6744..78b2223 100644 | ||
22 | --- a/sound/pci/hda/hda_codec.h | ||
23 | +++ b/sound/pci/hda/hda_codec.h | ||
24 | @@ -858,6 +858,7 @@ struct hda_codec { | ||
25 | unsigned int pins_shutup:1; /* pins are shut up */ | ||
26 | unsigned int no_trigger_sense:1; /* don't trigger at pin-sensing */ | ||
27 | unsigned int ignore_misc_bit:1; /* ignore MISC_NO_PRESENCE bit */ | ||
28 | + unsigned int no_jack_detect:1; /* Machine has no jack-detection */ | ||
29 | #ifdef CONFIG_SND_HDA_POWER_SAVE | ||
30 | unsigned int power_on :1; /* current (global) power-state */ | ||
31 | unsigned int power_transition :1; /* power-state in transition */ | ||
32 | diff --git a/sound/pci/hda/hda_local.h b/sound/pci/hda/hda_local.h | ||
33 | index 368f0c5..c78b753 100644 | ||
34 | --- a/sound/pci/hda/hda_local.h | ||
35 | +++ b/sound/pci/hda/hda_local.h | ||
36 | @@ -515,6 +515,8 @@ int snd_hda_jack_detect(struct hda_codec *codec, hda_nid_t nid); | ||
37 | |||
38 | static inline bool is_jack_detectable(struct hda_codec *codec, hda_nid_t nid) | ||
39 | { | ||
40 | + if (codec->no_jack_detect) | ||
41 | + return false; | ||
42 | if (!(snd_hda_query_pin_caps(codec, nid) & AC_PINCAP_PRES_DETECT)) | ||
43 | return false; | ||
44 | if (!codec->ignore_misc_bit && | ||
45 | -- | ||
46 | 1.7.9.5 | ||
47 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0041-ALSA-hda-add-support-for-Uniwill-ECS-M31EI-notebook.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0041-ALSA-hda-add-support-for-Uniwill-ECS-M31EI-notebook.patch new file mode 100644 index 00000000..f040ea2f --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0041-ALSA-hda-add-support-for-Uniwill-ECS-M31EI-notebook.patch | |||
@@ -0,0 +1,32 @@ | |||
1 | From 0c29db802dc506ead06e7fac2b2d4d139e818ae3 Mon Sep 17 00:00:00 2001 | ||
2 | From: Jaroslav Kysela <perex@perex.cz> | ||
3 | Date: Tue, 7 Feb 2012 14:18:14 +0100 | ||
4 | Subject: [PATCH 41/67] ALSA: hda - add support for Uniwill ECS M31EI notebook | ||
5 | |||
6 | commit 416846d2b31fc740ed9d5a5ec116964fb43c4358 upstream. | ||
7 | |||
8 | This hardware requires same fixup for the node 0x0f like Asus A6Rp. | ||
9 | More information: https://bugzilla.redhat.com/show_bug.cgi?id=785417 | ||
10 | |||
11 | Signed-off-by: Jaroslav Kysela <perex@perex.cz> | ||
12 | Signed-off-by: Takashi Iwai <tiwai@suse.de> | ||
13 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
14 | --- | ||
15 | sound/pci/hda/patch_realtek.c | 1 + | ||
16 | 1 file changed, 1 insertion(+) | ||
17 | |||
18 | diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c | ||
19 | index 0bc5a46..7d304af 100644 | ||
20 | --- a/sound/pci/hda/patch_realtek.c | ||
21 | +++ b/sound/pci/hda/patch_realtek.c | ||
22 | @@ -5318,6 +5318,7 @@ static const struct alc_fixup alc861_fixups[] = { | ||
23 | |||
24 | static const struct snd_pci_quirk alc861_fixup_tbl[] = { | ||
25 | SND_PCI_QUIRK_VENDOR(0x1043, "ASUS laptop", PINFIX_ASUS_A6RP), | ||
26 | + SND_PCI_QUIRK(0x1584, 0x0000, "Uniwill ECS M31EI", PINFIX_ASUS_A6RP), | ||
27 | SND_PCI_QUIRK(0x1584, 0x2b01, "Haier W18", PINFIX_ASUS_A6RP), | ||
28 | SND_PCI_QUIRK(0x1734, 0x10c7, "FSC Amilo Pi1505", PINFIX_FSC_AMILO_PI1505), | ||
29 | {} | ||
30 | -- | ||
31 | 1.7.9.5 | ||
32 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0042-ALSA-hda-Suppress-auto-mute-feature-on-some-machines.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0042-ALSA-hda-Suppress-auto-mute-feature-on-some-machines.patch new file mode 100644 index 00000000..588a0ede --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0042-ALSA-hda-Suppress-auto-mute-feature-on-some-machines.patch | |||
@@ -0,0 +1,93 @@ | |||
1 | From bc9c3f7a38a28cba8ad0455548f064a81a8c9a69 Mon Sep 17 00:00:00 2001 | ||
2 | From: Takashi Iwai <tiwai@suse.de> | ||
3 | Date: Mon, 13 Feb 2012 11:56:25 +0100 | ||
4 | Subject: [PATCH 42/67] ALSA: hda - Suppress auto-mute feature on some | ||
5 | machines with ALC861 | ||
6 | |||
7 | commit e652f4c861fb7f1f59ff0828db0d85578471932d upstream. | ||
8 | |||
9 | A few machines with ALC861 & co are reported not to work properly with | ||
10 | the auto-mute feature in software. The auto-mute feature is implemented | ||
11 | in the hardware level, and the jack-detection never works with them. | ||
12 | |||
13 | Also, rename the fixup index as ALC861_FIXUP_* to follow the standard. | ||
14 | |||
15 | Signed-off-by: Takashi Iwai <tiwai@suse.de> | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | sound/pci/hda/patch_realtek.c | 38 ++++++++++++++++++++++++++++++-------- | ||
19 | 1 file changed, 30 insertions(+), 8 deletions(-) | ||
20 | |||
21 | diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c | ||
22 | index 7d304af..d4616fb 100644 | ||
23 | --- a/sound/pci/hda/patch_realtek.c | ||
24 | +++ b/sound/pci/hda/patch_realtek.c | ||
25 | @@ -5278,8 +5278,10 @@ static const struct hda_amp_list alc861_loopbacks[] = { | ||
26 | |||
27 | /* Pin config fixes */ | ||
28 | enum { | ||
29 | - PINFIX_FSC_AMILO_PI1505, | ||
30 | - PINFIX_ASUS_A6RP, | ||
31 | + ALC861_FIXUP_FSC_AMILO_PI1505, | ||
32 | + ALC861_FIXUP_AMP_VREF_0F, | ||
33 | + ALC861_FIXUP_NO_JACK_DETECT, | ||
34 | + ALC861_FIXUP_ASUS_A6RP, | ||
35 | }; | ||
36 | |||
37 | /* On some laptops, VREF of pin 0x0f is abused for controlling the main amp */ | ||
38 | @@ -5301,8 +5303,16 @@ static void alc861_fixup_asus_amp_vref_0f(struct hda_codec *codec, | ||
39 | spec->keep_vref_in_automute = 1; | ||
40 | } | ||
41 | |||
42 | +/* suppress the jack-detection */ | ||
43 | +static void alc_fixup_no_jack_detect(struct hda_codec *codec, | ||
44 | + const struct alc_fixup *fix, int action) | ||
45 | +{ | ||
46 | + if (action == ALC_FIXUP_ACT_PRE_PROBE) | ||
47 | + codec->no_jack_detect = 1; | ||
48 | +} | ||
49 | + | ||
50 | static const struct alc_fixup alc861_fixups[] = { | ||
51 | - [PINFIX_FSC_AMILO_PI1505] = { | ||
52 | + [ALC861_FIXUP_FSC_AMILO_PI1505] = { | ||
53 | .type = ALC_FIXUP_PINS, | ||
54 | .v.pins = (const struct alc_pincfg[]) { | ||
55 | { 0x0b, 0x0221101f }, /* HP */ | ||
56 | @@ -5310,17 +5320,29 @@ static const struct alc_fixup alc861_fixups[] = { | ||
57 | { } | ||
58 | } | ||
59 | }, | ||
60 | - [PINFIX_ASUS_A6RP] = { | ||
61 | + [ALC861_FIXUP_AMP_VREF_0F] = { | ||
62 | .type = ALC_FIXUP_FUNC, | ||
63 | .v.func = alc861_fixup_asus_amp_vref_0f, | ||
64 | }, | ||
65 | + [ALC861_FIXUP_NO_JACK_DETECT] = { | ||
66 | + .type = ALC_FIXUP_FUNC, | ||
67 | + .v.func = alc_fixup_no_jack_detect, | ||
68 | + }, | ||
69 | + [ALC861_FIXUP_ASUS_A6RP] = { | ||
70 | + .type = ALC_FIXUP_FUNC, | ||
71 | + .v.func = alc861_fixup_asus_amp_vref_0f, | ||
72 | + .chained = true, | ||
73 | + .chain_id = ALC861_FIXUP_NO_JACK_DETECT, | ||
74 | + } | ||
75 | }; | ||
76 | |||
77 | static const struct snd_pci_quirk alc861_fixup_tbl[] = { | ||
78 | - SND_PCI_QUIRK_VENDOR(0x1043, "ASUS laptop", PINFIX_ASUS_A6RP), | ||
79 | - SND_PCI_QUIRK(0x1584, 0x0000, "Uniwill ECS M31EI", PINFIX_ASUS_A6RP), | ||
80 | - SND_PCI_QUIRK(0x1584, 0x2b01, "Haier W18", PINFIX_ASUS_A6RP), | ||
81 | - SND_PCI_QUIRK(0x1734, 0x10c7, "FSC Amilo Pi1505", PINFIX_FSC_AMILO_PI1505), | ||
82 | + SND_PCI_QUIRK(0x1043, 0x1393, "ASUS A6Rp", ALC861_FIXUP_ASUS_A6RP), | ||
83 | + SND_PCI_QUIRK_VENDOR(0x1043, "ASUS laptop", ALC861_FIXUP_AMP_VREF_0F), | ||
84 | + SND_PCI_QUIRK(0x1462, 0x7254, "HP DX2200", ALC861_FIXUP_NO_JACK_DETECT), | ||
85 | + SND_PCI_QUIRK(0x1584, 0x2b01, "Haier W18", ALC861_FIXUP_AMP_VREF_0F), | ||
86 | + SND_PCI_QUIRK(0x1584, 0x0000, "Uniwill ECS M31EI", ALC861_FIXUP_AMP_VREF_0F), | ||
87 | + SND_PCI_QUIRK(0x1734, 0x10c7, "FSC Amilo Pi1505", ALC861_FIXUP_FSC_AMILO_PI1505), | ||
88 | {} | ||
89 | }; | ||
90 | |||
91 | -- | ||
92 | 1.7.9.5 | ||
93 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0043-ALSA-hda-Add-another-jack-detection-suppression-for-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0043-ALSA-hda-Add-another-jack-detection-suppression-for-.patch new file mode 100644 index 00000000..bfbb1485 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0043-ALSA-hda-Add-another-jack-detection-suppression-for-.patch | |||
@@ -0,0 +1,52 @@ | |||
1 | From 5dadca9a4cd269970d942d9e235320f30c425b31 Mon Sep 17 00:00:00 2001 | ||
2 | From: Takashi Iwai <tiwai@suse.de> | ||
3 | Date: Mon, 13 Feb 2012 12:03:25 +0100 | ||
4 | Subject: [PATCH 43/67] ALSA: hda - Add another jack-detection suppression for | ||
5 | ASUS ALC892 | ||
6 | |||
7 | commit 1565cc358585be40608b46f18f7ac431a1aae2bc upstream. | ||
8 | |||
9 | Add the jack-detect suppression for an ASUS machine with ALC892 codec. | ||
10 | |||
11 | Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42655 | ||
12 | |||
13 | Signed-off-by: Takashi Iwai <tiwai@suse.de> | ||
14 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
15 | --- | ||
16 | sound/pci/hda/patch_realtek.c | 6 ++++++ | ||
17 | 1 file changed, 6 insertions(+) | ||
18 | |||
19 | diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c | ||
20 | index d4616fb..ba8a877 100644 | ||
21 | --- a/sound/pci/hda/patch_realtek.c | ||
22 | +++ b/sound/pci/hda/patch_realtek.c | ||
23 | @@ -5594,6 +5594,7 @@ enum { | ||
24 | ALC662_FIXUP_ASUS_MODE6, | ||
25 | ALC662_FIXUP_ASUS_MODE7, | ||
26 | ALC662_FIXUP_ASUS_MODE8, | ||
27 | + ALC662_FIXUP_NO_JACK_DETECT, | ||
28 | }; | ||
29 | |||
30 | static const struct alc_fixup alc662_fixups[] = { | ||
31 | @@ -5739,6 +5740,10 @@ static const struct alc_fixup alc662_fixups[] = { | ||
32 | .chained = true, | ||
33 | .chain_id = ALC662_FIXUP_SKU_IGNORE | ||
34 | }, | ||
35 | + [ALC662_FIXUP_NO_JACK_DETECT] = { | ||
36 | + .type = ALC_FIXUP_FUNC, | ||
37 | + .v.func = alc_fixup_no_jack_detect, | ||
38 | + }, | ||
39 | }; | ||
40 | |||
41 | static const struct snd_pci_quirk alc662_fixup_tbl[] = { | ||
42 | @@ -5747,6 +5752,7 @@ static const struct snd_pci_quirk alc662_fixup_tbl[] = { | ||
43 | SND_PCI_QUIRK(0x1025, 0x031c, "Gateway NV79", ALC662_FIXUP_SKU_IGNORE), | ||
44 | SND_PCI_QUIRK(0x1025, 0x038b, "Acer Aspire 8943G", ALC662_FIXUP_ASPIRE), | ||
45 | SND_PCI_QUIRK(0x103c, 0x1632, "HP RP5800", ALC662_FIXUP_HP_RP5800), | ||
46 | + SND_PCI_QUIRK(0x1043, 0x8469, "ASUS mobo", ALC662_FIXUP_NO_JACK_DETECT), | ||
47 | SND_PCI_QUIRK(0x105b, 0x0cd6, "Foxconn", ALC662_FIXUP_ASUS_MODE2), | ||
48 | SND_PCI_QUIRK(0x144d, 0xc051, "Samsung R720", ALC662_FIXUP_IDEAPAD), | ||
49 | SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo Ideapad Y550P", ALC662_FIXUP_IDEAPAD), | ||
50 | -- | ||
51 | 1.7.9.5 | ||
52 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0044-ALSA-HDA-Pin-fixup-for-Zotac-Z68-motherboard.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0044-ALSA-HDA-Pin-fixup-for-Zotac-Z68-motherboard.patch new file mode 100644 index 00000000..925129a7 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0044-ALSA-HDA-Pin-fixup-for-Zotac-Z68-motherboard.patch | |||
@@ -0,0 +1,56 @@ | |||
1 | From 733c9de011d1599e23402465b1bd33730bee4fc1 Mon Sep 17 00:00:00 2001 | ||
2 | From: David Henningsson <david.henningsson@canonical.com> | ||
3 | Date: Tue, 12 Jun 2012 13:15:12 +0200 | ||
4 | Subject: [PATCH 44/67] ALSA: HDA: Pin fixup for Zotac Z68 motherboard | ||
5 | |||
6 | commit edfe3bfc1b779ddda9bcff523eb022dda37b93c8 upstream. | ||
7 | |||
8 | Pin 0x1b was connected to the front panel connector, which according to | ||
9 | the HDA standard should contain a mic and a headphone. In this case, | ||
10 | the headphone was listed as "line out" by BIOS. | ||
11 | |||
12 | BugLink: https://bugs.launchpad.net/bugs/993162 | ||
13 | Signed-off-by: David Henningsson <david.henningsson@canonical.com> | ||
14 | Signed-off-by: Takashi Iwai <tiwai@suse.de> | ||
15 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
16 | --- | ||
17 | sound/pci/hda/patch_realtek.c | 9 +++++++++ | ||
18 | 1 file changed, 9 insertions(+) | ||
19 | |||
20 | diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c | ||
21 | index ba8a877..0005bde 100644 | ||
22 | --- a/sound/pci/hda/patch_realtek.c | ||
23 | +++ b/sound/pci/hda/patch_realtek.c | ||
24 | @@ -5595,6 +5595,7 @@ enum { | ||
25 | ALC662_FIXUP_ASUS_MODE7, | ||
26 | ALC662_FIXUP_ASUS_MODE8, | ||
27 | ALC662_FIXUP_NO_JACK_DETECT, | ||
28 | + ALC662_FIXUP_ZOTAC_Z68, | ||
29 | }; | ||
30 | |||
31 | static const struct alc_fixup alc662_fixups[] = { | ||
32 | @@ -5744,6 +5745,13 @@ static const struct alc_fixup alc662_fixups[] = { | ||
33 | .type = ALC_FIXUP_FUNC, | ||
34 | .v.func = alc_fixup_no_jack_detect, | ||
35 | }, | ||
36 | + [ALC662_FIXUP_ZOTAC_Z68] = { | ||
37 | + .type = ALC_FIXUP_PINS, | ||
38 | + .v.pins = (const struct alc_pincfg[]) { | ||
39 | + { 0x1b, 0x02214020 }, /* Front HP */ | ||
40 | + { } | ||
41 | + } | ||
42 | + }, | ||
43 | }; | ||
44 | |||
45 | static const struct snd_pci_quirk alc662_fixup_tbl[] = { | ||
46 | @@ -5757,6 +5765,7 @@ static const struct snd_pci_quirk alc662_fixup_tbl[] = { | ||
47 | SND_PCI_QUIRK(0x144d, 0xc051, "Samsung R720", ALC662_FIXUP_IDEAPAD), | ||
48 | SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo Ideapad Y550P", ALC662_FIXUP_IDEAPAD), | ||
49 | SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Ideapad Y550", ALC662_FIXUP_IDEAPAD), | ||
50 | + SND_PCI_QUIRK(0x19da, 0xa130, "Zotac Z68", ALC662_FIXUP_ZOTAC_Z68), | ||
51 | SND_PCI_QUIRK(0x1b35, 0x2206, "CZC P10T", ALC662_FIXUP_CZC_P10T), | ||
52 | |||
53 | #if 0 | ||
54 | -- | ||
55 | 1.7.9.5 | ||
56 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0045-usb-cdc-wdm-Add-device-id-for-Huawei-3G-LTE-modems.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0045-usb-cdc-wdm-Add-device-id-for-Huawei-3G-LTE-modems.patch new file mode 100644 index 00000000..940c4599 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0045-usb-cdc-wdm-Add-device-id-for-Huawei-3G-LTE-modems.patch | |||
@@ -0,0 +1,68 @@ | |||
1 | From 4b2cda453ae678e21afaa8d35cb77d670239e9cb Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn@mork.no> | ||
3 | Date: Wed, 25 Jan 2012 13:03:29 +0100 | ||
4 | Subject: [PATCH 45/67] usb: cdc-wdm: Add device-id for Huawei 3G/LTE modems | ||
5 | MIME-Version: 1.0 | ||
6 | Content-Type: text/plain; charset=UTF-8 | ||
7 | Content-Transfer-Encoding: 8bit | ||
8 | |||
9 | commit fec67b45bf045582c3172101970090d640cd56d9 upstream. | ||
10 | |||
11 | [v2: Editorial changes suggested by Sergei Shtylyov] | ||
12 | |||
13 | These modems use the Qualcomm MSM Interface (QMI) protocol for | ||
14 | management of their CDC ECM like wwan interface. This driver | ||
15 | is perfect for exporting the protocol to userspace. | ||
16 | |||
17 | The created character device will be indistinguishable from a | ||
18 | common AT command based Device Management interface, so | ||
19 | userspace applications must do some intelligent matching | ||
20 | on the USB device. | ||
21 | |||
22 | Cc: Sergei Shtylyov <sshtylyov@mvista.com> | ||
23 | Signed-off-by: Bjørn Mork <bjorn@mork.no> | ||
24 | Acked-by: Oliver Neukum <oneukum@suse.de> | ||
25 | Acked-by: Marcel Holtmann <marcel@holtmann.org> | ||
26 | Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> | ||
27 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
28 | --- | ||
29 | drivers/usb/class/cdc-wdm.c | 16 ++++++++++++++++ | ||
30 | 1 file changed, 16 insertions(+) | ||
31 | |||
32 | diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c | ||
33 | index 554ac90..19fb5fa 100644 | ||
34 | --- a/drivers/usb/class/cdc-wdm.c | ||
35 | +++ b/drivers/usb/class/cdc-wdm.c | ||
36 | @@ -31,6 +31,8 @@ | ||
37 | #define DRIVER_AUTHOR "Oliver Neukum" | ||
38 | #define DRIVER_DESC "USB Abstract Control Model driver for USB WCM Device Management" | ||
39 | |||
40 | +#define HUAWEI_VENDOR_ID 0x12D1 | ||
41 | + | ||
42 | static const struct usb_device_id wdm_ids[] = { | ||
43 | { | ||
44 | .match_flags = USB_DEVICE_ID_MATCH_INT_CLASS | | ||
45 | @@ -38,6 +40,20 @@ static const struct usb_device_id wdm_ids[] = { | ||
46 | .bInterfaceClass = USB_CLASS_COMM, | ||
47 | .bInterfaceSubClass = USB_CDC_SUBCLASS_DMM | ||
48 | }, | ||
49 | + { | ||
50 | + /* | ||
51 | + * Huawei E392, E398 and possibly other Qualcomm based modems | ||
52 | + * embed the Qualcomm QMI protocol inside CDC on CDC ECM like | ||
53 | + * control interfaces. Userspace access to this is required | ||
54 | + * to configure the accompanying data interface | ||
55 | + */ | ||
56 | + .match_flags = USB_DEVICE_ID_MATCH_VENDOR | | ||
57 | + USB_DEVICE_ID_MATCH_INT_INFO, | ||
58 | + .idVendor = HUAWEI_VENDOR_ID, | ||
59 | + .bInterfaceClass = USB_CLASS_VENDOR_SPEC, | ||
60 | + .bInterfaceSubClass = 1, | ||
61 | + .bInterfaceProtocol = 9, /* NOTE: CDC ECM control interface! */ | ||
62 | + }, | ||
63 | { } | ||
64 | }; | ||
65 | |||
66 | -- | ||
67 | 1.7.9.5 | ||
68 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0046-USB-qcserial-Add-Sierra-Wireless-device-IDs.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0046-USB-qcserial-Add-Sierra-Wireless-device-IDs.patch new file mode 100644 index 00000000..954ac8cc --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0046-USB-qcserial-Add-Sierra-Wireless-device-IDs.patch | |||
@@ -0,0 +1,41 @@ | |||
1 | From 1fc193abca612fd776509b13f114254443d79300 Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn@mork.no> | ||
3 | Date: Thu, 24 May 2012 11:19:04 +0200 | ||
4 | Subject: [PATCH 46/67] USB: qcserial: Add Sierra Wireless device IDs | ||
5 | MIME-Version: 1.0 | ||
6 | Content-Type: text/plain; charset=UTF-8 | ||
7 | Content-Transfer-Encoding: 8bit | ||
8 | |||
9 | commit c41444ccfa33a1c20efa319e554cb531576e64a2 upstream. | ||
10 | |||
11 | Some additional IDs found in the BSD/GPL licensed out-of-tree | ||
12 | GobiSerial driver from Sierra Wireless. | ||
13 | |||
14 | Signed-off-by: Bjørn Mork <bjorn@mork.no> | ||
15 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | drivers/usb/serial/qcserial.c | 6 ++++++ | ||
19 | 1 file changed, 6 insertions(+) | ||
20 | |||
21 | diff --git a/drivers/usb/serial/qcserial.c b/drivers/usb/serial/qcserial.c | ||
22 | index 3187d8b..6634477 100644 | ||
23 | --- a/drivers/usb/serial/qcserial.c | ||
24 | +++ b/drivers/usb/serial/qcserial.c | ||
25 | @@ -105,7 +105,13 @@ static const struct usb_device_id id_table[] = { | ||
26 | {USB_DEVICE(0x1410, 0xa021)}, /* Novatel Gobi 3000 Composite */ | ||
27 | {USB_DEVICE(0x413c, 0x8193)}, /* Dell Gobi 3000 QDL */ | ||
28 | {USB_DEVICE(0x413c, 0x8194)}, /* Dell Gobi 3000 Composite */ | ||
29 | + {USB_DEVICE(0x1199, 0x9010)}, /* Sierra Wireless Gobi 3000 QDL */ | ||
30 | + {USB_DEVICE(0x1199, 0x9012)}, /* Sierra Wireless Gobi 3000 QDL */ | ||
31 | {USB_DEVICE(0x1199, 0x9013)}, /* Sierra Wireless Gobi 3000 Modem device (MC8355) */ | ||
32 | + {USB_DEVICE(0x1199, 0x9014)}, /* Sierra Wireless Gobi 3000 QDL */ | ||
33 | + {USB_DEVICE(0x1199, 0x9015)}, /* Sierra Wireless Gobi 3000 Modem device */ | ||
34 | + {USB_DEVICE(0x1199, 0x9018)}, /* Sierra Wireless Gobi 3000 QDL */ | ||
35 | + {USB_DEVICE(0x1199, 0x9019)}, /* Sierra Wireless Gobi 3000 Modem device */ | ||
36 | {USB_DEVICE(0x12D1, 0x14F0)}, /* Sony Gobi 3000 QDL */ | ||
37 | {USB_DEVICE(0x12D1, 0x14F1)}, /* Sony Gobi 3000 Composite */ | ||
38 | { } /* Terminating entry */ | ||
39 | -- | ||
40 | 1.7.9.5 | ||
41 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0047-USB-ftdi-sio-Add-support-for-RT-Systems-USB-RTS01-se.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0047-USB-ftdi-sio-Add-support-for-RT-Systems-USB-RTS01-se.patch new file mode 100644 index 00000000..7d101e20 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0047-USB-ftdi-sio-Add-support-for-RT-Systems-USB-RTS01-se.patch | |||
@@ -0,0 +1,48 @@ | |||
1 | From 4303646551b97b4a9d0dfe195a85a32840e920b6 Mon Sep 17 00:00:00 2001 | ||
2 | From: Evan McNabb <evan@mcnabbs.org> | ||
3 | Date: Fri, 25 May 2012 22:46:14 -0400 | ||
4 | Subject: [PATCH 47/67] USB: ftdi-sio: Add support for RT Systems USB-RTS01 | ||
5 | serial adapter | ||
6 | |||
7 | commit e00a54d772210d450e5c1a801534c3c8a448549f upstream. | ||
8 | |||
9 | Add support for RT Systems USB-RTS01 USB to Serial adapter: | ||
10 | http://www.rtsystemsinc.com/Photos/USBRTS01.html | ||
11 | |||
12 | Tested by controlling Icom IC-718 amateur radio transceiver via hamlib. | ||
13 | |||
14 | Signed-off-by: Evan McNabb <evan@mcnabbs.org> | ||
15 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | drivers/usb/serial/ftdi_sio.c | 1 + | ||
19 | drivers/usb/serial/ftdi_sio_ids.h | 1 + | ||
20 | 2 files changed, 2 insertions(+) | ||
21 | |||
22 | diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c | ||
23 | index 450bdfe..4045e39 100644 | ||
24 | --- a/drivers/usb/serial/ftdi_sio.c | ||
25 | +++ b/drivers/usb/serial/ftdi_sio.c | ||
26 | @@ -737,6 +737,7 @@ static struct usb_device_id id_table_combined [] = { | ||
27 | { USB_DEVICE(TELLDUS_VID, TELLDUS_TELLSTICK_PID) }, | ||
28 | { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_SERIAL_VX7_PID) }, | ||
29 | { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_CT29B_PID) }, | ||
30 | + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_RTS01_PID) }, | ||
31 | { USB_DEVICE(FTDI_VID, FTDI_MAXSTREAM_PID) }, | ||
32 | { USB_DEVICE(FTDI_VID, FTDI_PHI_FISCO_PID) }, | ||
33 | { USB_DEVICE(TML_VID, TML_USB_SERIAL_PID) }, | ||
34 | diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h | ||
35 | index 219b199..d27d7d7 100644 | ||
36 | --- a/drivers/usb/serial/ftdi_sio_ids.h | ||
37 | +++ b/drivers/usb/serial/ftdi_sio_ids.h | ||
38 | @@ -784,6 +784,7 @@ | ||
39 | #define RTSYSTEMS_VID 0x2100 /* Vendor ID */ | ||
40 | #define RTSYSTEMS_SERIAL_VX7_PID 0x9e52 /* Serial converter for VX-7 Radios using FT232RL */ | ||
41 | #define RTSYSTEMS_CT29B_PID 0x9e54 /* CT29B Radio Cable */ | ||
42 | +#define RTSYSTEMS_RTS01_PID 0x9e57 /* USB-RTS01 Radio Cable */ | ||
43 | |||
44 | |||
45 | /* | ||
46 | -- | ||
47 | 1.7.9.5 | ||
48 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0048-USB-serial-cp210x-add-Optris-MS-Pro-usb-id.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0048-USB-serial-cp210x-add-Optris-MS-Pro-usb-id.patch new file mode 100644 index 00000000..276c6406 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0048-USB-serial-cp210x-add-Optris-MS-Pro-usb-id.patch | |||
@@ -0,0 +1,29 @@ | |||
1 | From e7e29e6887d233e82b4dae59804228688370bcfa Mon Sep 17 00:00:00 2001 | ||
2 | From: Mikko Tuumanen <mikko.tuumanen@qemsoftware.com> | ||
3 | Date: Fri, 1 Jun 2012 11:28:55 +0300 | ||
4 | Subject: [PATCH 48/67] USB: serial: cp210x: add Optris MS Pro usb id | ||
5 | |||
6 | commit 5bbfa6f427c1d7244a5ee154ab8fa37265a5e049 upstream. | ||
7 | |||
8 | Signed-off-by: Mikko Tuumanen <mikko.tuumanen@qemsoftware.com> | ||
9 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
10 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
11 | --- | ||
12 | drivers/usb/serial/cp210x.c | 1 + | ||
13 | 1 file changed, 1 insertion(+) | ||
14 | |||
15 | diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c | ||
16 | index f2c57e0..aa0c43f 100644 | ||
17 | --- a/drivers/usb/serial/cp210x.c | ||
18 | +++ b/drivers/usb/serial/cp210x.c | ||
19 | @@ -82,6 +82,7 @@ static const struct usb_device_id id_table[] = { | ||
20 | { USB_DEVICE(0x10C4, 0x8066) }, /* Argussoft In-System Programmer */ | ||
21 | { USB_DEVICE(0x10C4, 0x806F) }, /* IMS USB to RS422 Converter Cable */ | ||
22 | { USB_DEVICE(0x10C4, 0x807A) }, /* Crumb128 board */ | ||
23 | + { USB_DEVICE(0x10C4, 0x80C4) }, /* Cygnal Integrated Products, Inc., Optris infrared thermometer */ | ||
24 | { USB_DEVICE(0x10C4, 0x80CA) }, /* Degree Controls Inc */ | ||
25 | { USB_DEVICE(0x10C4, 0x80DD) }, /* Tracient RFID */ | ||
26 | { USB_DEVICE(0x10C4, 0x80F6) }, /* Suunto sports instrument */ | ||
27 | -- | ||
28 | 1.7.9.5 | ||
29 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0049-USB-serial-sierra-Add-support-for-Sierra-Wireless-Ai.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0049-USB-serial-sierra-Add-support-for-Sierra-Wireless-Ai.patch new file mode 100644 index 00000000..29323338 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0049-USB-serial-sierra-Add-support-for-Sierra-Wireless-Ai.patch | |||
@@ -0,0 +1,35 @@ | |||
1 | From 73b49603c6b6e058eeff4bea1866156fd35847d1 Mon Sep 17 00:00:00 2001 | ||
2 | From: Tom Cassidy <tomas.cassidy@gmail.com> | ||
3 | Date: Wed, 6 Jun 2012 17:08:48 +1000 | ||
4 | Subject: [PATCH 49/67] USB: serial: sierra: Add support for Sierra Wireless | ||
5 | AirCard 320U modem | ||
6 | |||
7 | commit 19a3dd1575e954e8c004413bee3e12d3962f2525 upstream. | ||
8 | |||
9 | Add support for Sierra Wireless AirCard 320U modem | ||
10 | |||
11 | Signed-off-by: Tomas Cassidy <tomas.cassidy@gmail.com> | ||
12 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
13 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
14 | --- | ||
15 | drivers/usb/serial/sierra.c | 4 ++++ | ||
16 | 1 file changed, 4 insertions(+) | ||
17 | |||
18 | diff --git a/drivers/usb/serial/sierra.c b/drivers/usb/serial/sierra.c | ||
19 | index e093585..535d087 100644 | ||
20 | --- a/drivers/usb/serial/sierra.c | ||
21 | +++ b/drivers/usb/serial/sierra.c | ||
22 | @@ -304,6 +304,10 @@ static const struct usb_device_id id_table[] = { | ||
23 | { USB_DEVICE(0x1199, 0x68A3), /* Sierra Wireless Direct IP modems */ | ||
24 | .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist | ||
25 | }, | ||
26 | + /* AT&T Direct IP LTE modems */ | ||
27 | + { USB_DEVICE_AND_INTERFACE_INFO(0x0F3D, 0x68AA, 0xFF, 0xFF, 0xFF), | ||
28 | + .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist | ||
29 | + }, | ||
30 | { USB_DEVICE(0x0f3d, 0x68A3), /* Airprime/Sierra Wireless Direct IP modems */ | ||
31 | .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist | ||
32 | }, | ||
33 | -- | ||
34 | 1.7.9.5 | ||
35 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0050-USB-option-Updated-Huawei-K4605-has-better-id.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0050-USB-option-Updated-Huawei-K4605-has-better-id.patch new file mode 100644 index 00000000..0685a5cf --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0050-USB-option-Updated-Huawei-K4605-has-better-id.patch | |||
@@ -0,0 +1,36 @@ | |||
1 | From 547f4fcdd71718e4522557b1d9210d11ef00d17e Mon Sep 17 00:00:00 2001 | ||
2 | From: Andrew Bird <ajb@spheresystems.co.uk> | ||
3 | Date: Mon, 28 May 2012 12:43:06 +0100 | ||
4 | Subject: [PATCH 50/67] USB: option: Updated Huawei K4605 has better id | ||
5 | |||
6 | commit 42ca7da1c2363dbef4ba1b6917c4c02274b6a5e2 upstream. | ||
7 | |||
8 | Later firmwares for this device now have proper subclass and | ||
9 | protocol info so we can identify it nicely without needing to use | ||
10 | the blacklist. I'm not removing the old 0xff matching as there | ||
11 | may be devices in the field that still need that. | ||
12 | |||
13 | Signed-off-by: Andrew Bird <ajb@spheresystems.co.uk> | ||
14 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
15 | [bwh: Backported to 3.2: adjust context] | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | drivers/usb/serial/option.c | 2 ++ | ||
19 | 1 file changed, 2 insertions(+) | ||
20 | |||
21 | diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c | ||
22 | index cbe3451..ef57b1e 100644 | ||
23 | --- a/drivers/usb/serial/option.c | ||
24 | +++ b/drivers/usb/serial/option.c | ||
25 | @@ -666,6 +666,8 @@ static const struct usb_device_id option_ids[] = { | ||
26 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3806, 0xff, 0xff, 0xff) }, | ||
27 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4605, 0xff, 0xff, 0xff), | ||
28 | .driver_info = (kernel_ulong_t) &huawei_cdc12_blacklist }, | ||
29 | + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4605, 0xff, 0x01, 0x31) }, | ||
30 | + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4605, 0xff, 0x01, 0x32) }, | ||
31 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x31) }, | ||
32 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x32) }, | ||
33 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3771, 0xff, 0x02, 0x31) }, | ||
34 | -- | ||
35 | 1.7.9.5 | ||
36 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0051-USB-mct_u232-Fix-incorrect-TIOCMSET-return.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0051-USB-mct_u232-Fix-incorrect-TIOCMSET-return.patch new file mode 100644 index 00000000..3c0c6a49 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0051-USB-mct_u232-Fix-incorrect-TIOCMSET-return.patch | |||
@@ -0,0 +1,48 @@ | |||
1 | From 1c51f7fd275092f5a0aa6063a04711bc5d0a2ede Mon Sep 17 00:00:00 2001 | ||
2 | From: Alan Cox <alan@linux.intel.com> | ||
3 | Date: Tue, 22 May 2012 20:45:13 +0100 | ||
4 | Subject: [PATCH 51/67] USB: mct_u232: Fix incorrect TIOCMSET return | ||
5 | |||
6 | commit 1aa3c63cf0a79153ee13c8f82e4eb6c40b66a161 upstream. | ||
7 | |||
8 | The low level helper returns 1 on success. The ioctl should however return | ||
9 | 0. As this is the only user of the helper return, make the helper return 0 or | ||
10 | an error code. | ||
11 | |||
12 | Resolves-bug: https://bugzilla.kernel.org/show_bug.cgi?id=43009 | ||
13 | Signed-off-by: Alan Cox <alan@linux.intel.com> | ||
14 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
15 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
16 | --- | ||
17 | drivers/usb/serial/mct_u232.c | 13 ++++++++----- | ||
18 | 1 file changed, 8 insertions(+), 5 deletions(-) | ||
19 | |||
20 | diff --git a/drivers/usb/serial/mct_u232.c b/drivers/usb/serial/mct_u232.c | ||
21 | index ba0d287..42de17b 100644 | ||
22 | --- a/drivers/usb/serial/mct_u232.c | ||
23 | +++ b/drivers/usb/serial/mct_u232.c | ||
24 | @@ -359,13 +359,16 @@ static int mct_u232_set_modem_ctrl(struct usb_serial *serial, | ||
25 | MCT_U232_SET_REQUEST_TYPE, | ||
26 | 0, 0, buf, MCT_U232_SET_MODEM_CTRL_SIZE, | ||
27 | WDR_TIMEOUT); | ||
28 | - if (rc < 0) | ||
29 | - dev_err(&serial->dev->dev, | ||
30 | - "Set MODEM CTRL 0x%x failed (error = %d)\n", mcr, rc); | ||
31 | + kfree(buf); | ||
32 | + | ||
33 | dbg("set_modem_ctrl: state=0x%x ==> mcr=0x%x", control_state, mcr); | ||
34 | |||
35 | - kfree(buf); | ||
36 | - return rc; | ||
37 | + if (rc < 0) { | ||
38 | + dev_err(&serial->dev->dev, | ||
39 | + "Set MODEM CTRL 0x%x failed (error = %d)\n", mcr, rc); | ||
40 | + return rc; | ||
41 | + } | ||
42 | + return 0; | ||
43 | } /* mct_u232_set_modem_ctrl */ | ||
44 | |||
45 | static int mct_u232_get_modem_stat(struct usb_serial *serial, | ||
46 | -- | ||
47 | 1.7.9.5 | ||
48 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0052-USB-option-fix-port-data-abuse.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0052-USB-option-fix-port-data-abuse.patch new file mode 100644 index 00000000..7e8970a5 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0052-USB-option-fix-port-data-abuse.patch | |||
@@ -0,0 +1,81 @@ | |||
1 | From 34491f4f5c53bc499adfe6eec7c146592f295bed Mon Sep 17 00:00:00 2001 | ||
2 | From: Johan Hovold <jhovold@gmail.com> | ||
3 | Date: Tue, 29 May 2012 17:57:52 +0200 | ||
4 | Subject: [PATCH 52/67] USB: option: fix port-data abuse | ||
5 | |||
6 | commit 4273f9878b0a8271df055e3c8f2e7f08c6a4a2f4 upstream. | ||
7 | |||
8 | Commit 8b4c6a3ab596961b78465 ("USB: option: Use generic USB wwan code") | ||
9 | moved option port-data allocation to usb_wwan_startup but still cast the | ||
10 | port data to the old struct... | ||
11 | |||
12 | Signed-off-by: Johan Hovold <jhovold@gmail.com> | ||
13 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
14 | [bwh: Backported to 3.2: adjust context] | ||
15 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
16 | --- | ||
17 | drivers/usb/serial/option.c | 34 +++------------------------------- | ||
18 | 1 file changed, 3 insertions(+), 31 deletions(-) | ||
19 | |||
20 | diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c | ||
21 | index ef57b1e..5be3915 100644 | ||
22 | --- a/drivers/usb/serial/option.c | ||
23 | +++ b/drivers/usb/serial/option.c | ||
24 | @@ -1269,35 +1269,6 @@ static struct usb_serial_driver option_1port_device = { | ||
25 | |||
26 | static int debug; | ||
27 | |||
28 | -/* per port private data */ | ||
29 | - | ||
30 | -#define N_IN_URB 4 | ||
31 | -#define N_OUT_URB 4 | ||
32 | -#define IN_BUFLEN 4096 | ||
33 | -#define OUT_BUFLEN 4096 | ||
34 | - | ||
35 | -struct option_port_private { | ||
36 | - /* Input endpoints and buffer for this port */ | ||
37 | - struct urb *in_urbs[N_IN_URB]; | ||
38 | - u8 *in_buffer[N_IN_URB]; | ||
39 | - /* Output endpoints and buffer for this port */ | ||
40 | - struct urb *out_urbs[N_OUT_URB]; | ||
41 | - u8 *out_buffer[N_OUT_URB]; | ||
42 | - unsigned long out_busy; /* Bit vector of URBs in use */ | ||
43 | - int opened; | ||
44 | - struct usb_anchor delayed; | ||
45 | - | ||
46 | - /* Settings for the port */ | ||
47 | - int rts_state; /* Handshaking pins (outputs) */ | ||
48 | - int dtr_state; | ||
49 | - int cts_state; /* Handshaking pins (inputs) */ | ||
50 | - int dsr_state; | ||
51 | - int dcd_state; | ||
52 | - int ri_state; | ||
53 | - | ||
54 | - unsigned long tx_start_time[N_OUT_URB]; | ||
55 | -}; | ||
56 | - | ||
57 | /* Functions used by new usb-serial code. */ | ||
58 | static int __init option_init(void) | ||
59 | { | ||
60 | @@ -1400,7 +1371,8 @@ static void option_instat_callback(struct urb *urb) | ||
61 | int err; | ||
62 | int status = urb->status; | ||
63 | struct usb_serial_port *port = urb->context; | ||
64 | - struct option_port_private *portdata = usb_get_serial_port_data(port); | ||
65 | + struct usb_wwan_port_private *portdata = | ||
66 | + usb_get_serial_port_data(port); | ||
67 | |||
68 | dbg("%s", __func__); | ||
69 | dbg("%s: urb %p port %p has data %p", __func__, urb, port, portdata); | ||
70 | @@ -1461,7 +1433,7 @@ static int option_send_setup(struct usb_serial_port *port) | ||
71 | struct usb_serial *serial = port->serial; | ||
72 | struct usb_wwan_intf_private *intfdata = | ||
73 | (struct usb_wwan_intf_private *) serial->private; | ||
74 | - struct option_port_private *portdata; | ||
75 | + struct usb_wwan_port_private *portdata; | ||
76 | int ifNum = serial->interface->cur_altsetting->desc.bInterfaceNumber; | ||
77 | int val = 0; | ||
78 | dbg("%s", __func__); | ||
79 | -- | ||
80 | 1.7.9.5 | ||
81 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0053-USB-option-fix-memory-leak.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0053-USB-option-fix-memory-leak.patch new file mode 100644 index 00000000..3b0f86dd --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0053-USB-option-fix-memory-leak.patch | |||
@@ -0,0 +1,58 @@ | |||
1 | From 84fb397f8fc0802c2f0422044a4c9cd34f480b44 Mon Sep 17 00:00:00 2001 | ||
2 | From: Johan Hovold <jhovold@gmail.com> | ||
3 | Date: Tue, 29 May 2012 18:22:48 +0200 | ||
4 | Subject: [PATCH 53/67] USB: option: fix memory leak | ||
5 | |||
6 | commit b9c3aab315b51f81649a0d737c4c73783fbd8de0 upstream. | ||
7 | |||
8 | Fix memory leak introduced by commit 383cedc3bb435de7a2 ("USB: serial: | ||
9 | full autosuspend support for the option driver") which allocates | ||
10 | usb-serial data but never frees it. | ||
11 | |||
12 | Signed-off-by: Johan Hovold <jhovold@gmail.com> | ||
13 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
14 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
15 | --- | ||
16 | drivers/usb/serial/option.c | 12 +++++++++++- | ||
17 | 1 file changed, 11 insertions(+), 1 deletion(-) | ||
18 | |||
19 | diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c | ||
20 | index 5be3915..4bd2b85 100644 | ||
21 | --- a/drivers/usb/serial/option.c | ||
22 | +++ b/drivers/usb/serial/option.c | ||
23 | @@ -47,6 +47,7 @@ | ||
24 | /* Function prototypes */ | ||
25 | static int option_probe(struct usb_serial *serial, | ||
26 | const struct usb_device_id *id); | ||
27 | +static void option_release(struct usb_serial *serial); | ||
28 | static int option_send_setup(struct usb_serial_port *port); | ||
29 | static void option_instat_callback(struct urb *urb); | ||
30 | |||
31 | @@ -1259,7 +1260,7 @@ static struct usb_serial_driver option_1port_device = { | ||
32 | .ioctl = usb_wwan_ioctl, | ||
33 | .attach = usb_wwan_startup, | ||
34 | .disconnect = usb_wwan_disconnect, | ||
35 | - .release = usb_wwan_release, | ||
36 | + .release = option_release, | ||
37 | .read_int_callback = option_instat_callback, | ||
38 | #ifdef CONFIG_PM | ||
39 | .suspend = usb_wwan_suspend, | ||
40 | @@ -1366,6 +1367,15 @@ static int option_probe(struct usb_serial *serial, | ||
41 | return 0; | ||
42 | } | ||
43 | |||
44 | +static void option_release(struct usb_serial *serial) | ||
45 | +{ | ||
46 | + struct usb_wwan_intf_private *priv = usb_get_serial_data(serial); | ||
47 | + | ||
48 | + usb_wwan_release(serial); | ||
49 | + | ||
50 | + kfree(priv); | ||
51 | +} | ||
52 | + | ||
53 | static void option_instat_callback(struct urb *urb) | ||
54 | { | ||
55 | int err; | ||
56 | -- | ||
57 | 1.7.9.5 | ||
58 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0054-USB-option-add-more-YUGA-device-ids.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0054-USB-option-add-more-YUGA-device-ids.patch new file mode 100644 index 00000000..750f0cc2 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0054-USB-option-add-more-YUGA-device-ids.patch | |||
@@ -0,0 +1,94 @@ | |||
1 | From 8d06ef9e804169ec35e4b67ae24e8712b0fa87bb Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?=E8=AF=B4=E4=B8=8D=E5=BE=97?= <gavin.kx@qq.com> | ||
3 | Date: Mon, 28 May 2012 21:31:29 +0800 | ||
4 | Subject: [PATCH 54/67] USB: option: add more YUGA device ids | ||
5 | |||
6 | commit 0ef0be15fd2564767f114c249fc4af704d8e16f4 upstream. | ||
7 | |||
8 | Signed-off-by: gavin zhu <gavin.zhu@qq.com> | ||
9 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
10 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
11 | --- | ||
12 | drivers/usb/serial/option.c | 44 ++++++++++++++++++++++++++----------------- | ||
13 | 1 file changed, 27 insertions(+), 17 deletions(-) | ||
14 | |||
15 | diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c | ||
16 | index 4bd2b85..61d6c31 100644 | ||
17 | --- a/drivers/usb/serial/option.c | ||
18 | +++ b/drivers/usb/serial/option.c | ||
19 | @@ -426,7 +426,7 @@ static void option_instat_callback(struct urb *urb); | ||
20 | #define SAMSUNG_VENDOR_ID 0x04e8 | ||
21 | #define SAMSUNG_PRODUCT_GT_B3730 0x6889 | ||
22 | |||
23 | -/* YUGA products www.yuga-info.com*/ | ||
24 | +/* YUGA products www.yuga-info.com gavin.kx@qq.com */ | ||
25 | #define YUGA_VENDOR_ID 0x257A | ||
26 | #define YUGA_PRODUCT_CEM600 0x1601 | ||
27 | #define YUGA_PRODUCT_CEM610 0x1602 | ||
28 | @@ -443,6 +443,8 @@ static void option_instat_callback(struct urb *urb); | ||
29 | #define YUGA_PRODUCT_CEU516 0x160C | ||
30 | #define YUGA_PRODUCT_CEU528 0x160D | ||
31 | #define YUGA_PRODUCT_CEU526 0x160F | ||
32 | +#define YUGA_PRODUCT_CEU881 0x161F | ||
33 | +#define YUGA_PRODUCT_CEU882 0x162F | ||
34 | |||
35 | #define YUGA_PRODUCT_CWM600 0x2601 | ||
36 | #define YUGA_PRODUCT_CWM610 0x2602 | ||
37 | @@ -458,23 +460,26 @@ static void option_instat_callback(struct urb *urb); | ||
38 | #define YUGA_PRODUCT_CWU518 0x260B | ||
39 | #define YUGA_PRODUCT_CWU516 0x260C | ||
40 | #define YUGA_PRODUCT_CWU528 0x260D | ||
41 | +#define YUGA_PRODUCT_CWU581 0x260E | ||
42 | #define YUGA_PRODUCT_CWU526 0x260F | ||
43 | - | ||
44 | -#define YUGA_PRODUCT_CLM600 0x2601 | ||
45 | -#define YUGA_PRODUCT_CLM610 0x2602 | ||
46 | -#define YUGA_PRODUCT_CLM500 0x2603 | ||
47 | -#define YUGA_PRODUCT_CLM510 0x2604 | ||
48 | -#define YUGA_PRODUCT_CLM800 0x2605 | ||
49 | -#define YUGA_PRODUCT_CLM900 0x2606 | ||
50 | - | ||
51 | -#define YUGA_PRODUCT_CLU718 0x2607 | ||
52 | -#define YUGA_PRODUCT_CLU716 0x2608 | ||
53 | -#define YUGA_PRODUCT_CLU728 0x2609 | ||
54 | -#define YUGA_PRODUCT_CLU726 0x260A | ||
55 | -#define YUGA_PRODUCT_CLU518 0x260B | ||
56 | -#define YUGA_PRODUCT_CLU516 0x260C | ||
57 | -#define YUGA_PRODUCT_CLU528 0x260D | ||
58 | -#define YUGA_PRODUCT_CLU526 0x260F | ||
59 | +#define YUGA_PRODUCT_CWU582 0x261F | ||
60 | +#define YUGA_PRODUCT_CWU583 0x262F | ||
61 | + | ||
62 | +#define YUGA_PRODUCT_CLM600 0x3601 | ||
63 | +#define YUGA_PRODUCT_CLM610 0x3602 | ||
64 | +#define YUGA_PRODUCT_CLM500 0x3603 | ||
65 | +#define YUGA_PRODUCT_CLM510 0x3604 | ||
66 | +#define YUGA_PRODUCT_CLM800 0x3605 | ||
67 | +#define YUGA_PRODUCT_CLM900 0x3606 | ||
68 | + | ||
69 | +#define YUGA_PRODUCT_CLU718 0x3607 | ||
70 | +#define YUGA_PRODUCT_CLU716 0x3608 | ||
71 | +#define YUGA_PRODUCT_CLU728 0x3609 | ||
72 | +#define YUGA_PRODUCT_CLU726 0x360A | ||
73 | +#define YUGA_PRODUCT_CLU518 0x360B | ||
74 | +#define YUGA_PRODUCT_CLU516 0x360C | ||
75 | +#define YUGA_PRODUCT_CLU528 0x360D | ||
76 | +#define YUGA_PRODUCT_CLU526 0x360F | ||
77 | |||
78 | /* Viettel products */ | ||
79 | #define VIETTEL_VENDOR_ID 0x2262 | ||
80 | @@ -1210,6 +1215,11 @@ static const struct usb_device_id option_ids[] = { | ||
81 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU516) }, | ||
82 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU528) }, | ||
83 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU526) }, | ||
84 | + { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU881) }, | ||
85 | + { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU882) }, | ||
86 | + { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU581) }, | ||
87 | + { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU582) }, | ||
88 | + { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU583) }, | ||
89 | { USB_DEVICE_AND_INTERFACE_INFO(VIETTEL_VENDOR_ID, VIETTEL_PRODUCT_VT1000, 0xff, 0xff, 0xff) }, | ||
90 | { USB_DEVICE_AND_INTERFACE_INFO(ZD_VENDOR_ID, ZD_PRODUCT_7000, 0xff, 0xff, 0xff) }, | ||
91 | { USB_DEVICE(LG_VENDOR_ID, LG_PRODUCT_L02C) }, /* docomo L-02C modem */ | ||
92 | -- | ||
93 | 1.7.9.5 | ||
94 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0055-target-Return-error-to-initiator-if-SET-TARGET-PORT-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0055-target-Return-error-to-initiator-if-SET-TARGET-PORT-.patch new file mode 100644 index 00000000..6102fca5 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0055-target-Return-error-to-initiator-if-SET-TARGET-PORT-.patch | |||
@@ -0,0 +1,55 @@ | |||
1 | From c9d1a254f6f1c91f6d43d9ec46d7d1d76f2f82ee Mon Sep 17 00:00:00 2001 | ||
2 | From: Roland Dreier <roland@purestorage.com> | ||
3 | Date: Mon, 4 Jun 2012 23:24:51 -0700 | ||
4 | Subject: [PATCH 55/67] target: Return error to initiator if SET TARGET PORT | ||
5 | GROUPS emulation fails | ||
6 | |||
7 | commit 59e4f541baf728dbb426949bfa9f6862387ffd0e upstream. | ||
8 | |||
9 | The error paths in target_emulate_set_target_port_groups() are all | ||
10 | essentially "rc = -EINVAL; goto out;" but the code at "out:" ignores | ||
11 | rc and always returns success. This means that even if eg explicit | ||
12 | ALUA is turned off, the initiator will always see a good SCSI status | ||
13 | for SET TARGET PORT GROUPS. | ||
14 | |||
15 | Fix this by returning rc as is intended. It appears this bug was | ||
16 | added by the following patch: | ||
17 | |||
18 | commit 05d1c7c0d0db4cc25548d9aadebb416888a82327 | ||
19 | Author: Andy Grover <agrover@redhat.com> | ||
20 | Date: Wed Jul 20 19:13:28 2011 +0000 | ||
21 | |||
22 | target: Make all control CDBs scatter-gather | ||
23 | |||
24 | Signed-off-by: Roland Dreier <roland@purestorage.com> | ||
25 | Cc: Andy Grover <agrover@redhat.com> | ||
26 | Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org> | ||
27 | [bwh: Backported to 3.2: we have transport_complete_task() | ||
28 | and not target_complete_cmd()] | ||
29 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
30 | --- | ||
31 | drivers/target/target_core_alua.c | 8 +++++--- | ||
32 | 1 file changed, 5 insertions(+), 3 deletions(-) | ||
33 | |||
34 | diff --git a/drivers/target/target_core_alua.c b/drivers/target/target_core_alua.c | ||
35 | index 5b05744..0364ca2 100644 | ||
36 | --- a/drivers/target/target_core_alua.c | ||
37 | +++ b/drivers/target/target_core_alua.c | ||
38 | @@ -352,9 +352,11 @@ int target_emulate_set_target_port_groups(struct se_task *task) | ||
39 | |||
40 | out: | ||
41 | transport_kunmap_data_sg(cmd); | ||
42 | - task->task_scsi_status = GOOD; | ||
43 | - transport_complete_task(task, 1); | ||
44 | - return 0; | ||
45 | + if (!rc) { | ||
46 | + task->task_scsi_status = GOOD; | ||
47 | + transport_complete_task(task, 1); | ||
48 | + } | ||
49 | + return rc; | ||
50 | } | ||
51 | |||
52 | static inline int core_alua_state_nonoptimized( | ||
53 | -- | ||
54 | 1.7.9.5 | ||
55 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0056-USB-add-NO_D3_DURING_SLEEP-flag-and-revert-151b61284.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0056-USB-add-NO_D3_DURING_SLEEP-flag-and-revert-151b61284.patch new file mode 100644 index 00000000..12318639 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0056-USB-add-NO_D3_DURING_SLEEP-flag-and-revert-151b61284.patch | |||
@@ -0,0 +1,179 @@ | |||
1 | From edf1db1d2784e8b11a07eb3e6b7efb3cb45291ae Mon Sep 17 00:00:00 2001 | ||
2 | From: Alan Stern <stern@rowland.harvard.edu> | ||
3 | Date: Wed, 13 Jun 2012 11:20:19 -0400 | ||
4 | Subject: [PATCH 56/67] USB: add NO_D3_DURING_SLEEP flag and revert | ||
5 | 151b61284776be2 | ||
6 | MIME-Version: 1.0 | ||
7 | Content-Type: text/plain; charset=UTF-8 | ||
8 | Content-Transfer-Encoding: 8bit | ||
9 | |||
10 | commit c2fb8a3fa25513de8fedb38509b1f15a5bbee47b upstream. | ||
11 | |||
12 | This patch (as1558) fixes a problem affecting several ASUS computers: | ||
13 | The machine crashes or corrupts memory when going into suspend if the | ||
14 | ehci-hcd driver is bound to any controllers. Users have been forced | ||
15 | to unbind or unload ehci-hcd before putting their systems to sleep. | ||
16 | |||
17 | After extensive testing, it was determined that the machines don't | ||
18 | like going into suspend when any EHCI controllers are in the PCI D3 | ||
19 | power state. Presumably this is a firmware bug, but there's nothing | ||
20 | we can do about it except to avoid putting the controllers in D3 | ||
21 | during system sleep. | ||
22 | |||
23 | The patch adds a new flag to indicate whether the problem is present, | ||
24 | and avoids changing the controller's power state if the flag is set. | ||
25 | Runtime suspend is unaffected; this matters only for system suspend. | ||
26 | However as a side effect, the controller will not respond to remote | ||
27 | wakeup requests while the system is asleep. Hence USB wakeup is not | ||
28 | functional -- but of course, this is already true in the current state | ||
29 | of affairs. | ||
30 | |||
31 | A similar patch has already been applied as commit | ||
32 | 151b61284776be2d6f02d48c23c3625678960b97 (USB: EHCI: fix crash during | ||
33 | suspend on ASUS computers). The patch supersedes that one and reverts | ||
34 | it. There are two differences: | ||
35 | |||
36 | The old patch added the flag at the USB level; this patch | ||
37 | adds it at the PCI level. | ||
38 | |||
39 | The old patch applied to all chipsets with the same vendor, | ||
40 | subsystem vendor, and product IDs; this patch makes an | ||
41 | exception for a known-good system (based on DMI information). | ||
42 | |||
43 | Signed-off-by: Alan Stern <stern@rowland.harvard.edu> | ||
44 | Tested-by: Dâniel Fraga <fragabr@gmail.com> | ||
45 | Tested-by: Andrey Rahmatullin <wrar@wrar.name> | ||
46 | Tested-by: Steven Rostedt <rostedt@goodmis.org> | ||
47 | Reviewed-by: Rafael J. Wysocki <rjw@sisk.pl> | ||
48 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
49 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
50 | --- | ||
51 | drivers/pci/pci.c | 5 +++++ | ||
52 | drivers/pci/quirks.c | 26 ++++++++++++++++++++++++++ | ||
53 | drivers/usb/core/hcd-pci.c | 9 --------- | ||
54 | drivers/usb/host/ehci-pci.c | 8 -------- | ||
55 | include/linux/pci.h | 2 ++ | ||
56 | include/linux/usb/hcd.h | 2 -- | ||
57 | 6 files changed, 33 insertions(+), 19 deletions(-) | ||
58 | |||
59 | diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c | ||
60 | index 6d4a531..e5b75eb 100644 | ||
61 | --- a/drivers/pci/pci.c | ||
62 | +++ b/drivers/pci/pci.c | ||
63 | @@ -1689,6 +1689,11 @@ int pci_prepare_to_sleep(struct pci_dev *dev) | ||
64 | if (target_state == PCI_POWER_ERROR) | ||
65 | return -EIO; | ||
66 | |||
67 | + /* Some devices mustn't be in D3 during system sleep */ | ||
68 | + if (target_state == PCI_D3hot && | ||
69 | + (dev->dev_flags & PCI_DEV_FLAGS_NO_D3_DURING_SLEEP)) | ||
70 | + return 0; | ||
71 | + | ||
72 | pci_enable_wake(dev, target_state, device_may_wakeup(&dev->dev)); | ||
73 | |||
74 | error = pci_set_power_state(dev, target_state); | ||
75 | diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c | ||
76 | index 78fda9c..3c56fec 100644 | ||
77 | --- a/drivers/pci/quirks.c | ||
78 | +++ b/drivers/pci/quirks.c | ||
79 | @@ -2940,6 +2940,32 @@ static void __devinit disable_igfx_irq(struct pci_dev *dev) | ||
80 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0102, disable_igfx_irq); | ||
81 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq); | ||
82 | |||
83 | +/* | ||
84 | + * The Intel 6 Series/C200 Series chipset's EHCI controllers on many | ||
85 | + * ASUS motherboards will cause memory corruption or a system crash | ||
86 | + * if they are in D3 while the system is put into S3 sleep. | ||
87 | + */ | ||
88 | +static void __devinit asus_ehci_no_d3(struct pci_dev *dev) | ||
89 | +{ | ||
90 | + const char *sys_info; | ||
91 | + static const char good_Asus_board[] = "P8Z68-V"; | ||
92 | + | ||
93 | + if (dev->dev_flags & PCI_DEV_FLAGS_NO_D3_DURING_SLEEP) | ||
94 | + return; | ||
95 | + if (dev->subsystem_vendor != PCI_VENDOR_ID_ASUSTEK) | ||
96 | + return; | ||
97 | + sys_info = dmi_get_system_info(DMI_BOARD_NAME); | ||
98 | + if (sys_info && memcmp(sys_info, good_Asus_board, | ||
99 | + sizeof(good_Asus_board) - 1) == 0) | ||
100 | + return; | ||
101 | + | ||
102 | + dev_info(&dev->dev, "broken D3 during system sleep on ASUS\n"); | ||
103 | + dev->dev_flags |= PCI_DEV_FLAGS_NO_D3_DURING_SLEEP; | ||
104 | + device_set_wakeup_capable(&dev->dev, false); | ||
105 | +} | ||
106 | +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1c26, asus_ehci_no_d3); | ||
107 | +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1c2d, asus_ehci_no_d3); | ||
108 | + | ||
109 | static void pci_do_fixups(struct pci_dev *dev, struct pci_fixup *f, | ||
110 | struct pci_fixup *end) | ||
111 | { | ||
112 | diff --git a/drivers/usb/core/hcd-pci.c b/drivers/usb/core/hcd-pci.c | ||
113 | index 5f1404a..61d08dd 100644 | ||
114 | --- a/drivers/usb/core/hcd-pci.c | ||
115 | +++ b/drivers/usb/core/hcd-pci.c | ||
116 | @@ -495,15 +495,6 @@ static int hcd_pci_suspend_noirq(struct device *dev) | ||
117 | |||
118 | pci_save_state(pci_dev); | ||
119 | |||
120 | - /* | ||
121 | - * Some systems crash if an EHCI controller is in D3 during | ||
122 | - * a sleep transition. We have to leave such controllers in D0. | ||
123 | - */ | ||
124 | - if (hcd->broken_pci_sleep) { | ||
125 | - dev_dbg(dev, "Staying in PCI D0\n"); | ||
126 | - return retval; | ||
127 | - } | ||
128 | - | ||
129 | /* If the root hub is dead rather than suspended, disallow remote | ||
130 | * wakeup. usb_hc_died() should ensure that both hosts are marked as | ||
131 | * dying, so we only need to check the primary roothub. | ||
132 | diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c | ||
133 | index ee85e81..a79e64b 100644 | ||
134 | --- a/drivers/usb/host/ehci-pci.c | ||
135 | +++ b/drivers/usb/host/ehci-pci.c | ||
136 | @@ -144,14 +144,6 @@ static int ehci_pci_setup(struct usb_hcd *hcd) | ||
137 | hcd->has_tt = 1; | ||
138 | tdi_reset(ehci); | ||
139 | } | ||
140 | - if (pdev->subsystem_vendor == PCI_VENDOR_ID_ASUSTEK) { | ||
141 | - /* EHCI #1 or #2 on 6 Series/C200 Series chipset */ | ||
142 | - if (pdev->device == 0x1c26 || pdev->device == 0x1c2d) { | ||
143 | - ehci_info(ehci, "broken D3 during system sleep on ASUS\n"); | ||
144 | - hcd->broken_pci_sleep = 1; | ||
145 | - device_set_wakeup_capable(&pdev->dev, false); | ||
146 | - } | ||
147 | - } | ||
148 | break; | ||
149 | case PCI_VENDOR_ID_TDI: | ||
150 | if (pdev->device == PCI_DEVICE_ID_TDI_EHCI) { | ||
151 | diff --git a/include/linux/pci.h b/include/linux/pci.h | ||
152 | index 7cda65b..c0cfa0d 100644 | ||
153 | --- a/include/linux/pci.h | ||
154 | +++ b/include/linux/pci.h | ||
155 | @@ -176,6 +176,8 @@ enum pci_dev_flags { | ||
156 | PCI_DEV_FLAGS_NO_D3 = (__force pci_dev_flags_t) 2, | ||
157 | /* Provide indication device is assigned by a Virtual Machine Manager */ | ||
158 | PCI_DEV_FLAGS_ASSIGNED = (__force pci_dev_flags_t) 4, | ||
159 | + /* Device causes system crash if in D3 during S3 sleep */ | ||
160 | + PCI_DEV_FLAGS_NO_D3_DURING_SLEEP = (__force pci_dev_flags_t) 8, | ||
161 | }; | ||
162 | |||
163 | enum pci_irq_reroute_variant { | ||
164 | diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h | ||
165 | index 64cec8d..03354d5 100644 | ||
166 | --- a/include/linux/usb/hcd.h | ||
167 | +++ b/include/linux/usb/hcd.h | ||
168 | @@ -128,8 +128,6 @@ struct usb_hcd { | ||
169 | unsigned wireless:1; /* Wireless USB HCD */ | ||
170 | unsigned authorized_default:1; | ||
171 | unsigned has_tt:1; /* Integrated TT in root hub */ | ||
172 | - unsigned broken_pci_sleep:1; /* Don't put the | ||
173 | - controller in PCI-D3 for system sleep */ | ||
174 | |||
175 | int irq; /* irq allocated */ | ||
176 | void __iomem *regs; /* device memory/io */ | ||
177 | -- | ||
178 | 1.7.9.5 | ||
179 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0057-USB-serial-Enforce-USB-driver-and-USB-serial-driver-.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0057-USB-serial-Enforce-USB-driver-and-USB-serial-driver-.patch new file mode 100644 index 00000000..abcb4c97 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0057-USB-serial-Enforce-USB-driver-and-USB-serial-driver-.patch | |||
@@ -0,0 +1,162 @@ | |||
1 | From 445ae7e401ef25e383d9784a4602b815b2a580e1 Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn@mork.no> | ||
3 | Date: Wed, 30 May 2012 10:00:14 +0200 | ||
4 | Subject: [PATCH 57/67] USB: serial: Enforce USB driver and USB serial driver | ||
5 | match | ||
6 | MIME-Version: 1.0 | ||
7 | Content-Type: text/plain; charset=UTF-8 | ||
8 | Content-Transfer-Encoding: 8bit | ||
9 | |||
10 | commit 954c3f8a5f1b7716be9eee978b3bc85bae92d7c8 upstream. | ||
11 | |||
12 | We need to make sure that the USB serial driver we find | ||
13 | matches the USB driver whose probe we are currently | ||
14 | executing. Otherwise we will end up with USB serial | ||
15 | devices bound to the correct serial driver but wrong | ||
16 | USB driver. | ||
17 | |||
18 | An example of such cross-probing, where the usbserial_generic | ||
19 | USB driver has found the sierra serial driver: | ||
20 | |||
21 | May 29 18:26:15 nemi kernel: [ 4442.559246] usbserial_generic 4-4:1.0: Sierra USB modem converter detected | ||
22 | May 29 18:26:20 nemi kernel: [ 4447.556747] usbserial_generic 4-4:1.2: Sierra USB modem converter detected | ||
23 | May 29 18:26:25 nemi kernel: [ 4452.557288] usbserial_generic 4-4:1.3: Sierra USB modem converter detected | ||
24 | |||
25 | sysfs view of the same problem: | ||
26 | |||
27 | bjorn@nemi:~$ ls -l /sys/bus/usb/drivers/sierra/ | ||
28 | total 0 | ||
29 | --w------- 1 root root 4096 May 29 18:23 bind | ||
30 | lrwxrwxrwx 1 root root 0 May 29 18:23 module -> ../../../../module/usbserial | ||
31 | --w------- 1 root root 4096 May 29 18:23 uevent | ||
32 | --w------- 1 root root 4096 May 29 18:23 unbind | ||
33 | bjorn@nemi:~$ ls -l /sys/bus/usb-serial/drivers/sierra/ | ||
34 | total 0 | ||
35 | --w------- 1 root root 4096 May 29 18:23 bind | ||
36 | lrwxrwxrwx 1 root root 0 May 29 18:23 module -> ../../../../module/sierra | ||
37 | -rw-r--r-- 1 root root 4096 May 29 18:23 new_id | ||
38 | lrwxrwxrwx 1 root root 0 May 29 18:32 ttyUSB0 -> ../../../../devices/pci0000:00/0000:00:1d.7/usb4/4-4/4-4:1.0/ttyUSB0 | ||
39 | lrwxrwxrwx 1 root root 0 May 29 18:32 ttyUSB1 -> ../../../../devices/pci0000:00/0000:00:1d.7/usb4/4-4/4-4:1.2/ttyUSB1 | ||
40 | lrwxrwxrwx 1 root root 0 May 29 18:32 ttyUSB2 -> ../../../../devices/pci0000:00/0000:00:1d.7/usb4/4-4/4-4:1.3/ttyUSB2 | ||
41 | --w------- 1 root root 4096 May 29 18:23 uevent | ||
42 | --w------- 1 root root 4096 May 29 18:23 unbind | ||
43 | |||
44 | bjorn@nemi:~$ ls -l /sys/bus/usb/drivers/usbserial_generic/ | ||
45 | total 0 | ||
46 | lrwxrwxrwx 1 root root 0 May 29 18:33 4-4:1.0 -> ../../../../devices/pci0000:00/0000:00:1d.7/usb4/4-4/4-4:1.0 | ||
47 | lrwxrwxrwx 1 root root 0 May 29 18:33 4-4:1.2 -> ../../../../devices/pci0000:00/0000:00:1d.7/usb4/4-4/4-4:1.2 | ||
48 | lrwxrwxrwx 1 root root 0 May 29 18:33 4-4:1.3 -> ../../../../devices/pci0000:00/0000:00:1d.7/usb4/4-4/4-4:1.3 | ||
49 | --w------- 1 root root 4096 May 29 18:33 bind | ||
50 | lrwxrwxrwx 1 root root 0 May 29 18:33 module -> ../../../../module/usbserial | ||
51 | --w------- 1 root root 4096 May 29 18:22 uevent | ||
52 | --w------- 1 root root 4096 May 29 18:33 unbind | ||
53 | bjorn@nemi:~$ ls -l /sys/bus/usb-serial/drivers/generic/ | ||
54 | total 0 | ||
55 | --w------- 1 root root 4096 May 29 18:33 bind | ||
56 | lrwxrwxrwx 1 root root 0 May 29 18:33 module -> ../../../../module/usbserial | ||
57 | -rw-r--r-- 1 root root 4096 May 29 18:33 new_id | ||
58 | --w------- 1 root root 4096 May 29 18:22 uevent | ||
59 | --w------- 1 root root 4096 May 29 18:33 unbind | ||
60 | |||
61 | So we end up with a mismatch between the USB driver and the | ||
62 | USB serial driver. The reason for the above is simple: The | ||
63 | USB driver probe will succeed if *any* registered serial | ||
64 | driver matches, and will use that serial driver for all | ||
65 | serial driver functions. | ||
66 | |||
67 | This makes ref counting go wrong. We count the USB driver | ||
68 | as used, but not the USB serial driver. This may result | ||
69 | in Oops'es as demonstrated by Johan Hovold <jhovold@gmail.com>: | ||
70 | |||
71 | [11811.646396] drivers/usb/serial/usb-serial.c: get_free_serial 1 | ||
72 | [11811.646443] drivers/usb/serial/usb-serial.c: get_free_serial - minor base = 0 | ||
73 | [11811.646460] drivers/usb/serial/usb-serial.c: usb_serial_probe - registering ttyUSB0 | ||
74 | [11811.646766] usb 6-1: pl2303 converter now attached to ttyUSB0 | ||
75 | [11812.264197] USB Serial deregistering driver FTDI USB Serial Device | ||
76 | [11812.264865] usbcore: deregistering interface driver ftdi_sio | ||
77 | [11812.282180] USB Serial deregistering driver pl2303 | ||
78 | [11812.283141] pl2303 ttyUSB0: pl2303 converter now disconnected from ttyUSB0 | ||
79 | [11812.283272] usbcore: deregistering interface driver pl2303 | ||
80 | [11812.301056] USB Serial deregistering driver generic | ||
81 | [11812.301186] usbcore: deregistering interface driver usbserial_generic | ||
82 | [11812.301259] drivers/usb/serial/usb-serial.c: usb_serial_disconnect | ||
83 | [11812.301823] BUG: unable to handle kernel paging request at f8e7438c | ||
84 | [11812.301845] IP: [<f8e38445>] usb_serial_disconnect+0xb5/0x100 [usbserial] | ||
85 | [11812.301871] *pde = 357ef067 *pte = 00000000 | ||
86 | [11812.301957] Oops: 0000 [#1] PREEMPT SMP | ||
87 | [11812.301983] Modules linked in: usbserial(-) [last unloaded: pl2303] | ||
88 | [11812.302008] | ||
89 | [11812.302019] Pid: 1323, comm: modprobe Tainted: G W 3.4.0-rc7+ #101 Dell Inc. Vostro 1520/0T816J | ||
90 | [11812.302115] EIP: 0060:[<f8e38445>] EFLAGS: 00010246 CPU: 1 | ||
91 | [11812.302130] EIP is at usb_serial_disconnect+0xb5/0x100 [usbserial] | ||
92 | [11812.302141] EAX: f508a180 EBX: f508a180 ECX: 00000000 EDX: f8e74300 | ||
93 | [11812.302151] ESI: f5050800 EDI: 00000001 EBP: f5141e78 ESP: f5141e58 | ||
94 | [11812.302160] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 | ||
95 | [11812.302170] CR0: 8005003b CR2: f8e7438c CR3: 34848000 CR4: 000007d0 | ||
96 | [11812.302180] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000 | ||
97 | [11812.302189] DR6: ffff0ff0 DR7: 00000400 | ||
98 | [11812.302199] Process modprobe (pid: 1323, ti=f5140000 task=f61e2bc0 task.ti=f5140000) | ||
99 | [11812.302209] Stack: | ||
100 | [11812.302216] f8e3be0f f8e3b29c f8e3ae00 00000000 f513641c f5136400 f513641c f507a540 | ||
101 | [11812.302325] f5141e98 c133d2c1 00000000 00000000 f509c400 f513641c f507a590 f5136450 | ||
102 | [11812.302372] f5141ea8 c12f0344 f513641c f507a590 f5141ebc c12f0c67 00000000 f507a590 | ||
103 | [11812.302419] Call Trace: | ||
104 | [11812.302439] [<c133d2c1>] usb_unbind_interface+0x51/0x190 | ||
105 | [11812.302456] [<c12f0344>] __device_release_driver+0x64/0xb0 | ||
106 | [11812.302469] [<c12f0c67>] driver_detach+0x97/0xa0 | ||
107 | [11812.302483] [<c12f001c>] bus_remove_driver+0x6c/0xe0 | ||
108 | [11812.302500] [<c145938d>] ? __mutex_unlock_slowpath+0xcd/0x140 | ||
109 | [11812.302514] [<c12f0ff9>] driver_unregister+0x49/0x80 | ||
110 | [11812.302528] [<c1457df6>] ? printk+0x1d/0x1f | ||
111 | [11812.302540] [<c133c50d>] usb_deregister+0x5d/0xb0 | ||
112 | [11812.302557] [<f8e37c55>] ? usb_serial_deregister+0x45/0x50 [usbserial] | ||
113 | [11812.302575] [<f8e37c8d>] usb_serial_deregister_drivers+0x2d/0x40 [usbserial] | ||
114 | [11812.302593] [<f8e3a6e2>] usb_serial_generic_deregister+0x12/0x20 [usbserial] | ||
115 | [11812.302611] [<f8e3acf0>] usb_serial_exit+0x8/0x32 [usbserial] | ||
116 | [11812.302716] [<c1080b48>] sys_delete_module+0x158/0x260 | ||
117 | [11812.302730] [<c110594e>] ? mntput+0x1e/0x30 | ||
118 | [11812.302746] [<c145c3c3>] ? sysenter_exit+0xf/0x18 | ||
119 | [11812.302746] [<c107777c>] ? trace_hardirqs_on_caller+0xec/0x170 | ||
120 | [11812.302746] [<c145c390>] sysenter_do_call+0x12/0x36 | ||
121 | [11812.302746] Code: 24 02 00 00 e8 dd f3 20 c8 f6 86 74 02 00 00 02 74 b4 8d 86 4c 02 00 00 47 e8 78 55 4b c8 0f b6 43 0e 39 f8 7f a9 8b 53 04 89 d8 <ff> 92 8c 00 00 00 89 d8 e8 0e ff ff ff 8b 45 f0 c7 44 24 04 2f | ||
122 | [11812.302746] EIP: [<f8e38445>] usb_serial_disconnect+0xb5/0x100 [usbserial] SS:ESP 0068:f5141e58 | ||
123 | [11812.302746] CR2: 00000000f8e7438c | ||
124 | |||
125 | Fix by only evaluating serial drivers pointing back to the | ||
126 | USB driver we are currently probing. This still allows two | ||
127 | or more drivers to match the same device, running their | ||
128 | serial driver probes to sort out which one to use. | ||
129 | |||
130 | Signed-off-by: Bjørn Mork <bjorn@mork.no> | ||
131 | Reviewed-by: Felipe Balbi <balbi@ti.com> | ||
132 | Tested-by: Johan Hovold <jhovold@gmail.com> | ||
133 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
134 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
135 | --- | ||
136 | drivers/usb/serial/usb-serial.c | 6 ++++-- | ||
137 | 1 file changed, 4 insertions(+), 2 deletions(-) | ||
138 | |||
139 | diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c | ||
140 | index 38d7ebd..8bea45c 100644 | ||
141 | --- a/drivers/usb/serial/usb-serial.c | ||
142 | +++ b/drivers/usb/serial/usb-serial.c | ||
143 | @@ -669,12 +669,14 @@ exit: | ||
144 | static struct usb_serial_driver *search_serial_device( | ||
145 | struct usb_interface *iface) | ||
146 | { | ||
147 | - const struct usb_device_id *id; | ||
148 | + const struct usb_device_id *id = NULL; | ||
149 | struct usb_serial_driver *drv; | ||
150 | + struct usb_driver *driver = to_usb_driver(iface->dev.driver); | ||
151 | |||
152 | /* Check if the usb id matches a known device */ | ||
153 | list_for_each_entry(drv, &usb_serial_driver_list, driver_list) { | ||
154 | - id = get_iface_id(drv, iface); | ||
155 | + if (drv->usb_driver == driver) | ||
156 | + id = get_iface_id(drv, iface); | ||
157 | if (id) | ||
158 | return drv; | ||
159 | } | ||
160 | -- | ||
161 | 1.7.9.5 | ||
162 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0058-xhci-Fix-invalid-loop-check-in-xhci_free_tt_info.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0058-xhci-Fix-invalid-loop-check-in-xhci_free_tt_info.patch new file mode 100644 index 00000000..6243e98f --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0058-xhci-Fix-invalid-loop-check-in-xhci_free_tt_info.patch | |||
@@ -0,0 +1,89 @@ | |||
1 | From 6007e93797d693599661f4547d329258ec711a9f Mon Sep 17 00:00:00 2001 | ||
2 | From: Takashi Iwai <tiwai@suse.de> | ||
3 | Date: Fri, 1 Jun 2012 10:06:23 +0200 | ||
4 | Subject: [PATCH 58/67] xhci: Fix invalid loop check in xhci_free_tt_info() | ||
5 | |||
6 | commit 46ed8f00d8982e49f8fe2c1a9cea192f640cb3ba upstream. | ||
7 | |||
8 | xhci_free_tt_info() may access the invalid memory when it removes the | ||
9 | last entry but the list is not empty. Then tt_next reaches to the | ||
10 | list head but it still tries to check the tt_info of that entry. | ||
11 | |||
12 | This patch fixes the bug and cleans up the messy code by rewriting | ||
13 | with a simple list_for_each_entry_safe(). | ||
14 | |||
15 | This patch should be backported to kernels as old as 3.2, that contain | ||
16 | the commit 839c817ce67178ca3c7c7ad534c571bba1e69ebe "xhci: Store | ||
17 | information about roothubs and TTs." | ||
18 | |||
19 | Signed-off-by: Takashi Iwai <tiwai@suse.de> | ||
20 | Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> | ||
21 | Reviewed-by: Oliver Neukum <oneukum@suse.de> | ||
22 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
23 | --- | ||
24 | drivers/usb/host/xhci-mem.c | 39 ++++++++++----------------------------- | ||
25 | 1 file changed, 10 insertions(+), 29 deletions(-) | ||
26 | |||
27 | diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c | ||
28 | index 4232e868..b85eb36 100644 | ||
29 | --- a/drivers/usb/host/xhci-mem.c | ||
30 | +++ b/drivers/usb/host/xhci-mem.c | ||
31 | @@ -693,10 +693,9 @@ static void xhci_free_tt_info(struct xhci_hcd *xhci, | ||
32 | struct xhci_virt_device *virt_dev, | ||
33 | int slot_id) | ||
34 | { | ||
35 | - struct list_head *tt; | ||
36 | struct list_head *tt_list_head; | ||
37 | - struct list_head *tt_next; | ||
38 | - struct xhci_tt_bw_info *tt_info; | ||
39 | + struct xhci_tt_bw_info *tt_info, *next; | ||
40 | + bool slot_found = false; | ||
41 | |||
42 | /* If the device never made it past the Set Address stage, | ||
43 | * it may not have the real_port set correctly. | ||
44 | @@ -708,34 +707,16 @@ static void xhci_free_tt_info(struct xhci_hcd *xhci, | ||
45 | } | ||
46 | |||
47 | tt_list_head = &(xhci->rh_bw[virt_dev->real_port - 1].tts); | ||
48 | - if (list_empty(tt_list_head)) | ||
49 | - return; | ||
50 | - | ||
51 | - list_for_each(tt, tt_list_head) { | ||
52 | - tt_info = list_entry(tt, struct xhci_tt_bw_info, tt_list); | ||
53 | - if (tt_info->slot_id == slot_id) | ||
54 | + list_for_each_entry_safe(tt_info, next, tt_list_head, tt_list) { | ||
55 | + /* Multi-TT hubs will have more than one entry */ | ||
56 | + if (tt_info->slot_id == slot_id) { | ||
57 | + slot_found = true; | ||
58 | + list_del(&tt_info->tt_list); | ||
59 | + kfree(tt_info); | ||
60 | + } else if (slot_found) { | ||
61 | break; | ||
62 | + } | ||
63 | } | ||
64 | - /* Cautionary measure in case the hub was disconnected before we | ||
65 | - * stored the TT information. | ||
66 | - */ | ||
67 | - if (tt_info->slot_id != slot_id) | ||
68 | - return; | ||
69 | - | ||
70 | - tt_next = tt->next; | ||
71 | - tt_info = list_entry(tt, struct xhci_tt_bw_info, | ||
72 | - tt_list); | ||
73 | - /* Multi-TT hubs will have more than one entry */ | ||
74 | - do { | ||
75 | - list_del(tt); | ||
76 | - kfree(tt_info); | ||
77 | - tt = tt_next; | ||
78 | - if (list_empty(tt_list_head)) | ||
79 | - break; | ||
80 | - tt_next = tt->next; | ||
81 | - tt_info = list_entry(tt, struct xhci_tt_bw_info, | ||
82 | - tt_list); | ||
83 | - } while (tt_info->slot_id == slot_id); | ||
84 | } | ||
85 | |||
86 | int xhci_alloc_tt_info(struct xhci_hcd *xhci, | ||
87 | -- | ||
88 | 1.7.9.5 | ||
89 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0059-xhci-Don-t-free-endpoints-in-xhci_mem_cleanup.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0059-xhci-Don-t-free-endpoints-in-xhci_mem_cleanup.patch new file mode 100644 index 00000000..41ec5edb --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0059-xhci-Don-t-free-endpoints-in-xhci_mem_cleanup.patch | |||
@@ -0,0 +1,94 @@ | |||
1 | From fcb37c126483592a507dafef265b134f975a749f Mon Sep 17 00:00:00 2001 | ||
2 | From: Takashi Iwai <tiwai@suse.de> | ||
3 | Date: Fri, 1 Jun 2012 10:06:24 +0200 | ||
4 | Subject: [PATCH 59/67] xhci: Don't free endpoints in xhci_mem_cleanup() | ||
5 | |||
6 | commit 32f1d2c536d0c26c5814cb0e6a0606c42d02fac1 upstream. | ||
7 | |||
8 | This patch fixes a few issues introduced in the recent fix | ||
9 | [f8a9e72d: USB: fix resource leak in xhci power loss path] | ||
10 | |||
11 | - The endpoints listed in bw table are just links and each entry is an | ||
12 | array member of dev->eps[]. But the commit above adds a kfree() call | ||
13 | to these instances, and thus it results in memory corruption. | ||
14 | |||
15 | - It clears only the first entry of rh_bw[], but there can be multiple | ||
16 | ports. | ||
17 | |||
18 | - It'd be safer to clear the list_head of ep as well, not only | ||
19 | removing from the list, as it's checked in | ||
20 | xhci_discover_or_reset_device(). | ||
21 | |||
22 | This patch should be backported to kernels as old as 3.2, that contain | ||
23 | the commit 839c817ce67178ca3c7c7ad534c571bba1e69ebe "xhci: Store | ||
24 | information about roothubs and TTs." | ||
25 | |||
26 | Signed-off-by: Takashi Iwai <tiwai@suse.de> | ||
27 | Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> | ||
28 | Reviewed-by: Oliver Neukum <oneukum@suse.de> | ||
29 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
30 | --- | ||
31 | drivers/usb/host/xhci-mem.c | 35 ++++++++++++++--------------------- | ||
32 | 1 file changed, 14 insertions(+), 21 deletions(-) | ||
33 | |||
34 | diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c | ||
35 | index b85eb36..a40ab98 100644 | ||
36 | --- a/drivers/usb/host/xhci-mem.c | ||
37 | +++ b/drivers/usb/host/xhci-mem.c | ||
38 | @@ -1680,17 +1680,9 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci) | ||
39 | { | ||
40 | struct pci_dev *pdev = to_pci_dev(xhci_to_hcd(xhci)->self.controller); | ||
41 | struct dev_info *dev_info, *next; | ||
42 | - struct list_head *tt_list_head; | ||
43 | - struct list_head *tt; | ||
44 | - struct list_head *endpoints; | ||
45 | - struct list_head *ep, *q; | ||
46 | - struct xhci_tt_bw_info *tt_info; | ||
47 | - struct xhci_interval_bw_table *bwt; | ||
48 | - struct xhci_virt_ep *virt_ep; | ||
49 | - | ||
50 | unsigned long flags; | ||
51 | int size; | ||
52 | - int i; | ||
53 | + int i, j, num_ports; | ||
54 | |||
55 | /* Free the Event Ring Segment Table and the actual Event Ring */ | ||
56 | size = sizeof(struct xhci_erst_entry)*(xhci->erst.num_entries); | ||
57 | @@ -1747,21 +1739,22 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci) | ||
58 | } | ||
59 | spin_unlock_irqrestore(&xhci->lock, flags); | ||
60 | |||
61 | - bwt = &xhci->rh_bw->bw_table; | ||
62 | - for (i = 0; i < XHCI_MAX_INTERVAL; i++) { | ||
63 | - endpoints = &bwt->interval_bw[i].endpoints; | ||
64 | - list_for_each_safe(ep, q, endpoints) { | ||
65 | - virt_ep = list_entry(ep, struct xhci_virt_ep, bw_endpoint_list); | ||
66 | - list_del(&virt_ep->bw_endpoint_list); | ||
67 | - kfree(virt_ep); | ||
68 | + num_ports = HCS_MAX_PORTS(xhci->hcs_params1); | ||
69 | + for (i = 0; i < num_ports; i++) { | ||
70 | + struct xhci_interval_bw_table *bwt = &xhci->rh_bw[i].bw_table; | ||
71 | + for (j = 0; j < XHCI_MAX_INTERVAL; j++) { | ||
72 | + struct list_head *ep = &bwt->interval_bw[j].endpoints; | ||
73 | + while (!list_empty(ep)) | ||
74 | + list_del_init(ep->next); | ||
75 | } | ||
76 | } | ||
77 | |||
78 | - tt_list_head = &xhci->rh_bw->tts; | ||
79 | - list_for_each_safe(tt, q, tt_list_head) { | ||
80 | - tt_info = list_entry(tt, struct xhci_tt_bw_info, tt_list); | ||
81 | - list_del(tt); | ||
82 | - kfree(tt_info); | ||
83 | + for (i = 0; i < num_ports; i++) { | ||
84 | + struct xhci_tt_bw_info *tt, *n; | ||
85 | + list_for_each_entry_safe(tt, n, &xhci->rh_bw[i].tts, tt_list) { | ||
86 | + list_del(&tt->tt_list); | ||
87 | + kfree(tt); | ||
88 | + } | ||
89 | } | ||
90 | |||
91 | xhci->num_usb2_ports = 0; | ||
92 | -- | ||
93 | 1.7.9.5 | ||
94 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0060-xHCI-Increase-the-timeout-for-controller-save-restor.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0060-xHCI-Increase-the-timeout-for-controller-save-restor.patch new file mode 100644 index 00000000..6ca5f780 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0060-xHCI-Increase-the-timeout-for-controller-save-restor.patch | |||
@@ -0,0 +1,66 @@ | |||
1 | From 989ee831bd73b7de3030e3d01068f4b115f277f9 Mon Sep 17 00:00:00 2001 | ||
2 | From: Andiry Xu <andiry.xu@gmail.com> | ||
3 | Date: Wed, 13 Jun 2012 10:51:57 +0800 | ||
4 | Subject: [PATCH 60/67] xHCI: Increase the timeout for controller save/restore | ||
5 | state operation | ||
6 | |||
7 | commit 622eb783fe6ff4c1baa47db16c3a5db97f9e6e50 upstream. | ||
8 | |||
9 | When system software decides to power down the xHC with the intent of | ||
10 | resuming operation at a later time, it will ask xHC to save the internal | ||
11 | state and restore it when resume to correctly recover from a power event. | ||
12 | Two bits are used to enable this operation: Save State and Restore State. | ||
13 | |||
14 | xHCI spec 4.23.2 says software should "Set the Controller Save/Restore | ||
15 | State flag in the USBCMD register and wait for the Save/Restore State | ||
16 | Status flag in the USBSTS register to transition to '0'". However, it does | ||
17 | not define how long software should wait for the SSS/RSS bit to transition | ||
18 | to 0. | ||
19 | |||
20 | Currently the timeout is set to 1ms. There is bug report | ||
21 | (https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1002697) | ||
22 | indicates that the timeout is too short for ASMedia ASM1042 host controller | ||
23 | to save/restore the state successfully. Increase the timeout to 10ms helps to | ||
24 | resolve the issue. | ||
25 | |||
26 | This patch should be backported to stable kernels as old as 2.6.37, that | ||
27 | contain the commit 5535b1d5f8885695c6ded783c692e3c0d0eda8ca "USB: xHCI: | ||
28 | PCI power management implementation" | ||
29 | |||
30 | Signed-off-by: Andiry Xu <andiry.xu@gmail.com> | ||
31 | Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> | ||
32 | Cc: Ming Lei <ming.lei@canonical.com> | ||
33 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
34 | --- | ||
35 | drivers/usb/host/xhci.c | 8 ++++---- | ||
36 | 1 file changed, 4 insertions(+), 4 deletions(-) | ||
37 | |||
38 | diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c | ||
39 | index 4c00606..05f82e9 100644 | ||
40 | --- a/drivers/usb/host/xhci.c | ||
41 | +++ b/drivers/usb/host/xhci.c | ||
42 | @@ -783,8 +783,8 @@ int xhci_suspend(struct xhci_hcd *xhci) | ||
43 | command = xhci_readl(xhci, &xhci->op_regs->command); | ||
44 | command |= CMD_CSS; | ||
45 | xhci_writel(xhci, command, &xhci->op_regs->command); | ||
46 | - if (handshake(xhci, &xhci->op_regs->status, STS_SAVE, 0, 10*100)) { | ||
47 | - xhci_warn(xhci, "WARN: xHC CMD_CSS timeout\n"); | ||
48 | + if (handshake(xhci, &xhci->op_regs->status, STS_SAVE, 0, 10 * 1000)) { | ||
49 | + xhci_warn(xhci, "WARN: xHC save state timeout\n"); | ||
50 | spin_unlock_irq(&xhci->lock); | ||
51 | return -ETIMEDOUT; | ||
52 | } | ||
53 | @@ -836,8 +836,8 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated) | ||
54 | command |= CMD_CRS; | ||
55 | xhci_writel(xhci, command, &xhci->op_regs->command); | ||
56 | if (handshake(xhci, &xhci->op_regs->status, | ||
57 | - STS_RESTORE, 0, 10*100)) { | ||
58 | - xhci_dbg(xhci, "WARN: xHC CMD_CSS timeout\n"); | ||
59 | + STS_RESTORE, 0, 10 * 1000)) { | ||
60 | + xhci_warn(xhci, "WARN: xHC restore state timeout\n"); | ||
61 | spin_unlock_irq(&xhci->lock); | ||
62 | return -ETIMEDOUT; | ||
63 | } | ||
64 | -- | ||
65 | 1.7.9.5 | ||
66 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0061-usb-PS3-EHCI-QH-read-work-around.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0061-usb-PS3-EHCI-QH-read-work-around.patch new file mode 100644 index 00000000..940cd4cd --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0061-usb-PS3-EHCI-QH-read-work-around.patch | |||
@@ -0,0 +1,36 @@ | |||
1 | From 8358979f2727e09ed8658dfbc95fa3ffdbbdac75 Mon Sep 17 00:00:00 2001 | ||
2 | From: Geoff Levand <geoff@infradead.org> | ||
3 | Date: Tue, 8 Nov 2011 16:01:18 -0800 | ||
4 | Subject: [PATCH 61/67] usb: PS3 EHCI QH read work-around | ||
5 | |||
6 | commit aaa0ef289afe9186f81e2340114ea413eef0492a upstream. | ||
7 | |||
8 | PS3 EHCI HC errata fix 244. The SCC EHCI HC will not correctly perform QH | ||
9 | reads that occur near or span a micro-frame boundry. This is due to a problem | ||
10 | in the Nak Count Reload Control logic (EHCI Specification 1.0 Section 4.9.1). | ||
11 | |||
12 | The work-around for this problem is for the HC driver to set I=1 (inactive) for | ||
13 | QHs with H=1 (list head). | ||
14 | |||
15 | Signed-off-by: Geoff Levand <geoff@infradead.org> | ||
16 | Acked-by: Alan Stern <stern@rowland.harvard.edu> | ||
17 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
18 | --- | ||
19 | drivers/usb/host/ehci-hcd.c | 1 + | ||
20 | 1 file changed, 1 insertion(+) | ||
21 | |||
22 | diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c | ||
23 | index da2f711..64c0d7b 100644 | ||
24 | --- a/drivers/usb/host/ehci-hcd.c | ||
25 | +++ b/drivers/usb/host/ehci-hcd.c | ||
26 | @@ -620,6 +620,7 @@ static int ehci_init(struct usb_hcd *hcd) | ||
27 | hw = ehci->async->hw; | ||
28 | hw->hw_next = QH_NEXT(ehci, ehci->async->qh_dma); | ||
29 | hw->hw_info1 = cpu_to_hc32(ehci, QH_HEAD); | ||
30 | + hw->hw_info1 |= cpu_to_hc32(ehci, (1 << 7)); /* I = 1 */ | ||
31 | hw->hw_token = cpu_to_hc32(ehci, QTD_STS_HALT); | ||
32 | hw->hw_qtd_next = EHCI_LIST_END(ehci); | ||
33 | ehci->async->qh_state = QH_STATE_LINKED; | ||
34 | -- | ||
35 | 1.7.9.5 | ||
36 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0062-USB-fix-PS3-EHCI-systems.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0062-USB-fix-PS3-EHCI-systems.patch new file mode 100644 index 00000000..d3476fc0 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0062-USB-fix-PS3-EHCI-systems.patch | |||
@@ -0,0 +1,37 @@ | |||
1 | From 5ed14fb69997843bfb782a2f742ef8c583e44f4b Mon Sep 17 00:00:00 2001 | ||
2 | From: Ricardo Martins <rasm@fe.up.pt> | ||
3 | Date: Tue, 22 May 2012 18:02:03 +0100 | ||
4 | Subject: [PATCH 62/67] USB: fix PS3 EHCI systems | ||
5 | |||
6 | commit 4f7a67e2dd49fbfba002c453bc24bf00e701cc71 upstream. | ||
7 | |||
8 | After commit aaa0ef289afe9186f81e2340114ea413eef0492a "PS3 EHCI QH | ||
9 | read work-around", Terratec Grabby (em28xx) stopped working with AMD | ||
10 | Geode LX 800 (USB controller AMD CS5536). Since this is a PS3 only | ||
11 | fix, the following patch adds a conditional block around it. | ||
12 | |||
13 | Signed-off-by: Ricardo Martins <rasm@fe.up.pt> | ||
14 | Acked-by: Alan Stern <stern@rowland.harvard.edu> | ||
15 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
16 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
17 | --- | ||
18 | drivers/usb/host/ehci-hcd.c | 2 ++ | ||
19 | 1 file changed, 2 insertions(+) | ||
20 | |||
21 | diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c | ||
22 | index 64c0d7b..339be10 100644 | ||
23 | --- a/drivers/usb/host/ehci-hcd.c | ||
24 | +++ b/drivers/usb/host/ehci-hcd.c | ||
25 | @@ -620,7 +620,9 @@ static int ehci_init(struct usb_hcd *hcd) | ||
26 | hw = ehci->async->hw; | ||
27 | hw->hw_next = QH_NEXT(ehci, ehci->async->qh_dma); | ||
28 | hw->hw_info1 = cpu_to_hc32(ehci, QH_HEAD); | ||
29 | +#if defined(CONFIG_PPC_PS3) | ||
30 | hw->hw_info1 |= cpu_to_hc32(ehci, (1 << 7)); /* I = 1 */ | ||
31 | +#endif | ||
32 | hw->hw_token = cpu_to_hc32(ehci, QTD_STS_HALT); | ||
33 | hw->hw_qtd_next = EHCI_LIST_END(ehci); | ||
34 | ehci->async->qh_state = QH_STATE_LINKED; | ||
35 | -- | ||
36 | 1.7.9.5 | ||
37 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0063-usb-cdc-acm-fix-devices-not-unthrottled-on-open.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0063-usb-cdc-acm-fix-devices-not-unthrottled-on-open.patch new file mode 100644 index 00000000..8eab02a4 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0063-usb-cdc-acm-fix-devices-not-unthrottled-on-open.patch | |||
@@ -0,0 +1,43 @@ | |||
1 | From d48aade3b822cbd46666d0ef17a646bb5eba2bd3 Mon Sep 17 00:00:00 2001 | ||
2 | From: Otto Meta <otto.patches@sister-shadow.de> | ||
3 | Date: Wed, 6 Jun 2012 18:46:21 +0200 | ||
4 | Subject: [PATCH 63/67] usb: cdc-acm: fix devices not unthrottled on open | ||
5 | |||
6 | commit 6c4707f3f8c44ec18282e1c014c80e1c257042f9 upstream. | ||
7 | |||
8 | Currently CDC-ACM devices stay throttled when their TTY is closed while | ||
9 | throttled, stalling further communication attempts after the next open. | ||
10 | |||
11 | Unthrottling during open/activate got lost starting with kernel | ||
12 | 3.0.0 and this patch reintroduces it. | ||
13 | |||
14 | Signed-off-by: Otto Meta <otto.patches@sister-shadow.de> | ||
15 | Acked-by: Johan Hovold <jhovold@gmail.com> | ||
16 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
17 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
18 | --- | ||
19 | drivers/usb/class/cdc-acm.c | 8 ++++++++ | ||
20 | 1 file changed, 8 insertions(+) | ||
21 | |||
22 | diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c | ||
23 | index e61d9c4..1094469 100644 | ||
24 | --- a/drivers/usb/class/cdc-acm.c | ||
25 | +++ b/drivers/usb/class/cdc-acm.c | ||
26 | @@ -498,6 +498,14 @@ static int acm_tty_open(struct tty_struct *tty, struct file *filp) | ||
27 | |||
28 | usb_autopm_put_interface(acm->control); | ||
29 | |||
30 | + /* | ||
31 | + * Unthrottle device in case the TTY was closed while throttled. | ||
32 | + */ | ||
33 | + spin_lock_irq(&acm->read_lock); | ||
34 | + acm->throttled = 0; | ||
35 | + acm->throttle_req = 0; | ||
36 | + spin_unlock_irq(&acm->read_lock); | ||
37 | + | ||
38 | if (acm_submit_read_urbs(acm, GFP_KERNEL)) | ||
39 | goto bail_out; | ||
40 | |||
41 | -- | ||
42 | 1.7.9.5 | ||
43 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0064-USB-fix-gathering-of-interface-associations.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0064-USB-fix-gathering-of-interface-associations.patch new file mode 100644 index 00000000..81314985 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0064-USB-fix-gathering-of-interface-associations.patch | |||
@@ -0,0 +1,88 @@ | |||
1 | From 88948e29878410f75f424d93c132dae0771bbb38 Mon Sep 17 00:00:00 2001 | ||
2 | From: Daniel Mack <zonque@gmail.com> | ||
3 | Date: Tue, 12 Jun 2012 20:23:52 +0200 | ||
4 | Subject: [PATCH 64/67] USB: fix gathering of interface associations | ||
5 | |||
6 | commit b3a3dd074f7053ef824ad077e5331b52220ceba1 upstream. | ||
7 | |||
8 | TEAC's UD-H01 (and probably other devices) have a gap in the interface | ||
9 | number allocation of their descriptors: | ||
10 | |||
11 | Configuration Descriptor: | ||
12 | bLength 9 | ||
13 | bDescriptorType 2 | ||
14 | wTotalLength 220 | ||
15 | bNumInterfaces 3 | ||
16 | [...] | ||
17 | Interface Descriptor: | ||
18 | bLength 9 | ||
19 | bDescriptorType 4 | ||
20 | bInterfaceNumber 0 | ||
21 | bAlternateSetting 0 | ||
22 | [...] | ||
23 | Interface Association: | ||
24 | bLength 8 | ||
25 | bDescriptorType 11 | ||
26 | bFirstInterface 2 | ||
27 | bInterfaceCount 2 | ||
28 | bFunctionClass 1 Audio | ||
29 | bFunctionSubClass 0 | ||
30 | bFunctionProtocol 32 | ||
31 | iFunction 4 | ||
32 | Interface Descriptor: | ||
33 | bLength 9 | ||
34 | bDescriptorType 4 | ||
35 | bInterfaceNumber 2 | ||
36 | bAlternateSetting 0 | ||
37 | [...] | ||
38 | |||
39 | Once a configuration is selected, usb_set_configuration() walks the | ||
40 | known interfaces of a given configuration and calls find_iad() on | ||
41 | each of them to set the interface association pointer the interface | ||
42 | is included in. | ||
43 | |||
44 | The problem here is that the loop variable is taken for the interface | ||
45 | number in the comparison logic that gathers the association. Which is | ||
46 | fine as long as the descriptors are sane. | ||
47 | |||
48 | In the case above, however, the logic gets out of sync and the | ||
49 | interface association fields of all interfaces beyond the interface | ||
50 | number gap are wrong. | ||
51 | |||
52 | Fix this by passing the interface's bInterfaceNumber to find_iad() | ||
53 | instead. | ||
54 | |||
55 | Signed-off-by: Daniel Mack <zonque@gmail.com> | ||
56 | Reported-by: bEN <ml_all@circa.be> | ||
57 | Reported-by: Ivan Perrone <ivanperrone@hotmail.com> | ||
58 | Tested-by: ivan perrone <ivanperrone@hotmail.com> | ||
59 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
60 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
61 | --- | ||
62 | drivers/usb/core/message.c | 3 ++- | ||
63 | 1 file changed, 2 insertions(+), 1 deletion(-) | ||
64 | |||
65 | diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c | ||
66 | index ca717da..ef116a5 100644 | ||
67 | --- a/drivers/usb/core/message.c | ||
68 | +++ b/drivers/usb/core/message.c | ||
69 | @@ -1803,7 +1803,6 @@ free_interfaces: | ||
70 | intfc = cp->intf_cache[i]; | ||
71 | intf->altsetting = intfc->altsetting; | ||
72 | intf->num_altsetting = intfc->num_altsetting; | ||
73 | - intf->intf_assoc = find_iad(dev, cp, i); | ||
74 | kref_get(&intfc->ref); | ||
75 | |||
76 | alt = usb_altnum_to_altsetting(intf, 0); | ||
77 | @@ -1816,6 +1815,8 @@ free_interfaces: | ||
78 | if (!alt) | ||
79 | alt = &intf->altsetting[0]; | ||
80 | |||
81 | + intf->intf_assoc = | ||
82 | + find_iad(dev, cp, alt->desc.bInterfaceNumber); | ||
83 | intf->cur_altsetting = alt; | ||
84 | usb_enable_interface(dev, intf, true); | ||
85 | intf->dev.parent = &dev->dev; | ||
86 | -- | ||
87 | 1.7.9.5 | ||
88 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0065-swap-fix-shmem-swapping-when-more-than-8-areas.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0065-swap-fix-shmem-swapping-when-more-than-8-areas.patch new file mode 100644 index 00000000..ebf34f12 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0065-swap-fix-shmem-swapping-when-more-than-8-areas.patch | |||
@@ -0,0 +1,102 @@ | |||
1 | From aa557a3d3043ce3af6fb9349fcb59db12972784d Mon Sep 17 00:00:00 2001 | ||
2 | From: Hugh Dickins <hughd@google.com> | ||
3 | Date: Fri, 15 Jun 2012 17:55:50 -0700 | ||
4 | Subject: [PATCH 65/67] swap: fix shmem swapping when more than 8 areas | ||
5 | |||
6 | commit 9b15b817f3d62409290fd56fe3cbb076a931bb0a upstream. | ||
7 | |||
8 | Minchan Kim reports that when a system has many swap areas, and tmpfs | ||
9 | swaps out to the ninth or more, shmem_getpage_gfp()'s attempts to read | ||
10 | back the page cannot locate it, and the read fails with -ENOMEM. | ||
11 | |||
12 | Whoops. Yes, I blindly followed read_swap_header()'s pte_to_swp_entry( | ||
13 | swp_entry_to_pte()) technique for determining maximum usable swap | ||
14 | offset, without stopping to realize that that actually depends upon the | ||
15 | pte swap encoding shifting swap offset to the higher bits and truncating | ||
16 | it there. Whereas our radix_tree swap encoding leaves offset in the | ||
17 | lower bits: it's swap "type" (that is, index of swap area) that was | ||
18 | truncated. | ||
19 | |||
20 | Fix it by reducing the SWP_TYPE_SHIFT() in swapops.h, and removing the | ||
21 | broken radix_to_swp_entry(swp_to_radix_entry()) from read_swap_header(). | ||
22 | |||
23 | This does not reduce the usable size of a swap area any further, it | ||
24 | leaves it as claimed when making the original commit: no change from 3.0 | ||
25 | on x86_64, nor on i386 without PAE; but 3.0's 512GB is reduced to 128GB | ||
26 | per swapfile on i386 with PAE. It's not a change I would have risked | ||
27 | five years ago, but with x86_64 supported for ten years, I believe it's | ||
28 | appropriate now. | ||
29 | |||
30 | Hmm, and what if some architecture implements its swap pte with offset | ||
31 | encoded below type? That would equally break the maximum usable swap | ||
32 | offset check. Happily, they all follow the same tradition of encoding | ||
33 | offset above type, but I'll prepare a check on that for next. | ||
34 | |||
35 | Reported-and-Reviewed-and-Tested-by: Minchan Kim <minchan@kernel.org> | ||
36 | Signed-off-by: Hugh Dickins <hughd@google.com> | ||
37 | Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> | ||
38 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
39 | --- | ||
40 | include/linux/swapops.h | 8 +++++--- | ||
41 | mm/swapfile.c | 12 ++++-------- | ||
42 | 2 files changed, 9 insertions(+), 11 deletions(-) | ||
43 | |||
44 | diff --git a/include/linux/swapops.h b/include/linux/swapops.h | ||
45 | index 2189d3f..d6955607 100644 | ||
46 | --- a/include/linux/swapops.h | ||
47 | +++ b/include/linux/swapops.h | ||
48 | @@ -8,13 +8,15 @@ | ||
49 | * get good packing density in that tree, so the index should be dense in | ||
50 | * the low-order bits. | ||
51 | * | ||
52 | - * We arrange the `type' and `offset' fields so that `type' is at the five | ||
53 | + * We arrange the `type' and `offset' fields so that `type' is at the seven | ||
54 | * high-order bits of the swp_entry_t and `offset' is right-aligned in the | ||
55 | - * remaining bits. | ||
56 | + * remaining bits. Although `type' itself needs only five bits, we allow for | ||
57 | + * shmem/tmpfs to shift it all up a further two bits: see swp_to_radix_entry(). | ||
58 | * | ||
59 | * swp_entry_t's are *never* stored anywhere in their arch-dependent format. | ||
60 | */ | ||
61 | -#define SWP_TYPE_SHIFT(e) (sizeof(e.val) * 8 - MAX_SWAPFILES_SHIFT) | ||
62 | +#define SWP_TYPE_SHIFT(e) ((sizeof(e.val) * 8) - \ | ||
63 | + (MAX_SWAPFILES_SHIFT + RADIX_TREE_EXCEPTIONAL_SHIFT)) | ||
64 | #define SWP_OFFSET_MASK(e) ((1UL << SWP_TYPE_SHIFT(e)) - 1) | ||
65 | |||
66 | /* | ||
67 | diff --git a/mm/swapfile.c b/mm/swapfile.c | ||
68 | index d3955f2..fad1830 100644 | ||
69 | --- a/mm/swapfile.c | ||
70 | +++ b/mm/swapfile.c | ||
71 | @@ -1921,24 +1921,20 @@ static unsigned long read_swap_header(struct swap_info_struct *p, | ||
72 | |||
73 | /* | ||
74 | * Find out how many pages are allowed for a single swap | ||
75 | - * device. There are three limiting factors: 1) the number | ||
76 | + * device. There are two limiting factors: 1) the number | ||
77 | * of bits for the swap offset in the swp_entry_t type, and | ||
78 | * 2) the number of bits in the swap pte as defined by the | ||
79 | - * the different architectures, and 3) the number of free bits | ||
80 | - * in an exceptional radix_tree entry. In order to find the | ||
81 | + * different architectures. In order to find the | ||
82 | * largest possible bit mask, a swap entry with swap type 0 | ||
83 | * and swap offset ~0UL is created, encoded to a swap pte, | ||
84 | * decoded to a swp_entry_t again, and finally the swap | ||
85 | * offset is extracted. This will mask all the bits from | ||
86 | * the initial ~0UL mask that can't be encoded in either | ||
87 | * the swp_entry_t or the architecture definition of a | ||
88 | - * swap pte. Then the same is done for a radix_tree entry. | ||
89 | + * swap pte. | ||
90 | */ | ||
91 | maxpages = swp_offset(pte_to_swp_entry( | ||
92 | - swp_entry_to_pte(swp_entry(0, ~0UL)))); | ||
93 | - maxpages = swp_offset(radix_to_swp_entry( | ||
94 | - swp_to_radix_entry(swp_entry(0, maxpages)))) + 1; | ||
95 | - | ||
96 | + swp_entry_to_pte(swp_entry(0, ~0UL)))) + 1; | ||
97 | if (maxpages > swap_header->info.last_page) { | ||
98 | maxpages = swap_header->info.last_page + 1; | ||
99 | /* p->max is an unsigned int: don't overflow it */ | ||
100 | -- | ||
101 | 1.7.9.5 | ||
102 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0066-drm-radeon-add-some-additional-6xx-7xx-EG-register-i.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0066-drm-radeon-add-some-additional-6xx-7xx-EG-register-i.patch new file mode 100644 index 00000000..8c259c27 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0066-drm-radeon-add-some-additional-6xx-7xx-EG-register-i.patch | |||
@@ -0,0 +1,121 @@ | |||
1 | From 5e599e218c67e5888e56cd171473ac988facb120 Mon Sep 17 00:00:00 2001 | ||
2 | From: Alex Deucher <alexander.deucher@amd.com> | ||
3 | Date: Thu, 14 Jun 2012 22:06:36 +0200 | ||
4 | Subject: [PATCH 66/67] drm/radeon: add some additional 6xx/7xx/EG register | ||
5 | init | ||
6 | |||
7 | commit b866d1334ba2d544bc575d75357dea6bdcdc7f46 upstream. | ||
8 | |||
9 | - SMX_SAR_CTL0 needs to be programmed correctly to prevent | ||
10 | problems with memory exports in certain cases. | ||
11 | - VC_ENHANCE needs to be initialized on 6xx/7xx. | ||
12 | |||
13 | Signed-off-by: Alex Deucher <alexander.deucher@amd.com> | ||
14 | Signed-off-by: Dave Airlie <airlied@redhat.com> | ||
15 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
16 | --- | ||
17 | drivers/gpu/drm/radeon/evergreen.c | 3 +++ | ||
18 | drivers/gpu/drm/radeon/evergreend.h | 1 + | ||
19 | drivers/gpu/drm/radeon/r600.c | 1 + | ||
20 | drivers/gpu/drm/radeon/r600d.h | 1 + | ||
21 | drivers/gpu/drm/radeon/rv770.c | 5 ++++- | ||
22 | drivers/gpu/drm/radeon/rv770d.h | 3 +++ | ||
23 | 6 files changed, 13 insertions(+), 1 deletion(-) | ||
24 | |||
25 | diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c | ||
26 | index dac178b..931f4df 100644 | ||
27 | --- a/drivers/gpu/drm/radeon/evergreen.c | ||
28 | +++ b/drivers/gpu/drm/radeon/evergreen.c | ||
29 | @@ -2148,6 +2148,9 @@ static void evergreen_gpu_init(struct radeon_device *rdev) | ||
30 | smx_dc_ctl0 |= NUMBER_OF_SETS(rdev->config.evergreen.sx_num_of_sets); | ||
31 | WREG32(SMX_DC_CTL0, smx_dc_ctl0); | ||
32 | |||
33 | + if (rdev->family <= CHIP_SUMO2) | ||
34 | + WREG32(SMX_SAR_CTL0, 0x00010000); | ||
35 | + | ||
36 | WREG32(SX_EXPORT_BUFFER_SIZES, (COLOR_BUFFER_SIZE((rdev->config.evergreen.sx_max_export_size / 4) - 1) | | ||
37 | POSITION_BUFFER_SIZE((rdev->config.evergreen.sx_max_export_pos_size / 4) - 1) | | ||
38 | SMX_BUFFER_SIZE((rdev->config.evergreen.sx_max_export_smx_size / 4) - 1))); | ||
39 | diff --git a/drivers/gpu/drm/radeon/evergreend.h b/drivers/gpu/drm/radeon/evergreend.h | ||
40 | index 0128445..6ecd23f 100644 | ||
41 | --- a/drivers/gpu/drm/radeon/evergreend.h | ||
42 | +++ b/drivers/gpu/drm/radeon/evergreend.h | ||
43 | @@ -270,6 +270,7 @@ | ||
44 | #define SCRATCH_UMSK 0x8540 | ||
45 | #define SCRATCH_ADDR 0x8544 | ||
46 | |||
47 | +#define SMX_SAR_CTL0 0xA008 | ||
48 | #define SMX_DC_CTL0 0xA020 | ||
49 | #define USE_HASH_FUNCTION (1 << 0) | ||
50 | #define NUMBER_OF_SETS(x) ((x) << 1) | ||
51 | diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c | ||
52 | index 9cdda0b..bdfa82a 100644 | ||
53 | --- a/drivers/gpu/drm/radeon/r600.c | ||
54 | +++ b/drivers/gpu/drm/radeon/r600.c | ||
55 | @@ -1905,6 +1905,7 @@ void r600_gpu_init(struct radeon_device *rdev) | ||
56 | WREG32(PA_CL_ENHANCE, (CLIP_VTX_REORDER_ENA | | ||
57 | NUM_CLIP_SEQ(3))); | ||
58 | WREG32(PA_SC_ENHANCE, FORCE_EOV_MAX_CLK_CNT(4095)); | ||
59 | + WREG32(VC_ENHANCE, 0); | ||
60 | } | ||
61 | |||
62 | |||
63 | diff --git a/drivers/gpu/drm/radeon/r600d.h b/drivers/gpu/drm/radeon/r600d.h | ||
64 | index bfe1b5d..d4d23a8d 100644 | ||
65 | --- a/drivers/gpu/drm/radeon/r600d.h | ||
66 | +++ b/drivers/gpu/drm/radeon/r600d.h | ||
67 | @@ -461,6 +461,7 @@ | ||
68 | #define TC_L2_SIZE(x) ((x)<<5) | ||
69 | #define L2_DISABLE_LATE_HIT (1<<9) | ||
70 | |||
71 | +#define VC_ENHANCE 0x9714 | ||
72 | |||
73 | #define VGT_CACHE_INVALIDATION 0x88C4 | ||
74 | #define CACHE_INVALIDATION(x) ((x)<<0) | ||
75 | diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c | ||
76 | index e36ba7f..cc79449 100644 | ||
77 | --- a/drivers/gpu/drm/radeon/rv770.c | ||
78 | +++ b/drivers/gpu/drm/radeon/rv770.c | ||
79 | @@ -782,6 +782,9 @@ static void rv770_gpu_init(struct radeon_device *rdev) | ||
80 | ACK_FLUSH_CTL(3) | | ||
81 | SYNC_FLUSH_CTL)); | ||
82 | |||
83 | + if (rdev->family != CHIP_RV770) | ||
84 | + WREG32(SMX_SAR_CTL0, 0x00003f3f); | ||
85 | + | ||
86 | db_debug3 = RREG32(DB_DEBUG3); | ||
87 | db_debug3 &= ~DB_CLK_OFF_DELAY(0x1f); | ||
88 | switch (rdev->family) { | ||
89 | @@ -960,7 +963,7 @@ static void rv770_gpu_init(struct radeon_device *rdev) | ||
90 | |||
91 | WREG32(PA_CL_ENHANCE, (CLIP_VTX_REORDER_ENA | | ||
92 | NUM_CLIP_SEQ(3))); | ||
93 | - | ||
94 | + WREG32(VC_ENHANCE, 0); | ||
95 | } | ||
96 | |||
97 | void r700_vram_gtt_location(struct radeon_device *rdev, struct radeon_mc *mc) | ||
98 | diff --git a/drivers/gpu/drm/radeon/rv770d.h b/drivers/gpu/drm/radeon/rv770d.h | ||
99 | index 7538092..7095a71 100644 | ||
100 | --- a/drivers/gpu/drm/radeon/rv770d.h | ||
101 | +++ b/drivers/gpu/drm/radeon/rv770d.h | ||
102 | @@ -208,6 +208,7 @@ | ||
103 | #define SCRATCH_UMSK 0x8540 | ||
104 | #define SCRATCH_ADDR 0x8544 | ||
105 | |||
106 | +#define SMX_SAR_CTL0 0xA008 | ||
107 | #define SMX_DC_CTL0 0xA020 | ||
108 | #define USE_HASH_FUNCTION (1 << 0) | ||
109 | #define CACHE_DEPTH(x) ((x) << 1) | ||
110 | @@ -307,6 +308,8 @@ | ||
111 | #define TCP_CNTL 0x9610 | ||
112 | #define TCP_CHAN_STEER 0x9614 | ||
113 | |||
114 | +#define VC_ENHANCE 0x9714 | ||
115 | + | ||
116 | #define VGT_CACHE_INVALIDATION 0x88C4 | ||
117 | #define CACHE_INVALIDATION(x) ((x)<<0) | ||
118 | #define VC_ONLY 0 | ||
119 | -- | ||
120 | 1.7.9.5 | ||
121 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0067-Linux-3.2.21.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0067-Linux-3.2.21.patch new file mode 100644 index 00000000..d9d9f9f3 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.21/0067-Linux-3.2.21.patch | |||
@@ -0,0 +1,24 @@ | |||
1 | From 1eb1eabe86e7b13627d8f03d32a2e402e26d77a5 Mon Sep 17 00:00:00 2001 | ||
2 | From: Ben Hutchings <ben@decadent.org.uk> | ||
3 | Date: Tue, 19 Jun 2012 23:18:30 +0100 | ||
4 | Subject: [PATCH 67/67] Linux 3.2.21 | ||
5 | |||
6 | --- | ||
7 | Makefile | 2 +- | ||
8 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
9 | |||
10 | diff --git a/Makefile b/Makefile | ||
11 | index c7e9cc4..7eb465e 100644 | ||
12 | --- a/Makefile | ||
13 | +++ b/Makefile | ||
14 | @@ -1,6 +1,6 @@ | ||
15 | VERSION = 3 | ||
16 | PATCHLEVEL = 2 | ||
17 | -SUBLEVEL = 20 | ||
18 | +SUBLEVEL = 21 | ||
19 | EXTRAVERSION = | ||
20 | NAME = Saber-toothed Squirrel | ||
21 | |||
22 | -- | ||
23 | 1.7.9.5 | ||
24 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0071-beaglebone-fix-LCD3-led-key-overlap.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0071-beaglebone-fix-LCD3-led-key-overlap.patch new file mode 100644 index 00000000..7d796a7c --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0071-beaglebone-fix-LCD3-led-key-overlap.patch | |||
@@ -0,0 +1,54 @@ | |||
1 | From fa18ca5c896696066349e2803dfeeda1fcd4a4e3 Mon Sep 17 00:00:00 2001 | ||
2 | From: Damian <damian.eppel@teleca.com> | ||
3 | Date: Tue, 5 Jun 2012 23:14:58 +0200 | ||
4 | Subject: [PATCH 1/2] beaglebone: fix LCD3 led/key overlap | ||
5 | |||
6 | Signed-off-by: Koen Kooi <koen@circuitco.com> | ||
7 | --- | ||
8 | arch/arm/mach-omap2/board-am335xevm.c | 9 +-------- | ||
9 | 1 file changed, 1 insertion(+), 8 deletions(-) | ||
10 | |||
11 | diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c | ||
12 | index 7fd611f..a337bb3 100644 | ||
13 | --- a/arch/arm/mach-omap2/board-am335xevm.c | ||
14 | +++ b/arch/arm/mach-omap2/board-am335xevm.c | ||
15 | @@ -639,7 +639,6 @@ static struct pinmux_config dvia2_pin_mux[] = { | ||
16 | /* Module pin mux for Beagleboardtoys 3.5" LCD cape */ | ||
17 | static struct pinmux_config bbtoys35_pin_mux[] = { | ||
18 | {"gpmc_a2.gpio1_18", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR0 LED | ||
19 | - {"gpmc_a3.gpio1_19", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR1 LED | ||
20 | {NULL, 0}, | ||
21 | }; | ||
22 | |||
23 | @@ -1196,7 +1195,7 @@ static struct platform_device beaglebone_lcd3_keys = { | ||
24 | static struct pinmux_config lcd3a1_keys_pin_mux[] = { | ||
25 | {"gpmc_a0.gpio1_16", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, // Left | ||
26 | {"gpmc_a1.gpio1_17", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, //Right | ||
27 | - {"gpmc_a3.gpio1_19", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // Up | ||
28 | + {"gpmc_a3.gpio1_19", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, // Up | ||
29 | {"mcasp0_axr0.gpio3_16", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, //Down | ||
30 | {"mcasp0_fsr.gpio3_19", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, // Enter | ||
31 | {NULL, 0}, | ||
32 | @@ -1424,7 +1423,6 @@ static struct platform_device dvi_leds_gpio = { | ||
33 | }; | ||
34 | |||
35 | #define BEAGLEBONELCD3_USR0_LED GPIO_TO_PIN(1, 18) | ||
36 | -#define BEAGLEBONELCD3_USR1_LED GPIO_TO_PIN(1, 19) | ||
37 | |||
38 | static struct gpio_led lcd3_gpio_leds[] = { | ||
39 | { | ||
40 | @@ -1450,11 +1448,6 @@ static struct gpio_led lcd3_gpio_leds[] = { | ||
41 | .default_trigger = "heartbeat", | ||
42 | .gpio = BEAGLEBONELCD3_USR0_LED, | ||
43 | }, | ||
44 | - { | ||
45 | - .name = "lcd3::usr1", | ||
46 | - .default_trigger = "mmc0", | ||
47 | - .gpio = BEAGLEBONELCD3_USR1_LED, | ||
48 | - }, | ||
49 | }; | ||
50 | |||
51 | static struct gpio_led_platform_data lcd3_gpio_led_info = { | ||
52 | -- | ||
53 | 1.7.10 | ||
54 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0001-USB-convert-drivers-net-to-use-module_usb_driver.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0001-USB-convert-drivers-net-to-use-module_usb_driver.patch new file mode 100644 index 00000000..2ea96522 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0001-USB-convert-drivers-net-to-use-module_usb_driver.patch | |||
@@ -0,0 +1,80 @@ | |||
1 | From d8e323a5bb24b2deefa6b80bb129b2d2d9db3184 Mon Sep 17 00:00:00 2001 | ||
2 | From: Greg Kroah-Hartman <gregkh@suse.de> | ||
3 | Date: Fri, 18 Nov 2011 09:44:20 -0800 | ||
4 | Subject: [PATCH 01/16] USB: convert drivers/net/* to use module_usb_driver() | ||
5 | |||
6 | This converts the drivers in drivers/net/* to use the | ||
7 | module_usb_driver() macro which makes the code smaller and a bit | ||
8 | simpler. | ||
9 | |||
10 | Added bonus is that it removes some unneeded kernel log messages about | ||
11 | drivers loading and/or unloading. | ||
12 | |||
13 | Cc: Wolfgang Grandegger <wg@grandegger.com> | ||
14 | Cc: Samuel Ortiz <samuel@sortiz.org> | ||
15 | Cc: Oliver Neukum <oliver@neukum.name> | ||
16 | Cc: Peter Korsgaard <jacmet@sunsite.dk> | ||
17 | Cc: Petko Manolov <petkan@users.sourceforge.net> | ||
18 | Cc: Steve Glendinning <steve.glendinning@smsc.com> | ||
19 | Cc: Christian Lamparter <chunkeey@googlemail.com> | ||
20 | Cc: "John W. Linville" <linville@tuxdriver.com> | ||
21 | Cc: Dan Williams <dcbw@redhat.com> | ||
22 | Cc: Jussi Kivilinna <jussi.kivilinna@mbnet.fi> | ||
23 | Cc: Ivo van Doorn <IvDoorn@gmail.com> | ||
24 | Cc: Gertjan van Wingerde <gwingerde@gmail.com> | ||
25 | Cc: Helmut Schaa <helmut.schaa@googlemail.com> | ||
26 | Cc: Herton Ronaldo Krzesinski <herton@canonical.com> | ||
27 | Cc: Hin-Tak Leung <htl10@users.sourceforge.net> | ||
28 | Cc: Larry Finger <Larry.Finger@lwfinger.net> | ||
29 | Cc: Chaoming Li <chaoming_li@realsil.com.cn> | ||
30 | Cc: Lucas De Marchi <lucas.demarchi@profusion.mobi> | ||
31 | Cc: "David S. Miller" <davem@davemloft.net> | ||
32 | Cc: Roel Kluin <roel.kluin@gmail.com> | ||
33 | Cc: Paul Gortmaker <paul.gortmaker@windriver.com> | ||
34 | Cc: Jiri Pirko <jpirko@redhat.com> | ||
35 | Cc: Pavel Roskin <proski@gnu.org> | ||
36 | Cc: Yoann DI-RUZZA <y.diruzza@lim.eu> | ||
37 | Cc: George <george0505@realtek.com> | ||
38 | Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> | ||
39 | --- | ||
40 | drivers/net/wireless/libertas/if_usb.c | 24 +----------------------- | ||
41 | 1 file changed, 1 insertion(+), 23 deletions(-) | ||
42 | |||
43 | diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c | ||
44 | index db879c3..b5fbbc7 100644 | ||
45 | --- a/drivers/net/wireless/libertas/if_usb.c | ||
46 | +++ b/drivers/net/wireless/libertas/if_usb.c | ||
47 | @@ -1184,29 +1184,7 @@ static struct usb_driver if_usb_driver = { | ||
48 | .reset_resume = if_usb_resume, | ||
49 | }; | ||
50 | |||
51 | -static int __init if_usb_init_module(void) | ||
52 | -{ | ||
53 | - int ret = 0; | ||
54 | - | ||
55 | - lbs_deb_enter(LBS_DEB_MAIN); | ||
56 | - | ||
57 | - ret = usb_register(&if_usb_driver); | ||
58 | - | ||
59 | - lbs_deb_leave_args(LBS_DEB_MAIN, "ret %d", ret); | ||
60 | - return ret; | ||
61 | -} | ||
62 | - | ||
63 | -static void __exit if_usb_exit_module(void) | ||
64 | -{ | ||
65 | - lbs_deb_enter(LBS_DEB_MAIN); | ||
66 | - | ||
67 | - usb_deregister(&if_usb_driver); | ||
68 | - | ||
69 | - lbs_deb_leave(LBS_DEB_MAIN); | ||
70 | -} | ||
71 | - | ||
72 | -module_init(if_usb_init_module); | ||
73 | -module_exit(if_usb_exit_module); | ||
74 | +module_usb_driver(if_usb_driver); | ||
75 | |||
76 | MODULE_DESCRIPTION("8388 USB WLAN Driver"); | ||
77 | MODULE_AUTHOR("Marvell International Ltd. and Red Hat, Inc."); | ||
78 | -- | ||
79 | 1.7.9.5 | ||
80 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0002-net-fix-assignment-of-0-1-to-bool-variables.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0002-net-fix-assignment-of-0-1-to-bool-variables.patch new file mode 100644 index 00000000..80d84ed3 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0002-net-fix-assignment-of-0-1-to-bool-variables.patch | |||
@@ -0,0 +1,55 @@ | |||
1 | From f5bec38aff7e124933b0ad9b9c6bf0481d01bdfa Mon Sep 17 00:00:00 2001 | ||
2 | From: Rusty Russell <rusty@rustcorp.com.au> | ||
3 | Date: Mon, 19 Dec 2011 13:56:45 +0000 | ||
4 | Subject: [PATCH 02/16] net: fix assignment of 0/1 to bool variables. | ||
5 | |||
6 | DaveM said: | ||
7 | Please, this kind of stuff rots forever and not using bool properly | ||
8 | drives me crazy. | ||
9 | |||
10 | Joe Perches <joe@perches.com> gave me the spatch script: | ||
11 | |||
12 | @@ | ||
13 | bool b; | ||
14 | @@ | ||
15 | -b = 0 | ||
16 | +b = false | ||
17 | @@ | ||
18 | bool b; | ||
19 | @@ | ||
20 | -b = 1 | ||
21 | +b = true | ||
22 | |||
23 | I merely installed coccinelle, read the documentation and took credit. | ||
24 | |||
25 | Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> | ||
26 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
27 | --- | ||
28 | drivers/net/wireless/libertas/if_cs.c | 4 ++-- | ||
29 | 1 file changed, 2 insertions(+), 2 deletions(-) | ||
30 | |||
31 | diff --git a/drivers/net/wireless/libertas/if_cs.c b/drivers/net/wireless/libertas/if_cs.c | ||
32 | index e269351..3f7bf4d 100644 | ||
33 | --- a/drivers/net/wireless/libertas/if_cs.c | ||
34 | +++ b/drivers/net/wireless/libertas/if_cs.c | ||
35 | @@ -859,7 +859,7 @@ static int if_cs_probe(struct pcmcia_device *p_dev) | ||
36 | * Most of the libertas cards can do unaligned register access, but some | ||
37 | * weird ones cannot. That's especially true for the CF8305 card. | ||
38 | */ | ||
39 | - card->align_regs = 0; | ||
40 | + card->align_regs = false; | ||
41 | |||
42 | card->model = get_model(p_dev->manf_id, p_dev->card_id); | ||
43 | if (card->model == MODEL_UNKNOWN) { | ||
44 | @@ -871,7 +871,7 @@ static int if_cs_probe(struct pcmcia_device *p_dev) | ||
45 | /* Check if we have a current silicon */ | ||
46 | prod_id = if_cs_read8(card, IF_CS_PRODUCT_ID); | ||
47 | if (card->model == MODEL_8305) { | ||
48 | - card->align_regs = 1; | ||
49 | + card->align_regs = true; | ||
50 | if (prod_id < IF_CS_CF8305_B1_REV) { | ||
51 | pr_err("8305 rev B0 and older are not supported\n"); | ||
52 | ret = -ENODEV; | ||
53 | -- | ||
54 | 1.7.9.5 | ||
55 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0003-switch-debugfs-to-umode_t.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0003-switch-debugfs-to-umode_t.patch new file mode 100644 index 00000000..b60661c0 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0003-switch-debugfs-to-umode_t.patch | |||
@@ -0,0 +1,26 @@ | |||
1 | From 5595b911189c8c9cac230dbe6f76c73352a57fcd Mon Sep 17 00:00:00 2001 | ||
2 | From: Al Viro <viro@zeniv.linux.org.uk> | ||
3 | Date: Sun, 24 Jul 2011 04:33:43 -0400 | ||
4 | Subject: [PATCH 03/16] switch debugfs to umode_t | ||
5 | |||
6 | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> | ||
7 | --- | ||
8 | drivers/net/wireless/libertas/debugfs.c | 2 +- | ||
9 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
10 | |||
11 | diff --git a/drivers/net/wireless/libertas/debugfs.c b/drivers/net/wireless/libertas/debugfs.c | ||
12 | index d8d8f0d..c192671 100644 | ||
13 | --- a/drivers/net/wireless/libertas/debugfs.c | ||
14 | +++ b/drivers/net/wireless/libertas/debugfs.c | ||
15 | @@ -704,7 +704,7 @@ out_unlock: | ||
16 | |||
17 | struct lbs_debugfs_files { | ||
18 | const char *name; | ||
19 | - int perm; | ||
20 | + umode_t perm; | ||
21 | struct file_operations fops; | ||
22 | }; | ||
23 | |||
24 | -- | ||
25 | 1.7.9.5 | ||
26 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0004-drivers-net-Remove-unnecessary-k.alloc-v.alloc-OOM-m.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0004-drivers-net-Remove-unnecessary-k.alloc-v.alloc-OOM-m.patch new file mode 100644 index 00000000..2f034d1b --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0004-drivers-net-Remove-unnecessary-k.alloc-v.alloc-OOM-m.patch | |||
@@ -0,0 +1,54 @@ | |||
1 | From 018746aab6a8f31b27788607c0045489f2996424 Mon Sep 17 00:00:00 2001 | ||
2 | From: Joe Perches <joe@perches.com> | ||
3 | Date: Sun, 29 Jan 2012 12:56:23 +0000 | ||
4 | Subject: [PATCH 04/16] drivers/net: Remove unnecessary k.alloc/v.alloc OOM | ||
5 | messages | ||
6 | |||
7 | alloc failures use dump_stack so emitting an additional | ||
8 | out-of-memory message is an unnecessary duplication. | ||
9 | |||
10 | Remove the allocation failure messages. | ||
11 | |||
12 | Signed-off-by: Joe Perches <joe@perches.com> | ||
13 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
14 | --- | ||
15 | drivers/net/wireless/libertas/if_cs.c | 5 ++--- | ||
16 | drivers/net/wireless/libertas/if_usb.c | 4 +--- | ||
17 | 2 files changed, 3 insertions(+), 6 deletions(-) | ||
18 | |||
19 | diff --git a/drivers/net/wireless/libertas/if_cs.c b/drivers/net/wireless/libertas/if_cs.c | ||
20 | index 3f7bf4d..234ee88 100644 | ||
21 | --- a/drivers/net/wireless/libertas/if_cs.c | ||
22 | +++ b/drivers/net/wireless/libertas/if_cs.c | ||
23 | @@ -815,10 +815,9 @@ static int if_cs_probe(struct pcmcia_device *p_dev) | ||
24 | lbs_deb_enter(LBS_DEB_CS); | ||
25 | |||
26 | card = kzalloc(sizeof(struct if_cs_card), GFP_KERNEL); | ||
27 | - if (!card) { | ||
28 | - pr_err("error in kzalloc\n"); | ||
29 | + if (!card) | ||
30 | goto out; | ||
31 | - } | ||
32 | + | ||
33 | card->p_dev = p_dev; | ||
34 | p_dev->priv = card; | ||
35 | |||
36 | diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c | ||
37 | index b5fbbc7..74da5f1 100644 | ||
38 | --- a/drivers/net/wireless/libertas/if_usb.c | ||
39 | +++ b/drivers/net/wireless/libertas/if_usb.c | ||
40 | @@ -261,10 +261,8 @@ static int if_usb_probe(struct usb_interface *intf, | ||
41 | udev = interface_to_usbdev(intf); | ||
42 | |||
43 | cardp = kzalloc(sizeof(struct if_usb_card), GFP_KERNEL); | ||
44 | - if (!cardp) { | ||
45 | - pr_err("Out of memory allocating private data\n"); | ||
46 | + if (!cardp) | ||
47 | goto error; | ||
48 | - } | ||
49 | |||
50 | setup_timer(&cardp->fw_timeout, if_usb_fw_timeo, (unsigned long)cardp); | ||
51 | init_waitqueue_head(&cardp->fw_wq); | ||
52 | -- | ||
53 | 1.7.9.5 | ||
54 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0005-libertas-remove-dump_survey-implementation.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0005-libertas-remove-dump_survey-implementation.patch new file mode 100644 index 00000000..d574fde4 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0005-libertas-remove-dump_survey-implementation.patch | |||
@@ -0,0 +1,80 @@ | |||
1 | From 5613011f4fa76a08aab30731557cc91699407d11 Mon Sep 17 00:00:00 2001 | ||
2 | From: Daniel Drake <dsd@laptop.org> | ||
3 | Date: Wed, 14 Mar 2012 22:34:33 +0000 | ||
4 | Subject: [PATCH 05/16] libertas: remove dump_survey implementation | ||
5 | |||
6 | libertas provides a dump_survey implementation based on reading of | ||
7 | a RSSI value. However, this RSSI value is calculated based on the | ||
8 | last received beacon from the associated AP - it is not a good | ||
9 | way of surveying a channel in general, and even causes an error | ||
10 | if the card is not associated to a network. | ||
11 | |||
12 | As this is not appropriate as a survey, remove it. This fixes an | ||
13 | issue where something in userspace is repeatedly calling site-survey | ||
14 | during boot, resulting in many repeated errors as the RSSI value cannot | ||
15 | be read before associating. | ||
16 | |||
17 | Signed-off-by: Daniel Drake <dsd@laptop.org> | ||
18 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
19 | --- | ||
20 | drivers/net/wireless/libertas/cfg.c | 37 ----------------------------------- | ||
21 | 1 file changed, 37 deletions(-) | ||
22 | |||
23 | diff --git a/drivers/net/wireless/libertas/cfg.c b/drivers/net/wireless/libertas/cfg.c | ||
24 | index db64ef1..72e2c8e 100644 | ||
25 | --- a/drivers/net/wireless/libertas/cfg.c | ||
26 | +++ b/drivers/net/wireless/libertas/cfg.c | ||
27 | @@ -1628,42 +1628,6 @@ static int lbs_cfg_get_station(struct wiphy *wiphy, struct net_device *dev, | ||
28 | |||
29 | |||
30 | /* | ||
31 | - * "Site survey", here just current channel and noise level | ||
32 | - */ | ||
33 | - | ||
34 | -static int lbs_get_survey(struct wiphy *wiphy, struct net_device *dev, | ||
35 | - int idx, struct survey_info *survey) | ||
36 | -{ | ||
37 | - struct lbs_private *priv = wiphy_priv(wiphy); | ||
38 | - s8 signal, noise; | ||
39 | - int ret; | ||
40 | - | ||
41 | - if (dev == priv->mesh_dev) | ||
42 | - return -EOPNOTSUPP; | ||
43 | - | ||
44 | - if (idx != 0) | ||
45 | - ret = -ENOENT; | ||
46 | - | ||
47 | - lbs_deb_enter(LBS_DEB_CFG80211); | ||
48 | - | ||
49 | - survey->channel = ieee80211_get_channel(wiphy, | ||
50 | - ieee80211_channel_to_frequency(priv->channel, | ||
51 | - IEEE80211_BAND_2GHZ)); | ||
52 | - | ||
53 | - ret = lbs_get_rssi(priv, &signal, &noise); | ||
54 | - if (ret == 0) { | ||
55 | - survey->filled = SURVEY_INFO_NOISE_DBM; | ||
56 | - survey->noise = noise; | ||
57 | - } | ||
58 | - | ||
59 | - lbs_deb_leave_args(LBS_DEB_CFG80211, "ret %d", ret); | ||
60 | - return ret; | ||
61 | -} | ||
62 | - | ||
63 | - | ||
64 | - | ||
65 | - | ||
66 | -/* | ||
67 | * Change interface | ||
68 | */ | ||
69 | |||
70 | @@ -2063,7 +2027,6 @@ static struct cfg80211_ops lbs_cfg80211_ops = { | ||
71 | .del_key = lbs_cfg_del_key, | ||
72 | .set_default_key = lbs_cfg_set_default_key, | ||
73 | .get_station = lbs_cfg_get_station, | ||
74 | - .dump_survey = lbs_get_survey, | ||
75 | .change_virtual_intf = lbs_change_intf, | ||
76 | .join_ibss = lbs_join_ibss, | ||
77 | .leave_ibss = lbs_leave_ibss, | ||
78 | -- | ||
79 | 1.7.9.5 | ||
80 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0006-wireless-libertas-remove-redundant-NULL-tests-before.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0006-wireless-libertas-remove-redundant-NULL-tests-before.patch new file mode 100644 index 00000000..3927d6e0 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0006-wireless-libertas-remove-redundant-NULL-tests-before.patch | |||
@@ -0,0 +1,95 @@ | |||
1 | From ae3df364b3ec34ab314bcd058e1d3ae86bb8c16f Mon Sep 17 00:00:00 2001 | ||
2 | From: Jesper Juhl <jj@chaosbits.net> | ||
3 | Date: Mon, 9 Apr 2012 22:51:07 +0200 | ||
4 | Subject: [PATCH 06/16] wireless, libertas: remove redundant NULL tests before | ||
5 | calling release_firmware() | ||
6 | |||
7 | release_firmware() tests for, and deals gracefully with, NULL | ||
8 | pointers. Remove redundant explicit tests before calling the function. | ||
9 | |||
10 | Signed-off-by: Jesper Juhl <jj@chaosbits.net> | ||
11 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
12 | --- | ||
13 | drivers/net/wireless/libertas/if_cs.c | 6 ++---- | ||
14 | drivers/net/wireless/libertas/if_sdio.c | 6 ++---- | ||
15 | drivers/net/wireless/libertas/if_spi.c | 6 ++---- | ||
16 | drivers/net/wireless/libertas/main.c | 12 ++++-------- | ||
17 | 4 files changed, 10 insertions(+), 20 deletions(-) | ||
18 | |||
19 | diff --git a/drivers/net/wireless/libertas/if_cs.c b/drivers/net/wireless/libertas/if_cs.c | ||
20 | index 234ee88..171a06b 100644 | ||
21 | --- a/drivers/net/wireless/libertas/if_cs.c | ||
22 | +++ b/drivers/net/wireless/libertas/if_cs.c | ||
23 | @@ -951,10 +951,8 @@ out2: | ||
24 | out1: | ||
25 | pcmcia_disable_device(p_dev); | ||
26 | out: | ||
27 | - if (helper) | ||
28 | - release_firmware(helper); | ||
29 | - if (mainfw) | ||
30 | - release_firmware(mainfw); | ||
31 | + release_firmware(helper); | ||
32 | + release_firmware(mainfw); | ||
33 | |||
34 | lbs_deb_leave_args(LBS_DEB_CS, "ret %d", ret); | ||
35 | return ret; | ||
36 | diff --git a/drivers/net/wireless/libertas/if_sdio.c b/drivers/net/wireless/libertas/if_sdio.c | ||
37 | index 9804ebc..15bfe2f 100644 | ||
38 | --- a/drivers/net/wireless/libertas/if_sdio.c | ||
39 | +++ b/drivers/net/wireless/libertas/if_sdio.c | ||
40 | @@ -751,10 +751,8 @@ success: | ||
41 | ret = 0; | ||
42 | |||
43 | out: | ||
44 | - if (helper) | ||
45 | - release_firmware(helper); | ||
46 | - if (mainfw) | ||
47 | - release_firmware(mainfw); | ||
48 | + release_firmware(helper); | ||
49 | + release_firmware(mainfw); | ||
50 | |||
51 | lbs_deb_leave_args(LBS_DEB_SDIO, "ret %d", ret); | ||
52 | return ret; | ||
53 | diff --git a/drivers/net/wireless/libertas/if_spi.c b/drivers/net/wireless/libertas/if_spi.c | ||
54 | index 728baa4..46a668e 100644 | ||
55 | --- a/drivers/net/wireless/libertas/if_spi.c | ||
56 | +++ b/drivers/net/wireless/libertas/if_spi.c | ||
57 | @@ -1095,10 +1095,8 @@ static int if_spi_init_card(struct if_spi_card *card) | ||
58 | goto out; | ||
59 | |||
60 | out: | ||
61 | - if (helper) | ||
62 | - release_firmware(helper); | ||
63 | - if (mainfw) | ||
64 | - release_firmware(mainfw); | ||
65 | + release_firmware(helper); | ||
66 | + release_firmware(mainfw); | ||
67 | |||
68 | lbs_deb_leave_args(LBS_DEB_SPI, "err %d\n", err); | ||
69 | |||
70 | diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c | ||
71 | index 957681d..3b81b70 100644 | ||
72 | --- a/drivers/net/wireless/libertas/main.c | ||
73 | +++ b/drivers/net/wireless/libertas/main.c | ||
74 | @@ -1269,14 +1269,10 @@ int lbs_get_firmware(struct device *dev, const char *user_helper, | ||
75 | |||
76 | fail: | ||
77 | /* Failed */ | ||
78 | - if (*helper) { | ||
79 | - release_firmware(*helper); | ||
80 | - *helper = NULL; | ||
81 | - } | ||
82 | - if (*mainfw) { | ||
83 | - release_firmware(*mainfw); | ||
84 | - *mainfw = NULL; | ||
85 | - } | ||
86 | + release_firmware(*helper); | ||
87 | + *helper = NULL; | ||
88 | + release_firmware(*mainfw); | ||
89 | + *mainfw = NULL; | ||
90 | |||
91 | return -ENOENT; | ||
92 | } | ||
93 | -- | ||
94 | 1.7.9.5 | ||
95 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0007-libertas-fix-signedness-bug-in-lbs_auth_to_authtype.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0007-libertas-fix-signedness-bug-in-lbs_auth_to_authtype.patch new file mode 100644 index 00000000..3a31eb72 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0007-libertas-fix-signedness-bug-in-lbs_auth_to_authtype.patch | |||
@@ -0,0 +1,48 @@ | |||
1 | From 01e8e6be47e98db59320a593d2854b8bcaad7aca Mon Sep 17 00:00:00 2001 | ||
2 | From: Amitkumar Karwar <akarwar@marvell.com> | ||
3 | Date: Wed, 28 Mar 2012 11:38:01 -0700 | ||
4 | Subject: [PATCH 07/16] libertas: fix signedness bug in lbs_auth_to_authtype() | ||
5 | |||
6 | Return type for lbs_auth_to_authtype() is changed from "u8" to | ||
7 | "int" to return negative error code correctly. | ||
8 | Also an error check is added in connect handler for invalid auth | ||
9 | type. | ||
10 | |||
11 | Reported-by: Dan Carpenter <dan.carpenter@oracle.com> | ||
12 | Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> | ||
13 | Signed-off-by: Kiran Divekar <dkiran@marvell.com> | ||
14 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
15 | --- | ||
16 | drivers/net/wireless/libertas/cfg.c | 9 +++++++-- | ||
17 | 1 file changed, 7 insertions(+), 2 deletions(-) | ||
18 | |||
19 | diff --git a/drivers/net/wireless/libertas/cfg.c b/drivers/net/wireless/libertas/cfg.c | ||
20 | index 72e2c8e..d5b2177 100644 | ||
21 | --- a/drivers/net/wireless/libertas/cfg.c | ||
22 | +++ b/drivers/net/wireless/libertas/cfg.c | ||
23 | @@ -103,7 +103,7 @@ static const u32 cipher_suites[] = { | ||
24 | * Convert NL80211's auth_type to the one from Libertas, see chapter 5.9.1 | ||
25 | * in the firmware spec | ||
26 | */ | ||
27 | -static u8 lbs_auth_to_authtype(enum nl80211_auth_type auth_type) | ||
28 | +static int lbs_auth_to_authtype(enum nl80211_auth_type auth_type) | ||
29 | { | ||
30 | int ret = -ENOTSUPP; | ||
31 | |||
32 | @@ -1408,7 +1408,12 @@ static int lbs_cfg_connect(struct wiphy *wiphy, struct net_device *dev, | ||
33 | goto done; | ||
34 | } | ||
35 | |||
36 | - lbs_set_authtype(priv, sme); | ||
37 | + ret = lbs_set_authtype(priv, sme); | ||
38 | + if (ret == -ENOTSUPP) { | ||
39 | + wiphy_err(wiphy, "unsupported authtype 0x%x\n", sme->auth_type); | ||
40 | + goto done; | ||
41 | + } | ||
42 | + | ||
43 | lbs_set_radio(priv, preamble, 1); | ||
44 | |||
45 | /* Do the actual association */ | ||
46 | -- | ||
47 | 1.7.9.5 | ||
48 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0008-drivers-net-wireless-libertas-if_usb.c-add-missing-d.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0008-drivers-net-wireless-libertas-if_usb.c-add-missing-d.patch new file mode 100644 index 00000000..302d0918 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0008-drivers-net-wireless-libertas-if_usb.c-add-missing-d.patch | |||
@@ -0,0 +1,35 @@ | |||
1 | From c180cacfac2411fa690d5afbb983b53030102a3e Mon Sep 17 00:00:00 2001 | ||
2 | From: Julia Lawall <Julia.Lawall@lip6.fr> | ||
3 | Date: Mon, 16 Apr 2012 17:44:00 +0200 | ||
4 | Subject: [PATCH 08/16] drivers/net/wireless/libertas/if_usb.c: add missing | ||
5 | debugging code | ||
6 | |||
7 | Add a corresponding leave call on error failure. | ||
8 | |||
9 | Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr> | ||
10 | Acked-by: Dan Williams <dcbw@redhat.com> | ||
11 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
12 | --- | ||
13 | drivers/net/wireless/libertas/if_usb.c | 6 ++++-- | ||
14 | 1 file changed, 4 insertions(+), 2 deletions(-) | ||
15 | |||
16 | diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c | ||
17 | index 74da5f1..ce4938d 100644 | ||
18 | --- a/drivers/net/wireless/libertas/if_usb.c | ||
19 | +++ b/drivers/net/wireless/libertas/if_usb.c | ||
20 | @@ -1128,8 +1128,10 @@ static int if_usb_suspend(struct usb_interface *intf, pm_message_t message) | ||
21 | |||
22 | lbs_deb_enter(LBS_DEB_USB); | ||
23 | |||
24 | - if (priv->psstate != PS_STATE_FULL_POWER) | ||
25 | - return -1; | ||
26 | + if (priv->psstate != PS_STATE_FULL_POWER) { | ||
27 | + ret = -1; | ||
28 | + goto out; | ||
29 | + } | ||
30 | |||
31 | #ifdef CONFIG_OLPC | ||
32 | if (machine_is_olpc()) { | ||
33 | -- | ||
34 | 1.7.9.5 | ||
35 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0009-libertas-Firmware-loading-simplifications.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0009-libertas-Firmware-loading-simplifications.patch new file mode 100644 index 00000000..0a97c965 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0009-libertas-Firmware-loading-simplifications.patch | |||
@@ -0,0 +1,618 @@ | |||
1 | From d9087fc723bf7947eb149fb657072a8b3f96a532 Mon Sep 17 00:00:00 2001 | ||
2 | From: Daniel Drake <dsd@laptop.org> | ||
3 | Date: Mon, 16 Apr 2012 23:52:42 +0100 | ||
4 | Subject: [PATCH 09/16] libertas: Firmware loading simplifications | ||
5 | |||
6 | Remove the ability to pass module parameters with firmware filenames | ||
7 | for USB and SDIO interfaces. | ||
8 | |||
9 | Remove the ability to pass custom "user" filenames to lbs_get_firmware(). | ||
10 | |||
11 | Remove the ability to reprogram internal device memory with a different | ||
12 | firmware from the USB driver (we don't know of any users), and simplify | ||
13 | the OLPC firmware loading quirk to simply placing the OLPC firmware | ||
14 | at the top of the list (we don't know of any users other than OLPC). | ||
15 | |||
16 | Move lbs_get_firmware() into its own file. | ||
17 | |||
18 | These simplifications should have no real-life effect but make the | ||
19 | upcoming transition to asynchronous firmware loading considerably less | ||
20 | painful. | ||
21 | |||
22 | Signed-off-by: Daniel Drake <dsd@laptop.org> | ||
23 | Acked-by: Dan Williams <dcbw@redhat.com> | ||
24 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
25 | --- | ||
26 | drivers/net/wireless/libertas/Makefile | 1 + | ||
27 | drivers/net/wireless/libertas/decl.h | 3 +- | ||
28 | drivers/net/wireless/libertas/firmware.c | 79 ++++++++++++++ | ||
29 | drivers/net/wireless/libertas/if_cs.c | 4 +- | ||
30 | drivers/net/wireless/libertas/if_sdio.c | 25 +---- | ||
31 | drivers/net/wireless/libertas/if_spi.c | 5 +- | ||
32 | drivers/net/wireless/libertas/if_usb.c | 169 ++---------------------------- | ||
33 | drivers/net/wireless/libertas/main.c | 101 ------------------ | ||
34 | 8 files changed, 94 insertions(+), 293 deletions(-) | ||
35 | create mode 100644 drivers/net/wireless/libertas/firmware.c | ||
36 | |||
37 | diff --git a/drivers/net/wireless/libertas/Makefile b/drivers/net/wireless/libertas/Makefile | ||
38 | index f7d01bf..eac72f7 100644 | ||
39 | --- a/drivers/net/wireless/libertas/Makefile | ||
40 | +++ b/drivers/net/wireless/libertas/Makefile | ||
41 | @@ -6,6 +6,7 @@ libertas-y += ethtool.o | ||
42 | libertas-y += main.o | ||
43 | libertas-y += rx.o | ||
44 | libertas-y += tx.o | ||
45 | +libertas-y += firmware.o | ||
46 | libertas-$(CONFIG_LIBERTAS_MESH) += mesh.o | ||
47 | |||
48 | usb8xxx-objs += if_usb.o | ||
49 | diff --git a/drivers/net/wireless/libertas/decl.h b/drivers/net/wireless/libertas/decl.h | ||
50 | index bc951ab..2fb2e31 100644 | ||
51 | --- a/drivers/net/wireless/libertas/decl.h | ||
52 | +++ b/drivers/net/wireless/libertas/decl.h | ||
53 | @@ -66,8 +66,7 @@ int lbs_exit_auto_deep_sleep(struct lbs_private *priv); | ||
54 | u32 lbs_fw_index_to_data_rate(u8 index); | ||
55 | u8 lbs_data_rate_to_fw_index(u32 rate); | ||
56 | |||
57 | -int lbs_get_firmware(struct device *dev, const char *user_helper, | ||
58 | - const char *user_mainfw, u32 card_model, | ||
59 | +int lbs_get_firmware(struct device *dev, u32 card_model, | ||
60 | const struct lbs_fw_table *fw_table, | ||
61 | const struct firmware **helper, | ||
62 | const struct firmware **mainfw); | ||
63 | diff --git a/drivers/net/wireless/libertas/firmware.c b/drivers/net/wireless/libertas/firmware.c | ||
64 | new file mode 100644 | ||
65 | index 0000000..0c8c845 | ||
66 | --- /dev/null | ||
67 | +++ b/drivers/net/wireless/libertas/firmware.c | ||
68 | @@ -0,0 +1,79 @@ | ||
69 | +/* | ||
70 | + * Firmware loading and handling functions. | ||
71 | + */ | ||
72 | + | ||
73 | +#include <linux/firmware.h> | ||
74 | +#include <linux/module.h> | ||
75 | + | ||
76 | +#include "decl.h" | ||
77 | + | ||
78 | +/** | ||
79 | + * lbs_get_firmware - Retrieves two-stage firmware | ||
80 | + * | ||
81 | + * @dev: A pointer to &device structure | ||
82 | + * @card_model: Bus-specific card model ID used to filter firmware table | ||
83 | + * elements | ||
84 | + * @fw_table: Table of firmware file names and device model numbers | ||
85 | + * terminated by an entry with a NULL helper name | ||
86 | + * @helper: On success, the helper firmware; caller must free | ||
87 | + * @mainfw: On success, the main firmware; caller must free | ||
88 | + * | ||
89 | + * returns: 0 on success, non-zero on failure | ||
90 | + */ | ||
91 | +int lbs_get_firmware(struct device *dev, u32 card_model, | ||
92 | + const struct lbs_fw_table *fw_table, | ||
93 | + const struct firmware **helper, | ||
94 | + const struct firmware **mainfw) | ||
95 | +{ | ||
96 | + const struct lbs_fw_table *iter; | ||
97 | + int ret; | ||
98 | + | ||
99 | + BUG_ON(helper == NULL); | ||
100 | + BUG_ON(mainfw == NULL); | ||
101 | + | ||
102 | + /* Search for firmware to use from the table. */ | ||
103 | + iter = fw_table; | ||
104 | + while (iter && iter->helper) { | ||
105 | + if (iter->model != card_model) | ||
106 | + goto next; | ||
107 | + | ||
108 | + if (*helper == NULL) { | ||
109 | + ret = request_firmware(helper, iter->helper, dev); | ||
110 | + if (ret) | ||
111 | + goto next; | ||
112 | + | ||
113 | + /* If the device has one-stage firmware (ie cf8305) and | ||
114 | + * we've got it then we don't need to bother with the | ||
115 | + * main firmware. | ||
116 | + */ | ||
117 | + if (iter->fwname == NULL) | ||
118 | + return 0; | ||
119 | + } | ||
120 | + | ||
121 | + if (*mainfw == NULL) { | ||
122 | + ret = request_firmware(mainfw, iter->fwname, dev); | ||
123 | + if (ret) { | ||
124 | + /* Clear the helper to ensure we don't have | ||
125 | + * mismatched firmware pairs. | ||
126 | + */ | ||
127 | + release_firmware(*helper); | ||
128 | + *helper = NULL; | ||
129 | + } | ||
130 | + } | ||
131 | + | ||
132 | + if (*helper && *mainfw) | ||
133 | + return 0; | ||
134 | + | ||
135 | + next: | ||
136 | + iter++; | ||
137 | + } | ||
138 | + | ||
139 | + /* Failed */ | ||
140 | + release_firmware(*helper); | ||
141 | + *helper = NULL; | ||
142 | + release_firmware(*mainfw); | ||
143 | + *mainfw = NULL; | ||
144 | + | ||
145 | + return -ENOENT; | ||
146 | +} | ||
147 | +EXPORT_SYMBOL_GPL(lbs_get_firmware); | ||
148 | diff --git a/drivers/net/wireless/libertas/if_cs.c b/drivers/net/wireless/libertas/if_cs.c | ||
149 | index 171a06b..cee5052 100644 | ||
150 | --- a/drivers/net/wireless/libertas/if_cs.c | ||
151 | +++ b/drivers/net/wireless/libertas/if_cs.c | ||
152 | @@ -890,8 +890,8 @@ static int if_cs_probe(struct pcmcia_device *p_dev) | ||
153 | goto out2; | ||
154 | } | ||
155 | |||
156 | - ret = lbs_get_firmware(&p_dev->dev, NULL, NULL, card->model, | ||
157 | - &fw_table[0], &helper, &mainfw); | ||
158 | + ret = lbs_get_firmware(&p_dev->dev, card->model, &fw_table[0], | ||
159 | + &helper, &mainfw); | ||
160 | if (ret) { | ||
161 | pr_err("failed to find firmware (%d)\n", ret); | ||
162 | goto out2; | ||
163 | diff --git a/drivers/net/wireless/libertas/if_sdio.c b/drivers/net/wireless/libertas/if_sdio.c | ||
164 | index 15bfe2f..6590feb 100644 | ||
165 | --- a/drivers/net/wireless/libertas/if_sdio.c | ||
166 | +++ b/drivers/net/wireless/libertas/if_sdio.c | ||
167 | @@ -65,12 +65,6 @@ static void if_sdio_interrupt(struct sdio_func *func); | ||
168 | */ | ||
169 | static u8 user_rmmod; | ||
170 | |||
171 | -static char *lbs_helper_name = NULL; | ||
172 | -module_param_named(helper_name, lbs_helper_name, charp, 0644); | ||
173 | - | ||
174 | -static char *lbs_fw_name = NULL; | ||
175 | -module_param_named(fw_name, lbs_fw_name, charp, 0644); | ||
176 | - | ||
177 | static const struct sdio_device_id if_sdio_ids[] = { | ||
178 | { SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL, | ||
179 | SDIO_DEVICE_ID_MARVELL_LIBERTAS) }, | ||
180 | @@ -124,11 +118,6 @@ struct if_sdio_card { | ||
181 | unsigned long ioport; | ||
182 | unsigned int scratch_reg; | ||
183 | |||
184 | - const char *helper; | ||
185 | - const char *firmware; | ||
186 | - bool helper_allocated; | ||
187 | - bool firmware_allocated; | ||
188 | - | ||
189 | u8 buffer[65536] __attribute__((aligned(4))); | ||
190 | |||
191 | spinlock_t lock; | ||
192 | @@ -725,8 +714,8 @@ static int if_sdio_prog_firmware(struct if_sdio_card *card) | ||
193 | goto success; | ||
194 | } | ||
195 | |||
196 | - ret = lbs_get_firmware(&card->func->dev, lbs_helper_name, lbs_fw_name, | ||
197 | - card->model, &fw_table[0], &helper, &mainfw); | ||
198 | + ret = lbs_get_firmware(&card->func->dev, card->model, &fw_table[0], | ||
199 | + &helper, &mainfw); | ||
200 | if (ret) { | ||
201 | pr_err("failed to find firmware (%d)\n", ret); | ||
202 | goto out; | ||
203 | @@ -1242,10 +1231,6 @@ free: | ||
204 | kfree(packet); | ||
205 | } | ||
206 | |||
207 | - if (card->helper_allocated) | ||
208 | - kfree(card->helper); | ||
209 | - if (card->firmware_allocated) | ||
210 | - kfree(card->firmware); | ||
211 | kfree(card); | ||
212 | |||
213 | goto out; | ||
214 | @@ -1293,12 +1278,6 @@ static void if_sdio_remove(struct sdio_func *func) | ||
215 | kfree(packet); | ||
216 | } | ||
217 | |||
218 | - if (card->helper_allocated) | ||
219 | - kfree(card->helper); | ||
220 | - if (card->firmware_allocated) | ||
221 | - kfree(card->firmware); | ||
222 | - kfree(card); | ||
223 | - | ||
224 | lbs_deb_leave(LBS_DEB_SDIO); | ||
225 | } | ||
226 | |||
227 | diff --git a/drivers/net/wireless/libertas/if_spi.c b/drivers/net/wireless/libertas/if_spi.c | ||
228 | index 46a668e..56b0081 100644 | ||
229 | --- a/drivers/net/wireless/libertas/if_spi.c | ||
230 | +++ b/drivers/net/wireless/libertas/if_spi.c | ||
231 | @@ -1064,9 +1064,8 @@ static int if_spi_init_card(struct if_spi_card *card) | ||
232 | goto out; | ||
233 | } | ||
234 | |||
235 | - err = lbs_get_firmware(&card->spi->dev, NULL, NULL, | ||
236 | - card->card_id, &fw_table[0], &helper, | ||
237 | - &mainfw); | ||
238 | + err = lbs_get_firmware(&card->spi->dev, card->card_id, | ||
239 | + &fw_table[0], &helper, &mainfw); | ||
240 | if (err) { | ||
241 | netdev_err(priv->dev, "failed to find firmware (%d)\n", | ||
242 | err); | ||
243 | diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c | ||
244 | index ce4938d..f29471b 100644 | ||
245 | --- a/drivers/net/wireless/libertas/if_usb.c | ||
246 | +++ b/drivers/net/wireless/libertas/if_usb.c | ||
247 | @@ -29,9 +29,6 @@ | ||
248 | |||
249 | #define MESSAGE_HEADER_LEN 4 | ||
250 | |||
251 | -static char *lbs_fw_name = NULL; | ||
252 | -module_param_named(fw_name, lbs_fw_name, charp, 0644); | ||
253 | - | ||
254 | MODULE_FIRMWARE("libertas/usb8388_v9.bin"); | ||
255 | MODULE_FIRMWARE("libertas/usb8388_v5.bin"); | ||
256 | MODULE_FIRMWARE("libertas/usb8388.bin"); | ||
257 | @@ -55,10 +52,7 @@ MODULE_DEVICE_TABLE(usb, if_usb_table); | ||
258 | |||
259 | static void if_usb_receive(struct urb *urb); | ||
260 | static void if_usb_receive_fwload(struct urb *urb); | ||
261 | -static int __if_usb_prog_firmware(struct if_usb_card *cardp, | ||
262 | - const char *fwname, int cmd); | ||
263 | -static int if_usb_prog_firmware(struct if_usb_card *cardp, | ||
264 | - const char *fwname, int cmd); | ||
265 | +static int if_usb_prog_firmware(struct if_usb_card *cardp); | ||
266 | static int if_usb_host_to_card(struct lbs_private *priv, uint8_t type, | ||
267 | uint8_t *payload, uint16_t nb); | ||
268 | static int usb_tx_block(struct if_usb_card *cardp, uint8_t *payload, | ||
269 | @@ -67,69 +61,6 @@ static void if_usb_free(struct if_usb_card *cardp); | ||
270 | static int if_usb_submit_rx_urb(struct if_usb_card *cardp); | ||
271 | static int if_usb_reset_device(struct if_usb_card *cardp); | ||
272 | |||
273 | -/* sysfs hooks */ | ||
274 | - | ||
275 | -/* | ||
276 | - * Set function to write firmware to device's persistent memory | ||
277 | - */ | ||
278 | -static ssize_t if_usb_firmware_set(struct device *dev, | ||
279 | - struct device_attribute *attr, const char *buf, size_t count) | ||
280 | -{ | ||
281 | - struct lbs_private *priv = to_net_dev(dev)->ml_priv; | ||
282 | - struct if_usb_card *cardp = priv->card; | ||
283 | - int ret; | ||
284 | - | ||
285 | - BUG_ON(buf == NULL); | ||
286 | - | ||
287 | - ret = if_usb_prog_firmware(cardp, buf, BOOT_CMD_UPDATE_FW); | ||
288 | - if (ret == 0) | ||
289 | - return count; | ||
290 | - | ||
291 | - return ret; | ||
292 | -} | ||
293 | - | ||
294 | -/* | ||
295 | - * lbs_flash_fw attribute to be exported per ethX interface through sysfs | ||
296 | - * (/sys/class/net/ethX/lbs_flash_fw). Use this like so to write firmware to | ||
297 | - * the device's persistent memory: | ||
298 | - * echo usb8388-5.126.0.p5.bin > /sys/class/net/ethX/lbs_flash_fw | ||
299 | - */ | ||
300 | -static DEVICE_ATTR(lbs_flash_fw, 0200, NULL, if_usb_firmware_set); | ||
301 | - | ||
302 | -/** | ||
303 | - * if_usb_boot2_set - write firmware to device's persistent memory | ||
304 | - * | ||
305 | - * @dev: target device | ||
306 | - * @attr: device attributes | ||
307 | - * @buf: firmware buffer to write | ||
308 | - * @count: number of bytes to write | ||
309 | - * | ||
310 | - * returns: number of bytes written or negative error code | ||
311 | - */ | ||
312 | -static ssize_t if_usb_boot2_set(struct device *dev, | ||
313 | - struct device_attribute *attr, const char *buf, size_t count) | ||
314 | -{ | ||
315 | - struct lbs_private *priv = to_net_dev(dev)->ml_priv; | ||
316 | - struct if_usb_card *cardp = priv->card; | ||
317 | - int ret; | ||
318 | - | ||
319 | - BUG_ON(buf == NULL); | ||
320 | - | ||
321 | - ret = if_usb_prog_firmware(cardp, buf, BOOT_CMD_UPDATE_BOOT2); | ||
322 | - if (ret == 0) | ||
323 | - return count; | ||
324 | - | ||
325 | - return ret; | ||
326 | -} | ||
327 | - | ||
328 | -/* | ||
329 | - * lbs_flash_boot2 attribute to be exported per ethX interface through sysfs | ||
330 | - * (/sys/class/net/ethX/lbs_flash_boot2). Use this like so to write firmware | ||
331 | - * to the device's persistent memory: | ||
332 | - * echo usb8388-5.126.0.p5.bin > /sys/class/net/ethX/lbs_flash_boot2 | ||
333 | - */ | ||
334 | -static DEVICE_ATTR(lbs_flash_boot2, 0200, NULL, if_usb_boot2_set); | ||
335 | - | ||
336 | /** | ||
337 | * if_usb_write_bulk_callback - callback function to handle the status | ||
338 | * of the URB | ||
339 | @@ -314,13 +245,10 @@ static int if_usb_probe(struct usb_interface *intf, | ||
340 | } | ||
341 | |||
342 | /* Upload firmware */ | ||
343 | - kparam_block_sysfs_write(fw_name); | ||
344 | - if (__if_usb_prog_firmware(cardp, lbs_fw_name, BOOT_CMD_FW_BY_USB)) { | ||
345 | - kparam_unblock_sysfs_write(fw_name); | ||
346 | + if (if_usb_prog_firmware(cardp)) { | ||
347 | lbs_deb_usbd(&udev->dev, "FW upload failed\n"); | ||
348 | goto err_prog_firmware; | ||
349 | } | ||
350 | - kparam_unblock_sysfs_write(fw_name); | ||
351 | |||
352 | if (!(priv = lbs_add_card(cardp, &intf->dev))) | ||
353 | goto err_prog_firmware; | ||
354 | @@ -349,14 +277,6 @@ static int if_usb_probe(struct usb_interface *intf, | ||
355 | usb_get_dev(udev); | ||
356 | usb_set_intfdata(intf, cardp); | ||
357 | |||
358 | - if (device_create_file(&priv->dev->dev, &dev_attr_lbs_flash_fw)) | ||
359 | - netdev_err(priv->dev, | ||
360 | - "cannot register lbs_flash_fw attribute\n"); | ||
361 | - | ||
362 | - if (device_create_file(&priv->dev->dev, &dev_attr_lbs_flash_boot2)) | ||
363 | - netdev_err(priv->dev, | ||
364 | - "cannot register lbs_flash_boot2 attribute\n"); | ||
365 | - | ||
366 | /* | ||
367 | * EHS_REMOVE_WAKEUP is not supported on all versions of the firmware. | ||
368 | */ | ||
369 | @@ -389,9 +309,6 @@ static void if_usb_disconnect(struct usb_interface *intf) | ||
370 | |||
371 | lbs_deb_enter(LBS_DEB_MAIN); | ||
372 | |||
373 | - device_remove_file(&priv->dev->dev, &dev_attr_lbs_flash_boot2); | ||
374 | - device_remove_file(&priv->dev->dev, &dev_attr_lbs_flash_fw); | ||
375 | - | ||
376 | cardp->surprise_removed = 1; | ||
377 | |||
378 | if (priv) { | ||
379 | @@ -912,58 +829,12 @@ static int check_fwfile_format(const uint8_t *data, uint32_t totlen) | ||
380 | return ret; | ||
381 | } | ||
382 | |||
383 | - | ||
384 | -/** | ||
385 | -* if_usb_prog_firmware - programs the firmware subject to cmd | ||
386 | -* | ||
387 | -* @cardp: the if_usb_card descriptor | ||
388 | -* @fwname: firmware or boot2 image file name | ||
389 | -* @cmd: either BOOT_CMD_FW_BY_USB, BOOT_CMD_UPDATE_FW, | ||
390 | -* or BOOT_CMD_UPDATE_BOOT2. | ||
391 | -* returns: 0 or error code | ||
392 | -*/ | ||
393 | -static int if_usb_prog_firmware(struct if_usb_card *cardp, | ||
394 | - const char *fwname, int cmd) | ||
395 | -{ | ||
396 | - struct lbs_private *priv = cardp->priv; | ||
397 | - unsigned long flags, caps; | ||
398 | - int ret; | ||
399 | - | ||
400 | - caps = priv->fwcapinfo; | ||
401 | - if (((cmd == BOOT_CMD_UPDATE_FW) && !(caps & FW_CAPINFO_FIRMWARE_UPGRADE)) || | ||
402 | - ((cmd == BOOT_CMD_UPDATE_BOOT2) && !(caps & FW_CAPINFO_BOOT2_UPGRADE))) | ||
403 | - return -EOPNOTSUPP; | ||
404 | - | ||
405 | - /* Ensure main thread is idle. */ | ||
406 | - spin_lock_irqsave(&priv->driver_lock, flags); | ||
407 | - while (priv->cur_cmd != NULL || priv->dnld_sent != DNLD_RES_RECEIVED) { | ||
408 | - spin_unlock_irqrestore(&priv->driver_lock, flags); | ||
409 | - if (wait_event_interruptible(priv->waitq, | ||
410 | - (priv->cur_cmd == NULL && | ||
411 | - priv->dnld_sent == DNLD_RES_RECEIVED))) { | ||
412 | - return -ERESTARTSYS; | ||
413 | - } | ||
414 | - spin_lock_irqsave(&priv->driver_lock, flags); | ||
415 | - } | ||
416 | - priv->dnld_sent = DNLD_BOOTCMD_SENT; | ||
417 | - spin_unlock_irqrestore(&priv->driver_lock, flags); | ||
418 | - | ||
419 | - ret = __if_usb_prog_firmware(cardp, fwname, cmd); | ||
420 | - | ||
421 | - spin_lock_irqsave(&priv->driver_lock, flags); | ||
422 | - priv->dnld_sent = DNLD_RES_RECEIVED; | ||
423 | - spin_unlock_irqrestore(&priv->driver_lock, flags); | ||
424 | - | ||
425 | - wake_up(&priv->waitq); | ||
426 | - | ||
427 | - return ret; | ||
428 | -} | ||
429 | - | ||
430 | /* table of firmware file names */ | ||
431 | static const struct { | ||
432 | u32 model; | ||
433 | const char *fwname; | ||
434 | } fw_table[] = { | ||
435 | + { MODEL_8388, "libertas/usb8388_olpc.bin" }, | ||
436 | { MODEL_8388, "libertas/usb8388_v9.bin" }, | ||
437 | { MODEL_8388, "libertas/usb8388_v5.bin" }, | ||
438 | { MODEL_8388, "libertas/usb8388.bin" }, | ||
439 | @@ -971,35 +842,10 @@ static const struct { | ||
440 | { MODEL_8682, "libertas/usb8682.bin" } | ||
441 | }; | ||
442 | |||
443 | -#ifdef CONFIG_OLPC | ||
444 | - | ||
445 | -static int try_olpc_fw(struct if_usb_card *cardp) | ||
446 | -{ | ||
447 | - int retval = -ENOENT; | ||
448 | - | ||
449 | - /* try the OLPC firmware first; fall back to fw_table list */ | ||
450 | - if (machine_is_olpc() && cardp->model == MODEL_8388) | ||
451 | - retval = request_firmware(&cardp->fw, | ||
452 | - "libertas/usb8388_olpc.bin", &cardp->udev->dev); | ||
453 | - return retval; | ||
454 | -} | ||
455 | - | ||
456 | -#else | ||
457 | -static int try_olpc_fw(struct if_usb_card *cardp) { return -ENOENT; } | ||
458 | -#endif /* !CONFIG_OLPC */ | ||
459 | - | ||
460 | -static int get_fw(struct if_usb_card *cardp, const char *fwname) | ||
461 | +static int get_fw(struct if_usb_card *cardp) | ||
462 | { | ||
463 | int i; | ||
464 | |||
465 | - /* Try user-specified firmware first */ | ||
466 | - if (fwname) | ||
467 | - return request_firmware(&cardp->fw, fwname, &cardp->udev->dev); | ||
468 | - | ||
469 | - /* Handle OLPC firmware */ | ||
470 | - if (try_olpc_fw(cardp) == 0) | ||
471 | - return 0; | ||
472 | - | ||
473 | /* Otherwise search for firmware to use */ | ||
474 | for (i = 0; i < ARRAY_SIZE(fw_table); i++) { | ||
475 | if (fw_table[i].model != cardp->model) | ||
476 | @@ -1012,8 +858,7 @@ static int get_fw(struct if_usb_card *cardp, const char *fwname) | ||
477 | return -ENOENT; | ||
478 | } | ||
479 | |||
480 | -static int __if_usb_prog_firmware(struct if_usb_card *cardp, | ||
481 | - const char *fwname, int cmd) | ||
482 | +static int if_usb_prog_firmware(struct if_usb_card *cardp) | ||
483 | { | ||
484 | int i = 0; | ||
485 | static int reset_count = 10; | ||
486 | @@ -1021,7 +866,7 @@ static int __if_usb_prog_firmware(struct if_usb_card *cardp, | ||
487 | |||
488 | lbs_deb_enter(LBS_DEB_USB); | ||
489 | |||
490 | - ret = get_fw(cardp, fwname); | ||
491 | + ret = get_fw(cardp); | ||
492 | if (ret) { | ||
493 | pr_err("failed to find firmware (%d)\n", ret); | ||
494 | goto done; | ||
495 | @@ -1053,7 +898,7 @@ restart: | ||
496 | do { | ||
497 | int j = 0; | ||
498 | i++; | ||
499 | - if_usb_issue_boot_command(cardp, cmd); | ||
500 | + if_usb_issue_boot_command(cardp, BOOT_CMD_FW_BY_USB); | ||
501 | /* wait for command response */ | ||
502 | do { | ||
503 | j++; | ||
504 | diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c | ||
505 | index 3b81b70..fa09585 100644 | ||
506 | --- a/drivers/net/wireless/libertas/main.c | ||
507 | +++ b/drivers/net/wireless/libertas/main.c | ||
508 | @@ -1177,107 +1177,6 @@ void lbs_notify_command_response(struct lbs_private *priv, u8 resp_idx) | ||
509 | } | ||
510 | EXPORT_SYMBOL_GPL(lbs_notify_command_response); | ||
511 | |||
512 | -/** | ||
513 | - * lbs_get_firmware - Retrieves two-stage firmware | ||
514 | - * | ||
515 | - * @dev: A pointer to &device structure | ||
516 | - * @user_helper: User-defined helper firmware file | ||
517 | - * @user_mainfw: User-defined main firmware file | ||
518 | - * @card_model: Bus-specific card model ID used to filter firmware table | ||
519 | - * elements | ||
520 | - * @fw_table: Table of firmware file names and device model numbers | ||
521 | - * terminated by an entry with a NULL helper name | ||
522 | - * @helper: On success, the helper firmware; caller must free | ||
523 | - * @mainfw: On success, the main firmware; caller must free | ||
524 | - * | ||
525 | - * returns: 0 on success, non-zero on failure | ||
526 | - */ | ||
527 | -int lbs_get_firmware(struct device *dev, const char *user_helper, | ||
528 | - const char *user_mainfw, u32 card_model, | ||
529 | - const struct lbs_fw_table *fw_table, | ||
530 | - const struct firmware **helper, | ||
531 | - const struct firmware **mainfw) | ||
532 | -{ | ||
533 | - const struct lbs_fw_table *iter; | ||
534 | - int ret; | ||
535 | - | ||
536 | - BUG_ON(helper == NULL); | ||
537 | - BUG_ON(mainfw == NULL); | ||
538 | - | ||
539 | - /* Try user-specified firmware first */ | ||
540 | - if (user_helper) { | ||
541 | - ret = request_firmware(helper, user_helper, dev); | ||
542 | - if (ret) { | ||
543 | - dev_err(dev, "couldn't find helper firmware %s\n", | ||
544 | - user_helper); | ||
545 | - goto fail; | ||
546 | - } | ||
547 | - } | ||
548 | - if (user_mainfw) { | ||
549 | - ret = request_firmware(mainfw, user_mainfw, dev); | ||
550 | - if (ret) { | ||
551 | - dev_err(dev, "couldn't find main firmware %s\n", | ||
552 | - user_mainfw); | ||
553 | - goto fail; | ||
554 | - } | ||
555 | - } | ||
556 | - | ||
557 | - if (*helper && *mainfw) | ||
558 | - return 0; | ||
559 | - | ||
560 | - /* Otherwise search for firmware to use. If neither the helper or | ||
561 | - * the main firmware were specified by the user, then we need to | ||
562 | - * make sure that found helper & main are from the same entry in | ||
563 | - * fw_table. | ||
564 | - */ | ||
565 | - iter = fw_table; | ||
566 | - while (iter && iter->helper) { | ||
567 | - if (iter->model != card_model) | ||
568 | - goto next; | ||
569 | - | ||
570 | - if (*helper == NULL) { | ||
571 | - ret = request_firmware(helper, iter->helper, dev); | ||
572 | - if (ret) | ||
573 | - goto next; | ||
574 | - | ||
575 | - /* If the device has one-stage firmware (ie cf8305) and | ||
576 | - * we've got it then we don't need to bother with the | ||
577 | - * main firmware. | ||
578 | - */ | ||
579 | - if (iter->fwname == NULL) | ||
580 | - return 0; | ||
581 | - } | ||
582 | - | ||
583 | - if (*mainfw == NULL) { | ||
584 | - ret = request_firmware(mainfw, iter->fwname, dev); | ||
585 | - if (ret && !user_helper) { | ||
586 | - /* Clear the helper if it wasn't user-specified | ||
587 | - * and the main firmware load failed, to ensure | ||
588 | - * we don't have mismatched firmware pairs. | ||
589 | - */ | ||
590 | - release_firmware(*helper); | ||
591 | - *helper = NULL; | ||
592 | - } | ||
593 | - } | ||
594 | - | ||
595 | - if (*helper && *mainfw) | ||
596 | - return 0; | ||
597 | - | ||
598 | - next: | ||
599 | - iter++; | ||
600 | - } | ||
601 | - | ||
602 | - fail: | ||
603 | - /* Failed */ | ||
604 | - release_firmware(*helper); | ||
605 | - *helper = NULL; | ||
606 | - release_firmware(*mainfw); | ||
607 | - *mainfw = NULL; | ||
608 | - | ||
609 | - return -ENOENT; | ||
610 | -} | ||
611 | -EXPORT_SYMBOL_GPL(lbs_get_firmware); | ||
612 | - | ||
613 | static int __init lbs_init_module(void) | ||
614 | { | ||
615 | lbs_deb_enter(LBS_DEB_MAIN); | ||
616 | -- | ||
617 | 1.7.9.5 | ||
618 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0010-libertas-harden-up-exit-paths.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0010-libertas-harden-up-exit-paths.patch new file mode 100644 index 00000000..6560442b --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0010-libertas-harden-up-exit-paths.patch | |||
@@ -0,0 +1,46 @@ | |||
1 | From 0afc10c9a90bdda020d6a8c03e3bfbb1103cdc5e Mon Sep 17 00:00:00 2001 | ||
2 | From: Daniel Drake <dsd@laptop.org> | ||
3 | Date: Mon, 16 Apr 2012 23:53:02 +0100 | ||
4 | Subject: [PATCH 10/16] libertas: harden-up exit paths | ||
5 | |||
6 | These simple sanity check avoids extra complexity in error paths when | ||
7 | moving to asynchronous firmware loading (which means the device may fail to | ||
8 | init some time after its creation). | ||
9 | |||
10 | Signed-off-by: Daniel Drake <dsd@laptop.org> | ||
11 | Acked-by: Dan Williams <dcbw@redhat.com> | ||
12 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
13 | --- | ||
14 | drivers/net/wireless/libertas/main.c | 9 ++++++++- | ||
15 | 1 file changed, 8 insertions(+), 1 deletion(-) | ||
16 | |||
17 | diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c | ||
18 | index fa09585..7eaf992 100644 | ||
19 | --- a/drivers/net/wireless/libertas/main.c | ||
20 | +++ b/drivers/net/wireless/libertas/main.c | ||
21 | @@ -1033,7 +1033,9 @@ void lbs_remove_card(struct lbs_private *priv) | ||
22 | lbs_deb_enter(LBS_DEB_MAIN); | ||
23 | |||
24 | lbs_remove_mesh(priv); | ||
25 | - lbs_scan_deinit(priv); | ||
26 | + | ||
27 | + if (priv->wiphy_registered) | ||
28 | + lbs_scan_deinit(priv); | ||
29 | |||
30 | /* worker thread destruction blocks on the in-flight command which | ||
31 | * should have been cleared already in lbs_stop_card(). | ||
32 | @@ -1128,6 +1130,11 @@ void lbs_stop_card(struct lbs_private *priv) | ||
33 | goto out; | ||
34 | dev = priv->dev; | ||
35 | |||
36 | + /* If the netdev isn't registered, it means that lbs_start_card() was | ||
37 | + * never called so we have nothing to do here. */ | ||
38 | + if (dev->reg_state != NETREG_REGISTERED) | ||
39 | + goto out; | ||
40 | + | ||
41 | netif_stop_queue(dev); | ||
42 | netif_carrier_off(dev); | ||
43 | |||
44 | -- | ||
45 | 1.7.9.5 | ||
46 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0011-libertas-add-asynchronous-firmware-loading-capabilit.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0011-libertas-add-asynchronous-firmware-loading-capabilit.patch new file mode 100644 index 00000000..4a314100 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0011-libertas-add-asynchronous-firmware-loading-capabilit.patch | |||
@@ -0,0 +1,269 @@ | |||
1 | From fb2e4573ebd25fff393594d8795bfd27bffee345 Mon Sep 17 00:00:00 2001 | ||
2 | From: Daniel Drake <dsd@laptop.org> | ||
3 | Date: Mon, 16 Apr 2012 23:53:26 +0100 | ||
4 | Subject: [PATCH 11/16] libertas: add asynchronous firmware loading capability | ||
5 | |||
6 | As described at | ||
7 | http://article.gmane.org/gmane.linux.kernel.wireless.general/86084 | ||
8 | libertas is taking a long time to load because it loads firmware | ||
9 | during module loading. | ||
10 | |||
11 | Add a new API for interface drivers to load their firmware | ||
12 | asynchronously. The same semantics of the firmware table are followed | ||
13 | like before. | ||
14 | |||
15 | Interface drivers will be converted in follow-up patches, then we can | ||
16 | remove the old, synchronous firmware loading function. | ||
17 | |||
18 | Signed-off-by: Daniel Drake <dsd@laptop.org> | ||
19 | Acked-by: Dan Williams <dcbw@redhat.com> | ||
20 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
21 | --- | ||
22 | drivers/net/wireless/libertas/decl.h | 8 ++ | ||
23 | drivers/net/wireless/libertas/dev.h | 10 +++ | ||
24 | drivers/net/wireless/libertas/firmware.c | 143 ++++++++++++++++++++++++++++++ | ||
25 | drivers/net/wireless/libertas/main.c | 3 + | ||
26 | 4 files changed, 164 insertions(+) | ||
27 | |||
28 | diff --git a/drivers/net/wireless/libertas/decl.h b/drivers/net/wireless/libertas/decl.h | ||
29 | index 2fb2e31..84a3aa7 100644 | ||
30 | --- a/drivers/net/wireless/libertas/decl.h | ||
31 | +++ b/drivers/net/wireless/libertas/decl.h | ||
32 | @@ -19,6 +19,10 @@ struct lbs_fw_table { | ||
33 | }; | ||
34 | |||
35 | struct lbs_private; | ||
36 | +typedef void (*lbs_fw_cb)(struct lbs_private *priv, int ret, | ||
37 | + const struct firmware *helper, const struct firmware *mainfw); | ||
38 | + | ||
39 | +struct lbs_private; | ||
40 | struct sk_buff; | ||
41 | struct net_device; | ||
42 | struct cmd_ds_command; | ||
43 | @@ -70,5 +74,9 @@ int lbs_get_firmware(struct device *dev, u32 card_model, | ||
44 | const struct lbs_fw_table *fw_table, | ||
45 | const struct firmware **helper, | ||
46 | const struct firmware **mainfw); | ||
47 | +int lbs_get_firmware_async(struct lbs_private *priv, struct device *device, | ||
48 | + u32 card_model, const struct lbs_fw_table *fw_table, | ||
49 | + lbs_fw_cb callback); | ||
50 | +void lbs_wait_for_firmware_load(struct lbs_private *priv); | ||
51 | |||
52 | #endif | ||
53 | diff --git a/drivers/net/wireless/libertas/dev.h b/drivers/net/wireless/libertas/dev.h | ||
54 | index f3fd447..6720054 100644 | ||
55 | --- a/drivers/net/wireless/libertas/dev.h | ||
56 | +++ b/drivers/net/wireless/libertas/dev.h | ||
57 | @@ -7,6 +7,7 @@ | ||
58 | #define _LBS_DEV_H_ | ||
59 | |||
60 | #include "defs.h" | ||
61 | +#include "decl.h" | ||
62 | #include "host.h" | ||
63 | |||
64 | #include <linux/kfifo.h> | ||
65 | @@ -180,6 +181,15 @@ struct lbs_private { | ||
66 | wait_queue_head_t scan_q; | ||
67 | /* Whether the scan was initiated internally and not by cfg80211 */ | ||
68 | bool internal_scan; | ||
69 | + | ||
70 | + /* Firmware load */ | ||
71 | + u32 fw_model; | ||
72 | + wait_queue_head_t fw_waitq; | ||
73 | + struct device *fw_device; | ||
74 | + const struct firmware *helper_fw; | ||
75 | + const struct lbs_fw_table *fw_table; | ||
76 | + const struct lbs_fw_table *fw_iter; | ||
77 | + lbs_fw_cb fw_callback; | ||
78 | }; | ||
79 | |||
80 | extern struct cmd_confirm_sleep confirm_sleep; | ||
81 | diff --git a/drivers/net/wireless/libertas/firmware.c b/drivers/net/wireless/libertas/firmware.c | ||
82 | index 0c8c845..cd23f1a 100644 | ||
83 | --- a/drivers/net/wireless/libertas/firmware.c | ||
84 | +++ b/drivers/net/wireless/libertas/firmware.c | ||
85 | @@ -3,10 +3,151 @@ | ||
86 | */ | ||
87 | |||
88 | #include <linux/firmware.h> | ||
89 | +#include <linux/firmware.h> | ||
90 | #include <linux/module.h> | ||
91 | |||
92 | +#include "dev.h" | ||
93 | #include "decl.h" | ||
94 | |||
95 | +static void load_next_firmware_from_table(struct lbs_private *private); | ||
96 | + | ||
97 | +static void lbs_fw_loaded(struct lbs_private *priv, int ret, | ||
98 | + const struct firmware *helper, const struct firmware *mainfw) | ||
99 | +{ | ||
100 | + unsigned long flags; | ||
101 | + | ||
102 | + lbs_deb_fw("firmware load complete, code %d\n", ret); | ||
103 | + | ||
104 | + /* User must free helper/mainfw */ | ||
105 | + priv->fw_callback(priv, ret, helper, mainfw); | ||
106 | + | ||
107 | + spin_lock_irqsave(&priv->driver_lock, flags); | ||
108 | + priv->fw_callback = NULL; | ||
109 | + wake_up(&priv->fw_waitq); | ||
110 | + spin_unlock_irqrestore(&priv->driver_lock, flags); | ||
111 | +} | ||
112 | + | ||
113 | +static void do_load_firmware(struct lbs_private *priv, const char *name, | ||
114 | + void (*cb)(const struct firmware *fw, void *context)) | ||
115 | +{ | ||
116 | + int ret; | ||
117 | + | ||
118 | + lbs_deb_fw("Requesting %s\n", name); | ||
119 | + ret = request_firmware_nowait(THIS_MODULE, true, name, | ||
120 | + priv->fw_device, GFP_KERNEL, priv, cb); | ||
121 | + if (ret) { | ||
122 | + lbs_deb_fw("request_firmware_nowait error %d\n", ret); | ||
123 | + lbs_fw_loaded(priv, ret, NULL, NULL); | ||
124 | + } | ||
125 | +} | ||
126 | + | ||
127 | +static void main_firmware_cb(const struct firmware *firmware, void *context) | ||
128 | +{ | ||
129 | + struct lbs_private *priv = context; | ||
130 | + | ||
131 | + if (!firmware) { | ||
132 | + /* Failed to find firmware: try next table entry */ | ||
133 | + load_next_firmware_from_table(priv); | ||
134 | + return; | ||
135 | + } | ||
136 | + | ||
137 | + /* Firmware found! */ | ||
138 | + lbs_fw_loaded(priv, 0, priv->helper_fw, firmware); | ||
139 | +} | ||
140 | + | ||
141 | +static void helper_firmware_cb(const struct firmware *firmware, void *context) | ||
142 | +{ | ||
143 | + struct lbs_private *priv = context; | ||
144 | + | ||
145 | + if (!firmware) { | ||
146 | + /* Failed to find firmware: try next table entry */ | ||
147 | + load_next_firmware_from_table(priv); | ||
148 | + return; | ||
149 | + } | ||
150 | + | ||
151 | + /* Firmware found! */ | ||
152 | + if (priv->fw_iter->fwname) { | ||
153 | + priv->helper_fw = firmware; | ||
154 | + do_load_firmware(priv, priv->fw_iter->fwname, main_firmware_cb); | ||
155 | + } else { | ||
156 | + /* No main firmware needed for this helper --> success! */ | ||
157 | + lbs_fw_loaded(priv, 0, firmware, NULL); | ||
158 | + } | ||
159 | +} | ||
160 | + | ||
161 | +static void load_next_firmware_from_table(struct lbs_private *priv) | ||
162 | +{ | ||
163 | + const struct lbs_fw_table *iter; | ||
164 | + | ||
165 | + if (!priv->fw_iter) | ||
166 | + iter = priv->fw_table; | ||
167 | + else | ||
168 | + iter = ++priv->fw_iter; | ||
169 | + | ||
170 | + if (priv->helper_fw) { | ||
171 | + release_firmware(priv->helper_fw); | ||
172 | + priv->helper_fw = NULL; | ||
173 | + } | ||
174 | + | ||
175 | +next: | ||
176 | + if (!iter->helper) { | ||
177 | + /* End of table hit. */ | ||
178 | + lbs_fw_loaded(priv, -ENOENT, NULL, NULL); | ||
179 | + return; | ||
180 | + } | ||
181 | + | ||
182 | + if (iter->model != priv->fw_model) { | ||
183 | + iter++; | ||
184 | + goto next; | ||
185 | + } | ||
186 | + | ||
187 | + priv->fw_iter = iter; | ||
188 | + do_load_firmware(priv, iter->helper, helper_firmware_cb); | ||
189 | +} | ||
190 | + | ||
191 | +void lbs_wait_for_firmware_load(struct lbs_private *priv) | ||
192 | +{ | ||
193 | + wait_event(priv->fw_waitq, priv->fw_callback == NULL); | ||
194 | +} | ||
195 | + | ||
196 | +/** | ||
197 | + * lbs_get_firmware_async - Retrieves firmware asynchronously. Can load | ||
198 | + * either a helper firmware and a main firmware (2-stage), or just the helper. | ||
199 | + * | ||
200 | + * @priv: Pointer to lbs_private instance | ||
201 | + * @dev: A pointer to &device structure | ||
202 | + * @card_model: Bus-specific card model ID used to filter firmware table | ||
203 | + * elements | ||
204 | + * @fw_table: Table of firmware file names and device model numbers | ||
205 | + * terminated by an entry with a NULL helper name | ||
206 | + * @callback: User callback to invoke when firmware load succeeds or fails. | ||
207 | + */ | ||
208 | +int lbs_get_firmware_async(struct lbs_private *priv, struct device *device, | ||
209 | + u32 card_model, const struct lbs_fw_table *fw_table, | ||
210 | + lbs_fw_cb callback) | ||
211 | +{ | ||
212 | + unsigned long flags; | ||
213 | + | ||
214 | + spin_lock_irqsave(&priv->driver_lock, flags); | ||
215 | + if (priv->fw_callback) { | ||
216 | + lbs_deb_fw("firmware load already in progress\n"); | ||
217 | + spin_unlock_irqrestore(&priv->driver_lock, flags); | ||
218 | + return -EBUSY; | ||
219 | + } | ||
220 | + | ||
221 | + priv->fw_device = device; | ||
222 | + priv->fw_callback = callback; | ||
223 | + priv->fw_table = fw_table; | ||
224 | + priv->fw_iter = NULL; | ||
225 | + priv->fw_model = card_model; | ||
226 | + spin_unlock_irqrestore(&priv->driver_lock, flags); | ||
227 | + | ||
228 | + lbs_deb_fw("Starting async firmware load\n"); | ||
229 | + load_next_firmware_from_table(priv); | ||
230 | + return 0; | ||
231 | +} | ||
232 | +EXPORT_SYMBOL_GPL(lbs_get_firmware_async); | ||
233 | + | ||
234 | /** | ||
235 | * lbs_get_firmware - Retrieves two-stage firmware | ||
236 | * | ||
237 | @@ -18,6 +159,8 @@ | ||
238 | * @helper: On success, the helper firmware; caller must free | ||
239 | * @mainfw: On success, the main firmware; caller must free | ||
240 | * | ||
241 | + * Deprecated: use lbs_get_firmware_async() instead. | ||
242 | + * | ||
243 | * returns: 0 on success, non-zero on failure | ||
244 | */ | ||
245 | int lbs_get_firmware(struct device *dev, u32 card_model, | ||
246 | diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c | ||
247 | index 7eaf992..e96ee0a 100644 | ||
248 | --- a/drivers/net/wireless/libertas/main.c | ||
249 | +++ b/drivers/net/wireless/libertas/main.c | ||
250 | @@ -878,6 +878,7 @@ static int lbs_init_adapter(struct lbs_private *priv) | ||
251 | priv->is_host_sleep_configured = 0; | ||
252 | priv->is_host_sleep_activated = 0; | ||
253 | init_waitqueue_head(&priv->host_sleep_q); | ||
254 | + init_waitqueue_head(&priv->fw_waitq); | ||
255 | mutex_init(&priv->lock); | ||
256 | |||
257 | setup_timer(&priv->command_timer, lbs_cmd_timeout_handler, | ||
258 | @@ -1037,6 +1038,8 @@ void lbs_remove_card(struct lbs_private *priv) | ||
259 | if (priv->wiphy_registered) | ||
260 | lbs_scan_deinit(priv); | ||
261 | |||
262 | + lbs_wait_for_firmware_load(priv); | ||
263 | + | ||
264 | /* worker thread destruction blocks on the in-flight command which | ||
265 | * should have been cleared already in lbs_stop_card(). | ||
266 | */ | ||
267 | -- | ||
268 | 1.7.9.5 | ||
269 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0012-libertas-SDIO-convert-to-asynchronous-firmware-loadi.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0012-libertas-SDIO-convert-to-asynchronous-firmware-loadi.patch new file mode 100644 index 00000000..f02684e8 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0012-libertas-SDIO-convert-to-asynchronous-firmware-loadi.patch | |||
@@ -0,0 +1,320 @@ | |||
1 | From f7b34bebb4f8b39535cf5decdab7134ffdf69186 Mon Sep 17 00:00:00 2001 | ||
2 | From: Daniel Drake <dsd@laptop.org> | ||
3 | Date: Mon, 16 Apr 2012 23:53:43 +0100 | ||
4 | Subject: [PATCH 12/16] libertas SDIO: convert to asynchronous firmware | ||
5 | loading | ||
6 | |||
7 | Signed-off-by: Daniel Drake <dsd@laptop.org> | ||
8 | Acked-by: Dan Williams <dcbw@redhat.com> | ||
9 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
10 | --- | ||
11 | drivers/net/wireless/libertas/if_sdio.c | 206 ++++++++++++++++++------------- | ||
12 | 1 file changed, 121 insertions(+), 85 deletions(-) | ||
13 | |||
14 | diff --git a/drivers/net/wireless/libertas/if_sdio.c b/drivers/net/wireless/libertas/if_sdio.c | ||
15 | index 6590feb..76caeba 100644 | ||
16 | --- a/drivers/net/wireless/libertas/if_sdio.c | ||
17 | +++ b/drivers/net/wireless/libertas/if_sdio.c | ||
18 | @@ -117,6 +117,8 @@ struct if_sdio_card { | ||
19 | int model; | ||
20 | unsigned long ioport; | ||
21 | unsigned int scratch_reg; | ||
22 | + bool started; | ||
23 | + wait_queue_head_t pwron_waitq; | ||
24 | |||
25 | u8 buffer[65536] __attribute__((aligned(4))); | ||
26 | |||
27 | @@ -129,6 +131,9 @@ struct if_sdio_card { | ||
28 | u8 rx_unit; | ||
29 | }; | ||
30 | |||
31 | +static void if_sdio_finish_power_on(struct if_sdio_card *card); | ||
32 | +static int if_sdio_power_off(struct if_sdio_card *card); | ||
33 | + | ||
34 | /********************************************************************/ | ||
35 | /* I/O */ | ||
36 | /********************************************************************/ | ||
37 | @@ -669,12 +674,39 @@ out: | ||
38 | return ret; | ||
39 | } | ||
40 | |||
41 | +static void if_sdio_do_prog_firmware(struct lbs_private *priv, int ret, | ||
42 | + const struct firmware *helper, | ||
43 | + const struct firmware *mainfw) | ||
44 | +{ | ||
45 | + struct if_sdio_card *card = priv->card; | ||
46 | + | ||
47 | + if (ret) { | ||
48 | + pr_err("failed to find firmware (%d)\n", ret); | ||
49 | + return; | ||
50 | + } | ||
51 | + | ||
52 | + ret = if_sdio_prog_helper(card, helper); | ||
53 | + if (ret) | ||
54 | + goto out; | ||
55 | + | ||
56 | + lbs_deb_sdio("Helper firmware loaded\n"); | ||
57 | + | ||
58 | + ret = if_sdio_prog_real(card, mainfw); | ||
59 | + if (ret) | ||
60 | + goto out; | ||
61 | + | ||
62 | + lbs_deb_sdio("Firmware loaded\n"); | ||
63 | + if_sdio_finish_power_on(card); | ||
64 | + | ||
65 | +out: | ||
66 | + release_firmware(helper); | ||
67 | + release_firmware(mainfw); | ||
68 | +} | ||
69 | + | ||
70 | static int if_sdio_prog_firmware(struct if_sdio_card *card) | ||
71 | { | ||
72 | int ret; | ||
73 | u16 scratch; | ||
74 | - const struct firmware *helper = NULL; | ||
75 | - const struct firmware *mainfw = NULL; | ||
76 | |||
77 | lbs_deb_enter(LBS_DEB_SDIO); | ||
78 | |||
79 | @@ -708,41 +740,18 @@ static int if_sdio_prog_firmware(struct if_sdio_card *card) | ||
80 | */ | ||
81 | if (scratch == IF_SDIO_FIRMWARE_OK) { | ||
82 | lbs_deb_sdio("firmware already loaded\n"); | ||
83 | - goto success; | ||
84 | + if_sdio_finish_power_on(card); | ||
85 | + return 0; | ||
86 | } else if ((card->model == MODEL_8686) && (scratch & 0x7fff)) { | ||
87 | lbs_deb_sdio("firmware may be running\n"); | ||
88 | - goto success; | ||
89 | - } | ||
90 | - | ||
91 | - ret = lbs_get_firmware(&card->func->dev, card->model, &fw_table[0], | ||
92 | - &helper, &mainfw); | ||
93 | - if (ret) { | ||
94 | - pr_err("failed to find firmware (%d)\n", ret); | ||
95 | - goto out; | ||
96 | + if_sdio_finish_power_on(card); | ||
97 | + return 0; | ||
98 | } | ||
99 | |||
100 | - ret = if_sdio_prog_helper(card, helper); | ||
101 | - if (ret) | ||
102 | - goto out; | ||
103 | - | ||
104 | - lbs_deb_sdio("Helper firmware loaded\n"); | ||
105 | - | ||
106 | - ret = if_sdio_prog_real(card, mainfw); | ||
107 | - if (ret) | ||
108 | - goto out; | ||
109 | - | ||
110 | - lbs_deb_sdio("Firmware loaded\n"); | ||
111 | - | ||
112 | -success: | ||
113 | - sdio_claim_host(card->func); | ||
114 | - sdio_set_block_size(card->func, IF_SDIO_BLOCK_SIZE); | ||
115 | - sdio_release_host(card->func); | ||
116 | - ret = 0; | ||
117 | + ret = lbs_get_firmware_async(card->priv, &card->func->dev, card->model, | ||
118 | + fw_table, if_sdio_do_prog_firmware); | ||
119 | |||
120 | out: | ||
121 | - release_firmware(helper); | ||
122 | - release_firmware(mainfw); | ||
123 | - | ||
124 | lbs_deb_leave_args(LBS_DEB_SDIO, "ret %d", ret); | ||
125 | return ret; | ||
126 | } | ||
127 | @@ -751,55 +760,15 @@ out: | ||
128 | /* Power management */ | ||
129 | /********************************************************************/ | ||
130 | |||
131 | -static int if_sdio_power_on(struct if_sdio_card *card) | ||
132 | +/* Finish power on sequence (after firmware is loaded) */ | ||
133 | +static void if_sdio_finish_power_on(struct if_sdio_card *card) | ||
134 | { | ||
135 | struct sdio_func *func = card->func; | ||
136 | struct lbs_private *priv = card->priv; | ||
137 | - struct mmc_host *host = func->card->host; | ||
138 | int ret; | ||
139 | |||
140 | sdio_claim_host(func); | ||
141 | - | ||
142 | - ret = sdio_enable_func(func); | ||
143 | - if (ret) | ||
144 | - goto release; | ||
145 | - | ||
146 | - /* For 1-bit transfers to the 8686 model, we need to enable the | ||
147 | - * interrupt flag in the CCCR register. Set the MMC_QUIRK_LENIENT_FN0 | ||
148 | - * bit to allow access to non-vendor registers. */ | ||
149 | - if ((card->model == MODEL_8686) && | ||
150 | - (host->caps & MMC_CAP_SDIO_IRQ) && | ||
151 | - (host->ios.bus_width == MMC_BUS_WIDTH_1)) { | ||
152 | - u8 reg; | ||
153 | - | ||
154 | - func->card->quirks |= MMC_QUIRK_LENIENT_FN0; | ||
155 | - reg = sdio_f0_readb(func, SDIO_CCCR_IF, &ret); | ||
156 | - if (ret) | ||
157 | - goto disable; | ||
158 | - | ||
159 | - reg |= SDIO_BUS_ECSI; | ||
160 | - sdio_f0_writeb(func, reg, SDIO_CCCR_IF, &ret); | ||
161 | - if (ret) | ||
162 | - goto disable; | ||
163 | - } | ||
164 | - | ||
165 | - card->ioport = sdio_readb(func, IF_SDIO_IOPORT, &ret); | ||
166 | - if (ret) | ||
167 | - goto disable; | ||
168 | - | ||
169 | - card->ioport |= sdio_readb(func, IF_SDIO_IOPORT + 1, &ret) << 8; | ||
170 | - if (ret) | ||
171 | - goto disable; | ||
172 | - | ||
173 | - card->ioport |= sdio_readb(func, IF_SDIO_IOPORT + 2, &ret) << 16; | ||
174 | - if (ret) | ||
175 | - goto disable; | ||
176 | - | ||
177 | - sdio_release_host(func); | ||
178 | - ret = if_sdio_prog_firmware(card); | ||
179 | - sdio_claim_host(func); | ||
180 | - if (ret) | ||
181 | - goto disable; | ||
182 | + sdio_set_block_size(card->func, IF_SDIO_BLOCK_SIZE); | ||
183 | |||
184 | /* | ||
185 | * Get rx_unit if the chip is SD8688 or newer. | ||
186 | @@ -824,7 +793,7 @@ static int if_sdio_power_on(struct if_sdio_card *card) | ||
187 | */ | ||
188 | ret = sdio_claim_irq(func, if_sdio_interrupt); | ||
189 | if (ret) | ||
190 | - goto disable; | ||
191 | + goto release; | ||
192 | |||
193 | /* | ||
194 | * Enable interrupts now that everything is set up | ||
195 | @@ -850,11 +819,79 @@ static int if_sdio_power_on(struct if_sdio_card *card) | ||
196 | } | ||
197 | |||
198 | priv->fw_ready = 1; | ||
199 | + wake_up(&card->pwron_waitq); | ||
200 | |||
201 | - return 0; | ||
202 | + if (!card->started) { | ||
203 | + ret = lbs_start_card(priv); | ||
204 | + if_sdio_power_off(card); | ||
205 | + if (ret == 0) { | ||
206 | + card->started = true; | ||
207 | + /* Tell PM core that we don't need the card to be | ||
208 | + * powered now */ | ||
209 | + pm_runtime_put_noidle(&func->dev); | ||
210 | + } | ||
211 | + } | ||
212 | + | ||
213 | + return; | ||
214 | |||
215 | release_irq: | ||
216 | sdio_release_irq(func); | ||
217 | +release: | ||
218 | + sdio_release_host(func); | ||
219 | +} | ||
220 | + | ||
221 | +static int if_sdio_power_on(struct if_sdio_card *card) | ||
222 | +{ | ||
223 | + struct sdio_func *func = card->func; | ||
224 | + struct mmc_host *host = func->card->host; | ||
225 | + int ret; | ||
226 | + | ||
227 | + sdio_claim_host(func); | ||
228 | + | ||
229 | + ret = sdio_enable_func(func); | ||
230 | + if (ret) | ||
231 | + goto release; | ||
232 | + | ||
233 | + /* For 1-bit transfers to the 8686 model, we need to enable the | ||
234 | + * interrupt flag in the CCCR register. Set the MMC_QUIRK_LENIENT_FN0 | ||
235 | + * bit to allow access to non-vendor registers. */ | ||
236 | + if ((card->model == MODEL_8686) && | ||
237 | + (host->caps & MMC_CAP_SDIO_IRQ) && | ||
238 | + (host->ios.bus_width == MMC_BUS_WIDTH_1)) { | ||
239 | + u8 reg; | ||
240 | + | ||
241 | + func->card->quirks |= MMC_QUIRK_LENIENT_FN0; | ||
242 | + reg = sdio_f0_readb(func, SDIO_CCCR_IF, &ret); | ||
243 | + if (ret) | ||
244 | + goto disable; | ||
245 | + | ||
246 | + reg |= SDIO_BUS_ECSI; | ||
247 | + sdio_f0_writeb(func, reg, SDIO_CCCR_IF, &ret); | ||
248 | + if (ret) | ||
249 | + goto disable; | ||
250 | + } | ||
251 | + | ||
252 | + card->ioport = sdio_readb(func, IF_SDIO_IOPORT, &ret); | ||
253 | + if (ret) | ||
254 | + goto disable; | ||
255 | + | ||
256 | + card->ioport |= sdio_readb(func, IF_SDIO_IOPORT + 1, &ret) << 8; | ||
257 | + if (ret) | ||
258 | + goto disable; | ||
259 | + | ||
260 | + card->ioport |= sdio_readb(func, IF_SDIO_IOPORT + 2, &ret) << 16; | ||
261 | + if (ret) | ||
262 | + goto disable; | ||
263 | + | ||
264 | + sdio_release_host(func); | ||
265 | + ret = if_sdio_prog_firmware(card); | ||
266 | + if (ret) { | ||
267 | + sdio_disable_func(func); | ||
268 | + return ret; | ||
269 | + } | ||
270 | + | ||
271 | + return 0; | ||
272 | + | ||
273 | disable: | ||
274 | sdio_disable_func(func); | ||
275 | release: | ||
276 | @@ -1061,11 +1098,17 @@ static int if_sdio_power_save(struct lbs_private *priv) | ||
277 | static int if_sdio_power_restore(struct lbs_private *priv) | ||
278 | { | ||
279 | struct if_sdio_card *card = priv->card; | ||
280 | + int r; | ||
281 | |||
282 | /* Make sure the card will not be powered off by runtime PM */ | ||
283 | pm_runtime_get_sync(&card->func->dev); | ||
284 | |||
285 | - return if_sdio_power_on(card); | ||
286 | + r = if_sdio_power_on(card); | ||
287 | + if (r) | ||
288 | + return r; | ||
289 | + | ||
290 | + wait_event(card->pwron_waitq, priv->fw_ready); | ||
291 | + return 0; | ||
292 | } | ||
293 | |||
294 | |||
295 | @@ -1166,6 +1209,7 @@ static int if_sdio_probe(struct sdio_func *func, | ||
296 | spin_lock_init(&card->lock); | ||
297 | card->workqueue = create_workqueue("libertas_sdio"); | ||
298 | INIT_WORK(&card->packet_worker, if_sdio_host_to_card_worker); | ||
299 | + init_waitqueue_head(&card->pwron_waitq); | ||
300 | |||
301 | /* Check if we support this card */ | ||
302 | for (i = 0; i < ARRAY_SIZE(fw_table); i++) { | ||
303 | @@ -1207,14 +1251,6 @@ static int if_sdio_probe(struct sdio_func *func, | ||
304 | if (ret) | ||
305 | goto err_activate_card; | ||
306 | |||
307 | - ret = lbs_start_card(priv); | ||
308 | - if_sdio_power_off(card); | ||
309 | - if (ret) | ||
310 | - goto err_activate_card; | ||
311 | - | ||
312 | - /* Tell PM core that we don't need the card to be powered now */ | ||
313 | - pm_runtime_put_noidle(&func->dev); | ||
314 | - | ||
315 | out: | ||
316 | lbs_deb_leave_args(LBS_DEB_SDIO, "ret %d", ret); | ||
317 | |||
318 | -- | ||
319 | 1.7.9.5 | ||
320 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0013-libertas-USB-convert-to-asynchronous-firmware-loadin.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0013-libertas-USB-convert-to-asynchronous-firmware-loadin.patch new file mode 100644 index 00000000..b8cffc2a --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0013-libertas-USB-convert-to-asynchronous-firmware-loadin.patch | |||
@@ -0,0 +1,201 @@ | |||
1 | From b42ea4e3a1fa84b7de451e96e09067b95354f6f5 Mon Sep 17 00:00:00 2001 | ||
2 | From: Daniel Drake <dsd@laptop.org> | ||
3 | Date: Mon, 16 Apr 2012 23:53:55 +0100 | ||
4 | Subject: [PATCH 13/16] libertas USB: convert to asynchronous firmware loading | ||
5 | |||
6 | Signed-off-by: Daniel Drake <dsd@laptop.org> | ||
7 | Acked-by: Dan Williams <dcbw@redhat.com> | ||
8 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
9 | --- | ||
10 | drivers/net/wireless/libertas/if_usb.c | 102 ++++++++++++++------------------ | ||
11 | 1 file changed, 43 insertions(+), 59 deletions(-) | ||
12 | |||
13 | diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c | ||
14 | index f29471b..75403e6 100644 | ||
15 | --- a/drivers/net/wireless/libertas/if_usb.c | ||
16 | +++ b/drivers/net/wireless/libertas/if_usb.c | ||
17 | @@ -41,6 +41,16 @@ enum { | ||
18 | MODEL_8682 = 0x2 | ||
19 | }; | ||
20 | |||
21 | +/* table of firmware file names */ | ||
22 | +static const struct lbs_fw_table fw_table[] = { | ||
23 | + { MODEL_8388, "libertas/usb8388_olpc.bin", NULL }, | ||
24 | + { MODEL_8388, "libertas/usb8388_v9.bin", NULL }, | ||
25 | + { MODEL_8388, "libertas/usb8388_v5.bin", NULL }, | ||
26 | + { MODEL_8388, "libertas/usb8388.bin", NULL }, | ||
27 | + { MODEL_8388, "usb8388.bin", NULL }, | ||
28 | + { MODEL_8682, "libertas/usb8682.bin", NULL } | ||
29 | +}; | ||
30 | + | ||
31 | static struct usb_device_id if_usb_table[] = { | ||
32 | /* Enter the device signature inside */ | ||
33 | { USB_DEVICE(0x1286, 0x2001), .driver_info = MODEL_8388 }, | ||
34 | @@ -52,7 +62,9 @@ MODULE_DEVICE_TABLE(usb, if_usb_table); | ||
35 | |||
36 | static void if_usb_receive(struct urb *urb); | ||
37 | static void if_usb_receive_fwload(struct urb *urb); | ||
38 | -static int if_usb_prog_firmware(struct if_usb_card *cardp); | ||
39 | +static void if_usb_prog_firmware(struct lbs_private *priv, int ret, | ||
40 | + const struct firmware *fw, | ||
41 | + const struct firmware *unused); | ||
42 | static int if_usb_host_to_card(struct lbs_private *priv, uint8_t type, | ||
43 | uint8_t *payload, uint16_t nb); | ||
44 | static int usb_tx_block(struct if_usb_card *cardp, uint8_t *payload, | ||
45 | @@ -187,6 +199,7 @@ static int if_usb_probe(struct usb_interface *intf, | ||
46 | struct usb_endpoint_descriptor *endpoint; | ||
47 | struct lbs_private *priv; | ||
48 | struct if_usb_card *cardp; | ||
49 | + int r = -ENOMEM; | ||
50 | int i; | ||
51 | |||
52 | udev = interface_to_usbdev(intf); | ||
53 | @@ -244,17 +257,10 @@ static int if_usb_probe(struct usb_interface *intf, | ||
54 | goto dealloc; | ||
55 | } | ||
56 | |||
57 | - /* Upload firmware */ | ||
58 | - if (if_usb_prog_firmware(cardp)) { | ||
59 | - lbs_deb_usbd(&udev->dev, "FW upload failed\n"); | ||
60 | - goto err_prog_firmware; | ||
61 | - } | ||
62 | - | ||
63 | if (!(priv = lbs_add_card(cardp, &intf->dev))) | ||
64 | - goto err_prog_firmware; | ||
65 | + goto err_add_card; | ||
66 | |||
67 | cardp->priv = priv; | ||
68 | - cardp->priv->fw_ready = 1; | ||
69 | |||
70 | priv->hw_host_to_card = if_usb_host_to_card; | ||
71 | priv->enter_deep_sleep = NULL; | ||
72 | @@ -267,34 +273,25 @@ static int if_usb_probe(struct usb_interface *intf, | ||
73 | |||
74 | cardp->boot2_version = udev->descriptor.bcdDevice; | ||
75 | |||
76 | - if_usb_submit_rx_urb(cardp); | ||
77 | - | ||
78 | - if (lbs_start_card(priv)) | ||
79 | - goto err_start_card; | ||
80 | - | ||
81 | - if_usb_setup_firmware(priv); | ||
82 | - | ||
83 | usb_get_dev(udev); | ||
84 | usb_set_intfdata(intf, cardp); | ||
85 | |||
86 | - /* | ||
87 | - * EHS_REMOVE_WAKEUP is not supported on all versions of the firmware. | ||
88 | - */ | ||
89 | - priv->wol_criteria = EHS_REMOVE_WAKEUP; | ||
90 | - if (lbs_host_sleep_cfg(priv, priv->wol_criteria, NULL)) | ||
91 | - priv->ehs_remove_supported = false; | ||
92 | + r = lbs_get_firmware_async(priv, &udev->dev, cardp->model, | ||
93 | + fw_table, if_usb_prog_firmware); | ||
94 | + if (r) | ||
95 | + goto err_get_fw; | ||
96 | |||
97 | return 0; | ||
98 | |||
99 | -err_start_card: | ||
100 | +err_get_fw: | ||
101 | lbs_remove_card(priv); | ||
102 | -err_prog_firmware: | ||
103 | +err_add_card: | ||
104 | if_usb_reset_device(cardp); | ||
105 | dealloc: | ||
106 | if_usb_free(cardp); | ||
107 | |||
108 | error: | ||
109 | - return -ENOMEM; | ||
110 | + return r; | ||
111 | } | ||
112 | |||
113 | /** | ||
114 | @@ -829,49 +826,22 @@ static int check_fwfile_format(const uint8_t *data, uint32_t totlen) | ||
115 | return ret; | ||
116 | } | ||
117 | |||
118 | -/* table of firmware file names */ | ||
119 | -static const struct { | ||
120 | - u32 model; | ||
121 | - const char *fwname; | ||
122 | -} fw_table[] = { | ||
123 | - { MODEL_8388, "libertas/usb8388_olpc.bin" }, | ||
124 | - { MODEL_8388, "libertas/usb8388_v9.bin" }, | ||
125 | - { MODEL_8388, "libertas/usb8388_v5.bin" }, | ||
126 | - { MODEL_8388, "libertas/usb8388.bin" }, | ||
127 | - { MODEL_8388, "usb8388.bin" }, | ||
128 | - { MODEL_8682, "libertas/usb8682.bin" } | ||
129 | -}; | ||
130 | - | ||
131 | -static int get_fw(struct if_usb_card *cardp) | ||
132 | -{ | ||
133 | - int i; | ||
134 | - | ||
135 | - /* Otherwise search for firmware to use */ | ||
136 | - for (i = 0; i < ARRAY_SIZE(fw_table); i++) { | ||
137 | - if (fw_table[i].model != cardp->model) | ||
138 | - continue; | ||
139 | - if (request_firmware(&cardp->fw, fw_table[i].fwname, | ||
140 | - &cardp->udev->dev) == 0) | ||
141 | - return 0; | ||
142 | - } | ||
143 | - | ||
144 | - return -ENOENT; | ||
145 | -} | ||
146 | - | ||
147 | -static int if_usb_prog_firmware(struct if_usb_card *cardp) | ||
148 | +static void if_usb_prog_firmware(struct lbs_private *priv, int ret, | ||
149 | + const struct firmware *fw, | ||
150 | + const struct firmware *unused) | ||
151 | { | ||
152 | + struct if_usb_card *cardp = priv->card; | ||
153 | int i = 0; | ||
154 | static int reset_count = 10; | ||
155 | - int ret = 0; | ||
156 | |||
157 | lbs_deb_enter(LBS_DEB_USB); | ||
158 | |||
159 | - ret = get_fw(cardp); | ||
160 | if (ret) { | ||
161 | pr_err("failed to find firmware (%d)\n", ret); | ||
162 | goto done; | ||
163 | } | ||
164 | |||
165 | + cardp->fw = fw; | ||
166 | if (check_fwfile_format(cardp->fw->data, cardp->fw->size)) { | ||
167 | ret = -EINVAL; | ||
168 | goto release_fw; | ||
169 | @@ -954,13 +924,27 @@ restart: | ||
170 | goto release_fw; | ||
171 | } | ||
172 | |||
173 | + cardp->priv->fw_ready = 1; | ||
174 | + if_usb_submit_rx_urb(cardp); | ||
175 | + | ||
176 | + if (lbs_start_card(priv)) | ||
177 | + goto release_fw; | ||
178 | + | ||
179 | + if_usb_setup_firmware(priv); | ||
180 | + | ||
181 | + /* | ||
182 | + * EHS_REMOVE_WAKEUP is not supported on all versions of the firmware. | ||
183 | + */ | ||
184 | + priv->wol_criteria = EHS_REMOVE_WAKEUP; | ||
185 | + if (lbs_host_sleep_cfg(priv, priv->wol_criteria, NULL)) | ||
186 | + priv->ehs_remove_supported = false; | ||
187 | + | ||
188 | release_fw: | ||
189 | release_firmware(cardp->fw); | ||
190 | cardp->fw = NULL; | ||
191 | |||
192 | done: | ||
193 | - lbs_deb_leave_args(LBS_DEB_USB, "ret %d", ret); | ||
194 | - return ret; | ||
195 | + lbs_deb_leave(LBS_DEB_USB); | ||
196 | } | ||
197 | |||
198 | |||
199 | -- | ||
200 | 1.7.9.5 | ||
201 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0014-libertas-CS-convert-to-asynchronous-firmware-loading.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0014-libertas-CS-convert-to-asynchronous-firmware-loading.patch new file mode 100644 index 00000000..fcc2620d --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0014-libertas-CS-convert-to-asynchronous-firmware-loading.patch | |||
@@ -0,0 +1,154 @@ | |||
1 | From 6e1c2a1ef946804055ac05dd347c06fb8e836dcc Mon Sep 17 00:00:00 2001 | ||
2 | From: Daniel Drake <dsd@laptop.org> | ||
3 | Date: Wed, 18 Apr 2012 20:09:44 +0100 | ||
4 | Subject: [PATCH 14/16] libertas CS: convert to asynchronous firmware loading | ||
5 | |||
6 | Signed-off-by: Daniel Drake <dsd@laptop.org> | ||
7 | Tested-by: Dan Williams <dcbw@redhat.com> | ||
8 | Acked-by: Dan Williams <dcbw@redhat.com> | ||
9 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
10 | --- | ||
11 | drivers/net/wireless/libertas/if_cs.c | 88 ++++++++++++++++++--------------- | ||
12 | 1 file changed, 49 insertions(+), 39 deletions(-) | ||
13 | |||
14 | diff --git a/drivers/net/wireless/libertas/if_cs.c b/drivers/net/wireless/libertas/if_cs.c | ||
15 | index cee5052..16beaf3 100644 | ||
16 | --- a/drivers/net/wireless/libertas/if_cs.c | ||
17 | +++ b/drivers/net/wireless/libertas/if_cs.c | ||
18 | @@ -738,6 +738,50 @@ done: | ||
19 | return ret; | ||
20 | } | ||
21 | |||
22 | +static void if_cs_prog_firmware(struct lbs_private *priv, int ret, | ||
23 | + const struct firmware *helper, | ||
24 | + const struct firmware *mainfw) | ||
25 | +{ | ||
26 | + struct if_cs_card *card = priv->card; | ||
27 | + | ||
28 | + if (ret) { | ||
29 | + pr_err("failed to find firmware (%d)\n", ret); | ||
30 | + return; | ||
31 | + } | ||
32 | + | ||
33 | + /* Load the firmware */ | ||
34 | + ret = if_cs_prog_helper(card, helper); | ||
35 | + if (ret == 0 && (card->model != MODEL_8305)) | ||
36 | + ret = if_cs_prog_real(card, mainfw); | ||
37 | + if (ret) | ||
38 | + goto out; | ||
39 | + | ||
40 | + /* Now actually get the IRQ */ | ||
41 | + ret = request_irq(card->p_dev->irq, if_cs_interrupt, | ||
42 | + IRQF_SHARED, DRV_NAME, card); | ||
43 | + if (ret) { | ||
44 | + pr_err("error in request_irq\n"); | ||
45 | + goto out; | ||
46 | + } | ||
47 | + | ||
48 | + /* | ||
49 | + * Clear any interrupt cause that happened while sending | ||
50 | + * firmware/initializing card | ||
51 | + */ | ||
52 | + if_cs_write16(card, IF_CS_CARD_INT_CAUSE, IF_CS_BIT_MASK); | ||
53 | + if_cs_enable_ints(card); | ||
54 | + | ||
55 | + /* And finally bring the card up */ | ||
56 | + priv->fw_ready = 1; | ||
57 | + if (lbs_start_card(priv) != 0) { | ||
58 | + pr_err("could not activate card\n"); | ||
59 | + free_irq(card->p_dev->irq, card); | ||
60 | + } | ||
61 | + | ||
62 | +out: | ||
63 | + release_firmware(helper); | ||
64 | + release_firmware(mainfw); | ||
65 | +} | ||
66 | |||
67 | |||
68 | /********************************************************************/ | ||
69 | @@ -809,8 +853,6 @@ static int if_cs_probe(struct pcmcia_device *p_dev) | ||
70 | unsigned int prod_id; | ||
71 | struct lbs_private *priv; | ||
72 | struct if_cs_card *card; | ||
73 | - const struct firmware *helper = NULL; | ||
74 | - const struct firmware *mainfw = NULL; | ||
75 | |||
76 | lbs_deb_enter(LBS_DEB_CS); | ||
77 | |||
78 | @@ -890,20 +932,6 @@ static int if_cs_probe(struct pcmcia_device *p_dev) | ||
79 | goto out2; | ||
80 | } | ||
81 | |||
82 | - ret = lbs_get_firmware(&p_dev->dev, card->model, &fw_table[0], | ||
83 | - &helper, &mainfw); | ||
84 | - if (ret) { | ||
85 | - pr_err("failed to find firmware (%d)\n", ret); | ||
86 | - goto out2; | ||
87 | - } | ||
88 | - | ||
89 | - /* Load the firmware early, before calling into libertas.ko */ | ||
90 | - ret = if_cs_prog_helper(card, helper); | ||
91 | - if (ret == 0 && (card->model != MODEL_8305)) | ||
92 | - ret = if_cs_prog_real(card, mainfw); | ||
93 | - if (ret) | ||
94 | - goto out2; | ||
95 | - | ||
96 | /* Make this card known to the libertas driver */ | ||
97 | priv = lbs_add_card(card, &p_dev->dev); | ||
98 | if (!priv) { | ||
99 | @@ -911,37 +939,22 @@ static int if_cs_probe(struct pcmcia_device *p_dev) | ||
100 | goto out2; | ||
101 | } | ||
102 | |||
103 | - /* Finish setting up fields in lbs_private */ | ||
104 | + /* Set up fields in lbs_private */ | ||
105 | card->priv = priv; | ||
106 | priv->card = card; | ||
107 | priv->hw_host_to_card = if_cs_host_to_card; | ||
108 | priv->enter_deep_sleep = NULL; | ||
109 | priv->exit_deep_sleep = NULL; | ||
110 | priv->reset_deep_sleep_wakeup = NULL; | ||
111 | - priv->fw_ready = 1; | ||
112 | |||
113 | - /* Now actually get the IRQ */ | ||
114 | - ret = request_irq(p_dev->irq, if_cs_interrupt, | ||
115 | - IRQF_SHARED, DRV_NAME, card); | ||
116 | + /* Get firmware */ | ||
117 | + ret = lbs_get_firmware_async(priv, &p_dev->dev, card->model, fw_table, | ||
118 | + if_cs_prog_firmware); | ||
119 | if (ret) { | ||
120 | - pr_err("error in request_irq\n"); | ||
121 | - goto out3; | ||
122 | - } | ||
123 | - | ||
124 | - /* | ||
125 | - * Clear any interrupt cause that happened while sending | ||
126 | - * firmware/initializing card | ||
127 | - */ | ||
128 | - if_cs_write16(card, IF_CS_CARD_INT_CAUSE, IF_CS_BIT_MASK); | ||
129 | - if_cs_enable_ints(card); | ||
130 | - | ||
131 | - /* And finally bring the card up */ | ||
132 | - if (lbs_start_card(priv) != 0) { | ||
133 | - pr_err("could not activate card\n"); | ||
134 | + pr_err("failed to find firmware (%d)\n", ret); | ||
135 | goto out3; | ||
136 | } | ||
137 | |||
138 | - ret = 0; | ||
139 | goto out; | ||
140 | |||
141 | out3: | ||
142 | @@ -951,9 +964,6 @@ out2: | ||
143 | out1: | ||
144 | pcmcia_disable_device(p_dev); | ||
145 | out: | ||
146 | - release_firmware(helper); | ||
147 | - release_firmware(mainfw); | ||
148 | - | ||
149 | lbs_deb_leave_args(LBS_DEB_CS, "ret %d", ret); | ||
150 | return ret; | ||
151 | } | ||
152 | -- | ||
153 | 1.7.9.5 | ||
154 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0015-libertas-add-missing-include.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0015-libertas-add-missing-include.patch new file mode 100644 index 00000000..0506d5c0 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0015-libertas-add-missing-include.patch | |||
@@ -0,0 +1,30 @@ | |||
1 | From d149dba44b6840fec19f18b768220766f7c529a8 Mon Sep 17 00:00:00 2001 | ||
2 | From: Felix Fietkau <nbd@openwrt.org> | ||
3 | Date: Thu, 19 Apr 2012 13:54:12 +0200 | ||
4 | Subject: [PATCH 15/16] libertas: add missing include | ||
5 | |||
6 | Without it, I get compile errors due to missing TASK_NORMAL, | ||
7 | TASK_UNINTERRUPTIBLE and schedule. | ||
8 | |||
9 | Signed-off-by: Felix Fietkau <nbd@openwrt.org> | ||
10 | Acked-by: Dan Williams <dcbw@redhat.com> | ||
11 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
12 | --- | ||
13 | drivers/net/wireless/libertas/firmware.c | 1 + | ||
14 | 1 file changed, 1 insertion(+) | ||
15 | |||
16 | diff --git a/drivers/net/wireless/libertas/firmware.c b/drivers/net/wireless/libertas/firmware.c | ||
17 | index cd23f1a..77f6504 100644 | ||
18 | --- a/drivers/net/wireless/libertas/firmware.c | ||
19 | +++ b/drivers/net/wireless/libertas/firmware.c | ||
20 | @@ -5,6 +5,7 @@ | ||
21 | #include <linux/firmware.h> | ||
22 | #include <linux/firmware.h> | ||
23 | #include <linux/module.h> | ||
24 | +#include <linux/sched.h> | ||
25 | |||
26 | #include "dev.h" | ||
27 | #include "decl.h" | ||
28 | -- | ||
29 | 1.7.9.5 | ||
30 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0016-remove-debug-msgs-due-to-missing-in_interrupt.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0016-remove-debug-msgs-due-to-missing-in_interrupt.patch new file mode 100644 index 00000000..dec119ad --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/libertas/0016-remove-debug-msgs-due-to-missing-in_interrupt.patch | |||
@@ -0,0 +1,35 @@ | |||
1 | From 21bcbe43eb2923da9f17a0ac826b40f6cc7161cd Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com> | ||
3 | Date: Mon, 21 May 2012 17:01:23 +0200 | ||
4 | Subject: [PATCH 16/16] remove debug msgs due to missing in_interrupt | ||
5 | MIME-Version: 1.0 | ||
6 | Content-Type: text/plain; charset=UTF-8 | ||
7 | Content-Transfer-Encoding: 8bit | ||
8 | |||
9 | Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com> | ||
10 | --- | ||
11 | drivers/net/wireless/libertas/defs.h | 7 ------- | ||
12 | 1 file changed, 7 deletions(-) | ||
13 | |||
14 | diff --git a/drivers/net/wireless/libertas/defs.h b/drivers/net/wireless/libertas/defs.h | ||
15 | index ab966f0..a80b40e 100644 | ||
16 | --- a/drivers/net/wireless/libertas/defs.h | ||
17 | +++ b/drivers/net/wireless/libertas/defs.h | ||
18 | @@ -46,14 +46,7 @@ | ||
19 | |||
20 | extern unsigned int lbs_debug; | ||
21 | |||
22 | -#ifdef DEBUG | ||
23 | -#define LBS_DEB_LL(grp, grpnam, fmt, args...) \ | ||
24 | -do { if ((lbs_debug & (grp)) == (grp)) \ | ||
25 | - printk(KERN_DEBUG DRV_NAME grpnam "%s: " fmt, \ | ||
26 | - in_interrupt() ? " (INT)" : "", ## args); } while (0) | ||
27 | -#else | ||
28 | #define LBS_DEB_LL(grp, grpnam, fmt, args...) do {} while (0) | ||
29 | -#endif | ||
30 | |||
31 | #define lbs_deb_enter(grp) \ | ||
32 | LBS_DEB_LL(grp | LBS_DEB_ENTER, " enter", "%s()\n", __func__); | ||
33 | -- | ||
34 | 1.7.9.5 | ||
35 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0019-MMC-OMAP-HS-Enable-HSPE-bit-for-high-speed-cards.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0019-MMC-OMAP-HS-Enable-HSPE-bit-for-high-speed-cards.patch new file mode 100644 index 00000000..43e5febf --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/psp/0019-MMC-OMAP-HS-Enable-HSPE-bit-for-high-speed-cards.patch | |||
@@ -0,0 +1,66 @@ | |||
1 | From 97ffca5e70b312b81bdf095d1d2a104fdaa98aba Mon Sep 17 00:00:00 2001 | ||
2 | From: "Philip, Avinash" <avinashphilip@ti.com> | ||
3 | Date: Mon, 4 Jun 2012 18:45:45 +0530 | ||
4 | Subject: [PATCH 19/19] MMC: OMAP-HS: Enable HSPE bit for high speed cards. | ||
5 | |||
6 | By outputting CMD line and DAT lines at the rising edge of the SD clock, | ||
7 | setup timings is increased and allows reaching higher bus frequency. | ||
8 | This feature is activated by setting SD_HCTL[2] HSPE bit to 1. This is | ||
9 | required for High Speed Cards. | ||
10 | |||
11 | When card is operating at high speed, MMC/SD serial output clock is set | ||
12 | to >25 MHz. This patch makes use of this clock value to set HSPE. | ||
13 | |||
14 | Also, this bit will be cleared on card removal & for non-high speed | ||
15 | cards. | ||
16 | |||
17 | Tested on High speed cards (SDHC class 10, micro SDHC class 4) and | ||
18 | normal speed cards like SDHC class 4. | ||
19 | |||
20 | Signed-off-by: Philip, Avinash <avinashphilip@ti.com> | ||
21 | --- | ||
22 | drivers/mmc/host/omap_hsmmc.c | 14 +++++++++++++- | ||
23 | 1 file changed, 13 insertions(+), 1 deletion(-) | ||
24 | |||
25 | diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c | ||
26 | index 1f938d9..22da8f2 100644 | ||
27 | --- a/drivers/mmc/host/omap_hsmmc.c | ||
28 | +++ b/drivers/mmc/host/omap_hsmmc.c | ||
29 | @@ -90,6 +90,7 @@ | ||
30 | #define MSBS (1 << 5) | ||
31 | #define BCE (1 << 1) | ||
32 | #define FOUR_BIT (1 << 1) | ||
33 | +#define HSPE (1 << 2) | ||
34 | #define DVAL_MASK (3 << 9) | ||
35 | #define DVAL_MAX (3 << 9) /* 8.4 ms debounce period */ | ||
36 | #define WPP_MASK (1 << 8) | ||
37 | @@ -634,14 +635,25 @@ static void omap_hsmmc_set_clock(struct omap_hsmmc_host *host) | ||
38 | struct mmc_ios *ios = &host->mmc->ios; | ||
39 | unsigned long regval; | ||
40 | unsigned long timeout; | ||
41 | + unsigned long clkdiv; | ||
42 | |||
43 | dev_dbg(mmc_dev(host->mmc), "Set clock to %uHz\n", ios->clock); | ||
44 | |||
45 | + clkdiv = calc_divisor(host, ios); | ||
46 | + regval = OMAP_HSMMC_READ(host->base, HCTL); | ||
47 | + /* Enable HSPE bit for high speed card */ | ||
48 | + if (ios->clock && (clk_get_rate(host->fclk)/clkdiv) > 25000000) | ||
49 | + regval |= HSPE; | ||
50 | + else | ||
51 | + regval &= ~HSPE; | ||
52 | + | ||
53 | + OMAP_HSMMC_WRITE(host->base, HCTL, regval); | ||
54 | + | ||
55 | omap_hsmmc_stop_clock(host); | ||
56 | |||
57 | regval = OMAP_HSMMC_READ(host->base, SYSCTL); | ||
58 | regval = regval & ~(CLKD_MASK | DTO_MASK); | ||
59 | - regval = regval | (calc_divisor(host, ios) << 6) | (DTO << 16); | ||
60 | + regval = regval | (clkdiv << 6) | (DTO << 16); | ||
61 | OMAP_HSMMC_WRITE(host->base, SYSCTL, regval); | ||
62 | OMAP_HSMMC_WRITE(host->base, SYSCTL, | ||
63 | OMAP_HSMMC_READ(host->base, SYSCTL) | ICE); | ||
64 | -- | ||
65 | 1.7.9.5 | ||
66 | |||
diff --git a/recipes-kernel/linux/linux-ti33x-psp_3.2.bb b/recipes-kernel/linux/linux-ti33x-psp_3.2.bb index 3243998e..645d4dc6 100644 --- a/recipes-kernel/linux/linux-ti33x-psp_3.2.bb +++ b/recipes-kernel/linux/linux-ti33x-psp_3.2.bb | |||
@@ -11,11 +11,11 @@ S = "${WORKDIR}/git" | |||
11 | MULTI_CONFIG_BASE_SUFFIX = "" | 11 | MULTI_CONFIG_BASE_SUFFIX = "" |
12 | 12 | ||
13 | # the PATCHES_OVER_PSP updates it to 3.2.x, so adjust PV to match | 13 | # the PATCHES_OVER_PSP updates it to 3.2.x, so adjust PV to match |
14 | PV = "${@base_contains('DISTRO_FEATURES', 'tipspkernel', "3.2", "3.2.18", d)}" | 14 | PV = "${@base_contains('DISTRO_FEATURES', 'tipspkernel', "3.2", "3.2.21", d)}" |
15 | 15 | ||
16 | BRANCH = "v3.2-staging" | 16 | BRANCH = "v3.2-staging" |
17 | SRCREV = "720e07b4c1f687b61b147b31c698cb6816d72f01" | 17 | SRCREV = "720e07b4c1f687b61b147b31c698cb6816d72f01" |
18 | MACHINE_KERNEL_PR_append = "i+gitr${SRCREV}" | 18 | MACHINE_KERNEL_PR_append = "a+gitr${SRCREV}" |
19 | 19 | ||
20 | COMPATIBLE_MACHINE = "(ti33x)" | 20 | COMPATIBLE_MACHINE = "(ti33x)" |
21 | 21 | ||
@@ -56,6 +56,7 @@ PATCHES_OVER_PSP = " \ | |||
56 | file://psp/0016-usb-musb-cppi41-tx-dma-completion-fixes.patch \ | 56 | file://psp/0016-usb-musb-cppi41-tx-dma-completion-fixes.patch \ |
57 | file://psp/0017-usb-musb-host-Flush-RxFIFO-only-when-RxPktRdy-is-set.patch \ | 57 | file://psp/0017-usb-musb-host-Flush-RxFIFO-only-when-RxPktRdy-is-set.patch \ |
58 | file://psp/0018-usb-musb-ti81xx-fix-role-switching-issue.patch \ | 58 | file://psp/0018-usb-musb-ti81xx-fix-role-switching-issue.patch \ |
59 | file://psp/0019-MMC-OMAP-HS-Enable-HSPE-bit-for-high-speed-cards.patch \ | ||
59 | file://3.2.1/0001-MAINTAINERS-stable-Update-address.patch \ | 60 | file://3.2.1/0001-MAINTAINERS-stable-Update-address.patch \ |
60 | file://3.2.1/0002-Documentation-Update-stable-address.patch \ | 61 | file://3.2.1/0002-Documentation-Update-stable-address.patch \ |
61 | file://3.2.1/0003-firmware-Fix-an-oops-on-reading-fw_priv-fw-in-sysfs-.patch \ | 62 | file://3.2.1/0003-firmware-Fix-an-oops-on-reading-fw_priv-fw-in-sysfs-.patch \ |
@@ -1174,7 +1175,293 @@ PATCHES_OVER_PSP = " \ | |||
1174 | file://3.2.18/0054-pktgen-fix-crash-at-module-unload.patch \ | 1175 | file://3.2.18/0054-pktgen-fix-crash-at-module-unload.patch \ |
1175 | file://3.2.18/0055-pktgen-fix-module-unload-for-good.patch \ | 1176 | file://3.2.18/0055-pktgen-fix-module-unload-for-good.patch \ |
1176 | file://3.2.18/0056-Linux-3.2.18.patch \ | 1177 | file://3.2.18/0056-Linux-3.2.18.patch \ |
1178 | file://3.2.19/0001-KVM-mmu_notifier-Flush-TLBs-before-releasing-mmu_loc.patch \ | ||
1179 | file://3.2.19/0002-KVM-Ensure-all-vcpus-are-consistent-with-in-kernel-i.patch \ | ||
1180 | file://3.2.19/0003-KVM-lock-slots_lock-around-device-assignment.patch \ | ||
1181 | file://3.2.19/0004-KVM-nVMX-Fix-erroneous-exception-bitmap-check.patch \ | ||
1182 | file://3.2.19/0005-KVM-VMX-vmx_set_cr0-expects-kvm-srcu-locked.patch \ | ||
1183 | file://3.2.19/0006-KVM-s390-do-store-status-after-handling-STOP_ON_STOP.patch \ | ||
1184 | file://3.2.19/0007-KVM-s390-Sanitize-fpc-registers-for-KVM_SET_FPU.patch \ | ||
1185 | file://3.2.19/0008-bio-don-t-overflow-in-bio_get_nr_vecs.patch \ | ||
1186 | file://3.2.19/0009-bio-allocation-failure-due-to-bio_get_nr_vecs.patch \ | ||
1187 | file://3.2.19/0010-block-fix-buffer-overflow-when-printing-partition-UU.patch \ | ||
1188 | file://3.2.19/0011-fix-PA1.1-oops-on-boot.patch \ | ||
1189 | file://3.2.19/0012-fix-crash-in-flush_icache_page_asm-on-PA1.1.patch \ | ||
1190 | file://3.2.19/0013-fix-panic-on-prefetch-NULL-on-PA7300LC.patch \ | ||
1191 | file://3.2.19/0014-arch-tile-Kconfig-remove-pointless-M386-test.patch \ | ||
1192 | file://3.2.19/0015-tilegx-enable-SYSCALL_WRAPPERS-support.patch \ | ||
1193 | file://3.2.19/0016-mtd-sm_ftl-fix-typo-in-major-number.patch \ | ||
1194 | file://3.2.19/0017-hpsa-Fix-problem-with-MSA2xxx-devices.patch \ | ||
1195 | file://3.2.19/0018-SELinux-if-sel_make_bools-errors-don-t-leave-inconsi.patch \ | ||
1196 | file://3.2.19/0019-cfg80211-warn-if-db.txt-is-empty-with-CONFIG_CFG8021.patch \ | ||
1197 | file://3.2.19/0020-mpt2sas-Fix-for-panic-happening-because-of-improper-.patch \ | ||
1198 | file://3.2.19/0021-isdn-gigaset-ratelimit-CAPI-message-dumps.patch \ | ||
1199 | file://3.2.19/0022-isdn-gigaset-fix-CAPI-disconnect-B3-handling.patch \ | ||
1200 | file://3.2.19/0023-isdn-gigaset-improve-error-handling-querying-firmwar.patch \ | ||
1201 | file://3.2.19/0024-KEYS-Use-the-compat-keyctl-syscall-wrapper-on-Sparc6.patch \ | ||
1202 | file://3.2.19/0025-IB-core-Fix-mismatch-between-locked-and-pinned-pages.patch \ | ||
1203 | file://3.2.19/0026-regulator-core-Release-regulator-regulator-supplies-.patch \ | ||
1204 | file://3.2.19/0027-iommu-Fix-off-by-one-in-dmar_get_fault_reason.patch \ | ||
1205 | file://3.2.19/0028-RDMA-cxgb4-Always-wake-up-waiters-in-c4iw_peer_abort.patch \ | ||
1206 | file://3.2.19/0029-RDMA-cxgb4-Drop-peer_abort-when-no-endpoint-found.patch \ | ||
1207 | file://3.2.19/0030-s390-pfault-fix-task-state-race.patch \ | ||
1208 | file://3.2.19/0031-isci-fix-oem-parameter-validation-on-single-controll.patch \ | ||
1209 | file://3.2.19/0032-Fix-blocking-allocations-called-very-early-during-bo.patch \ | ||
1210 | file://3.2.19/0033-vfs-make-AIO-use-the-proper-rw_verify_area-area-help.patch \ | ||
1211 | file://3.2.19/0034-docs-update-HOWTO-for-2.6.x-3.x-versioning.patch \ | ||
1212 | file://3.2.19/0035-drivers-staging-comedi-comedi_fops.c-add-missing-vfr.patch \ | ||
1213 | file://3.2.19/0036-USB-move-usb_translate_errors-to-linux-usb.h.patch \ | ||
1214 | file://3.2.19/0037-USB-cdc-wdm-sanitize-error-returns.patch \ | ||
1215 | file://3.2.19/0038-USB-cdc-wdm-fix-memory-leak.patch \ | ||
1216 | file://3.2.19/0039-8250_pci-fix-pch-uart-matching.patch \ | ||
1217 | file://3.2.19/0040-usb-add-USB_QUIRK_RESET_RESUME-for-M-Audio-88es.patch \ | ||
1218 | file://3.2.19/0041-usb-usbtest-two-super-speed-fixes-for-usbtest.patch \ | ||
1219 | file://3.2.19/0042-8250.c-less-than-2400-baud-fix.patch \ | ||
1220 | file://3.2.19/0043-usb-xhci-Handle-COMP_TX_ERR-for-isoc-tds.patch \ | ||
1221 | file://3.2.19/0044-xhci-Avoid-dead-ports-when-CONFIG_USB_XHCI_HCD-n.patch \ | ||
1222 | file://3.2.19/0045-xhci-Add-Lynx-Point-to-list-of-Intel-switchable-host.patch \ | ||
1223 | file://3.2.19/0046-usb-gadget-fsl_udc_core-dTD-s-next-dtd-pointer-need-.patch \ | ||
1224 | file://3.2.19/0047-Add-missing-call-to-uart_update_timeout.patch \ | ||
1225 | file://3.2.19/0048-USB-ftdi-sio-add-support-for-Physik-Instrumente-E-86.patch \ | ||
1226 | file://3.2.19/0049-USB-ffs-test-fix-length-argument-of-out-function-cal.patch \ | ||
1227 | file://3.2.19/0050-HID-wiimote-Fix-IR-data-parser.patch \ | ||
1228 | file://3.2.19/0051-usb-storage-unusual_devs-entry-for-Yarvik-PMP400-MP4.patch \ | ||
1229 | file://3.2.19/0052-USB-ohci-at91-add-a-reset-function-to-fix-race-condi.patch \ | ||
1230 | file://3.2.19/0053-HID-logitech-read-all-32-bits-of-report-type-bitfiel.patch \ | ||
1231 | file://3.2.19/0054-USB-serial-ti_usb_3410_5052-Add-support-for-the-FRI2.patch \ | ||
1232 | file://3.2.19/0055-USB-cdc-wdm-poll-must-return-POLLHUP-if-device-is-go.patch \ | ||
1233 | file://3.2.19/0056-USB-cdc-wdm-add-debug-messages-on-cleanup.patch \ | ||
1234 | file://3.2.19/0057-USB-cdc-wdm-cannot-use-dev_printk-when-device-is-gon.patch \ | ||
1235 | file://3.2.19/0058-tty-Allow-uart_register-unregister-register.patch \ | ||
1236 | file://3.2.19/0059-workqueue-skip-nr_running-sanity-check-in-worker_ent.patch \ | ||
1237 | file://3.2.19/0060-xhci-Add-new-short-TX-quirk-for-Fresco-Logic-host.patch \ | ||
1238 | file://3.2.19/0061-usbcore-enable-USB2-LPM-if-port-suspend-fails.patch \ | ||
1239 | file://3.2.19/0062-perf-x86-Update-event-scheduling-constraints-for-AMD.patch \ | ||
1240 | file://3.2.19/0063-USB-fix-resource-leak-in-xhci-power-loss-path.patch \ | ||
1241 | file://3.2.19/0064-xhci-Reset-reserved-command-ring-TRBs-on-cleanup.patch \ | ||
1242 | file://3.2.19/0065-USB-Remove-races-in-devio.c.patch \ | ||
1243 | file://3.2.19/0066-md-using-GFP_NOIO-to-allocate-bio-for-flush-request.patch \ | ||
1244 | file://3.2.19/0067-um-Implement-a-custom-pte_same-function.patch \ | ||
1245 | file://3.2.19/0068-um-Fix-__swp_type.patch \ | ||
1246 | file://3.2.19/0069-swap-don-t-do-discard-if-no-discard-option-added.patch \ | ||
1247 | file://3.2.19/0070-Input-wacom-relax-Bamboo-stylus-ID-check.patch \ | ||
1248 | file://3.2.19/0071-ahci-Detect-Marvell-88SE9172-SATA-controller.patch \ | ||
1249 | file://3.2.19/0072-ARM-7365-1-drop-unused-parameter-from-flush_cache_us.patch \ | ||
1250 | file://3.2.19/0073-ARM-7409-1-Do-not-call-flush_cache_user_range-with-m.patch \ | ||
1251 | file://3.2.19/0074-sony-laptop-Enable-keyboard-backlight-by-default.patch \ | ||
1252 | file://3.2.19/0075-init-don-t-try-mounting-device-as-nfs-root-unless-ty.patch \ | ||
1253 | file://3.2.19/0076-memcg-free-spare-array-to-avoid-memory-leak.patch \ | ||
1254 | file://3.2.19/0077-compat-Fix-RT-signal-mask-corruption-via-sigprocmask.patch \ | ||
1255 | file://3.2.19/0078-ext3-Fix-error-handling-on-inode-bitmap-corruption.patch \ | ||
1256 | file://3.2.19/0079-ext4-fix-error-handling-on-inode-bitmap-corruption.patch \ | ||
1257 | file://3.2.19/0080-ACPI-PM-Add-Sony-Vaio-VPCCW29FX-to-nonvs-blacklist.patch \ | ||
1258 | file://3.2.19/0081-hpsa-Add-IRQF_SHARED-back-in-for-the-non-MSI-X-inter.patch \ | ||
1259 | file://3.2.19/0082-wake-up-s_wait_unfrozen-when-freeze_fs-fails.patch \ | ||
1260 | file://3.2.19/0083-cifs-fix-revalidation-test-in-cifs_llseek.patch \ | ||
1261 | file://3.2.19/0084-dl2k-Clean-up-rio_ioctl.patch \ | ||
1262 | file://3.2.19/0085-OMAPDSS-VENC-fix-NULL-pointer-dereference-in-DSS2-VE.patch \ | ||
1263 | file://3.2.19/0086-i2c-eg20t-change-timeout-value-50msec-to-1000msec.patch \ | ||
1264 | file://3.2.19/0087-drm-i915-GEN7-Use-HW-scheduler-for-fixed-function-sh.patch \ | ||
1265 | file://3.2.19/0088-mmc-sdio-avoid-spurious-calls-to-interrupt-handlers.patch \ | ||
1266 | file://3.2.19/0089-smsusb-add-autodetection-support-for-USB-ID-2040-c0a.patch \ | ||
1267 | file://3.2.19/0090-uvcvideo-Fix-ENUMINPUT-handling.patch \ | ||
1268 | file://3.2.19/0091-drm-i915-Avoid-a-double-read-of-PCH_IIR-during-inter.patch \ | ||
1269 | file://3.2.19/0092-b43legacy-Fix-error-due-to-MMIO-access-with-SSB-unpo.patch \ | ||
1270 | file://3.2.19/0093-gpio-mpc8xxx-Prevent-NULL-pointer-deref-in-demux-han.patch \ | ||
1271 | file://3.2.19/0094-drm-i915-don-t-clobber-the-pipe-param-in-sanitize_mo.patch \ | ||
1272 | file://3.2.19/0095-spi-spi-fsl-spi-reference-correct-pdata-in-fsl_spi_c.patch \ | ||
1273 | file://3.2.19/0096-xen-do-not-map-the-same-GSI-twice-in-PVHVM-guests.patch \ | ||
1274 | file://3.2.19/0097-nouveau-nouveau_set_bo_placement-takes-TTM-flags.patch \ | ||
1275 | file://3.2.19/0098-MCE-Fix-vm86-handling-for-32bit-mce-handler.patch \ | ||
1276 | file://3.2.19/0099-x86-mce-Fix-check-for-processor-context-when-machine.patch \ | ||
1277 | file://3.2.19/0100-tile-fix-bug-where-fls-0-was-not-returning-0.patch \ | ||
1278 | file://3.2.19/0101-intel-iommu-Add-device-info-into-list-before-doing-c.patch \ | ||
1279 | file://3.2.19/0102-ethtool-Null-terminate-filename-passed-to-ethtool_op.patch \ | ||
1280 | file://3.2.19/0103-block-don-t-mark-buffers-beyond-end-of-disk-as-mappe.patch \ | ||
1281 | file://3.2.19/0104-drivers-rtc-rtc-pl031.c-configure-correct-wday-for-2.patch \ | ||
1282 | file://3.2.19/0105-rtlwifi-Preallocate-USB-read-buffers-and-eliminate-k.patch \ | ||
1283 | file://3.2.19/0106-NFS4-fix-compile-warnings-in-nfs4proc.c.patch \ | ||
1284 | file://3.2.19/0107-Avoid-reading-past-buffer-when-calling-GETACL.patch \ | ||
1285 | file://3.2.19/0108-Avoid-beyond-bounds-copy-while-caching-ACL.patch \ | ||
1286 | file://3.2.19/0109-i2c-tegra-notify-transfer-complete-after-clearing-st.patch \ | ||
1287 | file://3.2.19/0110-i2c-davinci-Free-requested-IRQ-in-remove.patch \ | ||
1288 | file://3.2.19/0111-x86-realmode-16-bit-real-mode-code-support-for-reloc.patch \ | ||
1289 | file://3.2.19/0112-x86-relocs-Workaround-for-binutils-2.22.52.0.1-secti.patch \ | ||
1290 | file://3.2.19/0113-x86-relocs-When-printing-an-error-say-relative-or-ab.patch \ | ||
1291 | file://3.2.19/0114-x86-relocs-Build-clean-fix.patch \ | ||
1292 | file://3.2.19/0115-x86-32-relocs-Whitelist-more-symbols-for-ld-bug-work.patch \ | ||
1293 | file://3.2.19/0116-x86-relocs-Add-jiffies-and-jiffies_64-to-the-relativ.patch \ | ||
1294 | file://3.2.19/0117-Linux-3.2.19.patch \ | ||
1295 | file://3.2.20/0001-iommu-amd-Add-workaround-for-event-log-erratum.patch \ | ||
1296 | file://3.2.20/0002-MIPS-BCM63XX-Add-missing-include-for-bcm63xx_gpio.h.patch \ | ||
1297 | file://3.2.20/0003-cifs-Include-backup-intent-search-flags-during-searc.patch \ | ||
1298 | file://3.2.20/0004-sunrpc-fix-loss-of-task-tk_status-after-rpc_delay-ca.patch \ | ||
1299 | file://3.2.20/0005-exofs-Fix-CRASH-on-very-early-IO-errors.patch \ | ||
1300 | file://3.2.20/0006-cifs-fix-oops-while-traversing-open-file-list-try-4.patch \ | ||
1301 | file://3.2.20/0007-Fix-dm-multipath-starvation-when-scsi-host-is-busy.patch \ | ||
1302 | file://3.2.20/0008-ixp4xx-fix-compilation-by-adding-gpiolib-support.patch \ | ||
1303 | file://3.2.20/0009-drm-i915-properly-handle-interlaced-bit-for-sdvo-dtd.patch \ | ||
1304 | file://3.2.20/0010-drm-i915-enable-vdd-when-switching-off-the-eDP-panel.patch \ | ||
1305 | file://3.2.20/0011-drm-i915-Add-Clientron-E830-to-the-ignore-LVDS-list.patch \ | ||
1306 | file://3.2.20/0012-drm-i915-Ignore-LVDS-on-hp-t5745-and-hp-st5747-thin-.patch \ | ||
1307 | file://3.2.20/0013-drm-i915-no-lvds-quirk-for-HP-t5740e-Thin-Client.patch \ | ||
1308 | file://3.2.20/0014-drm-i915-wait-for-a-vblank-to-pass-after-tv-detect.patch \ | ||
1309 | file://3.2.20/0015-drm-i915-Update-GEN6_RP_CONTROL-definitions.patch \ | ||
1310 | file://3.2.20/0016-drm-i915-always-use-RPNSWREQ-for-turbo-change-reques.patch \ | ||
1311 | file://3.2.20/0017-solos-pci-Fix-DMA-support.patch \ | ||
1312 | file://3.2.20/0018-microblaze-Do-not-select-GENERIC_GPIO-by-default.patch \ | ||
1313 | file://3.2.20/0019-fix-boot-failure-on-32-bit-systems-caused-by-branch-.patch \ | ||
1314 | file://3.2.20/0020-fix-TLB-fault-path-on-PA2.0-narrow-systems.patch \ | ||
1315 | file://3.2.20/0021-iwlwifi-update-BT-traffic-load-states-correctly.patch \ | ||
1316 | file://3.2.20/0022-iwlwifi-do-not-use-shadow-registers-by-default.patch \ | ||
1317 | file://3.2.20/0023-wl1251-fix-oops-on-early-interrupt.patch \ | ||
1318 | file://3.2.20/0024-NFSv4-Map-NFS4ERR_SHARE_DENIED-into-an-EACCES-error-.patch \ | ||
1319 | file://3.2.20/0025-drm-radeon-fix-XFX-quirk.patch \ | ||
1320 | file://3.2.20/0026-ath9k-fix-a-use-after-free-bug-when-ath_tx_setup_buf.patch \ | ||
1321 | file://3.2.20/0027-mac80211-fix-ADDBA-declined-after-suspend-with-wowla.patch \ | ||
1322 | file://3.2.20/0028-mm-fork-fix-overflow-in-vma-length-when-copying-mmap.patch \ | ||
1323 | file://3.2.20/0029-mm-consider-all-swapped-back-pages-in-used-once-logi.patch \ | ||
1324 | file://3.2.20/0030-hugetlb-fix-resv_map-leak-in-error-path.patch \ | ||
1325 | file://3.2.20/0031-mm-vmalloc.c-change-void-into-explict-vm_struct.patch \ | ||
1326 | file://3.2.20/0032-mm-fix-faulty-initialization-in-vmalloc_init.patch \ | ||
1327 | file://3.2.20/0033-fix-scsi_wait_scan.patch \ | ||
1328 | file://3.2.20/0034-mm-fix-vma_resv_map-NULL-pointer.patch \ | ||
1329 | file://3.2.20/0035-x86-amd-xen-Avoid-NULL-pointer-paravirt-references.patch \ | ||
1330 | file://3.2.20/0036-slub-fix-a-memory-leak-in-get_partial_node.patch \ | ||
1331 | file://3.2.20/0037-ext4-force-ro-mount-if-ext4_setup_super-fails.patch \ | ||
1332 | file://3.2.20/0038-ext4-disallow-hard-linked-directory-in-ext4_lookup.patch \ | ||
1333 | file://3.2.20/0039-mtd-nand-fix-scan_read_raw_oob.patch \ | ||
1334 | file://3.2.20/0040-vfs-increment-iversion-when-a-file-is-truncated.patch \ | ||
1335 | file://3.2.20/0041-vfs-umount_tree-might-be-called-on-subtree-that-had-.patch \ | ||
1336 | file://3.2.20/0042-ext4-add-missing-save_error_info-to-ext4_error.patch \ | ||
1337 | file://3.2.20/0043-ALSA-usb-audio-fix-rate_list-memory-leak.patch \ | ||
1338 | file://3.2.20/0044-ext4-add-ext4_mb_unload_buddy-in-the-error-path.patch \ | ||
1339 | file://3.2.20/0045-ext4-remove-mb_groups-before-tearing-down-the-buddy_.patch \ | ||
1340 | file://3.2.20/0046-drm-radeon-fix-bank-information-in-tiling-config.patch \ | ||
1341 | file://3.2.20/0047-drm-radeon-properly-program-gart-on-rv740-juniper-cy.patch \ | ||
1342 | file://3.2.20/0048-drm-radeon-fix-HD6790-HD6570-backend-programming.patch \ | ||
1343 | file://3.2.20/0049-drm-ttm-Fix-spinlock-imbalance.patch \ | ||
1344 | file://3.2.20/0050-drm-vmwgfx-Fix-nasty-write-past-alloced-memory-area.patch \ | ||
1345 | file://3.2.20/0051-mtd-of_parts-fix-breakage-in-Kconfig.patch \ | ||
1346 | file://3.2.20/0052-fec_mpc52xx-fix-timestamp-filtering.patch \ | ||
1347 | file://3.2.20/0053-Bluetooth-btusb-Add-vendor-specific-ID-0a5c-21f3-for.patch \ | ||
1348 | file://3.2.20/0054-Bluetooth-btusb-add-support-for-BCM20702A0-0a5c-21e6.patch \ | ||
1349 | file://3.2.20/0055-Bluetooth-btusb-Add-USB-device-ID-0a5c-21e8.patch \ | ||
1350 | file://3.2.20/0056-Bluetooth-btusb-typo-in-Broadcom-SoftSailing-id.patch \ | ||
1351 | file://3.2.20/0057-Bluetooth-btusb-Add-vendor-specific-ID-0489-e042-for.patch \ | ||
1352 | file://3.2.20/0058-Bluetooth-Add-support-for-Atheros-13d3-3362.patch \ | ||
1353 | file://3.2.20/0059-Bluetooth-Add-support-for-AR3012-0cf3-e004.patch \ | ||
1354 | file://3.2.20/0060-Add-Foxconn-Hon-Hai-IDs-for-btusb-module.patch \ | ||
1355 | file://3.2.20/0061-Bluetooth-Add-support-for-Foxconn-Hon-Hai-AR5BBU22-0.patch \ | ||
1356 | file://3.2.20/0062-drm-i915-Disable-FBC-on-SandyBridge.patch \ | ||
1357 | file://3.2.20/0063-ipv4-Do-not-use-dead-fib_info-entries.patch \ | ||
1358 | file://3.2.20/0064-ipv4-fix-the-rcu-race-between-free_fib_info-and-ip_r.patch \ | ||
1359 | file://3.2.20/0065-set-fake_rtable-s-dst-to-NULL-to-avoid-kernel-Oops.patch \ | ||
1360 | file://3.2.20/0066-ipv6-fix-incorrect-ipsec-fragment.patch \ | ||
1361 | file://3.2.20/0067-l2tp-fix-oops-in-L2TP-IP-sockets-for-connect-AF_UNSP.patch \ | ||
1362 | file://3.2.20/0068-r8169-missing-barriers.patch \ | ||
1363 | file://3.2.20/0069-r8169-fix-early-queue-wake-up.patch \ | ||
1364 | file://3.2.20/0070-r8169-fix-unsigned-int-wraparound-with-TSO.patch \ | ||
1365 | file://3.2.20/0071-Revert-net-maintain-namespace-isolation-between-vlan.patch \ | ||
1366 | file://3.2.20/0072-sctp-check-cached-dst-before-using-it.patch \ | ||
1367 | file://3.2.20/0073-skb-avoid-unnecessary-reallocations-in-__skb_cow.patch \ | ||
1368 | file://3.2.20/0074-xfrm-take-net-hdr-len-into-account-for-esp-payload-s.patch \ | ||
1369 | file://3.2.20/0075-ACPI-battery-only-refresh-the-sysfs-files-when-perti.patch \ | ||
1370 | file://3.2.20/0076-target-file-Use-O_DSYNC-by-default-for-FILEIO-backen.patch \ | ||
1371 | file://3.2.20/0077-iommu-amd-Cache-pdev-pointer-to-root-bridge.patch \ | ||
1372 | file://3.2.20/0078-drm-radeon-kms-add-new-Palm-Sumo-PCI-ids.patch \ | ||
1373 | file://3.2.20/0079-drm-radeon-kms-add-new-BTC-PCI-ids.patch \ | ||
1374 | file://3.2.20/0080-btree-fix-tree-corruption-in-btree_get_prev.patch \ | ||
1375 | file://3.2.20/0081-kbuild-install-kernel-page-flags.h.patch \ | ||
1376 | file://3.2.20/0082-asix-allow-full-size-8021Q-frames-to-be-received.patch \ | ||
1377 | file://3.2.20/0083-ext4-don-t-trash-state-flags-in-EXT4_IOC_SETFLAGS.patch \ | ||
1378 | file://3.2.20/0084-ext4-don-t-set-i_flags-in-EXT4_IOC_SETFLAGS.patch \ | ||
1379 | file://3.2.20/0085-ext4-fix-the-free-blocks-calculation-for-ext3-file-s.patch \ | ||
1380 | file://3.2.20/0086-Linux-3.2.20.patch \ | ||
1381 | file://3.2.21/0001-drm-i915-Mark-the-ringbuffers-as-being-in-the-GTT-do.patch \ | ||
1382 | file://3.2.21/0002-drm-i915-hold-forcewake-around-ring-hw-init.patch \ | ||
1383 | file://3.2.21/0003-drm-i915-Unpin-the-flip-target-if-we-fail-to-queue-t.patch \ | ||
1384 | file://3.2.21/0004-drm-i915-fix-up-ivb-plane-3-pageflips.patch \ | ||
1385 | file://3.2.21/0005-char-agp-add-another-Ironlake-host-bridge.patch \ | ||
1386 | file://3.2.21/0006-x86-uv-Fix-UV2-BAU-legacy-mode.patch \ | ||
1387 | file://3.2.21/0007-powerpc-Fix-kernel-panic-during-kernel-module-load.patch \ | ||
1388 | file://3.2.21/0008-drm-nouveau-determine-a-value-for-display_info.bpc-i.patch \ | ||
1389 | file://3.2.21/0009-drm-nouveau-default-to-8bpc-for-non-LVDS-panels-if-E.patch \ | ||
1390 | file://3.2.21/0010-drm-nouveau-disp-fix-dithering-not-being-enabled-on-.patch \ | ||
1391 | file://3.2.21/0011-fuse-fix-stat-call-on-32-bit-platforms.patch \ | ||
1392 | file://3.2.21/0012-x86-MCE-AMD-Make-APIC-LVT-thresholding-interrupt-opt.patch \ | ||
1393 | file://3.2.21/0013-x86-amd-Re-enable-CPU-topology-extensions-in-case-BI.patch \ | ||
1394 | file://3.2.21/0014-hwmon-fam15h_power-Increase-output-resolution.patch \ | ||
1395 | file://3.2.21/0015-sched-Fix-the-relax_domain_level-boot-parameter.patch \ | ||
1396 | file://3.2.21/0016-iwlwifi-don-t-mess-up-the-SCD-when-removing-a-key.patch \ | ||
1397 | file://3.2.21/0017-hwrng-atmel-rng-fix-race-condition-leading-to-repeat.patch \ | ||
1398 | file://3.2.21/0018-crypto-aesni-intel-fix-unaligned-cbc-decrypt-for-x86.patch \ | ||
1399 | file://3.2.21/0019-xen-setup-filter-APERFMPERF-cpuid-feature-out.patch \ | ||
1400 | file://3.2.21/0020-NFSv4.1-Fix-a-request-leak-on-the-back-channel.patch \ | ||
1401 | file://3.2.21/0021-can-c_can-fix-BUG-echo_skb-is-occupied-during-transm.patch \ | ||
1402 | file://3.2.21/0022-can-c_can-fix-an-interrupt-thrash-issue-with-c_can-d.patch \ | ||
1403 | file://3.2.21/0023-can-c_can-fix-race-condition-in-c_can_open.patch \ | ||
1404 | file://3.2.21/0024-ARM-i.MX53-Fix-PLL4-base-address.patch \ | ||
1405 | file://3.2.21/0025-usb-musb_gadget-fix-crash-caused-by-dangling-pointer.patch \ | ||
1406 | file://3.2.21/0026-mac80211-clean-up-remain-on-channel-on-interface-sto.patch \ | ||
1407 | file://3.2.21/0027-rt2x00-use-atomic-variable-for-seqno.patch \ | ||
1408 | file://3.2.21/0028-iwlwifi-disable-WoWLAN-if-CONFIG_PM_SLEEP.patch \ | ||
1409 | file://3.2.21/0029-ASoC-wm8994-Ensure-all-AIFnCLK-events-are-run-from-t.patch \ | ||
1410 | file://3.2.21/0030-ASoC-wm8994-Apply-volume-updates-with-clocks-enabled.patch \ | ||
1411 | file://3.2.21/0031-iwlwifi-unregister-LEDs-if-mac80211-registration-fai.patch \ | ||
1412 | file://3.2.21/0032-cfg80211-fix-interface-combinations-check.patch \ | ||
1413 | file://3.2.21/0033-mpt2sas-Fix-unsafe-using-smp_processor_id-in-preempt.patch \ | ||
1414 | file://3.2.21/0034-net-sierra_net-device-IDs-for-Aircard-320U.patch \ | ||
1415 | file://3.2.21/0035-ARM-imx6-exit-coherency-when-shutting-down-a-cpu.patch \ | ||
1416 | file://3.2.21/0036-ARM-i.MX-imx21ads-Fix-overlapping-static-i-o-mapping.patch \ | ||
1417 | file://3.2.21/0037-NFSv4-Fix-unnecessary-delegation-returns-in-nfs4_do_.patch \ | ||
1418 | file://3.2.21/0038-iwlwifi-use-correct-supported-firmware-for-6035-and-.patch \ | ||
1419 | file://3.2.21/0039-iwlwifi-disable-the-buggy-chain-extension-feature-in.patch \ | ||
1420 | file://3.2.21/0040-ALSA-hda-Add-codec-no_jack_detect-flag.patch \ | ||
1421 | file://3.2.21/0041-ALSA-hda-add-support-for-Uniwill-ECS-M31EI-notebook.patch \ | ||
1422 | file://3.2.21/0042-ALSA-hda-Suppress-auto-mute-feature-on-some-machines.patch \ | ||
1423 | file://3.2.21/0043-ALSA-hda-Add-another-jack-detection-suppression-for-.patch \ | ||
1424 | file://3.2.21/0044-ALSA-HDA-Pin-fixup-for-Zotac-Z68-motherboard.patch \ | ||
1425 | file://3.2.21/0045-usb-cdc-wdm-Add-device-id-for-Huawei-3G-LTE-modems.patch \ | ||
1426 | file://3.2.21/0046-USB-qcserial-Add-Sierra-Wireless-device-IDs.patch \ | ||
1427 | file://3.2.21/0047-USB-ftdi-sio-Add-support-for-RT-Systems-USB-RTS01-se.patch \ | ||
1428 | file://3.2.21/0048-USB-serial-cp210x-add-Optris-MS-Pro-usb-id.patch \ | ||
1429 | file://3.2.21/0049-USB-serial-sierra-Add-support-for-Sierra-Wireless-Ai.patch \ | ||
1430 | file://3.2.21/0050-USB-option-Updated-Huawei-K4605-has-better-id.patch \ | ||
1431 | file://3.2.21/0051-USB-mct_u232-Fix-incorrect-TIOCMSET-return.patch \ | ||
1432 | file://3.2.21/0052-USB-option-fix-port-data-abuse.patch \ | ||
1433 | file://3.2.21/0053-USB-option-fix-memory-leak.patch \ | ||
1434 | file://3.2.21/0054-USB-option-add-more-YUGA-device-ids.patch \ | ||
1435 | file://3.2.21/0055-target-Return-error-to-initiator-if-SET-TARGET-PORT-.patch \ | ||
1436 | file://3.2.21/0056-USB-add-NO_D3_DURING_SLEEP-flag-and-revert-151b61284.patch \ | ||
1437 | file://3.2.21/0057-USB-serial-Enforce-USB-driver-and-USB-serial-driver-.patch \ | ||
1438 | file://3.2.21/0058-xhci-Fix-invalid-loop-check-in-xhci_free_tt_info.patch \ | ||
1439 | file://3.2.21/0059-xhci-Don-t-free-endpoints-in-xhci_mem_cleanup.patch \ | ||
1440 | file://3.2.21/0060-xHCI-Increase-the-timeout-for-controller-save-restor.patch \ | ||
1441 | file://3.2.21/0061-usb-PS3-EHCI-QH-read-work-around.patch \ | ||
1442 | file://3.2.21/0062-USB-fix-PS3-EHCI-systems.patch \ | ||
1443 | file://3.2.21/0063-usb-cdc-acm-fix-devices-not-unthrottled-on-open.patch \ | ||
1444 | file://3.2.21/0064-USB-fix-gathering-of-interface-associations.patch \ | ||
1445 | file://3.2.21/0065-swap-fix-shmem-swapping-when-more-than-8-areas.patch \ | ||
1446 | file://3.2.21/0066-drm-radeon-add-some-additional-6xx-7xx-EG-register-i.patch \ | ||
1447 | file://3.2.21/0067-Linux-3.2.21.patch \ | ||
1177 | file://led/0001-leds-heartbeat-stop-on-shutdown-reboot-or-panic.patch \ | 1448 | file://led/0001-leds-heartbeat-stop-on-shutdown-reboot-or-panic.patch \ |
1449 | file://libertas/0001-USB-convert-drivers-net-to-use-module_usb_driver.patch \ | ||
1450 | file://libertas/0002-net-fix-assignment-of-0-1-to-bool-variables.patch \ | ||
1451 | file://libertas/0003-switch-debugfs-to-umode_t.patch \ | ||
1452 | file://libertas/0004-drivers-net-Remove-unnecessary-k.alloc-v.alloc-OOM-m.patch \ | ||
1453 | file://libertas/0005-libertas-remove-dump_survey-implementation.patch \ | ||
1454 | file://libertas/0006-wireless-libertas-remove-redundant-NULL-tests-before.patch \ | ||
1455 | file://libertas/0007-libertas-fix-signedness-bug-in-lbs_auth_to_authtype.patch \ | ||
1456 | file://libertas/0008-drivers-net-wireless-libertas-if_usb.c-add-missing-d.patch \ | ||
1457 | file://libertas/0009-libertas-Firmware-loading-simplifications.patch \ | ||
1458 | file://libertas/0010-libertas-harden-up-exit-paths.patch \ | ||
1459 | file://libertas/0011-libertas-add-asynchronous-firmware-loading-capabilit.patch \ | ||
1460 | file://libertas/0012-libertas-SDIO-convert-to-asynchronous-firmware-loadi.patch \ | ||
1461 | file://libertas/0013-libertas-USB-convert-to-asynchronous-firmware-loadin.patch \ | ||
1462 | file://libertas/0014-libertas-CS-convert-to-asynchronous-firmware-loading.patch \ | ||
1463 | file://libertas/0015-libertas-add-missing-include.patch \ | ||
1464 | file://libertas/0016-remove-debug-msgs-due-to-missing-in_interrupt.patch \ | ||
1178 | \ | 1465 | \ |
1179 | file://beaglebone/0001-arm-boot-compressed-default-asm-arch-to-armv7-a.patch \ | 1466 | file://beaglebone/0001-arm-boot-compressed-default-asm-arch-to-armv7-a.patch \ |
1180 | \ | 1467 | \ |
@@ -1248,4 +1535,5 @@ PATCHES_OVER_PSP = " \ | |||
1248 | file://beaglebone/0068-beaglebone-add-support-for-the-4.3-lcd-cape-with-res.patch \ | 1535 | file://beaglebone/0068-beaglebone-add-support-for-the-4.3-lcd-cape-with-res.patch \ |
1249 | file://beaglebone/0069-beaglebone-add-support-for-LCD3-rev-A1.patch \ | 1536 | file://beaglebone/0069-beaglebone-add-support-for-LCD3-rev-A1.patch \ |
1250 | file://beaglebone/0070-beaglebone-fix-buttons-spidev-clash-when-using-mcasp.patch \ | 1537 | file://beaglebone/0070-beaglebone-fix-buttons-spidev-clash-when-using-mcasp.patch \ |
1538 | file://beaglebone/0071-beaglebone-fix-LCD3-led-key-overlap.patch \ | ||
1251 | " | 1539 | " |