]>
Commit | Line | Data |
---|---|---|
9c6fd700 GKH |
1 | From a5d906bb261cde5f881a949d3b0fbaa285dcc574 Mon Sep 17 00:00:00 2001 |
2 | From: Peter Chen <peter.chen@nxp.com> | |
3 | Date: Tue, 15 Nov 2016 18:05:33 +0800 | |
4 | Subject: usb: chipidea: move the lock initialization to core file | |
5 | ||
6 | From: Peter Chen <peter.chen@nxp.com> | |
7 | ||
8 | commit a5d906bb261cde5f881a949d3b0fbaa285dcc574 upstream. | |
9 | ||
10 | This can fix below dump when the lock is accessed at host | |
11 | mode due to it is not initialized. | |
12 | ||
13 | [ 46.119638] INFO: trying to register non-static key. | |
14 | [ 46.124643] the code is fine but needs lockdep annotation. | |
15 | [ 46.130144] turning off the locking correctness validator. | |
16 | [ 46.135659] CPU: 0 PID: 690 Comm: cat Not tainted 4.9.0-rc3-00079-g4b75f1d #1210 | |
17 | [ 46.143075] Hardware name: Freescale i.MX6 SoloX (Device Tree) | |
18 | [ 46.148923] Backtrace: | |
19 | [ 46.151448] [<c010c460>] (dump_backtrace) from [<c010c658>] (show_stack+0x18/0x1c) | |
20 | [ 46.159038] r7:edf52000 | |
21 | [ 46.161412] r6:60000193 | |
22 | [ 46.163967] r5:00000000 | |
23 | [ 46.165035] r4:c0e25c2c | |
24 | ||
25 | [ 46.169109] [<c010c640>] (show_stack) from [<c03f58a4>] (dump_stack+0xb4/0xe8) | |
26 | [ 46.176362] [<c03f57f0>] (dump_stack) from [<c016d690>] (register_lock_class+0x4fc/0x56c) | |
27 | [ 46.184554] r10:c0e25d24 | |
28 | [ 46.187014] r9:edf53e70 | |
29 | [ 46.189569] r8:c1642444 | |
30 | [ 46.190637] r7:ee9da024 | |
31 | [ 46.193191] r6:00000000 | |
32 | [ 46.194258] r5:00000000 | |
33 | [ 46.196812] r4:00000000 | |
34 | [ 46.199185] r3:00000001 | |
35 | ||
36 | [ 46.203259] [<c016d194>] (register_lock_class) from [<c0171294>] (__lock_acquire+0x80/0x10f0) | |
37 | [ 46.211797] r10:c0e25d24 | |
38 | [ 46.214257] r9:edf53e70 | |
39 | [ 46.216813] r8:ee9da024 | |
40 | [ 46.217880] r7:c1642444 | |
41 | [ 46.220435] r6:edcd1800 | |
42 | [ 46.221502] r5:60000193 | |
43 | [ 46.224057] r4:00000000 | |
44 | ||
45 | [ 46.227953] [<c0171214>] (__lock_acquire) from [<c01726c0>] (lock_acquire+0x74/0x94) | |
46 | [ 46.235710] r10:00000001 | |
47 | [ 46.238169] r9:edf53e70 | |
48 | [ 46.240723] r8:edf53f80 | |
49 | [ 46.241790] r7:00000001 | |
50 | [ 46.244344] r6:00000001 | |
51 | [ 46.245412] r5:60000193 | |
52 | [ 46.247966] r4:00000000 | |
53 | ||
54 | [ 46.251866] [<c017264c>] (lock_acquire) from [<c096c8fc>] (_raw_spin_lock_irqsave+0x40/0x54) | |
55 | [ 46.260319] r7:ee1c6a00 | |
56 | [ 46.262691] r6:c062a570 | |
57 | [ 46.265247] r5:20000113 | |
58 | [ 46.266314] r4:ee9da014 | |
59 | ||
60 | [ 46.270393] [<c096c8bc>] (_raw_spin_lock_irqsave) from [<c062a570>] (ci_port_test_show+0x2c/0x70) | |
61 | [ 46.279280] r6:eebd2000 | |
62 | [ 46.281652] r5:ee9da010 | |
63 | [ 46.284207] r4:ee9da014 | |
64 | ||
65 | [ 46.286810] [<c062a544>] (ci_port_test_show) from [<c0248d04>] (seq_read+0x1ac/0x4f8) | |
66 | [ 46.294655] r9:edf53e70 | |
67 | [ 46.297028] r8:edf53f80 | |
68 | [ 46.299583] r7:ee1c6a00 | |
69 | [ 46.300650] r6:00000001 | |
70 | [ 46.303205] r5:00000000 | |
71 | [ 46.304273] r4:eebd2000 | |
72 | [ 46.306850] [<c0248b58>] (seq_read) from [<c039e864>] (full_proxy_read+0x54/0x6c) | |
73 | [ 46.314348] r10:00000000 | |
74 | [ 46.316808] r9:c0a6ad30 | |
75 | [ 46.319363] r8:edf53f80 | |
76 | [ 46.320430] r7:00020000 | |
77 | [ 46.322986] r6:b6de3000 | |
78 | [ 46.324053] r5:ee1c6a00 | |
79 | [ 46.326607] r4:c0248b58 | |
80 | ||
81 | [ 46.330505] [<c039e810>] (full_proxy_read) from [<c021ec98>] (__vfs_read+0x34/0x118) | |
82 | [ 46.338262] r9:edf52000 | |
83 | [ 46.340635] r8:c0107fc4 | |
84 | [ 46.343190] r7:00020000 | |
85 | [ 46.344257] r6:edf53f80 | |
86 | [ 46.346812] r5:c039e810 | |
87 | [ 46.347879] r4:ee1c6a00 | |
88 | [ 46.350447] [<c021ec64>] (__vfs_read) from [<c021fbd0>] (vfs_read+0x8c/0x11c) | |
89 | [ 46.357597] r9:edf52000 | |
90 | [ 46.359969] r8:c0107fc4 | |
91 | [ 46.362524] r7:edf53f80 | |
92 | [ 46.363592] r6:b6de3000 | |
93 | [ 46.366147] r5:ee1c6a00 | |
94 | [ 46.367214] r4:00020000 | |
95 | [ 46.369782] [<c021fb44>] (vfs_read) from [<c0220a4c>] (SyS_read+0x4c/0xa8) | |
96 | [ 46.376672] r8:c0107fc4 | |
97 | [ 46.379045] r7:00020000 | |
98 | [ 46.381600] r6:b6de3000 | |
99 | [ 46.382667] r5:ee1c6a00 | |
100 | [ 46.385222] r4:ee1c6a00 | |
101 | ||
102 | [ 46.387817] [<c0220a00>] (SyS_read) from [<c0107e20>] (ret_fast_syscall+0x0/0x1c) | |
103 | [ 46.395314] r7:00000003 | |
104 | [ 46.397687] r6:b6de3000 | |
105 | [ 46.400243] r5:00020000 | |
106 | [ 46.401310] r4:00020000 | |
107 | ||
108 | Fixes: 26c696c678c4 ("USB: Chipidea: rename struct ci13xxx variables from udc to ci") | |
109 | Signed-off-by: Peter Chen <peter.chen@nxp.com> | |
110 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | |
111 | ||
112 | --- | |
113 | drivers/usb/chipidea/core.c | 1 + | |
114 | drivers/usb/chipidea/udc.c | 2 -- | |
115 | 2 files changed, 1 insertion(+), 2 deletions(-) | |
116 | ||
117 | --- a/drivers/usb/chipidea/core.c | |
118 | +++ b/drivers/usb/chipidea/core.c | |
119 | @@ -926,6 +926,7 @@ static int ci_hdrc_probe(struct platform | |
120 | if (!ci) | |
121 | return -ENOMEM; | |
122 | ||
123 | + spin_lock_init(&ci->lock); | |
124 | ci->dev = dev; | |
125 | ci->platdata = dev_get_platdata(dev); | |
126 | ci->imx28_write_fix = !!(ci->platdata->flags & | |
127 | --- a/drivers/usb/chipidea/udc.c | |
128 | +++ b/drivers/usb/chipidea/udc.c | |
129 | @@ -1884,8 +1884,6 @@ static int udc_start(struct ci_hdrc *ci) | |
130 | struct usb_otg_caps *otg_caps = &ci->platdata->ci_otg_caps; | |
131 | int retval = 0; | |
132 | ||
133 | - spin_lock_init(&ci->lock); | |
134 | - | |
135 | ci->gadget.ops = &usb_gadget_ops; | |
136 | ci->gadget.speed = USB_SPEED_UNKNOWN; | |
137 | ci->gadget.max_speed = USB_SPEED_HIGH; |