https://bugzilla.kernel.org/show_bug.cgi?id=85151 --- Comment #11 from linux-ide@xxxxxxxxxxxxx --- Created attachment 153151 --> https://bugzilla.kernel.org/attachment.cgi?id=153151&action=edit pm80xx dmesg even more verbose output after patching pm80xx.ko This is the applied patch: === diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c index b06443a..c696fdc 100644 --- a/drivers/scsi/pm8001/pm80xx_hwi.c +++ b/drivers/scsi/pm8001/pm80xx_hwi.c @@ -2613,10 +2613,10 @@ mpi_smp_completion(struct pm8001_hba_info *pm8001_ha, void *piomb) ts->stat = SAM_STAT_GOOD; if (pm8001_dev) pm8001_dev->running_req--; + PM8001_FAIL_DBG(pm8001_ha, + pm8001_printk("RESPONSE Length:%d\n", + param)); if (pm8001_ha->smp_exp_mode == SMP_DIRECT) { - PM8001_IO_DBG(pm8001_ha, - pm8001_printk("DIRECT RESPONSE Length:%d\n", - param)); pdma_respaddr = (char *)(phys_to_virt(cpu_to_le64 ((u64)sg_dma_address (&t->smp_task.smp_resp)))); @@ -2628,6 +2628,17 @@ mpi_smp_completion(struct pm8001_hba_info *pm8001_ha, void *piomb) psmpPayload->_r_a[i])); } } + else if (pm8001_ha->smp_exp_mode == SMP_INDIRECT) { + pdma_respaddr = (char *)(phys_to_virt(cpu_to_le64 + ((u64)sg_dma_address + (&t->smp_task.smp_resp)))); + for (i = 0; i < param; i++) { + PM8001_FAIL_DBG(pm8001_ha, pm8001_printk( + "SMP Byte%d DMA data 0x%x psmp 0x%x\n", + i, *(pdma_respaddr+i), + psmpPayload->_r_a[i])); + } + } break; case IO_ABORTED: PM8001_IO_DBG(pm8001_ha, @@ -2638,12 +2649,21 @@ mpi_smp_completion(struct pm8001_hba_info *pm8001_ha, void *piomb) pm8001_dev->running_req--; break; case IO_OVERFLOW: - PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_UNDERFLOW\n")); + PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_OVERFLOW\n")); ts->resp = SAS_TASK_COMPLETE; - ts->stat = SAS_DATA_OVERRUN; + ts->stat = SAM_STAT_GOOD; ts->residual = 0; if (pm8001_dev) pm8001_dev->running_req--; + pdma_respaddr = (char *)(phys_to_virt(cpu_to_le64 + ((u64)sg_dma_address + (&t->smp_task.smp_resp)))); + for (i = 0; i < param; i++) { + PM8001_FAIL_DBG(pm8001_ha, pm8001_printk( + "SMP Byte%d DMA data 0x%x psmp 0x%x\n", + i, *(pdma_respaddr+i), + psmpPayload->_r_a[i])); + } break; case IO_NO_DEVICE: PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_NO_DEVICE\n")); @@ -3809,24 +3829,20 @@ static int pm80xx_chip_smp_req(struct pm8001_hba_info *pm8001_ha, cpu_to_le32 ((u32)sg_dma_len(&task->smp_task.smp_resp)-4); } - if (pm8001_ha->smp_exp_mode == SMP_DIRECT) { - PM8001_IO_DBG(pm8001_ha, - pm8001_printk("SMP REQUEST DIRECT MODE\n")); for (i = 0; i < length; i++) if (i < 16) { smp_cmd.smp_req16[i] = *(preq_dma_addr+i); - PM8001_IO_DBG(pm8001_ha, pm8001_printk( + PM8001_FAIL_DBG(pm8001_ha, pm8001_printk( "Byte[%d]:%x (DMA data:%x)\n", i, smp_cmd.smp_req16[i], *(preq_dma_addr))); } else { smp_cmd.smp_req[i] = *(preq_dma_addr+i); - PM8001_IO_DBG(pm8001_ha, pm8001_printk( + PM8001_FAIL_DBG(pm8001_ha, pm8001_printk( "Byte[%d]:%x (DMA data:%x)\n", i, smp_cmd.smp_req[i], *(preq_dma_addr))); } - } build_smp_cmd(pm8001_dev->device_id, smp_cmd.tag, &smp_cmd, pm8001_ha->smp_exp_mode, length); -- You are receiving this mail because: You are watching the assignee of the bug. -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html