forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-09 95099d4622f8cb224d94e314c7a8e0df60b13f87
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,14 +10,11 @@
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 |
....@@ -26,11 +22,7 @@
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,161 @@
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;
120115
121
- rval = QLA_SUCCESS;
122
- mb0 = 0;
123
-
124
- WRT_REG_WORD(&reg->mailbox0, MBC_LOAD_DUMP_MPI_RAM);
125116 clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
117
+ for (i = 0; i < ram_dwords; i += dwords, addr += dwords) {
118
+ if (i + dwords > ram_dwords)
119
+ dwords = ram_dwords - i;
126120
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;
121
+ wrt_reg_word(&reg->mailbox0, MBC_LOAD_DUMP_MPI_RAM);
122
+ wrt_reg_word(&reg->mailbox1, LSW(addr));
123
+ wrt_reg_word(&reg->mailbox8, MSW(addr));
132124
133
- WRT_REG_WORD(&reg->mailbox1, LSW(addr));
134
- WRT_REG_WORD(&reg->mailbox8, MSW(addr));
125
+ wrt_reg_word(&reg->mailbox2, MSW(LSD(dump_dma)));
126
+ wrt_reg_word(&reg->mailbox3, LSW(LSD(dump_dma)));
127
+ wrt_reg_word(&reg->mailbox6, MSW(MSD(dump_dma)));
128
+ wrt_reg_word(&reg->mailbox7, LSW(MSD(dump_dma)));
135129
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)));
130
+ wrt_reg_word(&reg->mailbox4, MSW(dwords));
131
+ wrt_reg_word(&reg->mailbox5, LSW(dwords));
140132
141
- WRT_REG_WORD(&reg->mailbox4, MSW(dwords));
142
- WRT_REG_WORD(&reg->mailbox5, LSW(dwords));
143
-
144
- WRT_REG_WORD(&reg->mailbox9, 0);
145
- WRT_REG_DWORD(&reg->hccr, HCCRX_SET_HOST_INT);
133
+ wrt_reg_word(&reg->mailbox9, 0);
134
+ wrt_reg_dword(&reg->hccr, HCCRX_SET_HOST_INT);
146135
147136 ha->flags.mbox_int = 0;
148
- for (timer = 6000000; timer; timer--) {
137
+ while (timer--) {
138
+ udelay(5);
139
+
140
+ stat = rd_reg_dword(&reg->host_status);
149141 /* Check for pending interrupts. */
150
- stat = RD_REG_DWORD(&reg->host_status);
151
- if (stat & HSRX_RISC_INT) {
152
- stat &= 0xff;
142
+ if (!(stat & HSRX_RISC_INT))
143
+ continue;
153144
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
- }
145
+ stat &= 0xff;
146
+ if (stat != 0x1 && stat != 0x2 &&
147
+ stat != 0x10 && stat != 0x11) {
167148
168149 /* 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);
150
+ wrt_reg_dword(&reg->hccr, HCCRX_CLR_RISC_INT);
151
+ rd_reg_dword(&reg->hccr);
152
+ continue;
171153 }
172
- udelay(5);
154
+
155
+ set_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
156
+ rval = rd_reg_word(&reg->mailbox0) & MBS_MASK;
157
+ wrt_reg_dword(&reg->hccr, HCCRX_CLR_RISC_INT);
158
+ rd_reg_dword(&reg->hccr);
159
+ break;
173160 }
174161 ha->flags.mbox_int = 1;
162
+ *nxt = ram + i;
175163
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;
164
+ if (!test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) {
165
+ /* no interrupt, timed out*/
166
+ return rval;
167
+ }
168
+ if (rval) {
169
+ /* error completion status */
170
+ return rval;
171
+ }
172
+ for (j = 0; j < dwords; j++) {
173
+ ram[i + j] =
174
+ (IS_QLA27XX(ha) || IS_QLA28XX(ha)) ?
175
+ chunk[j] : swab32(chunk[j]);
183176 }
184177 }
185178
186
- *nxt = rval == QLA_SUCCESS ? &ram[cnt] : NULL;
187
- return rval;
179
+ *nxt = ram + i;
180
+ return QLA_SUCCESS;
188181 }
189182
190183 int
191
-qla24xx_dump_ram(struct qla_hw_data *ha, uint32_t addr, uint32_t *ram,
192
- uint32_t ram_dwords, void **nxt)
184
+qla24xx_dump_ram(struct qla_hw_data *ha, uint32_t addr, __be32 *ram,
185
+ uint32_t ram_dwords, void **nxt)
193186 {
194
- int rval;
195
- uint32_t cnt, stat, timer, dwords, idx;
196
- uint16_t mb0;
187
+ int rval = QLA_FUNCTION_FAILED;
197188 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24;
198189 dma_addr_t dump_dma = ha->gid_list_dma;
199
- uint32_t *dump = (uint32_t *)ha->gid_list;
190
+ uint32_t *chunk = (uint32_t *)ha->gid_list;
191
+ uint32_t dwords = qla2x00_gid_list_size(ha) / 4;
192
+ uint32_t stat;
193
+ ulong i, j, timer = 6000000;
200194
201
- rval = QLA_SUCCESS;
202
- mb0 = 0;
203
-
204
- WRT_REG_WORD(&reg->mailbox0, MBC_DUMP_RISC_RAM_EXTENDED);
205195 clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
206196
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;
197
+ for (i = 0; i < ram_dwords; i += dwords, addr += dwords) {
198
+ if (i + dwords > ram_dwords)
199
+ dwords = ram_dwords - i;
212200
213
- WRT_REG_WORD(&reg->mailbox1, LSW(addr));
214
- WRT_REG_WORD(&reg->mailbox8, MSW(addr));
201
+ wrt_reg_word(&reg->mailbox0, MBC_DUMP_RISC_RAM_EXTENDED);
202
+ wrt_reg_word(&reg->mailbox1, LSW(addr));
203
+ wrt_reg_word(&reg->mailbox8, MSW(addr));
204
+ wrt_reg_word(&reg->mailbox10, 0);
215205
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)));
206
+ wrt_reg_word(&reg->mailbox2, MSW(LSD(dump_dma)));
207
+ wrt_reg_word(&reg->mailbox3, LSW(LSD(dump_dma)));
208
+ wrt_reg_word(&reg->mailbox6, MSW(MSD(dump_dma)));
209
+ wrt_reg_word(&reg->mailbox7, LSW(MSD(dump_dma)));
220210
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);
211
+ wrt_reg_word(&reg->mailbox4, MSW(dwords));
212
+ wrt_reg_word(&reg->mailbox5, LSW(dwords));
213
+ wrt_reg_dword(&reg->hccr, HCCRX_SET_HOST_INT);
224214
225215 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
- }
216
+ while (timer--) {
249217 udelay(5);
218
+ stat = rd_reg_dword(&reg->host_status);
219
+
220
+ /* Check for pending interrupts. */
221
+ if (!(stat & HSRX_RISC_INT))
222
+ continue;
223
+
224
+ stat &= 0xff;
225
+ if (stat != 0x1 && stat != 0x2 &&
226
+ stat != 0x10 && stat != 0x11) {
227
+ wrt_reg_dword(&reg->hccr, HCCRX_CLR_RISC_INT);
228
+ rd_reg_dword(&reg->hccr);
229
+ continue;
230
+ }
231
+
232
+ set_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
233
+ rval = rd_reg_word(&reg->mailbox0) & MBS_MASK;
234
+ wrt_reg_dword(&reg->hccr, HCCRX_CLR_RISC_INT);
235
+ rd_reg_dword(&reg->hccr);
236
+ break;
250237 }
251238 ha->flags.mbox_int = 1;
239
+ *nxt = ram + i;
252240
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;
241
+ if (!test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) {
242
+ /* no interrupt, timed out*/
243
+ return rval;
244
+ }
245
+ if (rval) {
246
+ /* error completion status */
247
+ return rval;
248
+ }
249
+ for (j = 0; j < dwords; j++) {
250
+ ram[i + j] = (__force __be32)
251
+ ((IS_QLA27XX(ha) || IS_QLA28XX(ha)) ?
252
+ chunk[j] : swab32(chunk[j]));
260253 }
261254 }
262255
263
- *nxt = rval == QLA_SUCCESS ? &ram[cnt]: NULL;
264
- return rval;
256
+ *nxt = ram + i;
257
+ return QLA_SUCCESS;
265258 }
266259
267260 static int
268
-qla24xx_dump_memory(struct qla_hw_data *ha, uint32_t *code_ram,
269
- uint32_t cram_size, void **nxt)
261
+qla24xx_dump_memory(struct qla_hw_data *ha, __be32 *code_ram,
262
+ uint32_t cram_size, void **nxt)
270263 {
271264 int rval;
272265
....@@ -286,16 +279,16 @@
286279 return rval;
287280 }
288281
289
-static uint32_t *
282
+static __be32 *
290283 qla24xx_read_window(struct device_reg_24xx __iomem *reg, uint32_t iobase,
291
- uint32_t count, uint32_t *buf)
284
+ uint32_t count, __be32 *buf)
292285 {
293
- uint32_t __iomem *dmp_reg;
286
+ __le32 __iomem *dmp_reg;
294287
295
- WRT_REG_DWORD(&reg->iobase_addr, iobase);
288
+ wrt_reg_dword(&reg->iobase_addr, iobase);
296289 dmp_reg = &reg->iobase_window;
297290 for ( ; count--; dmp_reg++)
298
- *buf++ = htonl(RD_REG_DWORD(dmp_reg));
291
+ *buf++ = htonl(rd_reg_dword(dmp_reg));
299292
300293 return buf;
301294 }
....@@ -303,11 +296,11 @@
303296 void
304297 qla24xx_pause_risc(struct device_reg_24xx __iomem *reg, struct qla_hw_data *ha)
305298 {
306
- WRT_REG_DWORD(&reg->hccr, HCCRX_SET_RISC_PAUSE);
299
+ wrt_reg_dword(&reg->hccr, HCCRX_SET_RISC_PAUSE);
307300
308301 /* 100 usec delay is sufficient enough for hardware to pause RISC */
309302 udelay(100);
310
- if (RD_REG_DWORD(&reg->host_status) & HSRX_RISC_PAUSED)
303
+ if (rd_reg_dword(&reg->host_status) & HSRX_RISC_PAUSED)
311304 set_bit(RISC_PAUSE_CMPL, &ha->fw_dump_cap_flags);
312305 }
313306
....@@ -324,17 +317,17 @@
324317 * Driver can proceed with the reset sequence after waiting
325318 * for a timeout period.
326319 */
327
- WRT_REG_DWORD(&reg->ctrl_status, CSRX_DMA_SHUTDOWN|MWB_4096_BYTES);
320
+ wrt_reg_dword(&reg->ctrl_status, CSRX_DMA_SHUTDOWN|MWB_4096_BYTES);
328321 for (cnt = 0; cnt < 30000; cnt++) {
329
- if ((RD_REG_DWORD(&reg->ctrl_status) & CSRX_DMA_ACTIVE) == 0)
322
+ if ((rd_reg_dword(&reg->ctrl_status) & CSRX_DMA_ACTIVE) == 0)
330323 break;
331324
332325 udelay(10);
333326 }
334
- if (!(RD_REG_DWORD(&reg->ctrl_status) & CSRX_DMA_ACTIVE))
327
+ if (!(rd_reg_dword(&reg->ctrl_status) & CSRX_DMA_ACTIVE))
335328 set_bit(DMA_SHUTDOWN_CMPL, &ha->fw_dump_cap_flags);
336329
337
- WRT_REG_DWORD(&reg->ctrl_status,
330
+ wrt_reg_dword(&reg->ctrl_status,
338331 CSRX_ISP_SOFT_RESET|CSRX_DMA_SHUTDOWN|MWB_4096_BYTES);
339332 pci_read_config_word(ha->pdev, PCI_COMMAND, &wd);
340333
....@@ -342,19 +335,19 @@
342335
343336 /* Wait for soft-reset to complete. */
344337 for (cnt = 0; cnt < 30000; cnt++) {
345
- if ((RD_REG_DWORD(&reg->ctrl_status) &
338
+ if ((rd_reg_dword(&reg->ctrl_status) &
346339 CSRX_ISP_SOFT_RESET) == 0)
347340 break;
348341
349342 udelay(10);
350343 }
351
- if (!(RD_REG_DWORD(&reg->ctrl_status) & CSRX_ISP_SOFT_RESET))
344
+ if (!(rd_reg_dword(&reg->ctrl_status) & CSRX_ISP_SOFT_RESET))
352345 set_bit(ISP_RESET_CMPL, &ha->fw_dump_cap_flags);
353346
354
- WRT_REG_DWORD(&reg->hccr, HCCRX_CLR_RISC_RESET);
355
- RD_REG_DWORD(&reg->hccr); /* PCI Posting. */
347
+ wrt_reg_dword(&reg->hccr, HCCRX_CLR_RISC_RESET);
348
+ rd_reg_dword(&reg->hccr); /* PCI Posting. */
356349
357
- for (cnt = 10000; RD_REG_WORD(&reg->mailbox0) != 0 &&
350
+ for (cnt = 10000; rd_reg_word(&reg->mailbox0) != 0 &&
358351 rval == QLA_SUCCESS; cnt--) {
359352 if (cnt)
360353 udelay(10);
....@@ -368,7 +361,7 @@
368361 }
369362
370363 static int
371
-qla2xxx_dump_ram(struct qla_hw_data *ha, uint32_t addr, uint16_t *ram,
364
+qla2xxx_dump_ram(struct qla_hw_data *ha, uint32_t addr, __be16 *ram,
372365 uint32_t ram_words, void **nxt)
373366 {
374367 int rval;
....@@ -376,7 +369,7 @@
376369 uint16_t mb0;
377370 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp;
378371 dma_addr_t dump_dma = ha->gid_list_dma;
379
- uint16_t *dump = (uint16_t *)ha->gid_list;
372
+ __le16 *dump = (__force __le16 *)ha->gid_list;
380373
381374 rval = QLA_SUCCESS;
382375 mb0 = 0;
....@@ -399,11 +392,11 @@
399392 WRT_MAILBOX_REG(ha, reg, 7, LSW(MSD(dump_dma)));
400393
401394 WRT_MAILBOX_REG(ha, reg, 4, words);
402
- WRT_REG_WORD(&reg->hccr, HCCR_SET_HOST_INT);
395
+ wrt_reg_word(&reg->hccr, HCCR_SET_HOST_INT);
403396
404397 for (timer = 6000000; timer; timer--) {
405398 /* Check for pending interrupts. */
406
- stat = RD_REG_DWORD(&reg->u.isp2300.host_status);
399
+ stat = rd_reg_dword(&reg->u.isp2300.host_status);
407400 if (stat & HSR_RISC_INT) {
408401 stat &= 0xff;
409402
....@@ -414,10 +407,10 @@
414407 mb0 = RD_MAILBOX_REG(ha, reg, 0);
415408
416409 /* Release mailbox registers. */
417
- WRT_REG_WORD(&reg->semaphore, 0);
418
- WRT_REG_WORD(&reg->hccr,
410
+ wrt_reg_word(&reg->semaphore, 0);
411
+ wrt_reg_word(&reg->hccr,
419412 HCCR_CLR_RISC_INT);
420
- RD_REG_WORD(&reg->hccr);
413
+ rd_reg_word(&reg->hccr);
421414 break;
422415 } else if (stat == 0x10 || stat == 0x11) {
423416 set_bit(MBX_INTERRUPT,
....@@ -425,15 +418,15 @@
425418
426419 mb0 = RD_MAILBOX_REG(ha, reg, 0);
427420
428
- WRT_REG_WORD(&reg->hccr,
421
+ wrt_reg_word(&reg->hccr,
429422 HCCR_CLR_RISC_INT);
430
- RD_REG_WORD(&reg->hccr);
423
+ rd_reg_word(&reg->hccr);
431424 break;
432425 }
433426
434427 /* 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);
428
+ wrt_reg_word(&reg->hccr, HCCR_CLR_RISC_INT);
429
+ rd_reg_word(&reg->hccr);
437430 }
438431 udelay(5);
439432 }
....@@ -441,24 +434,25 @@
441434 if (test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) {
442435 rval = mb0 & MBS_MASK;
443436 for (idx = 0; idx < words; idx++)
444
- ram[cnt + idx] = swab16(dump[idx]);
437
+ ram[cnt + idx] =
438
+ cpu_to_be16(le16_to_cpu(dump[idx]));
445439 } else {
446440 rval = QLA_FUNCTION_FAILED;
447441 }
448442 }
449443
450
- *nxt = rval == QLA_SUCCESS ? &ram[cnt]: NULL;
444
+ *nxt = rval == QLA_SUCCESS ? &ram[cnt] : NULL;
451445 return rval;
452446 }
453447
454448 static inline void
455449 qla2xxx_read_window(struct device_reg_2xxx __iomem *reg, uint32_t count,
456
- uint16_t *buf)
450
+ __be16 *buf)
457451 {
458
- uint16_t __iomem *dmp_reg = &reg->u.isp2300.fb_cmd;
452
+ __le16 __iomem *dmp_reg = &reg->u.isp2300.fb_cmd;
459453
460454 for ( ; count--; dmp_reg++)
461
- *buf++ = htons(RD_REG_WORD(dmp_reg));
455
+ *buf++ = htons(rd_reg_word(dmp_reg));
462456 }
463457
464458 static inline void *
....@@ -472,10 +466,10 @@
472466 }
473467
474468 static inline void *
475
-qla25xx_copy_fce(struct qla_hw_data *ha, void *ptr, uint32_t **last_chain)
469
+qla25xx_copy_fce(struct qla_hw_data *ha, void *ptr, __be32 **last_chain)
476470 {
477471 uint32_t cnt;
478
- uint32_t *iter_reg;
472
+ __be32 *iter_reg;
479473 struct qla2xxx_fce_chain *fcec = ptr;
480474
481475 if (!ha->fce)
....@@ -499,7 +493,7 @@
499493 }
500494
501495 static inline void *
502
-qla25xx_copy_exlogin(struct qla_hw_data *ha, void *ptr, uint32_t **last_chain)
496
+qla25xx_copy_exlogin(struct qla_hw_data *ha, void *ptr, __be32 **last_chain)
503497 {
504498 struct qla2xxx_offld_chain *c = ptr;
505499
....@@ -517,11 +511,11 @@
517511 ptr += sizeof(struct qla2xxx_offld_chain);
518512 memcpy(ptr, ha->exlogin_buf, ha->exlogin_size);
519513
520
- return (char *)ptr + cpu_to_be32(c->size);
514
+ return (char *)ptr + be32_to_cpu(c->size);
521515 }
522516
523517 static inline void *
524
-qla81xx_copy_exchoffld(struct qla_hw_data *ha, void *ptr, uint32_t **last_chain)
518
+qla81xx_copy_exchoffld(struct qla_hw_data *ha, void *ptr, __be32 **last_chain)
525519 {
526520 struct qla2xxx_offld_chain *c = ptr;
527521
....@@ -539,12 +533,12 @@
539533 ptr += sizeof(struct qla2xxx_offld_chain);
540534 memcpy(ptr, ha->exchoffld_buf, ha->exchoffld_size);
541535
542
- return (char *)ptr + cpu_to_be32(c->size);
536
+ return (char *)ptr + be32_to_cpu(c->size);
543537 }
544538
545539 static inline void *
546540 qla2xxx_copy_atioqueues(struct qla_hw_data *ha, void *ptr,
547
- uint32_t **last_chain)
541
+ __be32 **last_chain)
548542 {
549543 struct qla2xxx_mqueue_chain *q;
550544 struct qla2xxx_mqueue_header *qh;
....@@ -591,7 +585,7 @@
591585 }
592586
593587 static inline void *
594
-qla25xx_copy_mqueues(struct qla_hw_data *ha, void *ptr, uint32_t **last_chain)
588
+qla25xx_copy_mqueues(struct qla_hw_data *ha, void *ptr, __be32 **last_chain)
595589 {
596590 struct qla2xxx_mqueue_chain *q;
597591 struct qla2xxx_mqueue_header *qh;
....@@ -662,14 +656,15 @@
662656 }
663657
664658 static inline void *
665
-qla25xx_copy_mq(struct qla_hw_data *ha, void *ptr, uint32_t **last_chain)
659
+qla25xx_copy_mq(struct qla_hw_data *ha, void *ptr, __be32 **last_chain)
666660 {
667661 uint32_t cnt, que_idx;
668662 uint8_t que_cnt;
669663 struct qla2xxx_mq_chain *mq = ptr;
670664 device_reg_t *reg;
671665
672
- if (!ha->mqenable || IS_QLA83XX(ha) || IS_QLA27XX(ha))
666
+ if (!ha->mqenable || IS_QLA83XX(ha) || IS_QLA27XX(ha) ||
667
+ IS_QLA28XX(ha))
673668 return ptr;
674669
675670 mq = ptr;
....@@ -684,13 +679,13 @@
684679 reg = ISP_QUE_REG(ha, cnt);
685680 que_idx = cnt * 4;
686681 mq->qregs[que_idx] =
687
- htonl(RD_REG_DWORD(&reg->isp25mq.req_q_in));
682
+ htonl(rd_reg_dword(&reg->isp25mq.req_q_in));
688683 mq->qregs[que_idx+1] =
689
- htonl(RD_REG_DWORD(&reg->isp25mq.req_q_out));
684
+ htonl(rd_reg_dword(&reg->isp25mq.req_q_out));
690685 mq->qregs[que_idx+2] =
691
- htonl(RD_REG_DWORD(&reg->isp25mq.rsp_q_in));
686
+ htonl(rd_reg_dword(&reg->isp25mq.rsp_q_in));
692687 mq->qregs[que_idx+3] =
693
- htonl(RD_REG_DWORD(&reg->isp25mq.rsp_q_out));
688
+ htonl(rd_reg_dword(&reg->isp25mq.rsp_q_out));
694689 }
695690
696691 return ptr + sizeof(struct qla2xxx_mq_chain);
....@@ -705,45 +700,47 @@
705700 ql_log(ql_log_warn, vha, 0xd000,
706701 "Failed to dump firmware (%x), dump status flags (0x%lx).\n",
707702 rval, ha->fw_dump_cap_flags);
708
- ha->fw_dumped = 0;
703
+ ha->fw_dumped = false;
709704 } else {
710705 ql_log(ql_log_info, vha, 0xd001,
711706 "Firmware dump saved to temp buffer (%ld/%p), dump status flags (0x%lx).\n",
712707 vha->host_no, ha->fw_dump, ha->fw_dump_cap_flags);
713
- ha->fw_dumped = 1;
708
+ ha->fw_dumped = true;
714709 qla2x00_post_uevent_work(vha, QLA_UEVENT_CODE_FW_DUMP);
715710 }
711
+}
712
+
713
+void qla2xxx_dump_fw(scsi_qla_host_t *vha)
714
+{
715
+ unsigned long flags;
716
+
717
+ spin_lock_irqsave(&vha->hw->hardware_lock, flags);
718
+ vha->hw->isp_ops->fw_dump(vha);
719
+ spin_unlock_irqrestore(&vha->hw->hardware_lock, flags);
716720 }
717721
718722 /**
719723 * qla2300_fw_dump() - Dumps binary data from the 2300 firmware.
720724 * @vha: HA context
721
- * @hardware_locked: Called with the hardware_lock
722725 */
723726 void
724
-qla2300_fw_dump(scsi_qla_host_t *vha, int hardware_locked)
727
+qla2300_fw_dump(scsi_qla_host_t *vha)
725728 {
726729 int rval;
727730 uint32_t cnt;
728731 struct qla_hw_data *ha = vha->hw;
729732 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp;
730
- uint16_t __iomem *dmp_reg;
731
- unsigned long flags;
733
+ __le16 __iomem *dmp_reg;
732734 struct qla2300_fw_dump *fw;
733735 void *nxt;
734736 struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev);
735737
736
- flags = 0;
737
-
738
-#ifndef __CHECKER__
739
- if (!hardware_locked)
740
- spin_lock_irqsave(&ha->hardware_lock, flags);
741
-#endif
738
+ lockdep_assert_held(&ha->hardware_lock);
742739
743740 if (!ha->fw_dump) {
744741 ql_log(ql_log_warn, vha, 0xd002,
745742 "No buffer available for dump.\n");
746
- goto qla2300_fw_dump_failed;
743
+ return;
747744 }
748745
749746 if (ha->fw_dumped) {
....@@ -751,19 +748,19 @@
751748 "Firmware has been previously dumped (%p) "
752749 "-- ignoring request.\n",
753750 ha->fw_dump);
754
- goto qla2300_fw_dump_failed;
751
+ return;
755752 }
756753 fw = &ha->fw_dump->isp.isp23;
757754 qla2xxx_prep_dump(ha, ha->fw_dump);
758755
759756 rval = QLA_SUCCESS;
760
- fw->hccr = htons(RD_REG_WORD(&reg->hccr));
757
+ fw->hccr = htons(rd_reg_word(&reg->hccr));
761758
762759 /* Pause RISC. */
763
- WRT_REG_WORD(&reg->hccr, HCCR_PAUSE_RISC);
760
+ wrt_reg_word(&reg->hccr, HCCR_PAUSE_RISC);
764761 if (IS_QLA2300(ha)) {
765762 for (cnt = 30000;
766
- (RD_REG_WORD(&reg->hccr) & HCCR_RISC_PAUSE) == 0 &&
763
+ (rd_reg_word(&reg->hccr) & HCCR_RISC_PAUSE) == 0 &&
767764 rval == QLA_SUCCESS; cnt--) {
768765 if (cnt)
769766 udelay(100);
....@@ -771,74 +768,74 @@
771768 rval = QLA_FUNCTION_TIMEOUT;
772769 }
773770 } else {
774
- RD_REG_WORD(&reg->hccr); /* PCI Posting. */
771
+ rd_reg_word(&reg->hccr); /* PCI Posting. */
775772 udelay(10);
776773 }
777774
778775 if (rval == QLA_SUCCESS) {
779776 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));
777
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->pbiu_reg); cnt++, dmp_reg++)
778
+ fw->pbiu_reg[cnt] = htons(rd_reg_word(dmp_reg));
782779
783780 dmp_reg = &reg->u.isp2300.req_q_in;
784
- for (cnt = 0; cnt < sizeof(fw->risc_host_reg) / 2;
781
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->risc_host_reg);
785782 cnt++, dmp_reg++)
786
- fw->risc_host_reg[cnt] = htons(RD_REG_WORD(dmp_reg));
783
+ fw->risc_host_reg[cnt] = htons(rd_reg_word(dmp_reg));
787784
788785 dmp_reg = &reg->u.isp2300.mailbox0;
789
- for (cnt = 0; cnt < sizeof(fw->mailbox_reg) / 2;
786
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->mailbox_reg);
790787 cnt++, dmp_reg++)
791
- fw->mailbox_reg[cnt] = htons(RD_REG_WORD(dmp_reg));
788
+ fw->mailbox_reg[cnt] = htons(rd_reg_word(dmp_reg));
792789
793
- WRT_REG_WORD(&reg->ctrl_status, 0x40);
790
+ wrt_reg_word(&reg->ctrl_status, 0x40);
794791 qla2xxx_read_window(reg, 32, fw->resp_dma_reg);
795792
796
- WRT_REG_WORD(&reg->ctrl_status, 0x50);
793
+ wrt_reg_word(&reg->ctrl_status, 0x50);
797794 qla2xxx_read_window(reg, 48, fw->dma_reg);
798795
799
- WRT_REG_WORD(&reg->ctrl_status, 0x00);
796
+ wrt_reg_word(&reg->ctrl_status, 0x00);
800797 dmp_reg = &reg->risc_hw;
801
- for (cnt = 0; cnt < sizeof(fw->risc_hdw_reg) / 2;
798
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->risc_hdw_reg);
802799 cnt++, dmp_reg++)
803
- fw->risc_hdw_reg[cnt] = htons(RD_REG_WORD(dmp_reg));
800
+ fw->risc_hdw_reg[cnt] = htons(rd_reg_word(dmp_reg));
804801
805
- WRT_REG_WORD(&reg->pcr, 0x2000);
802
+ wrt_reg_word(&reg->pcr, 0x2000);
806803 qla2xxx_read_window(reg, 16, fw->risc_gp0_reg);
807804
808
- WRT_REG_WORD(&reg->pcr, 0x2200);
805
+ wrt_reg_word(&reg->pcr, 0x2200);
809806 qla2xxx_read_window(reg, 16, fw->risc_gp1_reg);
810807
811
- WRT_REG_WORD(&reg->pcr, 0x2400);
808
+ wrt_reg_word(&reg->pcr, 0x2400);
812809 qla2xxx_read_window(reg, 16, fw->risc_gp2_reg);
813810
814
- WRT_REG_WORD(&reg->pcr, 0x2600);
811
+ wrt_reg_word(&reg->pcr, 0x2600);
815812 qla2xxx_read_window(reg, 16, fw->risc_gp3_reg);
816813
817
- WRT_REG_WORD(&reg->pcr, 0x2800);
814
+ wrt_reg_word(&reg->pcr, 0x2800);
818815 qla2xxx_read_window(reg, 16, fw->risc_gp4_reg);
819816
820
- WRT_REG_WORD(&reg->pcr, 0x2A00);
817
+ wrt_reg_word(&reg->pcr, 0x2A00);
821818 qla2xxx_read_window(reg, 16, fw->risc_gp5_reg);
822819
823
- WRT_REG_WORD(&reg->pcr, 0x2C00);
820
+ wrt_reg_word(&reg->pcr, 0x2C00);
824821 qla2xxx_read_window(reg, 16, fw->risc_gp6_reg);
825822
826
- WRT_REG_WORD(&reg->pcr, 0x2E00);
823
+ wrt_reg_word(&reg->pcr, 0x2E00);
827824 qla2xxx_read_window(reg, 16, fw->risc_gp7_reg);
828825
829
- WRT_REG_WORD(&reg->ctrl_status, 0x10);
826
+ wrt_reg_word(&reg->ctrl_status, 0x10);
830827 qla2xxx_read_window(reg, 64, fw->frame_buf_hdw_reg);
831828
832
- WRT_REG_WORD(&reg->ctrl_status, 0x20);
829
+ wrt_reg_word(&reg->ctrl_status, 0x20);
833830 qla2xxx_read_window(reg, 64, fw->fpm_b0_reg);
834831
835
- WRT_REG_WORD(&reg->ctrl_status, 0x30);
832
+ wrt_reg_word(&reg->ctrl_status, 0x30);
836833 qla2xxx_read_window(reg, 64, fw->fpm_b1_reg);
837834
838835 /* Reset RISC. */
839
- WRT_REG_WORD(&reg->ctrl_status, CSR_ISP_SOFT_RESET);
836
+ wrt_reg_word(&reg->ctrl_status, CSR_ISP_SOFT_RESET);
840837 for (cnt = 0; cnt < 30000; cnt++) {
841
- if ((RD_REG_WORD(&reg->ctrl_status) &
838
+ if ((rd_reg_word(&reg->ctrl_status) &
842839 CSR_ISP_SOFT_RESET) == 0)
843840 break;
844841
....@@ -859,12 +856,12 @@
859856 /* Get RISC SRAM. */
860857 if (rval == QLA_SUCCESS)
861858 rval = qla2xxx_dump_ram(ha, 0x800, fw->risc_ram,
862
- sizeof(fw->risc_ram) / 2, &nxt);
859
+ ARRAY_SIZE(fw->risc_ram), &nxt);
863860
864861 /* Get stack SRAM. */
865862 if (rval == QLA_SUCCESS)
866863 rval = qla2xxx_dump_ram(ha, 0x10000, fw->stack_ram,
867
- sizeof(fw->stack_ram) / 2, &nxt);
864
+ ARRAY_SIZE(fw->stack_ram), &nxt);
868865
869866 /* Get data SRAM. */
870867 if (rval == QLA_SUCCESS)
....@@ -875,48 +872,31 @@
875872 qla2xxx_copy_queues(ha, nxt);
876873
877874 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
886875 }
887876
888877 /**
889878 * qla2100_fw_dump() - Dumps binary data from the 2100/2200 firmware.
890879 * @vha: HA context
891
- * @hardware_locked: Called with the hardware_lock
892880 */
893881 void
894
-qla2100_fw_dump(scsi_qla_host_t *vha, int hardware_locked)
882
+qla2100_fw_dump(scsi_qla_host_t *vha)
895883 {
896884 int rval;
897885 uint32_t cnt, timer;
898
- uint16_t risc_address;
899
- uint16_t mb0, mb2;
886
+ uint16_t risc_address = 0;
887
+ uint16_t mb0 = 0, mb2 = 0;
900888 struct qla_hw_data *ha = vha->hw;
901889 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp;
902
- uint16_t __iomem *dmp_reg;
903
- unsigned long flags;
890
+ __le16 __iomem *dmp_reg;
904891 struct qla2100_fw_dump *fw;
905892 struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev);
906893
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
894
+ lockdep_assert_held(&ha->hardware_lock);
915895
916896 if (!ha->fw_dump) {
917897 ql_log(ql_log_warn, vha, 0xd004,
918898 "No buffer available for dump.\n");
919
- goto qla2100_fw_dump_failed;
899
+ return;
920900 }
921901
922902 if (ha->fw_dumped) {
....@@ -924,17 +904,17 @@
924904 "Firmware has been previously dumped (%p) "
925905 "-- ignoring request.\n",
926906 ha->fw_dump);
927
- goto qla2100_fw_dump_failed;
907
+ return;
928908 }
929909 fw = &ha->fw_dump->isp.isp21;
930910 qla2xxx_prep_dump(ha, ha->fw_dump);
931911
932912 rval = QLA_SUCCESS;
933
- fw->hccr = htons(RD_REG_WORD(&reg->hccr));
913
+ fw->hccr = htons(rd_reg_word(&reg->hccr));
934914
935915 /* Pause RISC. */
936
- WRT_REG_WORD(&reg->hccr, HCCR_PAUSE_RISC);
937
- for (cnt = 30000; (RD_REG_WORD(&reg->hccr) & HCCR_RISC_PAUSE) == 0 &&
916
+ wrt_reg_word(&reg->hccr, HCCR_PAUSE_RISC);
917
+ for (cnt = 30000; (rd_reg_word(&reg->hccr) & HCCR_RISC_PAUSE) == 0 &&
938918 rval == QLA_SUCCESS; cnt--) {
939919 if (cnt)
940920 udelay(100);
....@@ -943,61 +923,61 @@
943923 }
944924 if (rval == QLA_SUCCESS) {
945925 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));
926
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->pbiu_reg); cnt++, dmp_reg++)
927
+ fw->pbiu_reg[cnt] = htons(rd_reg_word(dmp_reg));
948928
949929 dmp_reg = &reg->u.isp2100.mailbox0;
950930 for (cnt = 0; cnt < ha->mbx_count; cnt++, dmp_reg++) {
951931 if (cnt == 8)
952932 dmp_reg = &reg->u_end.isp2200.mailbox8;
953933
954
- fw->mailbox_reg[cnt] = htons(RD_REG_WORD(dmp_reg));
934
+ fw->mailbox_reg[cnt] = htons(rd_reg_word(dmp_reg));
955935 }
956936
957937 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));
938
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->dma_reg); cnt++, dmp_reg++)
939
+ fw->dma_reg[cnt] = htons(rd_reg_word(dmp_reg));
960940
961
- WRT_REG_WORD(&reg->ctrl_status, 0x00);
941
+ wrt_reg_word(&reg->ctrl_status, 0x00);
962942 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));
943
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->risc_hdw_reg); cnt++, dmp_reg++)
944
+ fw->risc_hdw_reg[cnt] = htons(rd_reg_word(dmp_reg));
965945
966
- WRT_REG_WORD(&reg->pcr, 0x2000);
946
+ wrt_reg_word(&reg->pcr, 0x2000);
967947 qla2xxx_read_window(reg, 16, fw->risc_gp0_reg);
968948
969
- WRT_REG_WORD(&reg->pcr, 0x2100);
949
+ wrt_reg_word(&reg->pcr, 0x2100);
970950 qla2xxx_read_window(reg, 16, fw->risc_gp1_reg);
971951
972
- WRT_REG_WORD(&reg->pcr, 0x2200);
952
+ wrt_reg_word(&reg->pcr, 0x2200);
973953 qla2xxx_read_window(reg, 16, fw->risc_gp2_reg);
974954
975
- WRT_REG_WORD(&reg->pcr, 0x2300);
955
+ wrt_reg_word(&reg->pcr, 0x2300);
976956 qla2xxx_read_window(reg, 16, fw->risc_gp3_reg);
977957
978
- WRT_REG_WORD(&reg->pcr, 0x2400);
958
+ wrt_reg_word(&reg->pcr, 0x2400);
979959 qla2xxx_read_window(reg, 16, fw->risc_gp4_reg);
980960
981
- WRT_REG_WORD(&reg->pcr, 0x2500);
961
+ wrt_reg_word(&reg->pcr, 0x2500);
982962 qla2xxx_read_window(reg, 16, fw->risc_gp5_reg);
983963
984
- WRT_REG_WORD(&reg->pcr, 0x2600);
964
+ wrt_reg_word(&reg->pcr, 0x2600);
985965 qla2xxx_read_window(reg, 16, fw->risc_gp6_reg);
986966
987
- WRT_REG_WORD(&reg->pcr, 0x2700);
967
+ wrt_reg_word(&reg->pcr, 0x2700);
988968 qla2xxx_read_window(reg, 16, fw->risc_gp7_reg);
989969
990
- WRT_REG_WORD(&reg->ctrl_status, 0x10);
970
+ wrt_reg_word(&reg->ctrl_status, 0x10);
991971 qla2xxx_read_window(reg, 16, fw->frame_buf_hdw_reg);
992972
993
- WRT_REG_WORD(&reg->ctrl_status, 0x20);
973
+ wrt_reg_word(&reg->ctrl_status, 0x20);
994974 qla2xxx_read_window(reg, 64, fw->fpm_b0_reg);
995975
996
- WRT_REG_WORD(&reg->ctrl_status, 0x30);
976
+ wrt_reg_word(&reg->ctrl_status, 0x30);
997977 qla2xxx_read_window(reg, 64, fw->fpm_b1_reg);
998978
999979 /* Reset the ISP. */
1000
- WRT_REG_WORD(&reg->ctrl_status, CSR_ISP_SOFT_RESET);
980
+ wrt_reg_word(&reg->ctrl_status, CSR_ISP_SOFT_RESET);
1001981 }
1002982
1003983 for (cnt = 30000; RD_MAILBOX_REG(ha, reg, 0) != 0 &&
....@@ -1010,11 +990,11 @@
1010990
1011991 /* Pause RISC. */
1012992 if (rval == QLA_SUCCESS && (IS_QLA2200(ha) || (IS_QLA2100(ha) &&
1013
- (RD_REG_WORD(&reg->mctr) & (BIT_1 | BIT_0)) != 0))) {
993
+ (rd_reg_word(&reg->mctr) & (BIT_1 | BIT_0)) != 0))) {
1014994
1015
- WRT_REG_WORD(&reg->hccr, HCCR_PAUSE_RISC);
995
+ wrt_reg_word(&reg->hccr, HCCR_PAUSE_RISC);
1016996 for (cnt = 30000;
1017
- (RD_REG_WORD(&reg->hccr) & HCCR_RISC_PAUSE) == 0 &&
997
+ (rd_reg_word(&reg->hccr) & HCCR_RISC_PAUSE) == 0 &&
1018998 rval == QLA_SUCCESS; cnt--) {
1019999 if (cnt)
10201000 udelay(100);
....@@ -1024,13 +1004,13 @@
10241004 if (rval == QLA_SUCCESS) {
10251005 /* Set memory configuration and timing. */
10261006 if (IS_QLA2100(ha))
1027
- WRT_REG_WORD(&reg->mctr, 0xf1);
1007
+ wrt_reg_word(&reg->mctr, 0xf1);
10281008 else
1029
- WRT_REG_WORD(&reg->mctr, 0xf2);
1030
- RD_REG_WORD(&reg->mctr); /* PCI Posting. */
1009
+ wrt_reg_word(&reg->mctr, 0xf2);
1010
+ rd_reg_word(&reg->mctr); /* PCI Posting. */
10311011
10321012 /* Release RISC. */
1033
- WRT_REG_WORD(&reg->hccr, HCCR_RELEASE_RISC);
1013
+ wrt_reg_word(&reg->hccr, HCCR_RELEASE_RISC);
10341014 }
10351015 }
10361016
....@@ -1040,29 +1020,29 @@
10401020 WRT_MAILBOX_REG(ha, reg, 0, MBC_READ_RAM_WORD);
10411021 clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
10421022 }
1043
- for (cnt = 0; cnt < sizeof(fw->risc_ram) / 2 && rval == QLA_SUCCESS;
1023
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->risc_ram) && rval == QLA_SUCCESS;
10441024 cnt++, risc_address++) {
10451025 WRT_MAILBOX_REG(ha, reg, 1, risc_address);
1046
- WRT_REG_WORD(&reg->hccr, HCCR_SET_HOST_INT);
1026
+ wrt_reg_word(&reg->hccr, HCCR_SET_HOST_INT);
10471027
10481028 for (timer = 6000000; timer != 0; timer--) {
10491029 /* Check for pending interrupts. */
1050
- if (RD_REG_WORD(&reg->istatus) & ISR_RISC_INT) {
1051
- if (RD_REG_WORD(&reg->semaphore) & BIT_0) {
1030
+ if (rd_reg_word(&reg->istatus) & ISR_RISC_INT) {
1031
+ if (rd_reg_word(&reg->semaphore) & BIT_0) {
10521032 set_bit(MBX_INTERRUPT,
10531033 &ha->mbx_cmd_flags);
10541034
10551035 mb0 = RD_MAILBOX_REG(ha, reg, 0);
10561036 mb2 = RD_MAILBOX_REG(ha, reg, 2);
10571037
1058
- WRT_REG_WORD(&reg->semaphore, 0);
1059
- WRT_REG_WORD(&reg->hccr,
1038
+ wrt_reg_word(&reg->semaphore, 0);
1039
+ wrt_reg_word(&reg->hccr,
10601040 HCCR_CLR_RISC_INT);
1061
- RD_REG_WORD(&reg->hccr);
1041
+ rd_reg_word(&reg->hccr);
10621042 break;
10631043 }
1064
- WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT);
1065
- RD_REG_WORD(&reg->hccr);
1044
+ wrt_reg_word(&reg->hccr, HCCR_CLR_RISC_INT);
1045
+ rd_reg_word(&reg->hccr);
10661046 }
10671047 udelay(5);
10681048 }
....@@ -1076,51 +1056,38 @@
10761056 }
10771057
10781058 if (rval == QLA_SUCCESS)
1079
- qla2xxx_copy_queues(ha, &fw->risc_ram[cnt]);
1059
+ qla2xxx_copy_queues(ha, &fw->queue_dump[0]);
10801060
10811061 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
10901062 }
10911063
10921064 void
1093
-qla24xx_fw_dump(scsi_qla_host_t *vha, int hardware_locked)
1065
+qla24xx_fw_dump(scsi_qla_host_t *vha)
10941066 {
10951067 int rval;
10961068 uint32_t cnt;
10971069 struct qla_hw_data *ha = vha->hw;
10981070 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;
1071
+ __le32 __iomem *dmp_reg;
1072
+ __be32 *iter_reg;
1073
+ __le16 __iomem *mbx_reg;
11031074 struct qla24xx_fw_dump *fw;
11041075 void *nxt;
11051076 void *nxt_chain;
1106
- uint32_t *last_chain = NULL;
1077
+ __be32 *last_chain = NULL;
11071078 struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev);
1079
+
1080
+ lockdep_assert_held(&ha->hardware_lock);
11081081
11091082 if (IS_P3P_TYPE(ha))
11101083 return;
11111084
1112
- flags = 0;
11131085 ha->fw_dump_cap_flags = 0;
1114
-
1115
-#ifndef __CHECKER__
1116
- if (!hardware_locked)
1117
- spin_lock_irqsave(&ha->hardware_lock, flags);
1118
-#endif
11191086
11201087 if (!ha->fw_dump) {
11211088 ql_log(ql_log_warn, vha, 0xd006,
11221089 "No buffer available for dump.\n");
1123
- goto qla24xx_fw_dump_failed;
1090
+ return;
11241091 }
11251092
11261093 if (ha->fw_dumped) {
....@@ -1128,13 +1095,13 @@
11281095 "Firmware has been previously dumped (%p) "
11291096 "-- ignoring request.\n",
11301097 ha->fw_dump);
1131
- goto qla24xx_fw_dump_failed;
1098
+ return;
11321099 }
11331100 QLA_FW_STOPPED(ha);
11341101 fw = &ha->fw_dump->isp.isp24;
11351102 qla2xxx_prep_dump(ha, ha->fw_dump);
11361103
1137
- fw->host_status = htonl(RD_REG_DWORD(&reg->host_status));
1104
+ fw->host_status = htonl(rd_reg_dword(&reg->host_status));
11381105
11391106 /*
11401107 * Pause RISC. No need to track timeout, as resetting the chip
....@@ -1144,41 +1111,41 @@
11441111
11451112 /* Host interface registers. */
11461113 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));
1114
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->host_reg); cnt++, dmp_reg++)
1115
+ fw->host_reg[cnt] = htonl(rd_reg_dword(dmp_reg));
11491116
11501117 /* Disable interrupts. */
1151
- WRT_REG_DWORD(&reg->ictrl, 0);
1152
- RD_REG_DWORD(&reg->ictrl);
1118
+ wrt_reg_dword(&reg->ictrl, 0);
1119
+ rd_reg_dword(&reg->ictrl);
11531120
11541121 /* 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));
1122
+ wrt_reg_dword(&reg->iobase_addr, 0x0F70);
1123
+ rd_reg_dword(&reg->iobase_addr);
1124
+ wrt_reg_dword(&reg->iobase_select, 0xB0000000);
1125
+ fw->shadow_reg[0] = htonl(rd_reg_dword(&reg->iobase_sdata));
11591126
1160
- WRT_REG_DWORD(&reg->iobase_select, 0xB0100000);
1161
- fw->shadow_reg[1] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1127
+ wrt_reg_dword(&reg->iobase_select, 0xB0100000);
1128
+ fw->shadow_reg[1] = htonl(rd_reg_dword(&reg->iobase_sdata));
11621129
1163
- WRT_REG_DWORD(&reg->iobase_select, 0xB0200000);
1164
- fw->shadow_reg[2] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1130
+ wrt_reg_dword(&reg->iobase_select, 0xB0200000);
1131
+ fw->shadow_reg[2] = htonl(rd_reg_dword(&reg->iobase_sdata));
11651132
1166
- WRT_REG_DWORD(&reg->iobase_select, 0xB0300000);
1167
- fw->shadow_reg[3] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1133
+ wrt_reg_dword(&reg->iobase_select, 0xB0300000);
1134
+ fw->shadow_reg[3] = htonl(rd_reg_dword(&reg->iobase_sdata));
11681135
1169
- WRT_REG_DWORD(&reg->iobase_select, 0xB0400000);
1170
- fw->shadow_reg[4] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1136
+ wrt_reg_dword(&reg->iobase_select, 0xB0400000);
1137
+ fw->shadow_reg[4] = htonl(rd_reg_dword(&reg->iobase_sdata));
11711138
1172
- WRT_REG_DWORD(&reg->iobase_select, 0xB0500000);
1173
- fw->shadow_reg[5] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1139
+ wrt_reg_dword(&reg->iobase_select, 0xB0500000);
1140
+ fw->shadow_reg[5] = htonl(rd_reg_dword(&reg->iobase_sdata));
11741141
1175
- WRT_REG_DWORD(&reg->iobase_select, 0xB0600000);
1176
- fw->shadow_reg[6] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1142
+ wrt_reg_dword(&reg->iobase_select, 0xB0600000);
1143
+ fw->shadow_reg[6] = htonl(rd_reg_dword(&reg->iobase_sdata));
11771144
11781145 /* Mailbox registers. */
11791146 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));
1147
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->mailbox_reg); cnt++, mbx_reg++)
1148
+ fw->mailbox_reg[cnt] = htons(rd_reg_word(mbx_reg));
11821149
11831150 /* Transfer sequence registers. */
11841151 iter_reg = fw->xseq_gp_reg;
....@@ -1217,19 +1184,19 @@
12171184 iter_reg = qla24xx_read_window(reg, 0x7200, 8, iter_reg);
12181185 dmp_reg = &reg->iobase_q;
12191186 for (cnt = 0; cnt < 7; cnt++, dmp_reg++)
1220
- *iter_reg++ = htonl(RD_REG_DWORD(dmp_reg));
1187
+ *iter_reg++ = htonl(rd_reg_dword(dmp_reg));
12211188
12221189 iter_reg = fw->resp0_dma_reg;
12231190 iter_reg = qla24xx_read_window(reg, 0x7300, 8, iter_reg);
12241191 dmp_reg = &reg->iobase_q;
12251192 for (cnt = 0; cnt < 7; cnt++, dmp_reg++)
1226
- *iter_reg++ = htonl(RD_REG_DWORD(dmp_reg));
1193
+ *iter_reg++ = htonl(rd_reg_dword(dmp_reg));
12271194
12281195 iter_reg = fw->req1_dma_reg;
12291196 iter_reg = qla24xx_read_window(reg, 0x7400, 8, iter_reg);
12301197 dmp_reg = &reg->iobase_q;
12311198 for (cnt = 0; cnt < 7; cnt++, dmp_reg++)
1232
- *iter_reg++ = htonl(RD_REG_DWORD(dmp_reg));
1199
+ *iter_reg++ = htonl(rd_reg_dword(dmp_reg));
12331200
12341201 /* Transmit DMA registers. */
12351202 iter_reg = fw->xmt0_dma_reg;
....@@ -1338,44 +1305,31 @@
13381305
13391306 qla24xx_fw_dump_failed_0:
13401307 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
13491308 }
13501309
13511310 void
1352
-qla25xx_fw_dump(scsi_qla_host_t *vha, int hardware_locked)
1311
+qla25xx_fw_dump(scsi_qla_host_t *vha)
13531312 {
13541313 int rval;
13551314 uint32_t cnt;
13561315 struct qla_hw_data *ha = vha->hw;
13571316 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;
1317
+ __le32 __iomem *dmp_reg;
1318
+ __be32 *iter_reg;
1319
+ __le16 __iomem *mbx_reg;
13621320 struct qla25xx_fw_dump *fw;
13631321 void *nxt, *nxt_chain;
1364
- uint32_t *last_chain = NULL;
1322
+ __be32 *last_chain = NULL;
13651323 struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev);
13661324
1367
- flags = 0;
1368
- ha->fw_dump_cap_flags = 0;
1325
+ lockdep_assert_held(&ha->hardware_lock);
13691326
1370
-#ifndef __CHECKER__
1371
- if (!hardware_locked)
1372
- spin_lock_irqsave(&ha->hardware_lock, flags);
1373
-#endif
1327
+ ha->fw_dump_cap_flags = 0;
13741328
13751329 if (!ha->fw_dump) {
13761330 ql_log(ql_log_warn, vha, 0xd008,
13771331 "No buffer available for dump.\n");
1378
- goto qla25xx_fw_dump_failed;
1332
+ return;
13791333 }
13801334
13811335 if (ha->fw_dumped) {
....@@ -1383,14 +1337,14 @@
13831337 "Firmware has been previously dumped (%p) "
13841338 "-- ignoring request.\n",
13851339 ha->fw_dump);
1386
- goto qla25xx_fw_dump_failed;
1340
+ return;
13871341 }
13881342 QLA_FW_STOPPED(ha);
13891343 fw = &ha->fw_dump->isp.isp25;
13901344 qla2xxx_prep_dump(ha, ha->fw_dump);
13911345 ha->fw_dump->version = htonl(2);
13921346
1393
- fw->host_status = htonl(RD_REG_DWORD(&reg->host_status));
1347
+ fw->host_status = htonl(rd_reg_dword(&reg->host_status));
13941348
13951349 /*
13961350 * Pause RISC. No need to track timeout, as resetting the chip
....@@ -1404,73 +1358,73 @@
14041358 qla24xx_read_window(reg, 0x7010, 16, iter_reg);
14051359
14061360 /* 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);
1361
+ wrt_reg_dword(&reg->iobase_addr, 0x7C00);
1362
+ rd_reg_dword(&reg->iobase_addr);
1363
+ wrt_reg_dword(&reg->iobase_window, 0x01);
14101364 dmp_reg = &reg->iobase_c4;
1411
- fw->pcie_regs[0] = htonl(RD_REG_DWORD(dmp_reg));
1365
+ fw->pcie_regs[0] = htonl(rd_reg_dword(dmp_reg));
14121366 dmp_reg++;
1413
- fw->pcie_regs[1] = htonl(RD_REG_DWORD(dmp_reg));
1367
+ fw->pcie_regs[1] = htonl(rd_reg_dword(dmp_reg));
14141368 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));
1369
+ fw->pcie_regs[2] = htonl(rd_reg_dword(dmp_reg));
1370
+ fw->pcie_regs[3] = htonl(rd_reg_dword(&reg->iobase_window));
14171371
1418
- WRT_REG_DWORD(&reg->iobase_window, 0x00);
1419
- RD_REG_DWORD(&reg->iobase_window);
1372
+ wrt_reg_dword(&reg->iobase_window, 0x00);
1373
+ rd_reg_dword(&reg->iobase_window);
14201374
14211375 /* Host interface registers. */
14221376 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));
1377
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->host_reg); cnt++, dmp_reg++)
1378
+ fw->host_reg[cnt] = htonl(rd_reg_dword(dmp_reg));
14251379
14261380 /* Disable interrupts. */
1427
- WRT_REG_DWORD(&reg->ictrl, 0);
1428
- RD_REG_DWORD(&reg->ictrl);
1381
+ wrt_reg_dword(&reg->ictrl, 0);
1382
+ rd_reg_dword(&reg->ictrl);
14291383
14301384 /* 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));
1385
+ wrt_reg_dword(&reg->iobase_addr, 0x0F70);
1386
+ rd_reg_dword(&reg->iobase_addr);
1387
+ wrt_reg_dword(&reg->iobase_select, 0xB0000000);
1388
+ fw->shadow_reg[0] = htonl(rd_reg_dword(&reg->iobase_sdata));
14351389
1436
- WRT_REG_DWORD(&reg->iobase_select, 0xB0100000);
1437
- fw->shadow_reg[1] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1390
+ wrt_reg_dword(&reg->iobase_select, 0xB0100000);
1391
+ fw->shadow_reg[1] = htonl(rd_reg_dword(&reg->iobase_sdata));
14381392
1439
- WRT_REG_DWORD(&reg->iobase_select, 0xB0200000);
1440
- fw->shadow_reg[2] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1393
+ wrt_reg_dword(&reg->iobase_select, 0xB0200000);
1394
+ fw->shadow_reg[2] = htonl(rd_reg_dword(&reg->iobase_sdata));
14411395
1442
- WRT_REG_DWORD(&reg->iobase_select, 0xB0300000);
1443
- fw->shadow_reg[3] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1396
+ wrt_reg_dword(&reg->iobase_select, 0xB0300000);
1397
+ fw->shadow_reg[3] = htonl(rd_reg_dword(&reg->iobase_sdata));
14441398
1445
- WRT_REG_DWORD(&reg->iobase_select, 0xB0400000);
1446
- fw->shadow_reg[4] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1399
+ wrt_reg_dword(&reg->iobase_select, 0xB0400000);
1400
+ fw->shadow_reg[4] = htonl(rd_reg_dword(&reg->iobase_sdata));
14471401
1448
- WRT_REG_DWORD(&reg->iobase_select, 0xB0500000);
1449
- fw->shadow_reg[5] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1402
+ wrt_reg_dword(&reg->iobase_select, 0xB0500000);
1403
+ fw->shadow_reg[5] = htonl(rd_reg_dword(&reg->iobase_sdata));
14501404
1451
- WRT_REG_DWORD(&reg->iobase_select, 0xB0600000);
1452
- fw->shadow_reg[6] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1405
+ wrt_reg_dword(&reg->iobase_select, 0xB0600000);
1406
+ fw->shadow_reg[6] = htonl(rd_reg_dword(&reg->iobase_sdata));
14531407
1454
- WRT_REG_DWORD(&reg->iobase_select, 0xB0700000);
1455
- fw->shadow_reg[7] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1408
+ wrt_reg_dword(&reg->iobase_select, 0xB0700000);
1409
+ fw->shadow_reg[7] = htonl(rd_reg_dword(&reg->iobase_sdata));
14561410
1457
- WRT_REG_DWORD(&reg->iobase_select, 0xB0800000);
1458
- fw->shadow_reg[8] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1411
+ wrt_reg_dword(&reg->iobase_select, 0xB0800000);
1412
+ fw->shadow_reg[8] = htonl(rd_reg_dword(&reg->iobase_sdata));
14591413
1460
- WRT_REG_DWORD(&reg->iobase_select, 0xB0900000);
1461
- fw->shadow_reg[9] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1414
+ wrt_reg_dword(&reg->iobase_select, 0xB0900000);
1415
+ fw->shadow_reg[9] = htonl(rd_reg_dword(&reg->iobase_sdata));
14621416
1463
- WRT_REG_DWORD(&reg->iobase_select, 0xB0A00000);
1464
- fw->shadow_reg[10] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1417
+ wrt_reg_dword(&reg->iobase_select, 0xB0A00000);
1418
+ fw->shadow_reg[10] = htonl(rd_reg_dword(&reg->iobase_sdata));
14651419
14661420 /* RISC I/O register. */
1467
- WRT_REG_DWORD(&reg->iobase_addr, 0x0010);
1468
- fw->risc_io_reg = htonl(RD_REG_DWORD(&reg->iobase_window));
1421
+ wrt_reg_dword(&reg->iobase_addr, 0x0010);
1422
+ fw->risc_io_reg = htonl(rd_reg_dword(&reg->iobase_window));
14691423
14701424 /* Mailbox registers. */
14711425 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));
1426
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->mailbox_reg); cnt++, mbx_reg++)
1427
+ fw->mailbox_reg[cnt] = htons(rd_reg_word(mbx_reg));
14741428
14751429 /* Transfer sequence registers. */
14761430 iter_reg = fw->xseq_gp_reg;
....@@ -1534,19 +1488,19 @@
15341488 iter_reg = qla24xx_read_window(reg, 0x7200, 8, iter_reg);
15351489 dmp_reg = &reg->iobase_q;
15361490 for (cnt = 0; cnt < 7; cnt++, dmp_reg++)
1537
- *iter_reg++ = htonl(RD_REG_DWORD(dmp_reg));
1491
+ *iter_reg++ = htonl(rd_reg_dword(dmp_reg));
15381492
15391493 iter_reg = fw->resp0_dma_reg;
15401494 iter_reg = qla24xx_read_window(reg, 0x7300, 8, iter_reg);
15411495 dmp_reg = &reg->iobase_q;
15421496 for (cnt = 0; cnt < 7; cnt++, dmp_reg++)
1543
- *iter_reg++ = htonl(RD_REG_DWORD(dmp_reg));
1497
+ *iter_reg++ = htonl(rd_reg_dword(dmp_reg));
15441498
15451499 iter_reg = fw->req1_dma_reg;
15461500 iter_reg = qla24xx_read_window(reg, 0x7400, 8, iter_reg);
15471501 dmp_reg = &reg->iobase_q;
15481502 for (cnt = 0; cnt < 7; cnt++, dmp_reg++)
1549
- *iter_reg++ = htonl(RD_REG_DWORD(dmp_reg));
1503
+ *iter_reg++ = htonl(rd_reg_dword(dmp_reg));
15501504
15511505 /* Transmit DMA registers. */
15521506 iter_reg = fw->xmt0_dma_reg;
....@@ -1664,44 +1618,31 @@
16641618
16651619 qla25xx_fw_dump_failed_0:
16661620 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
16751621 }
16761622
16771623 void
1678
-qla81xx_fw_dump(scsi_qla_host_t *vha, int hardware_locked)
1624
+qla81xx_fw_dump(scsi_qla_host_t *vha)
16791625 {
16801626 int rval;
16811627 uint32_t cnt;
16821628 struct qla_hw_data *ha = vha->hw;
16831629 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;
1630
+ __le32 __iomem *dmp_reg;
1631
+ __be32 *iter_reg;
1632
+ __le16 __iomem *mbx_reg;
16881633 struct qla81xx_fw_dump *fw;
16891634 void *nxt, *nxt_chain;
1690
- uint32_t *last_chain = NULL;
1635
+ __be32 *last_chain = NULL;
16911636 struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev);
16921637
1693
- flags = 0;
1694
- ha->fw_dump_cap_flags = 0;
1638
+ lockdep_assert_held(&ha->hardware_lock);
16951639
1696
-#ifndef __CHECKER__
1697
- if (!hardware_locked)
1698
- spin_lock_irqsave(&ha->hardware_lock, flags);
1699
-#endif
1640
+ ha->fw_dump_cap_flags = 0;
17001641
17011642 if (!ha->fw_dump) {
17021643 ql_log(ql_log_warn, vha, 0xd00a,
17031644 "No buffer available for dump.\n");
1704
- goto qla81xx_fw_dump_failed;
1645
+ return;
17051646 }
17061647
17071648 if (ha->fw_dumped) {
....@@ -1709,12 +1650,12 @@
17091650 "Firmware has been previously dumped (%p) "
17101651 "-- ignoring request.\n",
17111652 ha->fw_dump);
1712
- goto qla81xx_fw_dump_failed;
1653
+ return;
17131654 }
17141655 fw = &ha->fw_dump->isp.isp81;
17151656 qla2xxx_prep_dump(ha, ha->fw_dump);
17161657
1717
- fw->host_status = htonl(RD_REG_DWORD(&reg->host_status));
1658
+ fw->host_status = htonl(rd_reg_dword(&reg->host_status));
17181659
17191660 /*
17201661 * Pause RISC. No need to track timeout, as resetting the chip
....@@ -1728,73 +1669,73 @@
17281669 qla24xx_read_window(reg, 0x7010, 16, iter_reg);
17291670
17301671 /* 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);
1672
+ wrt_reg_dword(&reg->iobase_addr, 0x7C00);
1673
+ rd_reg_dword(&reg->iobase_addr);
1674
+ wrt_reg_dword(&reg->iobase_window, 0x01);
17341675 dmp_reg = &reg->iobase_c4;
1735
- fw->pcie_regs[0] = htonl(RD_REG_DWORD(dmp_reg));
1676
+ fw->pcie_regs[0] = htonl(rd_reg_dword(dmp_reg));
17361677 dmp_reg++;
1737
- fw->pcie_regs[1] = htonl(RD_REG_DWORD(dmp_reg));
1678
+ fw->pcie_regs[1] = htonl(rd_reg_dword(dmp_reg));
17381679 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));
1680
+ fw->pcie_regs[2] = htonl(rd_reg_dword(dmp_reg));
1681
+ fw->pcie_regs[3] = htonl(rd_reg_dword(&reg->iobase_window));
17411682
1742
- WRT_REG_DWORD(&reg->iobase_window, 0x00);
1743
- RD_REG_DWORD(&reg->iobase_window);
1683
+ wrt_reg_dword(&reg->iobase_window, 0x00);
1684
+ rd_reg_dword(&reg->iobase_window);
17441685
17451686 /* Host interface registers. */
17461687 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));
1688
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->host_reg); cnt++, dmp_reg++)
1689
+ fw->host_reg[cnt] = htonl(rd_reg_dword(dmp_reg));
17491690
17501691 /* Disable interrupts. */
1751
- WRT_REG_DWORD(&reg->ictrl, 0);
1752
- RD_REG_DWORD(&reg->ictrl);
1692
+ wrt_reg_dword(&reg->ictrl, 0);
1693
+ rd_reg_dword(&reg->ictrl);
17531694
17541695 /* 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));
1696
+ wrt_reg_dword(&reg->iobase_addr, 0x0F70);
1697
+ rd_reg_dword(&reg->iobase_addr);
1698
+ wrt_reg_dword(&reg->iobase_select, 0xB0000000);
1699
+ fw->shadow_reg[0] = htonl(rd_reg_dword(&reg->iobase_sdata));
17591700
1760
- WRT_REG_DWORD(&reg->iobase_select, 0xB0100000);
1761
- fw->shadow_reg[1] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1701
+ wrt_reg_dword(&reg->iobase_select, 0xB0100000);
1702
+ fw->shadow_reg[1] = htonl(rd_reg_dword(&reg->iobase_sdata));
17621703
1763
- WRT_REG_DWORD(&reg->iobase_select, 0xB0200000);
1764
- fw->shadow_reg[2] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1704
+ wrt_reg_dword(&reg->iobase_select, 0xB0200000);
1705
+ fw->shadow_reg[2] = htonl(rd_reg_dword(&reg->iobase_sdata));
17651706
1766
- WRT_REG_DWORD(&reg->iobase_select, 0xB0300000);
1767
- fw->shadow_reg[3] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1707
+ wrt_reg_dword(&reg->iobase_select, 0xB0300000);
1708
+ fw->shadow_reg[3] = htonl(rd_reg_dword(&reg->iobase_sdata));
17681709
1769
- WRT_REG_DWORD(&reg->iobase_select, 0xB0400000);
1770
- fw->shadow_reg[4] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1710
+ wrt_reg_dword(&reg->iobase_select, 0xB0400000);
1711
+ fw->shadow_reg[4] = htonl(rd_reg_dword(&reg->iobase_sdata));
17711712
1772
- WRT_REG_DWORD(&reg->iobase_select, 0xB0500000);
1773
- fw->shadow_reg[5] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1713
+ wrt_reg_dword(&reg->iobase_select, 0xB0500000);
1714
+ fw->shadow_reg[5] = htonl(rd_reg_dword(&reg->iobase_sdata));
17741715
1775
- WRT_REG_DWORD(&reg->iobase_select, 0xB0600000);
1776
- fw->shadow_reg[6] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1716
+ wrt_reg_dword(&reg->iobase_select, 0xB0600000);
1717
+ fw->shadow_reg[6] = htonl(rd_reg_dword(&reg->iobase_sdata));
17771718
1778
- WRT_REG_DWORD(&reg->iobase_select, 0xB0700000);
1779
- fw->shadow_reg[7] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1719
+ wrt_reg_dword(&reg->iobase_select, 0xB0700000);
1720
+ fw->shadow_reg[7] = htonl(rd_reg_dword(&reg->iobase_sdata));
17801721
1781
- WRT_REG_DWORD(&reg->iobase_select, 0xB0800000);
1782
- fw->shadow_reg[8] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1722
+ wrt_reg_dword(&reg->iobase_select, 0xB0800000);
1723
+ fw->shadow_reg[8] = htonl(rd_reg_dword(&reg->iobase_sdata));
17831724
1784
- WRT_REG_DWORD(&reg->iobase_select, 0xB0900000);
1785
- fw->shadow_reg[9] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1725
+ wrt_reg_dword(&reg->iobase_select, 0xB0900000);
1726
+ fw->shadow_reg[9] = htonl(rd_reg_dword(&reg->iobase_sdata));
17861727
1787
- WRT_REG_DWORD(&reg->iobase_select, 0xB0A00000);
1788
- fw->shadow_reg[10] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
1728
+ wrt_reg_dword(&reg->iobase_select, 0xB0A00000);
1729
+ fw->shadow_reg[10] = htonl(rd_reg_dword(&reg->iobase_sdata));
17891730
17901731 /* RISC I/O register. */
1791
- WRT_REG_DWORD(&reg->iobase_addr, 0x0010);
1792
- fw->risc_io_reg = htonl(RD_REG_DWORD(&reg->iobase_window));
1732
+ wrt_reg_dword(&reg->iobase_addr, 0x0010);
1733
+ fw->risc_io_reg = htonl(rd_reg_dword(&reg->iobase_window));
17931734
17941735 /* Mailbox registers. */
17951736 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));
1737
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->mailbox_reg); cnt++, mbx_reg++)
1738
+ fw->mailbox_reg[cnt] = htons(rd_reg_word(mbx_reg));
17981739
17991740 /* Transfer sequence registers. */
18001741 iter_reg = fw->xseq_gp_reg;
....@@ -1858,19 +1799,19 @@
18581799 iter_reg = qla24xx_read_window(reg, 0x7200, 8, iter_reg);
18591800 dmp_reg = &reg->iobase_q;
18601801 for (cnt = 0; cnt < 7; cnt++, dmp_reg++)
1861
- *iter_reg++ = htonl(RD_REG_DWORD(dmp_reg));
1802
+ *iter_reg++ = htonl(rd_reg_dword(dmp_reg));
18621803
18631804 iter_reg = fw->resp0_dma_reg;
18641805 iter_reg = qla24xx_read_window(reg, 0x7300, 8, iter_reg);
18651806 dmp_reg = &reg->iobase_q;
18661807 for (cnt = 0; cnt < 7; cnt++, dmp_reg++)
1867
- *iter_reg++ = htonl(RD_REG_DWORD(dmp_reg));
1808
+ *iter_reg++ = htonl(rd_reg_dword(dmp_reg));
18681809
18691810 iter_reg = fw->req1_dma_reg;
18701811 iter_reg = qla24xx_read_window(reg, 0x7400, 8, iter_reg);
18711812 dmp_reg = &reg->iobase_q;
18721813 for (cnt = 0; cnt < 7; cnt++, dmp_reg++)
1873
- *iter_reg++ = htonl(RD_REG_DWORD(dmp_reg));
1814
+ *iter_reg++ = htonl(rd_reg_dword(dmp_reg));
18741815
18751816 /* Transmit DMA registers. */
18761817 iter_reg = fw->xmt0_dma_reg;
....@@ -1992,57 +1933,44 @@
19921933
19931934 qla81xx_fw_dump_failed_0:
19941935 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
20031936 }
20041937
20051938 void
2006
-qla83xx_fw_dump(scsi_qla_host_t *vha, int hardware_locked)
1939
+qla83xx_fw_dump(scsi_qla_host_t *vha)
20071940 {
20081941 int rval;
20091942 uint32_t cnt;
20101943 struct qla_hw_data *ha = vha->hw;
20111944 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;
1945
+ __le32 __iomem *dmp_reg;
1946
+ __be32 *iter_reg;
1947
+ __le16 __iomem *mbx_reg;
20161948 struct qla83xx_fw_dump *fw;
20171949 void *nxt, *nxt_chain;
2018
- uint32_t *last_chain = NULL;
1950
+ __be32 *last_chain = NULL;
20191951 struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev);
20201952
2021
- flags = 0;
2022
- ha->fw_dump_cap_flags = 0;
1953
+ lockdep_assert_held(&ha->hardware_lock);
20231954
2024
-#ifndef __CHECKER__
2025
- if (!hardware_locked)
2026
- spin_lock_irqsave(&ha->hardware_lock, flags);
2027
-#endif
1955
+ ha->fw_dump_cap_flags = 0;
20281956
20291957 if (!ha->fw_dump) {
20301958 ql_log(ql_log_warn, vha, 0xd00c,
20311959 "No buffer available for dump!!!\n");
2032
- goto qla83xx_fw_dump_failed;
1960
+ return;
20331961 }
20341962
20351963 if (ha->fw_dumped) {
20361964 ql_log(ql_log_warn, vha, 0xd00d,
20371965 "Firmware has been previously dumped (%p) -- ignoring "
20381966 "request...\n", ha->fw_dump);
2039
- goto qla83xx_fw_dump_failed;
1967
+ return;
20401968 }
20411969 QLA_FW_STOPPED(ha);
20421970 fw = &ha->fw_dump->isp.isp83;
20431971 qla2xxx_prep_dump(ha, ha->fw_dump);
20441972
2045
- fw->host_status = htonl(RD_REG_DWORD(&reg->host_status));
1973
+ fw->host_status = htonl(rd_reg_dword(&reg->host_status));
20461974
20471975 /*
20481976 * Pause RISC. No need to track timeout, as resetting the chip
....@@ -2050,24 +1978,24 @@
20501978 */
20511979 qla24xx_pause_risc(reg, ha);
20521980
2053
- WRT_REG_DWORD(&reg->iobase_addr, 0x6000);
1981
+ wrt_reg_dword(&reg->iobase_addr, 0x6000);
20541982 dmp_reg = &reg->iobase_window;
2055
- RD_REG_DWORD(dmp_reg);
2056
- WRT_REG_DWORD(dmp_reg, 0);
1983
+ rd_reg_dword(dmp_reg);
1984
+ wrt_reg_dword(dmp_reg, 0);
20571985
20581986 dmp_reg = &reg->unused_4_1[0];
2059
- RD_REG_DWORD(dmp_reg);
2060
- WRT_REG_DWORD(dmp_reg, 0);
1987
+ rd_reg_dword(dmp_reg);
1988
+ wrt_reg_dword(dmp_reg, 0);
20611989
2062
- WRT_REG_DWORD(&reg->iobase_addr, 0x6010);
1990
+ wrt_reg_dword(&reg->iobase_addr, 0x6010);
20631991 dmp_reg = &reg->unused_4_1[2];
2064
- RD_REG_DWORD(dmp_reg);
2065
- WRT_REG_DWORD(dmp_reg, 0);
1992
+ rd_reg_dword(dmp_reg);
1993
+ wrt_reg_dword(dmp_reg, 0);
20661994
20671995 /* 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 */
1996
+ wrt_reg_dword(&reg->iobase_addr, 0x0F70);
1997
+ rd_reg_dword(&reg->iobase_addr);
1998
+ wrt_reg_dword(&reg->iobase_select, 0x60000000); /* write to F0h = PCR */
20711999
20722000 /* Host/Risc registers. */
20732001 iter_reg = fw->host_risc_reg;
....@@ -2076,73 +2004,73 @@
20762004 qla24xx_read_window(reg, 0x7040, 16, iter_reg);
20772005
20782006 /* 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);
2007
+ wrt_reg_dword(&reg->iobase_addr, 0x7C00);
2008
+ rd_reg_dword(&reg->iobase_addr);
2009
+ wrt_reg_dword(&reg->iobase_window, 0x01);
20822010 dmp_reg = &reg->iobase_c4;
2083
- fw->pcie_regs[0] = htonl(RD_REG_DWORD(dmp_reg));
2011
+ fw->pcie_regs[0] = htonl(rd_reg_dword(dmp_reg));
20842012 dmp_reg++;
2085
- fw->pcie_regs[1] = htonl(RD_REG_DWORD(dmp_reg));
2013
+ fw->pcie_regs[1] = htonl(rd_reg_dword(dmp_reg));
20862014 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));
2015
+ fw->pcie_regs[2] = htonl(rd_reg_dword(dmp_reg));
2016
+ fw->pcie_regs[3] = htonl(rd_reg_dword(&reg->iobase_window));
20892017
2090
- WRT_REG_DWORD(&reg->iobase_window, 0x00);
2091
- RD_REG_DWORD(&reg->iobase_window);
2018
+ wrt_reg_dword(&reg->iobase_window, 0x00);
2019
+ rd_reg_dword(&reg->iobase_window);
20922020
20932021 /* Host interface registers. */
20942022 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));
2023
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->host_reg); cnt++, dmp_reg++)
2024
+ fw->host_reg[cnt] = htonl(rd_reg_dword(dmp_reg));
20972025
20982026 /* Disable interrupts. */
2099
- WRT_REG_DWORD(&reg->ictrl, 0);
2100
- RD_REG_DWORD(&reg->ictrl);
2027
+ wrt_reg_dword(&reg->ictrl, 0);
2028
+ rd_reg_dword(&reg->ictrl);
21012029
21022030 /* 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));
2031
+ wrt_reg_dword(&reg->iobase_addr, 0x0F70);
2032
+ rd_reg_dword(&reg->iobase_addr);
2033
+ wrt_reg_dword(&reg->iobase_select, 0xB0000000);
2034
+ fw->shadow_reg[0] = htonl(rd_reg_dword(&reg->iobase_sdata));
21072035
2108
- WRT_REG_DWORD(&reg->iobase_select, 0xB0100000);
2109
- fw->shadow_reg[1] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
2036
+ wrt_reg_dword(&reg->iobase_select, 0xB0100000);
2037
+ fw->shadow_reg[1] = htonl(rd_reg_dword(&reg->iobase_sdata));
21102038
2111
- WRT_REG_DWORD(&reg->iobase_select, 0xB0200000);
2112
- fw->shadow_reg[2] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
2039
+ wrt_reg_dword(&reg->iobase_select, 0xB0200000);
2040
+ fw->shadow_reg[2] = htonl(rd_reg_dword(&reg->iobase_sdata));
21132041
2114
- WRT_REG_DWORD(&reg->iobase_select, 0xB0300000);
2115
- fw->shadow_reg[3] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
2042
+ wrt_reg_dword(&reg->iobase_select, 0xB0300000);
2043
+ fw->shadow_reg[3] = htonl(rd_reg_dword(&reg->iobase_sdata));
21162044
2117
- WRT_REG_DWORD(&reg->iobase_select, 0xB0400000);
2118
- fw->shadow_reg[4] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
2045
+ wrt_reg_dword(&reg->iobase_select, 0xB0400000);
2046
+ fw->shadow_reg[4] = htonl(rd_reg_dword(&reg->iobase_sdata));
21192047
2120
- WRT_REG_DWORD(&reg->iobase_select, 0xB0500000);
2121
- fw->shadow_reg[5] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
2048
+ wrt_reg_dword(&reg->iobase_select, 0xB0500000);
2049
+ fw->shadow_reg[5] = htonl(rd_reg_dword(&reg->iobase_sdata));
21222050
2123
- WRT_REG_DWORD(&reg->iobase_select, 0xB0600000);
2124
- fw->shadow_reg[6] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
2051
+ wrt_reg_dword(&reg->iobase_select, 0xB0600000);
2052
+ fw->shadow_reg[6] = htonl(rd_reg_dword(&reg->iobase_sdata));
21252053
2126
- WRT_REG_DWORD(&reg->iobase_select, 0xB0700000);
2127
- fw->shadow_reg[7] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
2054
+ wrt_reg_dword(&reg->iobase_select, 0xB0700000);
2055
+ fw->shadow_reg[7] = htonl(rd_reg_dword(&reg->iobase_sdata));
21282056
2129
- WRT_REG_DWORD(&reg->iobase_select, 0xB0800000);
2130
- fw->shadow_reg[8] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
2057
+ wrt_reg_dword(&reg->iobase_select, 0xB0800000);
2058
+ fw->shadow_reg[8] = htonl(rd_reg_dword(&reg->iobase_sdata));
21312059
2132
- WRT_REG_DWORD(&reg->iobase_select, 0xB0900000);
2133
- fw->shadow_reg[9] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
2060
+ wrt_reg_dword(&reg->iobase_select, 0xB0900000);
2061
+ fw->shadow_reg[9] = htonl(rd_reg_dword(&reg->iobase_sdata));
21342062
2135
- WRT_REG_DWORD(&reg->iobase_select, 0xB0A00000);
2136
- fw->shadow_reg[10] = htonl(RD_REG_DWORD(&reg->iobase_sdata));
2063
+ wrt_reg_dword(&reg->iobase_select, 0xB0A00000);
2064
+ fw->shadow_reg[10] = htonl(rd_reg_dword(&reg->iobase_sdata));
21372065
21382066 /* RISC I/O register. */
2139
- WRT_REG_DWORD(&reg->iobase_addr, 0x0010);
2140
- fw->risc_io_reg = htonl(RD_REG_DWORD(&reg->iobase_window));
2067
+ wrt_reg_dword(&reg->iobase_addr, 0x0010);
2068
+ fw->risc_io_reg = htonl(rd_reg_dword(&reg->iobase_window));
21412069
21422070 /* Mailbox registers. */
21432071 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));
2072
+ for (cnt = 0; cnt < ARRAY_SIZE(fw->mailbox_reg); cnt++, mbx_reg++)
2073
+ fw->mailbox_reg[cnt] = htons(rd_reg_word(mbx_reg));
21462074
21472075 /* Transfer sequence registers. */
21482076 iter_reg = fw->xseq_gp_reg;
....@@ -2238,19 +2166,19 @@
22382166 iter_reg = qla24xx_read_window(reg, 0x7200, 8, iter_reg);
22392167 dmp_reg = &reg->iobase_q;
22402168 for (cnt = 0; cnt < 7; cnt++, dmp_reg++)
2241
- *iter_reg++ = htonl(RD_REG_DWORD(dmp_reg));
2169
+ *iter_reg++ = htonl(rd_reg_dword(dmp_reg));
22422170
22432171 iter_reg = fw->resp0_dma_reg;
22442172 iter_reg = qla24xx_read_window(reg, 0x7300, 8, iter_reg);
22452173 dmp_reg = &reg->iobase_q;
22462174 for (cnt = 0; cnt < 7; cnt++, dmp_reg++)
2247
- *iter_reg++ = htonl(RD_REG_DWORD(dmp_reg));
2175
+ *iter_reg++ = htonl(rd_reg_dword(dmp_reg));
22482176
22492177 iter_reg = fw->req1_dma_reg;
22502178 iter_reg = qla24xx_read_window(reg, 0x7400, 8, iter_reg);
22512179 dmp_reg = &reg->iobase_q;
22522180 for (cnt = 0; cnt < 7; cnt++, dmp_reg++)
2253
- *iter_reg++ = htonl(RD_REG_DWORD(dmp_reg));
2181
+ *iter_reg++ = htonl(rd_reg_dword(dmp_reg));
22542182
22552183 /* Transmit DMA registers. */
22562184 iter_reg = fw->xmt0_dma_reg;
....@@ -2456,16 +2384,16 @@
24562384
24572385 ql_log(ql_log_warn, vha, 0xd00f, "try a bigger hammer!!!\n");
24582386
2459
- WRT_REG_DWORD(&reg->hccr, HCCRX_SET_RISC_RESET);
2460
- RD_REG_DWORD(&reg->hccr);
2387
+ wrt_reg_dword(&reg->hccr, HCCRX_SET_RISC_RESET);
2388
+ rd_reg_dword(&reg->hccr);
24612389
2462
- WRT_REG_DWORD(&reg->hccr, HCCRX_REL_RISC_PAUSE);
2463
- RD_REG_DWORD(&reg->hccr);
2390
+ wrt_reg_dword(&reg->hccr, HCCRX_REL_RISC_PAUSE);
2391
+ rd_reg_dword(&reg->hccr);
24642392
2465
- WRT_REG_DWORD(&reg->hccr, HCCRX_CLR_RISC_RESET);
2466
- RD_REG_DWORD(&reg->hccr);
2393
+ wrt_reg_dword(&reg->hccr, HCCRX_CLR_RISC_RESET);
2394
+ rd_reg_dword(&reg->hccr);
24672395
2468
- for (cnt = 30000; cnt && (RD_REG_WORD(&reg->mailbox0)); cnt--)
2396
+ for (cnt = 30000; cnt && (rd_reg_word(&reg->mailbox0)); cnt--)
24692397 udelay(5);
24702398
24712399 if (!cnt) {
....@@ -2506,19 +2434,28 @@
25062434
25072435 qla83xx_fw_dump_failed_0:
25082436 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
25172437 }
25182438
25192439 /****************************************************************************/
25202440 /* Driver Debug Functions. */
25212441 /****************************************************************************/
2442
+
2443
+/* Write the debug message prefix into @pbuf. */
2444
+static void ql_dbg_prefix(char *pbuf, int pbuf_size,
2445
+ const scsi_qla_host_t *vha, uint msg_id)
2446
+{
2447
+ if (vha) {
2448
+ const struct pci_dev *pdev = vha->hw->pdev;
2449
+
2450
+ /* <module-name> [<dev-name>]-<msg-id>:<host>: */
2451
+ snprintf(pbuf, pbuf_size, "%s [%s]-%04x:%lu: ", QL_MSGHDR,
2452
+ dev_name(&(pdev->dev)), msg_id, vha->host_no);
2453
+ } else {
2454
+ /* <module-name> [<dev-name>]-<msg-id>: : */
2455
+ snprintf(pbuf, pbuf_size, "%s [%s]-%04x: : ", QL_MSGHDR,
2456
+ "0000:00:00.0", msg_id);
2457
+ }
2458
+}
25222459
25232460 /*
25242461 * This function is for formatting and logging debug information.
....@@ -2534,12 +2471,13 @@
25342471 * msg: The message to be displayed.
25352472 */
25362473 void
2537
-ql_dbg(uint32_t level, scsi_qla_host_t *vha, int32_t id, const char *fmt, ...)
2474
+ql_dbg(uint level, scsi_qla_host_t *vha, uint id, const char *fmt, ...)
25382475 {
25392476 va_list va;
25402477 struct va_format vaf;
2478
+ char pbuf[64];
25412479
2542
- if (!ql_mask_match(level))
2480
+ if (!ql_mask_match(level) && !trace_ql_dbg_log_enabled())
25432481 return;
25442482
25452483 va_start(va, fmt);
....@@ -2547,16 +2485,12 @@
25472485 vaf.fmt = fmt;
25482486 vaf.va = &va;
25492487
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
- }
2488
+ ql_dbg_prefix(pbuf, ARRAY_SIZE(pbuf), vha, id);
2489
+
2490
+ if (!ql_mask_match(level))
2491
+ trace_ql_dbg_log(pbuf, &vaf);
2492
+ else
2493
+ pr_warn("%s%pV", pbuf, &vaf);
25602494
25612495 va_end(va);
25622496
....@@ -2577,11 +2511,11 @@
25772511 * msg: The message to be displayed.
25782512 */
25792513 void
2580
-ql_dbg_pci(uint32_t level, struct pci_dev *pdev, int32_t id,
2581
- const char *fmt, ...)
2514
+ql_dbg_pci(uint level, struct pci_dev *pdev, uint id, const char *fmt, ...)
25822515 {
25832516 va_list va;
25842517 struct va_format vaf;
2518
+ char pbuf[128];
25852519
25862520 if (pdev == NULL)
25872521 return;
....@@ -2593,9 +2527,8 @@
25932527 vaf.fmt = fmt;
25942528 vaf.va = &va;
25952529
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);
2530
+ ql_dbg_prefix(pbuf, ARRAY_SIZE(pbuf), NULL, id + ql_dbg_offset);
2531
+ pr_warn("%s%pV", pbuf, &vaf);
25992532
26002533 va_end(va);
26012534 }
....@@ -2614,7 +2547,7 @@
26142547 * msg: The message to be displayed.
26152548 */
26162549 void
2617
-ql_log(uint32_t level, scsi_qla_host_t *vha, int32_t id, const char *fmt, ...)
2550
+ql_log(uint level, scsi_qla_host_t *vha, uint id, const char *fmt, ...)
26182551 {
26192552 va_list va;
26202553 struct va_format vaf;
....@@ -2623,16 +2556,7 @@
26232556 if (level > ql_errlev)
26242557 return;
26252558
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;
2559
+ ql_dbg_prefix(pbuf, ARRAY_SIZE(pbuf), vha, id);
26362560
26372561 va_start(va, fmt);
26382562
....@@ -2672,8 +2596,7 @@
26722596 * msg: The message to be displayed.
26732597 */
26742598 void
2675
-ql_log_pci(uint32_t level, struct pci_dev *pdev, int32_t id,
2676
- const char *fmt, ...)
2599
+ql_log_pci(uint level, struct pci_dev *pdev, uint id, const char *fmt, ...)
26772600 {
26782601 va_list va;
26792602 struct va_format vaf;
....@@ -2684,10 +2607,7 @@
26842607 if (level > ql_errlev)
26852608 return;
26862609
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;
2610
+ ql_dbg_prefix(pbuf, ARRAY_SIZE(pbuf), NULL, id);
26912611
26922612 va_start(va, fmt);
26932613
....@@ -2713,14 +2633,14 @@
27132633 }
27142634
27152635 void
2716
-ql_dump_regs(uint32_t level, scsi_qla_host_t *vha, int32_t id)
2636
+ql_dump_regs(uint level, scsi_qla_host_t *vha, uint id)
27172637 {
27182638 int i;
27192639 struct qla_hw_data *ha = vha->hw;
27202640 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp;
27212641 struct device_reg_24xx __iomem *reg24 = &ha->iobase->isp24;
27222642 struct device_reg_82xx __iomem *reg82 = &ha->iobase->isp82;
2723
- uint16_t __iomem *mbx_reg;
2643
+ __le16 __iomem *mbx_reg;
27242644
27252645 if (!ql_mask_match(level))
27262646 return;
....@@ -2735,13 +2655,12 @@
27352655 ql_dbg(level, vha, id, "Mailbox registers:\n");
27362656 for (i = 0; i < 6; i++, mbx_reg++)
27372657 ql_dbg(level, vha, id,
2738
- "mbox[%d] 0x%04x\n", i, RD_REG_WORD(mbx_reg));
2658
+ "mbox[%d] %#04x\n", i, rd_reg_word(mbx_reg));
27392659 }
27402660
2741
-
27422661 void
2743
-ql_dump_buffer(uint32_t level, scsi_qla_host_t *vha, int32_t id,
2744
- uint8_t *buf, uint size)
2662
+ql_dump_buffer(uint level, scsi_qla_host_t *vha, uint id, const void *buf,
2663
+ uint size)
27452664 {
27462665 uint cnt;
27472666
....@@ -2783,16 +2702,7 @@
27832702 if (level > ql_errlev)
27842703 return;
27852704
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;
2705
+ ql_dbg_prefix(pbuf, ARRAY_SIZE(pbuf), qpair ? qpair->vha : NULL, id);
27962706
27972707 va_start(va, fmt);
27982708
....@@ -2836,6 +2746,7 @@
28362746 {
28372747 va_list va;
28382748 struct va_format vaf;
2749
+ char pbuf[128];
28392750
28402751 if (!ql_mask_match(level))
28412752 return;
....@@ -2845,16 +2756,9 @@
28452756 vaf.fmt = fmt;
28462757 vaf.va = &va;
28472758
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
- }
2759
+ ql_dbg_prefix(pbuf, ARRAY_SIZE(pbuf), qpair ? qpair->vha : NULL,
2760
+ id + ql_dbg_offset);
2761
+ pr_warn("%s%pV", pbuf, &vaf);
28582762
28592763 va_end(va);
28602764