From: Vladislav B. <vs...@vl...> - 2006-08-18 08:25:44
|
Nate, I have a few questions. See inline. Nathaniel Clark wrote: > Yup. > > Here it is. I'll also check it into CVS, but that may take a little while to > propogate to Anon CVS. > > - Nathaniel Clark >> } >>@@ -651,19 +665,26 @@ qla2x00_chip_diag(scsi_qla_host_t *ha) >> /* Assume a failed state */ >> rval = QLA_FUNCTION_FAILED; >> >>- DEBUG3(printk("scsi(%ld): Testing device at %lx.\n", >>- ha->host_no, (u_long)®->flash_address)); >>+ DEBUG3(printk(KERN_WARNING "scsi(%ld): Testing device at %p\n", >>+ ha->host_no, ®->flash_address)); >> >> spin_lock_irqsave(&ha->hardware_lock, flags); >> >>+ /* Disable PCI "Bus Master Enable bit" */ >>+ if (IS_QLA23XX(ha)) { >>+ data = RD_REG_WORD(®->unused_1[0]); >>+ WRT_REG_WORD(®->unused_1[0], data&~BIT_2); >>+ } >>+ >> /* Reset ISP chip. */ >> WRT_REG_WORD(®->ctrl_status, CSR_ISP_SOFT_RESET); >> >>+ if (!IS_QLA23XX(ha)) { >> /* >> * We need to have a delay here since the card will not respond while >> * in reset causing an MCA on some architectures. >> */ >>- udelay(20); >>+ udelay(30); >> data = qla2x00_debounce_register(®->ctrl_status); >> for (cnt = 6000000 ; cnt && (data & CSR_ISP_SOFT_RESET); cnt--) { >> udelay(5); >>@@ -677,6 +698,15 @@ qla2x00_chip_diag(scsi_qla_host_t *ha) >> DEBUG3(printk("scsi(%ld): Reset register cleared by chip reset\n", >> ha->host_no)); >> >>+ } else { >>+ /* >>+ * Should be 16 PCI Clock cycles, but this is arbitrarily safer >>+ */ >>+ udelay(100); >>+ data = RD_REG_WORD(®->unused_1[0]); >>+ WRT_REG_WORD(®->unused_1[0], data&BIT_2); >>+ } >>+ >> /* Reset RISC processor. */ >> WRT_REG_WORD(®->hccr, HCCR_RESET_RISC); >> WRT_REG_WORD(®->hccr, HCCR_RELEASE_RISC); Could you explain the above 2 hunks, please? Why it is necessary to disable/enable PCI "Bus Master Enable bit" for 23xx and increase the delays. >>@@ -1374,6 +1404,13 @@ qla2x00_nvram_config(scsi_qla_host_t *ha >> >> rval = QLA_SUCCESS; >> >>+ if (unlikely(nv == NULL)) { >>+ qla_printk(KERN_ERR, ha, "request_ring pointer is NULL\n"); >>+ dump_stack(); >>+ rval = 1; >>+ goto out; >>+ } How can it be NULL? Vlad |