Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp4838281imu; Wed, 19 Dec 2018 00:53:08 -0800 (PST) X-Google-Smtp-Source: AFSGD/UVy06bRhQvzn2Ht80KsBmodacv/5WipviAC5DFub96LEHCuqAM+zFI6F7MwdoNCiE13JIL X-Received: by 2002:a63:cc4e:: with SMTP id q14mr18436920pgi.291.1545209588549; Wed, 19 Dec 2018 00:53:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1545209588; cv=none; d=google.com; s=arc-20160816; b=QT600NdyrMYhRGqKu0hZ1tTuFGVHhslVLSE95LcxBYQ7F7yA2iy2ck7BTij4qdh8RQ oZ3ilcK4F2zJaE6mKGh/AybfQcm40WgCfCt3+Kl+Rt6yFxHvJ+7Vu2J4oPpcZeNuoTwy KaGRHLBbmWo2zVyxjyMRxCiImohP2Dwk5DfU8qFIvxxyBjbUpBD+IDe1OGh6CEy0S/LK 66/2/hSeYZE8wA0ZXT1/SACKfVaBk8QhHMiY2zC7e5wC61m9iFKn6JyXFHimDDmTuNy3 LXkH6tk25PWCPni5qrSsq/VJTbS61GqaJvgv7rBrYChIQRtkoQO5mbKqpwiqApV/VQlq qIJQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:cc:to:from:subject:dkim-signature; bh=KPs1z8W9DxRbdbZ1U32ivf/6EzPqQhb6/E45VHEIBPo=; b=F8mr0qgv9MkPkY0AfmxTr9LUG6/sLyEW9uDzGLhXidIw79Bkbza241z9PLhgCkO0cu uVlNuKFvgZWyZpL/bLWI2vpmuV9ixXZRra+oFIldgaICIJTlb/6GuaL4vIlAxHRYgNTg sK5OEi/Abi8l7xSwZi36NRpf88M2uq/5cAFuoM773Lco0CZcP9JfejIWLzlxm0MNdnaR wnuFDMM0q7WdRAhaRPimjPLUYAbyahH9+87JFdb5YrHPMW1vNrn8PLFgxu5qYTTh7Xvb PAFbqHUDzTk+6HBdUqO8PqGN9fse3hRBwCTvoGHjrrYZxf1EofYDo8wSj+XTYX0hGfIV DlFA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@areca-com-tw.20150623.gappssmtp.com header.s=20150623 header.b=hgtiqqFR; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q189si15854217pfb.62.2018.12.19.00.52.52; Wed, 19 Dec 2018 00:53:08 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@areca-com-tw.20150623.gappssmtp.com header.s=20150623 header.b=hgtiqqFR; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728175AbeLSIpu (ORCPT + 99 others); Wed, 19 Dec 2018 03:45:50 -0500 Received: from mail-it1-f193.google.com ([209.85.166.193]:35580 "EHLO mail-it1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725298AbeLSIpu (ORCPT ); Wed, 19 Dec 2018 03:45:50 -0500 Received: by mail-it1-f193.google.com with SMTP id p197so8294950itp.0 for ; Wed, 19 Dec 2018 00:45:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=areca-com-tw.20150623.gappssmtp.com; s=20150623; h=subject:from:to:cc:date:message-id:mime-version :content-transfer-encoding; bh=KPs1z8W9DxRbdbZ1U32ivf/6EzPqQhb6/E45VHEIBPo=; b=hgtiqqFRxYp/SgXIncNJvbCAAEGDgFM/yTs4p0VvNDJMcCoQ4obgLlht0KweIpcvtt Eb9y+Bxrbv9qahCAPQweWSi0/kl8q22X4r8czdYH9xtpejP/yWdttE+aaQIHduALHnWU XVjwRSlpbZF2s06tPxQe4V7X6OflzBQ1FzOoaFK00wuhmlg+cNGi79yqYnTNOJnl6ogO pGYA9xCRqoUYpRJaKGQD8j087yU8gxYuqZslGiyRCAqVxX982rB70W55+L5vckk8qX4A 7ktaYAjP2h/XpPIIwn+92a2Crm05XMnPGdnCWZlMhyABXq6OWA4zedMzQFJH7AuHVs53 JvEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:cc:date:message-id:mime-version :content-transfer-encoding; bh=KPs1z8W9DxRbdbZ1U32ivf/6EzPqQhb6/E45VHEIBPo=; b=PcUHf4ez3MYuCF9Psys8515005ywk8zQ65yYwJm+Bp624+0CzIgXYohZGd5KtiY5MB LJu/0zpl5rOrgtEdf6RQWNwp+qkQEd6Phc69cOKH65BPjDxkcdb/bjPCgxzqzvIHKerB 5uxCM7jOMHT9LtgAHRh0kR3LIOJ/EhITLszXnM/nlHvIPBNHBKKavKLQaJzUsBF/7w04 3vlbaJP124vfXJfga0fvzE3Arsdf9JfMODjvPqhWA9N9Cg0qjQCjdnW7tttXTSQxfUuC mKegenihRkbk1YQ1sV46hgkzvTSE0fYrzjrPg6sgdDGDIGiDd2AMp5oHW1C9RsB6PXwD 8kow== X-Gm-Message-State: AA+aEWYaT0RzWqhtfl1kgrVaKVkdkGpm9SnBEVpDx2u2kZ0O5ldIitvs wxow1US36XabA8te9EdDgrYDbQ== X-Received: by 2002:a24:bc1:: with SMTP id 184mr6115613itd.50.1545209149213; Wed, 19 Dec 2018 00:45:49 -0800 (PST) Received: from [192.168.0.130] (60-248-88-209.HINET-IP.hinet.net. [60.248.88.209]) by smtp.gmail.com with ESMTPSA id b192sm2848377itb.12.2018.12.19.00.45.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 19 Dec 2018 00:45:48 -0800 (PST) Subject: [PATCH 6/12] scsi: arcmsr: Update for ACB_ADAPTER_TYPE_B that ccb address can above 4GB From: Ching Huang To: martin.petersen@oracle.com, James.Bottomley@HansenPartnership.com, linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Cc: dan.carpenter@oracle.com, hch@infradead.org, colin.king@canonical.com Content-Type: text/plain; charset="UTF-8" Date: Wed, 19 Dec 2018 16:45:46 +0800 Message-ID: <1545209146.4457.32.camel@Centos6.3-64> Mime-Version: 1.0 X-Mailer: Evolution 2.32.3 (2.32.3-37.el6) Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From Ching Huang Update for ACB_ADAPTER_TYPE_B that ccb address can above 4GB Signed-off-by: Ching Huang --- diff --git a/drivers/scsi/arcmsr/arcmsr_hba.c b/drivers/scsi/arcmsr/arcmsr_hba.c index 2ff1c9a..3d2727c 100755 --- a/drivers/scsi/arcmsr/arcmsr_hba.c +++ b/drivers/scsi/arcmsr/arcmsr_hba.c @@ -1418,7 +1418,10 @@ static void arcmsr_done4abort_postqueue(struct AdapterControlBlock *acb) flag_ccb = reg->done_qbuffer[i]; if (flag_ccb != 0) { reg->done_qbuffer[i] = 0; - pARCMSR_CDB = (struct ARCMSR_CDB *)(acb->vir2phy_offset+(flag_ccb << 5));/*frame must be 32 bytes aligned*/ + ccb_cdb_phy = (flag_ccb << 5) & 0xffffffff; + if (acb->cdb_phyadd_hipart) + ccb_cdb_phy = ccb_cdb_phy | acb->cdb_phyadd_hipart; + pARCMSR_CDB = (struct ARCMSR_CDB *)(acb->vir2phy_offset + ccb_cdb_phy); pCCB = container_of(pARCMSR_CDB, struct CommandControlBlock, arcmsr_cdb); error = (flag_ccb & ARCMSR_CCBREPLY_FLAG_ERROR_MODE0) ? true : false; arcmsr_drain_donequeue(acb, pCCB, error); @@ -2358,13 +2361,18 @@ static void arcmsr_hbaB_postqueue_isr(struct AdapterControlBlock *acb) struct ARCMSR_CDB *pARCMSR_CDB; struct CommandControlBlock *pCCB; bool error; + unsigned long cdb_phy_addr; + index = reg->doneq_index; while ((flag_ccb = reg->done_qbuffer[index]) != 0) { - reg->done_qbuffer[index] = 0; - pARCMSR_CDB = (struct ARCMSR_CDB *)(acb->vir2phy_offset+(flag_ccb << 5));/*frame must be 32 bytes aligned*/ + cdb_phy_addr = (flag_ccb << 5) & 0xffffffff; + if (acb->cdb_phyadd_hipart) + cdb_phy_addr = cdb_phy_addr | acb->cdb_phyadd_hipart; + pARCMSR_CDB = (struct ARCMSR_CDB *)(acb->vir2phy_offset + cdb_phy_addr); pCCB = container_of(pARCMSR_CDB, struct CommandControlBlock, arcmsr_cdb); error = (flag_ccb & ARCMSR_CCBREPLY_FLAG_ERROR_MODE0) ? true : false; arcmsr_drain_donequeue(acb, pCCB, error); + reg->done_qbuffer[index] = 0; index++; index %= ARCMSR_MAX_HBB_POSTQUEUE; reg->doneq_index = index; @@ -3329,8 +3337,9 @@ static int arcmsr_hbaB_polling_ccbdone(struct AdapterControlBlock *acb, uint32_t flag_ccb, poll_ccb_done = 0, poll_count = 0; int index, rtn; bool error; - polling_hbb_ccb_retry: + unsigned long ccb_cdb_phy; +polling_hbb_ccb_retry: poll_count++; /* clear doorbell interrupt */ writel(ARCMSR_DOORBELL_INT_CLEAR_PATTERN, reg->iop2drv_doorbell); @@ -3356,7 +3365,10 @@ static int arcmsr_hbaB_polling_ccbdone(struct AdapterControlBlock *acb, index %= ARCMSR_MAX_HBB_POSTQUEUE; reg->doneq_index = index; /* check if command done with no error*/ - arcmsr_cdb = (struct ARCMSR_CDB *)(acb->vir2phy_offset + (flag_ccb << 5)); + ccb_cdb_phy = (flag_ccb << 5) & 0xffffffff; + if (acb->cdb_phyadd_hipart) + ccb_cdb_phy = ccb_cdb_phy | acb->cdb_phyadd_hipart; + arcmsr_cdb = (struct ARCMSR_CDB *)(acb->vir2phy_offset + ccb_cdb_phy); ccb = container_of(arcmsr_cdb, struct CommandControlBlock, arcmsr_cdb); poll_ccb_done |= (ccb == poll_ccb) ? 1 : 0; if ((ccb->acb != acb) || (ccb->startdone != ARCMSR_CCB_START)) {