hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/scsi/qla2xxx/qla_dbg.c
....@@ -18,7 +18,7 @@
1818 * | Queue Command and IO tracing | 0x3074 | 0x300b |
1919 * | | | 0x3027-0x3028 |
2020 * | | | 0x303d-0x3041 |
21
- * | | | 0x302d,0x3033 |
21
+ * | | | 0x302e,0x3033 |
2222 * | | | 0x3036,0x3038 |
2323 * | | | 0x303a |
2424 * | DPC Thread | 0x4023 | 0x4002,0x4013 |
....@@ -112,8 +112,13 @@
112112 uint32_t stat;
113113 ulong i, j, timer = 6000000;
114114 int rval = QLA_FUNCTION_FAILED;
115
+ scsi_qla_host_t *vha = pci_get_drvdata(ha->pdev);
115116
116117 clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
118
+
119
+ if (qla_pci_disconnected(vha, reg))
120
+ return rval;
121
+
117122 for (i = 0; i < ram_dwords; i += dwords, addr += dwords) {
118123 if (i + dwords > ram_dwords)
119124 dwords = ram_dwords - i;
....@@ -136,6 +141,9 @@
136141 ha->flags.mbox_int = 0;
137142 while (timer--) {
138143 udelay(5);
144
+
145
+ if (qla_pci_disconnected(vha, reg))
146
+ return rval;
139147
140148 stat = rd_reg_dword(&reg->host_status);
141149 /* Check for pending interrupts. */
....@@ -191,8 +199,12 @@
191199 uint32_t dwords = qla2x00_gid_list_size(ha) / 4;
192200 uint32_t stat;
193201 ulong i, j, timer = 6000000;
202
+ scsi_qla_host_t *vha = pci_get_drvdata(ha->pdev);
194203
195204 clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
205
+
206
+ if (qla_pci_disconnected(vha, reg))
207
+ return rval;
196208
197209 for (i = 0; i < ram_dwords; i += dwords, addr += dwords) {
198210 if (i + dwords > ram_dwords)
....@@ -215,8 +227,10 @@
215227 ha->flags.mbox_int = 0;
216228 while (timer--) {
217229 udelay(5);
218
- stat = rd_reg_dword(&reg->host_status);
230
+ if (qla_pci_disconnected(vha, reg))
231
+ return rval;
219232
233
+ stat = rd_reg_dword(&reg->host_status);
220234 /* Check for pending interrupts. */
221235 if (!(stat & HSRX_RISC_INT))
222236 continue;