forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-10 61598093bbdd283a7edc367d900f223070ead8d2
kernel/drivers/scsi/qla2xxx/qla_dbg.c
....@@ -1,8 +1,7 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * QLogic Fibre Channel HBA Driver
34 * Copyright (c) 2003-2014 QLogic Corporation
4
- *
5
- * See LICENSE.qla2xxx for copyright and licensing details.
65 */
76
87 /*
....@@ -11,26 +10,19 @@
1110 * ----------------------------------------------------------------------
1211 * | Level | Last Value Used | Holes |
1312 * ----------------------------------------------------------------------
14
- * | Module Init and Probe | 0x0193 | 0x0146 |
15
- * | | | 0x015b-0x0160 |
16
- * | | | 0x016e |
17
- * | Mailbox commands | 0x1206 | 0x11a2-0x11ff |
18
- * | Device Discovery | 0x2134 | 0x210e-0x2116 |
19
- * | | | 0x211a |
13
+ * | Module Init and Probe | 0x0199 | |
14
+ * | Mailbox commands | 0x1206 | 0x11a5-0x11ff |
15
+ * | Device Discovery | 0x2134 | 0x210e-0x2115 |
2016 * | | | 0x211c-0x2128 |
21
- * | | | 0x212a-0x2130 |
17
+ * | | | 0x212c-0x2134 |
2218 * | Queue Command and IO tracing | 0x3074 | 0x300b |
2319 * | | | 0x3027-0x3028 |
2420 * | | | 0x303d-0x3041 |
25
- * | | | 0x302d,0x3033 |
21
+ * | | | 0x302e,0x3033 |
2622 * | | | 0x3036,0x3038 |
2723 * | | | 0x303a |
2824 * | DPC Thread | 0x4023 | 0x4002,0x4013 |
29
- * | Async Events | 0x5090 | 0x502b-0x502f |
30
- * | | | 0x5047 |
31
- * | | | 0x5084,0x5075 |
32
- * | | | 0x503d,0x5044 |
33
- * | | | 0x505f |
25
+ * | Async Events | 0x509c | |
3426 * | Timer Routines | 0x6012 | |
3527 * | User Space Interactions | 0x70e3 | 0x7018,0x702e |
3628 * | | | 0x7020,0x7024 |
....@@ -73,6 +65,8 @@
7365 #include "qla_def.h"
7466
7567 #include <linux/delay.h>
68
+#define CREATE_TRACE_POINTS
69
+#include <trace/events/qla.h>
7670
7771 static uint32_t ql_dbg_offset = 0x800;
7872
....@@ -111,162 +105,175 @@
111105 qla27xx_dump_mpi_ram(struct qla_hw_data *ha, uint32_t addr, uint32_t *ram,
112106 uint32_t ram_dwords, void **nxt)
113107 {
114
- int rval;
115
- uint32_t cnt, stat, timer, dwords, idx;
116
- uint16_t mb0;
117108 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24;
118109 dma_addr_t dump_dma = ha->gid_list_dma;
119
- uint32_t *dump = (uint32_t *)ha->gid_list;
110
+ uint32_t *chunk = (uint32_t *)ha->gid_list;
111
+ uint32_t dwords = qla2x00_gid_list_size(ha) / 4;
112
+ uint32_t stat;
113
+ ulong i, j, timer = 6000000;
114
+ int rval = QLA_FUNCTION_FAILED;
115
+ scsi_qla_host_t *vha = pci_get_drvdata(ha->pdev);
120116
121
- rval = QLA_SUCCESS;
122
- mb0 = 0;
123
-
124
- WRT_REG_WORD(&reg->mailbox0, MBC_LOAD_DUMP_MPI_RAM);
125117 clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
126118
127
- dwords = qla2x00_gid_list_size(ha) / 4;
128
- for (cnt = 0; cnt < ram_dwords && rval == QLA_SUCCESS;
129
- cnt += dwords, addr += dwords) {
130
- if (cnt + dwords > ram_dwords)
131
- dwords = ram_dwords - cnt;
119
+ if (qla_pci_disconnected(vha, reg))
120
+ return rval;
132121
133
- WRT_REG_WORD(&reg->mailbox1, LSW(addr));
134
- WRT_REG_WORD(&reg->mailbox8, MSW(addr));
122
+ for (i = 0; i < ram_dwords; i += dwords, addr += dwords) {
123
+ if (i + dwords > ram_dwords)
124
+ dwords = ram_dwords - i;
135125
136
- WRT_REG_WORD(&reg->mailbox2, MSW(dump_dma));
137
- WRT_REG_WORD(&reg->mailbox3, LSW(dump_dma));
138
- WRT_REG_WORD(&reg->mailbox6, MSW(MSD(dump_dma)));
139
- WRT_REG_WORD(&reg->mailbox7, LSW(MSD(dump_dma)));
126
+ wrt_reg_word(&reg->mailbox0, MBC_LOAD_DUMP_MPI_RAM);
127
+ wrt_reg_word(&reg->mailbox1, LSW(addr));
128
+ wrt_reg_word(&reg->mailbox8, MSW(addr));
140129
141
- WRT_REG_WORD(&reg->mailbox4, MSW(dwords));
142
- WRT_REG_WORD(&reg->mailbox5, LSW(dwords));
130
+ wrt_reg_word(&reg->mailbox2, MSW(LSD(dump_dma)));
131
+ wrt_reg_word(&reg->mailbox3, LSW(LSD(dump_dma)));
132
+ wrt_reg_word(&reg->mailbox6, MSW(MSD(dump_dma)));
133
+ wrt_reg_word(&reg->mailbox7, LSW(MSD(dump_dma)));
143134
144
- WRT_REG_WORD(&reg->mailbox9, 0);
145
- WRT_REG_DWORD(&reg->hccr, HCCRX_SET_HOST_INT);
135
+ wrt_reg_word(&reg->mailbox4, MSW(dwords));
136
+ wrt_reg_word(&reg->mailbox5, LSW(dwords));
137
+
138
+ wrt_reg_word(&reg->mailbox9, 0);
139
+ wrt_reg_dword(&reg->hccr, HCCRX_SET_HOST_INT);
146140
147141 ha->flags.mbox_int = 0;
148
- for (timer = 6000000; timer; timer--) {
142
+ while (timer--) {
143
+ udelay(5);
144
+
145
+ if (qla_pci_disconnected(vha, reg))
146
+ return rval;
147
+
148
+ stat = rd_reg_dword(&reg->host_status);
149149 /* Check for pending interrupts. */
150
- stat = RD_REG_DWORD(&reg->host_status);
151
- if (stat & HSRX_RISC_INT) {
152
- stat &= 0xff;
150
+ if (!(stat & HSRX_RISC_INT))
151
+ continue;
153152
154
- if (stat == 0x1 || stat == 0x2 ||
155
- stat == 0x10 || stat == 0x11) {
156
- set_bit(MBX_INTERRUPT,
157
- &ha->mbx_cmd_flags);
158
-
159
- mb0 = RD_REG_WORD(&reg->mailbox0);
160
- RD_REG_WORD(&reg->mailbox1);
161
-
162
- WRT_REG_DWORD(&reg->hccr,
163
- HCCRX_CLR_RISC_INT);
164
- RD_REG_DWORD(&reg->hccr);
165
- break;
166
- }
153
+ stat &= 0xff;
154
+ if (stat != 0x1 && stat != 0x2 &&
155
+ stat != 0x10 && stat != 0x11) {
167156
168157 /* Clear this intr; it wasn't a mailbox intr */
169
- WRT_REG_DWORD(&reg->hccr, HCCRX_CLR_RISC_INT);
170
- RD_REG_DWORD(&reg->hccr);
158
+ wrt_reg_dword(&reg->hccr, HCCRX_CLR_RISC_INT);
159
+ rd_reg_dword(&reg->hccr);
160
+ continue;
171161 }
172
- udelay(5);
162
+
163
+ set_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
164
+ rval = rd_reg_word(&reg->mailbox0) & MBS_MASK;
165
+ wrt_reg_dword(&reg->hccr, HCCRX_CLR_RISC_INT);
166
+ rd_reg_dword(&reg->hccr);
167
+ break;
173168 }
174169 ha->flags.mbox_int = 1;
170
+ *nxt = ram + i;
175171
176
- if (test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) {
177
- rval = mb0 & MBS_MASK;
178
- for (idx = 0; idx < dwords; idx++)
179
- ram[cnt + idx] = IS_QLA27XX(ha) ?
180
- le32_to_cpu(dump[idx]) : swab32(dump[idx]);
181
- } else {
182
- rval = QLA_FUNCTION_FAILED;
172
+ if (!test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) {
173
+ /* no interrupt, timed out*/
174
+ return rval;
175
+ }
176
+ if (rval) {
177
+ /* error completion status */
178
+ return rval;
179
+ }
180
+ for (j = 0; j < dwords; j++) {
181
+ ram[i + j] =
182
+ (IS_QLA27XX(ha) || IS_QLA28XX(ha)) ?
183
+ chunk[j] : swab32(chunk[j]);
183184 }
184185 }
185186
186
- *nxt = rval == QLA_SUCCESS ? &ram[cnt] : NULL;
187
- return rval;
187
+ *nxt = ram + i;
188
+ return QLA_SUCCESS;
188189 }
189190
190191 int
191
-qla24xx_dump_ram(struct qla_hw_data *ha, uint32_t addr, uint32_t *ram,
192
- uint32_t ram_dwords, void **nxt)
192
+qla24xx_dump_ram(struct qla_hw_data *ha, uint32_t addr, __be32 *ram,
193
+ uint32_t ram_dwords, void **nxt)
193194 {
194
- int rval;
195
- uint32_t cnt, stat, timer, dwords, idx;
196
- uint16_t mb0;
195
+ int rval = QLA_FUNCTION_FAILED;
197196 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24;
198197 dma_addr_t dump_dma = ha->gid_list_dma;
199
- uint32_t *dump = (uint32_t *)ha->gid_list;
198
+ uint32_t *chunk = (uint32_t *)ha->gid_list;
199
+ uint32_t dwords = qla2x00_gid_list_size(ha) / 4;
200
+ uint32_t stat;
201
+ ulong i, j, timer = 6000000;
202
+ scsi_qla_host_t *vha = pci_get_drvdata(ha->pdev);
200203
201
- rval = QLA_SUCCESS;
202
- mb0 = 0;
203
-
204
- WRT_REG_WORD(&reg->mailbox0, MBC_DUMP_RISC_RAM_EXTENDED);
205204 clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
206205
207
- dwords = qla2x00_gid_list_size(ha) / 4;
208
- for (cnt = 0; cnt < ram_dwords && rval == QLA_SUCCESS;
209
- cnt += dwords, addr += dwords) {
210
- if (cnt + dwords > ram_dwords)
211
- dwords = ram_dwords - cnt;
206
+ if (qla_pci_disconnected(vha, reg))
207
+ return rval;
212208
213
- WRT_REG_WORD(&reg->mailbox1, LSW(addr));
214
- WRT_REG_WORD(&reg->mailbox8, MSW(addr));
209
+ for (i = 0; i < ram_dwords; i += dwords, addr += dwords) {
210
+ if (i + dwords > ram_dwords)
211
+ dwords = ram_dwords - i;
215212
216
- WRT_REG_WORD(&reg->mailbox2, MSW(dump_dma));
217
- WRT_REG_WORD(&reg->mailbox3, LSW(dump_dma));
218
- WRT_REG_WORD(&reg->mailbox6, MSW(MSD(dump_dma)));
219
- WRT_REG_WORD(&reg->mailbox7, LSW(MSD(dump_dma)));
213
+ wrt_reg_word(&reg->mailbox0, MBC_DUMP_RISC_RAM_EXTENDED);
214
+ wrt_reg_word(&reg->mailbox1, LSW(addr));
215
+ wrt_reg_word(&reg->mailbox8, MSW(addr));
216
+ wrt_reg_word(&reg->mailbox10, 0);
220217
221
- WRT_REG_WORD(&reg->mailbox4, MSW(dwords));
222
- WRT_REG_WORD(&reg->mailbox5, LSW(dwords));
223
- WRT_REG_DWORD(&reg->hccr, HCCRX_SET_HOST_INT);
218
+ wrt_reg_word(&reg->mailbox2, MSW(LSD(dump_dma)));
219
+ wrt_reg_word(&reg->mailbox3, LSW(LSD(dump_dma)));
220
+ wrt_reg_word(&reg->mailbox6, MSW(MSD(dump_dma)));
221
+ wrt_reg_word(&reg->mailbox7, LSW(MSD(dump_dma)));
222
+
223
+ wrt_reg_word(&reg->mailbox4, MSW(dwords));
224
+ wrt_reg_word(&reg->mailbox5, LSW(dwords));
225
+ wrt_reg_dword(&reg->hccr, HCCRX_SET_HOST_INT);
224226
225227 ha->flags.mbox_int = 0;
226
- for (timer = 6000000; timer; timer--) {
227
- /* Check for pending interrupts. */
228
- stat = RD_REG_DWORD(&reg->host_status);
229
- if (stat & HSRX_RISC_INT) {
230
- stat &= 0xff;
231
-
232
- if (stat == 0x1 || stat == 0x2 ||
233
- stat == 0x10 || stat == 0x11) {
234
- set_bit(MBX_INTERRUPT,
235
- &ha->mbx_cmd_flags);
236
-
237
- mb0 = RD_REG_WORD(&reg->mailbox0);
238
-
239
- WRT_REG_DWORD(&reg->hccr,
240
- HCCRX_CLR_RISC_INT);
241
- RD_REG_DWORD(&reg->hccr);
242
- break;
243
- }
244
-
245
- /* Clear this intr; it wasn't a mailbox intr */
246
- WRT_REG_DWORD(&reg->hccr, HCCRX_CLR_RISC_INT);
247
- RD_REG_DWORD(&reg->hccr);
248
- }
228
+ while (timer--) {
249229 udelay(5);
230
+ if (qla_pci_disconnected(vha, reg))
231
+ return rval;
232
+
233
+ stat = rd_reg_dword(&reg->host_status);
234
+ /* Check for pending interrupts. */
235
+ if (!(stat & HSRX_RISC_INT))
236
+ continue;
237
+
238
+ stat &= 0xff;
239
+ if (stat != 0x1 && stat != 0x2 &&
240
+ stat != 0x10 && stat != 0x11) {
241
+ wrt_reg_dword(&reg->hccr, HCCRX_CLR_RISC_INT);
242
+ rd_reg_dword(&reg->hccr);
243
+ continue;
244
+ }
245
+
246
+ set_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
247
+ rval = rd_reg_word(&reg->mailbox0) & MBS_MASK;
248
+ wrt_reg_dword(&reg->hccr, HCCRX_CLR_RISC_INT);
249
+ rd_reg_dword(&reg->hccr);
250
+ break;
250251 }
251252 ha->flags.mbox_int = 1;
253
+ *nxt = ram + i;
252254
253
- if (test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) {
254
- rval = mb0 & MBS_MASK;
255
- for (idx = 0; idx < dwords; idx++)
256
- ram[cnt + idx] = IS_QLA27XX(ha) ?
257
- le32_to_cpu(dump[idx]) : swab32(dump[idx]);
258
- } else {
259
- rval = QLA_FUNCTION_FAILED;
255
+ if (!test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) {
256
+ /* no interrupt, timed out*/
257
+ return rval;
258
+ }
259
+ if (rval) {
260
+ /* error completion status */
261
+ return rval;
262
+ }
263
+ for (j = 0; j < dwords; j++) {
264
+ ram[i + j] = (__force __be32)
265
+ ((IS_QLA27XX(ha) || IS_QLA28XX(ha)) ?
266
+ chunk[j] : swab32(chunk[j]));
260267 }
261268 }
262269
263
- *nxt = rval == QLA_SUCCESS ? &ram[cnt]: NULL;
264
- return rval;
270
+ *nxt = ram + i;
271
+ return QLA_SUCCESS;
265272 }
266273
267274 static int
268
-qla24xx_dump_memory(struct qla_hw_data *ha, uint32_t *code_ram,
269
- uint32_t cram_size, void **nxt)
275
+qla24xx_dump_memory(struct qla_hw_data *ha, __be32 *code_ram,
276
+ uint32_t cram_size, void **nxt)
270277 {
271278 int rval;
272279
....@@ -286,16 +293,16 @@
286293 return rval;
287294 }
288295
289
-static uint32_t *
296
+static __be32 *
290297 qla24xx_read_window(struct device_reg_24xx __iomem *reg, uint32_t iobase,
291
- uint32_t count, uint32_t *buf)
298
+ uint32_t count, __be32 *buf)
292299 {
293
- uint32_t __iomem *dmp_reg;
300
+ __le32 __iomem *dmp_reg;
294301
295
- WRT_REG_DWORD(&reg->iobase_addr, iobase);
302
+ wrt_reg_dword(&reg->iobase_addr, iobase);
296303 dmp_reg = &reg->iobase_window;
297304 for ( ; count--; dmp_reg++)
298
- *buf++ = htonl(RD_REG_DWORD(dmp_reg));
305
+ *buf++ = htonl(rd_reg_dword(dmp_reg));
299306
300307 return buf;
301308 }
....@@ -303,11 +310,11 @@
303310 void
304311 qla24xx_pause_risc(struct device_reg_24xx __iomem *reg, struct qla_hw_data *ha)
305312 {
306
- WRT_REG_DWORD(&reg->hccr, HCCRX_SET_RISC_PAUSE);
313
+ wrt_reg_dword(&reg->hccr, HCCRX_SET_RISC_PAUSE);
307314
308315 /* 100 usec delay is sufficient enough for hardware to pause RISC */
309316 udelay(100);
310
- if (RD_REG_DWORD(&reg->host_status) & HSRX_RISC_PAUSED)
317
+ if (rd_reg_dword(&reg->host_status) & HSRX_RISC_PAUSED)
311318 set_bit(RISC_PAUSE_CMPL, &ha->fw_dump_cap_flags);
312319 }
313320
....@@ -324,17 +331,17 @@
324331 * Driver can proceed with the reset sequence after waiting
325332 * for a timeout period.
326333 */
327
- WRT_REG_DWORD(&reg->ctrl_status, CSRX_DMA_SHUTDOWN|MWB_4096_BYTES);
334
+ wrt_reg_dword(&reg->ctrl_status, CSRX_DMA_SHUTDOWN|MWB_4096_BYTES);
328335 for (cnt = 0; cnt < 30000; cnt++) {
329
- if ((RD_REG_DWORD(&reg->ctrl_status) & CSRX_DMA_ACTIVE) == 0)
336
+ if ((rd_reg_dword(&reg->ctrl_status) & CSRX_DMA_ACTIVE) == 0)
330337 break;
331338
332339 udelay(10);
333340 }
334
- if (!(RD_REG_DWORD(&reg->ctrl_status) & CSRX_DMA_ACTIVE))
341
+ if (!(rd_reg_dword(&reg->ctrl_status) & CSRX_DMA_ACTIVE))
335342 set_bit(DMA_SHUTDOWN_CMPL, &ha->fw_dump_cap_flags);
336343
337
- WRT_REG_DWORD(&reg->ctrl_status,
344
+ wrt_reg_dword(&reg->ctrl_status,
338345 CSRX_ISP_SOFT_RESET|CSRX_DMA_SHUTDOWN|MWB_4096_BYTES);
339346 pci_read_config_word(ha->pdev, PCI_COMMAND, &wd);
340347
....@@ -342,19 +349,19 @@
342349
343350 /* Wait for soft-reset to complete. */
344351 for (cnt = 0; cnt < 30000; cnt++) {
345
- if ((RD_REG_DWORD(&reg->ctrl_status) &
352
+ if ((rd_reg_dword(&reg->ctrl_status) &
346353 CSRX_ISP_SOFT_RESET) == 0)
347354 break;
348355
349356 udelay(10);
350357 }
351
- if (!(RD_REG_DWORD(&reg->ctrl_status) & CSRX_ISP_SOFT_RESET))
358
+ if (!(rd_reg_dword(&reg->ctrl_status) & CSRX_ISP_SOFT_RESET))
352359 set_bit(ISP_RESET_CMPL, &ha->fw_dump_cap_flags);
353360
354
- WRT_REG_DWORD(&reg->hccr, HCCRX_CLR_RISC_RESET);
355
- RD_REG_DWORD(&reg->hccr); /* PCI Posting. */
361
+ wrt_reg_dword(&reg->hccr, HCCRX_CLR_RISC_RESET);
362
+ rd_reg_dword(&reg->hccr); /* PCI Posting. */
356363
357
- for (cnt = 10000; RD_REG_WORD(&reg->mailbox0) != 0 &&
364
+ for (cnt = 10000; rd_reg_word(&reg->mailbox0) != 0 &&
358365 rval == QLA_SUCCESS; cnt--) {
359366 if (cnt)
360367 udelay(10);
....@@ -368,7 +375,7 @@
368375 }
369376
370377 static int
371
-qla2xxx_dump_ram(struct qla_hw_data *ha, uint32_t addr, uint16_t *ram,
378
+qla2xxx_dump_ram(struct qla_hw_data *ha, uint32_t addr, __be16 *ram,
372379 uint32_t ram_words, void **nxt)
373380 {
374381 int rval;
....@@ -376,7 +383,7 @@
376383 uint16_t mb0;
377384 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp;
378385 dma_addr_t dump_dma = ha->gid_list_dma;
379
- uint16_t *dump = (uint16_t *)ha->gid_list;
386
+ __le16 *dump = (__force __le16 *)ha->gid_list;
380387
381388 rval = QLA_SUCCESS;
382389 mb0 = 0;
....@@ -399,11 +406,11 @@
399406 WRT_MAILBOX_REG(ha, reg, 7, LSW(MSD(dump_dma)));
400407
401408 WRT_MAILBOX_REG(ha, reg, 4, words);
402
- WRT_REG_WORD(&reg->hccr, HCCR_SET_HOST_INT);
409
+ wrt_reg_word(&reg->hccr, HCCR_SET_HOST_INT);
403410
404411 for (timer = 6000000; timer; timer--) {
405412 /* Check for pending interrupts. */
406
- stat = RD_REG_DWORD(&reg->u.isp2300.host_status);
413
+ stat = rd_reg_dword(&reg->u.isp2300.host_status);
407414 if (stat & HSR_RISC_INT) {
408415 stat &= 0xff;
409416
....@@ -414,10 +421,10 @@
414421 mb0 = RD_MAILBOX_REG(ha, reg, 0);
415422
416423 /* Release mailbox registers. */
417
- WRT_REG_WORD(&reg->semaphore, 0);
418
- WRT_REG_WORD(&reg->hccr,
424
+ wrt_reg_word(&reg->semaphore, 0);
425
+ wrt_reg_word(&reg->hccr,
419426 HCCR_CLR_RISC_INT);
420
- RD_REG_WORD(&reg->hccr);
427
+ rd_reg_word(&reg->hccr);
421428 break;
422429 } else if (stat == 0x10 || stat == 0x11) {
423430 set_bit(MBX_INTERRUPT,
....@@ -425,15 +432,15 @@
425432
426433 mb0 = RD_MAILBOX_REG(ha, reg, 0);
427434
428
- WRT_REG_WORD(&reg->hccr,
435
+ wrt_reg_word(&reg->hccr,
429436 HCCR_CLR_RISC_INT);
430
- RD_REG_WORD(&reg->hccr);
437
+ rd_reg_word(&reg->hccr);
431438 break;
432439 }
433440
434441 /* clear this intr; it wasn't a mailbox intr */
435
- WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT);
436
- RD_REG_WORD(&reg->hccr);
442
+ wrt_reg_word(&reg->hccr, HCCR_CLR_RISC_INT);
443
+ rd_reg_word(&reg->hccr);
437444 }
438445 udelay(5);
439446 }
....@@ -441,24 +448,25 @@
441448 if (test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) {
442449 rval = mb0 & MBS_MASK;
443450 for (idx = 0; idx < words; idx++)
444
- ram[cnt + idx] = swab16(dump[idx]);
451
+ ram[cnt + idx] =
452
+ cpu_to_be16(le16_to_cpu(dump[idx]));
445453 } else {
446454 rval = QLA_FUNCTION_FAILED;
447455 }
448456 }
449457
450
- *nxt = rval == QLA_SUCCESS ? &ram[cnt]: NULL;
458
+ *nxt = rval == QLA_SUCCESS ? &ram[cnt] : NULL;
451459 return rval;
452460 }
453461
454462 static inline void
455463 qla2xxx_read_window(struct device_reg_2xxx __iomem *reg, uint32_t count,
456
- uint16_t *buf)
464
+ __be16 *buf)
457465 {
458
- uint16_t __iomem *dmp_reg = &reg->u.isp2300.fb_cmd;
466
+ __le16 __iomem *dmp_reg = &reg->u.isp2300.fb_cmd;
459467
460468 for ( ; count--; dmp_reg++)
461
- *buf++ = htons(RD_REG_WORD(dmp_reg));
469
+ *buf++ = htons(rd_reg_word(dmp_reg));
462470 }
463471
464472 static inline void *
....@@ -472,10 +480,10 @@
472480 }
473481
474482 static inline void *
475
-qla25xx_copy_fce(struct qla_hw_data *ha, void *ptr, uint32_t **last_chain)
483
+qla25xx_copy_fce(struct qla_hw_data *ha, void *ptr, __be32 **last_chain)
476484 {
477485 uint32_t cnt;
478
- uint32_t *iter_reg;
486
+ __be32 *iter_reg;
479487 struct qla2xxx_fce_chain *fcec = ptr;
480488
481489 if (!ha->fce)
....@@ -499,7 +507,7 @@
499507 }
500508
501509 static inline void *
502
-qla25xx_copy_exlogin(struct qla_hw_data *ha, void *ptr, uint32_t **last_chain)
510
+qla25xx_copy_exlogin(struct qla_hw_data *ha, void *ptr, __be32 **last_chain)
503511 {
504512 struct qla2xxx_offld_chain *c = ptr;
505513
....@@ -517,11 +525,11 @@
517525 ptr += sizeof(struct qla2xxx_offld_chain);
518526 memcpy(ptr, ha->exlogin_buf, ha->exlogin_size);
519527
520
- return (char *)ptr + cpu_to_be32(c->size);
528
+ return (char *)ptr + be32_to_cpu(c->size);
521529 }
522530
523531 static inline void *
524
-qla81xx_copy_exchoffld(struct qla_hw_data *ha, void *ptr, uint32_t **last_chain)
532
+qla81xx_copy_exchoffld(struct qla_hw_data *ha, void *ptr, __be32 **last_chain)
525533 {
526534 struct qla2xxx_offld_chain *c = ptr;
527535
....@@ -539,12 +547,12 @@
539547 ptr += sizeof(struct qla2xxx_offld_chain);
540548 memcpy(ptr, ha->exchoffld_buf, ha->exchoffld_size);
541549
542
- return (char *)ptr + cpu_to_be32(c->size);
550
+ return (char *)ptr + be32_to_cpu(c->size);
543551 }
544552
545553 static inline void *
546554 qla2xxx_copy_atioqueues(struct qla_hw_data *ha, void *ptr,
547
- uint32_t **last_chain)
555
+ __be32 **last_chain)
548556 {
549557 struct qla2xxx_mqueue_chain *q;
550558 struct qla2xxx_mqueue_header *qh;
....@@ -591,7 +599,7 @@
591599 }
592600
593601 static inline void *
594
-qla25xx_copy_mqueues(struct qla_hw_data *ha, void *ptr, uint32_t **last_chain)
602
+qla25xx_copy_mqueues(struct qla_hw_data *ha, void *ptr, __be32 **last_chain)
595603 {
596604 struct qla2xxx_mqueue_chain *q;
597605 struct qla2xxx_mqueue_header *qh;
....@@ -662,14 +670,15 @@
662670 }
663671
664672 static inline void *
665
-qla25xx_copy_mq(struct qla_hw_data *ha, void *ptr, uint32_t **last_chain)
673
+qla25xx_copy_mq(struct qla_hw_data *ha, void *ptr, __be32 **last_chain)
666674 {
667675 uint32_t cnt, que_idx;
668676 uint8_t que_cnt;
669677 struct qla2xxx_mq_chain *mq = ptr;
670678 device_reg_t *reg;
671679
672
- if (!ha->mqenable || IS_QLA83XX(ha) || IS_QLA27XX(ha))
680
+ if (!ha->mqenable || IS_QLA83XX(ha) || IS_QLA27XX(ha) ||
681
+ IS_QLA28XX(ha))
673682 return ptr;
674683
675684 mq = ptr;
....@@ -684,13 +693,13 @@
684693 reg = ISP_QUE_REG(ha, cnt);
685694 que_idx = cnt * 4;
686695 mq->qregs[que_idx] =
687
- htonl(RD_REG_DWORD(&reg->isp25mq.req_q_in));
696
+ htonl(rd_reg_dword(&reg->isp25mq.req_q_in));
688697 mq->qregs[que_idx+1] =
689
- htonl(RD_REG_DWORD(&reg->isp25mq.req_q_out));
698
+ htonl(rd_reg_dword(&reg->isp25mq.req_q_out));
690699 mq->qregs[que_idx+2] =
691
- htonl(RD_REG_DWORD(&reg->isp25mq.rsp_q_in));
700
+ htonl(rd_reg_dword(&reg->isp25mq.rsp_q_in));
692701 mq->qregs[que_idx+3] =
693
- htonl(RD_REG_DWORD(&reg->isp25mq.rsp_q_out));
702
+ htonl(rd_reg_dword(&reg->isp25mq.rsp_q_out));
694703 }
695704
696705 return ptr + sizeof(struct qla2xxx_mq_chain);
....@@ -705,45 +714,47 @@
705714 ql_log(ql_log_warn, vha, 0xd000,
706715 "Failed to dump firmware (%x), dump status flags (0x%lx).\n",
707716 rval, ha->fw_dump_cap_flags);
708
- ha->fw_dumped = 0;
717
+ ha->fw_dumped = false;
709718 } else {
710719 ql_log(ql_log_info, vha, 0xd001,
711720 "Firmware dump saved to temp buffer (%ld/%p), dump status flags (0x%lx).\n",
712721 vha->host_no, ha->fw_dump, ha->fw_dump_cap_flags);
713
- ha->fw_dumped = 1;
722
+ ha->fw_dumped = true;
714723 qla2x00_post_uevent_work(vha, QLA_UEVENT_CODE_FW_DUMP);
715724 }
725
+}
726
+
727
+void qla2xxx_dump_fw(scsi_qla_host_t *vha)
728
+{
729
+ unsigned long flags;
730
+
731
+ spin_lock_irqsave(&vha->hw->hardware_lock, flags);
732
+ vha->hw->isp_ops->fw_dump(vha);
733
+ spin_unlock_irqrestore(&vha->hw->hardware_lock, flags);
716734 }
717735
718736 /**
719737 * qla2300_fw_dump() - Dumps binary data from the 2300 firmware.
720738 * @vha: HA context
721
- * @hardware_locked: Called with the hardware_lock
722739 */
723740 void
724
-qla2300_fw_dump(scsi_qla_host_t *vha, int hardware_locked)
741
+qla2300_fw_dump(scsi_qla_host_t *vha)
725742 {
726743 int rval;
727744 uint32_t cnt;
728745 struct qla_hw_data *ha = vha->hw;
729746 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp;
730
- uint16_t __iomem *dmp_reg;
731
- unsigned long flags;
747
+ __le16 __iomem *dmp_reg;
732748 struct qla2300_fw_dump *fw;
733749 void *nxt;
734750 struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev);
735751
736
- flags = 0;
737
-
738
-#ifndef __CHECKER__
739
- if (!hardware_locked)
740
- spin_lock_irqsave(&ha->hardware_lock, flags);
741
-#endif
752
+ lockdep_assert_held(&ha->hardware_lock);
742753
743754 if (!ha->fw_dump) {
744755 ql_log(ql_log_warn, vha, 0xd002,
745756 "No buffer available for dump.\n");
746
- goto qla2300_fw_dump_failed;
757
+ return;
747758 }
748759
749760 if (ha->fw_dumped) {
....@@ -751,19 +762,19 @@
751762 "Firmware has been previously dumped (%p) "
752763 "-- ignoring request.\n",
753764 ha->fw_dump);
754
- goto qla2300_fw_dump_failed;
765
+ return;
755766 }
756767 fw = &ha->fw_dump->isp.isp23;
757768 qla2xxx_prep_dump(ha, ha->fw_dump);
758769
759770 rval = QLA_SUCCESS;
760
- fw->hccr = htons(RD_REG_WORD(&reg->hccr));
771
+ fw->hccr = htons(rd_reg_word(&reg->hccr));
761772
762773 /* Pause RISC. */
763
- WRT_REG_WORD(&reg->hccr, HCCR_PAUSE_RISC);
774
+ wrt_reg_word(&reg->hccr, HCCR_PAUSE_RISC);
764775 if (IS_QLA2300(ha)) {
765776 for (cnt = 30000;
766
- (RD_REG_WORD(&reg->hccr) & HCCR_RISC_PAUSE) == 0 &&
777
+ (rd_reg_word(&reg->hccr) & HCCR_RISC_PAUSE) == 0 &&
767778 rval == QLA_SUCCESS; cnt--) {
768779 if (cnt)
769780 udelay(100);
....@@ -771,74 +782,74 @@
771782 rval = QLA_FUNCTION_TIMEOUT;
772783 }
773784 } else {
774
- RD_REG_WORD(&reg->hccr); /* PCI Posting. */
785
+ rd_reg_word(&reg->hccr); /* PCI Posting. */
775786 udelay(10);
776787 }
777788
778789 if (rval == QLA_SUCCESS) {
779790 dmp_reg = &reg->flash_address;
780
- for (cnt = 0; cnt < sizeof(fw->pbiu_reg) / 2; cnt++, dmp_reg++)
781
- fw->pbiu_reg[cnt] = htons(RD_REG_WORD(dmp_reg));
791
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->pbiu_reg); cnt++, dmp_reg++)
792
+ fw->pbiu_reg[cnt] = htons(rd_reg_word(dmp_reg));
782793
783794 dmp_reg = &reg->u.isp2300.req_q_in;
784
- for (cnt = 0; cnt < sizeof(fw->risc_host_reg) / 2;
795
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->risc_host_reg);
785796 cnt++, dmp_reg++)
786
- fw->risc_host_reg[cnt] = htons(RD_REG_WORD(dmp_reg));
797
+ fw->risc_host_reg[cnt] = htons(rd_reg_word(dmp_reg));
787798
788799 dmp_reg = &reg->u.isp2300.mailbox0;
789
- for (cnt = 0; cnt < sizeof(fw->mailbox_reg) / 2;
800
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->mailbox_reg);
790801 cnt++, dmp_reg++)
791
- fw->mailbox_reg[cnt] = htons(RD_REG_WORD(dmp_reg));
802
+ fw->mailbox_reg[cnt] = htons(rd_reg_word(dmp_reg));
792803
793
- WRT_REG_WORD(&reg->ctrl_status, 0x40);
804
+ wrt_reg_word(&reg->ctrl_status, 0x40);
794805 qla2xxx_read_window(reg, 32, fw->resp_dma_reg);
795806
796
- WRT_REG_WORD(&reg->ctrl_status, 0x50);
807
+ wrt_reg_word(&reg->ctrl_status, 0x50);
797808 qla2xxx_read_window(reg, 48, fw->dma_reg);
798809
799
- WRT_REG_WORD(&reg->ctrl_status, 0x00);
810
+ wrt_reg_word(&reg->ctrl_status, 0x00);
800811 dmp_reg = &reg->risc_hw;
801
- for (cnt = 0; cnt < sizeof(fw->risc_hdw_reg) / 2;
812
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->risc_hdw_reg);
802813 cnt++, dmp_reg++)
803
- fw->risc_hdw_reg[cnt] = htons(RD_REG_WORD(dmp_reg));
814
+ fw->risc_hdw_reg[cnt] = htons(rd_reg_word(dmp_reg));
804815
805
- WRT_REG_WORD(&reg->pcr, 0x2000);
816
+ wrt_reg_word(&reg->pcr, 0x2000);
806817 qla2xxx_read_window(reg, 16, fw->risc_gp0_reg);
807818
808
- WRT_REG_WORD(&reg->pcr, 0x2200);
819
+ wrt_reg_word(&reg->pcr, 0x2200);
809820 qla2xxx_read_window(reg, 16, fw->risc_gp1_reg);
810821
811
- WRT_REG_WORD(&reg->pcr, 0x2400);
822
+ wrt_reg_word(&reg->pcr, 0x2400);
812823 qla2xxx_read_window(reg, 16, fw->risc_gp2_reg);
813824
814
- WRT_REG_WORD(&reg->pcr, 0x2600);
825
+ wrt_reg_word(&reg->pcr, 0x2600);
815826 qla2xxx_read_window(reg, 16, fw->risc_gp3_reg);
816827
817
- WRT_REG_WORD(&reg->pcr, 0x2800);
828
+ wrt_reg_word(&reg->pcr, 0x2800);
818829 qla2xxx_read_window(reg, 16, fw->risc_gp4_reg);
819830
820
- WRT_REG_WORD(&reg->pcr, 0x2A00);
831
+ wrt_reg_word(&reg->pcr, 0x2A00);
821832 qla2xxx_read_window(reg, 16, fw->risc_gp5_reg);
822833
823
- WRT_REG_WORD(&reg->pcr, 0x2C00);
834
+ wrt_reg_word(&reg->pcr, 0x2C00);
824835 qla2xxx_read_window(reg, 16, fw->risc_gp6_reg);
825836
826
- WRT_REG_WORD(&reg->pcr, 0x2E00);
837
+ wrt_reg_word(&reg->pcr, 0x2E00);
827838 qla2xxx_read_window(reg, 16, fw->risc_gp7_reg);
828839
829
- WRT_REG_WORD(&reg->ctrl_status, 0x10);
840
+ wrt_reg_word(&reg->ctrl_status, 0x10);
830841 qla2xxx_read_window(reg, 64, fw->frame_buf_hdw_reg);
831842
832
- WRT_REG_WORD(&reg->ctrl_status, 0x20);
843
+ wrt_reg_word(&reg->ctrl_status, 0x20);
833844 qla2xxx_read_window(reg, 64, fw->fpm_b0_reg);
834845
835
- WRT_REG_WORD(&reg->ctrl_status, 0x30);
846
+ wrt_reg_word(&reg->ctrl_status, 0x30);
836847 qla2xxx_read_window(reg, 64, fw->fpm_b1_reg);
837848
838849 /* Reset RISC. */
839
- WRT_REG_WORD(&reg->ctrl_status, CSR_ISP_SOFT_RESET);
850
+ wrt_reg_word(&reg->ctrl_status, CSR_ISP_SOFT_RESET);
840851 for (cnt = 0; cnt < 30000; cnt++) {
841
- if ((RD_REG_WORD(&reg->ctrl_status) &
852
+ if ((rd_reg_word(&reg->ctrl_status) &
842853 CSR_ISP_SOFT_RESET) == 0)
843854 break;
844855
....@@ -859,12 +870,12 @@
859870 /* Get RISC SRAM. */
860871 if (rval == QLA_SUCCESS)
861872 rval = qla2xxx_dump_ram(ha, 0x800, fw->risc_ram,
862
- sizeof(fw->risc_ram) / 2, &nxt);
873
+ ARRAY_SIZE(fw->risc_ram), &nxt);
863874
864875 /* Get stack SRAM. */
865876 if (rval == QLA_SUCCESS)
866877 rval = qla2xxx_dump_ram(ha, 0x10000, fw->stack_ram,
867
- sizeof(fw->stack_ram) / 2, &nxt);
878
+ ARRAY_SIZE(fw->stack_ram), &nxt);
868879
869880 /* Get data SRAM. */
870881 if (rval == QLA_SUCCESS)
....@@ -875,48 +886,31 @@
875886 qla2xxx_copy_queues(ha, nxt);
876887
877888 qla2xxx_dump_post_process(base_vha, rval);
878
-
879
-qla2300_fw_dump_failed:
880
-#ifndef __CHECKER__
881
- if (!hardware_locked)
882
- spin_unlock_irqrestore(&ha->hardware_lock, flags);
883
-#else
884
- ;
885
-#endif
886889 }
887890
888891 /**
889892 * qla2100_fw_dump() - Dumps binary data from the 2100/2200 firmware.
890893 * @vha: HA context
891
- * @hardware_locked: Called with the hardware_lock
892894 */
893895 void
894
-qla2100_fw_dump(scsi_qla_host_t *vha, int hardware_locked)
896
+qla2100_fw_dump(scsi_qla_host_t *vha)
895897 {
896898 int rval;
897899 uint32_t cnt, timer;
898
- uint16_t risc_address;
899
- uint16_t mb0, mb2;
900
+ uint16_t risc_address = 0;
901
+ uint16_t mb0 = 0, mb2 = 0;
900902 struct qla_hw_data *ha = vha->hw;
901903 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp;
902
- uint16_t __iomem *dmp_reg;
903
- unsigned long flags;
904
+ __le16 __iomem *dmp_reg;
904905 struct qla2100_fw_dump *fw;
905906 struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev);
906907
907
- risc_address = 0;
908
- mb0 = mb2 = 0;
909
- flags = 0;
910
-
911
-#ifndef __CHECKER__
912
- if (!hardware_locked)
913
- spin_lock_irqsave(&ha->hardware_lock, flags);
914
-#endif
908
+ lockdep_assert_held(&ha->hardware_lock);
915909
916910 if (!ha->fw_dump) {
917911 ql_log(ql_log_warn, vha, 0xd004,
918912 "No buffer available for dump.\n");
919
- goto qla2100_fw_dump_failed;
913
+ return;
920914 }
921915
922916 if (ha->fw_dumped) {
....@@ -924,17 +918,17 @@
924918 "Firmware has been previously dumped (%p) "
925919 "-- ignoring request.\n",
926920 ha->fw_dump);
927
- goto qla2100_fw_dump_failed;
921
+ return;
928922 }
929923 fw = &ha->fw_dump->isp.isp21;
930924 qla2xxx_prep_dump(ha, ha->fw_dump);
931925
932926 rval = QLA_SUCCESS;
933
- fw->hccr = htons(RD_REG_WORD(&reg->hccr));
927
+ fw->hccr = htons(rd_reg_word(&reg->hccr));
934928
935929 /* Pause RISC. */
936
- WRT_REG_WORD(&reg->hccr, HCCR_PAUSE_RISC);
937
- for (cnt = 30000; (RD_REG_WORD(&reg->hccr) & HCCR_RISC_PAUSE) == 0 &&
930
+ wrt_reg_word(&reg->hccr, HCCR_PAUSE_RISC);
931
+ for (cnt = 30000; (rd_reg_word(&reg->hccr) & HCCR_RISC_PAUSE) == 0 &&
938932 rval == QLA_SUCCESS; cnt--) {
939933 if (cnt)
940934 udelay(100);
....@@ -943,61 +937,61 @@
943937 }
944938 if (rval == QLA_SUCCESS) {
945939 dmp_reg = &reg->flash_address;
946
- for (cnt = 0; cnt < sizeof(fw->pbiu_reg) / 2; cnt++, dmp_reg++)
947
- fw->pbiu_reg[cnt] = htons(RD_REG_WORD(dmp_reg));
940
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->pbiu_reg); cnt++, dmp_reg++)
941
+ fw->pbiu_reg[cnt] = htons(rd_reg_word(dmp_reg));
948942
949943 dmp_reg = &reg->u.isp2100.mailbox0;
950944 for (cnt = 0; cnt < ha->mbx_count; cnt++, dmp_reg++) {
951945 if (cnt == 8)
952946 dmp_reg = &reg->u_end.isp2200.mailbox8;
953947
954
- fw->mailbox_reg[cnt] = htons(RD_REG_WORD(dmp_reg));
948
+ fw->mailbox_reg[cnt] = htons(rd_reg_word(dmp_reg));
955949 }
956950
957951 dmp_reg = &reg->u.isp2100.unused_2[0];
958
- for (cnt = 0; cnt < sizeof(fw->dma_reg) / 2; cnt++, dmp_reg++)
959
- fw->dma_reg[cnt] = htons(RD_REG_WORD(dmp_reg));
952
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->dma_reg); cnt++, dmp_reg++)
953
+ fw->dma_reg[cnt] = htons(rd_reg_word(dmp_reg));
960954
961
- WRT_REG_WORD(&reg->ctrl_status, 0x00);
955
+ wrt_reg_word(&reg->ctrl_status, 0x00);
962956 dmp_reg = &reg->risc_hw;
963
- for (cnt = 0; cnt < sizeof(fw->risc_hdw_reg) / 2; cnt++, dmp_reg++)
964
- fw->risc_hdw_reg[cnt] = htons(RD_REG_WORD(dmp_reg));
957
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->risc_hdw_reg); cnt++, dmp_reg++)
958
+ fw->risc_hdw_reg[cnt] = htons(rd_reg_word(dmp_reg));
965959
966
- WRT_REG_WORD(&reg->pcr, 0x2000);
960
+ wrt_reg_word(&reg->pcr, 0x2000);
967961 qla2xxx_read_window(reg, 16, fw->risc_gp0_reg);
968962
969
- WRT_REG_WORD(&reg->pcr, 0x2100);
963
+ wrt_reg_word(&reg->pcr, 0x2100);
970964 qla2xxx_read_window(reg, 16, fw->risc_gp1_reg);
971965
972
- WRT_REG_WORD(&reg->pcr, 0x2200);
966
+ wrt_reg_word(&reg->pcr, 0x2200);
973967 qla2xxx_read_window(reg, 16, fw->risc_gp2_reg);
974968
975
- WRT_REG_WORD(&reg->pcr, 0x2300);
969
+ wrt_reg_word(&reg->pcr, 0x2300);
976970 qla2xxx_read_window(reg, 16, fw->risc_gp3_reg);
977971
978
- WRT_REG_WORD(&reg->pcr, 0x2400);
972
+ wrt_reg_word(&reg->pcr, 0x2400);
979973 qla2xxx_read_window(reg, 16, fw->risc_gp4_reg);
980974
981
- WRT_REG_WORD(&reg->pcr, 0x2500);
975
+ wrt_reg_word(&reg->pcr, 0x2500);
982976 qla2xxx_read_window(reg, 16, fw->risc_gp5_reg);
983977
984
- WRT_REG_WORD(&reg->pcr, 0x2600);
978
+ wrt_reg_word(&reg->pcr, 0x2600);
985979 qla2xxx_read_window(reg, 16, fw->risc_gp6_reg);
986980
987
- WRT_REG_WORD(&reg->pcr, 0x2700);
981
+ wrt_reg_word(&reg->pcr, 0x2700);
988982 qla2xxx_read_window(reg, 16, fw->risc_gp7_reg);
989983
990
- WRT_REG_WORD(&reg->ctrl_status, 0x10);
984
+ wrt_reg_word(&reg->ctrl_status, 0x10);
991985 qla2xxx_read_window(reg, 16, fw->frame_buf_hdw_reg);
992986
993
- WRT_REG_WORD(&reg->ctrl_status, 0x20);
987
+ wrt_reg_word(&reg->ctrl_status, 0x20);
994988 qla2xxx_read_window(reg, 64, fw->fpm_b0_reg);
995989
996
- WRT_REG_WORD(&reg->ctrl_status, 0x30);
990
+ wrt_reg_word(&reg->ctrl_status, 0x30);
997991 qla2xxx_read_window(reg, 64, fw->fpm_b1_reg);
998992
999993 /* Reset the ISP. */
1000
- WRT_REG_WORD(&reg->ctrl_status, CSR_ISP_SOFT_RESET);
994
+ wrt_reg_word(&reg->ctrl_status, CSR_ISP_SOFT_RESET);
1001995 }
1002996
1003997 for (cnt = 30000; RD_MAILBOX_REG(ha, reg, 0) != 0 &&
....@@ -1010,11 +1004,11 @@
10101004
10111005 /* Pause RISC. */
10121006 if (rval == QLA_SUCCESS && (IS_QLA2200(ha) || (IS_QLA2100(ha) &&
1013
- (RD_REG_WORD(&reg->mctr) & (BIT_1 | BIT_0)) != 0))) {
1007
+ (rd_reg_word(&reg->mctr) & (BIT_1 | BIT_0)) != 0))) {
10141008
1015
- WRT_REG_WORD(&reg->hccr, HCCR_PAUSE_RISC);
1009
+ wrt_reg_word(&reg->hccr, HCCR_PAUSE_RISC);
10161010 for (cnt = 30000;
1017
- (RD_REG_WORD(&reg->hccr) & HCCR_RISC_PAUSE) == 0 &&
1011
+ (rd_reg_word(&reg->hccr) & HCCR_RISC_PAUSE) == 0 &&
10181012 rval == QLA_SUCCESS; cnt--) {
10191013 if (cnt)
10201014 udelay(100);
....@@ -1024,13 +1018,13 @@
10241018 if (rval == QLA_SUCCESS) {
10251019 /* Set memory configuration and timing. */
10261020 if (IS_QLA2100(ha))
1027
- WRT_REG_WORD(&reg->mctr, 0xf1);
1021
+ wrt_reg_word(&reg->mctr, 0xf1);
10281022 else
1029
- WRT_REG_WORD(&reg->mctr, 0xf2);
1030
- RD_REG_WORD(&reg->mctr); /* PCI Posting. */
1023
+ wrt_reg_word(&reg->mctr, 0xf2);
1024
+ rd_reg_word(&reg->mctr); /* PCI Posting. */
10311025
10321026 /* Release RISC. */
1033
- WRT_REG_WORD(&reg->hccr, HCCR_RELEASE_RISC);
1027
+ wrt_reg_word(&reg->hccr, HCCR_RELEASE_RISC);
10341028 }
10351029 }
10361030
....@@ -1040,29 +1034,29 @@
10401034 WRT_MAILBOX_REG(ha, reg, 0, MBC_READ_RAM_WORD);
10411035 clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
10421036 }
1043
- for (cnt = 0; cnt < sizeof(fw->risc_ram) / 2 && rval == QLA_SUCCESS;
1037
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->risc_ram) && rval == QLA_SUCCESS;
10441038 cnt++, risc_address++) {
10451039 WRT_MAILBOX_REG(ha, reg, 1, risc_address);
1046
- WRT_REG_WORD(&reg->hccr, HCCR_SET_HOST_INT);
1040
+ wrt_reg_word(&reg->hccr, HCCR_SET_HOST_INT);
10471041
10481042 for (timer = 6000000; timer != 0; timer--) {
10491043 /* Check for pending interrupts. */
1050
- if (RD_REG_WORD(&reg->istatus) & ISR_RISC_INT) {
1051
- if (RD_REG_WORD(&reg->semaphore) & BIT_0) {
1044
+ if (rd_reg_word(&reg->istatus) & ISR_RISC_INT) {
1045
+ if (rd_reg_word(&reg->semaphore) & BIT_0) {
10521046 set_bit(MBX_INTERRUPT,
10531047 &ha->mbx_cmd_flags);
10541048
10551049 mb0 = RD_MAILBOX_REG(ha, reg, 0);
10561050 mb2 = RD_MAILBOX_REG(ha, reg, 2);
10571051
1058
- WRT_REG_WORD(&reg->semaphore, 0);
1059
- WRT_REG_WORD(&reg->hccr,
1052
+ wrt_reg_word(&reg->semaphore, 0);
1053
+ wrt_reg_word(&reg->hccr,
10601054 HCCR_CLR_RISC_INT);
1061
- RD_REG_WORD(&reg->hccr);
1055
+ rd_reg_word(&reg->hccr);
10621056 break;
10631057 }
1064
- WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT);
1065
- RD_REG_WORD(&reg->hccr);
1058
+ wrt_reg_word(&reg->hccr, HCCR_CLR_RISC_INT);
1059
+ rd_reg_word(&reg->hccr);
10661060 }
10671061 udelay(5);
10681062 }
....@@ -1076,51 +1070,38 @@
10761070 }
10771071
10781072 if (rval == QLA_SUCCESS)
1079
- qla2xxx_copy_queues(ha, &fw->risc_ram[cnt]);
1073
+ qla2xxx_copy_queues(ha, &fw->queue_dump[0]);
10801074
10811075 qla2xxx_dump_post_process(base_vha, rval);
1082
-
1083
-qla2100_fw_dump_failed:
1084
-#ifndef __CHECKER__
1085
- if (!hardware_locked)
1086
- spin_unlock_irqrestore(&ha->hardware_lock, flags);
1087
-#else
1088
- ;
1089
-#endif
10901076 }
10911077
10921078 void
1093
-qla24xx_fw_dump(scsi_qla_host_t *vha, int hardware_locked)
1079
+qla24xx_fw_dump(scsi_qla_host_t *vha)
10941080 {
10951081 int rval;
10961082 uint32_t cnt;
10971083 struct qla_hw_data *ha = vha->hw;
10981084 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24;
1099
- uint32_t __iomem *dmp_reg;
1100
- uint32_t *iter_reg;
1101
- uint16_t __iomem *mbx_reg;
1102
- unsigned long flags;
1085
+ __le32 __iomem *dmp_reg;
1086
+ __be32 *iter_reg;
1087
+ __le16 __iomem *mbx_reg;
11031088 struct qla24xx_fw_dump *fw;
11041089 void *nxt;
11051090 void *nxt_chain;
1106
- uint32_t *last_chain = NULL;
1091
+ __be32 *last_chain = NULL;
11071092 struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev);
1093
+
1094
+ lockdep_assert_held(&ha->hardware_lock);
11081095
11091096 if (IS_P3P_TYPE(ha))
11101097 return;
11111098
1112
- flags = 0;
11131099 ha->fw_dump_cap_flags = 0;
1114
-
1115
-#ifndef __CHECKER__
1116
- if (!hardware_locked)
1117
- spin_lock_irqsave(&ha->hardware_lock, flags);
1118
-#endif
11191100
11201101 if (!ha->fw_dump) {
11211102 ql_log(ql_log_warn, vha, 0xd006,
11221103 "No buffer available for dump.\n");
1123
- goto qla24xx_fw_dump_failed;
1104
+ return;
11241105 }
11251106
11261107 if (ha->fw_dumped) {
....@@ -1128,13 +1109,13 @@
11281109 "Firmware has been previously dumped (%p) "
11291110 "-- ignoring request.\n",
11301111 ha->fw_dump);
1131
- goto qla24xx_fw_dump_failed;
1112
+ return;
11321113 }
11331114 QLA_FW_STOPPED(ha);
11341115 fw = &ha->fw_dump->isp.isp24;
11351116 qla2xxx_prep_dump(ha, ha->fw_dump);
11361117
1137
- fw->host_status = htonl(RD_REG_DWORD(&reg->host_status));
1118
+ fw->host_status = htonl(rd_reg_dword(&reg->host_status));
11381119
11391120 /*
11401121 * Pause RISC. No need to track timeout, as resetting the chip
....@@ -1144,41 +1125,41 @@
11441125
11451126 /* Host interface registers. */
11461127 dmp_reg = &reg->flash_addr;
1147
- for (cnt = 0; cnt < sizeof(fw->host_reg) / 4; cnt++, dmp_reg++)
1148
- fw->host_reg[cnt] = htonl(RD_REG_DWORD(dmp_reg));
1128
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->host_reg); cnt++, dmp_reg++)
1129
+ fw->host_reg[cnt] = htonl(rd_reg_dword(dmp_reg));
11491130
11501131 /* Disable interrupts. */
1151
- WRT_REG_DWORD(&reg->ictrl, 0);
1152
- RD_REG_DWORD(&reg->ictrl);
1132
+ wrt_reg_dword(&reg->ictrl, 0);
1133
+ rd_reg_dword(&reg->ictrl);
11531134
11541135 /* Shadow registers. */
1155
- WRT_REG_DWORD(&reg->iobase_addr, 0x0F70);
1156
- RD_REG_DWORD(&reg->iobase_addr);
1157
- WRT_REG_DWORD(&reg->iobase_select, 0xB0000000);
1158
- fw->shadow_reg[0] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1136
+ wrt_reg_dword(&reg->iobase_addr, 0x0F70);
1137
+ rd_reg_dword(&reg->iobase_addr);
1138
+ wrt_reg_dword(&reg->iobase_select, 0xB0000000);
1139
+ fw->shadow_reg[0] = htonl(rd_reg_dword(&reg->iobase_sdata));
11591140
1160
- WRT_REG_DWORD(&reg->iobase_select, 0xB0100000);
1161
- fw->shadow_reg[1] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1141
+ wrt_reg_dword(&reg->iobase_select, 0xB0100000);
1142
+ fw->shadow_reg[1] = htonl(rd_reg_dword(&reg->iobase_sdata));
11621143
1163
- WRT_REG_DWORD(&reg->iobase_select, 0xB0200000);
1164
- fw->shadow_reg[2] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1144
+ wrt_reg_dword(&reg->iobase_select, 0xB0200000);
1145
+ fw->shadow_reg[2] = htonl(rd_reg_dword(&reg->iobase_sdata));
11651146
1166
- WRT_REG_DWORD(&reg->iobase_select, 0xB0300000);
1167
- fw->shadow_reg[3] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1147
+ wrt_reg_dword(&reg->iobase_select, 0xB0300000);
1148
+ fw->shadow_reg[3] = htonl(rd_reg_dword(&reg->iobase_sdata));
11681149
1169
- WRT_REG_DWORD(&reg->iobase_select, 0xB0400000);
1170
- fw->shadow_reg[4] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1150
+ wrt_reg_dword(&reg->iobase_select, 0xB0400000);
1151
+ fw->shadow_reg[4] = htonl(rd_reg_dword(&reg->iobase_sdata));
11711152
1172
- WRT_REG_DWORD(&reg->iobase_select, 0xB0500000);
1173
- fw->shadow_reg[5] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1153
+ wrt_reg_dword(&reg->iobase_select, 0xB0500000);
1154
+ fw->shadow_reg[5] = htonl(rd_reg_dword(&reg->iobase_sdata));
11741155
1175
- WRT_REG_DWORD(&reg->iobase_select, 0xB0600000);
1176
- fw->shadow_reg[6] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1156
+ wrt_reg_dword(&reg->iobase_select, 0xB0600000);
1157
+ fw->shadow_reg[6] = htonl(rd_reg_dword(&reg->iobase_sdata));
11771158
11781159 /* Mailbox registers. */
11791160 mbx_reg = &reg->mailbox0;
1180
- for (cnt = 0; cnt < sizeof(fw->mailbox_reg) / 2; cnt++, mbx_reg++)
1181
- fw->mailbox_reg[cnt] = htons(RD_REG_WORD(mbx_reg));
1161
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->mailbox_reg); cnt++, mbx_reg++)
1162
+ fw->mailbox_reg[cnt] = htons(rd_reg_word(mbx_reg));
11821163
11831164 /* Transfer sequence registers. */
11841165 iter_reg = fw->xseq_gp_reg;
....@@ -1217,19 +1198,19 @@
12171198 iter_reg = qla24xx_read_window(reg, 0x7200, 8, iter_reg);
12181199 dmp_reg = &reg->iobase_q;
12191200 for (cnt = 0; cnt < 7; cnt++, dmp_reg++)
1220
- *iter_reg++ = htonl(RD_REG_DWORD(dmp_reg));
1201
+ *iter_reg++ = htonl(rd_reg_dword(dmp_reg));
12211202
12221203 iter_reg = fw->resp0_dma_reg;
12231204 iter_reg = qla24xx_read_window(reg, 0x7300, 8, iter_reg);
12241205 dmp_reg = &reg->iobase_q;
12251206 for (cnt = 0; cnt < 7; cnt++, dmp_reg++)
1226
- *iter_reg++ = htonl(RD_REG_DWORD(dmp_reg));
1207
+ *iter_reg++ = htonl(rd_reg_dword(dmp_reg));
12271208
12281209 iter_reg = fw->req1_dma_reg;
12291210 iter_reg = qla24xx_read_window(reg, 0x7400, 8, iter_reg);
12301211 dmp_reg = &reg->iobase_q;
12311212 for (cnt = 0; cnt < 7; cnt++, dmp_reg++)
1232
- *iter_reg++ = htonl(RD_REG_DWORD(dmp_reg));
1213
+ *iter_reg++ = htonl(rd_reg_dword(dmp_reg));
12331214
12341215 /* Transmit DMA registers. */
12351216 iter_reg = fw->xmt0_dma_reg;
....@@ -1338,44 +1319,31 @@
13381319
13391320 qla24xx_fw_dump_failed_0:
13401321 qla2xxx_dump_post_process(base_vha, rval);
1341
-
1342
-qla24xx_fw_dump_failed:
1343
-#ifndef __CHECKER__
1344
- if (!hardware_locked)
1345
- spin_unlock_irqrestore(&ha->hardware_lock, flags);
1346
-#else
1347
- ;
1348
-#endif
13491322 }
13501323
13511324 void
1352
-qla25xx_fw_dump(scsi_qla_host_t *vha, int hardware_locked)
1325
+qla25xx_fw_dump(scsi_qla_host_t *vha)
13531326 {
13541327 int rval;
13551328 uint32_t cnt;
13561329 struct qla_hw_data *ha = vha->hw;
13571330 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24;
1358
- uint32_t __iomem *dmp_reg;
1359
- uint32_t *iter_reg;
1360
- uint16_t __iomem *mbx_reg;
1361
- unsigned long flags;
1331
+ __le32 __iomem *dmp_reg;
1332
+ __be32 *iter_reg;
1333
+ __le16 __iomem *mbx_reg;
13621334 struct qla25xx_fw_dump *fw;
13631335 void *nxt, *nxt_chain;
1364
- uint32_t *last_chain = NULL;
1336
+ __be32 *last_chain = NULL;
13651337 struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev);
13661338
1367
- flags = 0;
1368
- ha->fw_dump_cap_flags = 0;
1339
+ lockdep_assert_held(&ha->hardware_lock);
13691340
1370
-#ifndef __CHECKER__
1371
- if (!hardware_locked)
1372
- spin_lock_irqsave(&ha->hardware_lock, flags);
1373
-#endif
1341
+ ha->fw_dump_cap_flags = 0;
13741342
13751343 if (!ha->fw_dump) {
13761344 ql_log(ql_log_warn, vha, 0xd008,
13771345 "No buffer available for dump.\n");
1378
- goto qla25xx_fw_dump_failed;
1346
+ return;
13791347 }
13801348
13811349 if (ha->fw_dumped) {
....@@ -1383,14 +1351,14 @@
13831351 "Firmware has been previously dumped (%p) "
13841352 "-- ignoring request.\n",
13851353 ha->fw_dump);
1386
- goto qla25xx_fw_dump_failed;
1354
+ return;
13871355 }
13881356 QLA_FW_STOPPED(ha);
13891357 fw = &ha->fw_dump->isp.isp25;
13901358 qla2xxx_prep_dump(ha, ha->fw_dump);
13911359 ha->fw_dump->version = htonl(2);
13921360
1393
- fw->host_status = htonl(RD_REG_DWORD(&reg->host_status));
1361
+ fw->host_status = htonl(rd_reg_dword(&reg->host_status));
13941362
13951363 /*
13961364 * Pause RISC. No need to track timeout, as resetting the chip
....@@ -1404,73 +1372,73 @@
14041372 qla24xx_read_window(reg, 0x7010, 16, iter_reg);
14051373
14061374 /* PCIe registers. */
1407
- WRT_REG_DWORD(&reg->iobase_addr, 0x7C00);
1408
- RD_REG_DWORD(&reg->iobase_addr);
1409
- WRT_REG_DWORD(&reg->iobase_window, 0x01);
1375
+ wrt_reg_dword(&reg->iobase_addr, 0x7C00);
1376
+ rd_reg_dword(&reg->iobase_addr);
1377
+ wrt_reg_dword(&reg->iobase_window, 0x01);
14101378 dmp_reg = &reg->iobase_c4;
1411
- fw->pcie_regs[0] = htonl(RD_REG_DWORD(dmp_reg));
1379
+ fw->pcie_regs[0] = htonl(rd_reg_dword(dmp_reg));
14121380 dmp_reg++;
1413
- fw->pcie_regs[1] = htonl(RD_REG_DWORD(dmp_reg));
1381
+ fw->pcie_regs[1] = htonl(rd_reg_dword(dmp_reg));
14141382 dmp_reg++;
1415
- fw->pcie_regs[2] = htonl(RD_REG_DWORD(dmp_reg));
1416
- fw->pcie_regs[3] = htonl(RD_REG_DWORD(&reg->iobase_window));
1383
+ fw->pcie_regs[2] = htonl(rd_reg_dword(dmp_reg));
1384
+ fw->pcie_regs[3] = htonl(rd_reg_dword(&reg->iobase_window));
14171385
1418
- WRT_REG_DWORD(&reg->iobase_window, 0x00);
1419
- RD_REG_DWORD(&reg->iobase_window);
1386
+ wrt_reg_dword(&reg->iobase_window, 0x00);
1387
+ rd_reg_dword(&reg->iobase_window);
14201388
14211389 /* Host interface registers. */
14221390 dmp_reg = &reg->flash_addr;
1423
- for (cnt = 0; cnt < sizeof(fw->host_reg) / 4; cnt++, dmp_reg++)
1424
- fw->host_reg[cnt] = htonl(RD_REG_DWORD(dmp_reg));
1391
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->host_reg); cnt++, dmp_reg++)
1392
+ fw->host_reg[cnt] = htonl(rd_reg_dword(dmp_reg));
14251393
14261394 /* Disable interrupts. */
1427
- WRT_REG_DWORD(&reg->ictrl, 0);
1428
- RD_REG_DWORD(&reg->ictrl);
1395
+ wrt_reg_dword(&reg->ictrl, 0);
1396
+ rd_reg_dword(&reg->ictrl);
14291397
14301398 /* Shadow registers. */
1431
- WRT_REG_DWORD(&reg->iobase_addr, 0x0F70);
1432
- RD_REG_DWORD(&reg->iobase_addr);
1433
- WRT_REG_DWORD(&reg->iobase_select, 0xB0000000);
1434
- fw->shadow_reg[0] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1399
+ wrt_reg_dword(&reg->iobase_addr, 0x0F70);
1400
+ rd_reg_dword(&reg->iobase_addr);
1401
+ wrt_reg_dword(&reg->iobase_select, 0xB0000000);
1402
+ fw->shadow_reg[0] = htonl(rd_reg_dword(&reg->iobase_sdata));
14351403
1436
- WRT_REG_DWORD(&reg->iobase_select, 0xB0100000);
1437
- fw->shadow_reg[1] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1404
+ wrt_reg_dword(&reg->iobase_select, 0xB0100000);
1405
+ fw->shadow_reg[1] = htonl(rd_reg_dword(&reg->iobase_sdata));
14381406
1439
- WRT_REG_DWORD(&reg->iobase_select, 0xB0200000);
1440
- fw->shadow_reg[2] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1407
+ wrt_reg_dword(&reg->iobase_select, 0xB0200000);
1408
+ fw->shadow_reg[2] = htonl(rd_reg_dword(&reg->iobase_sdata));
14411409
1442
- WRT_REG_DWORD(&reg->iobase_select, 0xB0300000);
1443
- fw->shadow_reg[3] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1410
+ wrt_reg_dword(&reg->iobase_select, 0xB0300000);
1411
+ fw->shadow_reg[3] = htonl(rd_reg_dword(&reg->iobase_sdata));
14441412
1445
- WRT_REG_DWORD(&reg->iobase_select, 0xB0400000);
1446
- fw->shadow_reg[4] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1413
+ wrt_reg_dword(&reg->iobase_select, 0xB0400000);
1414
+ fw->shadow_reg[4] = htonl(rd_reg_dword(&reg->iobase_sdata));
14471415
1448
- WRT_REG_DWORD(&reg->iobase_select, 0xB0500000);
1449
- fw->shadow_reg[5] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1416
+ wrt_reg_dword(&reg->iobase_select, 0xB0500000);
1417
+ fw->shadow_reg[5] = htonl(rd_reg_dword(&reg->iobase_sdata));
14501418
1451
- WRT_REG_DWORD(&reg->iobase_select, 0xB0600000);
1452
- fw->shadow_reg[6] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1419
+ wrt_reg_dword(&reg->iobase_select, 0xB0600000);
1420
+ fw->shadow_reg[6] = htonl(rd_reg_dword(&reg->iobase_sdata));
14531421
1454
- WRT_REG_DWORD(&reg->iobase_select, 0xB0700000);
1455
- fw->shadow_reg[7] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1422
+ wrt_reg_dword(&reg->iobase_select, 0xB0700000);
1423
+ fw->shadow_reg[7] = htonl(rd_reg_dword(&reg->iobase_sdata));
14561424
1457
- WRT_REG_DWORD(&reg->iobase_select, 0xB0800000);
1458
- fw->shadow_reg[8] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1425
+ wrt_reg_dword(&reg->iobase_select, 0xB0800000);
1426
+ fw->shadow_reg[8] = htonl(rd_reg_dword(&reg->iobase_sdata));
14591427
1460
- WRT_REG_DWORD(&reg->iobase_select, 0xB0900000);
1461
- fw->shadow_reg[9] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1428
+ wrt_reg_dword(&reg->iobase_select, 0xB0900000);
1429
+ fw->shadow_reg[9] = htonl(rd_reg_dword(&reg->iobase_sdata));
14621430
1463
- WRT_REG_DWORD(&reg->iobase_select, 0xB0A00000);
1464
- fw->shadow_reg[10] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1431
+ wrt_reg_dword(&reg->iobase_select, 0xB0A00000);
1432
+ fw->shadow_reg[10] = htonl(rd_reg_dword(&reg->iobase_sdata));
14651433
14661434 /* RISC I/O register. */
1467
- WRT_REG_DWORD(&reg->iobase_addr, 0x0010);
1468
- fw->risc_io_reg = htonl(RD_REG_DWORD(&reg->iobase_window));
1435
+ wrt_reg_dword(&reg->iobase_addr, 0x0010);
1436
+ fw->risc_io_reg = htonl(rd_reg_dword(&reg->iobase_window));
14691437
14701438 /* Mailbox registers. */
14711439 mbx_reg = &reg->mailbox0;
1472
- for (cnt = 0; cnt < sizeof(fw->mailbox_reg) / 2; cnt++, mbx_reg++)
1473
- fw->mailbox_reg[cnt] = htons(RD_REG_WORD(mbx_reg));
1440
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->mailbox_reg); cnt++, mbx_reg++)
1441
+ fw->mailbox_reg[cnt] = htons(rd_reg_word(mbx_reg));
14741442
14751443 /* Transfer sequence registers. */
14761444 iter_reg = fw->xseq_gp_reg;
....@@ -1534,19 +1502,19 @@
15341502 iter_reg = qla24xx_read_window(reg, 0x7200, 8, iter_reg);
15351503 dmp_reg = &reg->iobase_q;
15361504 for (cnt = 0; cnt < 7; cnt++, dmp_reg++)
1537
- *iter_reg++ = htonl(RD_REG_DWORD(dmp_reg));
1505
+ *iter_reg++ = htonl(rd_reg_dword(dmp_reg));
15381506
15391507 iter_reg = fw->resp0_dma_reg;
15401508 iter_reg = qla24xx_read_window(reg, 0x7300, 8, iter_reg);
15411509 dmp_reg = &reg->iobase_q;
15421510 for (cnt = 0; cnt < 7; cnt++, dmp_reg++)
1543
- *iter_reg++ = htonl(RD_REG_DWORD(dmp_reg));
1511
+ *iter_reg++ = htonl(rd_reg_dword(dmp_reg));
15441512
15451513 iter_reg = fw->req1_dma_reg;
15461514 iter_reg = qla24xx_read_window(reg, 0x7400, 8, iter_reg);
15471515 dmp_reg = &reg->iobase_q;
15481516 for (cnt = 0; cnt < 7; cnt++, dmp_reg++)
1549
- *iter_reg++ = htonl(RD_REG_DWORD(dmp_reg));
1517
+ *iter_reg++ = htonl(rd_reg_dword(dmp_reg));
15501518
15511519 /* Transmit DMA registers. */
15521520 iter_reg = fw->xmt0_dma_reg;
....@@ -1664,44 +1632,31 @@
16641632
16651633 qla25xx_fw_dump_failed_0:
16661634 qla2xxx_dump_post_process(base_vha, rval);
1667
-
1668
-qla25xx_fw_dump_failed:
1669
-#ifndef __CHECKER__
1670
- if (!hardware_locked)
1671
- spin_unlock_irqrestore(&ha->hardware_lock, flags);
1672
-#else
1673
- ;
1674
-#endif
16751635 }
16761636
16771637 void
1678
-qla81xx_fw_dump(scsi_qla_host_t *vha, int hardware_locked)
1638
+qla81xx_fw_dump(scsi_qla_host_t *vha)
16791639 {
16801640 int rval;
16811641 uint32_t cnt;
16821642 struct qla_hw_data *ha = vha->hw;
16831643 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24;
1684
- uint32_t __iomem *dmp_reg;
1685
- uint32_t *iter_reg;
1686
- uint16_t __iomem *mbx_reg;
1687
- unsigned long flags;
1644
+ __le32 __iomem *dmp_reg;
1645
+ __be32 *iter_reg;
1646
+ __le16 __iomem *mbx_reg;
16881647 struct qla81xx_fw_dump *fw;
16891648 void *nxt, *nxt_chain;
1690
- uint32_t *last_chain = NULL;
1649
+ __be32 *last_chain = NULL;
16911650 struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev);
16921651
1693
- flags = 0;
1694
- ha->fw_dump_cap_flags = 0;
1652
+ lockdep_assert_held(&ha->hardware_lock);
16951653
1696
-#ifndef __CHECKER__
1697
- if (!hardware_locked)
1698
- spin_lock_irqsave(&ha->hardware_lock, flags);
1699
-#endif
1654
+ ha->fw_dump_cap_flags = 0;
17001655
17011656 if (!ha->fw_dump) {
17021657 ql_log(ql_log_warn, vha, 0xd00a,
17031658 "No buffer available for dump.\n");
1704
- goto qla81xx_fw_dump_failed;
1659
+ return;
17051660 }
17061661
17071662 if (ha->fw_dumped) {
....@@ -1709,12 +1664,12 @@
17091664 "Firmware has been previously dumped (%p) "
17101665 "-- ignoring request.\n",
17111666 ha->fw_dump);
1712
- goto qla81xx_fw_dump_failed;
1667
+ return;
17131668 }
17141669 fw = &ha->fw_dump->isp.isp81;
17151670 qla2xxx_prep_dump(ha, ha->fw_dump);
17161671
1717
- fw->host_status = htonl(RD_REG_DWORD(&reg->host_status));
1672
+ fw->host_status = htonl(rd_reg_dword(&reg->host_status));
17181673
17191674 /*
17201675 * Pause RISC. No need to track timeout, as resetting the chip
....@@ -1728,73 +1683,73 @@
17281683 qla24xx_read_window(reg, 0x7010, 16, iter_reg);
17291684
17301685 /* PCIe registers. */
1731
- WRT_REG_DWORD(&reg->iobase_addr, 0x7C00);
1732
- RD_REG_DWORD(&reg->iobase_addr);
1733
- WRT_REG_DWORD(&reg->iobase_window, 0x01);
1686
+ wrt_reg_dword(&reg->iobase_addr, 0x7C00);
1687
+ rd_reg_dword(&reg->iobase_addr);
1688
+ wrt_reg_dword(&reg->iobase_window, 0x01);
17341689 dmp_reg = &reg->iobase_c4;
1735
- fw->pcie_regs[0] = htonl(RD_REG_DWORD(dmp_reg));
1690
+ fw->pcie_regs[0] = htonl(rd_reg_dword(dmp_reg));
17361691 dmp_reg++;
1737
- fw->pcie_regs[1] = htonl(RD_REG_DWORD(dmp_reg));
1692
+ fw->pcie_regs[1] = htonl(rd_reg_dword(dmp_reg));
17381693 dmp_reg++;
1739
- fw->pcie_regs[2] = htonl(RD_REG_DWORD(dmp_reg));
1740
- fw->pcie_regs[3] = htonl(RD_REG_DWORD(&reg->iobase_window));
1694
+ fw->pcie_regs[2] = htonl(rd_reg_dword(dmp_reg));
1695
+ fw->pcie_regs[3] = htonl(rd_reg_dword(&reg->iobase_window));
17411696
1742
- WRT_REG_DWORD(&reg->iobase_window, 0x00);
1743
- RD_REG_DWORD(&reg->iobase_window);
1697
+ wrt_reg_dword(&reg->iobase_window, 0x00);
1698
+ rd_reg_dword(&reg->iobase_window);
17441699
17451700 /* Host interface registers. */
17461701 dmp_reg = &reg->flash_addr;
1747
- for (cnt = 0; cnt < sizeof(fw->host_reg) / 4; cnt++, dmp_reg++)
1748
- fw->host_reg[cnt] = htonl(RD_REG_DWORD(dmp_reg));
1702
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->host_reg); cnt++, dmp_reg++)
1703
+ fw->host_reg[cnt] = htonl(rd_reg_dword(dmp_reg));
17491704
17501705 /* Disable interrupts. */
1751
- WRT_REG_DWORD(&reg->ictrl, 0);
1752
- RD_REG_DWORD(&reg->ictrl);
1706
+ wrt_reg_dword(&reg->ictrl, 0);
1707
+ rd_reg_dword(&reg->ictrl);
17531708
17541709 /* Shadow registers. */
1755
- WRT_REG_DWORD(&reg->iobase_addr, 0x0F70);
1756
- RD_REG_DWORD(&reg->iobase_addr);
1757
- WRT_REG_DWORD(&reg->iobase_select, 0xB0000000);
1758
- fw->shadow_reg[0] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1710
+ wrt_reg_dword(&reg->iobase_addr, 0x0F70);
1711
+ rd_reg_dword(&reg->iobase_addr);
1712
+ wrt_reg_dword(&reg->iobase_select, 0xB0000000);
1713
+ fw->shadow_reg[0] = htonl(rd_reg_dword(&reg->iobase_sdata));
17591714
1760
- WRT_REG_DWORD(&reg->iobase_select, 0xB0100000);
1761
- fw->shadow_reg[1] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1715
+ wrt_reg_dword(&reg->iobase_select, 0xB0100000);
1716
+ fw->shadow_reg[1] = htonl(rd_reg_dword(&reg->iobase_sdata));
17621717
1763
- WRT_REG_DWORD(&reg->iobase_select, 0xB0200000);
1764
- fw->shadow_reg[2] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1718
+ wrt_reg_dword(&reg->iobase_select, 0xB0200000);
1719
+ fw->shadow_reg[2] = htonl(rd_reg_dword(&reg->iobase_sdata));
17651720
1766
- WRT_REG_DWORD(&reg->iobase_select, 0xB0300000);
1767
- fw->shadow_reg[3] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1721
+ wrt_reg_dword(&reg->iobase_select, 0xB0300000);
1722
+ fw->shadow_reg[3] = htonl(rd_reg_dword(&reg->iobase_sdata));
17681723
1769
- WRT_REG_DWORD(&reg->iobase_select, 0xB0400000);
1770
- fw->shadow_reg[4] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1724
+ wrt_reg_dword(&reg->iobase_select, 0xB0400000);
1725
+ fw->shadow_reg[4] = htonl(rd_reg_dword(&reg->iobase_sdata));
17711726
1772
- WRT_REG_DWORD(&reg->iobase_select, 0xB0500000);
1773
- fw->shadow_reg[5] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1727
+ wrt_reg_dword(&reg->iobase_select, 0xB0500000);
1728
+ fw->shadow_reg[5] = htonl(rd_reg_dword(&reg->iobase_sdata));
17741729
1775
- WRT_REG_DWORD(&reg->iobase_select, 0xB0600000);
1776
- fw->shadow_reg[6] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1730
+ wrt_reg_dword(&reg->iobase_select, 0xB0600000);
1731
+ fw->shadow_reg[6] = htonl(rd_reg_dword(&reg->iobase_sdata));
17771732
1778
- WRT_REG_DWORD(&reg->iobase_select, 0xB0700000);
1779
- fw->shadow_reg[7] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1733
+ wrt_reg_dword(&reg->iobase_select, 0xB0700000);
1734
+ fw->shadow_reg[7] = htonl(rd_reg_dword(&reg->iobase_sdata));
17801735
1781
- WRT_REG_DWORD(&reg->iobase_select, 0xB0800000);
1782
- fw->shadow_reg[8] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1736
+ wrt_reg_dword(&reg->iobase_select, 0xB0800000);
1737
+ fw->shadow_reg[8] = htonl(rd_reg_dword(&reg->iobase_sdata));
17831738
1784
- WRT_REG_DWORD(&reg->iobase_select, 0xB0900000);
1785
- fw->shadow_reg[9] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1739
+ wrt_reg_dword(&reg->iobase_select, 0xB0900000);
1740
+ fw->shadow_reg[9] = htonl(rd_reg_dword(&reg->iobase_sdata));
17861741
1787
- WRT_REG_DWORD(&reg->iobase_select, 0xB0A00000);
1788
- fw->shadow_reg[10] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1742
+ wrt_reg_dword(&reg->iobase_select, 0xB0A00000);
1743
+ fw->shadow_reg[10] = htonl(rd_reg_dword(&reg->iobase_sdata));
17891744
17901745 /* RISC I/O register. */
1791
- WRT_REG_DWORD(&reg->iobase_addr, 0x0010);
1792
- fw->risc_io_reg = htonl(RD_REG_DWORD(&reg->iobase_window));
1746
+ wrt_reg_dword(&reg->iobase_addr, 0x0010);
1747
+ fw->risc_io_reg = htonl(rd_reg_dword(&reg->iobase_window));
17931748
17941749 /* Mailbox registers. */
17951750 mbx_reg = &reg->mailbox0;
1796
- for (cnt = 0; cnt < sizeof(fw->mailbox_reg) / 2; cnt++, mbx_reg++)
1797
- fw->mailbox_reg[cnt] = htons(RD_REG_WORD(mbx_reg));
1751
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->mailbox_reg); cnt++, mbx_reg++)
1752
+ fw->mailbox_reg[cnt] = htons(rd_reg_word(mbx_reg));
17981753
17991754 /* Transfer sequence registers. */
18001755 iter_reg = fw->xseq_gp_reg;
....@@ -1858,19 +1813,19 @@
18581813 iter_reg = qla24xx_read_window(reg, 0x7200, 8, iter_reg);
18591814 dmp_reg = &reg->iobase_q;
18601815 for (cnt = 0; cnt < 7; cnt++, dmp_reg++)
1861
- *iter_reg++ = htonl(RD_REG_DWORD(dmp_reg));
1816
+ *iter_reg++ = htonl(rd_reg_dword(dmp_reg));
18621817
18631818 iter_reg = fw->resp0_dma_reg;
18641819 iter_reg = qla24xx_read_window(reg, 0x7300, 8, iter_reg);
18651820 dmp_reg = &reg->iobase_q;
18661821 for (cnt = 0; cnt < 7; cnt++, dmp_reg++)
1867
- *iter_reg++ = htonl(RD_REG_DWORD(dmp_reg));
1822
+ *iter_reg++ = htonl(rd_reg_dword(dmp_reg));
18681823
18691824 iter_reg = fw->req1_dma_reg;
18701825 iter_reg = qla24xx_read_window(reg, 0x7400, 8, iter_reg);
18711826 dmp_reg = &reg->iobase_q;
18721827 for (cnt = 0; cnt < 7; cnt++, dmp_reg++)
1873
- *iter_reg++ = htonl(RD_REG_DWORD(dmp_reg));
1828
+ *iter_reg++ = htonl(rd_reg_dword(dmp_reg));
18741829
18751830 /* Transmit DMA registers. */
18761831 iter_reg = fw->xmt0_dma_reg;
....@@ -1992,57 +1947,44 @@
19921947
19931948 qla81xx_fw_dump_failed_0:
19941949 qla2xxx_dump_post_process(base_vha, rval);
1995
-
1996
-qla81xx_fw_dump_failed:
1997
-#ifndef __CHECKER__
1998
- if (!hardware_locked)
1999
- spin_unlock_irqrestore(&ha->hardware_lock, flags);
2000
-#else
2001
- ;
2002
-#endif
20031950 }
20041951
20051952 void
2006
-qla83xx_fw_dump(scsi_qla_host_t *vha, int hardware_locked)
1953
+qla83xx_fw_dump(scsi_qla_host_t *vha)
20071954 {
20081955 int rval;
20091956 uint32_t cnt;
20101957 struct qla_hw_data *ha = vha->hw;
20111958 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24;
2012
- uint32_t __iomem *dmp_reg;
2013
- uint32_t *iter_reg;
2014
- uint16_t __iomem *mbx_reg;
2015
- unsigned long flags;
1959
+ __le32 __iomem *dmp_reg;
1960
+ __be32 *iter_reg;
1961
+ __le16 __iomem *mbx_reg;
20161962 struct qla83xx_fw_dump *fw;
20171963 void *nxt, *nxt_chain;
2018
- uint32_t *last_chain = NULL;
1964
+ __be32 *last_chain = NULL;
20191965 struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev);
20201966
2021
- flags = 0;
2022
- ha->fw_dump_cap_flags = 0;
1967
+ lockdep_assert_held(&ha->hardware_lock);
20231968
2024
-#ifndef __CHECKER__
2025
- if (!hardware_locked)
2026
- spin_lock_irqsave(&ha->hardware_lock, flags);
2027
-#endif
1969
+ ha->fw_dump_cap_flags = 0;
20281970
20291971 if (!ha->fw_dump) {
20301972 ql_log(ql_log_warn, vha, 0xd00c,
20311973 "No buffer available for dump!!!\n");
2032
- goto qla83xx_fw_dump_failed;
1974
+ return;
20331975 }
20341976
20351977 if (ha->fw_dumped) {
20361978 ql_log(ql_log_warn, vha, 0xd00d,
20371979 "Firmware has been previously dumped (%p) -- ignoring "
20381980 "request...\n", ha->fw_dump);
2039
- goto qla83xx_fw_dump_failed;
1981
+ return;
20401982 }
20411983 QLA_FW_STOPPED(ha);
20421984 fw = &ha->fw_dump->isp.isp83;
20431985 qla2xxx_prep_dump(ha, ha->fw_dump);
20441986
2045
- fw->host_status = htonl(RD_REG_DWORD(&reg->host_status));
1987
+ fw->host_status = htonl(rd_reg_dword(&reg->host_status));
20461988
20471989 /*
20481990 * Pause RISC. No need to track timeout, as resetting the chip
....@@ -2050,24 +1992,24 @@
20501992 */
20511993 qla24xx_pause_risc(reg, ha);
20521994
2053
- WRT_REG_DWORD(&reg->iobase_addr, 0x6000);
1995
+ wrt_reg_dword(&reg->iobase_addr, 0x6000);
20541996 dmp_reg = &reg->iobase_window;
2055
- RD_REG_DWORD(dmp_reg);
2056
- WRT_REG_DWORD(dmp_reg, 0);
1997
+ rd_reg_dword(dmp_reg);
1998
+ wrt_reg_dword(dmp_reg, 0);
20571999
20582000 dmp_reg = &reg->unused_4_1[0];
2059
- RD_REG_DWORD(dmp_reg);
2060
- WRT_REG_DWORD(dmp_reg, 0);
2001
+ rd_reg_dword(dmp_reg);
2002
+ wrt_reg_dword(dmp_reg, 0);
20612003
2062
- WRT_REG_DWORD(&reg->iobase_addr, 0x6010);
2004
+ wrt_reg_dword(&reg->iobase_addr, 0x6010);
20632005 dmp_reg = &reg->unused_4_1[2];
2064
- RD_REG_DWORD(dmp_reg);
2065
- WRT_REG_DWORD(dmp_reg, 0);
2006
+ rd_reg_dword(dmp_reg);
2007
+ wrt_reg_dword(dmp_reg, 0);
20662008
20672009 /* select PCR and disable ecc checking and correction */
2068
- WRT_REG_DWORD(&reg->iobase_addr, 0x0F70);
2069
- RD_REG_DWORD(&reg->iobase_addr);
2070
- WRT_REG_DWORD(&reg->iobase_select, 0x60000000); /* write to F0h = PCR */
2010
+ wrt_reg_dword(&reg->iobase_addr, 0x0F70);
2011
+ rd_reg_dword(&reg->iobase_addr);
2012
+ wrt_reg_dword(&reg->iobase_select, 0x60000000); /* write to F0h = PCR */
20712013
20722014 /* Host/Risc registers. */
20732015 iter_reg = fw->host_risc_reg;
....@@ -2076,73 +2018,73 @@
20762018 qla24xx_read_window(reg, 0x7040, 16, iter_reg);
20772019
20782020 /* PCIe registers. */
2079
- WRT_REG_DWORD(&reg->iobase_addr, 0x7C00);
2080
- RD_REG_DWORD(&reg->iobase_addr);
2081
- WRT_REG_DWORD(&reg->iobase_window, 0x01);
2021
+ wrt_reg_dword(&reg->iobase_addr, 0x7C00);
2022
+ rd_reg_dword(&reg->iobase_addr);
2023
+ wrt_reg_dword(&reg->iobase_window, 0x01);
20822024 dmp_reg = &reg->iobase_c4;
2083
- fw->pcie_regs[0] = htonl(RD_REG_DWORD(dmp_reg));
2025
+ fw->pcie_regs[0] = htonl(rd_reg_dword(dmp_reg));
20842026 dmp_reg++;
2085
- fw->pcie_regs[1] = htonl(RD_REG_DWORD(dmp_reg));
2027
+ fw->pcie_regs[1] = htonl(rd_reg_dword(dmp_reg));
20862028 dmp_reg++;
2087
- fw->pcie_regs[2] = htonl(RD_REG_DWORD(dmp_reg));
2088
- fw->pcie_regs[3] = htonl(RD_REG_DWORD(&reg->iobase_window));
2029
+ fw->pcie_regs[2] = htonl(rd_reg_dword(dmp_reg));
2030
+ fw->pcie_regs[3] = htonl(rd_reg_dword(&reg->iobase_window));
20892031
2090
- WRT_REG_DWORD(&reg->iobase_window, 0x00);
2091
- RD_REG_DWORD(&reg->iobase_window);
2032
+ wrt_reg_dword(&reg->iobase_window, 0x00);
2033
+ rd_reg_dword(&reg->iobase_window);
20922034
20932035 /* Host interface registers. */
20942036 dmp_reg = &reg->flash_addr;
2095
- for (cnt = 0; cnt < sizeof(fw->host_reg) / 4; cnt++, dmp_reg++)
2096
- fw->host_reg[cnt] = htonl(RD_REG_DWORD(dmp_reg));
2037
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->host_reg); cnt++, dmp_reg++)
2038
+ fw->host_reg[cnt] = htonl(rd_reg_dword(dmp_reg));
20972039
20982040 /* Disable interrupts. */
2099
- WRT_REG_DWORD(&reg->ictrl, 0);
2100
- RD_REG_DWORD(&reg->ictrl);
2041
+ wrt_reg_dword(&reg->ictrl, 0);
2042
+ rd_reg_dword(&reg->ictrl);
21012043
21022044 /* Shadow registers. */
2103
- WRT_REG_DWORD(&reg->iobase_addr, 0x0F70);
2104
- RD_REG_DWORD(&reg->iobase_addr);
2105
- WRT_REG_DWORD(&reg->iobase_select, 0xB0000000);
2106
- fw->shadow_reg[0] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
2045
+ wrt_reg_dword(&reg->iobase_addr, 0x0F70);
2046
+ rd_reg_dword(&reg->iobase_addr);
2047
+ wrt_reg_dword(&reg->iobase_select, 0xB0000000);
2048
+ fw->shadow_reg[0] = htonl(rd_reg_dword(&reg->iobase_sdata));
21072049
2108
- WRT_REG_DWORD(&reg->iobase_select, 0xB0100000);
2109
- fw->shadow_reg[1] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
2050
+ wrt_reg_dword(&reg->iobase_select, 0xB0100000);
2051
+ fw->shadow_reg[1] = htonl(rd_reg_dword(&reg->iobase_sdata));
21102052
2111
- WRT_REG_DWORD(&reg->iobase_select, 0xB0200000);
2112
- fw->shadow_reg[2] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
2053
+ wrt_reg_dword(&reg->iobase_select, 0xB0200000);
2054
+ fw->shadow_reg[2] = htonl(rd_reg_dword(&reg->iobase_sdata));
21132055
2114
- WRT_REG_DWORD(&reg->iobase_select, 0xB0300000);
2115
- fw->shadow_reg[3] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
2056
+ wrt_reg_dword(&reg->iobase_select, 0xB0300000);
2057
+ fw->shadow_reg[3] = htonl(rd_reg_dword(&reg->iobase_sdata));
21162058
2117
- WRT_REG_DWORD(&reg->iobase_select, 0xB0400000);
2118
- fw->shadow_reg[4] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
2059
+ wrt_reg_dword(&reg->iobase_select, 0xB0400000);
2060
+ fw->shadow_reg[4] = htonl(rd_reg_dword(&reg->iobase_sdata));
21192061
2120
- WRT_REG_DWORD(&reg->iobase_select, 0xB0500000);
2121
- fw->shadow_reg[5] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
2062
+ wrt_reg_dword(&reg->iobase_select, 0xB0500000);
2063
+ fw->shadow_reg[5] = htonl(rd_reg_dword(&reg->iobase_sdata));
21222064
2123
- WRT_REG_DWORD(&reg->iobase_select, 0xB0600000);
2124
- fw->shadow_reg[6] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
2065
+ wrt_reg_dword(&reg->iobase_select, 0xB0600000);
2066
+ fw->shadow_reg[6] = htonl(rd_reg_dword(&reg->iobase_sdata));
21252067
2126
- WRT_REG_DWORD(&reg->iobase_select, 0xB0700000);
2127
- fw->shadow_reg[7] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
2068
+ wrt_reg_dword(&reg->iobase_select, 0xB0700000);
2069
+ fw->shadow_reg[7] = htonl(rd_reg_dword(&reg->iobase_sdata));
21282070
2129
- WRT_REG_DWORD(&reg->iobase_select, 0xB0800000);
2130
- fw->shadow_reg[8] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
2071
+ wrt_reg_dword(&reg->iobase_select, 0xB0800000);
2072
+ fw->shadow_reg[8] = htonl(rd_reg_dword(&reg->iobase_sdata));
21312073
2132
- WRT_REG_DWORD(&reg->iobase_select, 0xB0900000);
2133
- fw->shadow_reg[9] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
2074
+ wrt_reg_dword(&reg->iobase_select, 0xB0900000);
2075
+ fw->shadow_reg[9] = htonl(rd_reg_dword(&reg->iobase_sdata));
21342076
2135
- WRT_REG_DWORD(&reg->iobase_select, 0xB0A00000);
2136
- fw->shadow_reg[10] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
2077
+ wrt_reg_dword(&reg->iobase_select, 0xB0A00000);
2078
+ fw->shadow_reg[10] = htonl(rd_reg_dword(&reg->iobase_sdata));
21372079
21382080 /* RISC I/O register. */
2139
- WRT_REG_DWORD(&reg->iobase_addr, 0x0010);
2140
- fw->risc_io_reg = htonl(RD_REG_DWORD(&reg->iobase_window));
2081
+ wrt_reg_dword(&reg->iobase_addr, 0x0010);
2082
+ fw->risc_io_reg = htonl(rd_reg_dword(&reg->iobase_window));
21412083
21422084 /* Mailbox registers. */
21432085 mbx_reg = &reg->mailbox0;
2144
- for (cnt = 0; cnt < sizeof(fw->mailbox_reg) / 2; cnt++, mbx_reg++)
2145
- fw->mailbox_reg[cnt] = htons(RD_REG_WORD(mbx_reg));
2086
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->mailbox_reg); cnt++, mbx_reg++)
2087
+ fw->mailbox_reg[cnt] = htons(rd_reg_word(mbx_reg));
21462088
21472089 /* Transfer sequence registers. */
21482090 iter_reg = fw->xseq_gp_reg;
....@@ -2238,19 +2180,19 @@
22382180 iter_reg = qla24xx_read_window(reg, 0x7200, 8, iter_reg);
22392181 dmp_reg = &reg->iobase_q;
22402182 for (cnt = 0; cnt < 7; cnt++, dmp_reg++)
2241
- *iter_reg++ = htonl(RD_REG_DWORD(dmp_reg));
2183
+ *iter_reg++ = htonl(rd_reg_dword(dmp_reg));
22422184
22432185 iter_reg = fw->resp0_dma_reg;
22442186 iter_reg = qla24xx_read_window(reg, 0x7300, 8, iter_reg);
22452187 dmp_reg = &reg->iobase_q;
22462188 for (cnt = 0; cnt < 7; cnt++, dmp_reg++)
2247
- *iter_reg++ = htonl(RD_REG_DWORD(dmp_reg));
2189
+ *iter_reg++ = htonl(rd_reg_dword(dmp_reg));
22482190
22492191 iter_reg = fw->req1_dma_reg;
22502192 iter_reg = qla24xx_read_window(reg, 0x7400, 8, iter_reg);
22512193 dmp_reg = &reg->iobase_q;
22522194 for (cnt = 0; cnt < 7; cnt++, dmp_reg++)
2253
- *iter_reg++ = htonl(RD_REG_DWORD(dmp_reg));
2195
+ *iter_reg++ = htonl(rd_reg_dword(dmp_reg));
22542196
22552197 /* Transmit DMA registers. */
22562198 iter_reg = fw->xmt0_dma_reg;
....@@ -2456,16 +2398,16 @@
24562398
24572399 ql_log(ql_log_warn, vha, 0xd00f, "try a bigger hammer!!!\n");
24582400
2459
- WRT_REG_DWORD(&reg->hccr, HCCRX_SET_RISC_RESET);
2460
- RD_REG_DWORD(&reg->hccr);
2401
+ wrt_reg_dword(&reg->hccr, HCCRX_SET_RISC_RESET);
2402
+ rd_reg_dword(&reg->hccr);
24612403
2462
- WRT_REG_DWORD(&reg->hccr, HCCRX_REL_RISC_PAUSE);
2463
- RD_REG_DWORD(&reg->hccr);
2404
+ wrt_reg_dword(&reg->hccr, HCCRX_REL_RISC_PAUSE);
2405
+ rd_reg_dword(&reg->hccr);
24642406
2465
- WRT_REG_DWORD(&reg->hccr, HCCRX_CLR_RISC_RESET);
2466
- RD_REG_DWORD(&reg->hccr);
2407
+ wrt_reg_dword(&reg->hccr, HCCRX_CLR_RISC_RESET);
2408
+ rd_reg_dword(&reg->hccr);
24672409
2468
- for (cnt = 30000; cnt && (RD_REG_WORD(&reg->mailbox0)); cnt--)
2410
+ for (cnt = 30000; cnt && (rd_reg_word(&reg->mailbox0)); cnt--)
24692411 udelay(5);
24702412
24712413 if (!cnt) {
....@@ -2506,19 +2448,28 @@
25062448
25072449 qla83xx_fw_dump_failed_0:
25082450 qla2xxx_dump_post_process(base_vha, rval);
2509
-
2510
-qla83xx_fw_dump_failed:
2511
-#ifndef __CHECKER__
2512
- if (!hardware_locked)
2513
- spin_unlock_irqrestore(&ha->hardware_lock, flags);
2514
-#else
2515
- ;
2516
-#endif
25172451 }
25182452
25192453 /****************************************************************************/
25202454 /* Driver Debug Functions. */
25212455 /****************************************************************************/
2456
+
2457
+/* Write the debug message prefix into @pbuf. */
2458
+static void ql_dbg_prefix(char *pbuf, int pbuf_size,
2459
+ const scsi_qla_host_t *vha, uint msg_id)
2460
+{
2461
+ if (vha) {
2462
+ const struct pci_dev *pdev = vha->hw->pdev;
2463
+
2464
+ /* <module-name> [<dev-name>]-<msg-id>:<host>: */
2465
+ snprintf(pbuf, pbuf_size, "%s [%s]-%04x:%lu: ", QL_MSGHDR,
2466
+ dev_name(&(pdev->dev)), msg_id, vha->host_no);
2467
+ } else {
2468
+ /* <module-name> [<dev-name>]-<msg-id>: : */
2469
+ snprintf(pbuf, pbuf_size, "%s [%s]-%04x: : ", QL_MSGHDR,
2470
+ "0000:00:00.0", msg_id);
2471
+ }
2472
+}
25222473
25232474 /*
25242475 * This function is for formatting and logging debug information.
....@@ -2534,12 +2485,13 @@
25342485 * msg: The message to be displayed.
25352486 */
25362487 void
2537
-ql_dbg(uint32_t level, scsi_qla_host_t *vha, int32_t id, const char *fmt, ...)
2488
+ql_dbg(uint level, scsi_qla_host_t *vha, uint id, const char *fmt, ...)
25382489 {
25392490 va_list va;
25402491 struct va_format vaf;
2492
+ char pbuf[64];
25412493
2542
- if (!ql_mask_match(level))
2494
+ if (!ql_mask_match(level) && !trace_ql_dbg_log_enabled())
25432495 return;
25442496
25452497 va_start(va, fmt);
....@@ -2547,16 +2499,12 @@
25472499 vaf.fmt = fmt;
25482500 vaf.va = &va;
25492501
2550
- if (vha != NULL) {
2551
- const struct pci_dev *pdev = vha->hw->pdev;
2552
- /* <module-name> <pci-name> <msg-id>:<host> Message */
2553
- pr_warn("%s [%s]-%04x:%ld: %pV",
2554
- QL_MSGHDR, dev_name(&(pdev->dev)), id + ql_dbg_offset,
2555
- vha->host_no, &vaf);
2556
- } else {
2557
- pr_warn("%s [%s]-%04x: : %pV",
2558
- QL_MSGHDR, "0000:00:00.0", id + ql_dbg_offset, &vaf);
2559
- }
2502
+ ql_dbg_prefix(pbuf, ARRAY_SIZE(pbuf), vha, id);
2503
+
2504
+ if (!ql_mask_match(level))
2505
+ trace_ql_dbg_log(pbuf, &vaf);
2506
+ else
2507
+ pr_warn("%s%pV", pbuf, &vaf);
25602508
25612509 va_end(va);
25622510
....@@ -2577,11 +2525,11 @@
25772525 * msg: The message to be displayed.
25782526 */
25792527 void
2580
-ql_dbg_pci(uint32_t level, struct pci_dev *pdev, int32_t id,
2581
- const char *fmt, ...)
2528
+ql_dbg_pci(uint level, struct pci_dev *pdev, uint id, const char *fmt, ...)
25822529 {
25832530 va_list va;
25842531 struct va_format vaf;
2532
+ char pbuf[128];
25852533
25862534 if (pdev == NULL)
25872535 return;
....@@ -2593,9 +2541,8 @@
25932541 vaf.fmt = fmt;
25942542 vaf.va = &va;
25952543
2596
- /* <module-name> <dev-name>:<msg-id> Message */
2597
- pr_warn("%s [%s]-%04x: : %pV",
2598
- QL_MSGHDR, dev_name(&(pdev->dev)), id + ql_dbg_offset, &vaf);
2544
+ ql_dbg_prefix(pbuf, ARRAY_SIZE(pbuf), NULL, id + ql_dbg_offset);
2545
+ pr_warn("%s%pV", pbuf, &vaf);
25992546
26002547 va_end(va);
26012548 }
....@@ -2614,7 +2561,7 @@
26142561 * msg: The message to be displayed.
26152562 */
26162563 void
2617
-ql_log(uint32_t level, scsi_qla_host_t *vha, int32_t id, const char *fmt, ...)
2564
+ql_log(uint level, scsi_qla_host_t *vha, uint id, const char *fmt, ...)
26182565 {
26192566 va_list va;
26202567 struct va_format vaf;
....@@ -2623,16 +2570,7 @@
26232570 if (level > ql_errlev)
26242571 return;
26252572
2626
- if (vha != NULL) {
2627
- const struct pci_dev *pdev = vha->hw->pdev;
2628
- /* <module-name> <msg-id>:<host> Message */
2629
- snprintf(pbuf, sizeof(pbuf), "%s [%s]-%04x:%ld: ",
2630
- QL_MSGHDR, dev_name(&(pdev->dev)), id, vha->host_no);
2631
- } else {
2632
- snprintf(pbuf, sizeof(pbuf), "%s [%s]-%04x: : ",
2633
- QL_MSGHDR, "0000:00:00.0", id);
2634
- }
2635
- pbuf[sizeof(pbuf) - 1] = 0;
2573
+ ql_dbg_prefix(pbuf, ARRAY_SIZE(pbuf), vha, id);
26362574
26372575 va_start(va, fmt);
26382576
....@@ -2672,8 +2610,7 @@
26722610 * msg: The message to be displayed.
26732611 */
26742612 void
2675
-ql_log_pci(uint32_t level, struct pci_dev *pdev, int32_t id,
2676
- const char *fmt, ...)
2613
+ql_log_pci(uint level, struct pci_dev *pdev, uint id, const char *fmt, ...)
26772614 {
26782615 va_list va;
26792616 struct va_format vaf;
....@@ -2684,10 +2621,7 @@
26842621 if (level > ql_errlev)
26852622 return;
26862623
2687
- /* <module-name> <dev-name>:<msg-id> Message */
2688
- snprintf(pbuf, sizeof(pbuf), "%s [%s]-%04x: : ",
2689
- QL_MSGHDR, dev_name(&(pdev->dev)), id);
2690
- pbuf[sizeof(pbuf) - 1] = 0;
2624
+ ql_dbg_prefix(pbuf, ARRAY_SIZE(pbuf), NULL, id);
26912625
26922626 va_start(va, fmt);
26932627
....@@ -2713,14 +2647,14 @@
27132647 }
27142648
27152649 void
2716
-ql_dump_regs(uint32_t level, scsi_qla_host_t *vha, int32_t id)
2650
+ql_dump_regs(uint level, scsi_qla_host_t *vha, uint id)
27172651 {
27182652 int i;
27192653 struct qla_hw_data *ha = vha->hw;
27202654 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp;
27212655 struct device_reg_24xx __iomem *reg24 = &ha->iobase->isp24;
27222656 struct device_reg_82xx __iomem *reg82 = &ha->iobase->isp82;
2723
- uint16_t __iomem *mbx_reg;
2657
+ __le16 __iomem *mbx_reg;
27242658
27252659 if (!ql_mask_match(level))
27262660 return;
....@@ -2735,13 +2669,12 @@
27352669 ql_dbg(level, vha, id, "Mailbox registers:\n");
27362670 for (i = 0; i < 6; i++, mbx_reg++)
27372671 ql_dbg(level, vha, id,
2738
- "mbox[%d] 0x%04x\n", i, RD_REG_WORD(mbx_reg));
2672
+ "mbox[%d] %#04x\n", i, rd_reg_word(mbx_reg));
27392673 }
27402674
2741
-
27422675 void
2743
-ql_dump_buffer(uint32_t level, scsi_qla_host_t *vha, int32_t id,
2744
- uint8_t *buf, uint size)
2676
+ql_dump_buffer(uint level, scsi_qla_host_t *vha, uint id, const void *buf,
2677
+ uint size)
27452678 {
27462679 uint cnt;
27472680
....@@ -2783,16 +2716,7 @@
27832716 if (level > ql_errlev)
27842717 return;
27852718
2786
- if (qpair != NULL) {
2787
- const struct pci_dev *pdev = qpair->pdev;
2788
- /* <module-name> <msg-id>:<host> Message */
2789
- snprintf(pbuf, sizeof(pbuf), "%s [%s]-%04x: ",
2790
- QL_MSGHDR, dev_name(&(pdev->dev)), id);
2791
- } else {
2792
- snprintf(pbuf, sizeof(pbuf), "%s [%s]-%04x: : ",
2793
- QL_MSGHDR, "0000:00:00.0", id);
2794
- }
2795
- pbuf[sizeof(pbuf) - 1] = 0;
2719
+ ql_dbg_prefix(pbuf, ARRAY_SIZE(pbuf), qpair ? qpair->vha : NULL, id);
27962720
27972721 va_start(va, fmt);
27982722
....@@ -2836,6 +2760,7 @@
28362760 {
28372761 va_list va;
28382762 struct va_format vaf;
2763
+ char pbuf[128];
28392764
28402765 if (!ql_mask_match(level))
28412766 return;
....@@ -2845,16 +2770,9 @@
28452770 vaf.fmt = fmt;
28462771 vaf.va = &va;
28472772
2848
- if (qpair != NULL) {
2849
- const struct pci_dev *pdev = qpair->pdev;
2850
- /* <module-name> <pci-name> <msg-id>:<host> Message */
2851
- pr_warn("%s [%s]-%04x: %pV",
2852
- QL_MSGHDR, dev_name(&(pdev->dev)), id + ql_dbg_offset,
2853
- &vaf);
2854
- } else {
2855
- pr_warn("%s [%s]-%04x: : %pV",
2856
- QL_MSGHDR, "0000:00:00.0", id + ql_dbg_offset, &vaf);
2857
- }
2773
+ ql_dbg_prefix(pbuf, ARRAY_SIZE(pbuf), qpair ? qpair->vha : NULL,
2774
+ id + ql_dbg_offset);
2775
+ pr_warn("%s%pV", pbuf, &vaf);
28582776
28592777 va_end(va);
28602778