From mboxrd@z Thu Jan 1 00:00:00 1970 From: bugzilla-daemon@bugzilla.kernel.org Subject: [Bug 85151] pm80xx + 7805H + HP SAS port expander = mpi_smp_completion 2604:smp IO status 0x2 and sas: expander ... discovery failed(0xffffffa6) Date: Fri, 10 Oct 2014 21:11:47 +0000 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Return-path: Received: from mail.kernel.org ([198.145.19.201]:42245 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751797AbaJJVLw (ORCPT ); Fri, 10 Oct 2014 17:11:52 -0400 Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id E197020125 for ; Fri, 10 Oct 2014 21:11:50 +0000 (UTC) Received: from bugzilla2.web.kernel.org (bugzilla2.web.kernel.org [172.20.200.52]) by mail.kernel.org (Postfix) with ESMTP id 2C3FD2020E for ; Fri, 10 Oct 2014 21:11:49 +0000 (UTC) In-Reply-To: Sender: linux-scsi-owner@vger.kernel.org List-Id: linux-scsi@vger.kernel.org To: linux-scsi@vger.kernel.org https://bugzilla.kernel.org/show_bug.cgi?id=85151 --- Comment #11 from linux-ide@crashplan.pro --- 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.