From patchwork Fri Feb 11 22:32:00 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542031 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CFFD3C433EF for ; Fri, 11 Feb 2022 22:33:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354087AbiBKWdK (ORCPT ); Fri, 11 Feb 2022 17:33:10 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:33800 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1347225AbiBKWdF (ORCPT ); Fri, 11 Feb 2022 17:33:05 -0500 Received: from mail-pf1-f176.google.com (mail-pf1-f176.google.com [209.85.210.176]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8C761D4E for ; Fri, 11 Feb 2022 14:33:03 -0800 (PST) Received: by mail-pf1-f176.google.com with SMTP id u16so12955649pfg.3 for ; Fri, 11 Feb 2022 14:33:03 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=q2/KK3ljlz13CVV8qXKs236ffJpVlUU/PvjGqE48QTM=; b=BxyVgH92O2Dj4eKV4YE0vRs0oDiVwwaVIv16ELulTI3MqnAmwXr6jxT7yvg5aW5DTb H8cfJk81adEvRA19VNPgGT7BvE+btx5eos277MY1DK5sW6bzrML/oGG8Ow5JwpPKVxsV sxAtZIze+TkJUpEtqcGZTwRP2gF3WIbt7NuUTXo55IotQVcjBBBLOr1ExNRA5naSps+A /xNKj4qCRggvVBJsMoLQatJ5CyU57COgU1V2EtScCoF99goBIWWFjOcDaaoxmeY9Ab47 qsuODt0S9vnuKXx2FmnldZbAYKtjjfE5ZQw4IUEoMKDzd+sDNPQ5qcd4Rjims5xNMQ9c 3UVg== X-Gm-Message-State: AOAM531pFci1tsL/mISIQNwKeEj4rR1aATqUbSHEncHIhdWZ6HKue0u6 auJyynqewpHxyKoF+SvgbKQ= X-Google-Smtp-Source: ABdhPJzjrxkW5qlZFWo6VcI9+9tBW3fvZjgbRyX7KPWwuKyIyq2JXmsApY8X6FWVdt5M09RiaHG79w== X-Received: by 2002:a63:e207:: with SMTP id q7mr3056896pgh.593.1644618782940; Fri, 11 Feb 2022 14:33:02 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.33.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:33:02 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Hannes Reinecke , Johannes Thumshirn , John Garry , Himanshu Madhani , Adaptec OEM Raid Solutions , "James E.J. Bottomley" Subject: [PATCH v3 01/48] scsi: ips: Remove an unreachable statement Date: Fri, 11 Feb 2022 14:32:00 -0800 Message-Id: <20220211223247.14369-2-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Whether or not CONFIG_BUG is enabled, BUG() never returns. Hence, code past a BUG() statement is unreachable. Remove one such unreachable statement. Cc: Hannes Reinecke Cc: Johannes Thumshirn Cc: John Garry Cc: Himanshu Madhani Signed-off-by: Bart Van Assche Reviewed-by: Hannes Reinecke Reviewed-by: Himanshu Madhani --- drivers/scsi/ips.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/scsi/ips.c b/drivers/scsi/ips.c index 498bf04499ce..0db35e97ce8f 100644 --- a/drivers/scsi/ips.c +++ b/drivers/scsi/ips.c @@ -655,7 +655,6 @@ ips_release(struct Scsi_Host *sh) printk(KERN_WARNING "(%s) release, invalid Scsi_Host pointer.\n", ips_name); BUG(); - return (FALSE); } ha = IPS_HA(sh); From patchwork Fri Feb 11 22:32:01 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542305 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 781C8C433F5 for ; Fri, 11 Feb 2022 22:33:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354089AbiBKWdL (ORCPT ); Fri, 11 Feb 2022 17:33:11 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:33814 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1351935AbiBKWdH (ORCPT ); Fri, 11 Feb 2022 17:33:07 -0500 Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 55DE2D52 for ; Fri, 11 Feb 2022 14:33:05 -0800 (PST) Received: by mail-pl1-f180.google.com with SMTP id z17so5763836plb.9 for ; Fri, 11 Feb 2022 14:33:05 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=HEFLCrsQk3OeBNfYh3K6FY5jqJf/f2weV6Bf1jwM0K4=; b=zlOU+0cqJwkgCM8pLgIQYXZJkjUpbVByUBQXKGQoHyqwiW8rQ9yT2mkEzM1F2I8Qgc lQdNn8C7cF1DCdvrkD+sDdc1aFq6ewAzosOxM/kqYdgrDABBIUNv2UF+7cljek8PkNgn yW090zCPWG4wpl2B47MUo/xXU4EG5tEd5X1U0NfRk6lkQWd3yItYChFMmjKNLGKR7cbh 8wnkNyzn3y02s3ZO1GWHJ7L7/e+KcURZ4skbvK7Al0kJd73F/TiOZvr8QLzuAn+bj1iJ YjOgR4iGQZVDBr6VZs/rNqP/KXQQ8KXydeFl8+V/zxUqmkjKh3Ke4NeUhMUfR8qyGlZz 18bQ== X-Gm-Message-State: AOAM530cSNk0TAuUQUHd16IZ3XoM9v5MFvWqk/4trfN7kFn3ijA6dKMa Y++8CKe5AJ331eVUinOl4qJCJyrgJGexiw== X-Google-Smtp-Source: ABdhPJyKG3FhPAWf4ZAjMAJNpScd4lkuqM5Ua1VNkyUyDbsYLthQhL1h0GqBmtP6Do+wWucM+z+86Q== X-Received: by 2002:a17:903:192:: with SMTP id z18mr1834417plg.113.1644618784682; Fri, 11 Feb 2022 14:33:04 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.33.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:33:04 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Hannes Reinecke , Johannes Thumshirn , John Garry , Himanshu Madhani , Adaptec OEM Raid Solutions , "James E.J. Bottomley" Subject: [PATCH v3 02/48] scsi: ips: Change the return type of ips_release() into 'void' Date: Fri, 11 Feb 2022 14:32:01 -0800 Message-Id: <20220211223247.14369-3-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org ips_release() has one caller and that caller ignores the value returned by ips_release(). Hence change the return type of that function into 'void'. Cc: Hannes Reinecke Cc: Johannes Thumshirn Cc: John Garry Cc: Himanshu Madhani Signed-off-by: Bart Van Assche Reviewed-by: Hannes Reinecke Reviewed-by: Himanshu Madhani --- drivers/scsi/ips.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/drivers/scsi/ips.c b/drivers/scsi/ips.c index 0db35e97ce8f..59664e92ec8a 100644 --- a/drivers/scsi/ips.c +++ b/drivers/scsi/ips.c @@ -638,8 +638,7 @@ ips_setup_funclist(ips_ha_t * ha) /* Remove a driver */ /* */ /****************************************************************************/ -static int -ips_release(struct Scsi_Host *sh) +static void ips_release(struct Scsi_Host *sh) { ips_scb_t *scb; ips_ha_t *ha; @@ -660,7 +659,7 @@ ips_release(struct Scsi_Host *sh) ha = IPS_HA(sh); if (!ha) - return (FALSE); + return; /* flush the cache on the controller */ scb = &ha->scbs[ha->max_cmds - 1]; @@ -698,8 +697,6 @@ ips_release(struct Scsi_Host *sh) scsi_host_put(sh); ips_released_controllers++; - - return (FALSE); } /****************************************************************************/ From patchwork Fri Feb 11 22:32:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542030 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 05B15C433EF for ; Fri, 11 Feb 2022 22:33:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354095AbiBKWdM (ORCPT ); Fri, 11 Feb 2022 17:33:12 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:33826 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354085AbiBKWdI (ORCPT ); Fri, 11 Feb 2022 17:33:08 -0500 Received: from mail-pf1-f173.google.com (mail-pf1-f173.google.com [209.85.210.173]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0D2E4D53 for ; Fri, 11 Feb 2022 14:33:07 -0800 (PST) Received: by mail-pf1-f173.google.com with SMTP id i21so17181054pfd.13 for ; Fri, 11 Feb 2022 14:33:07 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=E963z4MSOb8b/PDvjjuYl5v9glEe4XjOfUpSpCCC8xw=; b=xj/aXdVpLUfqZP4OWTMsvyKzRAPkDeRZZCP3DAtj+/08qgnZz3NPgJqWFS1i/3CQfR ep8d0J8eFsDuJ+Ygu6AZ9mkZHTcxyI1nISDv8lINdJDhjpL5eRcLABwMFubcKL+NtfVG 4GvcnxTpY0DbLPma1X9P7Y2VHtzmzLkp8+SAZoCQOhX1kq4hCzaONtOVG4Ke8hPgQXKv tQ6kH8Q6OtQ33Fj/IfIK1EhyE3ug9tY4pfIGXDWH+Frk08OGQuZtaPhMzT9g4rFx3BUz 35KZ+TZpgVCYSn6RsnDn+EF/KS3G3c0INRkeElhd9VhQHZxlhEkzjck2G3G5s9P/5/De yOhw== X-Gm-Message-State: AOAM531bkBMBSVwi61G/e3sakRN+CLnAnjYPGwdDfN8iblCN4mLaSPgL 1lQZpvPEKDE7crERehjAC22svUoKId3s6Q== X-Google-Smtp-Source: ABdhPJwJCDAEWsq5f8d2iC3fdu2+gZNystuDU45gaIiamwh7HjBLZwgGG62TMqy9Fywez7vbIAQUog== X-Received: by 2002:a63:1ca:: with SMTP id 193mr3123388pgb.20.1644618786452; Fri, 11 Feb 2022 14:33:06 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.33.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:33:05 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Hannes Reinecke , Johannes Thumshirn , John Garry , Himanshu Madhani , Adaptec OEM Raid Solutions , "James E.J. Bottomley" Subject: [PATCH v3 03/48] scsi: ips: Use true and false instead of TRUE and FALSE Date: Fri, 11 Feb 2022 14:32:02 -0800 Message-Id: <20220211223247.14369-4-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org This patch prepares for removal of the drivers/scsi/scsi.h header file. That header file defines the 'TRUE' and 'FALSE' constants. Cc: Hannes Reinecke Cc: Johannes Thumshirn Cc: John Garry Cc: Himanshu Madhani Signed-off-by: Bart Van Assche Reviewed-by: Hannes Reinecke Reviewed-by: Himanshu Madhani --- drivers/scsi/ips.c | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/drivers/scsi/ips.c b/drivers/scsi/ips.c index 59664e92ec8a..d22ba53d6028 100644 --- a/drivers/scsi/ips.c +++ b/drivers/scsi/ips.c @@ -945,7 +945,7 @@ static int __ips_eh_reset(struct scsi_cmnd *SC) scsi_done(scsi_cmd); } - ha->active = FALSE; + ha->active = false; return (FAILED); } @@ -974,7 +974,7 @@ static int __ips_eh_reset(struct scsi_cmnd *SC) scsi_done(scsi_cmd); } - ha->active = FALSE; + ha->active = false; return (FAILED); } @@ -1287,7 +1287,7 @@ ips_intr_copperhead(ips_ha_t * ha) return 0; } - while (TRUE) { + while (true) { sp = &ha->sp; intrstatus = (*ha->func.isintr) (ha); @@ -1351,7 +1351,7 @@ ips_intr_morpheus(ips_ha_t * ha) return 0; } - while (TRUE) { + while (true) { sp = &ha->sp; intrstatus = (*ha->func.isintr) (ha); @@ -3086,8 +3086,8 @@ ipsintr_blocking(ips_ha_t * ha, ips_scb_t * scb) METHOD_TRACE("ipsintr_blocking", 2); ips_freescb(ha, scb); - if ((ha->waitflag == TRUE) && (ha->cmd_in_progress == scb->cdb[0])) { - ha->waitflag = FALSE; + if (ha->waitflag && ha->cmd_in_progress == scb->cdb[0]) { + ha->waitflag = false; return; } @@ -3387,7 +3387,7 @@ ips_send_wait(ips_ha_t * ha, ips_scb_t * scb, int timeout, int intr) METHOD_TRACE("ips_send_wait", 1); if (intr != IPS_FFDC) { /* Won't be Waiting if this is a Time Stamp */ - ha->waitflag = TRUE; + ha->waitflag = true; ha->cmd_in_progress = scb->cdb[0]; } scb->callback = ipsintr_blocking; @@ -3464,10 +3464,8 @@ ips_send_cmd(ips_ha_t * ha, ips_scb_t * scb) if (scb->bus > 0) { /* Controller commands can't be issued */ /* to real devices -- fail them */ - if ((ha->waitflag == TRUE) && - (ha->cmd_in_progress == scb->cdb[0])) { - ha->waitflag = FALSE; - } + if (ha->waitflag && ha->cmd_in_progress == scb->cdb[0]) + ha->waitflag = false; return (1); } @@ -4615,7 +4613,7 @@ ips_poll_for_flush_complete(ips_ha_t * ha) { IPS_STATUS cstatus; - while (TRUE) { + while (true) { cstatus.value = (*ha->func.statupd) (ha); if (cstatus.value == 0xffffffff) /* If No Interrupt to process */ @@ -5538,26 +5536,26 @@ ips_wait(ips_ha_t * ha, int time, int intr) METHOD_TRACE("ips_wait", 1); ret = IPS_FAILURE; - done = FALSE; + done = false; time *= IPS_ONE_SEC; /* convert seconds */ while ((time > 0) && (!done)) { if (intr == IPS_INTR_ON) { - if (ha->waitflag == FALSE) { + if (!ha->waitflag) { ret = IPS_SUCCESS; - done = TRUE; + done = true; break; } } else if (intr == IPS_INTR_IORL) { - if (ha->waitflag == FALSE) { + if (!ha->waitflag) { /* * controller generated an interrupt to * acknowledge completion of the command * and ips_intr() has serviced the interrupt. */ ret = IPS_SUCCESS; - done = TRUE; + done = true; break; } @@ -5592,7 +5590,7 @@ ips_write_driver_status(ips_ha_t * ha, int intr) { METHOD_TRACE("ips_write_driver_status", 1); - if (!ips_readwrite_page5(ha, FALSE, intr)) { + if (!ips_readwrite_page5(ha, false, intr)) { IPS_PRINTK(KERN_WARNING, ha->pcidev, "unable to read NVRAM page 5.\n"); @@ -5630,7 +5628,7 @@ ips_write_driver_status(ips_ha_t * ha, int intr) ha->nvram->versioning = 0; /* Indicate the Driver Does Not Support Versioning */ /* now update the page */ - if (!ips_readwrite_page5(ha, TRUE, intr)) { + if (!ips_readwrite_page5(ha, true, intr)) { IPS_PRINTK(KERN_WARNING, ha->pcidev, "unable to write NVRAM page 5.\n"); From patchwork Fri Feb 11 22:32:03 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542304 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 70642C433EF for ; Fri, 11 Feb 2022 22:33:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354091AbiBKWdO (ORCPT ); Fri, 11 Feb 2022 17:33:14 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:33838 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1347225AbiBKWdK (ORCPT ); Fri, 11 Feb 2022 17:33:10 -0500 Received: from mail-pf1-f174.google.com (mail-pf1-f174.google.com [209.85.210.174]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D3AB8D4E for ; Fri, 11 Feb 2022 14:33:08 -0800 (PST) Received: by mail-pf1-f174.google.com with SMTP id x15so16242538pfr.5 for ; Fri, 11 Feb 2022 14:33:08 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=WrNkLMSkXV+t7s5OlpvFHz2hhdrl7t6S2yxsu+gC31k=; b=LxE4TsR28ZrpbJog14KfNaK6OvDm1m1qfGEqARCDvNBFxNlrT3M2maNzC6wXZBJTf0 JO5ZYa3UJv6StxI2JnSevNKpSqxTVFD3e9c06N97P+97LAUj/UAaUpRMAz2opxOCfUPH pjWzd7aqe9JKO6mO42rStZtBMVcvYQHVzGqu/jR69/znIrS5QPIL2EA3ZNPUrAwNyy1/ qLDkyRs/Fs+tUsxC90WUukvr7qI35u8ONnIXk07GYk1AFhhcvULuvF2gwWiMfAaJ/WQz X9XV0lCNuOTR3MOelFeSjlKEy7xMkaH8UHn5q99PNRo3AVE8lBHDVR2/a4i1QvagFPju n/7Q== X-Gm-Message-State: AOAM533A6hD8Bm58ZaEgF29IQCGn6+YBElSgfE/HwzykyAaiV8oUFd62 nnZRNcH/VfMC62Anez+0qgo= X-Google-Smtp-Source: ABdhPJzt8KoPKR0sjI0z7d5iuXEValW8gq0D1ksKIqIDqsES5vANF27XgC+OgxBrzJeYDvHLTycYSA== X-Received: by 2002:a63:6a82:: with SMTP id f124mr3052174pgc.64.1644618788215; Fri, 11 Feb 2022 14:33:08 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.33.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:33:07 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Hannes Reinecke , Johannes Thumshirn , John Garry , Himanshu Madhani , "James E.J. Bottomley" Subject: [PATCH v3 04/48] scsi: nsp_cs: Change the return type of two functions into 'void' Date: Fri, 11 Feb 2022 14:32:03 -0800 Message-Id: <20220211223247.14369-5-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org nsp_reselected() and nsphw_init() always return the same value (TRUE). Hence change the return type of these functions into 'void'. Cc: Hannes Reinecke Cc: Johannes Thumshirn Cc: John Garry Cc: Himanshu Madhani Signed-off-by: Bart Van Assche Reviewed-by: Hannes Reinecke Reviewed-by: Himanshu Madhani --- drivers/scsi/pcmcia/nsp_cs.c | 17 +++++------------ drivers/scsi/pcmcia/nsp_cs.h | 4 ++-- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/drivers/scsi/pcmcia/nsp_cs.c b/drivers/scsi/pcmcia/nsp_cs.c index 92c818a8a84a..a5c2dd7ebc16 100644 --- a/drivers/scsi/pcmcia/nsp_cs.c +++ b/drivers/scsi/pcmcia/nsp_cs.c @@ -298,7 +298,7 @@ static void nsphw_init_sync(nsp_hw_data *data) /* * Initialize Ninja hardware */ -static int nsphw_init(nsp_hw_data *data) +static void nsphw_init(nsp_hw_data *data) { unsigned int base = data->BaseAddress; @@ -349,8 +349,6 @@ static int nsphw_init(nsp_hw_data *data) nsp_write(base, IRQCONTROL, IRQCONTROL_ALLCLEAR); nsp_setup_fifo(data, FALSE); - - return TRUE; } /* @@ -643,7 +641,7 @@ static int nsp_dataphase_bypass(struct scsi_cmnd *SCpnt) /* * accept reselection */ -static int nsp_reselected(struct scsi_cmnd *SCpnt) +static void nsp_reselected(struct scsi_cmnd *SCpnt) { unsigned int base = SCpnt->device->host->io_port; unsigned int host_id = SCpnt->device->host->this_id; @@ -675,8 +673,6 @@ static int nsp_reselected(struct scsi_cmnd *SCpnt) bus_reg = nsp_index_read(base, SCSIBUSCTRL) & ~(SCSI_BSY | SCSI_ATN); nsp_index_write(base, SCSIBUSCTRL, bus_reg); nsp_index_write(base, SCSIBUSCTRL, bus_reg | AUTODIRECTION | ACKENB); - - return TRUE; } /* @@ -1057,9 +1053,8 @@ static irqreturn_t nspintr(int irq, void *dev_id) if (irq_phase & RESELECT_IRQ) { nsp_dbg(NSP_DEBUG_INTR, "reselect"); nsp_write(base, IRQCONTROL, IRQCONTROL_RESELECT_CLEAR); - if (nsp_reselected(tmpSC) != FALSE) { - return IRQ_HANDLED; - } + nsp_reselected(tmpSC); + return IRQ_HANDLED; } if ((irq_phase & (PHASE_CHANGE_IRQ | LATCHED_BUS_FREE)) == 0) { @@ -1614,9 +1609,7 @@ static int nsp_cs_config(struct pcmcia_device *link) nsp_dbg(NSP_DEBUG_INIT, "I/O[0x%x+0x%x] IRQ %d", data->BaseAddress, data->NumAddress, data->IrqNumber); - if(nsphw_init(data) == FALSE) { - goto cs_failed; - } + nsphw_init(data); host = nsp_detect(&nsp_driver_template); diff --git a/drivers/scsi/pcmcia/nsp_cs.h b/drivers/scsi/pcmcia/nsp_cs.h index 665bf8d0faf7..94c1f6c7c601 100644 --- a/drivers/scsi/pcmcia/nsp_cs.h +++ b/drivers/scsi/pcmcia/nsp_cs.h @@ -304,7 +304,7 @@ static int nsp_eh_host_reset (struct scsi_cmnd *SCpnt); static int nsp_bus_reset (nsp_hw_data *data); /* */ -static int nsphw_init (nsp_hw_data *data); +static void nsphw_init (nsp_hw_data *data); static int nsphw_start_selection(struct scsi_cmnd *SCpnt); static void nsp_start_timer (struct scsi_cmnd *SCpnt, int time); static int nsp_fifo_count (struct scsi_cmnd *SCpnt); @@ -320,7 +320,7 @@ static int nsp_expect_signal (struct scsi_cmnd *SCpnt, unsigned char mask); static int nsp_xfer (struct scsi_cmnd *SCpnt, int phase); static int nsp_dataphase_bypass (struct scsi_cmnd *SCpnt); -static int nsp_reselected (struct scsi_cmnd *SCpnt); +static void nsp_reselected (struct scsi_cmnd *SCpnt); static struct Scsi_Host *nsp_detect(struct scsi_host_template *sht); /* Interrupt handler */ From patchwork Fri Feb 11 22:32:04 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542029 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id AF72BC433F5 for ; Fri, 11 Feb 2022 22:33:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354094AbiBKWdP (ORCPT ); Fri, 11 Feb 2022 17:33:15 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:33858 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354093AbiBKWdM (ORCPT ); Fri, 11 Feb 2022 17:33:12 -0500 Received: from mail-pf1-f174.google.com (mail-pf1-f174.google.com [209.85.210.174]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 95084D4E for ; Fri, 11 Feb 2022 14:33:10 -0800 (PST) Received: by mail-pf1-f174.google.com with SMTP id t36so7833053pfg.0 for ; Fri, 11 Feb 2022 14:33:10 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=SdEmrnskR695c1/OXqy0w2r2p+hHyOK3mLcvyrnKBuw=; b=eNZ4v/A4xzMJJ1dPTwfskkCbCfSW5aRuWziNVgi4W20dELvwc+b1k/8j0jJqTZk7T+ 8Puu2Vzm5XsJJMxRayMyHgWQOmkXyTSss1b6OlCBXIl3WrqnUrbvc790zha/Oq8hOrcS L8LOLkegYJQTveBXI5DtJQ8tBegZuFjQq8L09FN4Cfr6GVuQFOI9DlkeltbIwWkQbAyF NwC9/PKJ5D3ucetvYu+phz0LGYQekTj+/H0tLwU641pTdCC7lKNm4tHyQbXs42bTuMXW E4Bopi5xxAzohL2aQAOLtZSjMu7XHN/4O5EiohvooD6O7USk4oduZuT3oTJIAuhGrr39 SrjA== X-Gm-Message-State: AOAM533yhIRncNwhbYpAhg0OlIZZwUtFj3ReOHKbcLtlM67zV8d/nnkn ncs1Tl/xgM/GHRt7S5ZzJMc= X-Google-Smtp-Source: ABdhPJwBGgF0NLY9AdO3O5CeGlp6xL78ZBULTbNTBUJcKKSvPWa66QWeG6LQe1vZqM3YMy7nmcF9qA== X-Received: by 2002:a05:6a00:170d:: with SMTP id h13mr3757627pfc.39.1644618789976; Fri, 11 Feb 2022 14:33:09 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.33.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:33:09 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Hannes Reinecke , Johannes Thumshirn , John Garry , Himanshu Madhani , "James E.J. Bottomley" Subject: [PATCH v3 05/48] scsi: nsp_cs: Use true and false instead of TRUE and FALSE Date: Fri, 11 Feb 2022 14:32:04 -0800 Message-Id: <20220211223247.14369-6-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org This patch prepares for removal of the drivers/scsi/scsi.h header file. That header file defines the 'TRUE' and 'FALSE' constants. Cc: Hannes Reinecke Cc: Johannes Thumshirn Cc: John Garry Cc: Himanshu Madhani Signed-off-by: Bart Van Assche Reviewed-by: Hannes Reinecke Reviewed-by: Himanshu Madhani --- drivers/scsi/pcmcia/nsp_cs.c | 26 +++++++++++++------------- drivers/scsi/pcmcia/nsp_cs.h | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/drivers/scsi/pcmcia/nsp_cs.c b/drivers/scsi/pcmcia/nsp_cs.c index a5c2dd7ebc16..a78a86511e94 100644 --- a/drivers/scsi/pcmcia/nsp_cs.c +++ b/drivers/scsi/pcmcia/nsp_cs.c @@ -243,7 +243,7 @@ static int nsp_queuecommand_lck(struct scsi_cmnd *SCpnt) SCpnt->SCp.buffers_residual = 0; } - if (nsphw_start_selection(SCpnt) == FALSE) { + if (!nsphw_start_selection(SCpnt)) { nsp_dbg(NSP_DEBUG_QUEUECOMMAND, "selection fail"); SCpnt->result = DID_BUS_BUSY << 16; nsp_scsi_done(SCpnt); @@ -263,14 +263,14 @@ static DEF_SCSI_QCMD(nsp_queuecommand) /* * setup PIO FIFO transfer mode and enable/disable to data out */ -static void nsp_setup_fifo(nsp_hw_data *data, int enabled) +static void nsp_setup_fifo(nsp_hw_data *data, bool enabled) { unsigned int base = data->BaseAddress; unsigned char transfer_mode_reg; //nsp_dbg(NSP_DEBUG_DATA_IO, "enabled=%d", enabled); - if (enabled != FALSE) { + if (enabled) { transfer_mode_reg = TRANSFER_GO | BRAIND; } else { transfer_mode_reg = 0; @@ -348,13 +348,13 @@ static void nsphw_init(nsp_hw_data *data) SCSI_RESET_IRQ_EI ); nsp_write(base, IRQCONTROL, IRQCONTROL_ALLCLEAR); - nsp_setup_fifo(data, FALSE); + nsp_setup_fifo(data, false); } /* * Start selection phase */ -static int nsphw_start_selection(struct scsi_cmnd *SCpnt) +static bool nsphw_start_selection(struct scsi_cmnd *SCpnt) { unsigned int host_id = SCpnt->device->host->this_id; unsigned int base = SCpnt->device->host->io_port; @@ -368,7 +368,7 @@ static int nsphw_start_selection(struct scsi_cmnd *SCpnt) phase = nsp_index_read(base, SCSIBUSMON); if(phase != BUSMON_BUS_FREE) { //nsp_dbg(NSP_DEBUG_RESELECTION, "bus busy"); - return FALSE; + return false; } /* start arbitration */ @@ -388,7 +388,7 @@ static int nsphw_start_selection(struct scsi_cmnd *SCpnt) if (!(arbit & ARBIT_WIN)) { //nsp_dbg(NSP_DEBUG_RESELECTION, "arbit fail"); nsp_index_write(base, SETARBIT, ARBIT_FLAG_CLEAR); - return FALSE; + return false; } /* assert select line */ @@ -407,7 +407,7 @@ static int nsphw_start_selection(struct scsi_cmnd *SCpnt) nsp_start_timer(SCpnt, 1000/51); data->SelectionTimeOut = 1; - return TRUE; + return true; } struct nsp_sync_table { @@ -477,7 +477,7 @@ static int nsp_analyze_sdtr(struct scsi_cmnd *SCpnt) sync->SyncRegister = 0; sync->AckWidth = 0; - return FALSE; + return false; } sync->SyncRegister = (sync_table->chip_period << SYNCREG_PERIOD_SHIFT) | @@ -486,7 +486,7 @@ static int nsp_analyze_sdtr(struct scsi_cmnd *SCpnt) nsp_dbg(NSP_DEBUG_SYNC, "sync_reg=0x%x, ack_width=0x%x", sync->SyncRegister, sync->AckWidth); - return TRUE; + return true; } @@ -633,7 +633,7 @@ static int nsp_dataphase_bypass(struct scsi_cmnd *SCpnt) nsp_dbg(NSP_DEBUG_DATA_IO, "use bypass quirk"); SCpnt->SCp.phase = PH_DATA; nsp_pio_read(SCpnt); - nsp_setup_fifo(data, FALSE); + nsp_setup_fifo(data, false); return 0; } @@ -927,7 +927,7 @@ static int nsp_nexus(struct scsi_cmnd *SCpnt) } /* setup pdma fifo */ - nsp_setup_fifo(data, TRUE); + nsp_setup_fifo(data, true); /* clear ack counter */ data->FifoCount = 0; @@ -1210,7 +1210,7 @@ static irqreturn_t nspintr(int irq, void *dev_id) //*sync_neg = SYNC_NOT_YET; data->MsgLen = i = 0; - data->MsgBuffer[i] = IDENTIFY(TRUE, lun); i++; + data->MsgBuffer[i] = IDENTIFY(true, lun); i++; if (*sync_neg == SYNC_NOT_YET) { data->Sync[target].SyncPeriod = 0; diff --git a/drivers/scsi/pcmcia/nsp_cs.h b/drivers/scsi/pcmcia/nsp_cs.h index 94c1f6c7c601..7d5d1a5b36e0 100644 --- a/drivers/scsi/pcmcia/nsp_cs.h +++ b/drivers/scsi/pcmcia/nsp_cs.h @@ -305,7 +305,7 @@ static int nsp_bus_reset (nsp_hw_data *data); /* */ static void nsphw_init (nsp_hw_data *data); -static int nsphw_start_selection(struct scsi_cmnd *SCpnt); +static bool nsphw_start_selection(struct scsi_cmnd *SCpnt); static void nsp_start_timer (struct scsi_cmnd *SCpnt, int time); static int nsp_fifo_count (struct scsi_cmnd *SCpnt); static void nsp_pio_read (struct scsi_cmnd *SCpnt); From patchwork Fri Feb 11 22:32:05 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542303 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1AB19C433EF for ; Fri, 11 Feb 2022 22:33:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354098AbiBKWdV (ORCPT ); Fri, 11 Feb 2022 17:33:21 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:33894 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354093AbiBKWdU (ORCPT ); Fri, 11 Feb 2022 17:33:20 -0500 Received: from mail-pf1-f175.google.com (mail-pf1-f175.google.com [209.85.210.175]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9B554D4E for ; Fri, 11 Feb 2022 14:33:17 -0800 (PST) Received: by mail-pf1-f175.google.com with SMTP id n23so18713925pfo.1 for ; Fri, 11 Feb 2022 14:33:17 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=fYGOqF9sdEqam1Il4F3QNeDPXpxuiPqAVWxXsMe1rYo=; b=HRlB9sKyjNzwX3bviTwreVpJbK1Q6u1gerJgsWfJZx9198IsZOdo72ZIZFx2MPuCEU ZXpQyyh2uEc4uCjTCcI6sRyNjxaOEY1qu8vV8HjMrTPDZ/adwKL1q2uH0xceGFiCiL1a oKMsuilY26O4G2tgudWdsLs0MkiEZnHMwA0sMVH1WF+ImxBlsuswYGbKUA87li7XuEJJ SY4j7B3+RYa4dB2KeZLK4LyOGoYVUuaOM1+uh0AkQD0vHmT7a70//OrNahuId+MSxYRS /CN0EQhpaXE2cBTxEkGZmo/IfOxdhssEl9QqJNFqvQdBvIsnPtWHLQkEbIqPBwly02aw I63g== X-Gm-Message-State: AOAM531qjKR9Flk0u31HrglzY7vcxsZjhCLoVZqvRj3mZEPLXu7GJ7SQ jDWjhnLF2iYi6O5Wy+E2AY4= X-Google-Smtp-Source: ABdhPJzlXV1OTMfh2yHx9yQ0GJLVjEKrlQacobkzJvusJwlYVOzyVO9rYzqunc3x7Ktt7qEJ29i5Yw== X-Received: by 2002:a63:491d:: with SMTP id w29mr3083134pga.366.1644618796932; Fri, 11 Feb 2022 14:33:16 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.33.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:33:16 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Christoph Hellwig , Ming Lei , Hannes Reinecke , Greg Kroah-Hartman , Himanshu Madhani , Johannes Thumshirn , "James E.J. Bottomley" , "Juergen E. Fischer" , Russell King , Adaptec OEM Raid Solutions , Kashyap Desai , Sumit Saxena , Shivasharan S , Doug Gilbert , Oliver Neukum , Alan Stern Subject: [PATCH v3 06/48] scsi: Remove drivers/scsi/scsi.h Date: Fri, 11 Feb 2022 14:32:05 -0800 Message-Id: <20220211223247.14369-7-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org The following two header files have the same file name: include/scsi/scsi.h and drivers/scsi/scsi.h. This is confusing. Remove the latter since the following note was added in drivers/scsi/scsi.h in 2004: "NOTE: this file only contains compatibility glue for old drivers. All these wrappers will be removed sooner or later. For new code please use the interfaces declared in the headers in include/scsi/" Cc: Christoph Hellwig Cc: Ming Lei Cc: Hannes Reinecke Acked-by: Greg Kroah-Hartman Reviewed-by: Himanshu Madhani Reviewed-by: Johannes Thumshirn Signed-off-by: Bart Van Assche Reviewed-by: Hannes Reinecke --- drivers/scsi/a2091.c | 6 +++- drivers/scsi/a3000.c | 6 +++- drivers/scsi/aha152x.c | 9 ++++-- drivers/scsi/aha1740.c | 6 +++- drivers/scsi/arm/acornscsi.c | 6 +++- drivers/scsi/arm/arxescsi.c | 6 +++- drivers/scsi/arm/cumana_2.c | 6 +++- drivers/scsi/arm/eesox.c | 6 +++- drivers/scsi/arm/fas216.c | 6 +++- drivers/scsi/arm/powertec.c | 6 +++- drivers/scsi/arm/queue.c | 6 +++- drivers/scsi/gvp11.c | 6 +++- drivers/scsi/ips.c | 8 ++++-- drivers/scsi/megaraid.c | 8 ++++-- drivers/scsi/mvme147.c | 6 +++- drivers/scsi/pcmcia/aha152x_stub.c | 9 ++++-- drivers/scsi/pcmcia/nsp_cs.c | 5 ++-- drivers/scsi/pcmcia/qlogic_stub.c | 9 ++++-- drivers/scsi/qlogicfas.c | 6 +++- drivers/scsi/qlogicfas408.c | 6 +++- drivers/scsi/scsi.h | 46 ------------------------------ drivers/scsi/sg.c | 8 ++++-- drivers/scsi/sgiwd93.c | 6 +++- drivers/usb/image/microtek.c | 8 ++++-- drivers/usb/storage/debug.c | 1 - 25 files changed, 119 insertions(+), 82 deletions(-) delete mode 100644 drivers/scsi/scsi.h diff --git a/drivers/scsi/a2091.c b/drivers/scsi/a2091.c index 5853db36eceb..bcbce23478b8 100644 --- a/drivers/scsi/a2091.c +++ b/drivers/scsi/a2091.c @@ -12,7 +12,11 @@ #include #include -#include "scsi.h" +#include +#include +#include +#include +#include #include "wd33c93.h" #include "a2091.h" diff --git a/drivers/scsi/a3000.c b/drivers/scsi/a3000.c index 86f1da22aaa5..23f34411f7bf 100644 --- a/drivers/scsi/a3000.c +++ b/drivers/scsi/a3000.c @@ -13,7 +13,11 @@ #include #include -#include "scsi.h" +#include +#include +#include +#include +#include #include "wd33c93.h" #include "a3000.h" diff --git a/drivers/scsi/aha152x.c b/drivers/scsi/aha152x.c index d17880b57d17..901b78e8ffe6 100644 --- a/drivers/scsi/aha152x.c +++ b/drivers/scsi/aha152x.c @@ -243,13 +243,16 @@ #include #include #include -#include -#include "scsi.h" +#include +#include #include +#include +#include #include +#include #include -#include +#include #include "aha152x.h" static LIST_HEAD(aha152x_host_list); diff --git a/drivers/scsi/aha1740.c b/drivers/scsi/aha1740.c index 18eb4cfcef9a..134255751819 100644 --- a/drivers/scsi/aha1740.c +++ b/drivers/scsi/aha1740.c @@ -55,8 +55,12 @@ #include #include -#include "scsi.h" +#include +#include +#include +#include #include +#include #include "aha1740.h" /* IF YOU ARE HAVING PROBLEMS WITH THIS DRIVER, AND WANT TO WATCH diff --git a/drivers/scsi/arm/acornscsi.c b/drivers/scsi/arm/acornscsi.c index 81eb3bbdfc51..a8a72d822862 100644 --- a/drivers/scsi/arm/acornscsi.c +++ b/drivers/scsi/arm/acornscsi.c @@ -126,9 +126,13 @@ #include -#include "../scsi.h" +#include +#include #include +#include +#include #include +#include #include #include "acornscsi.h" #include "msgqueue.h" diff --git a/drivers/scsi/arm/arxescsi.c b/drivers/scsi/arm/arxescsi.c index 7f667c198f6d..2527b542bcdd 100644 --- a/drivers/scsi/arm/arxescsi.c +++ b/drivers/scsi/arm/arxescsi.c @@ -35,8 +35,12 @@ #include #include -#include "../scsi.h" +#include +#include +#include +#include #include +#include #include "fas216.h" struct arxescsi_info { diff --git a/drivers/scsi/arm/cumana_2.c b/drivers/scsi/arm/cumana_2.c index 3c00d7773876..536d6646e40b 100644 --- a/drivers/scsi/arm/cumana_2.c +++ b/drivers/scsi/arm/cumana_2.c @@ -29,8 +29,12 @@ #include #include -#include "../scsi.h" +#include +#include +#include +#include #include +#include #include "fas216.h" #include "scsi.h" diff --git a/drivers/scsi/arm/eesox.c b/drivers/scsi/arm/eesox.c index 1394590eecea..ab0f6422a6a9 100644 --- a/drivers/scsi/arm/eesox.c +++ b/drivers/scsi/arm/eesox.c @@ -35,8 +35,12 @@ #include #include -#include "../scsi.h" +#include +#include +#include +#include #include +#include #include "fas216.h" #include "scsi.h" diff --git a/drivers/scsi/arm/fas216.c b/drivers/scsi/arm/fas216.c index 7019b91f0ce6..0d6df5ebf934 100644 --- a/drivers/scsi/arm/fas216.c +++ b/drivers/scsi/arm/fas216.c @@ -47,9 +47,13 @@ #include #include -#include "../scsi.h" +#include +#include #include +#include +#include #include +#include #include "fas216.h" #include "scsi.h" diff --git a/drivers/scsi/arm/powertec.c b/drivers/scsi/arm/powertec.c index 8fec435cee18..797568b271e3 100644 --- a/drivers/scsi/arm/powertec.c +++ b/drivers/scsi/arm/powertec.c @@ -20,8 +20,12 @@ #include #include -#include "../scsi.h" +#include +#include +#include +#include #include +#include #include "fas216.h" #include "scsi.h" diff --git a/drivers/scsi/arm/queue.c b/drivers/scsi/arm/queue.c index c6f71a7d1b8e..978df23ce188 100644 --- a/drivers/scsi/arm/queue.c +++ b/drivers/scsi/arm/queue.c @@ -20,7 +20,11 @@ #include #include -#include "../scsi.h" +#include +#include +#include +#include +#include #define DEBUG diff --git a/drivers/scsi/gvp11.c b/drivers/scsi/gvp11.c index 727f8c8f30b5..43754c2f36b3 100644 --- a/drivers/scsi/gvp11.c +++ b/drivers/scsi/gvp11.c @@ -12,7 +12,11 @@ #include #include -#include "scsi.h" +#include +#include +#include +#include +#include #include "wd33c93.h" #include "gvp11.h" diff --git a/drivers/scsi/ips.c b/drivers/scsi/ips.c index d22ba53d6028..16419aeec02d 100644 --- a/drivers/scsi/ips.c +++ b/drivers/scsi/ips.c @@ -180,9 +180,13 @@ #include #include -#include -#include "scsi.h" +#include +#include +#include +#include #include +#include +#include #include "ips.h" diff --git a/drivers/scsi/megaraid.c b/drivers/scsi/megaraid.c index bf987f3a7f3f..2061e3fe9824 100644 --- a/drivers/scsi/megaraid.c +++ b/drivers/scsi/megaraid.c @@ -44,10 +44,14 @@ #include #include #include -#include -#include "scsi.h" +#include +#include +#include +#include #include +#include +#include #include "megaraid.h" diff --git a/drivers/scsi/mvme147.c b/drivers/scsi/mvme147.c index 869b8b058a43..0893d4c3a916 100644 --- a/drivers/scsi/mvme147.c +++ b/drivers/scsi/mvme147.c @@ -11,8 +11,12 @@ #include #include -#include "scsi.h" +#include +#include +#include +#include #include +#include #include "wd33c93.h" #include "mvme147.h" diff --git a/drivers/scsi/pcmcia/aha152x_stub.c b/drivers/scsi/pcmcia/aha152x_stub.c index df82a349e969..6a6621728c69 100644 --- a/drivers/scsi/pcmcia/aha152x_stub.c +++ b/drivers/scsi/pcmcia/aha152x_stub.c @@ -40,13 +40,16 @@ #include #include #include -#include #include #include -#include -#include "scsi.h" +#include +#include +#include +#include #include +#include +#include #include "aha152x.h" #include diff --git a/drivers/scsi/pcmcia/nsp_cs.c b/drivers/scsi/pcmcia/nsp_cs.c index a78a86511e94..dcffda384eaf 100644 --- a/drivers/scsi/pcmcia/nsp_cs.c +++ b/drivers/scsi/pcmcia/nsp_cs.c @@ -41,10 +41,9 @@ #include #include -#include <../drivers/scsi/scsi.h> -#include - #include +#include +#include #include #include diff --git a/drivers/scsi/pcmcia/qlogic_stub.c b/drivers/scsi/pcmcia/qlogic_stub.c index 828d53faf09a..310d0b6586a6 100644 --- a/drivers/scsi/pcmcia/qlogic_stub.c +++ b/drivers/scsi/pcmcia/qlogic_stub.c @@ -38,14 +38,17 @@ #include #include #include -#include #include #include -#include #include -#include "scsi.h" +#include +#include +#include +#include #include +#include +#include #include "../qlogicfas408.h" #include diff --git a/drivers/scsi/qlogicfas.c b/drivers/scsi/qlogicfas.c index 8f709002f746..8f05e3707d69 100644 --- a/drivers/scsi/qlogicfas.c +++ b/drivers/scsi/qlogicfas.c @@ -31,8 +31,12 @@ #include #include -#include "scsi.h" +#include +#include +#include +#include #include +#include #include "qlogicfas408.h" /* Set the following to 2 to use normal interrupt (active high/totempole- diff --git a/drivers/scsi/qlogicfas408.c b/drivers/scsi/qlogicfas408.c index 30a88849a626..3e065d5fc80c 100644 --- a/drivers/scsi/qlogicfas408.c +++ b/drivers/scsi/qlogicfas408.c @@ -55,8 +55,12 @@ #include #include -#include "scsi.h" +#include +#include +#include +#include #include +#include #include "qlogicfas408.h" /*----------------------------------------------------------------*/ diff --git a/drivers/scsi/scsi.h b/drivers/scsi/scsi.h deleted file mode 100644 index 4fd75a3aff66..000000000000 --- a/drivers/scsi/scsi.h +++ /dev/null @@ -1,46 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/* - * scsi.h Copyright (C) 1992 Drew Eckhardt - * Copyright (C) 1993, 1994, 1995, 1998, 1999 Eric Youngdale - * generic SCSI package header file by - * Initial versions: Drew Eckhardt - * Subsequent revisions: Eric Youngdale - * - * - * - * Modified by Eric Youngdale eric@andante.org to - * add scatter-gather, multiple outstanding request, and other - * enhancements. - */ -/* - * NOTE: this file only contains compatibility glue for old drivers. All - * these wrappers will be removed sooner or later. For new code please use - * the interfaces declared in the headers in include/scsi/ - */ - -#ifndef _SCSI_H -#define _SCSI_H - -#include -#include -#include -#include -#include - -/* - * Some defs, in case these are not defined elsewhere. - */ -#ifndef TRUE -#define TRUE 1 -#endif -#ifndef FALSE -#define FALSE 0 -#endif - -struct Scsi_Host; -struct scsi_cmnd; -struct scsi_device; -struct scsi_target; -struct scatterlist; - -#endif /* _SCSI_H */ diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c index 6b43e97bd417..bbd75026ec93 100644 --- a/drivers/scsi/sg.c +++ b/drivers/scsi/sg.c @@ -49,11 +49,15 @@ static int sg_version_num = 30536; /* 2 digits for each component */ #include #include /* for sg_check_file_access() */ -#include "scsi.h" +#include +#include #include -#include +#include #include +#include +#include #include +#include #include #include "scsi_logging.h" diff --git a/drivers/scsi/sgiwd93.c b/drivers/scsi/sgiwd93.c index cf1030c9dda1..e797d89c873b 100644 --- a/drivers/scsi/sgiwd93.c +++ b/drivers/scsi/sgiwd93.c @@ -28,7 +28,11 @@ #include #include -#include "scsi.h" +#include +#include +#include +#include +#include #include "wd33c93.h" struct ip22_hostdata { diff --git a/drivers/usb/image/microtek.c b/drivers/usb/image/microtek.c index b8dc6fa6a5a3..874ea4b54ced 100644 --- a/drivers/usb/image/microtek.c +++ b/drivers/usb/image/microtek.c @@ -130,11 +130,15 @@ #include #include #include - #include #include -#include "../../scsi/scsi.h" + +#include +#include +#include +#include #include +#include #include "microtek.h" diff --git a/drivers/usb/storage/debug.c b/drivers/usb/storage/debug.c index d7f50b7a079e..576be66ad962 100644 --- a/drivers/usb/storage/debug.c +++ b/drivers/usb/storage/debug.c @@ -36,7 +36,6 @@ #include "usb.h" #include "debug.h" -#include "scsi.h" void usb_stor_show_command(const struct us_data *us, struct scsi_cmnd *srb) From patchwork Fri Feb 11 22:32:06 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542028 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CC915C433FE for ; Fri, 11 Feb 2022 22:33:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354099AbiBKWdW (ORCPT ); Fri, 11 Feb 2022 17:33:22 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:33906 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354097AbiBKWdV (ORCPT ); Fri, 11 Feb 2022 17:33:21 -0500 Received: from mail-pj1-f54.google.com (mail-pj1-f54.google.com [209.85.216.54]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EE237D52 for ; Fri, 11 Feb 2022 14:33:19 -0800 (PST) Received: by mail-pj1-f54.google.com with SMTP id h7-20020a17090a648700b001b927560c2bso8927392pjj.1 for ; Fri, 11 Feb 2022 14:33:19 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=1FqOfYD+RIQubzzXU6QxRZHZ0uW9N8qZD7/vQhTBFY0=; b=XE5PeGnKoORMoZZ7fFZs7zYexnctCmZ4HjtoLCAVKzeDEz/JyRfn9g5/s6dBMDb3R8 RyXACQzlPW76KNTybPuhf4DLGdKEvf0kt8G6a00+RKP9go2rgUrErTMzY7kdABHvBdLo ZcQWGT6weDaMZshadFy2gSaELWR+nfIkzO9C7pgdREVbb8A5/73VwKYQ35AYzKuksoFy Lvj/Q1qFnQgbHU9JXb1JGM7ww+Lj2pCFV1UUjDktsRD66bl61ax/5Klph6xzgOf6RVEh v8ogLFfn/xdiX2pBcGE0ttFAFyo52u4QrOb+Gk/sI+UXsE0RPAPaJ++V5es3/WIMHHo7 NFrw== X-Gm-Message-State: AOAM530n2wo2ZQxIZS+83VBwoPFLU2JlXb1S8jYyBcqCi6fz0n4tPMzH uG20eKT8zcGU7sRGujnaRuM= X-Google-Smtp-Source: ABdhPJz9RYzZP2DFNtsgwymQdruVyMAIxZb7mC8s0gPGqtqh3l2kiUYOhxdN+ECtzucdnBcetDHgmw== X-Received: by 2002:a17:90a:7083:: with SMTP id g3mr2547793pjk.209.1644618799180; Fri, 11 Feb 2022 14:33:19 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.33.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:33:18 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Finn Thain , Hannes Reinecke , Ondrej Zary , Michael Schmitz , Johannes Thumshirn , Himanshu Madhani , Finn Thain , Hannes Reinecke , "James E.J. Bottomley" , Russell King Subject: [PATCH v3 07/48] scsi: NCR5380: Remove the NCR5380_CMD_SIZE macro Date: Fri, 11 Feb 2022 14:32:06 -0800 Message-Id: <20220211223247.14369-8-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org This makes it easier to find users of the NCR5380_cmd data structure with 'grep'. Cc: Finn Thain Cc: Hannes Reinecke Cc: Ondrej Zary Cc: Michael Schmitz Reviewed-by: Johannes Thumshirn Reviewed-by: Himanshu Madhani Acked-by: Finn Thain Reviewed-by: Hannes Reinecke Signed-off-by: Bart Van Assche --- drivers/scsi/NCR5380.h | 2 -- drivers/scsi/arm/cumana_1.c | 2 +- drivers/scsi/arm/oak.c | 2 +- drivers/scsi/atari_scsi.c | 2 +- drivers/scsi/dmx3191d.c | 2 +- drivers/scsi/g_NCR5380.c | 2 +- drivers/scsi/mac_scsi.c | 2 +- drivers/scsi/sun3_scsi.c | 2 +- 8 files changed, 7 insertions(+), 9 deletions(-) diff --git a/drivers/scsi/NCR5380.h b/drivers/scsi/NCR5380.h index 8a3b41932288..845bd2423e66 100644 --- a/drivers/scsi/NCR5380.h +++ b/drivers/scsi/NCR5380.h @@ -230,8 +230,6 @@ struct NCR5380_cmd { struct list_head list; }; -#define NCR5380_CMD_SIZE (sizeof(struct NCR5380_cmd)) - #define NCR5380_PIO_CHUNK_SIZE 256 /* Time limit (ms) to poll registers when IRQs are disabled, e.g. during PDMA */ diff --git a/drivers/scsi/arm/cumana_1.c b/drivers/scsi/arm/cumana_1.c index 3fd944374631..5d4f67ba74c0 100644 --- a/drivers/scsi/arm/cumana_1.c +++ b/drivers/scsi/arm/cumana_1.c @@ -223,7 +223,7 @@ static struct scsi_host_template cumanascsi_template = { .sg_tablesize = SG_ALL, .cmd_per_lun = 2, .proc_name = "CumanaSCSI-1", - .cmd_size = NCR5380_CMD_SIZE, + .cmd_size = sizeof(struct NCR5380_cmd), .max_sectors = 128, .dma_boundary = PAGE_SIZE - 1, }; diff --git a/drivers/scsi/arm/oak.c b/drivers/scsi/arm/oak.c index 78f33d57c3e8..f18a0620c808 100644 --- a/drivers/scsi/arm/oak.c +++ b/drivers/scsi/arm/oak.c @@ -113,7 +113,7 @@ static struct scsi_host_template oakscsi_template = { .cmd_per_lun = 2, .dma_boundary = PAGE_SIZE - 1, .proc_name = "oakscsi", - .cmd_size = NCR5380_CMD_SIZE, + .cmd_size = sizeof(struct NCR5380_cmd), .max_sectors = 128, }; diff --git a/drivers/scsi/atari_scsi.c b/drivers/scsi/atari_scsi.c index 95d7a3586083..e9d0d99abc86 100644 --- a/drivers/scsi/atari_scsi.c +++ b/drivers/scsi/atari_scsi.c @@ -711,7 +711,7 @@ static struct scsi_host_template atari_scsi_template = { .this_id = 7, .cmd_per_lun = 2, .dma_boundary = PAGE_SIZE - 1, - .cmd_size = NCR5380_CMD_SIZE, + .cmd_size = sizeof(struct NCR5380_cmd), }; static int __init atari_scsi_probe(struct platform_device *pdev) diff --git a/drivers/scsi/dmx3191d.c b/drivers/scsi/dmx3191d.c index 6df60b31ecb0..a171ce6b70b2 100644 --- a/drivers/scsi/dmx3191d.c +++ b/drivers/scsi/dmx3191d.c @@ -52,7 +52,7 @@ static struct scsi_host_template dmx3191d_driver_template = { .sg_tablesize = SG_ALL, .cmd_per_lun = 2, .dma_boundary = PAGE_SIZE - 1, - .cmd_size = NCR5380_CMD_SIZE, + .cmd_size = sizeof(struct NCR5380_cmd), }; static int dmx3191d_probe_one(struct pci_dev *pdev, diff --git a/drivers/scsi/g_NCR5380.c b/drivers/scsi/g_NCR5380.c index 7ba3c9312731..5923f86a384e 100644 --- a/drivers/scsi/g_NCR5380.c +++ b/drivers/scsi/g_NCR5380.c @@ -702,7 +702,7 @@ static struct scsi_host_template driver_template = { .sg_tablesize = SG_ALL, .cmd_per_lun = 2, .dma_boundary = PAGE_SIZE - 1, - .cmd_size = NCR5380_CMD_SIZE, + .cmd_size = sizeof(struct NCR5380_cmd), .max_sectors = 128, }; diff --git a/drivers/scsi/mac_scsi.c b/drivers/scsi/mac_scsi.c index 5c808fbc6ce2..71d493a0bb43 100644 --- a/drivers/scsi/mac_scsi.c +++ b/drivers/scsi/mac_scsi.c @@ -434,7 +434,7 @@ static struct scsi_host_template mac_scsi_template = { .sg_tablesize = 1, .cmd_per_lun = 2, .dma_boundary = PAGE_SIZE - 1, - .cmd_size = NCR5380_CMD_SIZE, + .cmd_size = sizeof(struct NCR5380_cmd), .max_sectors = 128, }; diff --git a/drivers/scsi/sun3_scsi.c b/drivers/scsi/sun3_scsi.c index f7f724a3ff1d..82a253270c3b 100644 --- a/drivers/scsi/sun3_scsi.c +++ b/drivers/scsi/sun3_scsi.c @@ -505,7 +505,7 @@ static struct scsi_host_template sun3_scsi_template = { .sg_tablesize = 1, .cmd_per_lun = 2, .dma_boundary = PAGE_SIZE - 1, - .cmd_size = NCR5380_CMD_SIZE, + .cmd_size = sizeof(struct NCR5380_cmd), }; static int __init sun3_scsi_probe(struct platform_device *pdev) From patchwork Fri Feb 11 22:32:07 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542302 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 077D9C433F5 for ; Fri, 11 Feb 2022 22:33:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354101AbiBKWd0 (ORCPT ); Fri, 11 Feb 2022 17:33:26 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:33920 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354097AbiBKWdY (ORCPT ); Fri, 11 Feb 2022 17:33:24 -0500 Received: from mail-pj1-f47.google.com (mail-pj1-f47.google.com [209.85.216.47]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0AECDD4E for ; Fri, 11 Feb 2022 14:33:22 -0800 (PST) Received: by mail-pj1-f47.google.com with SMTP id a11-20020a17090a740b00b001b8b506c42fso13313258pjg.0 for ; Fri, 11 Feb 2022 14:33:22 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=KBeb2F7tSmHB1G7Ikr0wqZkswodiLKmsS3V2bljOEik=; b=Ik7fEXmHgnV3ubxTbi91CEZ8iIEktz4HXdhsvZfrDdCNvCQFOJrGpIvD8NXcskJFHA a4Pu+bHFlwCPjHKAN0CvKeyvIbioITmWAoz3etM007b/RgNTjPpiG81FT/8Vja//Vs5i jnv0zpady8LnQ1fEHwnzgukDjeT0m0xU5fXiv5hNSZiXzYkZkAENUksKq8AClKoPsNjU 9RBxyrBSF3DJfmR1nZOvekX0EZSV2lFuwBkb7hbkcAI4N5DXXUEvVTQ9GvtqjmE5mMkj ngY5PuKrAFby3hltTGFJVUPtgdJvCWhmZXAxgG3WtN0qH20nDzkbiEPubx1jmmg95F6f qrSA== X-Gm-Message-State: AOAM530Jor+TAeFZ51cAEMt/4Ycn8G5b7Ih6bYej8TefUWzImcp86iKr 83IlPWvnq0vi9HqmMA6MxM4= X-Google-Smtp-Source: ABdhPJy6pDwt1hF4/qnFTlLqGwROTxMCD8gvP5hmhSyG/3AVOh9uuK1VKFHmaltj/n5NEc55MCtNSA== X-Received: by 2002:a17:90a:e7d1:: with SMTP id kb17mr2598175pjb.1.1644618801343; Fri, 11 Feb 2022 14:33:21 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.33.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:33:20 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Finn Thain , Hannes Reinecke , Johannes Thumshirn , Himanshu Madhani , Finn Thain , Michael Schmitz , "James E.J. Bottomley" Subject: [PATCH v3 08/48] scsi: NCR5380: Introduce the NCR5380_cmd_priv() function Date: Fri, 11 Feb 2022 14:32:07 -0800 Message-Id: <20220211223247.14369-9-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Introduce the NCR5380_cmd_priv() function. This function will allow to access the SCSI pointer in the next patch with a single statement instead of two, e.g. as follows: struct scsi_pointer *scsi_pointer = &NCR5380_cmd_priv(cmd)->scsi_pointer; Cc: Finn Thain Cc: Hannes Reinecke Cc: Johannes Thumshirn Cc: Himanshu Madhani Signed-off-by: Bart Van Assche Reviewed-by: Hannes Reinecke Reviewed-by: Himanshu Madhani --- drivers/scsi/NCR5380.c | 8 ++++---- drivers/scsi/NCR5380.h | 5 +++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c index 55af3e245a92..6fa5e363945a 100644 --- a/drivers/scsi/NCR5380.c +++ b/drivers/scsi/NCR5380.c @@ -564,7 +564,7 @@ static int NCR5380_queue_command(struct Scsi_Host *instance, struct scsi_cmnd *cmd) { struct NCR5380_hostdata *hostdata = shost_priv(instance); - struct NCR5380_cmd *ncmd = scsi_cmd_priv(cmd); + struct NCR5380_cmd *ncmd = NCR5380_cmd_priv(cmd); unsigned long flags; #if (NDEBUG & NDEBUG_NO_WRITE) @@ -672,7 +672,7 @@ static struct scsi_cmnd *dequeue_next_cmd(struct Scsi_Host *instance) static void requeue_cmd(struct Scsi_Host *instance, struct scsi_cmnd *cmd) { struct NCR5380_hostdata *hostdata = shost_priv(instance); - struct NCR5380_cmd *ncmd = scsi_cmd_priv(cmd); + struct NCR5380_cmd *ncmd = NCR5380_cmd_priv(cmd); if (hostdata->sensing == cmd) { scsi_eh_restore_cmnd(cmd, &hostdata->ses); @@ -1690,7 +1690,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) #endif while ((cmd = hostdata->connected)) { - struct NCR5380_cmd *ncmd = scsi_cmd_priv(cmd); + struct NCR5380_cmd *ncmd = NCR5380_cmd_priv(cmd); tmp = NCR5380_read(STATUS_REG); /* We only have a valid SCSI phase when REQ is asserted */ @@ -2206,7 +2206,7 @@ static bool list_del_cmd(struct list_head *haystack, struct scsi_cmnd *needle) { if (list_find_cmd(haystack, needle)) { - struct NCR5380_cmd *ncmd = scsi_cmd_priv(needle); + struct NCR5380_cmd *ncmd = NCR5380_cmd_priv(needle); list_del(&ncmd->list); return true; diff --git a/drivers/scsi/NCR5380.h b/drivers/scsi/NCR5380.h index 845bd2423e66..88a1bb41b72e 100644 --- a/drivers/scsi/NCR5380.h +++ b/drivers/scsi/NCR5380.h @@ -230,6 +230,11 @@ struct NCR5380_cmd { struct list_head list; }; +static inline struct NCR5380_cmd *NCR5380_cmd_priv(struct scsi_cmnd *cmd) +{ + return scsi_cmd_priv(cmd); +} + #define NCR5380_PIO_CHUNK_SIZE 256 /* Time limit (ms) to poll registers when IRQs are disabled, e.g. during PDMA */ From patchwork Fri Feb 11 22:32:08 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542027 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 14372C433EF for ; Fri, 11 Feb 2022 22:33:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354103AbiBKWd1 (ORCPT ); Fri, 11 Feb 2022 17:33:27 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:33938 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354097AbiBKWd0 (ORCPT ); Fri, 11 Feb 2022 17:33:26 -0500 Received: from mail-pf1-f180.google.com (mail-pf1-f180.google.com [209.85.210.180]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D21DFD52 for ; Fri, 11 Feb 2022 14:33:24 -0800 (PST) Received: by mail-pf1-f180.google.com with SMTP id a39so17827163pfx.7 for ; Fri, 11 Feb 2022 14:33:24 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=W/uCFQynT+oZB9gVA55CGf3bsDwxJbtZ1xwg7R0D9DM=; b=KdsPgHYm2Ce9tCsf5rtNhegSSjE/CM1pe3mhhDXeueSthKv6pzgs72rTis8TSkdAK6 qaXb8ddWdmEcttgF1gz62onP2bJle1PI2jAAhsGazwDywWYqFAi9wdeqZp5LRqJUFtVE 3VByLnJa+eNvNlMujOE3K3s9DpyWcdR5zsxJUXfbIayW3F7px2D/yjL9eaivsH65Pd2F 81Bwz1f4Nbdg4GSoa5ldtjAfCiR3aga8nvQSOsvSCykBf0ywwnBUdfpqbyvqifZzKLR7 OSG1BMTST+D+yJ2CVP8fe76r04L4obzD5Gkk+UIH+nSAJzXCAz+k2jaaFmzsmEjdbdVv pCIQ== X-Gm-Message-State: AOAM533P+yGJ6ZEHDoCfj/VkkTaSXcSYKC6KG0uJYLJyPFWZ0fZhYwTR HR3J0euJJQSdmres3CsqiGk= X-Google-Smtp-Source: ABdhPJxPS1s7WwUOUg4BjViy0XgYNNwSL4L0A84fToomv/1gctcJc6O12y7QBFb8Mztt2TiBybkOLg== X-Received: by 2002:a05:6a00:1789:: with SMTP id s9mr3628911pfg.71.1644618804142; Fri, 11 Feb 2022 14:33:24 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.33.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:33:23 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Finn Thain , Hannes Reinecke , Ondrej Zary , Michael Schmitz , Johannes Thumshirn , Himanshu Madhani , Finn Thain , "James E.J. Bottomley" Subject: [PATCH v3 09/48] scsi: NCR5380: Move the SCSI pointer to private command data Date: Fri, 11 Feb 2022 14:32:08 -0800 Message-Id: <20220211223247.14369-10-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Move the SCSI pointer into the NCR5380 private command data instead of using the SCSI pointer from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. The NCR5380 drivers have been identified as follows: $ git grep -l '#include.*NCR5380.h' drivers/scsi/arm/cumana_1.c drivers/scsi/arm/oak.c drivers/scsi/atari_scsi.c drivers/scsi/dmx3191d.c drivers/scsi/g_NCR5380.c drivers/scsi/mac_scsi.c drivers/scsi/sun3_scsi.c Cc: Finn Thain Cc: Hannes Reinecke Cc: Ondrej Zary Cc: Michael Schmitz Reviewed-by: Johannes Thumshirn Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche Reviewed-by: Hannes Reinecke --- drivers/scsi/NCR5380.c | 89 ++++++++++++++++++++++++--------------- drivers/scsi/NCR5380.h | 1 + drivers/scsi/atari_scsi.c | 7 ++- drivers/scsi/g_NCR5380.c | 6 ++- drivers/scsi/mac_scsi.c | 7 ++- drivers/scsi/sun3_scsi.c | 4 +- 6 files changed, 72 insertions(+), 42 deletions(-) diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c index 6fa5e363945a..974b15cf8415 100644 --- a/drivers/scsi/NCR5380.c +++ b/drivers/scsi/NCR5380.c @@ -145,40 +145,47 @@ static void bus_reset_cleanup(struct Scsi_Host *); static inline void initialize_SCp(struct scsi_cmnd *cmd) { + struct scsi_pointer *scsi_pointer = + &NCR5380_cmd_priv(cmd)->scsi_pointer; + /* * Initialize the Scsi Pointer field so that all of the commands in the * various queues are valid. */ if (scsi_bufflen(cmd)) { - cmd->SCp.buffer = scsi_sglist(cmd); - cmd->SCp.ptr = sg_virt(cmd->SCp.buffer); - cmd->SCp.this_residual = cmd->SCp.buffer->length; + scsi_pointer->buffer = scsi_sglist(cmd); + scsi_pointer->ptr = sg_virt(scsi_pointer->buffer); + scsi_pointer->this_residual = scsi_pointer->buffer->length; } else { - cmd->SCp.buffer = NULL; - cmd->SCp.ptr = NULL; - cmd->SCp.this_residual = 0; + scsi_pointer->buffer = NULL; + scsi_pointer->ptr = NULL; + scsi_pointer->this_residual = 0; } - cmd->SCp.Status = 0; - cmd->SCp.Message = 0; + scsi_pointer->Status = 0; + scsi_pointer->Message = 0; } static inline void advance_sg_buffer(struct scsi_cmnd *cmd) { - struct scatterlist *s = cmd->SCp.buffer; - - if (!cmd->SCp.this_residual && s && !sg_is_last(s)) { - cmd->SCp.buffer = sg_next(s); - cmd->SCp.ptr = sg_virt(cmd->SCp.buffer); - cmd->SCp.this_residual = cmd->SCp.buffer->length; + struct scsi_pointer *scsi_pointer = + &NCR5380_cmd_priv(cmd)->scsi_pointer; + struct scatterlist *s = scsi_pointer->buffer; + + if (!scsi_pointer->this_residual && s && !sg_is_last(s)) { + scsi_pointer->buffer = sg_next(s); + scsi_pointer->ptr = sg_virt(scsi_pointer->buffer); + scsi_pointer->this_residual = scsi_pointer->buffer->length; } } static inline void set_resid_from_SCp(struct scsi_cmnd *cmd) { - int resid = cmd->SCp.this_residual; - struct scatterlist *s = cmd->SCp.buffer; + struct scsi_pointer *scsi_pointer = + &NCR5380_cmd_priv(cmd)->scsi_pointer; + int resid = scsi_pointer->this_residual; + struct scatterlist *s = scsi_pointer->buffer; if (s) while (!sg_is_last(s)) { @@ -757,6 +764,7 @@ static void NCR5380_main(struct work_struct *work) static void NCR5380_dma_complete(struct Scsi_Host *instance) { struct NCR5380_hostdata *hostdata = shost_priv(instance); + struct scsi_pointer *scsi_pointer; int transferred; unsigned char **data; int *count; @@ -764,7 +772,10 @@ static void NCR5380_dma_complete(struct Scsi_Host *instance) unsigned char p; if (hostdata->read_overruns) { - p = hostdata->connected->SCp.phase; + struct scsi_pointer *scsi_pointer = + &NCR5380_cmd_priv(hostdata->connected)->scsi_pointer; + + p = scsi_pointer->phase; if (p & SR_IO) { udelay(10); if ((NCR5380_read(BUS_AND_STATUS_REG) & @@ -801,8 +812,9 @@ static void NCR5380_dma_complete(struct Scsi_Host *instance) transferred = hostdata->dma_len - NCR5380_dma_residual(hostdata); hostdata->dma_len = 0; - data = (unsigned char **)&hostdata->connected->SCp.ptr; - count = &hostdata->connected->SCp.this_residual; + scsi_pointer = &NCR5380_cmd_priv(hostdata->connected)->scsi_pointer; + data = (unsigned char **)&scsi_pointer->ptr; + count = &scsi_pointer->this_residual; *data += transferred; *count -= transferred; @@ -1487,6 +1499,8 @@ static int NCR5380_transfer_dma(struct Scsi_Host *instance, unsigned char **data) { struct NCR5380_hostdata *hostdata = shost_priv(instance); + struct scsi_pointer *scsi_pointer = + &NCR5380_cmd_priv(hostdata->connected)->scsi_pointer; int c = *count; unsigned char p = *phase; unsigned char *d = *data; @@ -1498,7 +1512,7 @@ static int NCR5380_transfer_dma(struct Scsi_Host *instance, return -1; } - hostdata->connected->SCp.phase = p; + scsi_pointer->phase = p; if (p & SR_IO) { if (hostdata->read_overruns) @@ -1691,6 +1705,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) while ((cmd = hostdata->connected)) { struct NCR5380_cmd *ncmd = NCR5380_cmd_priv(cmd); + struct scsi_pointer *scsi_pointer = &ncmd->scsi_pointer; tmp = NCR5380_read(STATUS_REG); /* We only have a valid SCSI phase when REQ is asserted */ @@ -1712,10 +1727,10 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) if (count > 0) { if (cmd->sc_data_direction == DMA_TO_DEVICE) sun3scsi_dma_send_setup(hostdata, - cmd->SCp.ptr, count); + scsi_pointer->ptr, count); else sun3scsi_dma_recv_setup(hostdata, - cmd->SCp.ptr, count); + scsi_pointer->ptr, count); sun3_dma_setup_done = cmd; } #ifdef SUN3_SCSI_VME @@ -1758,8 +1773,8 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) advance_sg_buffer(cmd); dsprintk(NDEBUG_INFORMATION, instance, "this residual %d, sg ents %d\n", - cmd->SCp.this_residual, - sg_nents(cmd->SCp.buffer)); + scsi_pointer->this_residual, + sg_nents(scsi_pointer->buffer)); /* * The preferred transfer method is going to be @@ -1778,7 +1793,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) if (transfersize > 0) { len = transfersize; if (NCR5380_transfer_dma(instance, &phase, - &len, (unsigned char **)&cmd->SCp.ptr)) { + &len, (unsigned char **)&scsi_pointer->ptr)) { /* * If the watchdog timer fires, all future * accesses to this device will use the @@ -1794,13 +1809,13 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) /* Transfer a small chunk so that the * irq mode lock is not held too long. */ - transfersize = min(cmd->SCp.this_residual, + transfersize = min(scsi_pointer->this_residual, NCR5380_PIO_CHUNK_SIZE); len = transfersize; NCR5380_transfer_pio(instance, &phase, &len, - (unsigned char **)&cmd->SCp.ptr, + (unsigned char **)&scsi_pointer->ptr, 0); - cmd->SCp.this_residual -= transfersize - len; + scsi_pointer->this_residual -= transfersize - len; } #ifdef CONFIG_SUN3 if (sun3_dma_setup_done == cmd) @@ -1811,7 +1826,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) len = 1; data = &tmp; NCR5380_transfer_pio(instance, &phase, &len, &data, 0); - cmd->SCp.Message = tmp; + scsi_pointer->Message = tmp; switch (tmp) { case ABORT: @@ -1828,15 +1843,15 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) hostdata->connected = NULL; hostdata->busy[scmd_id(cmd)] &= ~(1 << cmd->device->lun); - set_status_byte(cmd, cmd->SCp.Status); + set_status_byte(cmd, scsi_pointer->Status); set_resid_from_SCp(cmd); if (cmd->cmnd[0] == REQUEST_SENSE) complete_cmd(instance, cmd); else { - if (cmd->SCp.Status == SAM_STAT_CHECK_CONDITION || - cmd->SCp.Status == SAM_STAT_COMMAND_TERMINATED) { + if (scsi_pointer->Status == SAM_STAT_CHECK_CONDITION || + scsi_pointer->Status == SAM_STAT_COMMAND_TERMINATED) { dsprintk(NDEBUG_QUEUES, instance, "autosense: adding cmd %p to tail of autosense queue\n", cmd); list_add_tail(&ncmd->list, @@ -2000,7 +2015,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) len = 1; data = &tmp; NCR5380_transfer_pio(instance, &phase, &len, &data, 0); - cmd->SCp.Status = tmp; + scsi_pointer->Status = tmp; break; default: shost_printk(KERN_ERR, instance, "unknown phase\n"); @@ -2151,6 +2166,8 @@ static void NCR5380_reselect(struct Scsi_Host *instance) #ifdef CONFIG_SUN3 if (sun3_dma_setup_done != tmp) { + struct scsi_pointer *scsi_pointer = + &NCR5380_cmd_priv(tmp)->scsi_pointer; int count; advance_sg_buffer(tmp); @@ -2160,10 +2177,12 @@ static void NCR5380_reselect(struct Scsi_Host *instance) if (count > 0) { if (tmp->sc_data_direction == DMA_TO_DEVICE) sun3scsi_dma_send_setup(hostdata, - tmp->SCp.ptr, count); + scsi_pointer->ptr, + count); else sun3scsi_dma_recv_setup(hostdata, - tmp->SCp.ptr, count); + scsi_pointer->ptr, + count); sun3_dma_setup_done = tmp; } } diff --git a/drivers/scsi/NCR5380.h b/drivers/scsi/NCR5380.h index 88a1bb41b72e..a4291e7c24dd 100644 --- a/drivers/scsi/NCR5380.h +++ b/drivers/scsi/NCR5380.h @@ -227,6 +227,7 @@ struct NCR5380_hostdata { }; struct NCR5380_cmd { + struct scsi_pointer scsi_pointer; struct list_head list; }; diff --git a/drivers/scsi/atari_scsi.c b/drivers/scsi/atari_scsi.c index e9d0d99abc86..17e6a6262abf 100644 --- a/drivers/scsi/atari_scsi.c +++ b/drivers/scsi/atari_scsi.c @@ -538,7 +538,9 @@ static int falcon_classify_cmd(struct scsi_cmnd *cmd) static int atari_scsi_dma_xfer_len(struct NCR5380_hostdata *hostdata, struct scsi_cmnd *cmd) { - int wanted_len = cmd->SCp.this_residual; + struct scsi_pointer *scsi_pointer = + &NCR5380_cmd_priv(cmd)->scsi_pointer; + int wanted_len = scsi_pointer->this_residual; int possible_len, limit; if (wanted_len < DMA_MIN_SIZE) @@ -610,7 +612,8 @@ static int atari_scsi_dma_xfer_len(struct NCR5380_hostdata *hostdata, } /* Last step: apply the hard limit on DMA transfers */ - limit = (atari_dma_buffer && !STRAM_ADDR(virt_to_phys(cmd->SCp.ptr))) ? + limit = (atari_dma_buffer && + !STRAM_ADDR(virt_to_phys(scsi_pointer->ptr))) ? STRAM_BUFFER_SIZE : 255*512; if (possible_len > limit) possible_len = limit; diff --git a/drivers/scsi/g_NCR5380.c b/drivers/scsi/g_NCR5380.c index 5923f86a384e..f887ed2e0a8e 100644 --- a/drivers/scsi/g_NCR5380.c +++ b/drivers/scsi/g_NCR5380.c @@ -663,7 +663,9 @@ static inline int generic_NCR5380_psend(struct NCR5380_hostdata *hostdata, static int generic_NCR5380_dma_xfer_len(struct NCR5380_hostdata *hostdata, struct scsi_cmnd *cmd) { - int transfersize = cmd->SCp.this_residual; + struct scsi_pointer *scsi_pointer = + &NCR5380_cmd_priv(cmd)->scsi_pointer; + int transfersize = scsi_pointer->this_residual; if (hostdata->flags & FLAG_NO_PSEUDO_DMA) return 0; @@ -675,7 +677,7 @@ static int generic_NCR5380_dma_xfer_len(struct NCR5380_hostdata *hostdata, /* Limit PDMA send to 512 B to avoid random corruption on DTC3181E */ if (hostdata->board == BOARD_DTC3181E && cmd->sc_data_direction == DMA_TO_DEVICE) - transfersize = min(cmd->SCp.this_residual, 512); + transfersize = min(scsi_pointer->this_residual, 512); return min(transfersize, DMA_MAX_SIZE); } diff --git a/drivers/scsi/mac_scsi.c b/drivers/scsi/mac_scsi.c index 71d493a0bb43..d44ad35621fb 100644 --- a/drivers/scsi/mac_scsi.c +++ b/drivers/scsi/mac_scsi.c @@ -404,11 +404,14 @@ static inline int macscsi_pwrite(struct NCR5380_hostdata *hostdata, static int macscsi_dma_xfer_len(struct NCR5380_hostdata *hostdata, struct scsi_cmnd *cmd) { + struct scsi_pointer *scsi_pointer = + &NCR5380_cmd_priv(cmd)->scsi_pointer; + if (hostdata->flags & FLAG_NO_PSEUDO_DMA || - cmd->SCp.this_residual < setup_use_pdma) + scsi_pointer->this_residual < setup_use_pdma) return 0; - return cmd->SCp.this_residual; + return scsi_pointer->this_residual; } static int macscsi_dma_residual(struct NCR5380_hostdata *hostdata) diff --git a/drivers/scsi/sun3_scsi.c b/drivers/scsi/sun3_scsi.c index 82a253270c3b..3a584a1b7944 100644 --- a/drivers/scsi/sun3_scsi.c +++ b/drivers/scsi/sun3_scsi.c @@ -334,7 +334,9 @@ static int sun3scsi_dma_residual(struct NCR5380_hostdata *hostdata) static int sun3scsi_dma_xfer_len(struct NCR5380_hostdata *hostdata, struct scsi_cmnd *cmd) { - int wanted_len = cmd->SCp.this_residual; + struct scsi_pointer *scsi_pointer = + &NCR5380_cmd_priv(cmd)->scsi_pointer; + int wanted_len = scsi_pointer->this_residual; if (wanted_len < DMA_MIN_SIZE || blk_rq_is_passthrough(scsi_cmd_to_rq(cmd))) return 0; From patchwork Fri Feb 11 22:32:09 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542301 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A96D9C433FE for ; Fri, 11 Feb 2022 22:33:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354105AbiBKWda (ORCPT ); Fri, 11 Feb 2022 17:33:30 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:33952 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354097AbiBKWda (ORCPT ); Fri, 11 Feb 2022 17:33:30 -0500 Received: from mail-pj1-f41.google.com (mail-pj1-f41.google.com [209.85.216.41]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5673BD4E for ; Fri, 11 Feb 2022 14:33:28 -0800 (PST) Received: by mail-pj1-f41.google.com with SMTP id h14-20020a17090a130e00b001b88991a305so13206340pja.3 for ; Fri, 11 Feb 2022 14:33:28 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=tiRy83pbS8JbqPhLaht2SxkCi86NZhxk2F+HsvH7mWg=; b=MlYKvGjICDyM2iz8mgL7L9xQG8j+YBgj2+mMFRT6PLeMRyozc3JiUID5+9jL5B88xR jewUv1VE3kTZopximZTNQYtNJeE4DEqgleLM6mbyL61wO/COmgRnSBqSSIpNo2mKnVbO yjttHfYmFqVbzhp3/9gLL68hKJQszZ+rsm9tMMcY5pwXfY63pOustDFtF+9QPRcUvDzz 4q/XTcJrZGYoDETrIwzFuu7NXdDZX/v8FRYe0RtIsACQKfJCO0t/TbISAbY5MPQ079ZL k1/dfBC/NmglzqSotgtSrAbsq2a1G/Je/ilyrQr79FRKTpTbXYUn91qqBFkWFlyWYhMb CcVA== X-Gm-Message-State: AOAM531CmOz0R/lAwSQWc6rFGOT6+fzPlDFjjQOAoQpbgoypZCQmwHZG DIclb3EMKfbSGqXa5Vskyd6bMnUFVhDDew== X-Google-Smtp-Source: ABdhPJzosHzHMIivMGwM239ibnyLdxe8dUb/u5PkOUvkeNajvXaLO40hRad0uVRcvzZzPIu+WoENiA== X-Received: by 2002:a17:902:8d8c:: with SMTP id v12mr3613220plo.0.1644618807739; Fri, 11 Feb 2022 14:33:27 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.33.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:33:26 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Russell King , Johannes Thumshirn , Himanshu Madhani , Hannes Reinecke , "James E.J. Bottomley" Subject: [PATCH v3 10/48] scsi: arm: Rename arm/scsi.h into arm/arm_scsi.h Date: Fri, 11 Feb 2022 14:32:09 -0800 Message-Id: <20220211223247.14369-11-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org The new name makes the purpose of this header file more clear and also makes it easier to find this header file with grep. Cc: Russell King Reviewed-by: Johannes Thumshirn Reviewed-by: Himanshu Madhani Reviewed-by: Hannes Reinecke Signed-off-by: Bart Van Assche --- drivers/scsi/arm/acornscsi.c | 2 +- drivers/scsi/arm/{scsi.h => arm_scsi.h} | 4 +--- drivers/scsi/arm/cumana_2.c | 2 +- drivers/scsi/arm/eesox.c | 2 +- drivers/scsi/arm/fas216.c | 2 +- drivers/scsi/arm/powertec.c | 2 +- 6 files changed, 6 insertions(+), 8 deletions(-) rename drivers/scsi/arm/{scsi.h => arm_scsi.h} (97%) diff --git a/drivers/scsi/arm/acornscsi.c b/drivers/scsi/arm/acornscsi.c index a8a72d822862..38aa9333631b 100644 --- a/drivers/scsi/arm/acornscsi.c +++ b/drivers/scsi/arm/acornscsi.c @@ -136,7 +136,7 @@ #include #include "acornscsi.h" #include "msgqueue.h" -#include "scsi.h" +#include "arm_scsi.h" #include diff --git a/drivers/scsi/arm/scsi.h b/drivers/scsi/arm/arm_scsi.h similarity index 97% rename from drivers/scsi/arm/scsi.h rename to drivers/scsi/arm/arm_scsi.h index 4d5ff7b4e864..3eb5c6aa93c9 100644 --- a/drivers/scsi/arm/scsi.h +++ b/drivers/scsi/arm/arm_scsi.h @@ -1,10 +1,8 @@ /* SPDX-License-Identifier: GPL-2.0-only */ /* - * linux/drivers/acorn/scsi/scsi.h - * * Copyright (C) 2002 Russell King * - * Commonly used scsi driver functions. + * Commonly used functions by the ARM SCSI-II drivers. */ #include diff --git a/drivers/scsi/arm/cumana_2.c b/drivers/scsi/arm/cumana_2.c index 536d6646e40b..d15053f02472 100644 --- a/drivers/scsi/arm/cumana_2.c +++ b/drivers/scsi/arm/cumana_2.c @@ -36,7 +36,7 @@ #include #include #include "fas216.h" -#include "scsi.h" +#include "arm_scsi.h" #include diff --git a/drivers/scsi/arm/eesox.c b/drivers/scsi/arm/eesox.c index ab0f6422a6a9..6f374af9f45f 100644 --- a/drivers/scsi/arm/eesox.c +++ b/drivers/scsi/arm/eesox.c @@ -42,7 +42,7 @@ #include #include #include "fas216.h" -#include "scsi.h" +#include "arm_scsi.h" #include diff --git a/drivers/scsi/arm/fas216.c b/drivers/scsi/arm/fas216.c index 0d6df5ebf934..a23e34c9f7de 100644 --- a/drivers/scsi/arm/fas216.c +++ b/drivers/scsi/arm/fas216.c @@ -55,7 +55,7 @@ #include #include #include "fas216.h" -#include "scsi.h" +#include "arm_scsi.h" /* NOTE: SCSI2 Synchronous transfers *require* DMA according to * the data sheet. This restriction is crazy, especially when diff --git a/drivers/scsi/arm/powertec.c b/drivers/scsi/arm/powertec.c index 797568b271e3..7586d2a03812 100644 --- a/drivers/scsi/arm/powertec.c +++ b/drivers/scsi/arm/powertec.c @@ -27,7 +27,7 @@ #include #include #include "fas216.h" -#include "scsi.h" +#include "arm_scsi.h" #include From patchwork Fri Feb 11 22:32:10 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 64204C433EF for ; Fri, 11 Feb 2022 22:33:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354113AbiBKWdf (ORCPT ); Fri, 11 Feb 2022 17:33:35 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:33982 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354097AbiBKWde (ORCPT ); Fri, 11 Feb 2022 17:33:34 -0500 Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BD34CD4E for ; Fri, 11 Feb 2022 14:33:30 -0800 (PST) Received: by mail-pj1-f46.google.com with SMTP id t14-20020a17090a3e4e00b001b8f6032d96so10117935pjm.2 for ; Fri, 11 Feb 2022 14:33:30 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/Ba4bEJmtkM/3WJAT4TgzDstqDhaDKX2I2VSFRMVcdg=; b=MZ/TmgO0Im+gr1M77+8Zoh0SEwuSYDz+CgJT97WRn1qF9uNgq+4TjQG6vM9ZJ7pWzm YtB+30fG7V6PQ1oCP/LafY0uyVCYqiY9/PW7z3JRHOWt+rgFLvJf+Q0XTn1TeIA5Ksvn upcQu7Lhyk5s7PhCWTkExWlY+xJqwhOHbYjNxSKNkWUL8lAPYzFkmz9uV9EOIGiVmbYt Yp825DZvP7LiX6IN7fQQJ2k2NsW0S/2Ddw8AqN8LfWIPBZALWgUlUsiSJ0bnW5ht33iK w7BpVf5mVSxiEKMU1woLwKDZYOv4tXQi/nlLceVDtlTF2RXb89AvFG+Z9/kK4xul5iCC 1Kdw== X-Gm-Message-State: AOAM532Y1nABNxcumsBOc3vPqQDFg4/MSbDAk5XOT0gLqKh3zvt5aC06 eHlL53iChGuprTNfm2U7OfA= X-Google-Smtp-Source: ABdhPJyRhBG1GdJnvRpgTuIo9cehUm1JLKLY7clXCL95y7F3RK3YyHR3/5K/Mr0l2nTUM8hxH0mUmg== X-Received: by 2002:a17:902:eb8f:: with SMTP id q15mr3608667plg.67.1644618809760; Fri, 11 Feb 2022 14:33:29 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.33.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:33:29 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Russell King , Hannes Reinecke , Himanshu Madhani , "James E.J. Bottomley" Subject: [PATCH v3 11/48] scsi: arm: Move the SCSI pointer to private command data Date: Fri, 11 Feb 2022 14:32:10 -0800 Message-Id: <20220211223247.14369-12-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Set .cmd_size in the SCSI host template instead of using the SCSI pointer from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. The ARM SCSI drivers have been identified as follows: $ git grep -l '#include.*arm_scsi.h' drivers/scsi/arm/acornscsi.c drivers/scsi/arm/cumana_2.c drivers/scsi/arm/eesox.c drivers/scsi/arm/fas216.c drivers/scsi/arm/powertec.c Cc: Russell King Reviewed-by: Hannes Reinecke Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/scsi/arm/acornscsi.c | 20 ++++++++++++-------- drivers/scsi/arm/arm_scsi.h | 33 +++++++++++++++++++++++---------- drivers/scsi/arm/fas216.c | 28 +++++++++++++++++----------- drivers/scsi/arm/fas216.h | 4 ++++ 4 files changed, 56 insertions(+), 29 deletions(-) diff --git a/drivers/scsi/arm/acornscsi.c b/drivers/scsi/arm/acornscsi.c index 38aa9333631b..7602639da9b3 100644 --- a/drivers/scsi/arm/acornscsi.c +++ b/drivers/scsi/arm/acornscsi.c @@ -729,7 +729,7 @@ intr_ret_t acornscsi_kick(AS_Host *host) */ host->scsi.phase = PHASE_CONNECTING; host->SCpnt = SCpnt; - host->scsi.SCp = SCpnt->SCp; + host->scsi.SCp = *arm_scsi_pointer(SCpnt); host->dma.xfer_setup = 0; host->dma.xfer_required = 0; host->dma.xfer_done = 0; @@ -1424,6 +1424,7 @@ unsigned char acornscsi_readmessagebyte(AS_Host *host) static void acornscsi_message(AS_Host *host) { + struct scsi_pointer *scsi_pointer; unsigned char message[16]; unsigned int msgidx = 0, msglen = 1; @@ -1493,8 +1494,9 @@ void acornscsi_message(AS_Host *host) * the saved data pointer for the current I/O process. */ acornscsi_dma_cleanup(host); - host->SCpnt->SCp = host->scsi.SCp; - host->SCpnt->SCp.sent_command = 0; + scsi_pointer = arm_scsi_pointer(host->SCpnt); + *scsi_pointer = host->scsi.SCp; + scsi_pointer->sent_command = 0; host->scsi.phase = PHASE_MSGIN; break; @@ -1509,7 +1511,7 @@ void acornscsi_message(AS_Host *host) * the present command and status areas.' */ acornscsi_dma_cleanup(host); - host->scsi.SCp = host->SCpnt->SCp; + host->scsi.SCp = *arm_scsi_pointer(host->SCpnt); host->scsi.phase = PHASE_MSGIN; break; @@ -1809,7 +1811,7 @@ int acornscsi_reconnect_finish(AS_Host *host) /* * Restore data pointer from SAVED pointers. */ - host->scsi.SCp = host->SCpnt->SCp; + host->scsi.SCp = *arm_scsi_pointer(host->SCpnt); #if (DEBUG & (DEBUG_QUEUES|DEBUG_DISCON)) printk(", data pointers: [%p, %X]", host->scsi.SCp.ptr, host->scsi.SCp.this_residual); @@ -2408,6 +2410,7 @@ acornscsi_intr(int irq, void *dev_id) */ static int acornscsi_queuecmd_lck(struct scsi_cmnd *SCpnt) { + struct scsi_pointer *scsi_pointer = arm_scsi_pointer(SCpnt); void (*done)(struct scsi_cmnd *) = scsi_done; AS_Host *host = (AS_Host *)SCpnt->device->host->hostdata; @@ -2423,9 +2426,9 @@ static int acornscsi_queuecmd_lck(struct scsi_cmnd *SCpnt) SCpnt->host_scribble = NULL; SCpnt->result = 0; - SCpnt->SCp.phase = (int)acornscsi_datadirection(SCpnt->cmnd[0]); - SCpnt->SCp.sent_command = 0; - SCpnt->SCp.scsi_xferred = 0; + scsi_pointer->phase = (int)acornscsi_datadirection(SCpnt->cmnd[0]); + scsi_pointer->sent_command = 0; + scsi_pointer->scsi_xferred = 0; init_SCp(SCpnt); @@ -2791,6 +2794,7 @@ static struct scsi_host_template acornscsi_template = { .cmd_per_lun = 2, .dma_boundary = PAGE_SIZE - 1, .proc_name = "acornscsi", + .cmd_size = sizeof(struct arm_cmd_priv), }; static int acornscsi_probe(struct expansion_card *ec, const struct ecard_id *id) diff --git a/drivers/scsi/arm/arm_scsi.h b/drivers/scsi/arm/arm_scsi.h index 3eb5c6aa93c9..ea9fcd92c6de 100644 --- a/drivers/scsi/arm/arm_scsi.h +++ b/drivers/scsi/arm/arm_scsi.h @@ -9,6 +9,17 @@ #define BELT_AND_BRACES +struct arm_cmd_priv { + struct scsi_pointer scsi_pointer; +}; + +static inline struct scsi_pointer *arm_scsi_pointer(struct scsi_cmnd *cmd) +{ + struct arm_cmd_priv *acmd = scsi_cmd_priv(cmd); + + return &acmd->scsi_pointer; +} + /* * The scatter-gather list handling. This contains all * the yucky stuff that needs to be fixed properly. @@ -76,16 +87,18 @@ static inline void put_next_SCp_byte(struct scsi_pointer *SCp, unsigned char c) static inline void init_SCp(struct scsi_cmnd *SCpnt) { - memset(&SCpnt->SCp, 0, sizeof(struct scsi_pointer)); + struct scsi_pointer *scsi_pointer = arm_scsi_pointer(SCpnt); + + memset(scsi_pointer, 0, sizeof(struct scsi_pointer)); if (scsi_bufflen(SCpnt)) { unsigned long len = 0; - SCpnt->SCp.buffer = scsi_sglist(SCpnt); - SCpnt->SCp.buffers_residual = scsi_sg_count(SCpnt) - 1; - SCpnt->SCp.ptr = sg_virt(SCpnt->SCp.buffer); - SCpnt->SCp.this_residual = SCpnt->SCp.buffer->length; - SCpnt->SCp.phase = scsi_bufflen(SCpnt); + scsi_pointer->buffer = scsi_sglist(SCpnt); + scsi_pointer->buffers_residual = scsi_sg_count(SCpnt) - 1; + scsi_pointer->ptr = sg_virt(scsi_pointer->buffer); + scsi_pointer->this_residual = scsi_pointer->buffer->length; + scsi_pointer->phase = scsi_bufflen(SCpnt); #ifdef BELT_AND_BRACES { /* @@ -109,15 +122,15 @@ static inline void init_SCp(struct scsi_cmnd *SCpnt) * FIXME: Totaly naive fixup. We should abort * with error */ - SCpnt->SCp.phase = + scsi_pointer->phase = min_t(unsigned long, len, scsi_bufflen(SCpnt)); } } #endif } else { - SCpnt->SCp.ptr = NULL; - SCpnt->SCp.this_residual = 0; - SCpnt->SCp.phase = 0; + scsi_pointer->ptr = NULL; + scsi_pointer->this_residual = 0; + scsi_pointer->phase = 0; } } diff --git a/drivers/scsi/arm/fas216.c b/drivers/scsi/arm/fas216.c index a23e34c9f7de..4ce0b2d73614 100644 --- a/drivers/scsi/arm/fas216.c +++ b/drivers/scsi/arm/fas216.c @@ -761,7 +761,7 @@ static void fas216_transfer(FAS216_Info *info) fas216_log(info, LOG_ERROR, "null buffer passed to " "fas216_starttransfer"); print_SCp(&info->scsi.SCp, "SCp: ", "\n"); - print_SCp(&info->SCpnt->SCp, "Cmnd SCp: ", "\n"); + print_SCp(arm_scsi_pointer(info->SCpnt), "Cmnd SCp: ", "\n"); return; } @@ -1011,7 +1011,7 @@ fas216_reselected_intr(FAS216_Info *info) /* * Restore data pointer from SAVED data pointer */ - info->scsi.SCp = info->SCpnt->SCp; + info->scsi.SCp = *arm_scsi_pointer(info->SCpnt); fas216_log(info, LOG_CONNECT, "data pointers: [%p, %X]", info->scsi.SCp.ptr, info->scsi.SCp.this_residual); @@ -1054,6 +1054,7 @@ fas216_reselected_intr(FAS216_Info *info) static void fas216_parse_message(FAS216_Info *info, unsigned char *message, int msglen) { + struct scsi_pointer *scsi_pointer; int i; switch (message[0]) { @@ -1078,8 +1079,9 @@ static void fas216_parse_message(FAS216_Info *info, unsigned char *message, int * as required by the SCSI II standard. These always * point to the start of their respective areas. */ - info->SCpnt->SCp = info->scsi.SCp; - info->SCpnt->SCp.sent_command = 0; + scsi_pointer = arm_scsi_pointer(info->SCpnt); + *scsi_pointer = info->scsi.SCp; + scsi_pointer->sent_command = 0; fas216_log(info, LOG_CONNECT | LOG_MESSAGES | LOG_BUFFER, "save data pointers: [%p, %X]", info->scsi.SCp.ptr, info->scsi.SCp.this_residual); @@ -1092,7 +1094,7 @@ static void fas216_parse_message(FAS216_Info *info, unsigned char *message, int /* * Restore current data pointer from SAVED data pointer */ - info->scsi.SCp = info->SCpnt->SCp; + info->scsi.SCp = *arm_scsi_pointer(info->SCpnt); fas216_log(info, LOG_CONNECT | LOG_MESSAGES | LOG_BUFFER, "restore data pointers: [%p, 0x%x]", info->scsi.SCp.ptr, info->scsi.SCp.this_residual); @@ -1770,7 +1772,7 @@ static void fas216_start_command(FAS216_Info *info, struct scsi_cmnd *SCpnt) * claim host busy */ info->scsi.phase = PHASE_SELECTION; - info->scsi.SCp = SCpnt->SCp; + info->scsi.SCp = *arm_scsi_pointer(SCpnt); info->SCpnt = SCpnt; info->dma.transfer_type = fasdma_none; @@ -1849,7 +1851,7 @@ static void fas216_do_bus_device_reset(FAS216_Info *info, * claim host busy */ info->scsi.phase = PHASE_SELECTION; - info->scsi.SCp = SCpnt->SCp; + info->scsi.SCp = *arm_scsi_pointer(SCpnt); info->SCpnt = SCpnt; info->dma.transfer_type = fasdma_none; @@ -1999,11 +2001,13 @@ static void fas216_devicereset_done(FAS216_Info *info, struct scsi_cmnd *SCpnt, static void fas216_rq_sns_done(FAS216_Info *info, struct scsi_cmnd *SCpnt, unsigned int result) { + struct scsi_pointer *scsi_pointer = arm_scsi_pointer(SCpnt); + fas216_log_target(info, LOG_CONNECT, SCpnt->device->id, "request sense complete, result=0x%04x%02x%02x", - result, SCpnt->SCp.Message, SCpnt->SCp.Status); + result, scsi_pointer->Message, scsi_pointer->Status); - if (result != DID_OK || SCpnt->SCp.Status != SAM_STAT_GOOD) + if (result != DID_OK || scsi_pointer->Status != SAM_STAT_GOOD) /* * Something went wrong. Make sure that we don't * have valid data in the sense buffer that could @@ -2033,6 +2037,8 @@ static void fas216_rq_sns_done(FAS216_Info *info, struct scsi_cmnd *SCpnt, static void fas216_std_done(FAS216_Info *info, struct scsi_cmnd *SCpnt, unsigned int result) { + struct scsi_pointer *scsi_pointer = arm_scsi_pointer(SCpnt); + info->stats.fins += 1; set_host_byte(SCpnt, result); @@ -2107,8 +2113,8 @@ fas216_std_done(FAS216_Info *info, struct scsi_cmnd *SCpnt, unsigned int result) fas216_log_target(info, LOG_CONNECT, SCpnt->device->id, "requesting sense"); init_SCp(SCpnt); - SCpnt->SCp.Message = 0; - SCpnt->SCp.Status = 0; + scsi_pointer->Message = 0; + scsi_pointer->Status = 0; SCpnt->host_scribble = (void *)fas216_rq_sns_done; /* diff --git a/drivers/scsi/arm/fas216.h b/drivers/scsi/arm/fas216.h index abf960487314..08113277a2a9 100644 --- a/drivers/scsi/arm/fas216.h +++ b/drivers/scsi/arm/fas216.h @@ -312,6 +312,10 @@ typedef struct { /* driver-private data per SCSI command. */ struct fas216_cmd_priv { + /* + * @scsi_pointer must be the first member. See also arm_scsi_pointer(). + */ + struct scsi_pointer scsi_pointer; void (*scsi_done)(struct scsi_cmnd *cmd); }; From patchwork Fri Feb 11 22:32:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542300 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9D6A6C433F5 for ; Fri, 11 Feb 2022 22:33:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354111AbiBKWdg (ORCPT ); Fri, 11 Feb 2022 17:33:36 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34000 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354108AbiBKWdf (ORCPT ); Fri, 11 Feb 2022 17:33:35 -0500 Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3572DD54 for ; Fri, 11 Feb 2022 14:33:32 -0800 (PST) Received: by mail-pl1-f173.google.com with SMTP id w20so5756772plq.12 for ; Fri, 11 Feb 2022 14:33:32 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Y0M6XC14NmFEhp0o4hgZi4UrdhPuRybsPzWnxMeaeUU=; b=hZC/ueeusBZ28R9Q5b6DbZa++DK12dj8QyAjXt9DigQv5Bw81cqq7ttGbi0WrD6im6 ZTOeIK3bRc81MID8FNg7E73+q2DWFu8aPba9C6klpyShYSiUbMQ4x0lDqIxgDBiHWqWE hbcv9fKjKAKDuL4Cb1vyg1Jg7FDrpZ3pQHxcLxfqaVbU9YK9K6RgNp0wcTCLqNQI2a5x pkc6WM83KwbppV7DvBnO97cD0EGC3oroaqpQP20CjCc1PJ6wpw9wWIrPd/jBuJcuSd57 oCjrzDlRbs6fyhmEsurrEXgA+0ZakuDMyQwZzphU8lMn49qlzI26g7z/jCOsOGxQ9kKD HISQ== X-Gm-Message-State: AOAM530+ndfHk2lS2T9IQ7DR9Oaerve4uSVexHBvdhrjN2FvDT9c5tWL u9EfZ7pTdJpoNvGKmifaGk928tU/qZh5nQ== X-Google-Smtp-Source: ABdhPJxaVADUrUPbop8T/SjJVSgtDZ2eDbNZxQtelRS/YCrgHeSR9FFDyVTTmOD/5CxBKdX7P5lCbQ== X-Received: by 2002:a17:902:bd0a:: with SMTP id p10mr3497406pls.159.1644618811620; Fri, 11 Feb 2022 14:33:31 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.33.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:33:31 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Johannes Thumshirn , Himanshu Madhani , Hannes Reinecke , "James E.J. Bottomley" Subject: [PATCH v3 12/48] scsi: 53c700: Stop clearing SCSI pointer fields Date: Fri, 11 Feb 2022 14:32:11 -0800 Message-Id: <20220211223247.14369-13-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org None of the 53c700 drivers uses the SCSI pointer. Hence remove the code from 53c700.c that clears two SCSI pointer fields. The 53c700 drivers are: $ git grep -l 'include.*53c700' drivers/scsi/53c700.c drivers/scsi/a4000t.c drivers/scsi/bvme6000_scsi.c drivers/scsi/lasi700.c drivers/scsi/mvme16x_scsi.c drivers/scsi/sim710.c drivers/scsi/sni_53c710.c drivers/scsi/zorro7xx.c Reviewed-by: Johannes Thumshirn Reviewed-by: Himanshu Madhani Reviewed-by: Hannes Reinecke Signed-off-by: Bart Van Assche --- drivers/scsi/53c700.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/scsi/53c700.c b/drivers/scsi/53c700.c index ad4972c0fc53..e1e4f9d10887 100644 --- a/drivers/scsi/53c700.c +++ b/drivers/scsi/53c700.c @@ -1791,8 +1791,6 @@ static int NCR_700_queuecommand_lck(struct scsi_cmnd *SCp) slot->cmnd = SCp; SCp->host_scribble = (unsigned char *)slot; - SCp->SCp.ptr = NULL; - SCp->SCp.buffer = NULL; #ifdef NCR_700_DEBUG printk("53c700: scsi%d, command ", SCp->device->host->host_no); From patchwork Fri Feb 11 22:32:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5DBD5C433FE for ; Fri, 11 Feb 2022 22:33:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345313AbiBKWdh (ORCPT ); Fri, 11 Feb 2022 17:33:37 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34010 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354097AbiBKWdg (ORCPT ); Fri, 11 Feb 2022 17:33:36 -0500 Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2004BD4E for ; Fri, 11 Feb 2022 14:33:34 -0800 (PST) Received: by mail-pl1-f170.google.com with SMTP id l9so4167968plg.0 for ; Fri, 11 Feb 2022 14:33:34 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rzT3EzQ4DCE8qaMk2M0orsVE5XN2yxnIAxRkAgTIWg4=; b=Klxkgvcq4xVeJ78RRAtFvLRQQSZhXsfe/RHlz5GIDL0F/tCEeLNrwMhUcXzxfW4RGY JduaydSIn6oZ0F6hG1yN4bGqvHqHSFU4fb8ODv1XrQ6DV3b1Tfo1XY0TFT+/rKdpejsT 6RcJHpLknInEAL3KT2qzICAm1xI2OxktN3ewpYe0hI/khpZMUtDzexp8n37YMd28ZDxW fz2QOB4cneB0xaTTocQLcsd4zIZXCRPQ9vHZI7NrPAOAz6qqNpMU/5e2xzcOrpvqTnsc XdFYNMdOuVmHnPNChaSTZXXJ/h2g5OnFcXMANZRDCbpjLWdFf1/yNG06dDSxCKrQHT1U 9/VA== X-Gm-Message-State: AOAM53037+spxuvbVniip40CwidbI1tB0kWpYsA6l3iURDVWpF7WA+Ke j4DfRCFZs+PPB74gZKRPZi4= X-Google-Smtp-Source: ABdhPJxsstt6fmybyKXjx5FMa4igPEDzQjI5fgjXRNo8NrlheEUVCNT3DE+M9vcW+BNdKDsYsOTiSQ== X-Received: by 2002:a17:903:11d0:: with SMTP id q16mr3608588plh.134.1644618813433; Fri, 11 Feb 2022 14:33:33 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.33.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:33:32 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Hannes Reinecke , Himanshu Madhani , Adaptec OEM Raid Solutions , "James E.J. Bottomley" Subject: [PATCH v3 13/48] scsi: aacraid: Move the SCSI pointer to private command data Date: Fri, 11 Feb 2022 14:32:12 -0800 Message-Id: <20220211223247.14369-14-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Set .cmd_size in the SCSI host template instead of using the SCSI pointer from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Reviewed-by: Hannes Reinecke Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/scsi/aacraid/aachba.c | 43 ++++++++++++++++++--------------- drivers/scsi/aacraid/aacraid.h | 24 ++++++++++++++---- drivers/scsi/aacraid/comminit.c | 2 +- drivers/scsi/aacraid/linit.c | 21 ++++++++-------- 4 files changed, 54 insertions(+), 36 deletions(-) diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c index b04d039da276..81462f4ddb90 100644 --- a/drivers/scsi/aacraid/aachba.c +++ b/drivers/scsi/aacraid/aachba.c @@ -338,7 +338,7 @@ static inline int aac_valid_context(struct scsi_cmnd *scsicmd, aac_fib_complete(fibptr); return 0; } - scsicmd->SCp.phase = AAC_OWNER_MIDLEVEL; + aac_priv(scsicmd)->owner = AAC_OWNER_MIDLEVEL; device = scsicmd->device; if (unlikely(!device)) { dprintk((KERN_WARNING "aac_valid_context: scsi device corrupt\n")); @@ -592,7 +592,7 @@ static int aac_get_container_name(struct scsi_cmnd * scsicmd) aac_fib_init(cmd_fibcontext); dinfo = (struct aac_get_name *) fib_data(cmd_fibcontext); - scsicmd->SCp.phase = AAC_OWNER_FIRMWARE; + aac_priv(scsicmd)->owner = AAC_OWNER_FIRMWARE; dinfo->command = cpu_to_le32(VM_ContainerConfig); dinfo->type = cpu_to_le32(CT_READ_NAME); @@ -634,14 +634,15 @@ static void _aac_probe_container2(void * context, struct fib * fibptr) { struct fsa_dev_info *fsa_dev_ptr; int (*callback)(struct scsi_cmnd *); - struct scsi_cmnd * scsicmd = (struct scsi_cmnd *)context; + struct scsi_cmnd *scsicmd = context; + struct aac_cmd_priv *cmd_priv = aac_priv(scsicmd); int i; if (!aac_valid_context(scsicmd, fibptr)) return; - scsicmd->SCp.Status = 0; + cmd_priv->status = 0; fsa_dev_ptr = fibptr->dev->fsa_dev; if (fsa_dev_ptr) { struct aac_mount * dresp = (struct aac_mount *) fib_data(fibptr); @@ -679,12 +680,12 @@ static void _aac_probe_container2(void * context, struct fib * fibptr) } if ((fsa_dev_ptr->valid & 1) == 0) fsa_dev_ptr->valid = 0; - scsicmd->SCp.Status = le32_to_cpu(dresp->count); + cmd_priv->status = le32_to_cpu(dresp->count); } aac_fib_complete(fibptr); aac_fib_free(fibptr); - callback = (int (*)(struct scsi_cmnd *))(scsicmd->SCp.ptr); - scsicmd->SCp.ptr = NULL; + callback = cmd_priv->callback; + cmd_priv->callback = NULL; (*callback)(scsicmd); return; } @@ -722,7 +723,7 @@ static void _aac_probe_container1(void * context, struct fib * fibptr) dinfo->count = cpu_to_le32(scmd_id(scsicmd)); dinfo->type = cpu_to_le32(FT_FILESYS); - scsicmd->SCp.phase = AAC_OWNER_FIRMWARE; + aac_priv(scsicmd)->owner = AAC_OWNER_FIRMWARE; status = aac_fib_send(ContainerCommand, fibptr, @@ -743,6 +744,7 @@ static void _aac_probe_container1(void * context, struct fib * fibptr) static int _aac_probe_container(struct scsi_cmnd * scsicmd, int (*callback)(struct scsi_cmnd *)) { + struct aac_cmd_priv *cmd_priv = aac_priv(scsicmd); struct fib * fibptr; int status = -ENOMEM; @@ -761,8 +763,8 @@ static int _aac_probe_container(struct scsi_cmnd * scsicmd, int (*callback)(stru dinfo->count = cpu_to_le32(scmd_id(scsicmd)); dinfo->type = cpu_to_le32(FT_FILESYS); - scsicmd->SCp.ptr = (char *)callback; - scsicmd->SCp.phase = AAC_OWNER_FIRMWARE; + cmd_priv->callback = callback; + cmd_priv->owner = AAC_OWNER_FIRMWARE; status = aac_fib_send(ContainerCommand, fibptr, @@ -778,7 +780,7 @@ static int _aac_probe_container(struct scsi_cmnd * scsicmd, int (*callback)(stru return 0; if (status < 0) { - scsicmd->SCp.ptr = NULL; + cmd_priv->callback = NULL; aac_fib_complete(fibptr); aac_fib_free(fibptr); } @@ -817,6 +819,7 @@ static void aac_probe_container_scsi_done(struct scsi_cmnd *scsi_cmnd) int aac_probe_container(struct aac_dev *dev, int cid) { struct scsi_cmnd *scsicmd = kzalloc(sizeof(*scsicmd), GFP_KERNEL); + struct aac_cmd_priv *cmd_priv = aac_priv(scsicmd); struct scsi_device *scsidev = kzalloc(sizeof(*scsidev), GFP_KERNEL); int status; @@ -835,7 +838,7 @@ int aac_probe_container(struct aac_dev *dev, int cid) while (scsicmd->device == scsidev) schedule(); kfree(scsidev); - status = scsicmd->SCp.Status; + status = cmd_priv->status; kfree(scsicmd); return status; } @@ -1128,7 +1131,7 @@ static int aac_get_container_serial(struct scsi_cmnd * scsicmd) dinfo->command = cpu_to_le32(VM_ContainerConfig); dinfo->type = cpu_to_le32(CT_CID_TO_32BITS_UID); dinfo->cid = cpu_to_le32(scmd_id(scsicmd)); - scsicmd->SCp.phase = AAC_OWNER_FIRMWARE; + aac_priv(scsicmd)->owner = AAC_OWNER_FIRMWARE; status = aac_fib_send(ContainerCommand, cmd_fibcontext, @@ -2486,7 +2489,7 @@ static int aac_read(struct scsi_cmnd * scsicmd) * Alocate and initialize a Fib */ cmd_fibcontext = aac_fib_alloc_tag(dev, scsicmd); - scsicmd->SCp.phase = AAC_OWNER_FIRMWARE; + aac_priv(scsicmd)->owner = AAC_OWNER_FIRMWARE; status = aac_adapter_read(cmd_fibcontext, scsicmd, lba, count); /* @@ -2577,7 +2580,7 @@ static int aac_write(struct scsi_cmnd * scsicmd) * Allocate and initialize a Fib then setup a BlockWrite command */ cmd_fibcontext = aac_fib_alloc_tag(dev, scsicmd); - scsicmd->SCp.phase = AAC_OWNER_FIRMWARE; + aac_priv(scsicmd)->owner = AAC_OWNER_FIRMWARE; status = aac_adapter_write(cmd_fibcontext, scsicmd, lba, count, fua); /* @@ -2660,7 +2663,7 @@ static int aac_synchronize(struct scsi_cmnd *scsicmd) synchronizecmd->cid = cpu_to_le32(scmd_id(scsicmd)); synchronizecmd->count = cpu_to_le32(sizeof(((struct aac_synchronize_reply *)NULL)->data)); - scsicmd->SCp.phase = AAC_OWNER_FIRMWARE; + aac_priv(scsicmd)->owner = AAC_OWNER_FIRMWARE; /* * Now send the Fib to the adapter @@ -2736,7 +2739,7 @@ static int aac_start_stop(struct scsi_cmnd *scsicmd) pmcmd->cid = cpu_to_le32(sdev_id(sdev)); pmcmd->parm = (scsicmd->cmnd[1] & 1) ? cpu_to_le32(CT_PM_UNIT_IMMEDIATE) : 0; - scsicmd->SCp.phase = AAC_OWNER_FIRMWARE; + aac_priv(scsicmd)->owner = AAC_OWNER_FIRMWARE; /* * Now send the Fib to the adapter @@ -3695,7 +3698,7 @@ void aac_hba_callback(void *context, struct fib *fibptr) aac_fib_complete(fibptr); if (fibptr->flags & FIB_CONTEXT_FLAG_NATIVE_HBA_TMF) - scsicmd->SCp.sent_command = 1; + aac_priv(scsicmd)->sent_command = 1; else aac_scsi_done(scsicmd); } @@ -3725,7 +3728,7 @@ static int aac_send_srb_fib(struct scsi_cmnd* scsicmd) * Allocate and initialize a Fib then setup a BlockWrite command */ cmd_fibcontext = aac_fib_alloc_tag(dev, scsicmd); - scsicmd->SCp.phase = AAC_OWNER_FIRMWARE; + aac_priv(scsicmd)->owner = AAC_OWNER_FIRMWARE; status = aac_adapter_scsi(cmd_fibcontext, scsicmd); /* @@ -3769,7 +3772,7 @@ static int aac_send_hba_fib(struct scsi_cmnd *scsicmd) if (!cmd_fibcontext) return -1; - scsicmd->SCp.phase = AAC_OWNER_FIRMWARE; + aac_priv(scsicmd)->owner = AAC_OWNER_FIRMWARE; status = aac_adapter_hba(cmd_fibcontext, scsicmd); /* diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h index 3733df77bc65..f849e7c9d428 100644 --- a/drivers/scsi/aacraid/aacraid.h +++ b/drivers/scsi/aacraid/aacraid.h @@ -29,6 +29,7 @@ #include #include #include +#include /*------------------------------------------------------------------------------ * D E F I N E S @@ -2673,11 +2674,24 @@ static inline void aac_cancel_rescan_worker(struct aac_dev *dev) cancel_delayed_work_sync(&dev->src_reinit_aif_worker); } -/* SCp.phase values */ -#define AAC_OWNER_MIDLEVEL 0x101 -#define AAC_OWNER_LOWLEVEL 0x102 -#define AAC_OWNER_ERROR_HANDLER 0x103 -#define AAC_OWNER_FIRMWARE 0x106 +enum aac_cmd_owner { + AAC_OWNER_MIDLEVEL = 0x101, + AAC_OWNER_LOWLEVEL = 0x102, + AAC_OWNER_ERROR_HANDLER = 0x103, + AAC_OWNER_FIRMWARE = 0x106, +}; + +struct aac_cmd_priv { + int (*callback)(struct scsi_cmnd *); + int status; + enum aac_cmd_owner owner; + bool sent_command; +}; + +static inline struct aac_cmd_priv *aac_priv(struct scsi_cmnd *cmd) +{ + return scsi_cmd_priv(cmd); +} void aac_safw_rescan_worker(struct work_struct *work); void aac_src_reinit_aif_worker(struct work_struct *work); diff --git a/drivers/scsi/aacraid/comminit.c b/drivers/scsi/aacraid/comminit.c index 355b16f0b145..940a6deab38f 100644 --- a/drivers/scsi/aacraid/comminit.c +++ b/drivers/scsi/aacraid/comminit.c @@ -276,7 +276,7 @@ static bool wait_for_io_iter(struct scsi_cmnd *cmd, void *data, bool rsvd) { int *active = data; - if (cmd->SCp.phase == AAC_OWNER_FIRMWARE) + if (aac_priv(cmd)->owner == AAC_OWNER_FIRMWARE) *active = *active + 1; return true; } diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c index a911252075a6..b91b72b923ec 100644 --- a/drivers/scsi/aacraid/linit.c +++ b/drivers/scsi/aacraid/linit.c @@ -241,10 +241,9 @@ static struct aac_driver_ident aac_drivers[] = { static int aac_queuecommand(struct Scsi_Host *shost, struct scsi_cmnd *cmd) { - int r = 0; - cmd->SCp.phase = AAC_OWNER_LOWLEVEL; - r = (aac_scsi_cmd(cmd) ? FAILED : 0); - return r; + aac_priv(cmd)->owner = AAC_OWNER_LOWLEVEL; + + return aac_scsi_cmd(cmd) ? FAILED : 0; } /** @@ -638,7 +637,7 @@ static bool fib_count_iter(struct scsi_cmnd *scmnd, void *data, bool reserved) { struct fib_count_data *fib_count = data; - switch (scmnd->SCp.phase) { + switch (aac_priv(scmnd)->owner) { case AAC_OWNER_FIRMWARE: fib_count->fwcnt++; break; @@ -680,6 +679,7 @@ static int get_num_of_incomplete_fibs(struct aac_dev *aac) static int aac_eh_abort(struct scsi_cmnd* cmd) { + struct aac_cmd_priv *cmd_priv = aac_priv(cmd); struct scsi_device * dev = cmd->device; struct Scsi_Host * host = dev->host; struct aac_dev * aac = (struct aac_dev *)host->hostdata; @@ -732,7 +732,7 @@ static int aac_eh_abort(struct scsi_cmnd* cmd) tmf->error_length = cpu_to_le32(FW_ERROR_BUFFER_SIZE); fib->hbacmd_size = sizeof(*tmf); - cmd->SCp.sent_command = 0; + cmd_priv->sent_command = 0; status = aac_hba_send(HBA_IU_TYPE_SCSI_TM_REQ, fib, (fib_callback) aac_hba_callback, @@ -744,7 +744,7 @@ static int aac_eh_abort(struct scsi_cmnd* cmd) } /* Wait up to 15 secs for completion */ for (count = 0; count < 15; ++count) { - if (cmd->SCp.sent_command) { + if (cmd_priv->sent_command) { ret = SUCCESS; break; } @@ -784,7 +784,7 @@ static int aac_eh_abort(struct scsi_cmnd* cmd) (fib->callback_data == cmd)) { fib->flags |= FIB_CONTEXT_FLAG_TIMED_OUT; - cmd->SCp.phase = + cmd_priv->owner = AAC_OWNER_ERROR_HANDLER; ret = SUCCESS; } @@ -811,7 +811,7 @@ static int aac_eh_abort(struct scsi_cmnd* cmd) (command->device == cmd->device)) { fib->flags |= FIB_CONTEXT_FLAG_TIMED_OUT; - command->SCp.phase = + aac_priv(command)->owner = AAC_OWNER_ERROR_HANDLER; if (command == cmd) ret = SUCCESS; @@ -1058,7 +1058,7 @@ static int aac_eh_bus_reset(struct scsi_cmnd* cmd) if (bus >= AAC_MAX_BUSES || cid >= AAC_MAX_TARGETS || info->devtype != AAC_DEVTYPE_NATIVE_RAW) { fib->flags |= FIB_CONTEXT_FLAG_EH_RESET; - cmd->SCp.phase = AAC_OWNER_ERROR_HANDLER; + aac_priv(cmd)->owner = AAC_OWNER_ERROR_HANDLER; } } } @@ -1507,6 +1507,7 @@ static struct scsi_host_template aac_driver_template = { #endif .emulated = 1, .no_write_same = 1, + .cmd_size = sizeof(struct aac_cmd_priv), }; static void __aac_shutdown(struct aac_dev * aac) From patchwork Fri Feb 11 22:32:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542299 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6994BC433EF for ; Fri, 11 Feb 2022 22:33:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354119AbiBKWdm (ORCPT ); Fri, 11 Feb 2022 17:33:42 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34020 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354108AbiBKWdh (ORCPT ); Fri, 11 Feb 2022 17:33:37 -0500 Received: from mail-pf1-f175.google.com (mail-pf1-f175.google.com [209.85.210.175]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AA1B3D4E for ; Fri, 11 Feb 2022 14:33:35 -0800 (PST) Received: by mail-pf1-f175.google.com with SMTP id i6so16758247pfc.9 for ; Fri, 11 Feb 2022 14:33:35 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rl+Ciw9thokj1IhmaFWCIUV+9vX0lMQltkfJqZRPd2I=; b=2hTCdTLKYn6epg6UIi9aHkLtIbyeaHcu+EfDz3PMmFNsvuCuqLBLix0QmySK0/OYVg HD05ih1MJg8+XDJ/3XgIia936Db5UpScYno8SjsIG5E4Zhx8oVQevwIE53eAJTemyZ2A 0RVQoXGuCYYmzD8EUPANMb5DrRBflN9y6ZW02leyw53963QuwyabPBFLXTHqY6t74LpP 8uoZBVauT3xyWoSXQjve0aRMk/Fs5kDERO4DAka32wtkVhNdidNaBSuDjAMDbBnq/HrT 0v3mnybGT8AKxeamlHnuyjDyVZ8FuZ+mc7+cY4ZSeQuf6tWKoByewWECh7Ip8a57o/x0 Jehg== X-Gm-Message-State: AOAM530+dBwTcdi9Yb84Rtnziq3KdnGMg7hboGfJuB9vxhrsGZCbmSPv BK4Os6+gZJeszqUxOQK0//8= X-Google-Smtp-Source: ABdhPJzjyt6agJTEhDZ9ojjilUwr2jCAmI0eRtRYLNfGHd4oYGu5ExHPou5ePe4oXpuPsrSypF0sRQ== X-Received: by 2002:a05:6a00:c94:: with SMTP id a20mr3724597pfv.41.1644618815080; Fri, 11 Feb 2022 14:33:35 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.33.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:33:34 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Johannes Thumshirn , Matthew Wilcox , Hannes Reinecke , "James E.J. Bottomley" Subject: [PATCH v3 14/48] scsi: advansys: Move the SCSI pointer to private command data Date: Fri, 11 Feb 2022 14:32:13 -0800 Message-Id: <20220211223247.14369-15-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Set .cmd_size in the SCSI host template instead of using the SCSI pointer from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Reviewed-by: Johannes Thumshirn Signed-off-by: Bart Van Assche Reviewed-by: Hannes Reinecke --- drivers/scsi/advansys.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/drivers/scsi/advansys.c b/drivers/scsi/advansys.c index ace5eff828e9..f301aec044bb 100644 --- a/drivers/scsi/advansys.c +++ b/drivers/scsi/advansys.c @@ -2277,6 +2277,15 @@ struct asc_board { dvc_var.adv_dvc_var) #define adv_dvc_to_pdev(adv_dvc) to_pci_dev(adv_dvc_to_board(adv_dvc)->dev) +struct advansys_cmd { + dma_addr_t dma_handle; +}; + +static struct advansys_cmd *advansys_cmd(struct scsi_cmnd *cmd) +{ + return scsi_cmd_priv(cmd); +} + #ifdef ADVANSYS_DEBUG static int asc_dbglvl = 3; @@ -6681,7 +6690,7 @@ static void asc_isr_callback(ASC_DVC_VAR *asc_dvc_varp, ASC_QDONE_INFO *qdonep) ASC_STATS(boardp->shost, callback); - dma_unmap_single(boardp->dev, scp->SCp.dma_handle, + dma_unmap_single(boardp->dev, advansys_cmd(scp)->dma_handle, SCSI_SENSE_BUFFERSIZE, DMA_FROM_DEVICE); /* * 'qdonep' contains the command's ending status. @@ -7399,15 +7408,15 @@ static int advansys_slave_configure(struct scsi_device *sdev) static __le32 asc_get_sense_buffer_dma(struct scsi_cmnd *scp) { struct asc_board *board = shost_priv(scp->device->host); + struct advansys_cmd *acmd = advansys_cmd(scp); - scp->SCp.dma_handle = dma_map_single(board->dev, scp->sense_buffer, - SCSI_SENSE_BUFFERSIZE, - DMA_FROM_DEVICE); - if (dma_mapping_error(board->dev, scp->SCp.dma_handle)) { + acmd->dma_handle = dma_map_single(board->dev, scp->sense_buffer, + SCSI_SENSE_BUFFERSIZE, DMA_FROM_DEVICE); + if (dma_mapping_error(board->dev, acmd->dma_handle)) { ASC_DBG(1, "failed to map sense buffer\n"); return 0; } - return cpu_to_le32(scp->SCp.dma_handle); + return cpu_to_le32(acmd->dma_handle); } static int asc_build_req(struct asc_board *boardp, struct scsi_cmnd *scp, @@ -10604,6 +10613,7 @@ static struct scsi_host_template advansys_template = { .eh_host_reset_handler = advansys_reset, .bios_param = advansys_biosparam, .slave_configure = advansys_slave_configure, + .cmd_size = sizeof(struct advansys_cmd), }; static int advansys_wide_init_chip(struct Scsi_Host *shost) From patchwork Fri Feb 11 22:32:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542024 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B4350C433F5 for ; Fri, 11 Feb 2022 22:33:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354120AbiBKWdn (ORCPT ); Fri, 11 Feb 2022 17:33:43 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34034 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354097AbiBKWdi (ORCPT ); Fri, 11 Feb 2022 17:33:38 -0500 Received: from mail-pf1-f175.google.com (mail-pf1-f175.google.com [209.85.210.175]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 59AECD52 for ; Fri, 11 Feb 2022 14:33:37 -0800 (PST) Received: by mail-pf1-f175.google.com with SMTP id i6so16758302pfc.9 for ; Fri, 11 Feb 2022 14:33:37 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=nwYKhyFHil4fSG2RLAlZPEkTLtDpBryjbZMFKiNxE5M=; b=cI/GUIoJuygXL8HkX9GkdchyR0MLFej3P9slUY3ulFVVKYZ5fYAAfCQo6i6RU4H+SK 3L0W2d4ws4wdEvtHcYkKxyn8IkOiw9+BbfPg4u/i6iaHqH8GBvVic5EvPCeg2IFDjGXn HbqGzo69ZuNy0z6CRnDAe+0qo/Tt8XUqgBurg+MDI1+JlYKtltQn/Jc4srVItmxSoJD+ GGKCBr6+Dca4jlpKEdlFqOEFt/hLYQlLg5wk3iyP01+htdsekLFS1N6rOSIQEo8XZ3PV JSKgsq7P4espeo5Us8y3aPZZCPJy60nUf4hvtSD+lSwoZ1+9RTKGxgBmQB6MiIZI6Id5 NNkg== X-Gm-Message-State: AOAM530uRjViBtX0mrF6Op7BhZ4CP62XQ6tx4DiCUvg0zIJD3DlMfgeh 2oRMDjlpEuz52hmpk9KmcDw= X-Google-Smtp-Source: ABdhPJwJ+GdE2sCH8D+YLKqQwvuZ4Ewvtxu53Psmq6LdtPiVCoarq2Z0Bdf7ytiCZ1B01OVR01OmIw== X-Received: by 2002:a63:8648:: with SMTP id x69mr3033801pgd.295.1644618816700; Fri, 11 Feb 2022 14:33:36 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.33.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:33:36 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Johannes Thumshirn , Hannes Reinecke , Himanshu Madhani , "James E.J. Bottomley" Subject: [PATCH v3 15/48] scsi: aha1542: Remove a set-but-not-used array Date: Fri, 11 Feb 2022 14:32:14 -0800 Message-Id: <20220211223247.14369-16-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org This patch fixes the following W=1 warning: drivers/scsi/aha1542.c:209:12: warning: variable ‘inquiry_result’ set but not used [-Wunused-but-set-variable] 209 | u8 inquiry_result[4]; Reviewed-by: Johannes Thumshirn Reviewed-by: Hannes Reinecke Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/scsi/aha1542.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/scsi/aha1542.c b/drivers/scsi/aha1542.c index f0e8ae9f5e40..cf7bba2ca68d 100644 --- a/drivers/scsi/aha1542.c +++ b/drivers/scsi/aha1542.c @@ -206,7 +206,6 @@ static int makecode(unsigned hosterr, unsigned scsierr) static int aha1542_test_port(struct Scsi_Host *sh) { - u8 inquiry_result[4]; int i; /* Quick and dirty test for presence of the card. */ @@ -240,7 +239,7 @@ static int aha1542_test_port(struct Scsi_Host *sh) for (i = 0; i < 4; i++) { if (!wait_mask(STATUS(sh->io_port), DF, DF, 0, 0)) return 0; - inquiry_result[i] = inb(DATA(sh->io_port)); + (void)inb(DATA(sh->io_port)); } /* Reading port should reset DF */ From patchwork Fri Feb 11 22:32:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542298 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3071EC433EF for ; Fri, 11 Feb 2022 22:33:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354122AbiBKWdo (ORCPT ); Fri, 11 Feb 2022 17:33:44 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34048 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354115AbiBKWdm (ORCPT ); Fri, 11 Feb 2022 17:33:42 -0500 Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 837B9D53 for ; Fri, 11 Feb 2022 14:33:39 -0800 (PST) Received: by mail-pf1-f171.google.com with SMTP id a39so17827952pfx.7 for ; Fri, 11 Feb 2022 14:33:39 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=M606XAph7ghdXmUFxKYRv7kzlFluM4QcK7HymImpOY4=; b=ENm2ZC6j4EBKoWlKX0+zJJeCnMdNFIoirxLa+Yke0lmwmgxLRpmyI+NWSrluCRM5fg ANL+PDgLl1kwqSEed+vSWpXRwvxniT03ylo98YKuYCtMDlRJ0SlgDzGtoLzW5DTFJodm kzf/7YFWRWX/MyoblP3Gdot2eSGHezQLGQL1gBy7DW30SmZIBQ1Y0W2kbi6Qf4YIi1pB h/szfR17+8PA3k44OgxMlGE9joWA2/gcRmOYEwUmTZnmP3Yh2UUAsRBRmKo++pUb1m6x SlBDV6XPKr977j5Qk/GP9oY4QH3H9pgN3AIHE+1/Btzgwc+mHDz9lD/0NHrOCHdVIoF2 x0fw== X-Gm-Message-State: AOAM530JAQbzlIg5tFVyaPQspMx5AtzuYSDbltYEXrGc0rHxwIcMGwOC 6LlLtzwR3iJWTmue+dyqvF0= X-Google-Smtp-Source: ABdhPJzyj0eh0kfh+bKWvFRy7/xBg1iYrq5bekdWWUkAI1nZpDbt+62FHoqYIlaRCtgQeiUwO70oGA== X-Received: by 2002:aa7:9888:: with SMTP id r8mr3790103pfl.24.1644618818720; Fri, 11 Feb 2022 14:33:38 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.33.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:33:38 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Johannes Thumshirn , Hannes Reinecke , Himanshu Madhani , "Juergen E. Fischer" , "James E.J. Bottomley" Subject: [PATCH v3 16/48] scsi: aha152x: Move the SCSI pointer to private command data Date: Fri, 11 Feb 2022 14:32:15 -0800 Message-Id: <20220211223247.14369-17-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Set .cmd_size in the SCSI host template instead of using the SCSI pointer from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Reviewed-by: Johannes Thumshirn Reviewed-by: Hannes Reinecke Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/scsi/aha152x.c | 259 ++++++++++++++++++++++++----------------- 1 file changed, 155 insertions(+), 104 deletions(-) diff --git a/drivers/scsi/aha152x.c b/drivers/scsi/aha152x.c index 901b78e8ffe6..34b2378075fd 100644 --- a/drivers/scsi/aha152x.c +++ b/drivers/scsi/aha152x.c @@ -316,6 +316,17 @@ enum { check_condition = 0x0800, /* requesting sense after CHECK CONDITION */ }; +struct aha152x_cmd_priv { + struct scsi_pointer scsi_pointer; +}; + +static struct scsi_pointer *aha152x_scsi_pointer(struct scsi_cmnd *cmd) +{ + struct aha152x_cmd_priv *acmd = scsi_cmd_priv(cmd); + + return &acmd->scsi_pointer; +} + MODULE_AUTHOR("Jürgen Fischer"); MODULE_DESCRIPTION(AHA152X_REVID); MODULE_LICENSE("GPL"); @@ -879,14 +890,17 @@ void aha152x_release(struct Scsi_Host *shpnt) static int setup_expected_interrupts(struct Scsi_Host *shpnt) { if(CURRENT_SC) { - CURRENT_SC->SCp.phase |= 1 << 16; + struct scsi_pointer *scsi_pointer = + aha152x_scsi_pointer(CURRENT_SC); - if(CURRENT_SC->SCp.phase & selecting) { + scsi_pointer->phase |= 1 << 16; + + if (scsi_pointer->phase & selecting) { SETPORT(SSTAT1, SELTO); SETPORT(SIMODE0, ENSELDO | (DISCONNECTED_SC ? ENSELDI : 0)); SETPORT(SIMODE1, ENSELTIMO); } else { - SETPORT(SIMODE0, (CURRENT_SC->SCp.phase & spiordy) ? ENSPIORDY : 0); + SETPORT(SIMODE0, (scsi_pointer->phase & spiordy) ? ENSPIORDY : 0); SETPORT(SIMODE1, ENPHASEMIS | ENSCSIRST | ENSCSIPERR | ENBUSFREE); } } else if(STATE==seldi) { @@ -910,16 +924,17 @@ static int setup_expected_interrupts(struct Scsi_Host *shpnt) static int aha152x_internal_queue(struct scsi_cmnd *SCpnt, struct completion *complete, int phase) { + struct scsi_pointer *scsi_pointer = aha152x_scsi_pointer(SCpnt); struct Scsi_Host *shpnt = SCpnt->device->host; unsigned long flags; - SCpnt->SCp.phase = not_issued | phase; - SCpnt->SCp.Status = 0x1; /* Ilegal status by SCSI standard */ - SCpnt->SCp.Message = 0; - SCpnt->SCp.have_data_in = 0; - SCpnt->SCp.sent_command = 0; + scsi_pointer->phase = not_issued | phase; + scsi_pointer->Status = 0x1; /* Ilegal status by SCSI standard */ + scsi_pointer->Message = 0; + scsi_pointer->have_data_in = 0; + scsi_pointer->sent_command = 0; - if(SCpnt->SCp.phase & (resetting|check_condition)) { + if (scsi_pointer->phase & (resetting | check_condition)) { if (!SCpnt->host_scribble || SCSEM(SCpnt) || SCNEXT(SCpnt)) { scmd_printk(KERN_ERR, SCpnt, "cannot reuse command\n"); return FAILED; @@ -942,15 +957,15 @@ static int aha152x_internal_queue(struct scsi_cmnd *SCpnt, SCp.phase : current state of the command */ if ((phase & resetting) || !scsi_sglist(SCpnt)) { - SCpnt->SCp.ptr = NULL; - SCpnt->SCp.this_residual = 0; + scsi_pointer->ptr = NULL; + scsi_pointer->this_residual = 0; scsi_set_resid(SCpnt, 0); - SCpnt->SCp.buffer = NULL; + scsi_pointer->buffer = NULL; } else { scsi_set_resid(SCpnt, scsi_bufflen(SCpnt)); - SCpnt->SCp.buffer = scsi_sglist(SCpnt); - SCpnt->SCp.ptr = SG_ADDRESS(SCpnt->SCp.buffer); - SCpnt->SCp.this_residual = SCpnt->SCp.buffer->length; + scsi_pointer->buffer = scsi_sglist(SCpnt); + scsi_pointer->ptr = SG_ADDRESS(scsi_pointer->buffer); + scsi_pointer->this_residual = scsi_pointer->buffer->length; } DO_LOCK(flags); @@ -1000,7 +1015,7 @@ static void reset_done(struct scsi_cmnd *SCpnt) static void aha152x_scsi_done(struct scsi_cmnd *SCpnt) { - if (SCpnt->SCp.phase & resetting) + if (aha152x_scsi_pointer(SCpnt)->phase & resetting) reset_done(SCpnt); else scsi_done(SCpnt); @@ -1086,7 +1101,7 @@ static int aha152x_device_reset(struct scsi_cmnd * SCpnt) DO_LOCK(flags); - if(SCpnt->SCp.phase & resetted) { + if (aha152x_scsi_pointer(SCpnt)->phase & resetted) { HOSTDATA(shpnt)->commands--; if (!HOSTDATA(shpnt)->commands) SETPORT(PORTA, 0); @@ -1380,28 +1395,31 @@ static void busfree_run(struct Scsi_Host *shpnt) SETPORT(SSTAT1, CLRBUSFREE); if(CURRENT_SC) { + struct scsi_pointer *scsi_pointer = + aha152x_scsi_pointer(CURRENT_SC); + #if defined(AHA152X_STAT) action++; #endif - CURRENT_SC->SCp.phase &= ~syncneg; + scsi_pointer->phase &= ~syncneg; - if(CURRENT_SC->SCp.phase & completed) { + if (scsi_pointer->phase & completed) { /* target sent COMMAND COMPLETE */ - done(shpnt, CURRENT_SC->SCp.Status, DID_OK); + done(shpnt, scsi_pointer->Status, DID_OK); - } else if(CURRENT_SC->SCp.phase & aborted) { - done(shpnt, CURRENT_SC->SCp.Status, DID_ABORT); + } else if (scsi_pointer->phase & aborted) { + done(shpnt, scsi_pointer->Status, DID_ABORT); - } else if(CURRENT_SC->SCp.phase & resetted) { - done(shpnt, CURRENT_SC->SCp.Status, DID_RESET); + } else if (scsi_pointer->phase & resetted) { + done(shpnt, scsi_pointer->Status, DID_RESET); - } else if(CURRENT_SC->SCp.phase & disconnected) { + } else if (scsi_pointer->phase & disconnected) { /* target sent DISCONNECT */ #if defined(AHA152X_STAT) HOSTDATA(shpnt)->disconnections++; #endif append_SC(&DISCONNECTED_SC, CURRENT_SC); - CURRENT_SC->SCp.phase |= 1 << 16; + scsi_pointer->phase |= 1 << 16; CURRENT_SC = NULL; } else { @@ -1420,23 +1438,24 @@ static void busfree_run(struct Scsi_Host *shpnt) action++; #endif - if(DONE_SC->SCp.phase & check_condition) { + if (aha152x_scsi_pointer(DONE_SC)->phase & check_condition) { struct scsi_cmnd *cmd = HOSTDATA(shpnt)->done_SC; struct aha152x_scdata *sc = SCDATA(cmd); scsi_eh_restore_cmnd(cmd, &sc->ses); - cmd->SCp.Status = SAM_STAT_CHECK_CONDITION; + aha152x_scsi_pointer(cmd)->Status = SAM_STAT_CHECK_CONDITION; HOSTDATA(shpnt)->commands--; if (!HOSTDATA(shpnt)->commands) SETPORT(PORTA, 0); /* turn led off */ - } else if(DONE_SC->SCp.Status==SAM_STAT_CHECK_CONDITION) { + } else if (aha152x_scsi_pointer(DONE_SC)->Status == + SAM_STAT_CHECK_CONDITION) { #if defined(AHA152X_STAT) HOSTDATA(shpnt)->busfree_with_check_condition++; #endif - if(!(DONE_SC->SCp.phase & not_issued)) { + if(!(aha152x_scsi_pointer(DONE_SC)->phase & not_issued)) { struct aha152x_scdata *sc; struct scsi_cmnd *ptr = DONE_SC; DONE_SC=NULL; @@ -1461,7 +1480,7 @@ static void busfree_run(struct Scsi_Host *shpnt) if (!HOSTDATA(shpnt)->commands) SETPORT(PORTA, 0); /* turn led off */ - if (!(ptr->SCp.phase & resetting)) { + if (!(aha152x_scsi_pointer(ptr)->phase & resetting)) { kfree(ptr->host_scribble); ptr->host_scribble=NULL; } @@ -1484,10 +1503,13 @@ static void busfree_run(struct Scsi_Host *shpnt) DO_UNLOCK(flags); if(CURRENT_SC) { + struct scsi_pointer *scsi_pointer = + aha152x_scsi_pointer(CURRENT_SC); + #if defined(AHA152X_STAT) action++; #endif - CURRENT_SC->SCp.phase |= selecting; + scsi_pointer->phase |= selecting; /* clear selection timeout */ SETPORT(SSTAT1, SELTO); @@ -1515,11 +1537,13 @@ static void busfree_run(struct Scsi_Host *shpnt) */ static void seldo_run(struct Scsi_Host *shpnt) { + struct scsi_pointer *scsi_pointer = aha152x_scsi_pointer(CURRENT_SC); + SETPORT(SCSISIG, 0); SETPORT(SSTAT1, CLRBUSFREE); SETPORT(SSTAT1, CLRPHASECHG); - CURRENT_SC->SCp.phase &= ~(selecting|not_issued); + scsi_pointer->phase &= ~(selecting | not_issued); SETPORT(SCSISEQ, 0); @@ -1534,12 +1558,12 @@ static void seldo_run(struct Scsi_Host *shpnt) ADDMSGO(IDENTIFY(RECONNECT, CURRENT_SC->device->lun)); - if (CURRENT_SC->SCp.phase & aborting) { + if (scsi_pointer->phase & aborting) { ADDMSGO(ABORT); - } else if (CURRENT_SC->SCp.phase & resetting) { + } else if (scsi_pointer->phase & resetting) { ADDMSGO(BUS_DEVICE_RESET); } else if (SYNCNEG==0 && SYNCHRONOUS) { - CURRENT_SC->SCp.phase |= syncneg; + scsi_pointer->phase |= syncneg; MSGOLEN += spi_populate_sync_msg(&MSGO(MSGOLEN), 50, 8); SYNCNEG=1; /* negotiation in progress */ } @@ -1554,15 +1578,17 @@ static void seldo_run(struct Scsi_Host *shpnt) */ static void selto_run(struct Scsi_Host *shpnt) { + struct scsi_pointer *scsi_pointer = aha152x_scsi_pointer(CURRENT_SC); + SETPORT(SCSISEQ, 0); SETPORT(SSTAT1, CLRSELTIMO); if (!CURRENT_SC) return; - CURRENT_SC->SCp.phase &= ~selecting; + scsi_pointer->phase &= ~selecting; - if (CURRENT_SC->SCp.phase & aborted) + if (scsi_pointer->phase & aborted) done(shpnt, SAM_STAT_GOOD, DID_ABORT); else if (TESTLO(SSTAT0, SELINGO)) done(shpnt, SAM_STAT_GOOD, DID_BUS_BUSY); @@ -1590,7 +1616,10 @@ static void seldi_run(struct Scsi_Host *shpnt) SETPORT(SSTAT1, CLRPHASECHG); if(CURRENT_SC) { - if(!(CURRENT_SC->SCp.phase & not_issued)) + struct scsi_pointer *scsi_pointer = + aha152x_scsi_pointer(CURRENT_SC); + + if (!(scsi_pointer->phase & not_issued)) scmd_printk(KERN_ERR, CURRENT_SC, "command should not have been issued yet\n"); @@ -1647,6 +1676,7 @@ static void seldi_run(struct Scsi_Host *shpnt) static void msgi_run(struct Scsi_Host *shpnt) { for(;;) { + struct scsi_pointer *scsi_pointer; int sstat1 = GETPORT(SSTAT1); if(sstat1 & (PHASECHG|PHASEMIS|BUSFREE) || !(sstat1 & REQINIT)) @@ -1684,8 +1714,9 @@ static void msgi_run(struct Scsi_Host *shpnt) continue; } - CURRENT_SC->SCp.Message = MSGI(0); - CURRENT_SC->SCp.phase &= ~disconnected; + scsi_pointer = aha152x_scsi_pointer(CURRENT_SC); + scsi_pointer->Message = MSGI(0); + scsi_pointer->phase &= ~disconnected; MSGILEN=0; @@ -1693,7 +1724,8 @@ static void msgi_run(struct Scsi_Host *shpnt) continue; } - CURRENT_SC->SCp.Message = MSGI(0); + scsi_pointer = aha152x_scsi_pointer(CURRENT_SC); + scsi_pointer->Message = MSGI(0); switch (MSGI(0)) { case DISCONNECT: @@ -1701,11 +1733,11 @@ static void msgi_run(struct Scsi_Host *shpnt) scmd_printk(KERN_WARNING, CURRENT_SC, "target was not allowed to disconnect\n"); - CURRENT_SC->SCp.phase |= disconnected; + scsi_pointer->phase |= disconnected; break; case COMMAND_COMPLETE: - CURRENT_SC->SCp.phase |= completed; + scsi_pointer->phase |= completed; break; case MESSAGE_REJECT: @@ -1835,8 +1867,11 @@ static void msgi_end(struct Scsi_Host *shpnt) */ static void msgo_init(struct Scsi_Host *shpnt) { + struct scsi_pointer *scsi_pointer = aha152x_scsi_pointer(CURRENT_SC); + if(MSGOLEN==0) { - if((CURRENT_SC->SCp.phase & syncneg) && SYNCNEG==2 && SYNCRATE==0) { + if ((scsi_pointer->phase & syncneg) && SYNCNEG==2 && + SYNCRATE==0) { ADDMSGO(IDENTIFY(RECONNECT, CURRENT_SC->device->lun)); } else { scmd_printk(KERN_INFO, CURRENT_SC, @@ -1853,6 +1888,8 @@ static void msgo_init(struct Scsi_Host *shpnt) */ static void msgo_run(struct Scsi_Host *shpnt) { + struct scsi_pointer *scsi_pointer = aha152x_scsi_pointer(CURRENT_SC); + while(MSGO_ISCp.phase |= identified; + scsi_pointer->phase |= identified; if (MSGO(MSGO_I)==ABORT) - CURRENT_SC->SCp.phase |= aborted; + scsi_pointer->phase |= aborted; if (MSGO(MSGO_I)==BUS_DEVICE_RESET) - CURRENT_SC->SCp.phase |= resetted; + scsi_pointer->phase |= resetted; SETPORT(SCSIDAT, MSGO(MSGO_I++)); } @@ -1899,7 +1936,7 @@ static void msgo_end(struct Scsi_Host *shpnt) */ static void cmd_init(struct Scsi_Host *shpnt) { - if (CURRENT_SC->SCp.sent_command) { + if (aha152x_scsi_pointer(CURRENT_SC)->sent_command) { scmd_printk(KERN_ERR, CURRENT_SC, "command already sent\n"); done(shpnt, SAM_STAT_GOOD, DID_ERROR); @@ -1930,7 +1967,7 @@ static void cmd_end(struct Scsi_Host *shpnt) "command sent incompletely (%d/%d)\n", CMD_I, CURRENT_SC->cmd_len); else - CURRENT_SC->SCp.sent_command++; + aha152x_scsi_pointer(CURRENT_SC)->sent_command++; } /* @@ -1942,7 +1979,7 @@ static void status_run(struct Scsi_Host *shpnt) if (TESTLO(SSTAT0, SPIORDY)) return; - CURRENT_SC->SCp.Status = GETPORT(SCSIDAT); + aha152x_scsi_pointer(CURRENT_SC)->Status = GETPORT(SCSIDAT); } @@ -1966,6 +2003,7 @@ static void datai_init(struct Scsi_Host *shpnt) static void datai_run(struct Scsi_Host *shpnt) { + struct scsi_pointer *scsi_pointer; unsigned long the_time; int fifodata, data_count; @@ -2003,35 +2041,36 @@ static void datai_run(struct Scsi_Host *shpnt) fifodata = GETPORT(FIFOSTAT); } - if(CURRENT_SC->SCp.this_residual>0) { - while(fifodata>0 && CURRENT_SC->SCp.this_residual>0) { - data_count = fifodata > CURRENT_SC->SCp.this_residual ? - CURRENT_SC->SCp.this_residual : + scsi_pointer = aha152x_scsi_pointer(CURRENT_SC); + if (scsi_pointer->this_residual > 0) { + while (fifodata > 0 && scsi_pointer->this_residual > 0) { + data_count = fifodata > scsi_pointer->this_residual ? + scsi_pointer->this_residual : fifodata; fifodata -= data_count; if (data_count & 1) { SETPORT(DMACNTRL0, ENDMA|_8BIT); - *CURRENT_SC->SCp.ptr++ = GETPORT(DATAPORT); - CURRENT_SC->SCp.this_residual--; + *scsi_pointer->ptr++ = GETPORT(DATAPORT); + scsi_pointer->this_residual--; DATA_LEN++; SETPORT(DMACNTRL0, ENDMA); } if (data_count > 1) { data_count >>= 1; - insw(DATAPORT, CURRENT_SC->SCp.ptr, data_count); - CURRENT_SC->SCp.ptr += 2 * data_count; - CURRENT_SC->SCp.this_residual -= 2 * data_count; + insw(DATAPORT, scsi_pointer->ptr, data_count); + scsi_pointer->ptr += 2 * data_count; + scsi_pointer->this_residual -= 2 * data_count; DATA_LEN += 2 * data_count; } - if (CURRENT_SC->SCp.this_residual == 0 && - !sg_is_last(CURRENT_SC->SCp.buffer)) { + if (scsi_pointer->this_residual == 0 && + !sg_is_last(scsi_pointer->buffer)) { /* advance to next buffer */ - CURRENT_SC->SCp.buffer = sg_next(CURRENT_SC->SCp.buffer); - CURRENT_SC->SCp.ptr = SG_ADDRESS(CURRENT_SC->SCp.buffer); - CURRENT_SC->SCp.this_residual = CURRENT_SC->SCp.buffer->length; + scsi_pointer->buffer = sg_next(scsi_pointer->buffer); + scsi_pointer->ptr = SG_ADDRESS(scsi_pointer->buffer); + scsi_pointer->this_residual = scsi_pointer->buffer->length; } } } else if (fifodata > 0) { @@ -2099,14 +2138,15 @@ static void datao_init(struct Scsi_Host *shpnt) static void datao_run(struct Scsi_Host *shpnt) { + struct scsi_pointer *scsi_pointer = aha152x_scsi_pointer(CURRENT_SC); unsigned long the_time; int data_count; /* until phase changes or all data sent */ - while(TESTLO(DMASTAT, INTSTAT) && CURRENT_SC->SCp.this_residual>0) { + while (TESTLO(DMASTAT, INTSTAT) && scsi_pointer->this_residual > 0) { data_count = 128; - if(data_count > CURRENT_SC->SCp.this_residual) - data_count=CURRENT_SC->SCp.this_residual; + if (data_count > scsi_pointer->this_residual) + data_count = scsi_pointer->this_residual; if(TESTLO(DMASTAT, DFIFOEMP)) { scmd_printk(KERN_ERR, CURRENT_SC, @@ -2117,26 +2157,26 @@ static void datao_run(struct Scsi_Host *shpnt) if(data_count & 1) { SETPORT(DMACNTRL0,WRITE_READ|ENDMA|_8BIT); - SETPORT(DATAPORT, *CURRENT_SC->SCp.ptr++); - CURRENT_SC->SCp.this_residual--; + SETPORT(DATAPORT, *scsi_pointer->ptr++); + scsi_pointer->this_residual--; CMD_INC_RESID(CURRENT_SC, -1); SETPORT(DMACNTRL0,WRITE_READ|ENDMA); } if(data_count > 1) { data_count >>= 1; - outsw(DATAPORT, CURRENT_SC->SCp.ptr, data_count); - CURRENT_SC->SCp.ptr += 2 * data_count; - CURRENT_SC->SCp.this_residual -= 2 * data_count; + outsw(DATAPORT, scsi_pointer->ptr, data_count); + scsi_pointer->ptr += 2 * data_count; + scsi_pointer->this_residual -= 2 * data_count; CMD_INC_RESID(CURRENT_SC, -2 * data_count); } - if (CURRENT_SC->SCp.this_residual == 0 && - !sg_is_last(CURRENT_SC->SCp.buffer)) { + if (scsi_pointer->this_residual == 0 && + !sg_is_last(scsi_pointer->buffer)) { /* advance to next buffer */ - CURRENT_SC->SCp.buffer = sg_next(CURRENT_SC->SCp.buffer); - CURRENT_SC->SCp.ptr = SG_ADDRESS(CURRENT_SC->SCp.buffer); - CURRENT_SC->SCp.this_residual = CURRENT_SC->SCp.buffer->length; + scsi_pointer->buffer = sg_next(scsi_pointer->buffer); + scsi_pointer->ptr = SG_ADDRESS(scsi_pointer->buffer); + scsi_pointer->this_residual = scsi_pointer->buffer->length; } the_time=jiffies + 100*HZ; @@ -2152,6 +2192,8 @@ static void datao_run(struct Scsi_Host *shpnt) static void datao_end(struct Scsi_Host *shpnt) { + struct scsi_pointer *scsi_pointer = aha152x_scsi_pointer(CURRENT_SC); + if(TESTLO(DMASTAT, DFIFOEMP)) { u32 datao_cnt = GETSTCNT(); int datao_out = DATA_LEN - scsi_get_resid(CURRENT_SC); @@ -2169,9 +2211,9 @@ static void datao_end(struct Scsi_Host *shpnt) sg = sg_next(sg); } - CURRENT_SC->SCp.buffer = sg; - CURRENT_SC->SCp.ptr = SG_ADDRESS(CURRENT_SC->SCp.buffer) + done; - CURRENT_SC->SCp.this_residual = CURRENT_SC->SCp.buffer->length - + scsi_pointer->buffer = sg; + scsi_pointer->ptr = SG_ADDRESS(scsi_pointer->buffer) + done; + scsi_pointer->this_residual = scsi_pointer->buffer->length - done; } @@ -2187,6 +2229,7 @@ static void datao_end(struct Scsi_Host *shpnt) */ static int update_state(struct Scsi_Host *shpnt) { + struct scsi_pointer *scsi_pointer = aha152x_scsi_pointer(CURRENT_SC); int dataphase=0; unsigned int stat0 = GETPORT(SSTAT0); unsigned int stat1 = GETPORT(SSTAT1); @@ -2200,7 +2243,8 @@ static int update_state(struct Scsi_Host *shpnt) SETPORT(SSTAT1,SCSIRSTI); } else if (stat0 & SELDI && PREVSTATE == busfree) { STATE=seldi; - } else if(stat0 & SELDO && CURRENT_SC && (CURRENT_SC->SCp.phase & selecting)) { + } else if (stat0 & SELDO && CURRENT_SC && + (scsi_pointer->phase & selecting)) { STATE=seldo; } else if(stat1 & SELTO) { STATE=selto; @@ -2332,7 +2376,8 @@ static void is_complete(struct Scsi_Host *shpnt) SETPORT(SXFRCTL0, CH1); SETPORT(DMACNTRL0, 0); if(CURRENT_SC) - CURRENT_SC->SCp.phase &= ~spiordy; + aha152x_scsi_pointer(CURRENT_SC)->phase &= + ~spiordy; } /* @@ -2354,7 +2399,8 @@ static void is_complete(struct Scsi_Host *shpnt) SETPORT(DMACNTRL0, 0); SETPORT(SXFRCTL0, CH1|SPIOEN); if(CURRENT_SC) - CURRENT_SC->SCp.phase |= spiordy; + aha152x_scsi_pointer(CURRENT_SC)->phase |= + spiordy; } /* @@ -2444,21 +2490,23 @@ static void disp_enintr(struct Scsi_Host *shpnt) */ static void show_command(struct scsi_cmnd *ptr) { + const int phase = aha152x_scsi_pointer(ptr)->phase; + scsi_print_command(ptr); scmd_printk(KERN_DEBUG, ptr, "request_bufflen=%d; resid=%d; " "phase |%s%s%s%s%s%s%s%s%s; next=0x%p", scsi_bufflen(ptr), scsi_get_resid(ptr), - (ptr->SCp.phase & not_issued) ? "not issued|" : "", - (ptr->SCp.phase & selecting) ? "selecting|" : "", - (ptr->SCp.phase & identified) ? "identified|" : "", - (ptr->SCp.phase & disconnected) ? "disconnected|" : "", - (ptr->SCp.phase & completed) ? "completed|" : "", - (ptr->SCp.phase & spiordy) ? "spiordy|" : "", - (ptr->SCp.phase & syncneg) ? "syncneg|" : "", - (ptr->SCp.phase & aborted) ? "aborted|" : "", - (ptr->SCp.phase & resetted) ? "resetted|" : "", - (SCDATA(ptr)) ? SCNEXT(ptr) : NULL); + phase & not_issued ? "not issued|" : "", + phase & selecting ? "selecting|" : "", + phase & identified ? "identified|" : "", + phase & disconnected ? "disconnected|" : "", + phase & completed ? "completed|" : "", + phase & spiordy ? "spiordy|" : "", + phase & syncneg ? "syncneg|" : "", + phase & aborted ? "aborted|" : "", + phase & resetted ? "resetted|" : "", + SCDATA(ptr) ? SCNEXT(ptr) : NULL); } /* @@ -2490,6 +2538,8 @@ static void show_queues(struct Scsi_Host *shpnt) static void get_command(struct seq_file *m, struct scsi_cmnd * ptr) { + struct scsi_pointer *scsi_pointer = aha152x_scsi_pointer(ptr); + const int phase = scsi_pointer->phase; int i; seq_printf(m, "%p: target=%d; lun=%d; cmnd=( ", @@ -2499,24 +2549,24 @@ static void get_command(struct seq_file *m, struct scsi_cmnd * ptr) seq_printf(m, "0x%02x ", ptr->cmnd[i]); seq_printf(m, "); resid=%d; residual=%d; buffers=%d; phase |", - scsi_get_resid(ptr), ptr->SCp.this_residual, - sg_nents(ptr->SCp.buffer) - 1); + scsi_get_resid(ptr), scsi_pointer->this_residual, + sg_nents(scsi_pointer->buffer) - 1); - if (ptr->SCp.phase & not_issued) + if (phase & not_issued) seq_puts(m, "not issued|"); - if (ptr->SCp.phase & selecting) + if (phase & selecting) seq_puts(m, "selecting|"); - if (ptr->SCp.phase & disconnected) + if (phase & disconnected) seq_puts(m, "disconnected|"); - if (ptr->SCp.phase & aborted) + if (phase & aborted) seq_puts(m, "aborted|"); - if (ptr->SCp.phase & identified) + if (phase & identified) seq_puts(m, "identified|"); - if (ptr->SCp.phase & completed) + if (phase & completed) seq_puts(m, "completed|"); - if (ptr->SCp.phase & spiordy) + if (phase & spiordy) seq_puts(m, "spiordy|"); - if (ptr->SCp.phase & syncneg) + if (phase & syncneg) seq_puts(m, "syncneg|"); seq_printf(m, "; next=0x%p\n", SCNEXT(ptr)); } @@ -2921,6 +2971,7 @@ static struct scsi_host_template aha152x_driver_template = { .sg_tablesize = SG_ALL, .dma_boundary = PAGE_SIZE - 1, .slave_alloc = aha152x_adjust_queue, + .cmd_size = sizeof(struct aha152x_cmd_priv), }; #if !defined(AHA152X_PCMCIA) From patchwork Fri Feb 11 22:32:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542023 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8424DC433FE for ; Fri, 11 Feb 2022 22:33:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354124AbiBKWdq (ORCPT ); Fri, 11 Feb 2022 17:33:46 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34060 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354118AbiBKWdm (ORCPT ); Fri, 11 Feb 2022 17:33:42 -0500 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1189CD54 for ; Fri, 11 Feb 2022 14:33:41 -0800 (PST) Received: by mail-pf1-f172.google.com with SMTP id y5so18660548pfe.4 for ; Fri, 11 Feb 2022 14:33:41 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Tc5twZAeUFlYiGHnzMUwF6Wqn/lA5wVbiTacuuNXQCw=; b=3EMgVQee2KLDB3jeBn90WxyNx/o7HHDfC1n1StdjFRTn2jmqprMh5s6BtJo7a7uGNr xKsgSl/Td2Ca5bTErgAKuKP3fmyfvWK3EkSJUqyPvrc6Im/xbhehWzuCzTOo+/S5kDa7 /XizreXNjLqQBtSqJ7qP4v7TaSuQiPXg4SbijmV+/sU+0QO281mw57bmYh1UP+AyRibh V63taCaV7pLwCh84ZOM8FPoxUx5jaS743StNopljYxcVTNOjT/VEmx4Jq0L12wfi+jRu DN22kulqNqL1LoEDre9foUC6kvCX/VFQh1favi5mh79I3FHxt9HEbpOgVsJkFtnWAfnM DPZA== X-Gm-Message-State: AOAM531oegLnzKWctne+rRvgcxn+lm3OH7wBWomd8j1AOj7lzRnqfVBL 68/8BylYk12QqD6K2rUrww8= X-Google-Smtp-Source: ABdhPJwtQsTX1Xcd6CfUNYog2leBB8RMrmbUrlCR23ApP5+HbKYxxJaFRUMLtBmk73VibmwS+gYThA== X-Received: by 2002:aa7:8701:: with SMTP id b1mr3615818pfo.54.1644618820477; Fri, 11 Feb 2022 14:33:40 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.33.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:33:39 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Himanshu Madhani , Hannes Reinecke , Anil Gurumurthy , Sudarsana Kalluru , "James E.J. Bottomley" Subject: [PATCH v3 17/48] scsi: bfa: Stop using the SCSI pointer Date: Fri, 11 Feb 2022 14:32:16 -0800 Message-Id: <20220211223247.14369-18-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Set .cmd_size in the SCSI host template instead of using the SCSI pointer from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Reviewed-by: Himanshu Madhani Reviewed-by: Hannes Reinecke Signed-off-by: Bart Van Assche --- drivers/scsi/bfa/bfad_im.c | 27 ++++++++++++++------------- drivers/scsi/bfa/bfad_im.h | 16 ++++++++++++++++ 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/drivers/scsi/bfa/bfad_im.c b/drivers/scsi/bfa/bfad_im.c index 759d2bb1ecdd..8419a1a89485 100644 --- a/drivers/scsi/bfa/bfad_im.c +++ b/drivers/scsi/bfa/bfad_im.c @@ -150,10 +150,10 @@ bfa_cb_tskim_done(void *bfad, struct bfad_tskim_s *dtsk, struct scsi_cmnd *cmnd = (struct scsi_cmnd *)dtsk; wait_queue_head_t *wq; - cmnd->SCp.Status |= tsk_status << 1; - set_bit(IO_DONE_BIT, (unsigned long *)&cmnd->SCp.Status); - wq = (wait_queue_head_t *) cmnd->SCp.ptr; - cmnd->SCp.ptr = NULL; + bfad_priv(cmnd)->status |= tsk_status << 1; + set_bit(IO_DONE_BIT, &bfad_priv(cmnd)->status); + wq = bfad_priv(cmnd)->wq; + bfad_priv(cmnd)->wq = NULL; if (wq) wake_up(wq); @@ -259,7 +259,7 @@ bfad_im_target_reset_send(struct bfad_s *bfad, struct scsi_cmnd *cmnd, * happens. */ cmnd->host_scribble = NULL; - cmnd->SCp.Status = 0; + bfad_priv(cmnd)->status = 0; bfa_itnim = bfa_fcs_itnim_get_halitn(&itnim->fcs_itnim); /* * bfa_itnim can be NULL if the port gets disconnected and the bfa @@ -326,8 +326,8 @@ bfad_im_reset_lun_handler(struct scsi_cmnd *cmnd) * if happens. */ cmnd->host_scribble = NULL; - cmnd->SCp.ptr = (char *)&wq; - cmnd->SCp.Status = 0; + bfad_priv(cmnd)->wq = &wq; + bfad_priv(cmnd)->status = 0; bfa_itnim = bfa_fcs_itnim_get_halitn(&itnim->fcs_itnim); /* * bfa_itnim can be NULL if the port gets disconnected and the bfa @@ -347,10 +347,9 @@ bfad_im_reset_lun_handler(struct scsi_cmnd *cmnd) FCP_TM_LUN_RESET, BFAD_LUN_RESET_TMO); spin_unlock_irqrestore(&bfad->bfad_lock, flags); - wait_event(wq, test_bit(IO_DONE_BIT, - (unsigned long *)&cmnd->SCp.Status)); + wait_event(wq, test_bit(IO_DONE_BIT, &bfad_priv(cmnd)->status)); - task_status = cmnd->SCp.Status >> 1; + task_status = bfad_priv(cmnd)->status >> 1; if (task_status != BFI_TSKIM_STS_OK) { BFA_LOG(KERN_ERR, bfad, bfa_log_level, "LUN reset failure, status: %d\n", task_status); @@ -381,16 +380,16 @@ bfad_im_reset_target_handler(struct scsi_cmnd *cmnd) spin_lock_irqsave(&bfad->bfad_lock, flags); itnim = bfad_get_itnim(im_port, starget->id); if (itnim) { - cmnd->SCp.ptr = (char *)&wq; + bfad_priv(cmnd)->wq = &wq; rc = bfad_im_target_reset_send(bfad, cmnd, itnim); if (rc == BFA_STATUS_OK) { /* wait target reset to complete */ spin_unlock_irqrestore(&bfad->bfad_lock, flags); wait_event(wq, test_bit(IO_DONE_BIT, - (unsigned long *)&cmnd->SCp.Status)); + &bfad_priv(cmnd)->status)); spin_lock_irqsave(&bfad->bfad_lock, flags); - task_status = cmnd->SCp.Status >> 1; + task_status = bfad_priv(cmnd)->status >> 1; if (task_status != BFI_TSKIM_STS_OK) BFA_LOG(KERN_ERR, bfad, bfa_log_level, "target reset failure," @@ -797,6 +796,7 @@ struct scsi_host_template bfad_im_scsi_host_template = { .name = BFAD_DRIVER_NAME, .info = bfad_im_info, .queuecommand = bfad_im_queuecommand, + .cmd_size = sizeof(struct bfad_cmd_priv), .eh_timed_out = fc_eh_timed_out, .eh_abort_handler = bfad_im_abort_handler, .eh_device_reset_handler = bfad_im_reset_lun_handler, @@ -819,6 +819,7 @@ struct scsi_host_template bfad_im_vport_template = { .name = BFAD_DRIVER_NAME, .info = bfad_im_info, .queuecommand = bfad_im_queuecommand, + .cmd_size = sizeof(struct bfad_cmd_priv), .eh_timed_out = fc_eh_timed_out, .eh_abort_handler = bfad_im_abort_handler, .eh_device_reset_handler = bfad_im_reset_lun_handler, diff --git a/drivers/scsi/bfa/bfad_im.h b/drivers/scsi/bfa/bfad_im.h index 829345b514d1..c03b225ea1ba 100644 --- a/drivers/scsi/bfa/bfad_im.h +++ b/drivers/scsi/bfa/bfad_im.h @@ -43,6 +43,22 @@ u32 bfad_im_supported_speeds(struct bfa_s *bfa); */ #define IO_DONE_BIT 0 +/** + * struct bfad_cmd_priv - private data per SCSI command. + * @status: Lowest bit represents IO_DONE. The next seven bits hold a value of + * type enum bfi_tskim_status. + * @wq: Wait queue used to wait for completion of an operation. + */ +struct bfad_cmd_priv { + unsigned long status; + wait_queue_head_t *wq; +}; + +static inline struct bfad_cmd_priv *bfad_priv(struct scsi_cmnd *cmd) +{ + return scsi_cmd_priv(cmd); +} + struct bfad_itnim_data_s { struct bfad_itnim_s *itnim; }; From patchwork Fri Feb 11 22:32:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542297 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 89CDFC433EF for ; Fri, 11 Feb 2022 22:33:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354127AbiBKWdu (ORCPT ); Fri, 11 Feb 2022 17:33:50 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34086 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354118AbiBKWds (ORCPT ); Fri, 11 Feb 2022 17:33:48 -0500 Received: from mail-pf1-f178.google.com (mail-pf1-f178.google.com [209.85.210.178]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4D05DD4E for ; Fri, 11 Feb 2022 14:33:46 -0800 (PST) Received: by mail-pf1-f178.google.com with SMTP id n23so18715631pfo.1 for ; Fri, 11 Feb 2022 14:33:46 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/EJX+/vkV4EsrKmfGAOP1zH1m5L+rWp/rxO1zE55iJM=; b=dFHJdVMTZ8uf8dx8Isc9KsK2iPPdUJ13GMTt8nbCrLBbvikGN8716d0E6vOeSRlpPo 3qRZCC9B30qZUvX84dqOuS/TZRUgRLPEw2JWJyWrtzwzuvaRAe5tnoW78MRk/oPeBgQ+ 7mb5AKgOQ5I0ynqWmmMkWsacahdu4P5FK5xViJ5OeHnDt6NFlT8d44NmbOTTbWO6qL1G dzGHEAzWSmxKHM8LwKSl9kOMsNeFVDRiK9KIuFnBnbjLd2xny0qwZn4NVz2W98qhSX9L d57NGMhXiCnWeYghlcSEi5v2ZJhRzlG5cfkgpl1dwdDOXa0NjTrPqNT3nCt/AKenOHR5 mjwg== X-Gm-Message-State: AOAM530vB5iw5zZ32Xy/MvWy96aY6X6jyiuFtWBNm4U7VHuqMpXtK+IA KyUXS6wBxFY8Rq3a2+5JiaY= X-Google-Smtp-Source: ABdhPJwy0Ed4j8q+K9cp6TV5NYGBgWJVsDZ04+RmqosqZ5oRQcosUS7ectbJz90VJlextUuPhFBFVA== X-Received: by 2002:a63:600c:: with SMTP id u12mr3102995pgb.34.1644618825727; Fri, 11 Feb 2022 14:33:45 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.33.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:33:45 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Johannes Thumshirn , Himanshu Madhani , "James E.J. Bottomley" , Jiapeng Chong Subject: [PATCH v3 18/48] scsi: csio: Stop using the SCSI pointer Date: Fri, 11 Feb 2022 14:32:17 -0800 Message-Id: <20220211223247.14369-19-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Set .cmd_size in the SCSI host template instead of using the SCSI pointer from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Reviewed-by: Johannes Thumshirn Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/scsi/csiostor/csio_scsi.c | 20 +++++++++++--------- drivers/scsi/csiostor/csio_scsi.h | 10 ++++++++++ 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/drivers/scsi/csiostor/csio_scsi.c b/drivers/scsi/csiostor/csio_scsi.c index 55db02521221..9aafe0002ab1 100644 --- a/drivers/scsi/csiostor/csio_scsi.c +++ b/drivers/scsi/csiostor/csio_scsi.c @@ -166,7 +166,7 @@ csio_scsi_fcp_cmnd(struct csio_ioreq *req, void *addr) struct scsi_cmnd *scmnd = csio_scsi_cmnd(req); /* Check for Task Management */ - if (likely(scmnd->SCp.Message == 0)) { + if (likely(csio_priv(scmnd)->fc_tm_flags == 0)) { int_to_scsilun(scmnd->device->lun, &fcp_cmnd->fc_lun); fcp_cmnd->fc_tm_flags = 0; fcp_cmnd->fc_cmdref = 0; @@ -185,7 +185,7 @@ csio_scsi_fcp_cmnd(struct csio_ioreq *req, void *addr) } else { memset(fcp_cmnd, 0, sizeof(*fcp_cmnd)); int_to_scsilun(scmnd->device->lun, &fcp_cmnd->fc_lun); - fcp_cmnd->fc_tm_flags = (uint8_t)scmnd->SCp.Message; + fcp_cmnd->fc_tm_flags = csio_priv(scmnd)->fc_tm_flags; } } @@ -1855,7 +1855,7 @@ csio_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmnd) /* Needed during abort */ cmnd->host_scribble = (unsigned char *)ioreq; - cmnd->SCp.Message = 0; + csio_priv(cmnd)->fc_tm_flags = 0; /* Kick off SCSI IO SM on the ioreq */ spin_lock_irqsave(&hw->lock, flags); @@ -2026,7 +2026,7 @@ csio_tm_cbfn(struct csio_hw *hw, struct csio_ioreq *req) req, req->wr_status); /* Cache FW return status */ - cmnd->SCp.Status = req->wr_status; + csio_priv(cmnd)->wr_status = req->wr_status; /* Special handling based on FCP response */ @@ -2049,7 +2049,7 @@ csio_tm_cbfn(struct csio_hw *hw, struct csio_ioreq *req) /* Modify return status if flags indicate success */ if (flags & FCP_RSP_LEN_VAL) if (rsp_info->rsp_code == FCP_TMF_CMPL) - cmnd->SCp.Status = FW_SUCCESS; + csio_priv(cmnd)->wr_status = FW_SUCCESS; csio_dbg(hw, "TM FCP rsp code: %d\n", rsp_info->rsp_code); } @@ -2125,9 +2125,9 @@ csio_eh_lun_reset_handler(struct scsi_cmnd *cmnd) csio_scsi_cmnd(ioreq) = cmnd; cmnd->host_scribble = (unsigned char *)ioreq; - cmnd->SCp.Status = 0; + csio_priv(cmnd)->wr_status = 0; - cmnd->SCp.Message = FCP_TMF_LUN_RESET; + csio_priv(cmnd)->fc_tm_flags = FCP_TMF_LUN_RESET; ioreq->tmo = CSIO_SCSI_LUNRST_TMO_MS / 1000; /* @@ -2178,9 +2178,10 @@ csio_eh_lun_reset_handler(struct scsi_cmnd *cmnd) } /* LUN reset returned, check cached status */ - if (cmnd->SCp.Status != FW_SUCCESS) { + if (csio_priv(cmnd)->wr_status != FW_SUCCESS) { csio_err(hw, "LUN reset failed (%d:%llu), status: %d\n", - cmnd->device->id, cmnd->device->lun, cmnd->SCp.Status); + cmnd->device->id, cmnd->device->lun, + csio_priv(cmnd)->wr_status); goto fail; } @@ -2271,6 +2272,7 @@ struct scsi_host_template csio_fcoe_shost_template = { .name = CSIO_DRV_DESC, .proc_name = KBUILD_MODNAME, .queuecommand = csio_queuecommand, + .cmd_size = sizeof(struct csio_cmd_priv), .eh_timed_out = fc_eh_timed_out, .eh_abort_handler = csio_eh_abort_handler, .eh_device_reset_handler = csio_eh_lun_reset_handler, diff --git a/drivers/scsi/csiostor/csio_scsi.h b/drivers/scsi/csiostor/csio_scsi.h index 2257c3dcf724..39dda3c88f0d 100644 --- a/drivers/scsi/csiostor/csio_scsi.h +++ b/drivers/scsi/csiostor/csio_scsi.h @@ -188,6 +188,16 @@ struct csio_scsi_level_data { uint64_t oslun; }; +struct csio_cmd_priv { + uint8_t fc_tm_flags; /* task management flags */ + uint16_t wr_status; +}; + +static inline struct csio_cmd_priv *csio_priv(struct scsi_cmnd *cmd) +{ + return scsi_cmd_priv(cmd); +} + static inline struct csio_ioreq * csio_get_scsi_ioreq(struct csio_scsim *scm) { From patchwork Fri Feb 11 22:32:18 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542022 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9CB26C433F5 for ; Fri, 11 Feb 2022 22:33:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354131AbiBKWd4 (ORCPT ); Fri, 11 Feb 2022 17:33:56 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34098 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354126AbiBKWdu (ORCPT ); Fri, 11 Feb 2022 17:33:50 -0500 Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2FDDAD4E for ; Fri, 11 Feb 2022 14:33:48 -0800 (PST) Received: by mail-pl1-f173.google.com with SMTP id z17so5764896plb.9 for ; Fri, 11 Feb 2022 14:33:48 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=uD1tH8wDMn3Wm4Fc6dGeyWCxFL02tMZz49ogOKnrwOU=; b=SITVHmYrXYoPrYzAgpjweXzV0gYim+3bcU1mrvU8b4ekc/ef4UpAPMMu13PePpKnXF B3aAImepRq6g5t5bwwaVTE1sIIj0lascCMdRzMcUeVISTJ0Yl9H4OKiLAyQ9CRHm1eCQ zLzIDoMyrr12xkEY8Uwj0wYK5BXDpk3wfcJLXyQHgAAVZJu6gRkgtG8zJv5i8+6zIlm5 ZcVcHUxd61/uoKX25Tw1ik2ZOmAhCnj7uV4JB4kL7J9Vov659wPaj6L6cKZKL97ln6cA y/jGhzXoUhAn3nIep4LZTfUVqfWzVNl1mV5GbML6z8Zcg2YmSPqIDAQX02159BsjhCv5 5BZw== X-Gm-Message-State: AOAM530s8FDUpSq9mjDq7G3mcMP6I5vvtpUfkU3RxRQ6w1CGWakmCDmM UmEhneem+qJiPbl/8tPmPOA= X-Google-Smtp-Source: ABdhPJwXg/Rd80FzQ2xsVjRAs2R2MKyYtSyKq+n/0pi1PcYNUG5df6kL64JSB03lc9UptrGnz4nXvQ== X-Received: by 2002:a17:902:d482:: with SMTP id c2mr3551208plg.148.1644618827598; Fri, 11 Feb 2022 14:33:47 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.33.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:33:46 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Oliver Neukum , Johannes Thumshirn , Hannes Reinecke , Himanshu Madhani , Oliver Neukum , Ali Akcaagac , Jamie Lenehan , "James E.J. Bottomley" Subject: [PATCH v3 19/48] scsi: dc395x: Stop using the SCSI pointer Date: Fri, 11 Feb 2022 14:32:18 -0800 Message-Id: <20220211223247.14369-20-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Remove the code that sets SCSI pointer members since there is no code in this driver that reads these members. Cc: Oliver Neukum Reviewed-by: Johannes Thumshirn Reviewed-by: Hannes Reinecke Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/scsi/dc395x.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/scsi/dc395x.c b/drivers/scsi/dc395x.c index c11916b8ae00..67a89715c863 100644 --- a/drivers/scsi/dc395x.c +++ b/drivers/scsi/dc395x.c @@ -3314,9 +3314,6 @@ static void srb_done(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb, /* Here is the info for Doug Gilbert's sg3 ... */ scsi_set_resid(cmd, srb->total_xfer_length); - /* This may be interpreted by sb. or not ... */ - cmd->SCp.this_residual = srb->total_xfer_length; - cmd->SCp.buffers_residual = 0; if (debug_enabled(DBG_KG)) { if (srb->total_xfer_length) dprintkdbg(DBG_KG, "srb_done: (0x%p) <%02i-%i> " From patchwork Fri Feb 11 22:32:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542296 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2356AC433FE for ; Fri, 11 Feb 2022 22:33:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354132AbiBKWd4 (ORCPT ); Fri, 11 Feb 2022 17:33:56 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34112 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354118AbiBKWdw (ORCPT ); Fri, 11 Feb 2022 17:33:52 -0500 Received: from mail-pj1-f48.google.com (mail-pj1-f48.google.com [209.85.216.48]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 62B96D52 for ; Fri, 11 Feb 2022 14:33:50 -0800 (PST) Received: by mail-pj1-f48.google.com with SMTP id qe15so9288450pjb.3 for ; Fri, 11 Feb 2022 14:33:50 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=o/DjmKMEQ/TICGYiG1zbJphAMWsxSd5D/VpqW7WFmMA=; b=IdX7/TmK1HYnmE0peXt1u6EwyDZ1FLAigk2gK2ZDIkbp44YlOnVQbokPw41Tv4XbHm 3kAoAhheSeP53STw25Gi6BFqEGOdLnRGoIaWYMjQVkorUvdxuBNdQHosjiwvmzd6ZwAt jEMvmbqfRuNt0mc0r62tiil0Q29N5EqIr5gfkXnqnBadAhn0+xehFxq7WucK55918d9/ hdHn3t9RFAeCcNsLmVIyxW55vROnfu+bvcSvvkur7r7JhyWdc5QsRJwZB2T57+cxM1+t bKb7efJfct5dVzELWb1/D7HAH2JzjZFgRXKjNQL/exaAya3eilMjNqHzs3m9sroHl0a0 oFEA== X-Gm-Message-State: AOAM533NWqvl9IXirpYIsZwA7ts4cwAKAZb6CkKhShQ0lySxWnpZrvSu lerbugmbMIIVJzKEAmq8ito= X-Google-Smtp-Source: ABdhPJxW1GcFWSo0gmMCi1X4D4ogrT/c/Yb51BRakoa/i+ZrJLNGyoJqB0UF9cq1ZkTL6WBR3EKvuw== X-Received: by 2002:a17:903:1212:: with SMTP id l18mr3588662plh.77.1644618829709; Fri, 11 Feb 2022 14:33:49 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.33.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:33:49 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Johannes Thumshirn , Hannes Reinecke , Himanshu Madhani , "James E.J. Bottomley" Subject: [PATCH v3 20/48] scsi: esp_scsi: Stop using the SCSI pointer Date: Fri, 11 Feb 2022 14:32:19 -0800 Message-Id: <20220211223247.14369-21-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Set .cmd_size in the SCSI host template instead of using the SCSI pointer from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Reviewed-by: Johannes Thumshirn Reviewed-by: Hannes Reinecke Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/scsi/esp_scsi.c | 4 +--- drivers/scsi/esp_scsi.h | 3 ++- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/scsi/esp_scsi.c b/drivers/scsi/esp_scsi.c index 57787537285a..64ec6bb84550 100644 --- a/drivers/scsi/esp_scsi.c +++ b/drivers/scsi/esp_scsi.c @@ -2678,6 +2678,7 @@ struct scsi_host_template scsi_esp_template = { .sg_tablesize = SG_ALL, .max_sectors = 0xffff, .skip_settle_delay = 1, + .cmd_size = sizeof(struct esp_cmd_priv), }; EXPORT_SYMBOL(scsi_esp_template); @@ -2739,9 +2740,6 @@ static struct spi_function_template esp_transport_ops = { static int __init esp_init(void) { - BUILD_BUG_ON(sizeof(struct scsi_pointer) < - sizeof(struct esp_cmd_priv)); - esp_transport_template = spi_attach_transport(&esp_transport_ops); if (!esp_transport_template) return -ENODEV; diff --git a/drivers/scsi/esp_scsi.h b/drivers/scsi/esp_scsi.h index 446a3d18c022..c73760d3cf83 100644 --- a/drivers/scsi/esp_scsi.h +++ b/drivers/scsi/esp_scsi.h @@ -262,7 +262,8 @@ struct esp_cmd_priv { struct scatterlist *cur_sg; int tot_residue; }; -#define ESP_CMD_PRIV(CMD) ((struct esp_cmd_priv *)(&(CMD)->SCp)) + +#define ESP_CMD_PRIV(cmd) ((struct esp_cmd_priv *)scsi_cmd_priv(cmd)) /* NOTE: this enum is ordered based on chip features! */ enum esp_rev { From patchwork Fri Feb 11 22:32:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542295 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6DDD7C433EF for ; Fri, 11 Feb 2022 22:33:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354138AbiBKWd7 (ORCPT ); Fri, 11 Feb 2022 17:33:59 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34124 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354128AbiBKWdy (ORCPT ); Fri, 11 Feb 2022 17:33:54 -0500 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 32D43D53 for ; Fri, 11 Feb 2022 14:33:52 -0800 (PST) Received: by mail-pl1-f172.google.com with SMTP id y17so5765329plg.7 for ; Fri, 11 Feb 2022 14:33:52 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=cpcKWeF4eOeGIU7dsXHWDuSosdfxHXKOqrJDc3sWxnM=; b=aoGGsAIYXiJP+s6o6i3VMv814AgjmS58wL+gAy/r3eIZd0qR21dV1hNPscNGrX3n9i VgXBwyqpB/gFFKpAZHqh6ph1ZRXA+9qoO+GNMxnr4TF89XY9/0lngjg4+PBSjpBF46Es 9gMp1x1ilIsYhL/gZStj+LmV9QjePw1KjeNY72fa5V8yNSBjieJvjJehuU00O0UG8nuc gP7+WZuL7wZgiCuOlPKq/YE06yVkTUCvkN7/2jC8zlGdyywHdM3eMDLnahdwi5mlYY7T vNPH9KynW2z5MWiqXiubcpNrEBA5Hns+kNUWxaDPUvf61fexxLjQOFVsp91ZN3CgZpqF yorQ== X-Gm-Message-State: AOAM533yrbj3BfR2kcH6URjMCSeI/V+oolqWr30yWZ4G77nbPVeonTgy l6B4S8BlQVM5WMd6efYsxDk= X-Google-Smtp-Source: ABdhPJxstaziJEZIBREasfyl3AB5Ed04IbzYNJXoC9bsGpmpOOvRbi1mn1fgVkq5/saPSSQT96VGjg== X-Received: by 2002:a17:90a:688e:: with SMTP id a14mr2577204pjd.63.1644618831480; Fri, 11 Feb 2022 14:33:51 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.33.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:33:50 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Johannes Thumshirn , Himanshu Madhani , Hannes Reinecke , "James E.J. Bottomley" Subject: [PATCH v3 21/48] scsi: fdomain: Move the SCSI pointer to private command data Date: Fri, 11 Feb 2022 14:32:20 -0800 Message-Id: <20220211223247.14369-22-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Set .cmd_size in the SCSI host template instead of using the SCSI pointer from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Reviewed-by: Johannes Thumshirn Reviewed-by: Himanshu Madhani Reviewed-by: Hannes Reinecke Signed-off-by: Bart Van Assche --- drivers/scsi/fdomain.c | 64 ++++++++++++++++++++++++------------------ 1 file changed, 36 insertions(+), 28 deletions(-) diff --git a/drivers/scsi/fdomain.c b/drivers/scsi/fdomain.c index 9159b4057c5d..444eac9b2466 100644 --- a/drivers/scsi/fdomain.c +++ b/drivers/scsi/fdomain.c @@ -115,6 +115,11 @@ struct fdomain { struct work_struct work; }; +static struct scsi_pointer *fdomain_scsi_pointer(struct scsi_cmnd *cmd) +{ + return scsi_cmd_priv(cmd); +} + static inline void fdomain_make_bus_idle(struct fdomain *fd) { outb(0, fd->base + REG_BCTL); @@ -263,20 +268,21 @@ static void fdomain_work(struct work_struct *work) struct Scsi_Host *sh = container_of((void *)fd, struct Scsi_Host, hostdata); struct scsi_cmnd *cmd = fd->cur_cmd; + struct scsi_pointer *scsi_pointer = fdomain_scsi_pointer(cmd); unsigned long flags; int status; int done = 0; spin_lock_irqsave(sh->host_lock, flags); - if (cmd->SCp.phase & in_arbitration) { + if (scsi_pointer->phase & in_arbitration) { status = inb(fd->base + REG_ASTAT); if (!(status & ASTAT_ARB)) { set_host_byte(cmd, DID_BUS_BUSY); fdomain_finish_cmd(fd); goto out; } - cmd->SCp.phase = in_selection; + scsi_pointer->phase = in_selection; outb(ICTL_SEL | FIFO_COUNT, fd->base + REG_ICTL); outb(BCTL_BUSEN | BCTL_SEL, fd->base + REG_BCTL); @@ -285,7 +291,7 @@ static void fdomain_work(struct work_struct *work) /* Stop arbitration and enable parity */ outb(ACTL_IRQEN | PARITY_MASK, fd->base + REG_ACTL); goto out; - } else if (cmd->SCp.phase & in_selection) { + } else if (scsi_pointer->phase & in_selection) { status = inb(fd->base + REG_BSTAT); if (!(status & BSTAT_BSY)) { /* Try again, for slow devices */ @@ -297,75 +303,75 @@ static void fdomain_work(struct work_struct *work) /* Stop arbitration and enable parity */ outb(ACTL_IRQEN | PARITY_MASK, fd->base + REG_ACTL); } - cmd->SCp.phase = in_other; + scsi_pointer->phase = in_other; outb(ICTL_FIFO | ICTL_REQ | FIFO_COUNT, fd->base + REG_ICTL); outb(BCTL_BUSEN, fd->base + REG_BCTL); goto out; } - /* cur_cmd->SCp.phase == in_other: this is the body of the routine */ + /* fdomain_scsi_pointer(cur_cmd)->phase == in_other: this is the body of the routine */ status = inb(fd->base + REG_BSTAT); if (status & BSTAT_REQ) { switch (status & (BSTAT_MSG | BSTAT_CMD | BSTAT_IO)) { case BSTAT_CMD: /* COMMAND OUT */ - outb(cmd->cmnd[cmd->SCp.sent_command++], + outb(cmd->cmnd[scsi_pointer->sent_command++], fd->base + REG_SCSI_DATA); break; case 0: /* DATA OUT -- tmc18c50/tmc18c30 only */ - if (fd->chip != tmc1800 && !cmd->SCp.have_data_in) { - cmd->SCp.have_data_in = -1; + if (fd->chip != tmc1800 && !scsi_pointer->have_data_in) { + scsi_pointer->have_data_in = -1; outb(ACTL_IRQEN | ACTL_FIFOWR | ACTL_FIFOEN | PARITY_MASK, fd->base + REG_ACTL); } break; case BSTAT_IO: /* DATA IN -- tmc18c50/tmc18c30 only */ - if (fd->chip != tmc1800 && !cmd->SCp.have_data_in) { - cmd->SCp.have_data_in = 1; + if (fd->chip != tmc1800 && !scsi_pointer->have_data_in) { + scsi_pointer->have_data_in = 1; outb(ACTL_IRQEN | ACTL_FIFOEN | PARITY_MASK, fd->base + REG_ACTL); } break; case BSTAT_CMD | BSTAT_IO: /* STATUS IN */ - cmd->SCp.Status = inb(fd->base + REG_SCSI_DATA); + scsi_pointer->Status = inb(fd->base + REG_SCSI_DATA); break; case BSTAT_MSG | BSTAT_CMD: /* MESSAGE OUT */ outb(MESSAGE_REJECT, fd->base + REG_SCSI_DATA); break; case BSTAT_MSG | BSTAT_CMD | BSTAT_IO: /* MESSAGE IN */ - cmd->SCp.Message = inb(fd->base + REG_SCSI_DATA); - if (cmd->SCp.Message == COMMAND_COMPLETE) + scsi_pointer->Message = inb(fd->base + REG_SCSI_DATA); + if (scsi_pointer->Message == COMMAND_COMPLETE) ++done; break; } } - if (fd->chip == tmc1800 && !cmd->SCp.have_data_in && - cmd->SCp.sent_command >= cmd->cmd_len) { + if (fd->chip == tmc1800 && !scsi_pointer->have_data_in && + scsi_pointer->sent_command >= cmd->cmd_len) { if (cmd->sc_data_direction == DMA_TO_DEVICE) { - cmd->SCp.have_data_in = -1; + scsi_pointer->have_data_in = -1; outb(ACTL_IRQEN | ACTL_FIFOWR | ACTL_FIFOEN | PARITY_MASK, fd->base + REG_ACTL); } else { - cmd->SCp.have_data_in = 1; + scsi_pointer->have_data_in = 1; outb(ACTL_IRQEN | ACTL_FIFOEN | PARITY_MASK, fd->base + REG_ACTL); } } - if (cmd->SCp.have_data_in == -1) /* DATA OUT */ + if (scsi_pointer->have_data_in == -1) /* DATA OUT */ fdomain_write_data(cmd); - if (cmd->SCp.have_data_in == 1) /* DATA IN */ + if (scsi_pointer->have_data_in == 1) /* DATA IN */ fdomain_read_data(cmd); if (done) { - set_status_byte(cmd, cmd->SCp.Status); + set_status_byte(cmd, scsi_pointer->Status); set_host_byte(cmd, DID_OK); - scsi_msg_to_host_byte(cmd, cmd->SCp.Message); + scsi_msg_to_host_byte(cmd, scsi_pointer->Message); fdomain_finish_cmd(fd); } else { - if (cmd->SCp.phase & disconnect) { + if (scsi_pointer->phase & disconnect) { outb(ICTL_FIFO | ICTL_SEL | ICTL_REQ | FIFO_COUNT, fd->base + REG_ICTL); outb(0, fd->base + REG_BCTL); @@ -398,14 +404,15 @@ static irqreturn_t fdomain_irq(int irq, void *dev_id) static int fdomain_queue(struct Scsi_Host *sh, struct scsi_cmnd *cmd) { + struct scsi_pointer *scsi_pointer = fdomain_scsi_pointer(cmd); struct fdomain *fd = shost_priv(cmd->device->host); unsigned long flags; - cmd->SCp.Status = 0; - cmd->SCp.Message = 0; - cmd->SCp.have_data_in = 0; - cmd->SCp.sent_command = 0; - cmd->SCp.phase = in_arbitration; + scsi_pointer->Status = 0; + scsi_pointer->Message = 0; + scsi_pointer->have_data_in = 0; + scsi_pointer->sent_command = 0; + scsi_pointer->phase = in_arbitration; scsi_set_resid(cmd, scsi_bufflen(cmd)); spin_lock_irqsave(sh->host_lock, flags); @@ -440,7 +447,7 @@ static int fdomain_abort(struct scsi_cmnd *cmd) spin_lock_irqsave(sh->host_lock, flags); fdomain_make_bus_idle(fd); - fd->cur_cmd->SCp.phase |= aborted; + fdomain_scsi_pointer(fd->cur_cmd)->phase |= aborted; /* Aborts are not done well. . . */ set_host_byte(fd->cur_cmd, DID_ABORT); @@ -501,6 +508,7 @@ static struct scsi_host_template fdomain_template = { .this_id = 7, .sg_tablesize = 64, .dma_boundary = PAGE_SIZE - 1, + .cmd_size = sizeof(struct scsi_pointer), }; struct Scsi_Host *fdomain_create(int base, int irq, int this_id, From patchwork Fri Feb 11 22:32:21 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542021 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id F209FC433F5 for ; Fri, 11 Feb 2022 22:33:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354136AbiBKWd6 (ORCPT ); Fri, 11 Feb 2022 17:33:58 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34136 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354129AbiBKWdz (ORCPT ); Fri, 11 Feb 2022 17:33:55 -0500 Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DEBD2D54 for ; Fri, 11 Feb 2022 14:33:53 -0800 (PST) Received: by mail-pf1-f171.google.com with SMTP id 9so15762184pfx.12 for ; Fri, 11 Feb 2022 14:33:53 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=mPpFGanc5O2VtDF8xLPur0DYQVt1vugjv+KVWyukjrk=; b=RzqZ2QHm5gO/sqQ1wf3X3KXPurk1tP7LvG6Vyj83DNKod5bAdQOZi2LdIC5OhzjEoz W4a5PJz9OBgamU58+TSGQWPxUp3Ztd3JWxp3+tosVGeKUcbdkW9BnmwIFVXaV8cCYwmF O0Dv6eO5y3uIPFUhWyBS5x2mcqYgewKb++6hyjYpKVr7uPF3ooYzwhWtcKOEEfKYzSNk 8oVNeHZkNPU0e4awLnTyuMTk40Y78Z0QDITwJM8BLvqZCeqJPlCRZhzwQ1AdartBMm22 9rSvWsj5nOMCPu0VCBzoHfFJLTpCoP4G5ZRLGFsaG9eJjeXQKuGqqde91gPK5Vplpj1G 0lrw== X-Gm-Message-State: AOAM530p2cuFAZkRyod4pKRr7uRvRxwdPCa6weeod+n759DOnK0sTvs8 dngOJFCtxxGkkzmmRMdrtMg= X-Google-Smtp-Source: ABdhPJxcUYTY9pz0WH0NQ9fnO2vLiZQ6oaalCZ3O1734dXOy21eSoTMe486dTpFfpkcjUOdUAT3r9Q== X-Received: by 2002:a63:4c41:: with SMTP id m1mr3061935pgl.52.1644618833298; Fri, 11 Feb 2022 14:33:53 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.33.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:33:52 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Hiral Patel , Hannes Reinecke , Himanshu Madhani , Satish Kharat , Sesidhar Baddela , Karan Tilak Kumar , "James E.J. Bottomley" , James Bottomley Subject: [PATCH v3 22/48] scsi: fnic: Fix a tracing statement Date: Fri, 11 Feb 2022 14:32:21 -0800 Message-Id: <20220211223247.14369-23-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Report both the command flags and command state instead of only the command state. Cc: Hiral Patel Fixes: 4d7007b49d52 ("[SCSI] fnic: Fnic Trace Utility") Reviewed-by: Hannes Reinecke Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/scsi/fnic/fnic_scsi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/scsi/fnic/fnic_scsi.c b/drivers/scsi/fnic/fnic_scsi.c index 88c549f257db..549754245f7a 100644 --- a/drivers/scsi/fnic/fnic_scsi.c +++ b/drivers/scsi/fnic/fnic_scsi.c @@ -604,7 +604,7 @@ static int fnic_queuecommand_lck(struct scsi_cmnd *sc) FNIC_TRACE(fnic_queuecommand, sc->device->host->host_no, tag, sc, io_req, sg_count, cmd_trace, - (((u64)CMD_FLAGS(sc) >> 32) | CMD_STATE(sc))); + (((u64)CMD_FLAGS(sc) << 32) | CMD_STATE(sc))); /* if only we issued IO, will we have the io lock */ if (io_lock_acquired) From patchwork Fri Feb 11 22:32:22 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542019 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 756EDC433EF for ; Fri, 11 Feb 2022 22:34:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354135AbiBKWeH (ORCPT ); Fri, 11 Feb 2022 17:34:07 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34180 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354139AbiBKWeA (ORCPT ); Fri, 11 Feb 2022 17:34:00 -0500 Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 14897D53 for ; Fri, 11 Feb 2022 14:33:56 -0800 (PST) Received: by mail-pj1-f46.google.com with SMTP id d9-20020a17090a498900b001b8bb1d00e7so10110640pjh.3 for ; Fri, 11 Feb 2022 14:33:56 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/NeNAG1Ei27GsQ9hxdSmu4jwEVUfh7t45yBwVciL8Ws=; b=vWnmF8lHUS6DXWDV8oYynyyVhKfbZtiZ2BCpiKo4PMrptH3lmxV04WGVUPjur//qqr DlQiwLDP+oNVinP8UbCVj3v0eXK9Sh5G02KSypgbMiYECDOSxYL2fjCo03wyw7iI/l+k eQbhGvvnZVMedZTIQg8GF8Qop6mvNDydOmZtKZoM49uyISpoVLeVIWzW/zWMyzwIwMzX sYs+onWRMznJZ+VxnTEgfCrtgjjOVuNK1DZOZ+NZrh63Ao+BBz4/8loXIL6cMABkU0Gp /hWy6OVKpIHvzh0t7C91UpoTZyE2kSaIBb2iAPaePoqJd/37iiZMNzYfUEmR3kdoa+Gu eT/A== X-Gm-Message-State: AOAM5328hQVkYt/yrS1WHfzhU6/EcaHW2midsSMjGtdi8wE4InGR97Di BM40iF9q0VcNcU7PADKIJ2s= X-Google-Smtp-Source: ABdhPJyDcpBXKQWk4cR2TkhPf74e6QjSIq9YOoUobfJnTn3vaffhpBB6M8TU0jFAdyYdWx2JVzc9Ew== X-Received: by 2002:a17:903:22c5:: with SMTP id y5mr3611746plg.99.1644618835969; Fri, 11 Feb 2022 14:33:55 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.33.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:33:54 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Johannes Thumshirn , Himanshu Madhani , Hannes Reinecke , Satish Kharat , Sesidhar Baddela , Karan Tilak Kumar , "James E.J. Bottomley" Subject: [PATCH v3 23/48] scsi: fnic: Stop using the SCSI pointer Date: Fri, 11 Feb 2022 14:32:22 -0800 Message-Id: <20220211223247.14369-24-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Set .cmd_size in the SCSI host template instead of using the SCSI pointer from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Reviewed-by: Johannes Thumshirn Reviewed-by: Himanshu Madhani Reviewed-by: Hannes Reinecke Signed-off-by: Bart Van Assche --- drivers/scsi/fnic/fnic.h | 27 +++- drivers/scsi/fnic/fnic_main.c | 1 + drivers/scsi/fnic/fnic_scsi.c | 289 +++++++++++++++++----------------- 3 files changed, 163 insertions(+), 154 deletions(-) diff --git a/drivers/scsi/fnic/fnic.h b/drivers/scsi/fnic/fnic.h index b95d0063dedb..aa07189fb5fb 100644 --- a/drivers/scsi/fnic/fnic.h +++ b/drivers/scsi/fnic/fnic.h @@ -89,15 +89,28 @@ #define FNIC_DEV_RST_ABTS_PENDING BIT(21) /* - * Usage of the scsi_cmnd scratchpad. + * fnic private data per SCSI command. * These fields are locked by the hashed io_req_lock. */ -#define CMD_SP(Cmnd) ((Cmnd)->SCp.ptr) -#define CMD_STATE(Cmnd) ((Cmnd)->SCp.phase) -#define CMD_ABTS_STATUS(Cmnd) ((Cmnd)->SCp.Message) -#define CMD_LR_STATUS(Cmnd) ((Cmnd)->SCp.have_data_in) -#define CMD_TAG(Cmnd) ((Cmnd)->SCp.sent_command) -#define CMD_FLAGS(Cmnd) ((Cmnd)->SCp.Status) +struct fnic_cmd_priv { + struct fnic_io_req *io_req; + enum fnic_ioreq_state state; + u32 flags; + u16 abts_status; + u16 lr_status; +}; + +static inline struct fnic_cmd_priv *fnic_priv(struct scsi_cmnd *cmd) +{ + return scsi_cmd_priv(cmd); +} + +static inline u64 fnic_flags_and_state(struct scsi_cmnd *cmd) +{ + struct fnic_cmd_priv *fcmd = fnic_priv(cmd); + + return ((u64)fcmd->flags << 32) | fcmd->state; +} #define FCPIO_INVALID_CODE 0x100 /* hdr_status value unused by firmware */ diff --git a/drivers/scsi/fnic/fnic_main.c b/drivers/scsi/fnic/fnic_main.c index 44dbaa662d94..9161bd2fd421 100644 --- a/drivers/scsi/fnic/fnic_main.c +++ b/drivers/scsi/fnic/fnic_main.c @@ -124,6 +124,7 @@ static struct scsi_host_template fnic_host_template = { .max_sectors = 0xffff, .shost_groups = fnic_host_groups, .track_queue_depth = 1, + .cmd_size = sizeof(struct fnic_cmd_priv), }; static void diff --git a/drivers/scsi/fnic/fnic_scsi.c b/drivers/scsi/fnic/fnic_scsi.c index 549754245f7a..3c00e5b88350 100644 --- a/drivers/scsi/fnic/fnic_scsi.c +++ b/drivers/scsi/fnic/fnic_scsi.c @@ -497,8 +497,8 @@ static int fnic_queuecommand_lck(struct scsi_cmnd *sc) * caller disabling them. */ spin_unlock(lp->host->host_lock); - CMD_STATE(sc) = FNIC_IOREQ_NOT_INITED; - CMD_FLAGS(sc) = FNIC_NO_FLAGS; + fnic_priv(sc)->state = FNIC_IOREQ_NOT_INITED; + fnic_priv(sc)->flags = FNIC_NO_FLAGS; /* Get a new io_req for this SCSI IO */ io_req = mempool_alloc(fnic->io_req_pool, GFP_ATOMIC); @@ -513,7 +513,7 @@ static int fnic_queuecommand_lck(struct scsi_cmnd *sc) sg_count = scsi_dma_map(sc); if (sg_count < 0) { FNIC_TRACE(fnic_queuecommand, sc->device->host->host_no, - tag, sc, 0, sc->cmnd[0], sg_count, CMD_STATE(sc)); + tag, sc, 0, sc->cmnd[0], sg_count, fnic_priv(sc)->state); mempool_free(io_req, fnic->io_req_pool); goto out; } @@ -558,9 +558,9 @@ static int fnic_queuecommand_lck(struct scsi_cmnd *sc) io_lock_acquired = 1; io_req->port_id = rport->port_id; io_req->start_time = jiffies; - CMD_STATE(sc) = FNIC_IOREQ_CMD_PENDING; - CMD_SP(sc) = (char *)io_req; - CMD_FLAGS(sc) |= FNIC_IO_INITIALIZED; + fnic_priv(sc)->state = FNIC_IOREQ_CMD_PENDING; + fnic_priv(sc)->io_req = io_req; + fnic_priv(sc)->flags |= FNIC_IO_INITIALIZED; /* create copy wq desc and enqueue it */ wq = &fnic->wq_copy[0]; @@ -571,11 +571,10 @@ static int fnic_queuecommand_lck(struct scsi_cmnd *sc) * refetch the pointer under the lock. */ FNIC_TRACE(fnic_queuecommand, sc->device->host->host_no, - tag, sc, 0, 0, 0, - (((u64)CMD_FLAGS(sc) << 32) | CMD_STATE(sc))); - io_req = (struct fnic_io_req *)CMD_SP(sc); - CMD_SP(sc) = NULL; - CMD_STATE(sc) = FNIC_IOREQ_CMD_COMPLETE; + tag, sc, 0, 0, 0, fnic_flags_and_state(sc)); + io_req = fnic_priv(sc)->io_req; + fnic_priv(sc)->io_req = NULL; + fnic_priv(sc)->state = FNIC_IOREQ_CMD_COMPLETE; spin_unlock_irqrestore(io_lock, flags); if (io_req) { fnic_release_ioreq_buf(fnic, io_req, sc); @@ -594,7 +593,7 @@ static int fnic_queuecommand_lck(struct scsi_cmnd *sc) atomic64_read(&fnic_stats->io_stats.active_ios)); /* REVISIT: Use per IO lock in the final code */ - CMD_FLAGS(sc) |= FNIC_IO_ISSUED; + fnic_priv(sc)->flags |= FNIC_IO_ISSUED; } out: cmd_trace = ((u64)sc->cmnd[0] << 56 | (u64)sc->cmnd[7] << 40 | @@ -603,8 +602,8 @@ static int fnic_queuecommand_lck(struct scsi_cmnd *sc) sc->cmnd[5]); FNIC_TRACE(fnic_queuecommand, sc->device->host->host_no, - tag, sc, io_req, sg_count, cmd_trace, - (((u64)CMD_FLAGS(sc) << 32) | CMD_STATE(sc))); + tag, sc, io_req, sg_count, cmd_trace, + fnic_flags_and_state(sc)); /* if only we issued IO, will we have the io lock */ if (io_lock_acquired) @@ -867,11 +866,11 @@ static void fnic_fcpio_icmnd_cmpl_handler(struct fnic *fnic, io_lock = fnic_io_lock_hash(fnic, sc); spin_lock_irqsave(io_lock, flags); - io_req = (struct fnic_io_req *)CMD_SP(sc); + io_req = fnic_priv(sc)->io_req; WARN_ON_ONCE(!io_req); if (!io_req) { atomic64_inc(&fnic_stats->io_stats.ioreq_null); - CMD_FLAGS(sc) |= FNIC_IO_REQ_NULL; + fnic_priv(sc)->flags |= FNIC_IO_REQ_NULL; spin_unlock_irqrestore(io_lock, flags); shost_printk(KERN_ERR, fnic->lport->host, "icmnd_cmpl io_req is null - " @@ -888,17 +887,17 @@ static void fnic_fcpio_icmnd_cmpl_handler(struct fnic *fnic, * if SCSI-ML has already issued abort on this command, * set completion of the IO. The abts path will clean it up */ - if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) { + if (fnic_priv(sc)->state == FNIC_IOREQ_ABTS_PENDING) { /* * set the FNIC_IO_DONE so that this doesn't get * flagged as 'out of order' if it was not aborted */ - CMD_FLAGS(sc) |= FNIC_IO_DONE; - CMD_FLAGS(sc) |= FNIC_IO_ABTS_PENDING; + fnic_priv(sc)->flags |= FNIC_IO_DONE; + fnic_priv(sc)->flags |= FNIC_IO_ABTS_PENDING; spin_unlock_irqrestore(io_lock, flags); if(FCPIO_ABORTED == hdr_status) - CMD_FLAGS(sc) |= FNIC_IO_ABORTED; + fnic_priv(sc)->flags |= FNIC_IO_ABORTED; FNIC_SCSI_DBG(KERN_INFO, fnic->lport->host, "icmnd_cmpl abts pending " @@ -912,7 +911,7 @@ static void fnic_fcpio_icmnd_cmpl_handler(struct fnic *fnic, } /* Mark the IO as complete */ - CMD_STATE(sc) = FNIC_IOREQ_CMD_COMPLETE; + fnic_priv(sc)->state = FNIC_IOREQ_CMD_COMPLETE; icmnd_cmpl = &desc->u.icmnd_cmpl; @@ -983,8 +982,8 @@ static void fnic_fcpio_icmnd_cmpl_handler(struct fnic *fnic, } /* Break link with the SCSI command */ - CMD_SP(sc) = NULL; - CMD_FLAGS(sc) |= FNIC_IO_DONE; + fnic_priv(sc)->io_req = NULL; + fnic_priv(sc)->flags |= FNIC_IO_DONE; spin_unlock_irqrestore(io_lock, flags); @@ -1009,8 +1008,7 @@ static void fnic_fcpio_icmnd_cmpl_handler(struct fnic *fnic, ((u64)icmnd_cmpl->_resvd0[1] << 56 | (u64)icmnd_cmpl->_resvd0[0] << 48 | jiffies_to_msecs(jiffies - start_time)), - desc, cmd_trace, - (((u64)CMD_FLAGS(sc) << 32) | CMD_STATE(sc))); + desc, cmd_trace, fnic_flags_and_state(sc)); if (sc->sc_data_direction == DMA_FROM_DEVICE) { fnic->lport->host_stats.fcp_input_requests++; @@ -1095,12 +1093,12 @@ static void fnic_fcpio_itmf_cmpl_handler(struct fnic *fnic, } io_lock = fnic_io_lock_hash(fnic, sc); spin_lock_irqsave(io_lock, flags); - io_req = (struct fnic_io_req *)CMD_SP(sc); + io_req = fnic_priv(sc)->io_req; WARN_ON_ONCE(!io_req); if (!io_req) { atomic64_inc(&fnic_stats->io_stats.ioreq_null); spin_unlock_irqrestore(io_lock, flags); - CMD_FLAGS(sc) |= FNIC_IO_ABT_TERM_REQ_NULL; + fnic_priv(sc)->flags |= FNIC_IO_ABT_TERM_REQ_NULL; shost_printk(KERN_ERR, fnic->lport->host, "itmf_cmpl io_req is null - " "hdr status = %s tag = 0x%x sc 0x%p\n", @@ -1115,9 +1113,9 @@ static void fnic_fcpio_itmf_cmpl_handler(struct fnic *fnic, FNIC_SCSI_DBG(KERN_DEBUG, fnic->lport->host, "dev reset abts cmpl recd. id %x status %s\n", id, fnic_fcpio_status_to_str(hdr_status)); - CMD_STATE(sc) = FNIC_IOREQ_ABTS_COMPLETE; - CMD_ABTS_STATUS(sc) = hdr_status; - CMD_FLAGS(sc) |= FNIC_DEV_RST_DONE; + fnic_priv(sc)->state = FNIC_IOREQ_ABTS_COMPLETE; + fnic_priv(sc)->abts_status = hdr_status; + fnic_priv(sc)->flags |= FNIC_DEV_RST_DONE; if (io_req->abts_done) complete(io_req->abts_done); spin_unlock_irqrestore(io_lock, flags); @@ -1127,7 +1125,7 @@ static void fnic_fcpio_itmf_cmpl_handler(struct fnic *fnic, case FCPIO_SUCCESS: break; case FCPIO_TIMEOUT: - if (CMD_FLAGS(sc) & FNIC_IO_ABTS_ISSUED) + if (fnic_priv(sc)->flags & FNIC_IO_ABTS_ISSUED) atomic64_inc(&abts_stats->abort_fw_timeouts); else atomic64_inc( @@ -1139,34 +1137,34 @@ static void fnic_fcpio_itmf_cmpl_handler(struct fnic *fnic, (int)(id & FNIC_TAG_MASK)); break; case FCPIO_IO_NOT_FOUND: - if (CMD_FLAGS(sc) & FNIC_IO_ABTS_ISSUED) + if (fnic_priv(sc)->flags & FNIC_IO_ABTS_ISSUED) atomic64_inc(&abts_stats->abort_io_not_found); else atomic64_inc( &term_stats->terminate_io_not_found); break; default: - if (CMD_FLAGS(sc) & FNIC_IO_ABTS_ISSUED) + if (fnic_priv(sc)->flags & FNIC_IO_ABTS_ISSUED) atomic64_inc(&abts_stats->abort_failures); else atomic64_inc( &term_stats->terminate_failures); break; } - if (CMD_STATE(sc) != FNIC_IOREQ_ABTS_PENDING) { + if (fnic_priv(sc)->state != FNIC_IOREQ_ABTS_PENDING) { /* This is a late completion. Ignore it */ spin_unlock_irqrestore(io_lock, flags); return; } - CMD_FLAGS(sc) |= FNIC_IO_ABT_TERM_DONE; - CMD_ABTS_STATUS(sc) = hdr_status; + fnic_priv(sc)->flags |= FNIC_IO_ABT_TERM_DONE; + fnic_priv(sc)->abts_status = hdr_status; /* If the status is IO not found consider it as success */ if (hdr_status == FCPIO_IO_NOT_FOUND) - CMD_ABTS_STATUS(sc) = FCPIO_SUCCESS; + fnic_priv(sc)->abts_status = FCPIO_SUCCESS; - if (!(CMD_FLAGS(sc) & (FNIC_IO_ABORTED | FNIC_IO_DONE))) + if (!(fnic_priv(sc)->flags & (FNIC_IO_ABORTED | FNIC_IO_DONE))) atomic64_inc(&misc_stats->no_icmnd_itmf_cmpls); FNIC_SCSI_DBG(KERN_DEBUG, fnic->lport->host, @@ -1185,7 +1183,7 @@ static void fnic_fcpio_itmf_cmpl_handler(struct fnic *fnic, } else { FNIC_SCSI_DBG(KERN_DEBUG, fnic->lport->host, "abts cmpl, completing IO\n"); - CMD_SP(sc) = NULL; + fnic_priv(sc)->io_req = NULL; sc->result = (DID_ERROR << 16); spin_unlock_irqrestore(io_lock, flags); @@ -1202,8 +1200,7 @@ static void fnic_fcpio_itmf_cmpl_handler(struct fnic *fnic, (u64)sc->cmnd[2] << 24 | (u64)sc->cmnd[3] << 16 | (u64)sc->cmnd[4] << 8 | sc->cmnd[5]), - (((u64)CMD_FLAGS(sc) << 32) | - CMD_STATE(sc))); + fnic_flags_and_state(sc)); scsi_done(sc); atomic64_dec(&fnic_stats->io_stats.active_ios); if (atomic64_read(&fnic->io_cmpl_skip)) @@ -1213,15 +1210,14 @@ static void fnic_fcpio_itmf_cmpl_handler(struct fnic *fnic, } } else if (id & FNIC_TAG_DEV_RST) { /* Completion of device reset */ - CMD_LR_STATUS(sc) = hdr_status; - if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) { + fnic_priv(sc)->lr_status = hdr_status; + if (fnic_priv(sc)->state == FNIC_IOREQ_ABTS_PENDING) { spin_unlock_irqrestore(io_lock, flags); - CMD_FLAGS(sc) |= FNIC_DEV_RST_ABTS_PENDING; + fnic_priv(sc)->flags |= FNIC_DEV_RST_ABTS_PENDING; FNIC_TRACE(fnic_fcpio_itmf_cmpl_handler, sc->device->host->host_no, id, sc, jiffies_to_msecs(jiffies - start_time), - desc, 0, - (((u64)CMD_FLAGS(sc) << 32) | CMD_STATE(sc))); + desc, 0, fnic_flags_and_state(sc)); FNIC_SCSI_DBG(KERN_DEBUG, fnic->lport->host, "Terminate pending " "dev reset cmpl recd. id %d status %s\n", @@ -1229,14 +1225,13 @@ static void fnic_fcpio_itmf_cmpl_handler(struct fnic *fnic, fnic_fcpio_status_to_str(hdr_status)); return; } - if (CMD_FLAGS(sc) & FNIC_DEV_RST_TIMED_OUT) { + if (fnic_priv(sc)->flags & FNIC_DEV_RST_TIMED_OUT) { /* Need to wait for terminate completion */ spin_unlock_irqrestore(io_lock, flags); FNIC_TRACE(fnic_fcpio_itmf_cmpl_handler, sc->device->host->host_no, id, sc, jiffies_to_msecs(jiffies - start_time), - desc, 0, - (((u64)CMD_FLAGS(sc) << 32) | CMD_STATE(sc))); + desc, 0, fnic_flags_and_state(sc)); FNIC_SCSI_DBG(KERN_DEBUG, fnic->lport->host, "dev reset cmpl recd after time out. " "id %d status %s\n", @@ -1244,8 +1239,8 @@ static void fnic_fcpio_itmf_cmpl_handler(struct fnic *fnic, fnic_fcpio_status_to_str(hdr_status)); return; } - CMD_STATE(sc) = FNIC_IOREQ_CMD_COMPLETE; - CMD_FLAGS(sc) |= FNIC_DEV_RST_DONE; + fnic_priv(sc)->state = FNIC_IOREQ_CMD_COMPLETE; + fnic_priv(sc)->flags |= FNIC_DEV_RST_DONE; FNIC_SCSI_DBG(KERN_DEBUG, fnic->lport->host, "dev reset cmpl recd. id %d status %s\n", (int)(id & FNIC_TAG_MASK), @@ -1257,7 +1252,7 @@ static void fnic_fcpio_itmf_cmpl_handler(struct fnic *fnic, } else { shost_printk(KERN_ERR, fnic->lport->host, "Unexpected itmf io state %s tag %x\n", - fnic_ioreq_state_to_str(CMD_STATE(sc)), id); + fnic_ioreq_state_to_str(fnic_priv(sc)->state), id); spin_unlock_irqrestore(io_lock, flags); } @@ -1370,21 +1365,21 @@ static bool fnic_cleanup_io_iter(struct scsi_cmnd *sc, void *data, io_lock = fnic_io_lock_tag(fnic, tag); spin_lock_irqsave(io_lock, flags); - io_req = (struct fnic_io_req *)CMD_SP(sc); - if ((CMD_FLAGS(sc) & FNIC_DEVICE_RESET) && - !(CMD_FLAGS(sc) & FNIC_DEV_RST_DONE)) { + io_req = fnic_priv(sc)->io_req; + if ((fnic_priv(sc)->flags & FNIC_DEVICE_RESET) && + !(fnic_priv(sc)->flags & FNIC_DEV_RST_DONE)) { /* * We will be here only when FW completes reset * without sending completions for outstanding ios. */ - CMD_FLAGS(sc) |= FNIC_DEV_RST_DONE; + fnic_priv(sc)->flags |= FNIC_DEV_RST_DONE; if (io_req && io_req->dr_done) complete(io_req->dr_done); else if (io_req && io_req->abts_done) complete(io_req->abts_done); spin_unlock_irqrestore(io_lock, flags); return true; - } else if (CMD_FLAGS(sc) & FNIC_DEVICE_RESET) { + } else if (fnic_priv(sc)->flags & FNIC_DEVICE_RESET) { spin_unlock_irqrestore(io_lock, flags); return true; } @@ -1393,7 +1388,7 @@ static bool fnic_cleanup_io_iter(struct scsi_cmnd *sc, void *data, goto cleanup_scsi_cmd; } - CMD_SP(sc) = NULL; + fnic_priv(sc)->io_req = NULL; spin_unlock_irqrestore(io_lock, flags); @@ -1417,7 +1412,7 @@ static bool fnic_cleanup_io_iter(struct scsi_cmnd *sc, void *data, atomic64_inc(&fnic_stats->io_stats.io_completions); /* Complete the command to SCSI */ - if (!(CMD_FLAGS(sc) & FNIC_IO_ISSUED)) + if (!(fnic_priv(sc)->flags & FNIC_IO_ISSUED)) shost_printk(KERN_ERR, fnic->lport->host, "Calling done for IO not issued to fw: tag:0x%x sc:0x%p\n", tag, sc); @@ -1429,7 +1424,7 @@ static bool fnic_cleanup_io_iter(struct scsi_cmnd *sc, void *data, (u64)sc->cmnd[2] << 24 | (u64)sc->cmnd[3] << 16 | (u64)sc->cmnd[4] << 8 | sc->cmnd[5]), - (((u64)CMD_FLAGS(sc) << 32) | CMD_STATE(sc))); + fnic_flags_and_state(sc)); scsi_done(sc); @@ -1468,7 +1463,7 @@ void fnic_wq_copy_cleanup_handler(struct vnic_wq_copy *wq, spin_lock_irqsave(io_lock, flags); /* Get the IO context which this desc refers to */ - io_req = (struct fnic_io_req *)CMD_SP(sc); + io_req = fnic_priv(sc)->io_req; /* fnic interrupts are turned off by now */ @@ -1477,7 +1472,7 @@ void fnic_wq_copy_cleanup_handler(struct vnic_wq_copy *wq, goto wq_copy_cleanup_scsi_cmd; } - CMD_SP(sc) = NULL; + fnic_priv(sc)->io_req = NULL; spin_unlock_irqrestore(io_lock, flags); @@ -1496,7 +1491,7 @@ void fnic_wq_copy_cleanup_handler(struct vnic_wq_copy *wq, 0, ((u64)sc->cmnd[0] << 32 | (u64)sc->cmnd[2] << 24 | (u64)sc->cmnd[3] << 16 | (u64)sc->cmnd[4] << 8 | sc->cmnd[5]), - (((u64)CMD_FLAGS(sc) << 32) | CMD_STATE(sc))); + fnic_flags_and_state(sc)); scsi_done(sc); } @@ -1571,15 +1566,15 @@ static bool fnic_rport_abort_io_iter(struct scsi_cmnd *sc, void *data, io_lock = fnic_io_lock_tag(fnic, abt_tag); spin_lock_irqsave(io_lock, flags); - io_req = (struct fnic_io_req *)CMD_SP(sc); + io_req = fnic_priv(sc)->io_req; if (!io_req || io_req->port_id != iter_data->port_id) { spin_unlock_irqrestore(io_lock, flags); return true; } - if ((CMD_FLAGS(sc) & FNIC_DEVICE_RESET) && - (!(CMD_FLAGS(sc) & FNIC_DEV_RST_ISSUED))) { + if ((fnic_priv(sc)->flags & FNIC_DEVICE_RESET) && + !(fnic_priv(sc)->flags & FNIC_DEV_RST_ISSUED)) { FNIC_SCSI_DBG(KERN_DEBUG, fnic->lport->host, "fnic_rport_exch_reset dev rst not pending sc 0x%p\n", sc); @@ -1591,7 +1586,7 @@ static bool fnic_rport_abort_io_iter(struct scsi_cmnd *sc, void *data, * Found IO that is still pending with firmware and * belongs to rport that went away */ - if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) { + if (fnic_priv(sc)->state == FNIC_IOREQ_ABTS_PENDING) { spin_unlock_irqrestore(io_lock, flags); return true; } @@ -1599,20 +1594,20 @@ static bool fnic_rport_abort_io_iter(struct scsi_cmnd *sc, void *data, shost_printk(KERN_ERR, fnic->lport->host, "fnic_rport_exch_reset: io_req->abts_done is set " "state is %s\n", - fnic_ioreq_state_to_str(CMD_STATE(sc))); + fnic_ioreq_state_to_str(fnic_priv(sc)->state)); } - if (!(CMD_FLAGS(sc) & FNIC_IO_ISSUED)) { + if (!(fnic_priv(sc)->flags & FNIC_IO_ISSUED)) { shost_printk(KERN_ERR, fnic->lport->host, "rport_exch_reset " "IO not yet issued %p tag 0x%x flags " "%x state %d\n", - sc, abt_tag, CMD_FLAGS(sc), CMD_STATE(sc)); + sc, abt_tag, fnic_priv(sc)->flags, fnic_priv(sc)->state); } - old_ioreq_state = CMD_STATE(sc); - CMD_STATE(sc) = FNIC_IOREQ_ABTS_PENDING; - CMD_ABTS_STATUS(sc) = FCPIO_INVALID_CODE; - if (CMD_FLAGS(sc) & FNIC_DEVICE_RESET) { + old_ioreq_state = fnic_priv(sc)->state; + fnic_priv(sc)->state = FNIC_IOREQ_ABTS_PENDING; + fnic_priv(sc)->abts_status = FCPIO_INVALID_CODE; + if (fnic_priv(sc)->flags & FNIC_DEVICE_RESET) { atomic64_inc(&reset_stats->device_reset_terminates); abt_tag |= FNIC_TAG_DEV_RST; } @@ -1638,15 +1633,15 @@ static bool fnic_rport_abort_io_iter(struct scsi_cmnd *sc, void *data, * lun reset */ spin_lock_irqsave(io_lock, flags); - if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) - CMD_STATE(sc) = old_ioreq_state; + if (fnic_priv(sc)->state == FNIC_IOREQ_ABTS_PENDING) + fnic_priv(sc)->state = old_ioreq_state; spin_unlock_irqrestore(io_lock, flags); } else { spin_lock_irqsave(io_lock, flags); - if (CMD_FLAGS(sc) & FNIC_DEVICE_RESET) - CMD_FLAGS(sc) |= FNIC_DEV_RST_TERM_ISSUED; + if (fnic_priv(sc)->flags & FNIC_DEVICE_RESET) + fnic_priv(sc)->flags |= FNIC_DEV_RST_TERM_ISSUED; else - CMD_FLAGS(sc) |= FNIC_IO_INTERNAL_TERM_ISSUED; + fnic_priv(sc)->flags |= FNIC_IO_INTERNAL_TERM_ISSUED; spin_unlock_irqrestore(io_lock, flags); atomic64_inc(&term_stats->terminates); iter_data->term_cnt++; @@ -1754,9 +1749,9 @@ int fnic_abort_cmd(struct scsi_cmnd *sc) FNIC_SCSI_DBG(KERN_DEBUG, fnic->lport->host, "Abort Cmd called FCID 0x%x, LUN 0x%llx TAG %x flags %x\n", - rport->port_id, sc->device->lun, tag, CMD_FLAGS(sc)); + rport->port_id, sc->device->lun, tag, fnic_priv(sc)->flags); - CMD_FLAGS(sc) = FNIC_NO_FLAGS; + fnic_priv(sc)->flags = FNIC_NO_FLAGS; if (lp->state != LPORT_ST_READY || !(lp->link_up)) { ret = FAILED; @@ -1773,11 +1768,11 @@ int fnic_abort_cmd(struct scsi_cmnd *sc) * happened, the completion wont actually complete the command * and it will be considered as an aborted command * - * The CMD_SP will not be cleared except while holding io_req_lock. + * .io_req will not be cleared except while holding io_req_lock. */ io_lock = fnic_io_lock_hash(fnic, sc); spin_lock_irqsave(io_lock, flags); - io_req = (struct fnic_io_req *)CMD_SP(sc); + io_req = fnic_priv(sc)->io_req; if (!io_req) { spin_unlock_irqrestore(io_lock, flags); goto fnic_abort_cmd_end; @@ -1785,7 +1780,7 @@ int fnic_abort_cmd(struct scsi_cmnd *sc) io_req->abts_done = &tm_done; - if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) { + if (fnic_priv(sc)->state == FNIC_IOREQ_ABTS_PENDING) { spin_unlock_irqrestore(io_lock, flags); goto wait_pending; } @@ -1814,9 +1809,9 @@ int fnic_abort_cmd(struct scsi_cmnd *sc) * the completion wont be done till mid-layer, since abort * has already started. */ - old_ioreq_state = CMD_STATE(sc); - CMD_STATE(sc) = FNIC_IOREQ_ABTS_PENDING; - CMD_ABTS_STATUS(sc) = FCPIO_INVALID_CODE; + old_ioreq_state = fnic_priv(sc)->state; + fnic_priv(sc)->state = FNIC_IOREQ_ABTS_PENDING; + fnic_priv(sc)->abts_status = FCPIO_INVALID_CODE; spin_unlock_irqrestore(io_lock, flags); @@ -1838,9 +1833,9 @@ int fnic_abort_cmd(struct scsi_cmnd *sc) if (fnic_queue_abort_io_req(fnic, tag, task_req, fc_lun.scsi_lun, io_req)) { spin_lock_irqsave(io_lock, flags); - if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) - CMD_STATE(sc) = old_ioreq_state; - io_req = (struct fnic_io_req *)CMD_SP(sc); + if (fnic_priv(sc)->state == FNIC_IOREQ_ABTS_PENDING) + fnic_priv(sc)->state = old_ioreq_state; + io_req = fnic_priv(sc)->io_req; if (io_req) io_req->abts_done = NULL; spin_unlock_irqrestore(io_lock, flags); @@ -1848,10 +1843,10 @@ int fnic_abort_cmd(struct scsi_cmnd *sc) goto fnic_abort_cmd_end; } if (task_req == FCPIO_ITMF_ABT_TASK) { - CMD_FLAGS(sc) |= FNIC_IO_ABTS_ISSUED; + fnic_priv(sc)->flags |= FNIC_IO_ABTS_ISSUED; atomic64_inc(&fnic_stats->abts_stats.aborts); } else { - CMD_FLAGS(sc) |= FNIC_IO_TERM_ISSUED; + fnic_priv(sc)->flags |= FNIC_IO_TERM_ISSUED; atomic64_inc(&fnic_stats->term_stats.terminates); } @@ -1869,32 +1864,32 @@ int fnic_abort_cmd(struct scsi_cmnd *sc) /* Check the abort status */ spin_lock_irqsave(io_lock, flags); - io_req = (struct fnic_io_req *)CMD_SP(sc); + io_req = fnic_priv(sc)->io_req; if (!io_req) { atomic64_inc(&fnic_stats->io_stats.ioreq_null); spin_unlock_irqrestore(io_lock, flags); - CMD_FLAGS(sc) |= FNIC_IO_ABT_TERM_REQ_NULL; + fnic_priv(sc)->flags |= FNIC_IO_ABT_TERM_REQ_NULL; ret = FAILED; goto fnic_abort_cmd_end; } io_req->abts_done = NULL; /* fw did not complete abort, timed out */ - if (CMD_ABTS_STATUS(sc) == FCPIO_INVALID_CODE) { + if (fnic_priv(sc)->abts_status == FCPIO_INVALID_CODE) { spin_unlock_irqrestore(io_lock, flags); if (task_req == FCPIO_ITMF_ABT_TASK) { atomic64_inc(&abts_stats->abort_drv_timeouts); } else { atomic64_inc(&term_stats->terminate_drv_timeouts); } - CMD_FLAGS(sc) |= FNIC_IO_ABT_TERM_TIMED_OUT; + fnic_priv(sc)->flags |= FNIC_IO_ABT_TERM_TIMED_OUT; ret = FAILED; goto fnic_abort_cmd_end; } /* IO out of order */ - if (!(CMD_FLAGS(sc) & (FNIC_IO_ABORTED | FNIC_IO_DONE))) { + if (!(fnic_priv(sc)->flags & (FNIC_IO_ABORTED | FNIC_IO_DONE))) { spin_unlock_irqrestore(io_lock, flags); FNIC_SCSI_DBG(KERN_DEBUG, fnic->lport->host, "Issuing Host reset due to out of order IO\n"); @@ -1903,7 +1898,7 @@ int fnic_abort_cmd(struct scsi_cmnd *sc) goto fnic_abort_cmd_end; } - CMD_STATE(sc) = FNIC_IOREQ_ABTS_COMPLETE; + fnic_priv(sc)->state = FNIC_IOREQ_ABTS_COMPLETE; start_time = io_req->start_time; /* @@ -1911,9 +1906,9 @@ int fnic_abort_cmd(struct scsi_cmnd *sc) * free the io_req if successful. If abort fails, * Device reset will clean the I/O. */ - if (CMD_ABTS_STATUS(sc) == FCPIO_SUCCESS) - CMD_SP(sc) = NULL; - else { + if (fnic_priv(sc)->abts_status == FCPIO_SUCCESS) { + fnic_priv(sc)->io_req = NULL; + } else { ret = FAILED; spin_unlock_irqrestore(io_lock, flags); goto fnic_abort_cmd_end; @@ -1939,7 +1934,7 @@ int fnic_abort_cmd(struct scsi_cmnd *sc) 0, ((u64)sc->cmnd[0] << 32 | (u64)sc->cmnd[2] << 24 | (u64)sc->cmnd[3] << 16 | (u64)sc->cmnd[4] << 8 | sc->cmnd[5]), - (((u64)CMD_FLAGS(sc) << 32) | CMD_STATE(sc))); + fnic_flags_and_state(sc)); FNIC_SCSI_DBG(KERN_DEBUG, fnic->lport->host, "Returning from abort cmd type %x %s\n", task_req, @@ -2030,7 +2025,7 @@ static bool fnic_pending_aborts_iter(struct scsi_cmnd *sc, io_lock = fnic_io_lock_tag(fnic, abt_tag); spin_lock_irqsave(io_lock, flags); - io_req = (struct fnic_io_req *)CMD_SP(sc); + io_req = fnic_priv(sc)->io_req; if (!io_req) { spin_unlock_irqrestore(io_lock, flags); return true; @@ -2042,14 +2037,14 @@ static bool fnic_pending_aborts_iter(struct scsi_cmnd *sc, */ FNIC_SCSI_DBG(KERN_DEBUG, fnic->lport->host, "Found IO in %s on lun\n", - fnic_ioreq_state_to_str(CMD_STATE(sc))); + fnic_ioreq_state_to_str(fnic_priv(sc)->state)); - if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) { + if (fnic_priv(sc)->state == FNIC_IOREQ_ABTS_PENDING) { spin_unlock_irqrestore(io_lock, flags); return true; } - if ((CMD_FLAGS(sc) & FNIC_DEVICE_RESET) && - (!(CMD_FLAGS(sc) & FNIC_DEV_RST_ISSUED))) { + if ((fnic_priv(sc)->flags & FNIC_DEVICE_RESET) && + (!(fnic_priv(sc)->flags & FNIC_DEV_RST_ISSUED))) { FNIC_SCSI_DBG(KERN_INFO, fnic->lport->host, "%s dev rst not pending sc 0x%p\n", __func__, sc); @@ -2060,8 +2055,8 @@ static bool fnic_pending_aborts_iter(struct scsi_cmnd *sc, if (io_req->abts_done) shost_printk(KERN_ERR, fnic->lport->host, "%s: io_req->abts_done is set state is %s\n", - __func__, fnic_ioreq_state_to_str(CMD_STATE(sc))); - old_ioreq_state = CMD_STATE(sc); + __func__, fnic_ioreq_state_to_str(fnic_priv(sc)->state)); + old_ioreq_state = fnic_priv(sc)->state; /* * Any pending IO issued prior to reset is expected to be * in abts pending state, if not we need to set @@ -2069,17 +2064,17 @@ static bool fnic_pending_aborts_iter(struct scsi_cmnd *sc, * When IO is completed, the IO will be handed over and * handled in this function. */ - CMD_STATE(sc) = FNIC_IOREQ_ABTS_PENDING; + fnic_priv(sc)->state = FNIC_IOREQ_ABTS_PENDING; BUG_ON(io_req->abts_done); - if (CMD_FLAGS(sc) & FNIC_DEVICE_RESET) { + if (fnic_priv(sc)->flags & FNIC_DEVICE_RESET) { abt_tag |= FNIC_TAG_DEV_RST; FNIC_SCSI_DBG(KERN_INFO, fnic->lport->host, "%s: dev rst sc 0x%p\n", __func__, sc); } - CMD_ABTS_STATUS(sc) = FCPIO_INVALID_CODE; + fnic_priv(sc)->abts_status = FCPIO_INVALID_CODE; io_req->abts_done = &tm_done; spin_unlock_irqrestore(io_lock, flags); @@ -2090,48 +2085,48 @@ static bool fnic_pending_aborts_iter(struct scsi_cmnd *sc, FCPIO_ITMF_ABT_TASK_TERM, fc_lun.scsi_lun, io_req)) { spin_lock_irqsave(io_lock, flags); - io_req = (struct fnic_io_req *)CMD_SP(sc); + io_req = fnic_priv(sc)->io_req; if (io_req) io_req->abts_done = NULL; - if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) - CMD_STATE(sc) = old_ioreq_state; + if (fnic_priv(sc)->state == FNIC_IOREQ_ABTS_PENDING) + fnic_priv(sc)->state = old_ioreq_state; spin_unlock_irqrestore(io_lock, flags); iter_data->ret = FAILED; return false; } else { spin_lock_irqsave(io_lock, flags); - if (CMD_FLAGS(sc) & FNIC_DEVICE_RESET) - CMD_FLAGS(sc) |= FNIC_DEV_RST_TERM_ISSUED; + if (fnic_priv(sc)->flags & FNIC_DEVICE_RESET) + fnic_priv(sc)->flags |= FNIC_DEV_RST_TERM_ISSUED; spin_unlock_irqrestore(io_lock, flags); } - CMD_FLAGS(sc) |= FNIC_IO_INTERNAL_TERM_ISSUED; + fnic_priv(sc)->flags |= FNIC_IO_INTERNAL_TERM_ISSUED; wait_for_completion_timeout(&tm_done, msecs_to_jiffies (fnic->config.ed_tov)); /* Recheck cmd state to check if it is now aborted */ spin_lock_irqsave(io_lock, flags); - io_req = (struct fnic_io_req *)CMD_SP(sc); + io_req = fnic_priv(sc)->io_req; if (!io_req) { spin_unlock_irqrestore(io_lock, flags); - CMD_FLAGS(sc) |= FNIC_IO_ABT_TERM_REQ_NULL; + fnic_priv(sc)->flags |= FNIC_IO_ABT_TERM_REQ_NULL; return true; } io_req->abts_done = NULL; /* if abort is still pending with fw, fail */ - if (CMD_ABTS_STATUS(sc) == FCPIO_INVALID_CODE) { + if (fnic_priv(sc)->abts_status == FCPIO_INVALID_CODE) { spin_unlock_irqrestore(io_lock, flags); - CMD_FLAGS(sc) |= FNIC_IO_ABT_TERM_DONE; + fnic_priv(sc)->flags |= FNIC_IO_ABT_TERM_DONE; iter_data->ret = FAILED; return false; } - CMD_STATE(sc) = FNIC_IOREQ_ABTS_COMPLETE; + fnic_priv(sc)->state = FNIC_IOREQ_ABTS_COMPLETE; /* original sc used for lr is handled by dev reset code */ if (sc != iter_data->lr_sc) - CMD_SP(sc) = NULL; + fnic_priv(sc)->io_req = NULL; spin_unlock_irqrestore(io_lock, flags); /* original sc used for lr is handled by dev reset code */ @@ -2272,7 +2267,7 @@ int fnic_device_reset(struct scsi_cmnd *sc) goto fnic_device_reset_end; } - CMD_FLAGS(sc) = FNIC_DEVICE_RESET; + fnic_priv(sc)->flags = FNIC_DEVICE_RESET; /* Allocate tag if not present */ if (unlikely(tag < 0)) { @@ -2288,7 +2283,7 @@ int fnic_device_reset(struct scsi_cmnd *sc) } io_lock = fnic_io_lock_hash(fnic, sc); spin_lock_irqsave(io_lock, flags); - io_req = (struct fnic_io_req *)CMD_SP(sc); + io_req = fnic_priv(sc)->io_req; /* * If there is a io_req attached to this command, then use it, @@ -2302,11 +2297,11 @@ int fnic_device_reset(struct scsi_cmnd *sc) } memset(io_req, 0, sizeof(*io_req)); io_req->port_id = rport->port_id; - CMD_SP(sc) = (char *)io_req; + fnic_priv(sc)->io_req = io_req; } io_req->dr_done = &tm_done; - CMD_STATE(sc) = FNIC_IOREQ_CMD_PENDING; - CMD_LR_STATUS(sc) = FCPIO_INVALID_CODE; + fnic_priv(sc)->state = FNIC_IOREQ_CMD_PENDING; + fnic_priv(sc)->lr_status = FCPIO_INVALID_CODE; spin_unlock_irqrestore(io_lock, flags); FNIC_SCSI_DBG(KERN_DEBUG, fnic->lport->host, "TAG %x\n", tag); @@ -2317,13 +2312,13 @@ int fnic_device_reset(struct scsi_cmnd *sc) */ if (fnic_queue_dr_io_req(fnic, sc, io_req)) { spin_lock_irqsave(io_lock, flags); - io_req = (struct fnic_io_req *)CMD_SP(sc); + io_req = fnic_priv(sc)->io_req; if (io_req) io_req->dr_done = NULL; goto fnic_device_reset_clean; } spin_lock_irqsave(io_lock, flags); - CMD_FLAGS(sc) |= FNIC_DEV_RST_ISSUED; + fnic_priv(sc)->flags |= FNIC_DEV_RST_ISSUED; spin_unlock_irqrestore(io_lock, flags); /* @@ -2334,7 +2329,7 @@ int fnic_device_reset(struct scsi_cmnd *sc) msecs_to_jiffies(FNIC_LUN_RESET_TIMEOUT)); spin_lock_irqsave(io_lock, flags); - io_req = (struct fnic_io_req *)CMD_SP(sc); + io_req = fnic_priv(sc)->io_req; if (!io_req) { spin_unlock_irqrestore(io_lock, flags); FNIC_SCSI_DBG(KERN_DEBUG, fnic->lport->host, @@ -2343,7 +2338,7 @@ int fnic_device_reset(struct scsi_cmnd *sc) } io_req->dr_done = NULL; - status = CMD_LR_STATUS(sc); + status = fnic_priv(sc)->lr_status; /* * If lun reset not completed, bail out with failed. io_req @@ -2353,7 +2348,7 @@ int fnic_device_reset(struct scsi_cmnd *sc) atomic64_inc(&reset_stats->device_reset_timeouts); FNIC_SCSI_DBG(KERN_DEBUG, fnic->lport->host, "Device reset timed out\n"); - CMD_FLAGS(sc) |= FNIC_DEV_RST_TIMED_OUT; + fnic_priv(sc)->flags |= FNIC_DEV_RST_TIMED_OUT; spin_unlock_irqrestore(io_lock, flags); int_to_scsilun(sc->device->lun, &fc_lun); /* @@ -2362,7 +2357,7 @@ int fnic_device_reset(struct scsi_cmnd *sc) */ while (1) { spin_lock_irqsave(io_lock, flags); - if (CMD_FLAGS(sc) & FNIC_DEV_RST_TERM_ISSUED) { + if (fnic_priv(sc)->flags & FNIC_DEV_RST_TERM_ISSUED) { spin_unlock_irqrestore(io_lock, flags); break; } @@ -2375,8 +2370,8 @@ int fnic_device_reset(struct scsi_cmnd *sc) msecs_to_jiffies(FNIC_ABT_TERM_DELAY_TIMEOUT)); } else { spin_lock_irqsave(io_lock, flags); - CMD_FLAGS(sc) |= FNIC_DEV_RST_TERM_ISSUED; - CMD_STATE(sc) = FNIC_IOREQ_ABTS_PENDING; + fnic_priv(sc)->flags |= FNIC_DEV_RST_TERM_ISSUED; + fnic_priv(sc)->state = FNIC_IOREQ_ABTS_PENDING; io_req->abts_done = &tm_done; spin_unlock_irqrestore(io_lock, flags); FNIC_SCSI_DBG(KERN_DEBUG, fnic->lport->host, @@ -2387,13 +2382,13 @@ int fnic_device_reset(struct scsi_cmnd *sc) } while (1) { spin_lock_irqsave(io_lock, flags); - if (!(CMD_FLAGS(sc) & FNIC_DEV_RST_DONE)) { + if (!(fnic_priv(sc)->flags & FNIC_DEV_RST_DONE)) { spin_unlock_irqrestore(io_lock, flags); wait_for_completion_timeout(&tm_done, msecs_to_jiffies(FNIC_LUN_RESET_TIMEOUT)); break; } else { - io_req = (struct fnic_io_req *)CMD_SP(sc); + io_req = fnic_priv(sc)->io_req; io_req->abts_done = NULL; goto fnic_device_reset_clean; } @@ -2408,7 +2403,7 @@ int fnic_device_reset(struct scsi_cmnd *sc) FNIC_SCSI_DBG(KERN_DEBUG, fnic->lport->host, "Device reset completed - failed\n"); - io_req = (struct fnic_io_req *)CMD_SP(sc); + io_req = fnic_priv(sc)->io_req; goto fnic_device_reset_clean; } @@ -2421,7 +2416,7 @@ int fnic_device_reset(struct scsi_cmnd *sc) */ if (fnic_clean_pending_aborts(fnic, sc, new_sc)) { spin_lock_irqsave(io_lock, flags); - io_req = (struct fnic_io_req *)CMD_SP(sc); + io_req = fnic_priv(sc)->io_req; FNIC_SCSI_DBG(KERN_DEBUG, fnic->lport->host, "Device reset failed" " since could not abort all IOs\n"); @@ -2430,14 +2425,14 @@ int fnic_device_reset(struct scsi_cmnd *sc) /* Clean lun reset command */ spin_lock_irqsave(io_lock, flags); - io_req = (struct fnic_io_req *)CMD_SP(sc); + io_req = fnic_priv(sc)->io_req; if (io_req) /* Completed, and successful */ ret = SUCCESS; fnic_device_reset_clean: if (io_req) - CMD_SP(sc) = NULL; + fnic_priv(sc)->io_req = NULL; spin_unlock_irqrestore(io_lock, flags); @@ -2453,7 +2448,7 @@ int fnic_device_reset(struct scsi_cmnd *sc) 0, ((u64)sc->cmnd[0] << 32 | (u64)sc->cmnd[2] << 24 | (u64)sc->cmnd[3] << 16 | (u64)sc->cmnd[4] << 8 | sc->cmnd[5]), - (((u64)CMD_FLAGS(sc) << 32) | CMD_STATE(sc))); + fnic_flags_and_state(sc)); /* free tag if it is allocated */ if (unlikely(tag_gen_flag)) @@ -2698,7 +2693,7 @@ static bool fnic_abts_pending_iter(struct scsi_cmnd *sc, void *data, io_lock = fnic_io_lock_hash(fnic, sc); spin_lock_irqsave(io_lock, flags); - io_req = (struct fnic_io_req *)CMD_SP(sc); + io_req = fnic_priv(sc)->io_req; if (!io_req) { spin_unlock_irqrestore(io_lock, flags); return true; @@ -2710,8 +2705,8 @@ static bool fnic_abts_pending_iter(struct scsi_cmnd *sc, void *data, */ FNIC_SCSI_DBG(KERN_INFO, fnic->lport->host, "Found IO in %s on lun\n", - fnic_ioreq_state_to_str(CMD_STATE(sc))); - cmd_state = CMD_STATE(sc); + fnic_ioreq_state_to_str(fnic_priv(sc)->state)); + cmd_state = fnic_priv(sc)->state; spin_unlock_irqrestore(io_lock, flags); if (cmd_state == FNIC_IOREQ_ABTS_PENDING) iter_data->ret = 1; From patchwork Fri Feb 11 22:32:23 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542020 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3DFA7C433F5 for ; Fri, 11 Feb 2022 22:34:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1353915AbiBKWeG (ORCPT ); Fri, 11 Feb 2022 17:34:06 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34182 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354128AbiBKWeA (ORCPT ); Fri, 11 Feb 2022 17:34:00 -0500 Received: from mail-pj1-f51.google.com (mail-pj1-f51.google.com [209.85.216.51]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A7B5CD55 for ; Fri, 11 Feb 2022 14:33:58 -0800 (PST) Received: by mail-pj1-f51.google.com with SMTP id om7so9278906pjb.5 for ; Fri, 11 Feb 2022 14:33:58 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Cq307zyqkGB81Y1HPwnROoKgGyu5K7bZpTYHOrkG/uA=; b=4WG0yDoHRXNRngbGLeuVC6aHYn8vXE0XRfySUXEcyXqIIisA+fV6PwLss0QjahGNEt 49Owll9hxfkPhcnPJCR+D8g4jE4IQm8am0tmVgXcuiiqCCmTFp3yIThQwZiOF7ZddqcM s9dkmKPjivOtDg/3lj85jkvTINh01i99EysC2yIcJ98R87ZnTUcEo1CGJS2ku/YO9KVr nsDuYePCANPZNP+36Z0cmiSE04QBAR5ZGJBpV6na6NmHxuv+FrujsPrjIEJbsv9QGtkH 2PNtVuTCJ+tdSc4DPsYzUgau/AkQ7jiTeJbM6M9XLxUwRRq9VjC1Uz6yBHPrVAFmKqli cllQ== X-Gm-Message-State: AOAM532ydH+DegWVxI5WAOU8K+QDXhWb79q7bf7hrxZe4G2sEmioNXzf XX7ZkwGjPIGF0IjWBeKe70g= X-Google-Smtp-Source: ABdhPJyEzQOiHN5ksgWB3oMrIjAy8b1KwFQq7epo6J96m/RnhPH+5wQhFt4zvdhs2ROheM0qc/ZDcQ== X-Received: by 2002:a17:90b:2509:: with SMTP id ns9mr2525575pjb.185.1644618838082; Fri, 11 Feb 2022 14:33:58 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.33.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:33:57 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Johannes Thumshirn , Himanshu Madhani , Hannes Reinecke , HighPoint Linux Team , "James E.J. Bottomley" Subject: [PATCH v3 24/48] scsi: hptiop: Stop using the SCSI pointer Date: Fri, 11 Feb 2022 14:32:23 -0800 Message-Id: <20220211223247.14369-25-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Set .cmd_size in the SCSI host template instead of using the SCSI pointer from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Rename hpt_scsi_pointer into hpt_cmd_priv because that data structure is not related to struct scsi_pointer. Reviewed-by: Johannes Thumshirn Reviewed-by: Himanshu Madhani Reviewed-by: Hannes Reinecke Signed-off-by: Bart Van Assche --- drivers/scsi/hptiop.c | 1 + drivers/scsi/hptiop.h | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/hptiop.c b/drivers/scsi/hptiop.c index d04245e379d7..f18b770626e6 100644 --- a/drivers/scsi/hptiop.c +++ b/drivers/scsi/hptiop.c @@ -1174,6 +1174,7 @@ static struct scsi_host_template driver_template = { .slave_configure = hptiop_slave_config, .this_id = -1, .change_queue_depth = hptiop_adjust_disk_queue_depth, + .cmd_size = sizeof(struct hpt_cmd_priv), }; static int hptiop_internal_memalloc_itl(struct hptiop_hba *hba) diff --git a/drivers/scsi/hptiop.h b/drivers/scsi/hptiop.h index 35184c2008af..363d5a16243f 100644 --- a/drivers/scsi/hptiop.h +++ b/drivers/scsi/hptiop.h @@ -251,13 +251,13 @@ struct hptiop_request { int index; }; -struct hpt_scsi_pointer { +struct hpt_cmd_priv { int mapped; int sgcnt; dma_addr_t dma_handle; }; -#define HPT_SCP(scp) ((struct hpt_scsi_pointer *)&(scp)->SCp) +#define HPT_SCP(scp) ((struct hpt_cmd_priv *)scsi_cmd_priv(scp)) enum hptiop_family { UNKNOWN_BASED_IOP, From patchwork Fri Feb 11 22:32:24 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542294 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2C0A5C433FE for ; Fri, 11 Feb 2022 22:34:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354140AbiBKWeI (ORCPT ); Fri, 11 Feb 2022 17:34:08 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34250 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354141AbiBKWeG (ORCPT ); Fri, 11 Feb 2022 17:34:06 -0500 Received: from mail-pj1-f47.google.com (mail-pj1-f47.google.com [209.85.216.47]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5BBBAD5C for ; Fri, 11 Feb 2022 14:34:00 -0800 (PST) Received: by mail-pj1-f47.google.com with SMTP id q11-20020a17090a304b00b001b94d25eaecso5602756pjl.4 for ; Fri, 11 Feb 2022 14:34:00 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=yQ+qPRmpV+XDb0VWxemarBzaOzx41XEbKJUiDIXT3Aw=; b=jTMmHJxnf/YdNfoH7sE1CBBfT3kmpwOe1ZLa8xhnTvwcJ84jbyR+DZnBSicoG0cCNx DLcb2+B7VvXgLauilqVbSCdcBx1AVvhNfSq4jewBg0zWA0ElAMadW2Vi7T79Zr88dm/S nad5HGmYdecGsHl75gsTu444NsvbiX3lx+++gbo+UL5iaEIT0jGtW5TevvRn0zBdvY0B gmwGeQIo4Q9lmyC/iUusRA4YFSrS+Eh2vwYKu0WAY/pqMr4Echys7W/ez+RCXOlbvJOy 2moK4qdols7kbd6bkZ62jqcITV2CkMw9THlT/yXDbEFGBmXk6gFtQ4O/ZoGUN+O3RXJe H0/g== X-Gm-Message-State: AOAM531wvGc6k5M1W1R9mlzDwMqd+Cz/dSIvBXK2xfn1f1WxGANM+/e6 wTGwsXc7mKp38hUwcNEYAgs= X-Google-Smtp-Source: ABdhPJwJtQces2Bm9kRqzAJO6sdLDUpKm9dfv140Spa+Bm1xNseknQdaxx+nCXSCch8/JO9IX663bA== X-Received: by 2002:a17:90b:164e:: with SMTP id il14mr2560205pjb.90.1644618839688; Fri, 11 Feb 2022 14:33:59 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.33.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:33:59 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Johannes Thumshirn , Himanshu Madhani , "James E.J. Bottomley" Subject: [PATCH v3 25/48] scsi: imm: Move the SCSI pointer to private command data Date: Fri, 11 Feb 2022 14:32:24 -0800 Message-Id: <20220211223247.14369-26-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Set .cmd_size in the SCSI host template instead of using the SCSI pointer. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Reviewed-by: Johannes Thumshirn Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/scsi/imm.c | 88 ++++++++++++++++++++++++---------------------- drivers/scsi/imm.h | 5 +++ 2 files changed, 50 insertions(+), 43 deletions(-) diff --git a/drivers/scsi/imm.c b/drivers/scsi/imm.c index 8afdb4dba2be..7a499d621c25 100644 --- a/drivers/scsi/imm.c +++ b/drivers/scsi/imm.c @@ -66,7 +66,7 @@ static void got_it(imm_struct *dev) { dev->base = dev->dev->port->base; if (dev->cur_cmd) - dev->cur_cmd->SCp.phase = 1; + imm_scsi_pointer(dev->cur_cmd)->phase = 1; else wake_up(dev->waiting); } @@ -618,13 +618,14 @@ static inline int imm_send_command(struct scsi_cmnd *cmd) * The driver appears to remain stable if we speed up the parallel port * i/o in this function, but not elsewhere. */ -static int imm_completion(struct scsi_cmnd *cmd) +static int imm_completion(struct scsi_cmnd *const cmd) { /* Return codes: * -1 Error * 0 Told to schedule * 1 Finished data transfer */ + struct scsi_pointer *scsi_pointer = imm_scsi_pointer(cmd); imm_struct *dev = imm_dev(cmd->device->host); unsigned short ppb = dev->base; unsigned long start_jiffies = jiffies; @@ -660,44 +661,43 @@ static int imm_completion(struct scsi_cmnd *cmd) * a) Drive status is screwy (!ready && !present) * b) Drive is requesting/sending more data than expected */ - if (((r & 0x88) != 0x88) || (cmd->SCp.this_residual <= 0)) { + if ((r & 0x88) != 0x88 || scsi_pointer->this_residual <= 0) { imm_fail(dev, DID_ERROR); return -1; /* ERROR_RETURN */ } /* determine if we should use burst I/O */ if (dev->rd == 0) { - fast = (bulk - && (cmd->SCp.this_residual >= - IMM_BURST_SIZE)) ? IMM_BURST_SIZE : 2; - status = imm_out(dev, cmd->SCp.ptr, fast); + fast = bulk && scsi_pointer->this_residual >= + IMM_BURST_SIZE ? IMM_BURST_SIZE : 2; + status = imm_out(dev, scsi_pointer->ptr, fast); } else { - fast = (bulk - && (cmd->SCp.this_residual >= - IMM_BURST_SIZE)) ? IMM_BURST_SIZE : 1; - status = imm_in(dev, cmd->SCp.ptr, fast); + fast = bulk && scsi_pointer->this_residual >= + IMM_BURST_SIZE ? IMM_BURST_SIZE : 1; + status = imm_in(dev, scsi_pointer->ptr, fast); } - cmd->SCp.ptr += fast; - cmd->SCp.this_residual -= fast; + scsi_pointer->ptr += fast; + scsi_pointer->this_residual -= fast; if (!status) { imm_fail(dev, DID_BUS_BUSY); return -1; /* ERROR_RETURN */ } - if (cmd->SCp.buffer && !cmd->SCp.this_residual) { + if (scsi_pointer->buffer && !scsi_pointer->this_residual) { /* if scatter/gather, advance to the next segment */ - if (cmd->SCp.buffers_residual--) { - cmd->SCp.buffer = sg_next(cmd->SCp.buffer); - cmd->SCp.this_residual = - cmd->SCp.buffer->length; - cmd->SCp.ptr = sg_virt(cmd->SCp.buffer); + if (scsi_pointer->buffers_residual--) { + scsi_pointer->buffer = + sg_next(scsi_pointer->buffer); + scsi_pointer->this_residual = + scsi_pointer->buffer->length; + scsi_pointer->ptr = sg_virt(scsi_pointer->buffer); /* * Make sure that we transfer even number of bytes * otherwise it makes imm_byte_out() messy. */ - if (cmd->SCp.this_residual & 0x01) - cmd->SCp.this_residual++; + if (scsi_pointer->this_residual & 0x01) + scsi_pointer->this_residual++; } } /* Now check to see if the drive is ready to comunicate */ @@ -762,7 +762,7 @@ static void imm_interrupt(struct work_struct *work) } #endif - if (cmd->SCp.phase > 1) + if (imm_scsi_pointer(cmd)->phase > 1) imm_disconnect(dev); imm_pb_dismiss(dev); @@ -774,8 +774,9 @@ static void imm_interrupt(struct work_struct *work) return; } -static int imm_engine(imm_struct *dev, struct scsi_cmnd *cmd) +static int imm_engine(imm_struct *dev, struct scsi_cmnd *const cmd) { + struct scsi_pointer *scsi_pointer = imm_scsi_pointer(cmd); unsigned short ppb = dev->base; unsigned char l = 0, h = 0; int retv, x; @@ -786,7 +787,7 @@ static int imm_engine(imm_struct *dev, struct scsi_cmnd *cmd) if (dev->failed) return 0; - switch (cmd->SCp.phase) { + switch (scsi_pointer->phase) { case 0: /* Phase 0 - Waiting for parport */ if (time_after(jiffies, dev->jstart + HZ)) { /* @@ -800,7 +801,7 @@ static int imm_engine(imm_struct *dev, struct scsi_cmnd *cmd) case 1: /* Phase 1 - Connected */ imm_connect(dev, CONNECT_EPP_MAYBE); - cmd->SCp.phase++; + scsi_pointer->phase++; fallthrough; case 2: /* Phase 2 - We are now talking to the scsi bus */ @@ -808,7 +809,7 @@ static int imm_engine(imm_struct *dev, struct scsi_cmnd *cmd) imm_fail(dev, DID_NO_CONNECT); return 0; } - cmd->SCp.phase++; + scsi_pointer->phase++; fallthrough; case 3: /* Phase 3 - Ready to accept a command */ @@ -818,23 +819,23 @@ static int imm_engine(imm_struct *dev, struct scsi_cmnd *cmd) if (!imm_send_command(cmd)) return 0; - cmd->SCp.phase++; + scsi_pointer->phase++; fallthrough; case 4: /* Phase 4 - Setup scatter/gather buffers */ if (scsi_bufflen(cmd)) { - cmd->SCp.buffer = scsi_sglist(cmd); - cmd->SCp.this_residual = cmd->SCp.buffer->length; - cmd->SCp.ptr = sg_virt(cmd->SCp.buffer); + scsi_pointer->buffer = scsi_sglist(cmd); + scsi_pointer->this_residual = scsi_pointer->buffer->length; + scsi_pointer->ptr = sg_virt(scsi_pointer->buffer); } else { - cmd->SCp.buffer = NULL; - cmd->SCp.this_residual = 0; - cmd->SCp.ptr = NULL; + scsi_pointer->buffer = NULL; + scsi_pointer->this_residual = 0; + scsi_pointer->ptr = NULL; } - cmd->SCp.buffers_residual = scsi_sg_count(cmd) - 1; - cmd->SCp.phase++; - if (cmd->SCp.this_residual & 0x01) - cmd->SCp.this_residual++; + scsi_pointer->buffers_residual = scsi_sg_count(cmd) - 1; + scsi_pointer->phase++; + if (scsi_pointer->this_residual & 0x01) + scsi_pointer->this_residual++; fallthrough; case 5: /* Phase 5 - Pre-Data transfer stage */ @@ -851,7 +852,7 @@ static int imm_engine(imm_struct *dev, struct scsi_cmnd *cmd) if ((dev->dp) && (dev->rd)) if (imm_negotiate(dev)) return 0; - cmd->SCp.phase++; + scsi_pointer->phase++; fallthrough; case 6: /* Phase 6 - Data transfer stage */ @@ -867,7 +868,7 @@ static int imm_engine(imm_struct *dev, struct scsi_cmnd *cmd) if (retv == 0) return 1; } - cmd->SCp.phase++; + scsi_pointer->phase++; fallthrough; case 7: /* Phase 7 - Post data transfer stage */ @@ -879,7 +880,7 @@ static int imm_engine(imm_struct *dev, struct scsi_cmnd *cmd) w_ctr(ppb, 0x4); } } - cmd->SCp.phase++; + scsi_pointer->phase++; fallthrough; case 8: /* Phase 8 - Read status/message */ @@ -922,7 +923,7 @@ static int imm_queuecommand_lck(struct scsi_cmnd *cmd) dev->jstart = jiffies; dev->cur_cmd = cmd; cmd->result = DID_ERROR << 16; /* default return code */ - cmd->SCp.phase = 0; /* bus free */ + imm_scsi_pointer(cmd)->phase = 0; /* bus free */ schedule_delayed_work(&dev->imm_tq, 0); @@ -961,7 +962,7 @@ static int imm_abort(struct scsi_cmnd *cmd) * have tied the SCSI_MESSAGE line high in the interface */ - switch (cmd->SCp.phase) { + switch (imm_scsi_pointer(cmd)->phase) { case 0: /* Do not have access to parport */ case 1: /* Have not connected to interface */ dev->cur_cmd = NULL; /* Forget the problem */ @@ -987,7 +988,7 @@ static int imm_reset(struct scsi_cmnd *cmd) { imm_struct *dev = imm_dev(cmd->device->host); - if (cmd->SCp.phase) + if (imm_scsi_pointer(cmd)->phase) imm_disconnect(dev); dev->cur_cmd = NULL; /* Forget the problem */ @@ -1109,6 +1110,7 @@ static struct scsi_host_template imm_template = { .sg_tablesize = SG_ALL, .can_queue = 1, .slave_alloc = imm_adjust_queue, + .cmd_size = sizeof(struct scsi_pointer), }; /*************************************************************************** diff --git a/drivers/scsi/imm.h b/drivers/scsi/imm.h index 7f2bb35b1b87..411cf94af5b0 100644 --- a/drivers/scsi/imm.h +++ b/drivers/scsi/imm.h @@ -139,6 +139,11 @@ static char *IMM_MODE_STRING[] = #define w_ctr(x,y) outb(y, (x)+2) #endif +static inline struct scsi_pointer *imm_scsi_pointer(struct scsi_cmnd *cmd) +{ + return scsi_cmd_priv(cmd); +} + static int imm_engine(imm_struct *, struct scsi_cmnd *); #endif /* _IMM_H */ From patchwork Fri Feb 11 22:32:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542018 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3B089C433EF for ; Fri, 11 Feb 2022 22:34:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347348AbiBKWeL (ORCPT ); Fri, 11 Feb 2022 17:34:11 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34258 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354129AbiBKWeG (ORCPT ); Fri, 11 Feb 2022 17:34:06 -0500 Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1D2B4D62 for ; Fri, 11 Feb 2022 14:34:03 -0800 (PST) Received: by mail-pl1-f170.google.com with SMTP id 10so5787086plj.1 for ; Fri, 11 Feb 2022 14:34:03 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=zgpQwH8pLAU2GAXUYJCo4y5bfhkF3DNy/HPsHMu4yb8=; b=BQNe+V/VsG535fGQum7n5xQ7xIOjcjZIuJrNuQWdPO4c06H8uJWdjByrS18x7/zQ/K 4gw/k9CCOGPce+q/hpy7yS1qciZzhgruRk8oAHGw0NGW/AquMdpqcw0Aiiajr1CPEh0F qESnF4QcxitvUQFSOGREC6VIoKQ/o5JxR8eXB1KbZrbRDm7aU1zqGY/G+yTQHQ/Ah2Fl NjfXOXHxL+kCSUPg/gnRnKbs34DG1biBqioUxv8HxmItMi3RQDMFOvWCrlU0JdWthQm5 bdqCmy9ydp2Ss+bRGiDTeE9Oht+xSAsixLO4gjwpbHhH+Qv+umDpJLhrajizMsjEcI6l ymTA== X-Gm-Message-State: AOAM53012qRSuIgyt5xypu9x8RCd5KEqz2C0l4uDBFaKMVkuh4+9Csa8 nzhSHTFQ7LtU92S4kNJy6mOINF7z0GM94nv9 X-Google-Smtp-Source: ABdhPJzLq3JlAAYsvZiBaRaPmeFyR/mL68V52LlqX8dJgADX/XgKH5b/5zB4G1IkXLTZLydR4b658A== X-Received: by 2002:a17:90a:e553:: with SMTP id ei19mr2571758pjb.177.1644618842384; Fri, 11 Feb 2022 14:34:02 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.34.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:34:01 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Lee Duncan , Chris Leech , Sagi Grimberg , Hannes Reinecke , Himanshu Madhani , Nilesh Javali , Manish Rangankar , Karen Xie , Ketan Mukadam , Max Gurtovoy , Jason Gunthorpe , "James E.J. Bottomley" , GR-QLogic-Storage-Upstream@marvell.com Subject: [PATCH v3 26/48] scsi: iscsi: Stop using the SCSI pointer Date: Fri, 11 Feb 2022 14:32:25 -0800 Message-Id: <20220211223247.14369-27-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Instead of storing the iSCSI task pointer and the session age in the SCSI pointer, use command-private variables. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. The list of iSCSI drivers has been obtained as follows: $ git grep -lw iscsi_host_alloc drivers/infiniband/ulp/iser/iscsi_iser.c drivers/scsi/be2iscsi/be_main.c drivers/scsi/bnx2i/bnx2i_iscsi.c drivers/scsi/cxgbi/libcxgbi.c drivers/scsi/iscsi_tcp.c drivers/scsi/libiscsi.c drivers/scsi/qedi/qedi_main.c drivers/scsi/qla4xxx/ql4_os.c include/scsi/libiscsi.h Note: it is not clear to me how the qla4xxx driver can work without this patch since it uses the scsi_cmnd::SCp.ptr member for two different purposes: - The qla4xxx driver uses this member to store a struct srb pointer. - libiscsi uses this member to store a struct iscsi_task pointer. Cc: Lee Duncan Cc: Chris Leech Cc: Sagi Grimberg Cc: Hannes Reinecke Cc: Himanshu Madhani Cc: Nilesh Javali Cc: Manish Rangankar Cc: Karen Xie Cc: Ketan Mukadam Signed-off-by: Bart Van Assche iscsi Reviewed-by: Lee Duncan Reviewed-by: Hannes Reinecke Reviewed-by: Himanshu Madhani --- drivers/infiniband/ulp/iser/iscsi_iser.c | 1 + drivers/scsi/be2iscsi/be_main.c | 3 ++- drivers/scsi/bnx2i/bnx2i_iscsi.c | 1 + drivers/scsi/cxgbi/cxgb3i/cxgb3i.c | 1 + drivers/scsi/cxgbi/cxgb4i/cxgb4i.c | 1 + drivers/scsi/iscsi_tcp.c | 1 + drivers/scsi/libiscsi.c | 20 ++++++++++---------- drivers/scsi/qedi/qedi_fw.c | 4 ++-- drivers/scsi/qedi/qedi_iscsi.c | 1 + drivers/scsi/qla4xxx/ql4_def.h | 16 +++++++++++++--- drivers/scsi/qla4xxx/ql4_os.c | 13 +++++++------ include/scsi/libiscsi.h | 12 ++++++++++++ 12 files changed, 52 insertions(+), 22 deletions(-) diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c b/drivers/infiniband/ulp/iser/iscsi_iser.c index 07e47021a71f..f8d0bab4424c 100644 --- a/drivers/infiniband/ulp/iser/iscsi_iser.c +++ b/drivers/infiniband/ulp/iser/iscsi_iser.c @@ -971,6 +971,7 @@ static struct scsi_host_template iscsi_iser_sht = { .proc_name = "iscsi_iser", .this_id = -1, .track_queue_depth = 1, + .cmd_size = sizeof(struct iscsi_cmd), }; static struct iscsi_transport iscsi_iser_transport = { diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c index ab55681145f8..3bb0adefbe06 100644 --- a/drivers/scsi/be2iscsi/be_main.c +++ b/drivers/scsi/be2iscsi/be_main.c @@ -218,7 +218,7 @@ static char const *cqe_desc[] = { static int beiscsi_eh_abort(struct scsi_cmnd *sc) { - struct iscsi_task *abrt_task = (struct iscsi_task *)sc->SCp.ptr; + struct iscsi_task *abrt_task = iscsi_cmd(sc)->task; struct iscsi_cls_session *cls_session; struct beiscsi_io_task *abrt_io_task; struct beiscsi_conn *beiscsi_conn; @@ -403,6 +403,7 @@ static struct scsi_host_template beiscsi_sht = { .cmd_per_lun = BEISCSI_CMD_PER_LUN, .vendor_id = SCSI_NL_VID_TYPE_PCI | BE_VENDOR_ID, .track_queue_depth = 1, + .cmd_size = sizeof(struct iscsi_cmd), }; static struct scsi_transport_template *beiscsi_scsi_transport; diff --git a/drivers/scsi/bnx2i/bnx2i_iscsi.c b/drivers/scsi/bnx2i/bnx2i_iscsi.c index e21b053b4f3e..fe86fd61a995 100644 --- a/drivers/scsi/bnx2i/bnx2i_iscsi.c +++ b/drivers/scsi/bnx2i/bnx2i_iscsi.c @@ -2268,6 +2268,7 @@ static struct scsi_host_template bnx2i_host_template = { .sg_tablesize = ISCSI_MAX_BDS_PER_CMD, .shost_groups = bnx2i_dev_groups, .track_queue_depth = 1, + .cmd_size = sizeof(struct iscsi_cmd), }; struct iscsi_transport bnx2i_iscsi_transport = { diff --git a/drivers/scsi/cxgbi/cxgb3i/cxgb3i.c b/drivers/scsi/cxgbi/cxgb3i/cxgb3i.c index f949a4e00783..ff9d4287937a 100644 --- a/drivers/scsi/cxgbi/cxgb3i/cxgb3i.c +++ b/drivers/scsi/cxgbi/cxgb3i/cxgb3i.c @@ -98,6 +98,7 @@ static struct scsi_host_template cxgb3i_host_template = { .dma_boundary = PAGE_SIZE - 1, .this_id = -1, .track_queue_depth = 1, + .cmd_size = sizeof(struct iscsi_cmd), }; static struct iscsi_transport cxgb3i_iscsi_transport = { diff --git a/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c b/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c index efb3e2b3398e..53d91bf9c12a 100644 --- a/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c +++ b/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c @@ -116,6 +116,7 @@ static struct scsi_host_template cxgb4i_host_template = { .dma_boundary = PAGE_SIZE - 1, .this_id = -1, .track_queue_depth = 1, + .cmd_size = sizeof(struct iscsi_cmd), }; static struct iscsi_transport cxgb4i_iscsi_transport = { diff --git a/drivers/scsi/iscsi_tcp.c b/drivers/scsi/iscsi_tcp.c index 1bc37593c88f..9fee70d6434a 100644 --- a/drivers/scsi/iscsi_tcp.c +++ b/drivers/scsi/iscsi_tcp.c @@ -1007,6 +1007,7 @@ static struct scsi_host_template iscsi_sw_tcp_sht = { .proc_name = "iscsi_tcp", .this_id = -1, .track_queue_depth = 1, + .cmd_size = sizeof(struct iscsi_cmd), }; static struct iscsi_transport iscsi_sw_tcp_transport = { diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c index 059dae8909ee..d69203d19f2c 100644 --- a/drivers/scsi/libiscsi.c +++ b/drivers/scsi/libiscsi.c @@ -462,7 +462,7 @@ static void iscsi_free_task(struct iscsi_task *task) if (sc) { /* SCSI eh reuses commands to verify us */ - sc->SCp.ptr = NULL; + iscsi_cmd(sc)->task = NULL; /* * queue command may call this to free the task, so * it will decide how to return sc to scsi-ml. @@ -1344,10 +1344,10 @@ struct iscsi_task *iscsi_itt_to_ctask(struct iscsi_conn *conn, itt_t itt) if (!task || !task->sc) return NULL; - if (task->sc->SCp.phase != conn->session->age) { + if (iscsi_cmd(task->sc)->age != conn->session->age) { iscsi_session_printk(KERN_ERR, conn->session, "task's session age %d, expected %d\n", - task->sc->SCp.phase, conn->session->age); + iscsi_cmd(task->sc)->age, conn->session->age); return NULL; } @@ -1645,8 +1645,8 @@ static inline struct iscsi_task *iscsi_alloc_task(struct iscsi_conn *conn, (void *) &task, sizeof(void *))) return NULL; - sc->SCp.phase = conn->session->age; - sc->SCp.ptr = (char *) task; + iscsi_cmd(sc)->age = conn->session->age; + iscsi_cmd(sc)->task = task; refcount_set(&task->refcount, 1); task->state = ISCSI_TASK_PENDING; @@ -1683,7 +1683,7 @@ int iscsi_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *sc) struct iscsi_task *task = NULL; sc->result = 0; - sc->SCp.ptr = NULL; + iscsi_cmd(sc)->task = NULL; ihost = shost_priv(host); @@ -1997,7 +1997,7 @@ enum blk_eh_timer_return iscsi_eh_cmd_timed_out(struct scsi_cmnd *sc) spin_lock_bh(&session->frwd_lock); spin_lock(&session->back_lock); - task = (struct iscsi_task *)sc->SCp.ptr; + task = iscsi_cmd(sc)->task; if (!task) { /* * Raced with completion. Blk layer has taken ownership @@ -2260,7 +2260,7 @@ int iscsi_eh_abort(struct scsi_cmnd *sc) * if session was ISCSI_STATE_IN_RECOVERY then we may not have * got the command. */ - if (!sc->SCp.ptr) { + if (!iscsi_cmd(sc)->task) { ISCSI_DBG_EH(session, "sc never reached iscsi layer or " "it completed.\n"); spin_unlock_bh(&session->frwd_lock); @@ -2273,7 +2273,7 @@ int iscsi_eh_abort(struct scsi_cmnd *sc) * then let the host reset code handle this */ if (!session->leadconn || session->state != ISCSI_STATE_LOGGED_IN || - sc->SCp.phase != session->age) { + iscsi_cmd(sc)->age != session->age) { spin_unlock_bh(&session->frwd_lock); mutex_unlock(&session->eh_mutex); ISCSI_DBG_EH(session, "failing abort due to dropped " @@ -2282,7 +2282,7 @@ int iscsi_eh_abort(struct scsi_cmnd *sc) } spin_lock(&session->back_lock); - task = (struct iscsi_task *)sc->SCp.ptr; + task = iscsi_cmd(sc)->task; if (!task || !task->sc) { /* task completed before time out */ ISCSI_DBG_EH(session, "sc completed while abort in progress\n"); diff --git a/drivers/scsi/qedi/qedi_fw.c b/drivers/scsi/qedi/qedi_fw.c index 5916ed7662d5..4e99508ff95d 100644 --- a/drivers/scsi/qedi/qedi_fw.c +++ b/drivers/scsi/qedi/qedi_fw.c @@ -603,9 +603,9 @@ static void qedi_scsi_completion(struct qedi_ctx *qedi, goto error; } - if (!sc_cmd->SCp.ptr) { + if (!iscsi_cmd(sc_cmd)->task) { QEDI_WARN(&qedi->dbg_ctx, - "SCp.ptr is NULL, returned in another context.\n"); + "NULL task pointer, returned in another context.\n"); goto error; } diff --git a/drivers/scsi/qedi/qedi_iscsi.c b/drivers/scsi/qedi/qedi_iscsi.c index 282ecb4e39bb..8196f89f404e 100644 --- a/drivers/scsi/qedi/qedi_iscsi.c +++ b/drivers/scsi/qedi/qedi_iscsi.c @@ -59,6 +59,7 @@ struct scsi_host_template qedi_host_template = { .dma_boundary = QEDI_HW_DMA_BOUNDARY, .cmd_per_lun = 128, .shost_groups = qedi_shost_groups, + .cmd_size = sizeof(struct iscsi_cmd), }; static void qedi_conn_free_login_resources(struct qedi_ctx *qedi, diff --git a/drivers/scsi/qla4xxx/ql4_def.h b/drivers/scsi/qla4xxx/ql4_def.h index 69a590546bf9..5f82c8afd5e0 100644 --- a/drivers/scsi/qla4xxx/ql4_def.h +++ b/drivers/scsi/qla4xxx/ql4_def.h @@ -216,11 +216,21 @@ #define IDC_COMP_TOV 5 #define LINK_UP_COMP_TOV 30 -#define CMD_SP(Cmnd) ((Cmnd)->SCp.ptr) +/* + * Note: the data structure below does not have a struct iscsi_cmd member since + * the qla4xxx driver does not use libiscsi for SCSI I/O. + */ +struct qla4xxx_cmd_priv { + struct srb *srb; +}; + +static inline struct qla4xxx_cmd_priv *qla4xxx_cmd_priv(struct scsi_cmnd *cmd) +{ + return scsi_cmd_priv(cmd); +} /* - * SCSI Request Block structure (srb) that is placed - * on cmd->SCp location of every I/O [We have 22 bytes available] + * SCSI Request Block structure (srb) that is associated with each scsi_cmnd. */ struct srb { struct list_head list; /* (8) */ diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c index 0ae936d839f1..d64eda961412 100644 --- a/drivers/scsi/qla4xxx/ql4_os.c +++ b/drivers/scsi/qla4xxx/ql4_os.c @@ -226,6 +226,7 @@ static struct scsi_host_template qla4xxx_driver_template = { .name = DRIVER_NAME, .proc_name = DRIVER_NAME, .queuecommand = qla4xxx_queuecommand, + .cmd_size = sizeof(struct qla4xxx_cmd_priv), .eh_abort_handler = qla4xxx_eh_abort, .eh_device_reset_handler = qla4xxx_eh_device_reset, @@ -4054,7 +4055,7 @@ static struct srb* qla4xxx_get_new_srb(struct scsi_qla_host *ha, srb->ddb = ddb_entry; srb->cmd = cmd; srb->flags = 0; - CMD_SP(cmd) = (void *)srb; + qla4xxx_cmd_priv(cmd)->srb = srb; return srb; } @@ -4067,7 +4068,7 @@ static void qla4xxx_srb_free_dma(struct scsi_qla_host *ha, struct srb *srb) scsi_dma_unmap(cmd); srb->flags &= ~SRB_DMA_VALID; } - CMD_SP(cmd) = NULL; + qla4xxx_cmd_priv(cmd)->srb = NULL; } void qla4xxx_srb_compl(struct kref *ref) @@ -4640,7 +4641,7 @@ static int qla4xxx_cmd_wait(struct scsi_qla_host *ha) * the scsi/block layer is going to prevent * the tag from being released. */ - if (cmd != NULL && CMD_SP(cmd)) + if (cmd != NULL && qla4xxx_cmd_priv(cmd)->srb) break; } spin_unlock_irqrestore(&ha->hardware_lock, flags); @@ -9079,7 +9080,7 @@ struct srb *qla4xxx_del_from_active_array(struct scsi_qla_host *ha, if (!cmd) return srb; - srb = (struct srb *)CMD_SP(cmd); + srb = qla4xxx_cmd_priv(cmd)->srb; if (!srb) return srb; @@ -9121,7 +9122,7 @@ static int qla4xxx_eh_wait_on_command(struct scsi_qla_host *ha, do { /* Checking to see if its returned to OS */ - rp = (struct srb *) CMD_SP(cmd); + rp = qla4xxx_cmd_priv(cmd)->srb; if (rp == NULL) { done++; break; @@ -9215,7 +9216,7 @@ static int qla4xxx_eh_abort(struct scsi_cmnd *cmd) } spin_lock_irqsave(&ha->hardware_lock, flags); - srb = (struct srb *) CMD_SP(cmd); + srb = qla4xxx_cmd_priv(cmd)->srb; if (!srb) { spin_unlock_irqrestore(&ha->hardware_lock, flags); ql4_printk(KERN_INFO, ha, "scsi%ld:%d:%llu: Specified command has already completed.\n", diff --git a/include/scsi/libiscsi.h b/include/scsi/libiscsi.h index 4ee233e5a6ff..cb805ed9cbf1 100644 --- a/include/scsi/libiscsi.h +++ b/include/scsi/libiscsi.h @@ -19,6 +19,7 @@ #include #include #include +#include #include struct scsi_transport_template; @@ -152,6 +153,17 @@ static inline bool iscsi_task_is_completed(struct iscsi_task *task) task->state == ISCSI_TASK_ABRT_SESS_RECOV; } +/* Private data associated with struct scsi_cmnd. */ +struct iscsi_cmd { + struct iscsi_task *task; + int age; +}; + +static inline struct iscsi_cmd *iscsi_cmd(struct scsi_cmnd *cmd) +{ + return scsi_cmd_priv(cmd); +} + /* Connection's states */ enum { ISCSI_CONN_INITIAL_STAGE, From patchwork Fri Feb 11 22:32:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542293 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8C8BDC4332F for ; Fri, 11 Feb 2022 22:34:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354142AbiBKWeJ (ORCPT ); Fri, 11 Feb 2022 17:34:09 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34246 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354147AbiBKWeG (ORCPT ); Fri, 11 Feb 2022 17:34:06 -0500 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9C73AD63 for ; Fri, 11 Feb 2022 14:34:04 -0800 (PST) Received: by mail-pl1-f172.google.com with SMTP id y7so5785908plp.2 for ; Fri, 11 Feb 2022 14:34:04 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=a6urj33gaKkePqg1xUPmjUt8DwssrZsVJTG4tFiazOI=; b=Hwo5IiLarpq4+mVWO7xH+G1gSRDR4uaNZYZMQ9Qxz32mD7DzoDH5y45Par/RA4KwWm cfuzN1JOZVgiPpz4AyH8cV92oW82j/AcnYSCt5XfNgbJYjNxv9TLuAVN1S3l71IhI3zW pAENZTK9h5BkI/ur8udW74x4Vtx5v5qPFOnJBQDRCK3oYyqj31gUOXwh8DXCzvTztwMT iwhp36ZG/ifqaTL3lEquEH81vhPE+SWJB5g4wUTxOhgqas9yM6R5+7otiIxzSLmPRExf 5eHjZI1wacg6G+VeKlZj4FZQa1tWtE3xIPMHKFQYK8NOJfbKqYJRTVaW4EHjiBb0Ubzi W1+w== X-Gm-Message-State: AOAM531eyVqIarbCQZiK2i+R4X86DQQVFosB99DFLH4Gn1S90UqA/oV8 sQZZ7g+IgYe1vpvsCdhhZgwOQHsb2Q67rg== X-Google-Smtp-Source: ABdhPJzQv0cBJBIW3xtBEGAxj4mas9ib4yp8FQKW7/7cydVuzk6l6pabB0VQ0bLfR4qJsNIz6GxQmg== X-Received: by 2002:a17:90b:4ac4:: with SMTP id mh4mr2552044pjb.89.1644618844084; Fri, 11 Feb 2022 14:34:04 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.34.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:34:03 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Johannes Thumshirn , Hannes Reinecke , Himanshu Madhani , "James E.J. Bottomley" Subject: [PATCH v3 27/48] scsi: initio: Stop using the SCSI pointer Date: Fri, 11 Feb 2022 14:32:26 -0800 Message-Id: <20220211223247.14369-28-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Set .cmd_size in the SCSI host template instead of using the SCSI pointer from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Reviewed-by: Johannes Thumshirn Reviewed-by: Hannes Reinecke Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/scsi/initio.c | 14 ++++++++------ drivers/scsi/initio.h | 9 +++++++++ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/drivers/scsi/initio.c b/drivers/scsi/initio.c index 5f96ac47d7fd..f585d6e5fab9 100644 --- a/drivers/scsi/initio.c +++ b/drivers/scsi/initio.c @@ -2553,7 +2553,7 @@ static void initio_build_scb(struct initio_host * host, struct scsi_ctrl_blk * c SENSE_SIZE, DMA_FROM_DEVICE); cblk->senseptr = (u32)dma_addr; cblk->senselen = SENSE_SIZE; - cmnd->SCp.ptr = (char *)(unsigned long)dma_addr; + initio_priv(cmnd)->sense_dma_addr = dma_addr; cblk->cdblen = cmnd->cmd_len; /* Clear the returned status */ @@ -2577,7 +2577,7 @@ static void initio_build_scb(struct initio_host * host, struct scsi_ctrl_blk * c sizeof(struct sg_entry) * TOTAL_SG_ENTRY, DMA_BIDIRECTIONAL); cblk->bufptr = (u32)dma_addr; - cmnd->SCp.dma_handle = dma_addr; + initio_priv(cmnd)->sglist_dma_addr = dma_addr; cblk->sglen = nseg; @@ -2704,16 +2704,17 @@ static int i91u_biosparam(struct scsi_device *sdev, struct block_device *dev, static void i91u_unmap_scb(struct pci_dev *pci_dev, struct scsi_cmnd *cmnd) { /* auto sense buffer */ - if (cmnd->SCp.ptr) { + if (initio_priv(cmnd)->sense_dma_addr) { dma_unmap_single(&pci_dev->dev, - (dma_addr_t)((unsigned long)cmnd->SCp.ptr), + initio_priv(cmnd)->sense_dma_addr, SENSE_SIZE, DMA_FROM_DEVICE); - cmnd->SCp.ptr = NULL; + initio_priv(cmnd)->sense_dma_addr = 0; } /* request buffer */ if (scsi_sg_count(cmnd)) { - dma_unmap_single(&pci_dev->dev, cmnd->SCp.dma_handle, + dma_unmap_single(&pci_dev->dev, + initio_priv(cmnd)->sglist_dma_addr, sizeof(struct sg_entry) * TOTAL_SG_ENTRY, DMA_BIDIRECTIONAL); @@ -2796,6 +2797,7 @@ static struct scsi_host_template initio_template = { .can_queue = MAX_TARGETS * i91u_MAXQUEUE, .this_id = 1, .sg_tablesize = SG_ALL, + .cmd_size = sizeof(struct initio_cmd_priv), }; static int initio_probe_one(struct pci_dev *pdev, diff --git a/drivers/scsi/initio.h b/drivers/scsi/initio.h index 9fd010cf1f8a..7c9741552654 100644 --- a/drivers/scsi/initio.h +++ b/drivers/scsi/initio.h @@ -640,3 +640,12 @@ typedef struct _NVRAM { #define SCSI_RESET_HOST_RESET 0x200 #define SCSI_RESET_ACTION 0xff +struct initio_cmd_priv { + dma_addr_t sense_dma_addr; + dma_addr_t sglist_dma_addr; +}; + +static inline struct initio_cmd_priv *initio_priv(struct scsi_cmnd *cmd) +{ + return scsi_cmd_priv(cmd); +} From patchwork Fri Feb 11 22:32:27 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542017 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B44CEC433F5 for ; Fri, 11 Feb 2022 22:34:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354153AbiBKWeW (ORCPT ); Fri, 11 Feb 2022 17:34:22 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34278 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354144AbiBKWeJ (ORCPT ); Fri, 11 Feb 2022 17:34:09 -0500 Received: from mail-pl1-f174.google.com (mail-pl1-f174.google.com [209.85.214.174]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A2FBED4E for ; Fri, 11 Feb 2022 14:34:07 -0800 (PST) Received: by mail-pl1-f174.google.com with SMTP id p6so5583094plf.10 for ; Fri, 11 Feb 2022 14:34:07 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rMK1qgwbo+78ZTiqUHXTaEME0nofKRNGsEdar6bpdH8=; b=e07RaCDAL7xkQSRiXJG3XWJoN74EXkMmMP9/bnmXS5diYt1E0OzCZ4Us5QGhF/FU/J ymDQZH+KzOm3C90vT4ETgWKGwx82uaRnNVWC3is36315WCvYg7gG0wHltarlHuYgwNAU uJkLE8nuaUCAjJDmiRoQ8Fmk8fuynUe74u6y0zSk8X4UosI55bmwmyngvRwdOTOZrRDZ xltbsGg6jBowyGKbNB8c4p2mhYWxmXmCOr2Poj8A/F/8P+Y2Ga4l1R3U0BWofQFZd3O1 nDi5btrtfjJQfYp/VTJFZZlxjsL8oBQn1vwS2QXTKS1KhkFHJEZIMh6RM9KPnzIALBZp SFVw== X-Gm-Message-State: AOAM532S2btRydeJ7rQujFLK+IxEmOrwaFIpzxkeFJCTNnTYtuQ5xE59 La+QeffDlx4+3TnP5m1+RI0= X-Google-Smtp-Source: ABdhPJxGI9TAPf5unMQE4XkCmHrOxdii6Nc/tx/b/nEE3B9mhj59g/xWiKlNsDLRoFaZKXdq4U91kA== X-Received: by 2002:a17:902:8c85:: with SMTP id t5mr3517126plo.168.1644618846964; Fri, 11 Feb 2022 14:34:06 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.34.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:34:05 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Hannes Reinecke , Saurav Kashyap , Javed Hasan , Himanshu Madhani , GR-QLogic-Storage-Upstream@marvell.com, "James E.J. Bottomley" , Satish Kharat , Sesidhar Baddela , Karan Tilak Kumar Subject: [PATCH v3 28/48] scsi: libfc: Stop using the SCSI pointer Date: Fri, 11 Feb 2022 14:32:27 -0800 Message-Id: <20220211223247.14369-29-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Move the fc_fcp_pkt pointer, the residual length and the SCSI status into the new data structure libfc_cmd_priv. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. The libfc users have been identified as follows: $ git grep -lw 'libfc_host_alloc' | grep -v /libfc drivers/scsi/bnx2fc/bnx2fc_fcoe.c drivers/scsi/fcoe/fcoe.c drivers/scsi/fnic/fnic_main.c drivers/scsi/qedf/qedf_main.c Cc: Hannes Reinecke Cc: Saurav Kashyap Cc: Javed Hasan Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche Signed-off-by: Bart Van Assche Signed-off-by: Bart Van Assche --- drivers/scsi/bnx2fc/bnx2fc.h | 10 ++++++++-- drivers/scsi/bnx2fc/bnx2fc_fcoe.c | 1 + drivers/scsi/bnx2fc/bnx2fc_io.c | 24 ++++++++++++------------ drivers/scsi/fcoe/fcoe.c | 1 + drivers/scsi/fnic/fnic.h | 1 + drivers/scsi/libfc/fc_fcp.c | 26 +++++++++++--------------- drivers/scsi/qedf/qedf.h | 11 ++++++++++- drivers/scsi/qedf/qedf_io.c | 24 ++++++++++++------------ drivers/scsi/qedf/qedf_main.c | 3 ++- include/scsi/libfc.h | 11 +++++++++++ 10 files changed, 69 insertions(+), 43 deletions(-) diff --git a/drivers/scsi/bnx2fc/bnx2fc.h b/drivers/scsi/bnx2fc/bnx2fc.h index b4cea8b06ea1..08deed26c51e 100644 --- a/drivers/scsi/bnx2fc/bnx2fc.h +++ b/drivers/scsi/bnx2fc/bnx2fc.h @@ -137,8 +137,6 @@ #define BNX2FC_FW_TIMEOUT (3 * HZ) #define PORT_MAX 2 -#define CMD_SCSI_STATUS(Cmnd) ((Cmnd)->SCp.Status) - /* FC FCP Status */ #define FC_GOOD 0 @@ -493,7 +491,15 @@ struct bnx2fc_unsol_els { struct work_struct unsol_els_work; }; +struct bnx2fc_priv { + struct libfc_cmd_priv libfc_data; /* must be the first member */ + struct bnx2fc_cmd *io_req; +}; +static inline struct bnx2fc_priv *bnx2fc_priv(struct scsi_cmnd *cmd) +{ + return scsi_cmd_priv(cmd); +} struct bnx2fc_cmd *bnx2fc_cmd_alloc(struct bnx2fc_rport *tgt); struct bnx2fc_cmd *bnx2fc_elstm_alloc(struct bnx2fc_rport *tgt, int type); diff --git a/drivers/scsi/bnx2fc/bnx2fc_fcoe.c b/drivers/scsi/bnx2fc/bnx2fc_fcoe.c index a826456c6075..2d5c71967ee3 100644 --- a/drivers/scsi/bnx2fc/bnx2fc_fcoe.c +++ b/drivers/scsi/bnx2fc/bnx2fc_fcoe.c @@ -2975,6 +2975,7 @@ static struct scsi_host_template bnx2fc_shost_template = { .track_queue_depth = 1, .slave_configure = bnx2fc_slave_configure, .shost_groups = bnx2fc_host_groups, + .cmd_size = sizeof(struct bnx2fc_priv), }; static struct libfc_function_template bnx2fc_libfc_fcn_templ = { diff --git a/drivers/scsi/bnx2fc/bnx2fc_io.c b/drivers/scsi/bnx2fc/bnx2fc_io.c index b9114113ee73..731584d0bc6d 100644 --- a/drivers/scsi/bnx2fc/bnx2fc_io.c +++ b/drivers/scsi/bnx2fc/bnx2fc_io.c @@ -204,7 +204,7 @@ static void bnx2fc_scsi_done(struct bnx2fc_cmd *io_req, int err_code) sc_cmd, host_byte(sc_cmd->result), sc_cmd->retries, sc_cmd->allowed); scsi_set_resid(sc_cmd, scsi_bufflen(sc_cmd)); - sc_cmd->SCp.ptr = NULL; + bnx2fc_priv(sc_cmd)->io_req = NULL; scsi_done(sc_cmd); } @@ -765,7 +765,7 @@ static int bnx2fc_initiate_tmf(struct scsi_cmnd *sc_cmd, u8 tm_flags) task = &(task_page[index]); bnx2fc_init_mp_task(io_req, task); - sc_cmd->SCp.ptr = (char *)io_req; + bnx2fc_priv(sc_cmd)->io_req = io_req; /* Obtain free SQ entry */ spin_lock_bh(&tgt->tgt_lock); @@ -1147,7 +1147,7 @@ int bnx2fc_eh_abort(struct scsi_cmnd *sc_cmd) BNX2FC_TGT_DBG(tgt, "Entered bnx2fc_eh_abort\n"); spin_lock_bh(&tgt->tgt_lock); - io_req = (struct bnx2fc_cmd *)sc_cmd->SCp.ptr; + io_req = bnx2fc_priv(sc_cmd)->io_req; if (!io_req) { /* Command might have just completed */ printk(KERN_ERR PFX "eh_abort: io_req is NULL\n"); @@ -1572,8 +1572,8 @@ void bnx2fc_process_tm_compl(struct bnx2fc_cmd *io_req, printk(KERN_ERR PFX "tmf's fc_hdr r_ctl = 0x%x\n", fc_hdr->fh_r_ctl); } - if (!sc_cmd->SCp.ptr) { - printk(KERN_ERR PFX "tm_compl: SCp.ptr is NULL\n"); + if (!bnx2fc_priv(sc_cmd)->io_req) { + printk(KERN_ERR PFX "tm_compl: io_req is NULL\n"); return; } switch (io_req->fcp_status) { @@ -1609,7 +1609,7 @@ void bnx2fc_process_tm_compl(struct bnx2fc_cmd *io_req, return; } - sc_cmd->SCp.ptr = NULL; + bnx2fc_priv(sc_cmd)->io_req = NULL; scsi_done(sc_cmd); kref_put(&io_req->refcount, bnx2fc_cmd_release); @@ -1773,8 +1773,8 @@ static void bnx2fc_parse_fcp_rsp(struct bnx2fc_cmd *io_req, io_req->fcp_resid = fcp_rsp->fcp_resid; io_req->scsi_comp_flags = rsp_flags; - CMD_SCSI_STATUS(sc_cmd) = io_req->cdb_status = - fcp_rsp->scsi_status_code; + bnx2fc_priv(sc_cmd)->libfc_data.status = io_req->cdb_status = + fcp_rsp->scsi_status_code; /* Fetch fcp_rsp_info and fcp_sns_info if available */ if (num_rq) { @@ -1946,8 +1946,8 @@ void bnx2fc_process_scsi_cmd_compl(struct bnx2fc_cmd *io_req, /* parse fcp_rsp and obtain sense data from RQ if available */ bnx2fc_parse_fcp_rsp(io_req, fcp_rsp, num_rq, rq_data); - if (!sc_cmd->SCp.ptr) { - printk(KERN_ERR PFX "SCp.ptr is NULL\n"); + if (!bnx2fc_priv(sc_cmd)->io_req) { + printk(KERN_ERR PFX "io_req is NULL\n"); return; } @@ -2018,7 +2018,7 @@ void bnx2fc_process_scsi_cmd_compl(struct bnx2fc_cmd *io_req, io_req->fcp_status); break; } - sc_cmd->SCp.ptr = NULL; + bnx2fc_priv(sc_cmd)->io_req = NULL; scsi_done(sc_cmd); kref_put(&io_req->refcount, bnx2fc_cmd_release); } @@ -2044,7 +2044,7 @@ int bnx2fc_post_io_req(struct bnx2fc_rport *tgt, io_req->port = port; io_req->tgt = tgt; io_req->data_xfer_len = scsi_bufflen(sc_cmd); - sc_cmd->SCp.ptr = (char *)io_req; + bnx2fc_priv(sc_cmd)->io_req = io_req; stats = per_cpu_ptr(lport->stats, get_cpu()); if (sc_cmd->sc_data_direction == DMA_FROM_DEVICE) { diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c index 6415f88738ad..44ca6110213c 100644 --- a/drivers/scsi/fcoe/fcoe.c +++ b/drivers/scsi/fcoe/fcoe.c @@ -277,6 +277,7 @@ static struct scsi_host_template fcoe_shost_template = { .sg_tablesize = SG_ALL, .max_sectors = 0xffff, .track_queue_depth = 1, + .cmd_size = sizeof(struct libfc_cmd_priv), }; /** diff --git a/drivers/scsi/fnic/fnic.h b/drivers/scsi/fnic/fnic.h index aa07189fb5fb..6ab444650f02 100644 --- a/drivers/scsi/fnic/fnic.h +++ b/drivers/scsi/fnic/fnic.h @@ -93,6 +93,7 @@ * These fields are locked by the hashed io_req_lock. */ struct fnic_cmd_priv { + struct libfc_cmd_priv libfc_data; /* must be the first member */ struct fnic_io_req *io_req; enum fnic_ioreq_state state; u32 flags; diff --git a/drivers/scsi/libfc/fc_fcp.c b/drivers/scsi/libfc/fc_fcp.c index 871b11edb586..bce90eb56c9c 100644 --- a/drivers/scsi/libfc/fc_fcp.c +++ b/drivers/scsi/libfc/fc_fcp.c @@ -45,14 +45,10 @@ static struct kmem_cache *scsi_pkt_cachep; #define FC_SRB_READ (1 << 1) #define FC_SRB_WRITE (1 << 0) -/* - * The SCp.ptr should be tested and set under the scsi_pkt_queue lock - */ -#define CMD_SP(Cmnd) ((struct fc_fcp_pkt *)(Cmnd)->SCp.ptr) -#define CMD_ENTRY_STATUS(Cmnd) ((Cmnd)->SCp.have_data_in) -#define CMD_COMPL_STATUS(Cmnd) ((Cmnd)->SCp.this_residual) -#define CMD_SCSI_STATUS(Cmnd) ((Cmnd)->SCp.Status) -#define CMD_RESID_LEN(Cmnd) ((Cmnd)->SCp.buffers_residual) +static struct libfc_cmd_priv *libfc_priv(struct scsi_cmnd *cmd) +{ + return scsi_cmd_priv(cmd); +} /** * struct fc_fcp_internal - FCP layer internal data @@ -1137,7 +1133,7 @@ static int fc_fcp_pkt_send(struct fc_lport *lport, struct fc_fcp_pkt *fsp) unsigned long flags; int rc; - fsp->cmd->SCp.ptr = (char *)fsp; + libfc_priv(fsp->cmd)->fsp = fsp; fsp->cdb_cmd.fc_dl = htonl(fsp->data_len); fsp->cdb_cmd.fc_flags = fsp->req_flags & ~FCP_CFL_LEN_MASK; @@ -1150,7 +1146,7 @@ static int fc_fcp_pkt_send(struct fc_lport *lport, struct fc_fcp_pkt *fsp) rc = lport->tt.fcp_cmd_send(lport, fsp, fc_fcp_recv); if (unlikely(rc)) { spin_lock_irqsave(&si->scsi_queue_lock, flags); - fsp->cmd->SCp.ptr = NULL; + libfc_priv(fsp->cmd)->fsp = NULL; list_del(&fsp->list); spin_unlock_irqrestore(&si->scsi_queue_lock, flags); } @@ -1983,7 +1979,7 @@ static void fc_io_compl(struct fc_fcp_pkt *fsp) fc_fcp_can_queue_ramp_up(lport); sc_cmd = fsp->cmd; - CMD_SCSI_STATUS(sc_cmd) = fsp->cdb_status; + libfc_priv(sc_cmd)->status = fsp->cdb_status; switch (fsp->status_code) { case FC_COMPLETE: if (fsp->cdb_status == 0) { @@ -1992,7 +1988,7 @@ static void fc_io_compl(struct fc_fcp_pkt *fsp) */ sc_cmd->result = DID_OK << 16; if (fsp->scsi_resid) - CMD_RESID_LEN(sc_cmd) = fsp->scsi_resid; + libfc_priv(sc_cmd)->resid_len = fsp->scsi_resid; } else { /* * transport level I/O was ok but scsi @@ -2025,7 +2021,7 @@ static void fc_io_compl(struct fc_fcp_pkt *fsp) */ FC_FCP_DBG(fsp, "Returning DID_ERROR to scsi-ml " "due to FC_DATA_UNDRUN (scsi)\n"); - CMD_RESID_LEN(sc_cmd) = fsp->scsi_resid; + libfc_priv(sc_cmd)->resid_len = fsp->scsi_resid; sc_cmd->result = (DID_ERROR << 16) | fsp->cdb_status; } break; @@ -2085,7 +2081,7 @@ static void fc_io_compl(struct fc_fcp_pkt *fsp) spin_lock_irqsave(&si->scsi_queue_lock, flags); list_del(&fsp->list); - sc_cmd->SCp.ptr = NULL; + libfc_priv(sc_cmd)->fsp = NULL; spin_unlock_irqrestore(&si->scsi_queue_lock, flags); scsi_done(sc_cmd); @@ -2121,7 +2117,7 @@ int fc_eh_abort(struct scsi_cmnd *sc_cmd) si = fc_get_scsi_internal(lport); spin_lock_irqsave(&si->scsi_queue_lock, flags); - fsp = CMD_SP(sc_cmd); + fsp = libfc_priv(sc_cmd)->fsp; if (!fsp) { /* command completed while scsi eh was setting up */ spin_unlock_irqrestore(&si->scsi_queue_lock, flags); diff --git a/drivers/scsi/qedf/qedf.h b/drivers/scsi/qedf/qedf.h index ca987451b17e..abb0c26da36e 100644 --- a/drivers/scsi/qedf/qedf.h +++ b/drivers/scsi/qedf/qedf.h @@ -91,7 +91,6 @@ enum qedf_ioreq_event { #define FC_GOOD 0 #define FCOE_FCP_RSP_FLAGS_FCP_RESID_OVER (0x1<<2) #define FCOE_FCP_RSP_FLAGS_FCP_RESID_UNDER (0x1<<3) -#define CMD_SCSI_STATUS(Cmnd) ((Cmnd)->SCp.Status) #define FCOE_FCP_RSP_FLAGS_FCP_RSP_LEN_VALID (0x1<<0) #define FCOE_FCP_RSP_FLAGS_FCP_SNS_LEN_VALID (0x1<<1) struct qedf_ioreq { @@ -189,6 +188,16 @@ struct qedf_ioreq { unsigned int alloc; }; +struct qedf_cmd_priv { + struct libfc_cmd_priv libfc_data; /* must be the first member */ + struct qedf_ioreq *io_req; +}; + +static inline struct qedf_cmd_priv *qedf_priv(struct scsi_cmnd *cmd) +{ + return scsi_cmd_priv(cmd); +} + extern struct workqueue_struct *qedf_io_wq; struct qedf_rport { diff --git a/drivers/scsi/qedf/qedf_io.c b/drivers/scsi/qedf/qedf_io.c index fab43dabe5b3..eddbe648ce7e 100644 --- a/drivers/scsi/qedf/qedf_io.c +++ b/drivers/scsi/qedf/qedf_io.c @@ -857,7 +857,7 @@ int qedf_post_io_req(struct qedf_rport *fcport, struct qedf_ioreq *io_req) /* Initialize rest of io_req fileds */ io_req->data_xfer_len = scsi_bufflen(sc_cmd); - sc_cmd->SCp.ptr = (char *)io_req; + qedf_priv(sc_cmd)->io_req = io_req; io_req->sge_type = QEDF_IOREQ_FAST_SGE; /* Assume fast SGL by default */ /* Record which cpu this request is associated with */ @@ -1065,7 +1065,7 @@ static void qedf_parse_fcp_rsp(struct qedf_ioreq *io_req, io_req->fcp_resid = fcp_rsp->fcp_resid; io_req->scsi_comp_flags = rsp_flags; - CMD_SCSI_STATUS(sc_cmd) = io_req->cdb_status = + qedf_priv(sc_cmd)->libfc_data.status = io_req->cdb_status = fcp_rsp->scsi_status_code; if (rsp_flags & @@ -1150,9 +1150,9 @@ void qedf_scsi_completion(struct qedf_ctx *qedf, struct fcoe_cqe *cqe, return; } - if (!sc_cmd->SCp.ptr) { - QEDF_WARN(&(qedf->dbg_ctx), "SCp.ptr is NULL, returned in " - "another context.\n"); + if (!qedf_priv(sc_cmd)->io_req) { + QEDF_WARN(&(qedf->dbg_ctx), + "io_req is NULL, returned in another context.\n"); return; } @@ -1312,7 +1312,7 @@ void qedf_scsi_completion(struct qedf_ctx *qedf, struct fcoe_cqe *cqe, clear_bit(QEDF_CMD_OUTSTANDING, &io_req->flags); io_req->sc_cmd = NULL; - sc_cmd->SCp.ptr = NULL; + qedf_priv(sc_cmd)->io_req = NULL; scsi_done(sc_cmd); kref_put(&io_req->refcount, qedf_release_cmd); } @@ -1354,9 +1354,9 @@ void qedf_scsi_done(struct qedf_ctx *qedf, struct qedf_ioreq *io_req, goto bad_scsi_ptr; } - if (!sc_cmd->SCp.ptr) { - QEDF_WARN(&(qedf->dbg_ctx), "SCp.ptr is NULL, returned in " - "another context.\n"); + if (!qedf_priv(sc_cmd)->io_req) { + QEDF_WARN(&(qedf->dbg_ctx), + "io_req is NULL, returned in another context.\n"); return; } @@ -1409,7 +1409,7 @@ void qedf_scsi_done(struct qedf_ctx *qedf, struct qedf_ioreq *io_req, qedf_trace_io(io_req->fcport, io_req, QEDF_IO_TRACE_RSP); io_req->sc_cmd = NULL; - sc_cmd->SCp.ptr = NULL; + qedf_priv(sc_cmd)->io_req = NULL; scsi_done(sc_cmd); kref_put(&io_req->refcount, qedf_release_cmd); return; @@ -2433,8 +2433,8 @@ int qedf_initiate_tmf(struct scsi_cmnd *sc_cmd, u8 tm_flags) (tm_flags == FCP_TMF_TGT_RESET) ? "TARGET RESET" : "LUN RESET"); - if (sc_cmd->SCp.ptr) { - io_req = (struct qedf_ioreq *)sc_cmd->SCp.ptr; + if (qedf_priv(sc_cmd)->io_req) { + io_req = qedf_priv(sc_cmd)->io_req; ref_cnt = kref_read(&io_req->refcount); QEDF_ERR(NULL, "orig io_req = %p xid = 0x%x ref_cnt = %d.\n", diff --git a/drivers/scsi/qedf/qedf_main.c b/drivers/scsi/qedf/qedf_main.c index 6ad28bc8e948..18dc68d577b6 100644 --- a/drivers/scsi/qedf/qedf_main.c +++ b/drivers/scsi/qedf/qedf_main.c @@ -740,7 +740,7 @@ static int qedf_eh_abort(struct scsi_cmnd *sc_cmd) } - io_req = (struct qedf_ioreq *)sc_cmd->SCp.ptr; + io_req = qedf_priv(sc_cmd)->io_req; if (!io_req) { QEDF_ERR(&qedf->dbg_ctx, "sc_cmd not queued with lld, sc_cmd=%p op=0x%02x, port_id=%06x\n", @@ -996,6 +996,7 @@ static struct scsi_host_template qedf_host_template = { .sg_tablesize = QEDF_MAX_BDS_PER_CMD, .can_queue = FCOE_PARAMS_NUM_TASKS, .change_queue_depth = scsi_change_queue_depth, + .cmd_size = sizeof(struct qedf_cmd_priv), }; static int qedf_get_paged_crc_eof(struct sk_buff *skb, int tlen) diff --git a/include/scsi/libfc.h b/include/scsi/libfc.h index eeb8d689ff6b..5ae6d504e835 100644 --- a/include/scsi/libfc.h +++ b/include/scsi/libfc.h @@ -351,6 +351,15 @@ struct fc_fcp_pkt { struct completion tm_done; } ____cacheline_aligned_in_smp; +/* + * @fsp should be tested and set under the scsi_pkt_queue lock + */ +struct libfc_cmd_priv { + struct fc_fcp_pkt *fsp; + u32 resid_len; + u8 status; +}; + /* * Structure and function definitions for managing Fibre Channel Exchanges * and Sequences @@ -862,6 +871,8 @@ libfc_host_alloc(struct scsi_host_template *sht, int priv_size) struct fc_lport *lport; struct Scsi_Host *shost; + WARN_ON_ONCE(sht->cmd_size < sizeof(struct libfc_cmd_priv)); + shost = scsi_host_alloc(sht, sizeof(*lport) + priv_size); if (!shost) return NULL; From patchwork Fri Feb 11 22:32:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542292 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 694FCC433EF for ; Fri, 11 Feb 2022 22:34:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348124AbiBKWeW (ORCPT ); Fri, 11 Feb 2022 17:34:22 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34290 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354146AbiBKWeK (ORCPT ); Fri, 11 Feb 2022 17:34:10 -0500 Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2B3ABD52 for ; Fri, 11 Feb 2022 14:34:09 -0800 (PST) Received: by mail-pl1-f175.google.com with SMTP id c3so5785422pls.5 for ; Fri, 11 Feb 2022 14:34:09 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rnPGc2HmiwKa1PtCl2I0Ff3xuRZvI73UsIWDdkAtGSY=; b=NLF1T4F50etvyowCdq5UWGZNpApFgib9bRIX45k27fxvlK1VyH805m1nEFoWoDQivT biM7mnxVBMURKoOwBJPw3l//MihC2Q57tbhBrh+6jgqkWjPvbxpGKI8JzGj2pvlUcTnv C3FkrpwGH+8NbZnTEzCXHLbQPv3SKa1gGM6cjaHNKK9ec9+t0HHvGJBgHaRZJeYTNIKw ozl4mrB3HrLbYbNOKnHUcI0MVISy8FRpf15DoTNTJ5Pi1UqCyY1JgtMUDVsEAZlgxqNe lI5aJ4kFIBPSp1XiitA71YQuYJBwSM1ELkT5TmHRfT4mNIIy20LEqlB35WGAwmu0byj3 Ybsw== X-Gm-Message-State: AOAM531TjlXUhpi2P3BqXYB8FVS8qUhfMiq+AYVw4b9yqLPgZvmMuJK0 g6Enqds7bkWNslnTFKjEzOGrW08CROdfz8ct X-Google-Smtp-Source: ABdhPJz3pLJJL9KprPsyt7e+cM06XFrBXNcqmfxZEFSSiId39bzBfqxYkjx44X8C5wj7Ob9Xk9hb3g== X-Received: by 2002:a17:90b:3908:: with SMTP id ob8mr2576000pjb.73.1644618848585; Fri, 11 Feb 2022 14:34:08 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.34.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:34:08 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Benjamin Herrenschmidt , Johannes Thumshirn , Hannes Reinecke , Himanshu Madhani , "James E.J. Bottomley" Subject: [PATCH v3 29/48] scsi: mac53c94: Fix a set-but-not-used compiler warning Date: Fri, 11 Feb 2022 14:32:28 -0800 Message-Id: <20220211223247.14369-30-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Fix the following compiler warning: drivers/scsi/mac53c94.c: In function 'mac53c94_init': drivers/scsi/mac53c94.c:128:13: warning: variable 'x' set but not used [-Wunused-but-set-variable] 128 | int x; Cc: Benjamin Herrenschmidt Reviewed-by: Johannes Thumshirn Reviewed-by: Hannes Reinecke Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/scsi/mac53c94.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/scsi/mac53c94.c b/drivers/scsi/mac53c94.c index 3976a18f6333..afa08309de36 100644 --- a/drivers/scsi/mac53c94.c +++ b/drivers/scsi/mac53c94.c @@ -125,7 +125,6 @@ static void mac53c94_init(struct fsc_state *state) { struct mac53c94_regs __iomem *regs = state->regs; struct dbdma_regs __iomem *dma = state->dma; - int x; writeb(state->host->this_id | CF1_PAR_ENABLE, ®s->config1); writeb(TIMO_VAL(250), ®s->sel_timeout); /* 250ms */ @@ -134,7 +133,7 @@ static void mac53c94_init(struct fsc_state *state) writeb(0, ®s->config3); writeb(0, ®s->sync_period); writeb(0, ®s->sync_offset); - x = readb(®s->interrupt); + (void)readb(®s->interrupt); writel((RUN|PAUSE|FLUSH|WAKE) << 16, &dma->control); } From patchwork Fri Feb 11 22:32:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542016 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B2693C433FE for ; Fri, 11 Feb 2022 22:34:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354074AbiBKWeX (ORCPT ); Fri, 11 Feb 2022 17:34:23 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34308 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354147AbiBKWeM (ORCPT ); Fri, 11 Feb 2022 17:34:12 -0500 Received: from mail-pj1-f48.google.com (mail-pj1-f48.google.com [209.85.216.48]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0B1C0D54 for ; Fri, 11 Feb 2022 14:34:10 -0800 (PST) Received: by mail-pj1-f48.google.com with SMTP id t4-20020a17090a510400b001b8c4a6cd5dso10098906pjh.5 for ; Fri, 11 Feb 2022 14:34:10 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=RXFHg0yTOuB/QS7nUh7XRAJJPPSKx3N3iXfv6RVU628=; b=OdYpDsabQrdMjywwQm7XJDbqfMY2iGH2cU7tO0dzUfDtPWL5NNftcfl+US/sm8/VEC 9Pq16ioranaljzf9AWsZv5HJAxlM29iwbbpEbsPWcrs9NBFBEQpeayT7u2u6q0ZpuFPi ksdKN2jD+QwVnuAhAjeE5u7DM7pAt4lM7bMzfHwiWYPdelqkd4h7Knj1d5psZ2sIhwia OWjqRx25SyCGMNfnf0JDw0wl0Izd6HeMBeUjyT4LZAhvhrt6u9QcrpbOcHrHIHnIzOCQ 97OiOGImMqkjkWyGYbYKC80cro9gO6ist5eYJZ7hcvG/8nsvDwxPQ8OPPVu3lrM2D2LG ZYZg== X-Gm-Message-State: AOAM5325L8uHUgBHjYhaWrcRse7dKI4C5NblJmRVRD5qdZpfkSfE2Lfr c/CaYkwXOHPhkKlZ99t73qrhPMuGEOJRwaVE X-Google-Smtp-Source: ABdhPJxC3fPd/zlVWOkh1p0WIbDkvOGNqMb7tlR6QOqlxw/lLos4xNz5UOrauAmgMRITJDv8zikpNg== X-Received: by 2002:a17:902:758d:: with SMTP id j13mr3597067pll.85.1644618850226; Fri, 11 Feb 2022 14:34:10 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.34.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:34:09 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Johannes Thumshirn , Himanshu Madhani , "James E.J. Bottomley" Subject: [PATCH v3 30/48] scsi: mac53c94: Move the SCSI pointer to private command data Date: Fri, 11 Feb 2022 14:32:29 -0800 Message-Id: <20220211223247.14369-31-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Set .cmd_size in the SCSI host template instead of using the SCSI pointer from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Reviewed-by: Johannes Thumshirn Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/scsi/mac53c94.c | 24 +++++++++++++----------- drivers/scsi/mac53c94.h | 11 +++++++++++ 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/drivers/scsi/mac53c94.c b/drivers/scsi/mac53c94.c index afa08309de36..f3005b38931f 100644 --- a/drivers/scsi/mac53c94.c +++ b/drivers/scsi/mac53c94.c @@ -193,7 +193,8 @@ static void mac53c94_interrupt(int irq, void *dev_id) struct fsc_state *state = (struct fsc_state *) dev_id; struct mac53c94_regs __iomem *regs = state->regs; struct dbdma_regs __iomem *dma = state->dma; - struct scsi_cmnd *cmd = state->current_req; + struct scsi_cmnd *const cmd = state->current_req; + struct scsi_pointer *const scsi_pointer = mac53c94_scsi_pointer(cmd); int nb, stat, seq, intr; static int mac53c94_errors; @@ -263,10 +264,10 @@ static void mac53c94_interrupt(int irq, void *dev_id) /* set DMA controller going if any data to transfer */ if ((stat & (STAT_MSG|STAT_CD)) == 0 && (scsi_sg_count(cmd) > 0 || scsi_bufflen(cmd))) { - nb = cmd->SCp.this_residual; + nb = scsi_pointer->this_residual; if (nb > 0xfff0) nb = 0xfff0; - cmd->SCp.this_residual -= nb; + scsi_pointer->this_residual -= nb; writeb(nb, ®s->count_lo); writeb(nb >> 8, ®s->count_mid); writeb(CMD_DMA_MODE + CMD_NOP, ®s->command); @@ -293,13 +294,13 @@ static void mac53c94_interrupt(int irq, void *dev_id) cmd_done(state, DID_ERROR << 16); return; } - if (cmd->SCp.this_residual != 0 + if (scsi_pointer->this_residual != 0 && (stat & (STAT_MSG|STAT_CD)) == 0) { /* Set up the count regs to transfer more */ - nb = cmd->SCp.this_residual; + nb = scsi_pointer->this_residual; if (nb > 0xfff0) nb = 0xfff0; - cmd->SCp.this_residual -= nb; + scsi_pointer->this_residual -= nb; writeb(nb, ®s->count_lo); writeb(nb >> 8, ®s->count_mid); writeb(CMD_DMA_MODE + CMD_NOP, ®s->command); @@ -321,8 +322,8 @@ static void mac53c94_interrupt(int irq, void *dev_id) cmd_done(state, DID_ERROR << 16); return; } - cmd->SCp.Status = readb(®s->fifo); - cmd->SCp.Message = readb(®s->fifo); + scsi_pointer->Status = readb(®s->fifo); + scsi_pointer->Message = readb(®s->fifo); writeb(CMD_ACCEPT_MSG, ®s->command); state->phase = busfreeing; break; @@ -330,8 +331,8 @@ static void mac53c94_interrupt(int irq, void *dev_id) if (intr != INTR_DISCONNECT) { printk(KERN_DEBUG "got intr %x when expected disconnect\n", intr); } - cmd_done(state, (DID_OK << 16) + (cmd->SCp.Message << 8) - + cmd->SCp.Status); + cmd_done(state, (DID_OK << 16) + (scsi_pointer->Message << 8) + + scsi_pointer->Status); break; default: printk(KERN_DEBUG "don't know about phase %d\n", state->phase); @@ -389,7 +390,7 @@ static void set_dma_cmds(struct fsc_state *state, struct scsi_cmnd *cmd) dma_cmd += OUTPUT_LAST - OUTPUT_MORE; dcmds[-1].command = cpu_to_le16(dma_cmd); dcmds->command = cpu_to_le16(DBDMA_STOP); - cmd->SCp.this_residual = total; + mac53c94_scsi_pointer(cmd)->this_residual = total; } static struct scsi_host_template mac53c94_template = { @@ -401,6 +402,7 @@ static struct scsi_host_template mac53c94_template = { .this_id = 7, .sg_tablesize = SG_ALL, .max_segment_size = 65535, + .cmd_size = sizeof(struct mac53c94_cmd_priv), }; static int mac53c94_probe(struct macio_dev *mdev, const struct of_device_id *match) diff --git a/drivers/scsi/mac53c94.h b/drivers/scsi/mac53c94.h index 5df6e81f78a8..37d7d30f42ef 100644 --- a/drivers/scsi/mac53c94.h +++ b/drivers/scsi/mac53c94.h @@ -212,4 +212,15 @@ struct mac53c94_regs { #define CF4_TEST 0x02 #define CF4_BBTE 0x01 +struct mac53c94_cmd_priv { + struct scsi_pointer scsi_pointer; +}; + +static inline struct scsi_pointer *mac53c94_scsi_pointer(struct scsi_cmnd *cmd) +{ + struct mac53c94_cmd_priv *mcmd = scsi_cmd_priv(cmd); + + return &mcmd->scsi_pointer; +} + #endif /* _MAC53C94_H */ From patchwork Fri Feb 11 22:32:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542291 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id EF43AC4332F for ; Fri, 11 Feb 2022 22:34:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354129AbiBKWeY (ORCPT ); Fri, 11 Feb 2022 17:34:24 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34400 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345288AbiBKWeW (ORCPT ); Fri, 11 Feb 2022 17:34:22 -0500 Received: from mail-pj1-f54.google.com (mail-pj1-f54.google.com [209.85.216.54]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B72DFD57 for ; Fri, 11 Feb 2022 14:34:12 -0800 (PST) Received: by mail-pj1-f54.google.com with SMTP id q11-20020a17090a304b00b001b94d25eaecso5603085pjl.4 for ; Fri, 11 Feb 2022 14:34:12 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=n+ftz6rZifOckZ2d1iAwIpAJCAY8J0AJBDadpTM8K0k=; b=R2faCWfH3nvAuzz+dGocfvV038DM3+KpJ0bZ7e0Z3USGFhnq8N1+ehSkE1rGevRglA VfULGXjV+DRSJ9gOCcaHdh0jtJ+UWeo2G7u82n6r43v9su8990tld+fRfFy4v9eLKz1s VdM3ub/WaUtXQEU23Rvjz6MhdOwF7H+mgLL8iADLKa8P2CH4oy3KYFII4EI/aKQ8lCS8 XlD4cuHJHGBfRD+iSmbnszb/yNA45Eb09Ef5EqRSgOo+hZCj43OHD+44hGr946zLtoPL tJHjXmbU6HTRKkXJFJlZhHI8Iss3gtPCF10eIQFdExUR33PuGQmP0kFanXrlj9NpVkzU Ceqg== X-Gm-Message-State: AOAM531YSSPyHNAi4sK1WlPY7Hnqh/NxhxPjVzS4L62HrQOv4PTU5eca t4jjbj5rO8K6h9OAj1aFShU= X-Google-Smtp-Source: ABdhPJwHozS+6aSE/zE7ATFsjtOlOE8md/DuIqqfEJfJnoo5ykaqvsYF5QZD4H5O4+YP2fYmGNavAw== X-Received: by 2002:a17:902:cec4:: with SMTP id d4mr3447803plg.158.1644618852096; Fri, 11 Feb 2022 14:34:12 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.34.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:34:11 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Johannes Thumshirn , Himanshu Madhani , Kashyap Desai , Sumit Saxena , Shivasharan S , "James E.J. Bottomley" Subject: [PATCH v3 31/48] scsi: megaraid: Stop using the SCSI pointer Date: Fri, 11 Feb 2022 14:32:30 -0800 Message-Id: <20220211223247.14369-32-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Set .cmd_size in the SCSI host template instead of using the SCSI pointer from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Reviewed-by: Johannes Thumshirn Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/scsi/megaraid.c | 13 ++++--------- drivers/scsi/megaraid.h | 23 ++++++++++++++++++++++- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/drivers/scsi/megaraid.c b/drivers/scsi/megaraid.c index 2061e3fe9824..a5d8cee2d510 100644 --- a/drivers/scsi/megaraid.c +++ b/drivers/scsi/megaraid.c @@ -1644,16 +1644,10 @@ mega_cmd_done(adapter_t *adapter, u8 completed[], int nstatus, int status) static void mega_rundoneq (adapter_t *adapter) { - struct scsi_cmnd *cmd; - struct list_head *pos; + struct megaraid_cmd_priv *cmd_priv; - list_for_each(pos, &adapter->completed_list) { - - struct scsi_pointer* spos = (struct scsi_pointer *)pos; - - cmd = list_entry(spos, struct scsi_cmnd, SCp); - scsi_done(cmd); - } + list_for_each_entry(cmd_priv, &adapter->completed_list, entry) + scsi_done(megaraid_to_scsi_cmd(cmd_priv)); INIT_LIST_HEAD(&adapter->completed_list); } @@ -4123,6 +4117,7 @@ static struct scsi_host_template megaraid_template = { .eh_bus_reset_handler = megaraid_reset, .eh_host_reset_handler = megaraid_reset, .no_write_same = 1, + .cmd_size = sizeof(struct megaraid_cmd_priv), }; static int diff --git a/drivers/scsi/megaraid.h b/drivers/scsi/megaraid.h index cce23a086fbe..013fbfb911b9 100644 --- a/drivers/scsi/megaraid.h +++ b/drivers/scsi/megaraid.h @@ -4,6 +4,7 @@ #include #include +#include #define MEGARAID_VERSION \ "v2.00.4 (Release Date: Thu Feb 9 08:51:30 EST 2006)\n" @@ -756,8 +757,28 @@ struct private_bios_data { #define CACHED_IO 0 #define DIRECT_IO 1 +struct megaraid_cmd_priv { + struct list_head entry; +}; + +#define SCSI_LIST(scp) \ + (&((struct megaraid_cmd_priv *)scsi_cmd_priv(scp))->entry) + +struct scsi_cmd_and_priv { + struct scsi_cmnd cmd; + struct megaraid_cmd_priv priv; +}; + +static inline struct scsi_cmnd * +megaraid_to_scsi_cmd(struct megaraid_cmd_priv *cmd_priv) +{ + /* See also scsi_mq_setup_tags() */ + BUILD_BUG_ON(sizeof(struct scsi_cmd_and_priv) != + sizeof(struct scsi_cmnd) + + sizeof(struct megaraid_cmd_priv)); -#define SCSI_LIST(scp) ((struct list_head *)(&(scp)->SCp)) + return &container_of(cmd_priv, struct scsi_cmd_and_priv, priv)->cmd; +} /* * Each controller's soft state From patchwork Fri Feb 11 22:32:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542290 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 727BDC433EF for ; Fri, 11 Feb 2022 22:34:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354146AbiBKWeZ (ORCPT ); Fri, 11 Feb 2022 17:34:25 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34408 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354075AbiBKWeW (ORCPT ); Fri, 11 Feb 2022 17:34:22 -0500 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9AEC9D5D for ; Fri, 11 Feb 2022 14:34:14 -0800 (PST) Received: by mail-pl1-f176.google.com with SMTP id c3so5785563pls.5 for ; Fri, 11 Feb 2022 14:34:14 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=u/qBRBLM1r2yTY4VduEFKfWhYTThTW41WBM80pT8DTc=; b=alQgAup4NSL0n7eBJWV/5ExxBdVYSMMWnVrrg9hSC1ckxzcftI1os8Wf9rOTWzxfG/ E2uBOuJ+7ymwsmsLZLn8M16b19ORgCeKuHYHAqfGFXBa6IHRnmOUJjGSibNlqlRQ9VrW lH8QVkBbTR0TCEi17V1SAkrfXgkNh+4wIDe+MW3ruePeIEYLHv3QL21q6CdWqJNk/pyl n5N348fHf8/DnsQse7FunFgfujqa78cdC38MZXHcicb4C/yRjgFk/KiE3foPe50gzR73 lO3IUtX/yaDGP4r/ogGiaKytac18dHToxtXboVKHOF90tbCNyijjUG4dP/uNKNqONZ/W 9TLQ== X-Gm-Message-State: AOAM530DxJ0TWw/oUxhkzGb4nDIALcxEKrR612pdhWgIsBky7gIxJjgn t+0h51sIyhPk6SLaeF02mes= X-Google-Smtp-Source: ABdhPJx9Mv5yPEcO0G8UCTxla5zG5H7QBUQdWQZLvUM20i/MTEwHGl25r5tH3zuUFIdESzCtzr8e5Q== X-Received: by 2002:a17:902:bb97:: with SMTP id m23mr3426256pls.151.1644618854023; Fri, 11 Feb 2022 14:34:14 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.34.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:34:13 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Johannes Thumshirn , Hannes Reinecke , Himanshu Madhani , Kashyap Desai , Sumit Saxena , Shivasharan S , "James E.J. Bottomley" Subject: [PATCH v3 32/48] scsi: megasas: Stop using the SCSI pointer Date: Fri, 11 Feb 2022 14:32:31 -0800 Message-Id: <20220211223247.14369-33-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Set .cmd_size in the SCSI host template instead of using the SCSI pointer from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Reviewed-by: Johannes Thumshirn Reviewed-by: Hannes Reinecke Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/scsi/megaraid/megaraid_sas.h | 12 ++++++++++++ drivers/scsi/megaraid/megaraid_sas_base.c | 8 ++++---- drivers/scsi/megaraid/megaraid_sas_fusion.c | 15 ++++++++------- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/drivers/scsi/megaraid/megaraid_sas.h b/drivers/scsi/megaraid/megaraid_sas.h index 2c9d1b796475..611871ef15b5 100644 --- a/drivers/scsi/megaraid/megaraid_sas.h +++ b/drivers/scsi/megaraid/megaraid_sas.h @@ -18,6 +18,8 @@ #ifndef LSI_MEGARAID_SAS_H #define LSI_MEGARAID_SAS_H +#include + /* * MegaRAID SAS Driver meta data */ @@ -2594,6 +2596,16 @@ struct megasas_cmd { }; }; +struct megasas_cmd_priv { + void *cmd_priv; + u8 status; +}; + +static inline struct megasas_cmd_priv *megasas_priv(struct scsi_cmnd *cmd) +{ + return scsi_cmd_priv(cmd); +} + #define MAX_MGMT_ADAPTERS 1024 #define MAX_IOCTL_SGE 16 diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c index 82e1e24257bc..8bf72dbc33b7 100644 --- a/drivers/scsi/megaraid/megaraid_sas_base.c +++ b/drivers/scsi/megaraid/megaraid_sas_base.c @@ -1760,7 +1760,7 @@ megasas_build_and_issue_cmd(struct megasas_instance *instance, goto out_return_cmd; cmd->scmd = scmd; - scmd->SCp.ptr = (char *)cmd; + megasas_priv(scmd)->cmd_priv = cmd; /* * Issue the command to the FW @@ -2992,11 +2992,10 @@ megasas_dump_reg_set(void __iomem *reg_set) void megasas_dump_fusion_io(struct scsi_cmnd *scmd) { - struct megasas_cmd_fusion *cmd; + struct megasas_cmd_fusion *cmd = megasas_priv(scmd)->cmd_priv; union MEGASAS_REQUEST_DESCRIPTOR_UNION *req_desc; struct megasas_instance *instance; - cmd = (struct megasas_cmd_fusion *)scmd->SCp.ptr; instance = (struct megasas_instance *)scmd->device->host->hostdata; scmd_printk(KERN_INFO, scmd, @@ -3518,6 +3517,7 @@ static struct scsi_host_template megasas_template = { .mq_poll = megasas_blk_mq_poll, .change_queue_depth = scsi_change_queue_depth, .max_segment_size = 0xffffffff, + .cmd_size = sizeof(struct megasas_cmd_priv), }; /** @@ -3601,7 +3601,7 @@ megasas_complete_cmd(struct megasas_instance *instance, struct megasas_cmd *cmd, cmd->retry_for_fw_reset = 0; if (cmd->scmd) - cmd->scmd->SCp.ptr = NULL; + megasas_priv(cmd->scmd)->cmd_priv = NULL; switch (hdr->cmd) { case MFI_CMD_INVALID: diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c b/drivers/scsi/megaraid/megaraid_sas_fusion.c index fc90a0a687b5..c72364864bf4 100644 --- a/drivers/scsi/megaraid/megaraid_sas_fusion.c +++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c @@ -2915,7 +2915,7 @@ megasas_build_ldio_fusion(struct megasas_instance *instance, get_updated_dev_handle(instance, &fusion->load_balance_info[device_id], &io_info, local_map_ptr); - scp->SCp.Status |= MEGASAS_LOAD_BALANCE_FLAG; + megasas_priv(scp)->status |= MEGASAS_LOAD_BALANCE_FLAG; cmd->pd_r1_lb = io_info.pd_after_lb; if (instance->adapter_type >= VENTURA_SERIES) rctx_g35->span_arm = io_info.span_arm; @@ -2923,7 +2923,7 @@ megasas_build_ldio_fusion(struct megasas_instance *instance, rctx->span_arm = io_info.span_arm; } else - scp->SCp.Status &= ~MEGASAS_LOAD_BALANCE_FLAG; + megasas_priv(scp)->status &= ~MEGASAS_LOAD_BALANCE_FLAG; if (instance->adapter_type >= VENTURA_SERIES) cmd->r1_alt_dev_handle = io_info.r1_alt_dev_handle; @@ -3293,7 +3293,7 @@ megasas_build_io_fusion(struct megasas_instance *instance, io_request->SenseBufferLength = SCSI_SENSE_BUFFERSIZE; cmd->scmd = scp; - scp->SCp.ptr = (char *)cmd; + megasas_priv(scp)->cmd_priv = cmd; return 0; } @@ -3489,7 +3489,7 @@ megasas_complete_r1_command(struct megasas_instance *instance, if (instance->ldio_threshold && megasas_cmd_type(scmd_local) == READ_WRITE_LDIO) atomic_dec(&instance->ldio_outstanding); - scmd_local->SCp.ptr = NULL; + megasas_priv(scmd_local)->cmd_priv = NULL; megasas_return_cmd_fusion(instance, cmd); scsi_dma_unmap(scmd_local); megasas_sdev_busy_dec(instance, scmd_local); @@ -3613,12 +3613,13 @@ complete_cmd_fusion(struct megasas_instance *instance, u32 MSIxIndex, case MPI2_FUNCTION_SCSI_IO_REQUEST: /*Fast Path IO.*/ /* Update load balancing info */ if (fusion->load_balance_info && - (cmd_fusion->scmd->SCp.Status & + (megasas_priv(cmd_fusion->scmd)->status & MEGASAS_LOAD_BALANCE_FLAG)) { device_id = MEGASAS_DEV_INDEX(scmd_local); lbinfo = &fusion->load_balance_info[device_id]; atomic_dec(&lbinfo->scsi_pending_cmds[cmd_fusion->pd_r1_lb]); - cmd_fusion->scmd->SCp.Status &= ~MEGASAS_LOAD_BALANCE_FLAG; + megasas_priv(cmd_fusion->scmd)->status &= + ~MEGASAS_LOAD_BALANCE_FLAG; } fallthrough; /* and complete IO */ case MEGASAS_MPI2_FUNCTION_LD_IO_REQUEST: /* LD-IO Path */ @@ -3630,7 +3631,7 @@ complete_cmd_fusion(struct megasas_instance *instance, u32 MSIxIndex, if (instance->ldio_threshold && (megasas_cmd_type(scmd_local) == READ_WRITE_LDIO)) atomic_dec(&instance->ldio_outstanding); - scmd_local->SCp.ptr = NULL; + megasas_priv(scmd_local)->cmd_priv = NULL; megasas_return_cmd_fusion(instance, cmd_fusion); scsi_dma_unmap(scmd_local); megasas_sdev_busy_dec(instance, scmd_local); From patchwork Fri Feb 11 22:32:32 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542015 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 310F0C4332F for ; Fri, 11 Feb 2022 22:34:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240439AbiBKWe0 (ORCPT ); Fri, 11 Feb 2022 17:34:26 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34412 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354077AbiBKWeW (ORCPT ); Fri, 11 Feb 2022 17:34:22 -0500 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 51687D5F for ; Fri, 11 Feb 2022 14:34:16 -0800 (PST) Received: by mail-pf1-f172.google.com with SMTP id y5so18662484pfe.4 for ; Fri, 11 Feb 2022 14:34:16 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8KYU+BdU6PlksD78VB0yUTvt/EaDu45QnauSkwKpQfw=; b=KtoBDGyKJnmNza8Dym6mrRD+EKc667ZwxVei5h2Ispo6jd0X3DYEMMAdHbuejBfySR ElxLO/hYHz2VCTMjhxYeFaDYyYAMi7mcraKYZYjBYwDr5ybOCiHPByla8364qX3FObNO BSraynIae4mZuCYaGiDzrlN6BCYB4yJR2In9LJsoE8WmFZfq2jPik6Gbx+fuUQMTTdBO XDb3gh/rfNBsRslTg9yI0p/UadZC/traBbWXRmXFPJcgUEbsBUvSuA0OuhAvQRwl1om8 VHCfSbllyK9NNxm/RPD5W1IVAEZR0/Kk4nA01424QzTxQtkXVebMOQkgwfezQSV1U0iP z/8g== X-Gm-Message-State: AOAM533G3Yi/QTr13BI/R38q+KfIkLn49sAFGyjHiGqv5+RCAxxzqFdB z14Fsmawt9GHbhEcrbXGNeQ= X-Google-Smtp-Source: ABdhPJzSsGKbMeM3jtxCBIGc+R3THOamRZ1rS454pxwQugtti9LG1V58WesAtKr+t3GOKGuyTVt4gw== X-Received: by 2002:a05:6a00:1382:: with SMTP id t2mr3780859pfg.31.1644618855681; Fri, 11 Feb 2022 14:34:15 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.34.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:34:15 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Johannes Thumshirn , Himanshu Madhani , "James E.J. Bottomley" Subject: [PATCH v3 33/48] scsi: mesh: Move the SCSI pointer to private command data Date: Fri, 11 Feb 2022 14:32:32 -0800 Message-Id: <20220211223247.14369-34-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Set .cmd_size in the SCSI host template instead of using the SCSI pointer from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Reviewed-by: Johannes Thumshirn Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/scsi/mesh.c | 20 +++++++++++++------- drivers/scsi/mesh.h | 11 +++++++++++ 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/drivers/scsi/mesh.c b/drivers/scsi/mesh.c index ca133e0a140a..de9ae36def42 100644 --- a/drivers/scsi/mesh.c +++ b/drivers/scsi/mesh.c @@ -586,10 +586,12 @@ static void mesh_done(struct mesh_state *ms, int start_next) ms->current_req = NULL; tp->current_req = NULL; if (cmd) { + struct scsi_pointer *scsi_pointer = mesh_scsi_pointer(cmd); + set_host_byte(cmd, ms->stat); - set_status_byte(cmd, cmd->SCp.Status); + set_status_byte(cmd, scsi_pointer->Status); if (ms->stat == DID_OK) - scsi_msg_to_host_byte(cmd, cmd->SCp.Message); + scsi_msg_to_host_byte(cmd, scsi_pointer->Message); if (DEBUG_TARGET(cmd)) { printk(KERN_DEBUG "mesh_done: result = %x, data_ptr=%d, buflen=%d\n", cmd->result, ms->data_ptr, scsi_bufflen(cmd)); @@ -603,7 +605,7 @@ static void mesh_done(struct mesh_state *ms, int start_next) } #endif } - cmd->SCp.this_residual -= ms->data_ptr; + scsi_pointer->this_residual -= ms->data_ptr; scsi_done(cmd); } if (start_next) { @@ -1171,7 +1173,7 @@ static void handle_msgin(struct mesh_state *ms) if (ms->n_msgin < msgin_length(ms)) goto reject; if (cmd) - cmd->SCp.Message = code; + mesh_scsi_pointer(cmd)->Message = code; switch (code) { case COMMAND_COMPLETE: break; @@ -1262,7 +1264,7 @@ static void set_dma_cmds(struct mesh_state *ms, struct scsi_cmnd *cmd) if (cmd) { int nseg; - cmd->SCp.this_residual = scsi_bufflen(cmd); + mesh_scsi_pointer(cmd)->this_residual = scsi_bufflen(cmd); nseg = scsi_dma_map(cmd); BUG_ON(nseg < 0); @@ -1592,10 +1594,13 @@ static void cmd_complete(struct mesh_state *ms) break; case statusing: if (cmd) { - cmd->SCp.Status = mr->fifo; + struct scsi_pointer *scsi_pointer = + mesh_scsi_pointer(cmd); + + scsi_pointer->Status = mr->fifo; if (DEBUG_TARGET(cmd)) printk(KERN_DEBUG "mesh: status is %x\n", - cmd->SCp.Status); + scsi_pointer->Status); } ms->msgphase = msg_in; break; @@ -1837,6 +1842,7 @@ static struct scsi_host_template mesh_template = { .sg_tablesize = SG_ALL, .cmd_per_lun = 2, .max_segment_size = 65535, + .cmd_size = sizeof(struct mesh_cmd_priv), }; static int mesh_probe(struct macio_dev *mdev, const struct of_device_id *match) diff --git a/drivers/scsi/mesh.h b/drivers/scsi/mesh.h index ee53c05ace95..1afa8b37295b 100644 --- a/drivers/scsi/mesh.h +++ b/drivers/scsi/mesh.h @@ -8,6 +8,17 @@ #ifndef _MESH_H #define _MESH_H +struct mesh_cmd_priv { + struct scsi_pointer scsi_pointer; +}; + +static inline struct scsi_pointer *mesh_scsi_pointer(struct scsi_cmnd *cmd) +{ + struct mesh_cmd_priv *mcmd = scsi_cmd_priv(cmd); + + return &mcmd->scsi_pointer; +} + /* * Registers in the MESH controller. */ From patchwork Fri Feb 11 22:32:33 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542289 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CD268C433F5 for ; Fri, 11 Feb 2022 22:34:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354155AbiBKWeb (ORCPT ); Fri, 11 Feb 2022 17:34:31 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34398 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354149AbiBKWeW (ORCPT ); Fri, 11 Feb 2022 17:34:22 -0500 Received: from mail-pf1-f178.google.com (mail-pf1-f178.google.com [209.85.210.178]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A752DD63 for ; Fri, 11 Feb 2022 14:34:19 -0800 (PST) Received: by mail-pf1-f178.google.com with SMTP id x15so16246219pfr.5 for ; Fri, 11 Feb 2022 14:34:19 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ol6ZWWUNPy/gYGRQ0hDi/zoduTNBX5Oh6PGzctrMhbg=; b=wLVQUbslWh+3/Zhmh0VtQ4uFrEtyBUPQY5Fnj5b8eR6jYLApiCAetLPBuEmkv2DITe XGDx62KZiW8kte6KHdCEw5VAMR9mc6nCMEsEvBrmJeRa5S6L+FYuBMkkt52E9UWVVJbd 89C4PqPLT66JO4v9MQLC4+WeZs6SBtB/WN3ykJdPabJu5Mt0+kLU30vGn6FyS8AWO9he l5A7eNCriJM5Q5ww98fX5J0SLT0LhiXMbBbhceXfPz2rTv40cGGgEPe40ePBL/sYe0eM wsUgua5Bogn6Is8vbuW2K4DJWJh2ztO1nxoteUjRIJ0tubO8xiFnSHkWvdv5iPj1fPp4 ZWQg== X-Gm-Message-State: AOAM532b3RDBGAsV0LzMebWwfNfcbNX78WiSJlI12PCyPAUdi/vmeOhK 4vsB7PDEfsCEzTBb78qlCck= X-Google-Smtp-Source: ABdhPJygLB4JFUTPYUPJ0Xj7sEKfoPDWqtZc38ekmKXXajzgxiX93ZvpZu9nDfqTMD1AIOBCHSqvJA== X-Received: by 2002:a05:6a00:218b:: with SMTP id h11mr3795446pfi.29.1644618859071; Fri, 11 Feb 2022 14:34:19 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.34.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:34:18 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Johannes Thumshirn , John Garry , Hannes Reinecke , Himanshu Madhani , "James E.J. Bottomley" , Zhen Lei , Yufen Yu Subject: [PATCH v3 34/48] scsi: mvsas: Fix a set-but-not-used warning Date: Fri, 11 Feb 2022 14:32:33 -0800 Message-Id: <20220211223247.14369-35-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org This patch fixes the following compiler warning: drivers/scsi/mvsas/mv_init.c: In function ‘mvs_pci_init’: drivers/scsi/mvsas/mv_init.c:497:30: warning: variable ‘mpi’ set but not used [-Wunused-but-set-variable] 497 | struct mvs_prv_info *mpi; | ^~~ Reviewed-by: Johannes Thumshirn Reviewed-by: John Garry Reviewed-by: Hannes Reinecke Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/scsi/mvsas/mv_init.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/mvsas/mv_init.c b/drivers/scsi/mvsas/mv_init.c index dcae2d4464f9..733758b3782d 100644 --- a/drivers/scsi/mvsas/mv_init.c +++ b/drivers/scsi/mvsas/mv_init.c @@ -494,7 +494,6 @@ static int mvs_pci_init(struct pci_dev *pdev, const struct pci_device_id *ent) { unsigned int rc, nhost = 0; struct mvs_info *mvi; - struct mvs_prv_info *mpi; irq_handler_t irq_handler = mvs_interrupt; struct Scsi_Host *shost = NULL; const struct mvs_chip_info *chip; @@ -559,10 +558,13 @@ static int mvs_pci_init(struct pci_dev *pdev, const struct pci_device_id *ent) } nhost++; } while (nhost < chip->n_host); - mpi = (struct mvs_prv_info *)(SHOST_TO_SAS_HA(shost)->lldd_ha); #ifdef CONFIG_SCSI_MVSAS_TASKLET + { + struct mvs_prv_info *mpi = SHOST_TO_SAS_HA(shost)->lldd_ha; + tasklet_init(&(mpi->mv_tasklet), mvs_tasklet, (unsigned long)SHOST_TO_SAS_HA(shost)); + } #endif mvs_post_sas_ha_init(shost, chip); From patchwork Fri Feb 11 22:32:34 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 641D9C433F5 for ; Fri, 11 Feb 2022 22:34:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243649AbiBKWej (ORCPT ); Fri, 11 Feb 2022 17:34:39 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34402 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1352407AbiBKWeX (ORCPT ); Fri, 11 Feb 2022 17:34:23 -0500 Received: from mail-pf1-f174.google.com (mail-pf1-f174.google.com [209.85.210.174]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 61473D4E for ; Fri, 11 Feb 2022 14:34:21 -0800 (PST) Received: by mail-pf1-f174.google.com with SMTP id n23so18717536pfo.1 for ; Fri, 11 Feb 2022 14:34:21 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=lHPHxz+0fUNEna5QsRJQJZs6i2Z4BPsfQCMVcXEb8iM=; b=fn8eODShMA0+I6BrMBiGzxcC/ThP7b8++S8nROfJMYcPcDs7jy/5CpIf/Y+a6x3j9N Ln6JUnC3vCXI8pIH/G63QSxIe7MCgZuGg1E0GymwiTb0Kf6Ipo+TGj320cemRrr4vjVH brhRoqnM1eZyV/Qnzvb0EETp/52OkrJP7E/lmdIa+Gu+MIC50N/GglijxHu6zNfOKvM9 wPjn6ZAZpi15L3FnK21rc1Hsa6I7vpvCIeANXZ2OleHsfTSr3ctDSFZ3tryi90u7Hy8R GS/ksmzwtSdUEeFPg3cqpSPjbg3GbHrNXdWpzMSbcKXKw1rxwT1str3slLw7lJbNVfLp azWw== X-Gm-Message-State: AOAM532Y8wLO0OzI0Guy9/rQuWi3X+TB3ZEjcvnQPata6Q+X/IXE4ICQ vX7SV8wSM+s7BZ0hYPyj9e4= X-Google-Smtp-Source: ABdhPJxt1pCeOYPk3BtoeKiRZHcTBB3lpVSeuWYzFHbf6Pne2B1EB8YNL7lCnuGn5gjnMLrsy3wDqQ== X-Received: by 2002:a05:6a00:1a10:: with SMTP id g16mr3766786pfv.51.1644618860759; Fri, 11 Feb 2022 14:34:20 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.34.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:34:20 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Johannes Thumshirn , Hannes Reinecke , Himanshu Madhani , "James E.J. Bottomley" Subject: [PATCH v3 35/48] scsi: mvumi: Stop using the SCSI pointer Date: Fri, 11 Feb 2022 14:32:34 -0800 Message-Id: <20220211223247.14369-36-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Set .cmd_size in the SCSI host template instead of using the SCSI pointer from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Reviewed-by: Johannes Thumshirn Reviewed-by: Hannes Reinecke Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/scsi/mvumi.c | 9 +++++---- drivers/scsi/mvumi.h | 9 +++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/drivers/scsi/mvumi.c b/drivers/scsi/mvumi.c index 904de62c974c..05d3ce9b72db 100644 --- a/drivers/scsi/mvumi.c +++ b/drivers/scsi/mvumi.c @@ -1302,7 +1302,7 @@ static void mvumi_complete_cmd(struct mvumi_hba *mhba, struct mvumi_cmd *cmd, { struct scsi_cmnd *scmd = cmd->scmd; - cmd->scmd->SCp.ptr = NULL; + mvumi_priv(cmd->scmd)->cmd_priv = NULL; scmd->result = ob_frame->req_status; switch (ob_frame->req_status) { @@ -2097,7 +2097,7 @@ static int mvumi_queue_command(struct Scsi_Host *shost, goto out_return_cmd; cmd->scmd = scmd; - scmd->SCp.ptr = (char *) cmd; + mvumi_priv(scmd)->cmd_priv = cmd; mhba->instancet->fire_cmd(mhba, cmd); spin_unlock_irqrestore(shost->host_lock, irq_flags); return 0; @@ -2111,7 +2111,7 @@ static int mvumi_queue_command(struct Scsi_Host *shost, static enum blk_eh_timer_return mvumi_timed_out(struct scsi_cmnd *scmd) { - struct mvumi_cmd *cmd = (struct mvumi_cmd *) scmd->SCp.ptr; + struct mvumi_cmd *cmd = mvumi_priv(scmd)->cmd_priv; struct Scsi_Host *host = scmd->device->host; struct mvumi_hba *mhba = shost_priv(host); unsigned long flags; @@ -2128,7 +2128,7 @@ static enum blk_eh_timer_return mvumi_timed_out(struct scsi_cmnd *scmd) atomic_dec(&mhba->fw_outstanding); scmd->result = (DID_ABORT << 16); - scmd->SCp.ptr = NULL; + mvumi_priv(scmd)->cmd_priv = NULL; if (scsi_bufflen(scmd)) { dma_unmap_sg(&mhba->pdev->dev, scsi_sglist(scmd), scsi_sg_count(scmd), @@ -2179,6 +2179,7 @@ static struct scsi_host_template mvumi_template = { .bios_param = mvumi_bios_param, .dma_boundary = PAGE_SIZE - 1, .this_id = -1, + .cmd_size = sizeof(struct mvumi_cmd_priv), }; static int mvumi_cfg_hw_reg(struct mvumi_hba *mhba) diff --git a/drivers/scsi/mvumi.h b/drivers/scsi/mvumi.h index 60d5691fc4ab..a88c58787b68 100644 --- a/drivers/scsi/mvumi.h +++ b/drivers/scsi/mvumi.h @@ -254,6 +254,15 @@ struct mvumi_cmd { unsigned char cmd_status; }; +struct mvumi_cmd_priv { + struct mvumi_cmd *cmd_priv; +}; + +static inline struct mvumi_cmd_priv *mvumi_priv(struct scsi_cmnd *cmd) +{ + return scsi_cmd_priv(cmd); +} + /* * the function type of the in bound frame */ From patchwork Fri Feb 11 22:32:35 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542288 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A9BE3C433EF for ; Fri, 11 Feb 2022 22:34:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354148AbiBKWej (ORCPT ); Fri, 11 Feb 2022 17:34:39 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34440 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345288AbiBKWeY (ORCPT ); Fri, 11 Feb 2022 17:34:24 -0500 Received: from mail-pf1-f176.google.com (mail-pf1-f176.google.com [209.85.210.176]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 213F9D52 for ; Fri, 11 Feb 2022 14:34:23 -0800 (PST) Received: by mail-pf1-f176.google.com with SMTP id y8so15934760pfa.11 for ; Fri, 11 Feb 2022 14:34:23 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=M626oeIUbG2zGaulksUEFkg9FXBl3IKSZyVT8/qb9YY=; b=MXznd7Aocd5f1WTbEIwPLwaTWf4VBgtSc+SuNpJo6maTvPqWO/C48Hsqo1sMTSUGFY suaYb2EZBr8H0pz0S3WmgUjRLRipBWsRTnOPZdYxEO9uHKKVSsEJ4lrHW0WIMcyHqEAa WG5ValbAuWwrrlCFvep/1b8v6xpaz0yXmQZzTKcpjIUlhJ/5ETXHuepasu9/awupQM5B gbXB4pkgNpAqso/rrAD2kxDHPLhlQFN1ZkqTRvJJ9uFHBbiqnbjXFgo3eHZYzjlR0uv9 pmAiDMDfvptlj+nA65qY8xbOh6gGm77OHXReDYOT9HZ5gIarMRF6E8MpN3GYYwxTD++P fhfw== X-Gm-Message-State: AOAM531MJOaXdTWI4nN0bjBMHBKNv0Qvf4MKAbAX7cubuPMKM9OfkOX7 HehaZpt8timOwsWo86kk+E4= X-Google-Smtp-Source: ABdhPJx6xEGwHhKNIJZGaI14JmDV7mPXX1ba4CdkSFwWmt60rtpZyCpt0k5Oc0xNTBeNtqdtj+Ht6w== X-Received: by 2002:a62:4e44:: with SMTP id c65mr3765564pfb.1.1644618862459; Fri, 11 Feb 2022 14:34:22 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.34.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:34:21 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Hannes Reinecke , Himanshu Madhani , GOTO Masanori , "James E.J. Bottomley" Subject: [PATCH v3 36/48] scsi: nsp32: Stop using the SCSI pointer Date: Fri, 11 Feb 2022 14:32:35 -0800 Message-Id: <20220211223247.14369-37-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Move the SCSI status field to private data. Stop setting the .ptr, .this_residual, .buffer and .buffer_residual SCSI pointer members since no code in this driver reads these members. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Reviewed-by: Hannes Reinecke Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche Reviewed-by: Masanori Goto --- drivers/scsi/nsp32.c | 20 +++++++------------- drivers/scsi/nsp32.h | 9 +++++++++ 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/drivers/scsi/nsp32.c b/drivers/scsi/nsp32.c index bd3ee3bf08ee..75bb0028ed74 100644 --- a/drivers/scsi/nsp32.c +++ b/drivers/scsi/nsp32.c @@ -273,6 +273,7 @@ static struct scsi_host_template nsp32_template = { .eh_abort_handler = nsp32_eh_abort, .eh_host_reset_handler = nsp32_eh_host_reset, /* .highmem_io = 1, */ + .cmd_size = sizeof(struct nsp32_cmd_priv), }; #include "nsp32_io.h" @@ -946,14 +947,9 @@ static int nsp32_queuecommand_lck(struct scsi_cmnd *SCpnt) show_command(SCpnt); data->CurrentSC = SCpnt; - SCpnt->SCp.Status = SAM_STAT_CHECK_CONDITION; + nsp32_priv(SCpnt)->status = SAM_STAT_CHECK_CONDITION; scsi_set_resid(SCpnt, scsi_bufflen(SCpnt)); - SCpnt->SCp.ptr = (char *)scsi_sglist(SCpnt); - SCpnt->SCp.this_residual = scsi_bufflen(SCpnt); - SCpnt->SCp.buffer = NULL; - SCpnt->SCp.buffers_residual = 0; - /* initialize data */ data->msgout_len = 0; data->msgin_len = 0; @@ -1376,7 +1372,7 @@ static irqreturn_t do_nsp32_isr(int irq, void *dev_id) case BUSPHASE_STATUS: nsp32_dbg(NSP32_DEBUG_INTR, "fifo/status"); - SCpnt->SCp.Status = nsp32_read1(base, SCSI_CSB_IN); + nsp32_priv(SCpnt)->status = nsp32_read1(base, SCSI_CSB_IN); break; default: @@ -1687,18 +1683,18 @@ static int nsp32_busfree_occur(struct scsi_cmnd *SCpnt, unsigned short execph) /* MsgIn 00: Command Complete */ nsp32_dbg(NSP32_DEBUG_BUSFREE, "command complete"); - SCpnt->SCp.Status = nsp32_read1(base, SCSI_CSB_IN); + nsp32_priv(SCpnt)->status = nsp32_read1(base, SCSI_CSB_IN); nsp32_dbg(NSP32_DEBUG_BUSFREE, "normal end stat=0x%x resid=0x%x\n", - SCpnt->SCp.Status, scsi_get_resid(SCpnt)); + nsp32_priv(SCpnt)->status, scsi_get_resid(SCpnt)); SCpnt->result = (DID_OK << 16) | - (SCpnt->SCp.Status << 0); + (nsp32_priv(SCpnt)->status << 0); nsp32_scsi_done(SCpnt); /* All operation is done */ return TRUE; } else if (execph & MSGIN_04_VALID) { /* MsgIn 04: Disconnect */ - SCpnt->SCp.Status = nsp32_read1(base, SCSI_CSB_IN); + nsp32_priv(SCpnt)->status = nsp32_read1(base, SCSI_CSB_IN); nsp32_dbg(NSP32_DEBUG_BUSFREE, "disconnect"); return TRUE; @@ -1706,8 +1702,6 @@ static int nsp32_busfree_occur(struct scsi_cmnd *SCpnt, unsigned short execph) /* Unexpected bus free */ nsp32_msg(KERN_WARNING, "unexpected bus free occurred"); - /* DID_ERROR? */ - //SCpnt->result = (DID_OK << 16) | (SCpnt->SCp.Status << 0); SCpnt->result = DID_ERROR << 16; nsp32_scsi_done(SCpnt); return TRUE; diff --git a/drivers/scsi/nsp32.h b/drivers/scsi/nsp32.h index ab0726c070f7..924889f8bd37 100644 --- a/drivers/scsi/nsp32.h +++ b/drivers/scsi/nsp32.h @@ -534,6 +534,15 @@ typedef struct _nsp32_sync_table { ---PERIOD-- ---OFFSET-- */ #define TO_SYNCREG(period, offset) (((period) & 0x0f) << 4 | ((offset) & 0x0f)) +struct nsp32_cmd_priv { + enum sam_status status; +}; + +static inline struct nsp32_cmd_priv *nsp32_priv(struct scsi_cmnd *cmd) +{ + return scsi_cmd_priv(cmd); +} + typedef struct _nsp32_target { unsigned char syncreg; /* value for SYNCREG */ unsigned char ackwidth; /* value for ACKWIDTH */ From patchwork Fri Feb 11 22:32:36 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542013 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2DD8BC433FE for ; Fri, 11 Feb 2022 22:34:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354157AbiBKWej (ORCPT ); Fri, 11 Feb 2022 17:34:39 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34454 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354077AbiBKWe1 (ORCPT ); Fri, 11 Feb 2022 17:34:27 -0500 Received: from mail-pj1-f54.google.com (mail-pj1-f54.google.com [209.85.216.54]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 007DAD53 for ; Fri, 11 Feb 2022 14:34:24 -0800 (PST) Received: by mail-pj1-f54.google.com with SMTP id y9so9313725pjf.1 for ; Fri, 11 Feb 2022 14:34:24 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=A/S3KCrXBTTtSusQUVdYWBf1AOREHH7guodEm933rqA=; b=zbh1iTnCUQdJWJSLn52DsQTmB+8mQMUjFIK33Hwv7Hl8xeQ40OICWpC3hptcUVc/vw AZm66upqvXd2ppc9u4fFgRXJID9XsJ5Xyzv+Cbyqk1Q1a/UpYtZ70wwQlKRsC+f3wlwp ozZDU3vu3X6fqO4QXGKBXb5bzMaA8pnHKl7JHFjl36BwQDXFmkO0rT40MxotVR085zvj TiTaWeyeDC4ZL/cjPZKpsWAegAi+5F67ER4rXTijDnOT9fJwItMJRIJu18c5RTZkRG9o L/AmDdDvQPMGBTCzDVaokaRslrajgEEg/+gPGSWQUxQI8ntV2rq0ENJxtfWUYCl+E62N bbhw== X-Gm-Message-State: AOAM5322TmaHQE2v5UqR2jTLeKWr0RazeCiFFgwBXEEWr4RUaWpdMKkA w4nHn+PUwQYHVvrx9BgJguE= X-Google-Smtp-Source: ABdhPJyGrwvlrkRIXOmHn5uKGCYwdDu/o3x7ZhN2RNbAcgyIRrelbL+uoZ+VXMr0I5sqTSj7zctBmw== X-Received: by 2002:a17:902:8a90:: with SMTP id p16mr3611407plo.60.1644618864224; Fri, 11 Feb 2022 14:34:24 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.34.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:34:23 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Himanshu Madhani , "James E.J. Bottomley" Subject: [PATCH v3 37/48] scsi: nsp_cs: Move the SCSI pointer to private command data Date: Fri, 11 Feb 2022 14:32:36 -0800 Message-Id: <20220211223247.14369-38-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Set .cmd_size in the SCSI host template instead of using the SCSI pointer in struct scsi_cmnd. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/scsi/pcmcia/nsp_cs.c | 200 ++++++++++++++++++-------------- drivers/scsi/pcmcia/nsp_cs.h | 2 +- drivers/scsi/pcmcia/nsp_debug.c | 2 +- 3 files changed, 114 insertions(+), 90 deletions(-) diff --git a/drivers/scsi/pcmcia/nsp_cs.c b/drivers/scsi/pcmcia/nsp_cs.c index dcffda384eaf..48acab03a8a0 100644 --- a/drivers/scsi/pcmcia/nsp_cs.c +++ b/drivers/scsi/pcmcia/nsp_cs.c @@ -70,6 +70,11 @@ static bool free_ports = 0; module_param(free_ports, bool, 0); MODULE_PARM_DESC(free_ports, "Release IO ports after configuration? (default: 0 (=no))"); +static struct scsi_pointer *nsp_priv(struct scsi_cmnd *cmd) +{ + return scsi_cmd_priv(cmd); +} + static struct scsi_host_template nsp_driver_template = { .proc_name = "nsp_cs", .show_info = nsp_show_info, @@ -83,6 +88,7 @@ static struct scsi_host_template nsp_driver_template = { .this_id = NSP_INITIATOR_ID, .sg_tablesize = SG_ALL, .dma_boundary = PAGE_SIZE - 1, + .cmd_size = sizeof(struct scsi_pointer), }; static nsp_hw_data nsp_data_base; /* attach <-> detect glue */ @@ -180,8 +186,9 @@ static void nsp_scsi_done(struct scsi_cmnd *SCpnt) scsi_done(SCpnt); } -static int nsp_queuecommand_lck(struct scsi_cmnd *SCpnt) +static int nsp_queuecommand_lck(struct scsi_cmnd *const SCpnt) { + struct scsi_pointer *scsi_pointer = nsp_priv(SCpnt); #ifdef NSP_DEBUG /*unsigned int host_id = SCpnt->device->host->this_id;*/ /*unsigned int base = SCpnt->device->host->io_port;*/ @@ -217,11 +224,11 @@ static int nsp_queuecommand_lck(struct scsi_cmnd *SCpnt) data->CurrentSC = SCpnt; - SCpnt->SCp.Status = SAM_STAT_CHECK_CONDITION; - SCpnt->SCp.Message = 0; - SCpnt->SCp.have_data_in = IO_UNKNOWN; - SCpnt->SCp.sent_command = 0; - SCpnt->SCp.phase = PH_UNDETERMINED; + scsi_pointer->Status = SAM_STAT_CHECK_CONDITION; + scsi_pointer->Message = 0; + scsi_pointer->have_data_in = IO_UNKNOWN; + scsi_pointer->sent_command = 0; + scsi_pointer->phase = PH_UNDETERMINED; scsi_set_resid(SCpnt, scsi_bufflen(SCpnt)); /* setup scratch area @@ -231,15 +238,15 @@ static int nsp_queuecommand_lck(struct scsi_cmnd *SCpnt) SCp.buffers_residual : left buffers in list SCp.phase : current state of the command */ if (scsi_bufflen(SCpnt)) { - SCpnt->SCp.buffer = scsi_sglist(SCpnt); - SCpnt->SCp.ptr = BUFFER_ADDR; - SCpnt->SCp.this_residual = SCpnt->SCp.buffer->length; - SCpnt->SCp.buffers_residual = scsi_sg_count(SCpnt) - 1; + scsi_pointer->buffer = scsi_sglist(SCpnt); + scsi_pointer->ptr = BUFFER_ADDR(SCpnt); + scsi_pointer->this_residual = scsi_pointer->buffer->length; + scsi_pointer->buffers_residual = scsi_sg_count(SCpnt) - 1; } else { - SCpnt->SCp.ptr = NULL; - SCpnt->SCp.this_residual = 0; - SCpnt->SCp.buffer = NULL; - SCpnt->SCp.buffers_residual = 0; + scsi_pointer->ptr = NULL; + scsi_pointer->this_residual = 0; + scsi_pointer->buffer = NULL; + scsi_pointer->buffers_residual = 0; } if (!nsphw_start_selection(SCpnt)) { @@ -353,8 +360,9 @@ static void nsphw_init(nsp_hw_data *data) /* * Start selection phase */ -static bool nsphw_start_selection(struct scsi_cmnd *SCpnt) +static bool nsphw_start_selection(struct scsi_cmnd *const SCpnt) { + struct scsi_pointer *scsi_pointer = nsp_priv(SCpnt); unsigned int host_id = SCpnt->device->host->this_id; unsigned int base = SCpnt->device->host->io_port; unsigned char target = scmd_id(SCpnt); @@ -372,7 +380,7 @@ static bool nsphw_start_selection(struct scsi_cmnd *SCpnt) /* start arbitration */ //nsp_dbg(NSP_DEBUG_RESELECTION, "start arbit"); - SCpnt->SCp.phase = PH_ARBSTART; + scsi_pointer->phase = PH_ARBSTART; nsp_index_write(base, SETARBIT, ARBIT_GO); time_out = 1000; @@ -392,7 +400,7 @@ static bool nsphw_start_selection(struct scsi_cmnd *SCpnt) /* assert select line */ //nsp_dbg(NSP_DEBUG_RESELECTION, "assert SEL line"); - SCpnt->SCp.phase = PH_SELSTART; + scsi_pointer->phase = PH_SELSTART; udelay(3); /* wait 2.4us */ nsp_index_write(base, SCSIDATALATCH, BIT(host_id) | BIT(target)); nsp_index_write(base, SCSIBUSCTRL, SCSI_SEL | SCSI_BSY | SCSI_ATN); @@ -568,8 +576,9 @@ static int nsp_expect_signal(struct scsi_cmnd *SCpnt, /* * transfer SCSI message */ -static int nsp_xfer(struct scsi_cmnd *SCpnt, int phase) +static int nsp_xfer(struct scsi_cmnd *const SCpnt, int phase) { + struct scsi_pointer *scsi_pointer = nsp_priv(SCpnt); unsigned int base = SCpnt->device->host->io_port; nsp_hw_data *data = (nsp_hw_data *)SCpnt->device->host->hostdata; char *buf = data->MsgBuffer; @@ -587,7 +596,7 @@ static int nsp_xfer(struct scsi_cmnd *SCpnt, int phase) } /* if last byte, negate ATN */ - if (len == 1 && SCpnt->SCp.phase == PH_MSG_OUT) { + if (len == 1 && scsi_pointer->phase == PH_MSG_OUT) { nsp_index_write(base, SCSIBUSCTRL, AUTODIRECTION | ACKENB); } @@ -608,14 +617,15 @@ static int nsp_xfer(struct scsi_cmnd *SCpnt, int phase) /* * get extra SCSI data from fifo */ -static int nsp_dataphase_bypass(struct scsi_cmnd *SCpnt) +static int nsp_dataphase_bypass(struct scsi_cmnd *const SCpnt) { + struct scsi_pointer *scsi_pointer = nsp_priv(SCpnt); nsp_hw_data *data = (nsp_hw_data *)SCpnt->device->host->hostdata; unsigned int count; //nsp_dbg(NSP_DEBUG_DATA_IO, "in"); - if (SCpnt->SCp.have_data_in != IO_IN) { + if (scsi_pointer->have_data_in != IO_IN) { return 0; } @@ -630,7 +640,7 @@ static int nsp_dataphase_bypass(struct scsi_cmnd *SCpnt) * data phase skip only occures in case of SCSI_LOW_READ */ nsp_dbg(NSP_DEBUG_DATA_IO, "use bypass quirk"); - SCpnt->SCp.phase = PH_DATA; + scsi_pointer->phase = PH_DATA; nsp_pio_read(SCpnt); nsp_setup_fifo(data, false); @@ -704,8 +714,9 @@ static int nsp_fifo_count(struct scsi_cmnd *SCpnt) /* * read data in DATA IN phase */ -static void nsp_pio_read(struct scsi_cmnd *SCpnt) +static void nsp_pio_read(struct scsi_cmnd *const SCpnt) { + struct scsi_pointer *scsi_pointer = nsp_priv(SCpnt); unsigned int base = SCpnt->device->host->io_port; unsigned long mmio_base = SCpnt->device->host->base; nsp_hw_data *data = (nsp_hw_data *)SCpnt->device->host->hostdata; @@ -716,24 +727,25 @@ static void nsp_pio_read(struct scsi_cmnd *SCpnt) ocount = data->FifoCount; nsp_dbg(NSP_DEBUG_DATA_IO, "in SCpnt=0x%p resid=%d ocount=%d ptr=0x%p this_residual=%d buffers=0x%p nbuf=%d", - SCpnt, scsi_get_resid(SCpnt), ocount, SCpnt->SCp.ptr, - SCpnt->SCp.this_residual, SCpnt->SCp.buffer, - SCpnt->SCp.buffers_residual); + SCpnt, scsi_get_resid(SCpnt), ocount, scsi_pointer->ptr, + scsi_pointer->this_residual, scsi_pointer->buffer, + scsi_pointer->buffers_residual); time_out = 1000; while ((time_out-- != 0) && - (SCpnt->SCp.this_residual > 0 || SCpnt->SCp.buffers_residual > 0 ) ) { + (scsi_pointer->this_residual > 0 || + scsi_pointer->buffers_residual > 0)) { stat = nsp_index_read(base, SCSIBUSMON); stat &= BUSMON_PHASE_MASK; res = nsp_fifo_count(SCpnt) - ocount; - //nsp_dbg(NSP_DEBUG_DATA_IO, "ptr=0x%p this=0x%x ocount=0x%x res=0x%x", SCpnt->SCp.ptr, SCpnt->SCp.this_residual, ocount, res); + //nsp_dbg(NSP_DEBUG_DATA_IO, "ptr=0x%p this=0x%x ocount=0x%x res=0x%x", scsi_pointer->ptr, scsi_pointer->this_residual, ocount, res); if (res == 0) { /* if some data available ? */ if (stat == BUSPHASE_DATA_IN) { /* phase changed? */ - //nsp_dbg(NSP_DEBUG_DATA_IO, " wait for data this=%d", SCpnt->SCp.this_residual); + //nsp_dbg(NSP_DEBUG_DATA_IO, " wait for data this=%d", scsi_pointer->this_residual); continue; } else { nsp_dbg(NSP_DEBUG_DATA_IO, "phase changed stat=0x%x", stat); @@ -747,20 +759,21 @@ static void nsp_pio_read(struct scsi_cmnd *SCpnt) continue; } - res = min(res, SCpnt->SCp.this_residual); + res = min(res, scsi_pointer->this_residual); switch (data->TransferMode) { case MODE_IO32: res &= ~(BIT(1)|BIT(0)); /* align 4 */ - nsp_fifo32_read(base, SCpnt->SCp.ptr, res >> 2); + nsp_fifo32_read(base, scsi_pointer->ptr, res >> 2); break; case MODE_IO8: - nsp_fifo8_read (base, SCpnt->SCp.ptr, res ); + nsp_fifo8_read(base, scsi_pointer->ptr, res); break; case MODE_MEM32: res &= ~(BIT(1)|BIT(0)); /* align 4 */ - nsp_mmio_fifo32_read(mmio_base, SCpnt->SCp.ptr, res >> 2); + nsp_mmio_fifo32_read(mmio_base, scsi_pointer->ptr, + res >> 2); break; default: @@ -769,22 +782,23 @@ static void nsp_pio_read(struct scsi_cmnd *SCpnt) } nsp_inc_resid(SCpnt, -res); - SCpnt->SCp.ptr += res; - SCpnt->SCp.this_residual -= res; + scsi_pointer->ptr += res; + scsi_pointer->this_residual -= res; ocount += res; - //nsp_dbg(NSP_DEBUG_DATA_IO, "ptr=0x%p this_residual=0x%x ocount=0x%x", SCpnt->SCp.ptr, SCpnt->SCp.this_residual, ocount); + //nsp_dbg(NSP_DEBUG_DATA_IO, "ptr=0x%p this_residual=0x%x ocount=0x%x", scsi_pointer->ptr, scsi_pointer->this_residual, ocount); /* go to next scatter list if available */ - if (SCpnt->SCp.this_residual == 0 && - SCpnt->SCp.buffers_residual != 0 ) { + if (scsi_pointer->this_residual == 0 && + scsi_pointer->buffers_residual != 0 ) { //nsp_dbg(NSP_DEBUG_DATA_IO, "scatterlist next timeout=%d", time_out); - SCpnt->SCp.buffers_residual--; - SCpnt->SCp.buffer = sg_next(SCpnt->SCp.buffer); - SCpnt->SCp.ptr = BUFFER_ADDR; - SCpnt->SCp.this_residual = SCpnt->SCp.buffer->length; + scsi_pointer->buffers_residual--; + scsi_pointer->buffer = sg_next(scsi_pointer->buffer); + scsi_pointer->ptr = BUFFER_ADDR(SCpnt); + scsi_pointer->this_residual = + scsi_pointer->buffer->length; time_out = 1000; - //nsp_dbg(NSP_DEBUG_DATA_IO, "page: 0x%p, off: 0x%x", SCpnt->SCp.buffer->page, SCpnt->SCp.buffer->offset); + //nsp_dbg(NSP_DEBUG_DATA_IO, "page: 0x%p, off: 0x%x", scsi_pointer->buffer->page, scsi_pointer->buffer->offset); } } @@ -792,8 +806,8 @@ static void nsp_pio_read(struct scsi_cmnd *SCpnt) if (time_out < 0) { nsp_msg(KERN_DEBUG, "pio read timeout resid=%d this_residual=%d buffers_residual=%d", - scsi_get_resid(SCpnt), SCpnt->SCp.this_residual, - SCpnt->SCp.buffers_residual); + scsi_get_resid(SCpnt), scsi_pointer->this_residual, + scsi_pointer->buffers_residual); } nsp_dbg(NSP_DEBUG_DATA_IO, "read ocount=0x%x", ocount); nsp_dbg(NSP_DEBUG_DATA_IO, "r cmd=%d resid=0x%x\n", data->CmdId, @@ -805,6 +819,7 @@ static void nsp_pio_read(struct scsi_cmnd *SCpnt) */ static void nsp_pio_write(struct scsi_cmnd *SCpnt) { + struct scsi_pointer *scsi_pointer = nsp_priv(SCpnt); unsigned int base = SCpnt->device->host->io_port; unsigned long mmio_base = SCpnt->device->host->base; nsp_hw_data *data = (nsp_hw_data *)SCpnt->device->host->hostdata; @@ -815,14 +830,15 @@ static void nsp_pio_write(struct scsi_cmnd *SCpnt) ocount = data->FifoCount; nsp_dbg(NSP_DEBUG_DATA_IO, "in fifocount=%d ptr=0x%p this_residual=%d buffers=0x%p nbuf=%d resid=0x%x", - data->FifoCount, SCpnt->SCp.ptr, SCpnt->SCp.this_residual, - SCpnt->SCp.buffer, SCpnt->SCp.buffers_residual, + data->FifoCount, scsi_pointer->ptr, scsi_pointer->this_residual, + scsi_pointer->buffer, scsi_pointer->buffers_residual, scsi_get_resid(SCpnt)); time_out = 1000; while ((time_out-- != 0) && - (SCpnt->SCp.this_residual > 0 || SCpnt->SCp.buffers_residual > 0)) { + (scsi_pointer->this_residual > 0 || + scsi_pointer->buffers_residual > 0)) { stat = nsp_index_read(base, SCSIBUSMON); stat &= BUSMON_PHASE_MASK; @@ -832,9 +848,9 @@ static void nsp_pio_write(struct scsi_cmnd *SCpnt) nsp_dbg(NSP_DEBUG_DATA_IO, "phase changed stat=0x%x, res=%d\n", stat, res); /* Put back pointer */ nsp_inc_resid(SCpnt, res); - SCpnt->SCp.ptr -= res; - SCpnt->SCp.this_residual += res; - ocount -= res; + scsi_pointer->ptr -= res; + scsi_pointer->this_residual += res; + ocount -= res; break; } @@ -845,21 +861,22 @@ static void nsp_pio_write(struct scsi_cmnd *SCpnt) continue; } - res = min(SCpnt->SCp.this_residual, WFIFO_CRIT); + res = min(scsi_pointer->this_residual, WFIFO_CRIT); - //nsp_dbg(NSP_DEBUG_DATA_IO, "ptr=0x%p this=0x%x res=0x%x", SCpnt->SCp.ptr, SCpnt->SCp.this_residual, res); + //nsp_dbg(NSP_DEBUG_DATA_IO, "ptr=0x%p this=0x%x res=0x%x", scsi_pointer->ptr, scsi_pointer->this_residual, res); switch (data->TransferMode) { case MODE_IO32: res &= ~(BIT(1)|BIT(0)); /* align 4 */ - nsp_fifo32_write(base, SCpnt->SCp.ptr, res >> 2); + nsp_fifo32_write(base, scsi_pointer->ptr, res >> 2); break; case MODE_IO8: - nsp_fifo8_write (base, SCpnt->SCp.ptr, res ); + nsp_fifo8_write(base, scsi_pointer->ptr, res); break; case MODE_MEM32: res &= ~(BIT(1)|BIT(0)); /* align 4 */ - nsp_mmio_fifo32_write(mmio_base, SCpnt->SCp.ptr, res >> 2); + nsp_mmio_fifo32_write(mmio_base, scsi_pointer->ptr, + res >> 2); break; default: @@ -868,18 +885,19 @@ static void nsp_pio_write(struct scsi_cmnd *SCpnt) } nsp_inc_resid(SCpnt, -res); - SCpnt->SCp.ptr += res; - SCpnt->SCp.this_residual -= res; - ocount += res; + scsi_pointer->ptr += res; + scsi_pointer->this_residual -= res; + ocount += res; /* go to next scatter list if available */ - if (SCpnt->SCp.this_residual == 0 && - SCpnt->SCp.buffers_residual != 0 ) { + if (scsi_pointer->this_residual == 0 && + scsi_pointer->buffers_residual != 0 ) { //nsp_dbg(NSP_DEBUG_DATA_IO, "scatterlist next"); - SCpnt->SCp.buffers_residual--; - SCpnt->SCp.buffer = sg_next(SCpnt->SCp.buffer); - SCpnt->SCp.ptr = BUFFER_ADDR; - SCpnt->SCp.this_residual = SCpnt->SCp.buffer->length; + scsi_pointer->buffers_residual--; + scsi_pointer->buffer = sg_next(scsi_pointer->buffer); + scsi_pointer->ptr = BUFFER_ADDR(SCpnt); + scsi_pointer->this_residual = + scsi_pointer->buffer->length; time_out = 1000; } } @@ -947,6 +965,7 @@ static irqreturn_t nspintr(int irq, void *dev_id) unsigned int base; unsigned char irq_status, irq_phase, phase; struct scsi_cmnd *tmpSC; + struct scsi_pointer *scsi_pointer; unsigned char target, lun; unsigned int *sync_neg; int i, tmp; @@ -1025,9 +1044,10 @@ static irqreturn_t nspintr(int irq, void *dev_id) if(data->CurrentSC != NULL) { tmpSC = data->CurrentSC; - tmpSC->result = (DID_RESET << 16) | - ((tmpSC->SCp.Message & 0xff) << 8) | - ((tmpSC->SCp.Status & 0xff) << 0); + scsi_pointer = nsp_priv(tmpSC); + tmpSC->result = (DID_RESET << 16) | + ((scsi_pointer->Message & 0xff) << 8) | + ((scsi_pointer->Status & 0xff) << 0); nsp_scsi_done(tmpSC); } return IRQ_HANDLED; @@ -1041,6 +1061,7 @@ static irqreturn_t nspintr(int irq, void *dev_id) } tmpSC = data->CurrentSC; + scsi_pointer = nsp_priv(tmpSC); target = tmpSC->device->id; lun = tmpSC->device->lun; sync_neg = &(data->Sync[target].SyncNegotiation); @@ -1063,7 +1084,7 @@ static irqreturn_t nspintr(int irq, void *dev_id) //show_phase(tmpSC); - switch(tmpSC->SCp.phase) { + switch (scsi_pointer->phase) { case PH_SELSTART: // *sync_neg = SYNC_NOT_YET; if ((phase & BUSMON_BSY) == 0) { @@ -1086,7 +1107,7 @@ static irqreturn_t nspintr(int irq, void *dev_id) /* attention assert */ //nsp_dbg(NSP_DEBUG_INTR, "attention assert"); data->SelectionTimeOut = 0; - tmpSC->SCp.phase = PH_SELECTED; + scsi_pointer->phase = PH_SELECTED; nsp_index_write(base, SCSIBUSCTRL, SCSI_ATN); udelay(1); nsp_index_write(base, SCSIBUSCTRL, SCSI_ATN | AUTODIRECTION | ACKENB); @@ -1115,17 +1136,18 @@ static irqreturn_t nspintr(int irq, void *dev_id) //nsp_dbg(NSP_DEBUG_INTR, "start scsi seq"); /* normal disconnect */ - if (((tmpSC->SCp.phase == PH_MSG_IN) || (tmpSC->SCp.phase == PH_MSG_OUT)) && - (irq_phase & LATCHED_BUS_FREE) != 0 ) { + if ((scsi_pointer->phase == PH_MSG_IN || + scsi_pointer->phase == PH_MSG_OUT) && + (irq_phase & LATCHED_BUS_FREE) != 0) { nsp_dbg(NSP_DEBUG_INTR, "normal disconnect irq_status=0x%x, phase=0x%x, irq_phase=0x%x", irq_status, phase, irq_phase); //*sync_neg = SYNC_NOT_YET; /* all command complete and return status */ - if (tmpSC->SCp.Message == COMMAND_COMPLETE) { - tmpSC->result = (DID_OK << 16) | - ((tmpSC->SCp.Message & 0xff) << 8) | - ((tmpSC->SCp.Status & 0xff) << 0); + if (scsi_pointer->Message == COMMAND_COMPLETE) { + tmpSC->result = (DID_OK << 16) | + ((scsi_pointer->Message & 0xff) << 8) | + ((scsi_pointer->Status & 0xff) << 0); nsp_dbg(NSP_DEBUG_INTR, "command complete result=0x%x", tmpSC->result); nsp_scsi_done(tmpSC); @@ -1154,7 +1176,7 @@ static irqreturn_t nspintr(int irq, void *dev_id) return IRQ_HANDLED; } - tmpSC->SCp.phase = PH_COMMAND; + scsi_pointer->phase = PH_COMMAND; nsp_nexus(tmpSC); @@ -1170,8 +1192,8 @@ static irqreturn_t nspintr(int irq, void *dev_id) case BUSPHASE_DATA_OUT: nsp_dbg(NSP_DEBUG_INTR, "BUSPHASE_DATA_OUT"); - tmpSC->SCp.phase = PH_DATA; - tmpSC->SCp.have_data_in = IO_OUT; + scsi_pointer->phase = PH_DATA; + scsi_pointer->have_data_in = IO_OUT; nsp_pio_write(tmpSC); @@ -1180,8 +1202,8 @@ static irqreturn_t nspintr(int irq, void *dev_id) case BUSPHASE_DATA_IN: nsp_dbg(NSP_DEBUG_INTR, "BUSPHASE_DATA_IN"); - tmpSC->SCp.phase = PH_DATA; - tmpSC->SCp.have_data_in = IO_IN; + scsi_pointer->phase = PH_DATA; + scsi_pointer->have_data_in = IO_IN; nsp_pio_read(tmpSC); @@ -1191,10 +1213,11 @@ static irqreturn_t nspintr(int irq, void *dev_id) nsp_dataphase_bypass(tmpSC); nsp_dbg(NSP_DEBUG_INTR, "BUSPHASE_STATUS"); - tmpSC->SCp.phase = PH_STATUS; + scsi_pointer->phase = PH_STATUS; - tmpSC->SCp.Status = nsp_index_read(base, SCSIDATAWITHACK); - nsp_dbg(NSP_DEBUG_INTR, "message=0x%x status=0x%x", tmpSC->SCp.Message, tmpSC->SCp.Status); + scsi_pointer->Status = nsp_index_read(base, SCSIDATAWITHACK); + nsp_dbg(NSP_DEBUG_INTR, "message=0x%x status=0x%x", + scsi_pointer->Message, scsi_pointer->Status); break; @@ -1204,7 +1227,7 @@ static irqreturn_t nspintr(int irq, void *dev_id) goto timer_out; } - tmpSC->SCp.phase = PH_MSG_OUT; + scsi_pointer->phase = PH_MSG_OUT; //*sync_neg = SYNC_NOT_YET; @@ -1237,7 +1260,7 @@ static irqreturn_t nspintr(int irq, void *dev_id) goto timer_out; } - tmpSC->SCp.phase = PH_MSG_IN; + scsi_pointer->phase = PH_MSG_IN; nsp_message_in(tmpSC); /**/ @@ -1269,9 +1292,10 @@ static irqreturn_t nspintr(int irq, void *dev_id) i += (1 + data->MsgBuffer[i+1]); } } - tmpSC->SCp.Message = tmp; + scsi_pointer->Message = tmp; - nsp_dbg(NSP_DEBUG_INTR, "message=0x%x len=%d", tmpSC->SCp.Message, data->MsgLen); + nsp_dbg(NSP_DEBUG_INTR, "message=0x%x len=%d", + scsi_pointer->Message, data->MsgLen); show_message(data); break; diff --git a/drivers/scsi/pcmcia/nsp_cs.h b/drivers/scsi/pcmcia/nsp_cs.h index 7d5d1a5b36e0..e1ee8ef90ad3 100644 --- a/drivers/scsi/pcmcia/nsp_cs.h +++ b/drivers/scsi/pcmcia/nsp_cs.h @@ -371,7 +371,7 @@ enum _burst_mode { }; /* scatter-gather table */ -# define BUFFER_ADDR ((char *)((sg_virt(SCpnt->SCp.buffer)))) +#define BUFFER_ADDR(SCpnt) ((char *)(sg_virt(nsp_priv(SCpnt)->buffer))) #endif /*__nsp_cs__*/ /* end */ diff --git a/drivers/scsi/pcmcia/nsp_debug.c b/drivers/scsi/pcmcia/nsp_debug.c index 6aa7d269d3b3..23b68dd26f74 100644 --- a/drivers/scsi/pcmcia/nsp_debug.c +++ b/drivers/scsi/pcmcia/nsp_debug.c @@ -145,7 +145,7 @@ static void show_command(struct scsi_cmnd *SCpnt) static void show_phase(struct scsi_cmnd *SCpnt) { - int i = SCpnt->SCp.phase; + int i = nsp_scsi_pointer(SCpnt)->phase; char *ph[] = { "PH_UNDETERMINED", From patchwork Fri Feb 11 22:32:37 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542287 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2528DC433EF for ; Fri, 11 Feb 2022 22:34:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354161AbiBKWek (ORCPT ); Fri, 11 Feb 2022 17:34:40 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34474 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354147AbiBKWea (ORCPT ); Fri, 11 Feb 2022 17:34:30 -0500 Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0F8AED55 for ; Fri, 11 Feb 2022 14:34:28 -0800 (PST) Received: by mail-pl1-f169.google.com with SMTP id x3so5783277pll.3 for ; Fri, 11 Feb 2022 14:34:28 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=KZRyurWwIUCUHUSCOl7sC1WUzmpUgrP0RhTAYS0PbCg=; b=lZq1yhaNVujzufeOSImA0RijVVMj8Mv37mvNArwvahwB33IgFsnZ9Irrp6p/+xBi3o WTJy3zuEzJbP4gyWBqpnaS2x2QLK4s0LtXVddA0veIYsOqWgbkM4N2fePxomes9eVrY1 XLO/ZOh91v1G8oFlBMMJUbl76nhlfgqtOccVAqAjrbWyqRMDG5oIJK5+lS9jplphnp34 QqbDvtEamMEKeqTvu3hwoVE3qQlvE2z5uGdIoJ/al+1VDwlDuEkg8AztS14m+Iw4zZOw jW0O0m2Mm1mAfOJxO6+J+iBKhoE3f7vFlJcVknnBLGb+Q4tD54zasiFOp5rjBYhOEpbk qdRA== X-Gm-Message-State: AOAM5317o6URdYySFad0RmyTGITSXJUyzUUJ0/UU7L35J5YLKyqfFEXO 86Q7J/4FD4W5Doc7pGxJ5Rw= X-Google-Smtp-Source: ABdhPJxbzevkrudNgKUuWeGWOMlua8YN8cDBOgzhIyzyhMSsXAB+4ZZJr76i667xAbycp3h1tXmkzg== X-Received: by 2002:a17:902:e74b:: with SMTP id p11mr3677487plf.115.1644618867412; Fri, 11 Feb 2022 14:34:27 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.34.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:34:26 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Johannes Thumshirn , Himanshu Madhani , "James E.J. Bottomley" Subject: [PATCH v3 38/48] scsi: sym53c500_cs: Move the SCSI pointer to private command data Date: Fri, 11 Feb 2022 14:32:37 -0800 Message-Id: <20220211223247.14369-39-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Set .cmd_size in the SCSI host template instead of using the SCSI pointer from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Reviewed-by: Johannes Thumshirn Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/scsi/pcmcia/sym53c500_cs.c | 47 ++++++++++++++++++------------ 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/drivers/scsi/pcmcia/sym53c500_cs.c b/drivers/scsi/pcmcia/sym53c500_cs.c index fc93d2a57e1e..c4a838635893 100644 --- a/drivers/scsi/pcmcia/sym53c500_cs.c +++ b/drivers/scsi/pcmcia/sym53c500_cs.c @@ -192,6 +192,11 @@ struct sym53c500_data { int fast_pio; }; +static struct scsi_pointer *sym53c500_scsi_pointer(struct scsi_cmnd *cmd) +{ + return scsi_cmd_priv(cmd); +} + enum Phase { idle, data_out, @@ -351,6 +356,7 @@ SYM53C500_intr(int irq, void *dev_id) struct sym53c500_data *data = (struct sym53c500_data *)dev->hostdata; struct scsi_cmnd *curSC = data->current_SC; + struct scsi_pointer *scsi_pointer = sym53c500_scsi_pointer(curSC); int fast_pio = data->fast_pio; spin_lock_irqsave(dev->host_lock, flags); @@ -397,11 +403,12 @@ SYM53C500_intr(int irq, void *dev_id) if (int_reg & 0x20) { /* Disconnect */ DEB(printk("SYM53C500: disconnect intr received\n")); - if (curSC->SCp.phase != message_in) { /* Unexpected disconnect */ + if (scsi_pointer->phase != message_in) { /* Unexpected disconnect */ curSC->result = DID_NO_CONNECT << 16; } else { /* Command complete, return status and message */ - curSC->result = (curSC->SCp.Status & 0xff) - | ((curSC->SCp.Message & 0xff) << 8) | (DID_OK << 16); + curSC->result = (scsi_pointer->Status & 0xff) | + ((scsi_pointer->Message & 0xff) << 8) | + (DID_OK << 16); } goto idle_out; } @@ -412,7 +419,7 @@ SYM53C500_intr(int irq, void *dev_id) struct scatterlist *sg; int i; - curSC->SCp.phase = data_out; + scsi_pointer->phase = data_out; VDEB(printk("SYM53C500: Data-Out phase\n")); outb(FLUSH_FIFO, port_base + CMD_REG); LOAD_DMA_COUNT(port_base, scsi_bufflen(curSC)); /* Max transfer size */ @@ -431,7 +438,7 @@ SYM53C500_intr(int irq, void *dev_id) struct scatterlist *sg; int i; - curSC->SCp.phase = data_in; + scsi_pointer->phase = data_in; VDEB(printk("SYM53C500: Data-In phase\n")); outb(FLUSH_FIFO, port_base + CMD_REG); LOAD_DMA_COUNT(port_base, scsi_bufflen(curSC)); /* Max transfer size */ @@ -446,12 +453,12 @@ SYM53C500_intr(int irq, void *dev_id) break; case 0x02: /* COMMAND */ - curSC->SCp.phase = command_ph; + scsi_pointer->phase = command_ph; printk("SYM53C500: Warning: Unknown interrupt occurred in command phase!\n"); break; case 0x03: /* STATUS */ - curSC->SCp.phase = status_ph; + scsi_pointer->phase = status_ph; VDEB(printk("SYM53C500: Status phase\n")); outb(FLUSH_FIFO, port_base + CMD_REG); outb(INIT_CMD_COMPLETE, port_base + CMD_REG); @@ -464,22 +471,24 @@ SYM53C500_intr(int irq, void *dev_id) case 0x06: /* MESSAGE-OUT */ DEB(printk("SYM53C500: Message-Out phase\n")); - curSC->SCp.phase = message_out; + scsi_pointer->phase = message_out; outb(SET_ATN, port_base + CMD_REG); /* Reject the message */ outb(MSG_ACCEPT, port_base + CMD_REG); break; case 0x07: /* MESSAGE-IN */ VDEB(printk("SYM53C500: Message-In phase\n")); - curSC->SCp.phase = message_in; + scsi_pointer->phase = message_in; - curSC->SCp.Status = inb(port_base + SCSI_FIFO); - curSC->SCp.Message = inb(port_base + SCSI_FIFO); + scsi_pointer->Status = inb(port_base + SCSI_FIFO); + scsi_pointer->Message = inb(port_base + SCSI_FIFO); VDEB(printk("SCSI FIFO size=%d\n", inb(port_base + FIFO_FLAGS) & 0x1f)); - DEB(printk("Status = %02x Message = %02x\n", curSC->SCp.Status, curSC->SCp.Message)); + DEB(printk("Status = %02x Message = %02x\n", + scsi_pointer->Status, scsi_pointer->Message)); - if (curSC->SCp.Message == SAVE_POINTERS || curSC->SCp.Message == DISCONNECT) { + if (scsi_pointer->Message == SAVE_POINTERS || + scsi_pointer->Message == DISCONNECT) { outb(SET_ATN, port_base + CMD_REG); /* Reject message */ DEB(printk("Discarding SAVE_POINTERS message\n")); } @@ -491,7 +500,7 @@ SYM53C500_intr(int irq, void *dev_id) return IRQ_HANDLED; idle_out: - curSC->SCp.phase = idle; + scsi_pointer->phase = idle; scsi_done(curSC); goto out; } @@ -539,6 +548,7 @@ SYM53C500_info(struct Scsi_Host *SChost) static int SYM53C500_queue_lck(struct scsi_cmnd *SCpnt) { + struct scsi_pointer *scsi_pointer = sym53c500_scsi_pointer(SCpnt); int i; int port_base = SCpnt->device->host->io_port; struct sym53c500_data *data = @@ -555,9 +565,9 @@ static int SYM53C500_queue_lck(struct scsi_cmnd *SCpnt) VDEB(printk("\n")); data->current_SC = SCpnt; - data->current_SC->SCp.phase = command_ph; - data->current_SC->SCp.Status = 0; - data->current_SC->SCp.Message = 0; + scsi_pointer->phase = command_ph; + scsi_pointer->Status = 0; + scsi_pointer->Message = 0; /* We are locked here already by the mid layer */ REG0(port_base); @@ -671,7 +681,8 @@ static struct scsi_host_template sym53c500_driver_template = { .can_queue = 1, .this_id = 7, .sg_tablesize = 32, - .shost_groups = SYM53C500_shost_groups + .shost_groups = SYM53C500_shost_groups, + .cmd_size = sizeof(struct scsi_pointer), }; static int SYM53C500_config_check(struct pcmcia_device *p_dev, void *priv_data) From patchwork Fri Feb 11 22:32:38 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542011 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 05D17C4332F for ; Fri, 11 Feb 2022 22:34:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354165AbiBKWem (ORCPT ); Fri, 11 Feb 2022 17:34:42 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34398 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354078AbiBKWeb (ORCPT ); Fri, 11 Feb 2022 17:34:31 -0500 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B33FAD57 for ; Fri, 11 Feb 2022 14:34:29 -0800 (PST) Received: by mail-pl1-f182.google.com with SMTP id u12so5752772plf.13 for ; Fri, 11 Feb 2022 14:34:29 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=B/rU5Uug+wbiRRO+qJny3vIUPXj+4jiEJ1epi+oHgJs=; b=KJoq59QT5aE4A5OS/YasJ/zH9RAcYjNCsgvyUgY1OguZtxTeE0Hp+H/QMaPVFp8ZvE ZqncvnkFv7s33D0NIwSv8+ZiSnm4lmVUHMplf4V2mT5UrFNiBeqknNYXR0GhIzLNXjwb dYZbcksYHM713rV60vl9jkVCZyUXzNrTEPgjuKIFYV1CL5VSjiz3/6gEjaHbeZQOyDDa VjyI6Jt5t8jVInpw/pxG4SYMl8EfQkbHWxlegfWyo2F5qwAkeJGvaefnaDR6rUPS4+ut D2Zg2rE9S2gogDh6q3YO9lDWvjThxKwEjSjnm40HyRQSkaDzK9kSvJFNtU409H9IC8fN VjXA== X-Gm-Message-State: AOAM532KojEoxilg7sNG+2T89SGahGAeaYULCtfcrCqhltcLKX32ED4V QKAf3fjW78Rnm4gAIQHLkFHxfCqnC3hbNkPS X-Google-Smtp-Source: ABdhPJzY/uW1CKYvig5VvDKeT0hhMBTiiaK/V0V88NDbHgWpxJ5TF/J/IkoG3WhH8MjwbhE6GPwCjQ== X-Received: by 2002:a17:902:8602:: with SMTP id f2mr3648642plo.36.1644618869065; Fri, 11 Feb 2022 14:34:29 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.34.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:34:28 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Johannes Thumshirn , Himanshu Madhani , "James E.J. Bottomley" Subject: [PATCH v3 39/48] scsi: ppa: Move the SCSI pointer to private command data Date: Fri, 11 Feb 2022 14:32:38 -0800 Message-Id: <20220211223247.14369-40-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Set .cmd_size in the SCSI host template instead of using the SCSI pointer from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Reviewed-by: Johannes Thumshirn Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/scsi/ppa.c | 75 ++++++++++++++++++++++++++-------------------- 1 file changed, 43 insertions(+), 32 deletions(-) diff --git a/drivers/scsi/ppa.c b/drivers/scsi/ppa.c index 003043de23a5..00a68037e0e4 100644 --- a/drivers/scsi/ppa.c +++ b/drivers/scsi/ppa.c @@ -45,6 +45,11 @@ typedef struct { #include "ppa.h" +static struct scsi_pointer *ppa_scsi_pointer(struct scsi_cmnd *cmd) +{ + return scsi_cmd_priv(cmd); +} + static inline ppa_struct *ppa_dev(struct Scsi_Host *host) { return *(ppa_struct **)&host->hostdata; @@ -56,7 +61,7 @@ static void got_it(ppa_struct *dev) { dev->base = dev->dev->port->base; if (dev->cur_cmd) - dev->cur_cmd->SCp.phase = 1; + ppa_scsi_pointer(dev->cur_cmd)->phase = 1; else wake_up(dev->waiting); } @@ -511,13 +516,14 @@ static inline int ppa_send_command(struct scsi_cmnd *cmd) * The driver appears to remain stable if we speed up the parallel port * i/o in this function, but not elsewhere. */ -static int ppa_completion(struct scsi_cmnd *cmd) +static int ppa_completion(struct scsi_cmnd *const cmd) { /* Return codes: * -1 Error * 0 Told to schedule * 1 Finished data transfer */ + struct scsi_pointer *scsi_pointer = ppa_scsi_pointer(cmd); ppa_struct *dev = ppa_dev(cmd->device->host); unsigned short ppb = dev->base; unsigned long start_jiffies = jiffies; @@ -543,7 +549,7 @@ static int ppa_completion(struct scsi_cmnd *cmd) if (time_after(jiffies, start_jiffies + 1)) return 0; - if ((cmd->SCp.this_residual <= 0)) { + if (scsi_pointer->this_residual <= 0) { ppa_fail(dev, DID_ERROR); return -1; /* ERROR_RETURN */ } @@ -572,28 +578,30 @@ static int ppa_completion(struct scsi_cmnd *cmd) } /* determine if we should use burst I/O */ - fast = (bulk && (cmd->SCp.this_residual >= PPA_BURST_SIZE)) - ? PPA_BURST_SIZE : 1; + fast = bulk && scsi_pointer->this_residual >= PPA_BURST_SIZE ? + PPA_BURST_SIZE : 1; if (r == (unsigned char) 0xc0) - status = ppa_out(dev, cmd->SCp.ptr, fast); + status = ppa_out(dev, scsi_pointer->ptr, fast); else - status = ppa_in(dev, cmd->SCp.ptr, fast); + status = ppa_in(dev, scsi_pointer->ptr, fast); - cmd->SCp.ptr += fast; - cmd->SCp.this_residual -= fast; + scsi_pointer->ptr += fast; + scsi_pointer->this_residual -= fast; if (!status) { ppa_fail(dev, DID_BUS_BUSY); return -1; /* ERROR_RETURN */ } - if (cmd->SCp.buffer && !cmd->SCp.this_residual) { + if (scsi_pointer->buffer && !scsi_pointer->this_residual) { /* if scatter/gather, advance to the next segment */ - if (cmd->SCp.buffers_residual--) { - cmd->SCp.buffer = sg_next(cmd->SCp.buffer); - cmd->SCp.this_residual = - cmd->SCp.buffer->length; - cmd->SCp.ptr = sg_virt(cmd->SCp.buffer); + if (scsi_pointer->buffers_residual--) { + scsi_pointer->buffer = + sg_next(scsi_pointer->buffer); + scsi_pointer->this_residual = + scsi_pointer->buffer->length; + scsi_pointer->ptr = + sg_virt(scsi_pointer->buffer); } } /* Now check to see if the drive is ready to comunicate */ @@ -658,7 +666,7 @@ static void ppa_interrupt(struct work_struct *work) } #endif - if (cmd->SCp.phase > 1) + if (ppa_scsi_pointer(cmd)->phase > 1) ppa_disconnect(dev); ppa_pb_dismiss(dev); @@ -670,6 +678,7 @@ static void ppa_interrupt(struct work_struct *work) static int ppa_engine(ppa_struct *dev, struct scsi_cmnd *cmd) { + struct scsi_pointer *scsi_pointer = ppa_scsi_pointer(cmd); unsigned short ppb = dev->base; unsigned char l = 0, h = 0; int retv; @@ -680,7 +689,7 @@ static int ppa_engine(ppa_struct *dev, struct scsi_cmnd *cmd) if (dev->failed) return 0; - switch (cmd->SCp.phase) { + switch (scsi_pointer->phase) { case 0: /* Phase 0 - Waiting for parport */ if (time_after(jiffies, dev->jstart + HZ)) { /* @@ -715,7 +724,7 @@ static int ppa_engine(ppa_struct *dev, struct scsi_cmnd *cmd) return 1; /* Try again in a jiffy */ } } - cmd->SCp.phase++; + scsi_pointer->phase++; } fallthrough; @@ -724,7 +733,7 @@ static int ppa_engine(ppa_struct *dev, struct scsi_cmnd *cmd) ppa_fail(dev, DID_NO_CONNECT); return 0; } - cmd->SCp.phase++; + scsi_pointer->phase++; fallthrough; case 3: /* Phase 3 - Ready to accept a command */ @@ -734,21 +743,22 @@ static int ppa_engine(ppa_struct *dev, struct scsi_cmnd *cmd) if (!ppa_send_command(cmd)) return 0; - cmd->SCp.phase++; + scsi_pointer->phase++; fallthrough; case 4: /* Phase 4 - Setup scatter/gather buffers */ if (scsi_bufflen(cmd)) { - cmd->SCp.buffer = scsi_sglist(cmd); - cmd->SCp.this_residual = cmd->SCp.buffer->length; - cmd->SCp.ptr = sg_virt(cmd->SCp.buffer); + scsi_pointer->buffer = scsi_sglist(cmd); + scsi_pointer->this_residual = + scsi_pointer->buffer->length; + scsi_pointer->ptr = sg_virt(scsi_pointer->buffer); } else { - cmd->SCp.buffer = NULL; - cmd->SCp.this_residual = 0; - cmd->SCp.ptr = NULL; + scsi_pointer->buffer = NULL; + scsi_pointer->this_residual = 0; + scsi_pointer->ptr = NULL; } - cmd->SCp.buffers_residual = scsi_sg_count(cmd) - 1; - cmd->SCp.phase++; + scsi_pointer->buffers_residual = scsi_sg_count(cmd) - 1; + scsi_pointer->phase++; fallthrough; case 5: /* Phase 5 - Data transfer stage */ @@ -761,7 +771,7 @@ static int ppa_engine(ppa_struct *dev, struct scsi_cmnd *cmd) return 0; if (retv == 0) return 1; - cmd->SCp.phase++; + scsi_pointer->phase++; fallthrough; case 6: /* Phase 6 - Read status/message */ @@ -798,7 +808,7 @@ static int ppa_queuecommand_lck(struct scsi_cmnd *cmd) dev->jstart = jiffies; dev->cur_cmd = cmd; cmd->result = DID_ERROR << 16; /* default return code */ - cmd->SCp.phase = 0; /* bus free */ + ppa_scsi_pointer(cmd)->phase = 0; /* bus free */ schedule_delayed_work(&dev->ppa_tq, 0); @@ -839,7 +849,7 @@ static int ppa_abort(struct scsi_cmnd *cmd) * have tied the SCSI_MESSAGE line high in the interface */ - switch (cmd->SCp.phase) { + switch (ppa_scsi_pointer(cmd)->phase) { case 0: /* Do not have access to parport */ case 1: /* Have not connected to interface */ dev->cur_cmd = NULL; /* Forget the problem */ @@ -861,7 +871,7 @@ static int ppa_reset(struct scsi_cmnd *cmd) { ppa_struct *dev = ppa_dev(cmd->device->host); - if (cmd->SCp.phase) + if (ppa_scsi_pointer(cmd)->phase) ppa_disconnect(dev); dev->cur_cmd = NULL; /* Forget the problem */ @@ -976,6 +986,7 @@ static struct scsi_host_template ppa_template = { .sg_tablesize = SG_ALL, .can_queue = 1, .slave_alloc = ppa_adjust_queue, + .cmd_size = sizeof(struct scsi_pointer), }; /*************************************************************************** From patchwork Fri Feb 11 22:32:39 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542012 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5A640C433F5 for ; Fri, 11 Feb 2022 22:34:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354162AbiBKWel (ORCPT ); Fri, 11 Feb 2022 17:34:41 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34510 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354156AbiBKWed (ORCPT ); Fri, 11 Feb 2022 17:34:33 -0500 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 59804D5D for ; Fri, 11 Feb 2022 14:34:31 -0800 (PST) Received: by mail-pl1-f172.google.com with SMTP id w20so5758198plq.12 for ; Fri, 11 Feb 2022 14:34:31 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=cxknL8rORaVxDDihqRXFx1elb8NLsNOt5DCGPmZQq24=; b=uhMjcHUr6atfvYwR7uTmQfsTbH2Rl6xIWTQXRp4z+KpksQQd40hpzIfybFvkOw0Kms jFTArrL8jYCDsE4qWeuP5zHEsGDA09pTuBoDv5wvd8M/bUbQ7uqfLNgJMUYmfyIMpctR dVEnKrBjTiUnQgYMjeHWnKazWryeDVrNgZObdnrT13tPfpE/T4R//ZwlJMNl+xzBBcLk IoLKIX8WjKFYBpJdufPI9AkB13eDv09kv8p9UNU0IQFcxy2w+/I6azQmls5SnrWenxzu /JfpC5FcOAESuub71jnp8yXEsHavYye2DLvfnXAcMEyTa0GIWaejeEu3/pjs51HtUQrn tTeg== X-Gm-Message-State: AOAM533HrM+3CDdvRjktW7c8qEmOAb8Og2J3r+y67p3crGZMnMv3SEF7 ZP+YcvYSzHtZK1+pUIg9kuQ= X-Google-Smtp-Source: ABdhPJwz6b+GFCw852Ct5R8LvNnCQZWgTRdVriM0WlbA1V7iNldgKNZn/hjre1/Y0E7zU5N7XNHHhw== X-Received: by 2002:a17:902:bd0a:: with SMTP id p10mr3500236pls.159.1644618870719; Fri, 11 Feb 2022 14:34:30 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.34.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:34:30 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Johannes Thumshirn , Hannes Reinecke , Himanshu Madhani , "James E.J. Bottomley" Subject: [PATCH v3 40/48] scsi: qla1280: Move the SCSI pointer to private command data Date: Fri, 11 Feb 2022 14:32:39 -0800 Message-Id: <20220211223247.14369-41-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Set .cmd_size in the SCSI host template instead of using the SCSI pointer from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Reviewed-by: Johannes Thumshirn Reviewed-by: Hannes Reinecke Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/scsi/qla1280.c | 21 ++++----------------- drivers/scsi/qla1280.h | 3 +-- 2 files changed, 5 insertions(+), 19 deletions(-) diff --git a/drivers/scsi/qla1280.c b/drivers/scsi/qla1280.c index 1dc56f4c89d8..0ab595c0870a 100644 --- a/drivers/scsi/qla1280.c +++ b/drivers/scsi/qla1280.c @@ -477,13 +477,6 @@ __setup("qla1280=", qla1280_setup); #endif -/* - * We use the scsi_pointer structure that's included with each scsi_command - * to overlay our struct srb over it. qla1280_init() checks that a srb is not - * bigger than a scsi_pointer. - */ - -#define CMD_SP(Cmnd) &Cmnd->SCp #define CMD_CDBLEN(Cmnd) Cmnd->cmd_len #define CMD_CDBP(Cmnd) Cmnd->cmnd #define CMD_SNSP(Cmnd) Cmnd->sense_buffer @@ -693,7 +686,7 @@ static int qla1280_queuecommand_lck(struct scsi_cmnd *cmd) { struct Scsi_Host *host = cmd->device->host; struct scsi_qla_host *ha = (struct scsi_qla_host *)host->hostdata; - struct srb *sp = (struct srb *)CMD_SP(cmd); + struct srb *sp = scsi_cmd_priv(cmd); int status; sp->cmd = cmd; @@ -828,7 +821,7 @@ qla1280_error_action(struct scsi_cmnd *cmd, enum action action) ENTER("qla1280_error_action"); ha = (struct scsi_qla_host *)(CMD_HOST(cmd)->hostdata); - sp = (struct srb *)CMD_SP(cmd); + sp = scsi_cmd_priv(cmd); bus = SCSI_BUS_32(cmd); target = SCSI_TCN_32(cmd); lun = SCSI_LUN_32(cmd); @@ -3959,7 +3952,7 @@ __qla1280_print_scsi_cmd(struct scsi_cmnd *cmd) int i; ha = (struct scsi_qla_host *)host->hostdata; - sp = (struct srb *)CMD_SP(cmd); + sp = scsi_cmd_priv(cmd); printk("SCSI Command @= 0x%p, Handle=0x%p\n", cmd, CMD_HANDLE(cmd)); printk(" chan=%d, target = 0x%02x, lun = 0x%02x, cmd_len = 0x%02x\n", SCSI_BUS_32(cmd), SCSI_TCN_32(cmd), SCSI_LUN_32(cmd), @@ -3979,7 +3972,6 @@ __qla1280_print_scsi_cmd(struct scsi_cmnd *cmd) } */ printk(" tag=%d, transfersize=0x%x \n", scsi_cmd_to_rq(cmd)->tag, cmd->transfersize); - printk(" SP=0x%p\n", CMD_SP(cmd)); printk(" underflow size = 0x%x, direction=0x%x\n", cmd->underflow, cmd->sc_data_direction); } @@ -4139,6 +4131,7 @@ static struct scsi_host_template qla1280_driver_template = { .can_queue = MAX_OUTSTANDING_COMMANDS, .this_id = -1, .sg_tablesize = SG_ALL, + .cmd_size = sizeof(struct srb), }; @@ -4351,12 +4344,6 @@ static struct pci_driver qla1280_pci_driver = { static int __init qla1280_init(void) { - if (sizeof(struct srb) > sizeof(struct scsi_pointer)) { - printk(KERN_WARNING - "qla1280: struct srb too big, aborting\n"); - return -EINVAL; - } - #ifdef MODULE /* * If we are called as a module, the qla1280 pointer may not be null diff --git a/drivers/scsi/qla1280.h b/drivers/scsi/qla1280.h index e7820b5bca38..d309e2ca14de 100644 --- a/drivers/scsi/qla1280.h +++ b/drivers/scsi/qla1280.h @@ -87,8 +87,7 @@ #define RESPONSE_ENTRY_CNT 63 /* Number of response entries. */ /* - * SCSI Request Block structure (sp) that is placed - * on cmd->SCp location of every I/O + * SCSI Request Block structure (sp) that occurs after each struct scsi_cmnd. */ struct srb { struct list_head list; /* (8/16) LU queue */ From patchwork Fri Feb 11 22:32:40 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542286 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5073CC43217 for ; Fri, 11 Feb 2022 22:34:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354078AbiBKWen (ORCPT ); Fri, 11 Feb 2022 17:34:43 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34536 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354160AbiBKWee (ORCPT ); Fri, 11 Feb 2022 17:34:34 -0500 Received: from mail-pf1-f174.google.com (mail-pf1-f174.google.com [209.85.210.174]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 30B1BD61 for ; Fri, 11 Feb 2022 14:34:33 -0800 (PST) Received: by mail-pf1-f174.google.com with SMTP id 9so15764323pfx.12 for ; Fri, 11 Feb 2022 14:34:33 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=obqFmcwegg7HOsCBvXyobrImMxvfaN5PxLK3qmy5aNY=; b=6kQ0fb/vmtwh2owKuLH0ra7vptlJUKmeBmT8Ych3uTASsvWF4KM5FmW2Ps1jBF+BOY nIVXvrSI7i4nHPvjLhMm+jHkiVG1dQzlpeLqq/rD73fD5pDtu2VmUDogSDSMd+1heN8i vvXnei79h73BntVWw56GukexxMSgeCs6LUlShbP8WsZCiKsGW3U8pv7HWRhSVZI0sg4s vLUY90lM/pFKQKgD4D0NWAnD1PNKbLGJWXwxhyVzPs1WqiYf6MaJS+eASmUN1N0Kkzeo Dh2DsBaWi0gvkzrOwyXeRS+fv4LVV1C+kh8jVg9zOoIGaGD0cH5TgI6bUkgM76Z4DL3E iNWw== X-Gm-Message-State: AOAM533bwYbdcPQ+uaonFUvWNAh6wav4772m064YfZkHrmbF30slQEnr PF1XbbmKYIlOJE5LTIhMEGti0ChmlDhmPswg X-Google-Smtp-Source: ABdhPJzckR8WG5Qt5b5cuEcNpSYXwlMxH49GmmMaBU+fVJ3aisqF1dd6QSw1r261UnHA8b4oc9sGyQ== X-Received: by 2002:a63:5b1c:: with SMTP id p28mr2705124pgb.227.1644618872560; Fri, 11 Feb 2022 14:34:32 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.34.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:34:31 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Nilesh Javali , "Ewan D . Milne" , Himanshu Madhani , Hannes Reinecke , Daniel Wagner , GR-QLogic-Storage-Upstream@marvell.com, "James E.J. Bottomley" Subject: [PATCH v3 41/48] scsi: qla2xxx: Stop using the SCSI pointer Date: Fri, 11 Feb 2022 14:32:40 -0800 Message-Id: <20220211223247.14369-42-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Instead of using the SCp.ptr field to track whether or not a command is in flight, use the sp->type field to track this information. sp->type must be set for proper operation of the qla2xxx driver. See e.g. the switch (sp->type) statement in qla2x00_ct_entry(). This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Cc: Nilesh Javali Cc: Ewan D. Milne Reviewed-by: Himanshu Madhani Reviewed-by: Hannes Reinecke Reviewed-by: Daniel Wagner Signed-off-by: Bart Van Assche --- drivers/scsi/qla2xxx/qla_def.h | 2 -- drivers/scsi/qla2xxx/qla_os.c | 13 +++++-------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index 9ebf4a234d9a..064496f9eba3 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h @@ -5191,8 +5191,6 @@ struct secure_flash_update_block_pk { #define QLA_DSDS_PER_IOCB 37 -#define CMD_SP(Cmnd) ((Cmnd)->SCp.ptr) - #define QLA_SG_ALL 1024 enum nexus_wait_type { diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index abcd30917263..6c45379a5306 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c @@ -730,7 +730,7 @@ void qla2x00_sp_compl(srb_t *sp, int res) sp->free(sp); cmd->result = res; - CMD_SP(cmd) = NULL; + sp->type = 0; scsi_done(cmd); if (comp) complete(comp); @@ -821,7 +821,7 @@ void qla2xxx_qpair_sp_compl(srb_t *sp, int res) sp->free(sp); cmd->result = res; - CMD_SP(cmd) = NULL; + sp->type = 0; scsi_done(cmd); if (comp) complete(comp); @@ -923,8 +923,6 @@ qla2xxx_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd) sp->u.scmd.cmd = cmd; sp->type = SRB_SCSI_CMD; - - CMD_SP(cmd) = (void *)sp; sp->free = qla2x00_sp_free_dma; sp->done = qla2x00_sp_compl; @@ -1012,7 +1010,6 @@ qla2xxx_mqueuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd, sp->u.scmd.cmd = cmd; sp->type = SRB_SCSI_CMD; - CMD_SP(cmd) = (void *)sp; sp->free = qla2xxx_qpair_sp_free_dma; sp->done = qla2xxx_qpair_sp_compl; @@ -1057,6 +1054,7 @@ qla2x00_eh_wait_on_command(struct scsi_cmnd *cmd) unsigned long wait_iter = ABORT_WAIT_ITER; scsi_qla_host_t *vha = shost_priv(cmd->device->host); struct qla_hw_data *ha = vha->hw; + srb_t *sp = scsi_cmd_priv(cmd); int ret = QLA_SUCCESS; if (unlikely(pci_channel_offline(ha->pdev)) || ha->flags.eeh_busy) { @@ -1065,10 +1063,9 @@ qla2x00_eh_wait_on_command(struct scsi_cmnd *cmd) return ret; } - while (CMD_SP(cmd) && wait_iter--) { + while (sp->type && wait_iter--) msleep(ABORT_POLLING_PERIOD); - } - if (CMD_SP(cmd)) + if (sp->type) ret = QLA_FUNCTION_FAILED; return ret; From patchwork Fri Feb 11 22:32:41 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542285 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id AC37DC433EF for ; Fri, 11 Feb 2022 22:34:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346657AbiBKWeo (ORCPT ); Fri, 11 Feb 2022 17:34:44 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34400 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354152AbiBKWei (ORCPT ); Fri, 11 Feb 2022 17:34:38 -0500 Received: from mail-pj1-f51.google.com (mail-pj1-f51.google.com [209.85.216.51]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DB4F6D64 for ; Fri, 11 Feb 2022 14:34:34 -0800 (PST) Received: by mail-pj1-f51.google.com with SMTP id a11-20020a17090a740b00b001b8b506c42fso13315569pjg.0 for ; Fri, 11 Feb 2022 14:34:34 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8cAj+tJuPIKozznNrLmzscvz/gVTHABu45oATBtvY+g=; b=w95Hq2EIgZgpSTxnqAvzrwCWXXfIrocJLc6VZ7jph8QR5FYq1ke8UXGaTV6hxmvM7b ZPdM/ZCdr/E6VoSY6BDX8gDp9MZp6Jz7eu5K6gapGTWWZ773GBS9knRYuwAhKUrhfkqj sCxSlO9NJGxpqMTzNadhtXwfrFU4hbp8wtxBxHTBgCD22h9JZ4n/HtaVsKzlCq04vmfT n3zBya08qm9ebe8DKBKpDiNutlvUbigZYrAsNAlBF79OisRMmBmfUlP8K5cUWU1lcGa7 IDRp9+lAC5QjUbTkOUH+rWdAAMF0ro2MLjucnL0MeYdI6S/4OEY7MZ2OIezywy9ZIZom XQkg== X-Gm-Message-State: AOAM530oCXfYs3wz6nbJZ/d9zZeAjBvLwouNPb7v71S+hWpYBkNKEhl1 15h0V0zZgEhHIamDvaCSyQw= X-Google-Smtp-Source: ABdhPJx+H0eAtmMPFpTdcXsIzB/PBOwfpZHPugtUm2kBPJFDr2e9cLFoBSzvrKGBWgIuij446EUDYA== X-Received: by 2002:a17:90b:2516:: with SMTP id ns22mr2585253pjb.242.1644618874293; Fri, 11 Feb 2022 14:34:34 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.34.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:34:33 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Johannes Thumshirn , Hannes Reinecke , Himanshu Madhani , Don Brace , "James E.J. Bottomley" Subject: [PATCH v3 42/48] scsi: smartpqi: Stop using the SCSI pointer Date: Fri, 11 Feb 2022 14:32:41 -0800 Message-Id: <20220211223247.14369-43-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Set .cmd_size in the SCSI host template instead of using the SCSI pointer from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Reviewed-by: Johannes Thumshirn Reviewed-by: Hannes Reinecke Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/scsi/smartpqi/smartpqi_init.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c index f0897d587454..74426974309f 100644 --- a/drivers/scsi/smartpqi/smartpqi_init.c +++ b/drivers/scsi/smartpqi/smartpqi_init.c @@ -54,6 +54,15 @@ MODULE_DESCRIPTION("Driver for Microchip Smart Family Controller version " MODULE_VERSION(DRIVER_VERSION); MODULE_LICENSE("GPL"); +struct pqi_cmd_priv { + int this_residual; +}; + +static struct pqi_cmd_priv *pqi_cmd_priv(struct scsi_cmnd *cmd) +{ + return scsi_cmd_priv(cmd); +} + static void pqi_take_ctrl_offline(struct pqi_ctrl_info *ctrl_info, enum pqi_ctrl_shutdown_reason ctrl_shutdown_reason); static void pqi_ctrl_offline_worker(struct work_struct *work); @@ -5555,7 +5564,7 @@ static void pqi_aio_io_complete(struct pqi_io_request *io_request, scsi_dma_unmap(scmd); if (io_request->status == -EAGAIN || pqi_raid_bypass_retry_needed(io_request)) { set_host_byte(scmd, DID_IMM_RETRY); - scmd->SCp.this_residual++; + pqi_cmd_priv(scmd)->this_residual++; } pqi_free_io_request(io_request); @@ -5779,7 +5788,7 @@ static inline bool pqi_is_bypass_eligible_request(struct scsi_cmnd *scmd) if (blk_rq_is_passthrough(scsi_cmd_to_rq(scmd))) return false; - return scmd->SCp.this_residual == 0; + return pqi_cmd_priv(scmd)->this_residual == 0; } /* @@ -7159,6 +7168,7 @@ static struct scsi_host_template pqi_driver_template = { .map_queues = pqi_map_queues, .sdev_groups = pqi_sdev_groups, .shost_groups = pqi_shost_groups, + .cmd_size = sizeof(struct pqi_cmd_priv), }; static int pqi_register_scsi(struct pqi_ctrl_info *ctrl_info) From patchwork Fri Feb 11 22:32:42 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542010 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id DA777C433F5 for ; Fri, 11 Feb 2022 22:34:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345891AbiBKWeo (ORCPT ); Fri, 11 Feb 2022 17:34:44 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34440 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354164AbiBKWei (ORCPT ); Fri, 11 Feb 2022 17:34:38 -0500 Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 90430D68 for ; Fri, 11 Feb 2022 14:34:36 -0800 (PST) Received: by mail-pf1-f171.google.com with SMTP id 9so15764467pfx.12 for ; Fri, 11 Feb 2022 14:34:36 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=wWx0oD4y/h5fR0o1HnTS+lemIDFT4V4tl6fYkeJP2UA=; b=gR6s1xfWliH2WGynEVBzOChK1m6FMr9JMyLWLPoxbKkSSOgtvUpVT+sp6SSIW1eUFc dmoehiC9uttdXGKemXu05kH05eistOxsXepQQ8DrSmUcNYy6qWGNmuvJzavEKb86MaSC 9CGfpTbvOJGtW+86zqnEMbiv8C/Rsp7RAeq9n27Xf599l2hu2N/Yob6v6ibfVWkRwzoR csM5qK33zs7gtvqp4z7Dao4jyOFTorbJNAS3buoVdpTDwYQ8dpc1iGws+wnO4T0TLonj x+Fv37XAvKaS79B+/mYue+SWqss8Bjvw9XZTGM3wbtWeGUovE0wzw0gvHea18C9rdf4E Go3A== X-Gm-Message-State: AOAM533ykuHpRdE+9apoF1HczVuKMUrdGhkJ7AKDNsTh2HBaUv7Lvpez s5QsdClqaqJ9HCDXHjP5/ug= X-Google-Smtp-Source: ABdhPJwhyBrUUm+SEASY7hEtsS5FCZe8JHYV8of6PurKjGVIYoRva/ufL+LffTxeDK20Z7jLKSvEvw== X-Received: by 2002:a62:b605:: with SMTP id j5mr3664072pff.25.1644618875943; Fri, 11 Feb 2022 14:34:35 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.34.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:34:35 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Johannes Thumshirn , Hannes Reinecke , Himanshu Madhani , Matthew Wilcox , "James E.J. Bottomley" Subject: [PATCH v3 43/48] scsi: sym53c8xx_2: Move the SCSI pointer to private command data Date: Fri, 11 Feb 2022 14:32:42 -0800 Message-Id: <20220211223247.14369-44-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Set .cmd_size in the SCSI host template instead of using the SCSI pointer from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Reviewed-by: Johannes Thumshirn Reviewed-by: Hannes Reinecke Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/scsi/sym53c8xx_2/sym_glue.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/sym53c8xx_2/sym_glue.c b/drivers/scsi/sym53c8xx_2/sym_glue.c index b04bfde65e3f..2e2852bd5860 100644 --- a/drivers/scsi/sym53c8xx_2/sym_glue.c +++ b/drivers/scsi/sym53c8xx_2/sym_glue.c @@ -118,7 +118,7 @@ struct sym_ucmd { /* Override the SCSI pointer structure */ struct completion *eh_done; /* SCSI error handling */ }; -#define SYM_UCMD_PTR(cmd) ((struct sym_ucmd *)(&(cmd)->SCp)) +#define SYM_UCMD_PTR(cmd) ((struct sym_ucmd *)scsi_cmd_priv(cmd)) #define SYM_SOFTC_PTR(cmd) sym_get_hcb(cmd->device->host) /* @@ -127,7 +127,6 @@ struct sym_ucmd { /* Override the SCSI pointer structure */ void sym_xpt_done(struct sym_hcb *np, struct scsi_cmnd *cmd) { struct sym_ucmd *ucmd = SYM_UCMD_PTR(cmd); - BUILD_BUG_ON(sizeof(struct scsi_pointer) < sizeof(struct sym_ucmd)); if (ucmd->eh_done) complete(ucmd->eh_done); @@ -1630,6 +1629,7 @@ static struct scsi_host_template sym2_template = { .module = THIS_MODULE, .name = "sym53c8xx", .info = sym53c8xx_info, + .cmd_size = sizeof(struct sym_ucmd), .queuecommand = sym53c8xx_queue_command, .slave_alloc = sym53c8xx_slave_alloc, .slave_configure = sym53c8xx_slave_configure, From patchwork Fri Feb 11 22:32:43 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542284 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 97046C433F5 for ; Fri, 11 Feb 2022 22:34:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354168AbiBKWeu (ORCPT ); Fri, 11 Feb 2022 17:34:50 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34594 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354159AbiBKWek (ORCPT ); Fri, 11 Feb 2022 17:34:40 -0500 Received: from mail-pj1-f49.google.com (mail-pj1-f49.google.com [209.85.216.49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6DE91D53; Fri, 11 Feb 2022 14:34:38 -0800 (PST) Received: by mail-pj1-f49.google.com with SMTP id n19-20020a17090ade9300b001b9892a7bf9so813418pjv.5; Fri, 11 Feb 2022 14:34:38 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=efotMu/0Uf1dkcc1uJu6R6InV4FTKLkaJ5+cOM9IBjM=; b=17TpFTml2b05/5mfD6Z01Ps5YD3+ghtkXinb35s+NM2wfRqyzCiDQPttAwCRneRI6j d9d4IHJz9nXx4eu1NVSuAqTQruoC//EEwdgX4yns64hrMYDe9tZuGvdl9paYy9nquiie IevN7O2Jxw68jA+67G/DDLWA3Ywb5+Oy4fXhsz40hWwleIHm+WkwncY+5TG+Bgsf/Fui xyNV1pNKfU0eVH0kv18HU/ntPG32uwqB6CwMCFYUgYzQCU60X9hj/t3w03BJkrVrwRp7 Kyg32dOKzdHhcoP5RHu3HlAaYnqDHCgj4Y/vbne9u+2+VgvzqXRXDCJgSZyt18CqJHyJ VNCQ== X-Gm-Message-State: AOAM532jtNrLRt1a3yhagz3ZrALagn6BaZav6y/KvDiSA1CQ6Nczs+1Z oMq10aeMMZPI8xmbu4Xgu94= X-Google-Smtp-Source: ABdhPJxbWjAZr7UkuWMmvXxUU540U7D0f2rG7iWnQXIIauw/lyxKEmcdiwKqVaCBINL49y7JS4CQfQ== X-Received: by 2002:a17:90b:4d8c:: with SMTP id oj12mr2567165pjb.111.1644618877802; Fri, 11 Feb 2022 14:34:37 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.34.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:34:37 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , linux-usb@vger.kernel.org, Greg Kroah-Hartman , Oliver Neukum , Johannes Thumshirn , Hannes Reinecke , Himanshu Madhani , Alan Stern Subject: [PATCH v3 44/48] scsi: usb: Stop using the SCSI pointer Date: Fri, 11 Feb 2022 14:32:43 -0800 Message-Id: <20220211223247.14369-45-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Set scsi_host_template.cmd_size instead of using the SCSI pointer for storing driver-private data. Change the type of the argument of uas_add_work() from struct uas_cmd_info * into struct scsi_cmnd * because it is easier to convert a SCSI command pointer into a uas_cmd_info pointer than the other way around. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Cc: linux-usb@vger.kernel.org Acked-by: Greg Kroah-Hartman Acked-by: Oliver Neukum Reviewed-by: Johannes Thumshirn Reviewed-by: Hannes Reinecke Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/usb/storage/uas.c | 43 ++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/drivers/usb/storage/uas.c b/drivers/usb/storage/uas.c index 7f2944729ecd..84dc270f6f73 100644 --- a/drivers/usb/storage/uas.c +++ b/drivers/usb/storage/uas.c @@ -113,7 +113,7 @@ static void uas_do_work(struct work_struct *work) continue; cmnd = devinfo->cmnd[i]; - cmdinfo = (void *)&cmnd->SCp; + cmdinfo = scsi_cmd_priv(cmnd); if (!(cmdinfo->state & IS_IN_WORK_LIST)) continue; @@ -139,10 +139,9 @@ static void uas_scan_work(struct work_struct *work) dev_dbg(&devinfo->intf->dev, "scan complete\n"); } -static void uas_add_work(struct uas_cmd_info *cmdinfo) +static void uas_add_work(struct scsi_cmnd *cmnd) { - struct scsi_pointer *scp = (void *)cmdinfo; - struct scsi_cmnd *cmnd = container_of(scp, struct scsi_cmnd, SCp); + struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd); struct uas_dev_info *devinfo = cmnd->device->hostdata; lockdep_assert_held(&devinfo->lock); @@ -163,7 +162,7 @@ static void uas_zap_pending(struct uas_dev_info *devinfo, int result) continue; cmnd = devinfo->cmnd[i]; - cmdinfo = (void *)&cmnd->SCp; + cmdinfo = scsi_cmd_priv(cmnd); uas_log_cmd_state(cmnd, __func__, 0); /* Sense urbs were killed, clear COMMAND_INFLIGHT manually */ cmdinfo->state &= ~COMMAND_INFLIGHT; @@ -200,15 +199,14 @@ static void uas_sense(struct urb *urb, struct scsi_cmnd *cmnd) static void uas_log_cmd_state(struct scsi_cmnd *cmnd, const char *prefix, int status) { - struct uas_cmd_info *ci = (void *)&cmnd->SCp; - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; + struct uas_cmd_info *ci = scsi_cmd_priv(cmnd); if (status == -ENODEV) /* too late */ return; scmd_printk(KERN_INFO, cmnd, "%s %d uas-tag %d inflight:%s%s%s%s%s%s%s%s%s%s%s%s ", - prefix, status, cmdinfo->uas_tag, + prefix, status, ci->uas_tag, (ci->state & SUBMIT_STATUS_URB) ? " s-st" : "", (ci->state & ALLOC_DATA_IN_URB) ? " a-in" : "", (ci->state & SUBMIT_DATA_IN_URB) ? " s-in" : "", @@ -231,7 +229,7 @@ static void uas_free_unsubmitted_urbs(struct scsi_cmnd *cmnd) if (!cmnd) return; - cmdinfo = (void *)&cmnd->SCp; + cmdinfo = scsi_cmd_priv(cmnd); if (cmdinfo->state & SUBMIT_CMD_URB) usb_free_urb(cmdinfo->cmd_urb); @@ -245,7 +243,7 @@ static void uas_free_unsubmitted_urbs(struct scsi_cmnd *cmnd) static int uas_try_complete(struct scsi_cmnd *cmnd, const char *caller) { - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; + struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd); struct uas_dev_info *devinfo = (void *)cmnd->device->hostdata; lockdep_assert_held(&devinfo->lock); @@ -263,13 +261,13 @@ static int uas_try_complete(struct scsi_cmnd *cmnd, const char *caller) static void uas_xfer_data(struct urb *urb, struct scsi_cmnd *cmnd, unsigned direction) { - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; + struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd); int err; cmdinfo->state |= direction | SUBMIT_STATUS_URB; err = uas_submit_urbs(cmnd, cmnd->device->hostdata); if (err) { - uas_add_work(cmdinfo); + uas_add_work(cmnd); } } @@ -329,7 +327,7 @@ static void uas_stat_cmplt(struct urb *urb) } cmnd = devinfo->cmnd[idx]; - cmdinfo = (void *)&cmnd->SCp; + cmdinfo = scsi_cmd_priv(cmnd); if (!(cmdinfo->state & COMMAND_INFLIGHT)) { uas_log_cmd_state(cmnd, "unexpected status cmplt", 0); @@ -394,7 +392,7 @@ static void uas_stat_cmplt(struct urb *urb) static void uas_data_cmplt(struct urb *urb) { struct scsi_cmnd *cmnd = urb->context; - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; + struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd); struct uas_dev_info *devinfo = (void *)cmnd->device->hostdata; struct scsi_data_buffer *sdb = &cmnd->sdb; unsigned long flags; @@ -446,7 +444,7 @@ static struct urb *uas_alloc_data_urb(struct uas_dev_info *devinfo, gfp_t gfp, enum dma_data_direction dir) { struct usb_device *udev = devinfo->udev; - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; + struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd); struct urb *urb = usb_alloc_urb(0, gfp); struct scsi_data_buffer *sdb = &cmnd->sdb; unsigned int pipe = (dir == DMA_FROM_DEVICE) @@ -468,7 +466,7 @@ static struct urb *uas_alloc_sense_urb(struct uas_dev_info *devinfo, gfp_t gfp, struct scsi_cmnd *cmnd) { struct usb_device *udev = devinfo->udev; - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; + struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd); struct urb *urb = usb_alloc_urb(0, gfp); struct sense_iu *iu; @@ -496,7 +494,7 @@ static struct urb *uas_alloc_cmd_urb(struct uas_dev_info *devinfo, gfp_t gfp, { struct usb_device *udev = devinfo->udev; struct scsi_device *sdev = cmnd->device; - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; + struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd); struct urb *urb = usb_alloc_urb(0, gfp); struct command_iu *iu; int len; @@ -558,7 +556,7 @@ static struct urb *uas_submit_sense_urb(struct scsi_cmnd *cmnd, gfp_t gfp) static int uas_submit_urbs(struct scsi_cmnd *cmnd, struct uas_dev_info *devinfo) { - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; + struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd); struct urb *urb; int err; @@ -637,12 +635,10 @@ static int uas_queuecommand_lck(struct scsi_cmnd *cmnd) { struct scsi_device *sdev = cmnd->device; struct uas_dev_info *devinfo = sdev->hostdata; - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; + struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd); unsigned long flags; int idx, err; - BUILD_BUG_ON(sizeof(struct uas_cmd_info) > sizeof(struct scsi_pointer)); - /* Re-check scsi_block_requests now that we've the host-lock */ if (cmnd->device->host->host_self_blocked) return SCSI_MLQUEUE_DEVICE_BUSY; @@ -712,7 +708,7 @@ static int uas_queuecommand_lck(struct scsi_cmnd *cmnd) spin_unlock_irqrestore(&devinfo->lock, flags); return SCSI_MLQUEUE_DEVICE_BUSY; } - uas_add_work(cmdinfo); + uas_add_work(cmnd); } devinfo->cmnd[idx] = cmnd; @@ -730,7 +726,7 @@ static DEF_SCSI_QCMD(uas_queuecommand) */ static int uas_eh_abort_handler(struct scsi_cmnd *cmnd) { - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; + struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd); struct uas_dev_info *devinfo = (void *)cmnd->device->hostdata; struct urb *data_in_urb = NULL; struct urb *data_out_urb = NULL; @@ -910,6 +906,7 @@ static struct scsi_host_template uas_host_template = { .this_id = -1, .skip_settle_delay = 1, .dma_boundary = PAGE_SIZE - 1, + .cmd_size = sizeof(struct uas_cmd_info), }; #define UNUSUAL_DEV(id_vendor, id_product, bcdDeviceMin, bcdDeviceMax, \ From patchwork Fri Feb 11 22:32:44 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542009 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7DB6CC4332F for ; Fri, 11 Feb 2022 22:34:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354170AbiBKWev (ORCPT ); Fri, 11 Feb 2022 17:34:51 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34606 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354163AbiBKWel (ORCPT ); Fri, 11 Feb 2022 17:34:41 -0500 Received: from mail-pf1-f175.google.com (mail-pf1-f175.google.com [209.85.210.175]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 31AECD54 for ; Fri, 11 Feb 2022 14:34:40 -0800 (PST) Received: by mail-pf1-f175.google.com with SMTP id 9so15764672pfx.12 for ; Fri, 11 Feb 2022 14:34:40 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=pnNf2VjhuumTX82Rj4aqfhA6PYW6ngKJyQvWPbUR7rY=; b=NrhIY9MdKPEgEFPGe+Zi/crcah0TWUKcdlMg994DMjXWKGqLvj9VL0ELrPWwhIEmva EepGeuChOMD/iA2mx54i6BF3HIhyFj7s6QXz4zy5FWhRPDb+AppOBqy4hFWkQVdLEmMz 6mo892JrpOJg9P0Dp9kmhHKscXuc8Bz06gSDcufbBYYV0QQjE6dOBuwMoX4r+nU9waQJ YCXPkEwx6hyoNl7kcam6O7gvxRPAmNS9eP5gRK4xArJ/jIXm7Ysh8e9uhaiWTdofBUvm InOk6nlk+nocHi580aysb/97cbKwahZQZzP8OLJPeAix+LV0eUnq4wpctOLZVBXq3sYD OvZg== X-Gm-Message-State: AOAM533/7hkwM4rIUAqHqzaK5NPm4RJCrxd5Kty9Ll6gX4guL4xHsf9m iERVS08Vg7M9U+ekjZAH8ZE= X-Google-Smtp-Source: ABdhPJww4v0KarZiEDdaxfOrag3zWps2LeESXxIHnjZI2OdEWlytGG8bQ5Gu2Q0AAUtAOMbSunNCWQ== X-Received: by 2002:aa7:8b08:: with SMTP id f8mr3696361pfd.47.1644618879603; Fri, 11 Feb 2022 14:34:39 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.34.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:34:38 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Ondrej Zary , Christoph Hellwig , Johannes Thumshirn , Hannes Reinecke , Himanshu Madhani , "James E.J. Bottomley" Subject: [PATCH v3 45/48] scsi: wd719x: Stop using the SCSI pointer Date: Fri, 11 Feb 2022 14:32:44 -0800 Message-Id: <20220211223247.14369-46-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Move the DMA handle into the per-command private data instead of using the SCSI pointer from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Cc: Ondrej Zary Cc: Christoph Hellwig Reviewed-by: Johannes Thumshirn Reviewed-by: Hannes Reinecke Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/scsi/wd719x.c | 12 ++++++------ drivers/scsi/wd719x.h | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/drivers/scsi/wd719x.c b/drivers/scsi/wd719x.c index 1a7947554581..f341b79d8036 100644 --- a/drivers/scsi/wd719x.c +++ b/drivers/scsi/wd719x.c @@ -196,7 +196,7 @@ static void wd719x_finish_cmd(struct wd719x_scb *scb, int result) dma_unmap_single(&wd->pdev->dev, scb->phys, sizeof(struct wd719x_scb), DMA_BIDIRECTIONAL); scsi_dma_unmap(cmd); - dma_unmap_single(&wd->pdev->dev, cmd->SCp.dma_handle, + dma_unmap_single(&wd->pdev->dev, scb->dma_handle, SCSI_SENSE_BUFFERSIZE, DMA_FROM_DEVICE); cmd->result = result << 16; @@ -229,11 +229,11 @@ static int wd719x_queuecommand(struct Scsi_Host *sh, struct scsi_cmnd *cmd) /* map sense buffer */ scb->sense_buf_length = SCSI_SENSE_BUFFERSIZE; - cmd->SCp.dma_handle = dma_map_single(&wd->pdev->dev, cmd->sense_buffer, - SCSI_SENSE_BUFFERSIZE, DMA_FROM_DEVICE); - if (dma_mapping_error(&wd->pdev->dev, cmd->SCp.dma_handle)) + scb->dma_handle = dma_map_single(&wd->pdev->dev, cmd->sense_buffer, + SCSI_SENSE_BUFFERSIZE, DMA_FROM_DEVICE); + if (dma_mapping_error(&wd->pdev->dev, scb->dma_handle)) goto out_unmap_scb; - scb->sense_buf = cpu_to_le32(cmd->SCp.dma_handle); + scb->sense_buf = cpu_to_le32(scb->dma_handle); /* request autosense */ scb->SCB_options |= WD719X_SCB_FLAGS_AUTO_REQUEST_SENSE; @@ -288,7 +288,7 @@ static int wd719x_queuecommand(struct Scsi_Host *sh, struct scsi_cmnd *cmd) return 0; out_unmap_sense: - dma_unmap_single(&wd->pdev->dev, cmd->SCp.dma_handle, + dma_unmap_single(&wd->pdev->dev, scb->dma_handle, SCSI_SENSE_BUFFERSIZE, DMA_FROM_DEVICE); out_unmap_scb: dma_unmap_single(&wd->pdev->dev, scb->phys, sizeof(*scb), diff --git a/drivers/scsi/wd719x.h b/drivers/scsi/wd719x.h index abaabd419a54..966ab0fb4621 100644 --- a/drivers/scsi/wd719x.h +++ b/drivers/scsi/wd719x.h @@ -56,6 +56,7 @@ struct wd719x_scb { u8 flags[2]; /* 62-63 SCB specific flags (local to each thread) */ /* everything below is for driver use (not used by card) */ dma_addr_t phys; /* bus address of the SCB */ + dma_addr_t dma_handle; struct scsi_cmnd *cmd; /* a copy of the pointer we were passed */ struct list_head list; struct wd719x_sglist sg_list[WD719X_SG] __aligned(8); /* SG list */ From patchwork Fri Feb 11 22:32:45 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542283 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C7F69C43217 for ; Fri, 11 Feb 2022 22:34:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354101AbiBKWex (ORCPT ); Fri, 11 Feb 2022 17:34:53 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34664 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354160AbiBKWer (ORCPT ); Fri, 11 Feb 2022 17:34:47 -0500 Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5ABF5D57 for ; Fri, 11 Feb 2022 14:34:42 -0800 (PST) Received: by mail-pl1-f169.google.com with SMTP id l9so4169634plg.0 for ; Fri, 11 Feb 2022 14:34:42 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=WEZpjTISkRnssBmgxMOGJqsMu7OjeIUszjwLIBLxk6c=; b=jXaTK0Hblf3VF+BXpGxkz5FovSino9qpmIvsR5koOx+L83rvqcrKaKEIm8NT75p4FN PdiYidDhVz3/y5YEYEtHFYLxR+J7+HqObirsh2Q2PDlgyhFx84A+x69adLroXfJWYFby ZPRBubvnbAz1wrM6/NdDGAx0iPLq4lwGBlSr5ID+zuRfKU8Dzar0FcymP9p74ulvD1h1 Lx9/Va8MjyDfIZmjlB2lMVa/qd0PhdrVnYMCzM+r7FdAOV5xrt07haamgt62vsQPFUVF LxeD0JEjl+GrULpey7YAXsxlVZhnIMtmEUvDJyhYN/yqNjTPCnJxoDheojFsKsy+Zef3 RTkg== X-Gm-Message-State: AOAM530VGD6ezQDUQKYabdAZIV6R1biqzLiVo10Ih4xsdQK4T8ddgWY2 N+CtEP2DFlCOKPi/WbbeaQo= X-Google-Smtp-Source: ABdhPJyqAyBOfZToVdDuiYbdfz3svQeLBzox97YVrhHCkaaxjubKGHx7LDr7gAwJh7G9JMgjvvcEFA== X-Received: by 2002:a17:903:186:: with SMTP id z6mr3655091plg.47.1644618881562; Fri, 11 Feb 2022 14:34:41 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.34.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:34:40 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Himanshu Madhani , "James E.J. Bottomley" Subject: [PATCH v3 46/48] scsi: wd33c93: Move the SCSI pointer to private command data Date: Fri, 11 Feb 2022 14:32:45 -0800 Message-Id: <20220211223247.14369-47-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Set .cmd_size in the SCSI host template instead of using the SCSI pointer from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/scsi/a2091.c | 19 ++++--- drivers/scsi/a3000.c | 19 ++++--- drivers/scsi/gvp11.c | 19 ++++--- drivers/scsi/mvme147.c | 10 ++-- drivers/scsi/sgiwd93.c | 18 ++++--- drivers/scsi/wd33c93.c | 119 ++++++++++++++++++++++------------------- drivers/scsi/wd33c93.h | 4 ++ 7 files changed, 117 insertions(+), 91 deletions(-) diff --git a/drivers/scsi/a2091.c b/drivers/scsi/a2091.c index bcbce23478b8..cf703a1ecdda 100644 --- a/drivers/scsi/a2091.c +++ b/drivers/scsi/a2091.c @@ -44,16 +44,17 @@ static irqreturn_t a2091_intr(int irq, void *data) static int dma_setup(struct scsi_cmnd *cmd, int dir_in) { + struct scsi_pointer *scsi_pointer = WD33C93_scsi_pointer(cmd); struct Scsi_Host *instance = cmd->device->host; struct a2091_hostdata *hdata = shost_priv(instance); struct WD33C93_hostdata *wh = &hdata->wh; struct a2091_scsiregs *regs = hdata->regs; unsigned short cntr = CNTR_PDMD | CNTR_INTEN; - unsigned long addr = virt_to_bus(cmd->SCp.ptr); + unsigned long addr = virt_to_bus(scsi_pointer->ptr); /* don't allow DMA if the physical address is bad */ if (addr & A2091_XFER_MASK) { - wh->dma_bounce_len = (cmd->SCp.this_residual + 511) & ~0x1ff; + wh->dma_bounce_len = (scsi_pointer->this_residual + 511) & ~0x1ff; wh->dma_bounce_buffer = kmalloc(wh->dma_bounce_len, GFP_KERNEL); @@ -77,8 +78,8 @@ static int dma_setup(struct scsi_cmnd *cmd, int dir_in) if (!dir_in) { /* copy to bounce buffer for a write */ - memcpy(wh->dma_bounce_buffer, cmd->SCp.ptr, - cmd->SCp.this_residual); + memcpy(wh->dma_bounce_buffer, scsi_pointer->ptr, + scsi_pointer->this_residual); } } @@ -96,10 +97,10 @@ static int dma_setup(struct scsi_cmnd *cmd, int dir_in) if (dir_in) { /* invalidate any cache */ - cache_clear(addr, cmd->SCp.this_residual); + cache_clear(addr, scsi_pointer->this_residual); } else { /* push any dirty cache */ - cache_push(addr, cmd->SCp.this_residual); + cache_push(addr, scsi_pointer->this_residual); } /* start DMA */ regs->ST_DMA = 1; @@ -111,6 +112,7 @@ static int dma_setup(struct scsi_cmnd *cmd, int dir_in) static void dma_stop(struct Scsi_Host *instance, struct scsi_cmnd *SCpnt, int status) { + struct scsi_pointer *scsi_pointer = WD33C93_scsi_pointer(SCpnt); struct a2091_hostdata *hdata = shost_priv(instance); struct WD33C93_hostdata *wh = &hdata->wh; struct a2091_scsiregs *regs = hdata->regs; @@ -143,8 +145,8 @@ static void dma_stop(struct Scsi_Host *instance, struct scsi_cmnd *SCpnt, /* copy from a bounce buffer, if necessary */ if (status && wh->dma_bounce_buffer) { if (wh->dma_dir) - memcpy(SCpnt->SCp.ptr, wh->dma_bounce_buffer, - SCpnt->SCp.this_residual); + memcpy(scsi_pointer->ptr, wh->dma_bounce_buffer, + scsi_pointer->this_residual); kfree(wh->dma_bounce_buffer); wh->dma_bounce_buffer = NULL; wh->dma_bounce_len = 0; @@ -165,6 +167,7 @@ static struct scsi_host_template a2091_scsi_template = { .sg_tablesize = SG_ALL, .cmd_per_lun = CMD_PER_LUN, .dma_boundary = PAGE_SIZE - 1, + .cmd_size = sizeof(struct scsi_pointer), }; static int a2091_probe(struct zorro_dev *z, const struct zorro_device_id *ent) diff --git a/drivers/scsi/a3000.c b/drivers/scsi/a3000.c index 23f34411f7bf..dd161885eed1 100644 --- a/drivers/scsi/a3000.c +++ b/drivers/scsi/a3000.c @@ -48,12 +48,13 @@ static irqreturn_t a3000_intr(int irq, void *data) static int dma_setup(struct scsi_cmnd *cmd, int dir_in) { + struct scsi_pointer *scsi_pointer = WD33C93_scsi_pointer(cmd); struct Scsi_Host *instance = cmd->device->host; struct a3000_hostdata *hdata = shost_priv(instance); struct WD33C93_hostdata *wh = &hdata->wh; struct a3000_scsiregs *regs = hdata->regs; unsigned short cntr = CNTR_PDMD | CNTR_INTEN; - unsigned long addr = virt_to_bus(cmd->SCp.ptr); + unsigned long addr = virt_to_bus(scsi_pointer->ptr); /* * if the physical address has the wrong alignment, or if @@ -62,7 +63,7 @@ static int dma_setup(struct scsi_cmnd *cmd, int dir_in) * buffer */ if (addr & A3000_XFER_MASK) { - wh->dma_bounce_len = (cmd->SCp.this_residual + 511) & ~0x1ff; + wh->dma_bounce_len = (scsi_pointer->this_residual + 511) & ~0x1ff; wh->dma_bounce_buffer = kmalloc(wh->dma_bounce_len, GFP_KERNEL); @@ -74,8 +75,8 @@ static int dma_setup(struct scsi_cmnd *cmd, int dir_in) if (!dir_in) { /* copy to bounce buffer for a write */ - memcpy(wh->dma_bounce_buffer, cmd->SCp.ptr, - cmd->SCp.this_residual); + memcpy(wh->dma_bounce_buffer, scsi_pointer->ptr, + scsi_pointer->this_residual); } addr = virt_to_bus(wh->dma_bounce_buffer); @@ -95,10 +96,10 @@ static int dma_setup(struct scsi_cmnd *cmd, int dir_in) if (dir_in) { /* invalidate any cache */ - cache_clear(addr, cmd->SCp.this_residual); + cache_clear(addr, scsi_pointer->this_residual); } else { /* push any dirty cache */ - cache_push(addr, cmd->SCp.this_residual); + cache_push(addr, scsi_pointer->this_residual); } /* start DMA */ @@ -113,6 +114,7 @@ static int dma_setup(struct scsi_cmnd *cmd, int dir_in) static void dma_stop(struct Scsi_Host *instance, struct scsi_cmnd *SCpnt, int status) { + struct scsi_pointer *scsi_pointer = WD33C93_scsi_pointer(SCpnt); struct a3000_hostdata *hdata = shost_priv(instance); struct WD33C93_hostdata *wh = &hdata->wh; struct a3000_scsiregs *regs = hdata->regs; @@ -153,8 +155,8 @@ static void dma_stop(struct Scsi_Host *instance, struct scsi_cmnd *SCpnt, if (status && wh->dma_bounce_buffer) { if (SCpnt) { if (wh->dma_dir && SCpnt) - memcpy(SCpnt->SCp.ptr, wh->dma_bounce_buffer, - SCpnt->SCp.this_residual); + memcpy(scsi_pointer->ptr, wh->dma_bounce_buffer, + scsi_pointer->this_residual); kfree(wh->dma_bounce_buffer); wh->dma_bounce_buffer = NULL; wh->dma_bounce_len = 0; @@ -179,6 +181,7 @@ static struct scsi_host_template amiga_a3000_scsi_template = { .this_id = 7, .sg_tablesize = SG_ALL, .cmd_per_lun = CMD_PER_LUN, + .cmd_size = sizeof(struct scsi_pointer), }; static int __init amiga_a3000_scsi_probe(struct platform_device *pdev) diff --git a/drivers/scsi/gvp11.c b/drivers/scsi/gvp11.c index 43754c2f36b3..2f6c56aabe1d 100644 --- a/drivers/scsi/gvp11.c +++ b/drivers/scsi/gvp11.c @@ -53,18 +53,19 @@ void gvp11_setup(char *str, int *ints) static int dma_setup(struct scsi_cmnd *cmd, int dir_in) { + struct scsi_pointer *scsi_pointer = WD33C93_scsi_pointer(cmd); struct Scsi_Host *instance = cmd->device->host; struct gvp11_hostdata *hdata = shost_priv(instance); struct WD33C93_hostdata *wh = &hdata->wh; struct gvp11_scsiregs *regs = hdata->regs; unsigned short cntr = GVP11_DMAC_INT_ENABLE; - unsigned long addr = virt_to_bus(cmd->SCp.ptr); + unsigned long addr = virt_to_bus(scsi_pointer->ptr); int bank_mask; static int scsi_alloc_out_of_range = 0; /* use bounce buffer if the physical address is bad */ if (addr & wh->dma_xfer_mask) { - wh->dma_bounce_len = (cmd->SCp.this_residual + 511) & ~0x1ff; + wh->dma_bounce_len = (scsi_pointer->this_residual + 511) & ~0x1ff; if (!scsi_alloc_out_of_range) { wh->dma_bounce_buffer = @@ -113,8 +114,8 @@ static int dma_setup(struct scsi_cmnd *cmd, int dir_in) if (!dir_in) { /* copy to bounce buffer for a write */ - memcpy(wh->dma_bounce_buffer, cmd->SCp.ptr, - cmd->SCp.this_residual); + memcpy(wh->dma_bounce_buffer, scsi_pointer->ptr, + scsi_pointer->this_residual); } } @@ -130,10 +131,10 @@ static int dma_setup(struct scsi_cmnd *cmd, int dir_in) if (dir_in) { /* invalidate any cache */ - cache_clear(addr, cmd->SCp.this_residual); + cache_clear(addr, scsi_pointer->this_residual); } else { /* push any dirty cache */ - cache_push(addr, cmd->SCp.this_residual); + cache_push(addr, scsi_pointer->this_residual); } bank_mask = (~wh->dma_xfer_mask >> 18) & 0x01c0; @@ -150,6 +151,7 @@ static int dma_setup(struct scsi_cmnd *cmd, int dir_in) static void dma_stop(struct Scsi_Host *instance, struct scsi_cmnd *SCpnt, int status) { + struct scsi_pointer *scsi_pointer = WD33C93_scsi_pointer(SCpnt); struct gvp11_hostdata *hdata = shost_priv(instance); struct WD33C93_hostdata *wh = &hdata->wh; struct gvp11_scsiregs *regs = hdata->regs; @@ -162,8 +164,8 @@ static void dma_stop(struct Scsi_Host *instance, struct scsi_cmnd *SCpnt, /* copy from a bounce buffer, if necessary */ if (status && wh->dma_bounce_buffer) { if (wh->dma_dir && SCpnt) - memcpy(SCpnt->SCp.ptr, wh->dma_bounce_buffer, - SCpnt->SCp.this_residual); + memcpy(scsi_pointer->ptr, wh->dma_bounce_buffer, + scsi_pointer->this_residual); if (wh->dma_buffer_pool == BUF_SCSI_ALLOCED) kfree(wh->dma_bounce_buffer); @@ -189,6 +191,7 @@ static struct scsi_host_template gvp11_scsi_template = { .sg_tablesize = SG_ALL, .cmd_per_lun = CMD_PER_LUN, .dma_boundary = PAGE_SIZE - 1, + .cmd_size = sizeof(struct scsi_pointer), }; static int check_wd33c93(struct gvp11_scsiregs *regs) diff --git a/drivers/scsi/mvme147.c b/drivers/scsi/mvme147.c index 0893d4c3a916..472fa043094f 100644 --- a/drivers/scsi/mvme147.c +++ b/drivers/scsi/mvme147.c @@ -33,10 +33,11 @@ static irqreturn_t mvme147_intr(int irq, void *data) static int dma_setup(struct scsi_cmnd *cmd, int dir_in) { + struct scsi_pointer *scsi_pointer = WD33C93_scsi_pointer(cmd); struct Scsi_Host *instance = cmd->device->host; struct WD33C93_hostdata *hdata = shost_priv(instance); unsigned char flags = 0x01; - unsigned long addr = virt_to_bus(cmd->SCp.ptr); + unsigned long addr = virt_to_bus(scsi_pointer->ptr); /* setup dma direction */ if (!dir_in) @@ -47,14 +48,14 @@ static int dma_setup(struct scsi_cmnd *cmd, int dir_in) if (dir_in) { /* invalidate any cache */ - cache_clear(addr, cmd->SCp.this_residual); + cache_clear(addr, scsi_pointer->this_residual); } else { /* push any dirty cache */ - cache_push(addr, cmd->SCp.this_residual); + cache_push(addr, scsi_pointer->this_residual); } /* start DMA */ - m147_pcc->dma_bcr = cmd->SCp.this_residual | (1 << 24); + m147_pcc->dma_bcr = scsi_pointer->this_residual | (1 << 24); m147_pcc->dma_dadr = addr; m147_pcc->dma_cntrl = flags; @@ -81,6 +82,7 @@ static struct scsi_host_template mvme147_host_template = { .this_id = 7, .sg_tablesize = SG_ALL, .cmd_per_lun = CMD_PER_LUN, + .cmd_size = sizeof(struct scsi_pointer), }; static struct Scsi_Host *mvme147_shost; diff --git a/drivers/scsi/sgiwd93.c b/drivers/scsi/sgiwd93.c index e797d89c873b..57d5dff62f63 100644 --- a/drivers/scsi/sgiwd93.c +++ b/drivers/scsi/sgiwd93.c @@ -69,14 +69,15 @@ static irqreturn_t sgiwd93_intr(int irq, void *dev_id) static inline void fill_hpc_entries(struct ip22_hostdata *hd, struct scsi_cmnd *cmd, int din) { - unsigned long len = cmd->SCp.this_residual; - void *addr = cmd->SCp.ptr; + struct scsi_pointer *scsi_pointer = WD33C93_scsi_pointer(cmd); + unsigned long len = scsi_pointer->this_residual; + void *addr = scsi_pointer->ptr; dma_addr_t physaddr; unsigned long count; struct hpc_chunk *hcp; physaddr = dma_map_single(hd->dev, addr, len, DMA_DIR(din)); - cmd->SCp.dma_handle = physaddr; + scsi_pointer->dma_handle = physaddr; hcp = hd->cpu; while (len) { @@ -106,6 +107,7 @@ void fill_hpc_entries(struct ip22_hostdata *hd, struct scsi_cmnd *cmd, int din) static int dma_setup(struct scsi_cmnd *cmd, int datainp) { + struct scsi_pointer *scsi_pointer = WD33C93_scsi_pointer(cmd); struct ip22_hostdata *hdata = host_to_hostdata(cmd->device->host); struct hpc3_scsiregs *hregs = (struct hpc3_scsiregs *) cmd->device->host->base; @@ -120,7 +122,7 @@ static int dma_setup(struct scsi_cmnd *cmd, int datainp) * obvious). IMHO a better fix would be, not to do these dma setups * in the first place. */ - if (cmd->SCp.ptr == NULL || cmd->SCp.this_residual == 0) + if (scsi_pointer->ptr == NULL || scsi_pointer->this_residual == 0) return 1; fill_hpc_entries(hdata, cmd, datainp); @@ -140,13 +142,14 @@ static int dma_setup(struct scsi_cmnd *cmd, int datainp) static void dma_stop(struct Scsi_Host *instance, struct scsi_cmnd *SCpnt, int status) { + struct scsi_pointer *scsi_pointer = WD33C93_scsi_pointer(SCpnt); struct ip22_hostdata *hdata = host_to_hostdata(instance); struct hpc3_scsiregs *hregs; if (!SCpnt) return; - if (SCpnt->SCp.ptr == NULL || SCpnt->SCp.this_residual == 0) + if (scsi_pointer->ptr == NULL || scsi_pointer->this_residual == 0) return; hregs = (struct hpc3_scsiregs *) SCpnt->device->host->base; @@ -160,8 +163,8 @@ static void dma_stop(struct Scsi_Host *instance, struct scsi_cmnd *SCpnt, barrier(); } hregs->ctrl = 0; - dma_unmap_single(hdata->dev, SCpnt->SCp.dma_handle, - SCpnt->SCp.this_residual, + dma_unmap_single(hdata->dev, scsi_pointer->dma_handle, + scsi_pointer->this_residual, DMA_DIR(hdata->wh.dma_dir)); pr_debug("\n"); @@ -213,6 +216,7 @@ static struct scsi_host_template sgiwd93_template = { .sg_tablesize = SG_ALL, .cmd_per_lun = 8, .dma_boundary = PAGE_SIZE - 1, + .cmd_size = sizeof(struct scsi_pointer), }; static int sgiwd93_probe(struct platform_device *pdev) diff --git a/drivers/scsi/wd33c93.c b/drivers/scsi/wd33c93.c index 7d2f00f3571a..3fe562047d85 100644 --- a/drivers/scsi/wd33c93.c +++ b/drivers/scsi/wd33c93.c @@ -364,6 +364,7 @@ calc_sync_msg(unsigned int period, unsigned int offset, unsigned int fast, static int wd33c93_queuecommand_lck(struct scsi_cmnd *cmd) { + struct scsi_pointer *scsi_pointer = WD33C93_scsi_pointer(cmd); struct WD33C93_hostdata *hostdata; struct scsi_cmnd *tmp; @@ -395,15 +396,15 @@ static int wd33c93_queuecommand_lck(struct scsi_cmnd *cmd) */ if (scsi_bufflen(cmd)) { - cmd->SCp.buffer = scsi_sglist(cmd); - cmd->SCp.buffers_residual = scsi_sg_count(cmd) - 1; - cmd->SCp.ptr = sg_virt(cmd->SCp.buffer); - cmd->SCp.this_residual = cmd->SCp.buffer->length; + scsi_pointer->buffer = scsi_sglist(cmd); + scsi_pointer->buffers_residual = scsi_sg_count(cmd) - 1; + scsi_pointer->ptr = sg_virt(scsi_pointer->buffer); + scsi_pointer->this_residual = scsi_pointer->buffer->length; } else { - cmd->SCp.buffer = NULL; - cmd->SCp.buffers_residual = 0; - cmd->SCp.ptr = NULL; - cmd->SCp.this_residual = 0; + scsi_pointer->buffer = NULL; + scsi_pointer->buffers_residual = 0; + scsi_pointer->ptr = NULL; + scsi_pointer->this_residual = 0; } /* WD docs state that at the conclusion of a "LEVEL2" command, the @@ -423,7 +424,7 @@ static int wd33c93_queuecommand_lck(struct scsi_cmnd *cmd) * status byte is stored. */ - cmd->SCp.Status = ILLEGAL_STATUS_BYTE; + scsi_pointer->Status = ILLEGAL_STATUS_BYTE; /* * Add the cmd to the end of 'input_Q'. Note that REQUEST SENSE @@ -470,6 +471,7 @@ DEF_SCSI_QCMD(wd33c93_queuecommand) static void wd33c93_execute(struct Scsi_Host *instance) { + struct scsi_pointer *scsi_pointer; struct WD33C93_hostdata *hostdata = (struct WD33C93_hostdata *) instance->hostdata; const wd33c93_regs regs = hostdata->regs; @@ -546,7 +548,8 @@ wd33c93_execute(struct Scsi_Host *instance) * to change around and experiment with for now. */ - cmd->SCp.phase = 0; /* assume no disconnect */ + scsi_pointer = WD33C93_scsi_pointer(cmd); + scsi_pointer->phase = 0; /* assume no disconnect */ if (hostdata->disconnect == DIS_NEVER) goto no; if (hostdata->disconnect == DIS_ALWAYS) @@ -563,7 +566,7 @@ wd33c93_execute(struct Scsi_Host *instance) (prev->device->lun != cmd->device->lun)) { for (prev = (struct scsi_cmnd *) hostdata->input_Q; prev; prev = (struct scsi_cmnd *) prev->host_scribble) - prev->SCp.phase = 1; + WD33C93_scsi_pointer(prev)->phase = 1; goto yes; } } @@ -571,7 +574,7 @@ wd33c93_execute(struct Scsi_Host *instance) goto no; yes: - cmd->SCp.phase = 1; + scsi_pointer->phase = 1; #ifdef PROC_STATISTICS hostdata->disc_allowed_cnt[cmd->device->id]++; @@ -579,7 +582,7 @@ wd33c93_execute(struct Scsi_Host *instance) no: - write_wd33c93(regs, WD_SOURCE_ID, ((cmd->SCp.phase) ? SRCID_ER : 0)); + write_wd33c93(regs, WD_SOURCE_ID, scsi_pointer->phase ? SRCID_ER : 0); write_wd33c93(regs, WD_TARGET_LUN, (u8)cmd->device->lun); write_wd33c93(regs, WD_SYNCHRONOUS_TRANSFER, @@ -648,14 +651,14 @@ wd33c93_execute(struct Scsi_Host *instance) * up ahead of time. */ - if ((cmd->SCp.phase == 0) && (hostdata->no_dma == 0)) { + if (scsi_pointer->phase == 0 && hostdata->no_dma == 0) { if (hostdata->dma_setup(cmd, (cmd->sc_data_direction == DMA_TO_DEVICE) ? DATA_OUT_DIR : DATA_IN_DIR)) write_wd33c93_count(regs, 0); /* guarantee a DATA_PHASE interrupt */ else { write_wd33c93_count(regs, - cmd->SCp.this_residual); + scsi_pointer->this_residual); write_wd33c93(regs, WD_CONTROL, CTRL_IDI | CTRL_EDI | hostdata->dma_mode); hostdata->dma = D_DMA_RUNNING; @@ -675,7 +678,7 @@ wd33c93_execute(struct Scsi_Host *instance) */ DB(DB_EXECUTE, - printk("%s)EX-2 ", (cmd->SCp.phase) ? "d:" : "")) + printk("%s)EX-2 ", scsi_pointer->phase ? "d:" : "")) } static void @@ -717,6 +720,7 @@ static void transfer_bytes(const wd33c93_regs regs, struct scsi_cmnd *cmd, int data_in_dir) { + struct scsi_pointer *scsi_pointer = WD33C93_scsi_pointer(cmd); struct WD33C93_hostdata *hostdata; unsigned long length; @@ -730,13 +734,13 @@ transfer_bytes(const wd33c93_regs regs, struct scsi_cmnd *cmd, * now we need to setup the next scatter-gather buffer as the * source or destination for THIS transfer. */ - if (!cmd->SCp.this_residual && cmd->SCp.buffers_residual) { - cmd->SCp.buffer = sg_next(cmd->SCp.buffer); - --cmd->SCp.buffers_residual; - cmd->SCp.this_residual = cmd->SCp.buffer->length; - cmd->SCp.ptr = sg_virt(cmd->SCp.buffer); + if (!scsi_pointer->this_residual && scsi_pointer->buffers_residual) { + scsi_pointer->buffer = sg_next(scsi_pointer->buffer); + --scsi_pointer->buffers_residual; + scsi_pointer->this_residual = scsi_pointer->buffer->length; + scsi_pointer->ptr = sg_virt(scsi_pointer->buffer); } - if (!cmd->SCp.this_residual) /* avoid bogus setups */ + if (!scsi_pointer->this_residual) /* avoid bogus setups */ return; write_wd33c93(regs, WD_SYNCHRONOUS_TRANSFER, @@ -750,11 +754,12 @@ transfer_bytes(const wd33c93_regs regs, struct scsi_cmnd *cmd, #ifdef PROC_STATISTICS hostdata->pio_cnt++; #endif - transfer_pio(regs, (uchar *) cmd->SCp.ptr, - cmd->SCp.this_residual, data_in_dir, hostdata); - length = cmd->SCp.this_residual; - cmd->SCp.this_residual = read_wd33c93_count(regs); - cmd->SCp.ptr += (length - cmd->SCp.this_residual); + transfer_pio(regs, (uchar *) scsi_pointer->ptr, + scsi_pointer->this_residual, data_in_dir, + hostdata); + length = scsi_pointer->this_residual; + scsi_pointer->this_residual = read_wd33c93_count(regs); + scsi_pointer->ptr += length - scsi_pointer->this_residual; } /* We are able to do DMA (in fact, the Amiga hardware is @@ -771,10 +776,10 @@ transfer_bytes(const wd33c93_regs regs, struct scsi_cmnd *cmd, hostdata->dma_cnt++; #endif write_wd33c93(regs, WD_CONTROL, CTRL_IDI | CTRL_EDI | hostdata->dma_mode); - write_wd33c93_count(regs, cmd->SCp.this_residual); + write_wd33c93_count(regs, scsi_pointer->this_residual); if ((hostdata->level2 >= L2_DATA) || - (hostdata->level2 == L2_BASIC && cmd->SCp.phase == 0)) { + (hostdata->level2 == L2_BASIC && scsi_pointer->phase == 0)) { write_wd33c93(regs, WD_COMMAND_PHASE, 0x45); write_wd33c93_cmd(regs, WD_CMD_SEL_ATN_XFER); hostdata->state = S_RUNNING_LEVEL2; @@ -788,6 +793,7 @@ transfer_bytes(const wd33c93_regs regs, struct scsi_cmnd *cmd, void wd33c93_intr(struct Scsi_Host *instance) { + struct scsi_pointer *scsi_pointer; struct WD33C93_hostdata *hostdata = (struct WD33C93_hostdata *) instance->hostdata; const wd33c93_regs regs = hostdata->regs; @@ -806,6 +812,7 @@ wd33c93_intr(struct Scsi_Host *instance) #endif cmd = (struct scsi_cmnd *) hostdata->connected; /* assume we're connected */ + scsi_pointer = WD33C93_scsi_pointer(cmd); sr = read_wd33c93(regs, WD_SCSI_STATUS); /* clear the interrupt */ phs = read_wd33c93(regs, WD_COMMAND_PHASE); @@ -827,14 +834,14 @@ wd33c93_intr(struct Scsi_Host *instance) */ if (hostdata->dma == D_DMA_RUNNING) { DB(DB_TRANSFER, - printk("[%p/%d:", cmd->SCp.ptr, cmd->SCp.this_residual)) + printk("[%p/%d:", scsi_pointer->ptr, scsi_pointer->this_residual)) hostdata->dma_stop(cmd->device->host, cmd, 1); hostdata->dma = D_DMA_OFF; - length = cmd->SCp.this_residual; - cmd->SCp.this_residual = read_wd33c93_count(regs); - cmd->SCp.ptr += (length - cmd->SCp.this_residual); + length = scsi_pointer->this_residual; + scsi_pointer->this_residual = read_wd33c93_count(regs); + scsi_pointer->ptr += length - scsi_pointer->this_residual; DB(DB_TRANSFER, - printk("%p/%d]", cmd->SCp.ptr, cmd->SCp.this_residual)) + printk("%p/%d]", scsi_pointer->ptr, scsi_pointer->this_residual)) } /* Respond to the specific WD3393 interrupt - there are quite a few! */ @@ -884,7 +891,7 @@ wd33c93_intr(struct Scsi_Host *instance) /* construct an IDENTIFY message with correct disconnect bit */ hostdata->outgoing_msg[0] = IDENTIFY(0, cmd->device->lun); - if (cmd->SCp.phase) + if (scsi_pointer->phase) hostdata->outgoing_msg[0] |= 0x40; if (hostdata->sync_stat[cmd->device->id] == SS_FIRST) { @@ -926,8 +933,8 @@ wd33c93_intr(struct Scsi_Host *instance) case CSR_UNEXP | PHS_DATA_IN: case CSR_SRV_REQ | PHS_DATA_IN: DB(DB_INTR, - printk("IN-%d.%d", cmd->SCp.this_residual, - cmd->SCp.buffers_residual)) + printk("IN-%d.%d", scsi_pointer->this_residual, + scsi_pointer->buffers_residual)) transfer_bytes(regs, cmd, DATA_IN_DIR); if (hostdata->state != S_RUNNING_LEVEL2) hostdata->state = S_CONNECTED; @@ -938,8 +945,8 @@ wd33c93_intr(struct Scsi_Host *instance) case CSR_UNEXP | PHS_DATA_OUT: case CSR_SRV_REQ | PHS_DATA_OUT: DB(DB_INTR, - printk("OUT-%d.%d", cmd->SCp.this_residual, - cmd->SCp.buffers_residual)) + printk("OUT-%d.%d", scsi_pointer->this_residual, + scsi_pointer->buffers_residual)) transfer_bytes(regs, cmd, DATA_OUT_DIR); if (hostdata->state != S_RUNNING_LEVEL2) hostdata->state = S_CONNECTED; @@ -962,8 +969,8 @@ wd33c93_intr(struct Scsi_Host *instance) case CSR_UNEXP | PHS_STATUS: case CSR_SRV_REQ | PHS_STATUS: DB(DB_INTR, printk("STATUS=")) - cmd->SCp.Status = read_1_byte(regs); - DB(DB_INTR, printk("%02x", cmd->SCp.Status)) + scsi_pointer->Status = read_1_byte(regs); + DB(DB_INTR, printk("%02x", scsi_pointer->Status)) if (hostdata->level2 >= L2_BASIC) { sr = read_wd33c93(regs, WD_SCSI_STATUS); /* clear interrupt */ udelay(7); @@ -991,7 +998,7 @@ wd33c93_intr(struct Scsi_Host *instance) else hostdata->incoming_ptr = 0; - cmd->SCp.Message = msg; + scsi_pointer->Message = msg; switch (msg) { case COMMAND_COMPLETE: @@ -1163,21 +1170,21 @@ wd33c93_intr(struct Scsi_Host *instance) write_wd33c93(regs, WD_SOURCE_ID, SRCID_ER); if (phs == 0x60) { DB(DB_INTR, printk("SX-DONE")) - cmd->SCp.Message = COMMAND_COMPLETE; + scsi_pointer->Message = COMMAND_COMPLETE; lun = read_wd33c93(regs, WD_TARGET_LUN); - DB(DB_INTR, printk(":%d.%d", cmd->SCp.Status, lun)) + DB(DB_INTR, printk(":%d.%d", scsi_pointer->Status, lun)) hostdata->connected = NULL; hostdata->busy[cmd->device->id] &= ~(1 << (cmd->device->lun & 0xff)); hostdata->state = S_UNCONNECTED; - if (cmd->SCp.Status == ILLEGAL_STATUS_BYTE) - cmd->SCp.Status = lun; + if (scsi_pointer->Status == ILLEGAL_STATUS_BYTE) + scsi_pointer->Status = lun; if (cmd->cmnd[0] == REQUEST_SENSE - && cmd->SCp.Status != SAM_STAT_GOOD) { + && scsi_pointer->Status != SAM_STAT_GOOD) { set_host_byte(cmd, DID_ERROR); } else { set_host_byte(cmd, DID_OK); - scsi_msg_to_host_byte(cmd, cmd->SCp.Message); - set_status_byte(cmd, cmd->SCp.Status); + scsi_msg_to_host_byte(cmd, scsi_pointer->Message); + set_status_byte(cmd, scsi_pointer->Status); } scsi_done(cmd); @@ -1259,12 +1266,12 @@ wd33c93_intr(struct Scsi_Host *instance) hostdata->busy[cmd->device->id] &= ~(1 << (cmd->device->lun & 0xff)); hostdata->state = S_UNCONNECTED; if (cmd->cmnd[0] == REQUEST_SENSE && - cmd->SCp.Status != SAM_STAT_GOOD) { + scsi_pointer->Status != SAM_STAT_GOOD) { set_host_byte(cmd, DID_ERROR); } else { set_host_byte(cmd, DID_OK); - scsi_msg_to_host_byte(cmd, cmd->SCp.Message); - set_status_byte(cmd, cmd->SCp.Status); + scsi_msg_to_host_byte(cmd, scsi_pointer->Message); + set_status_byte(cmd, scsi_pointer->Status); } scsi_done(cmd); @@ -1293,14 +1300,14 @@ wd33c93_intr(struct Scsi_Host *instance) hostdata->connected = NULL; hostdata->busy[cmd->device->id] &= ~(1 << (cmd->device->lun & 0xff)); hostdata->state = S_UNCONNECTED; - DB(DB_INTR, printk(":%d", cmd->SCp.Status)) + DB(DB_INTR, printk(":%d", scsi_pointer->Status)) if (cmd->cmnd[0] == REQUEST_SENSE - && cmd->SCp.Status != SAM_STAT_GOOD) { + && scsi_pointer->Status != SAM_STAT_GOOD) { set_host_byte(cmd, DID_ERROR); } else { set_host_byte(cmd, DID_OK); - scsi_msg_to_host_byte(cmd, cmd->SCp.Message); - set_status_byte(cmd, cmd->SCp.Status); + scsi_msg_to_host_byte(cmd, scsi_pointer->Message); + set_status_byte(cmd, scsi_pointer->Status); } scsi_done(cmd); break; diff --git a/drivers/scsi/wd33c93.h b/drivers/scsi/wd33c93.h index 2edec34c5a42..b3800baccd2c 100644 --- a/drivers/scsi/wd33c93.h +++ b/drivers/scsi/wd33c93.h @@ -262,6 +262,10 @@ struct WD33C93_hostdata { #endif }; +static inline struct scsi_pointer *WD33C93_scsi_pointer(struct scsi_cmnd *cmd) +{ + return scsi_cmd_priv(cmd); +} /* defines for hostdata->chip */ From patchwork Fri Feb 11 22:32:46 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542008 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E1243C433F5 for ; Fri, 11 Feb 2022 22:34:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354178AbiBKWez (ORCPT ); Fri, 11 Feb 2022 17:34:55 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34674 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354164AbiBKWes (ORCPT ); Fri, 11 Feb 2022 17:34:48 -0500 Received: from mail-pf1-f180.google.com (mail-pf1-f180.google.com [209.85.210.180]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F3533D5C for ; Fri, 11 Feb 2022 14:34:43 -0800 (PST) Received: by mail-pf1-f180.google.com with SMTP id y8so15935906pfa.11 for ; Fri, 11 Feb 2022 14:34:43 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Ik4fUFCkFlenhZPbOaqGtMyvz7ystmwHP7ZXn9Wxrx0=; b=PVlV9ZqZXHe4RQ/3gewf/dHD0mffiC8EXivuY5H6wBDWHYoFL4LeoNIenkCTtTWq/K Pc5ZBmAGHYpbpEMusAQ2GPbA4ju26/4GFrQUJMg6JkAHvCXJHRJQm6p63shP2NUMDnjq Pvcq+iFnYv8+9RApb5H/2/eZI8FMxvf2k1LF4YJhzX+TdRB6OwtCqaMIWzxtpnIJ3Lml 44maYe0m7D6k47LewlaYjZ+QI1x3wGlkN9pvbB3Vfy3r+Fao3nTMqpfekUR2LAZGavpH pD4uzhXgTsysHeuePZSrIpAPHSM8ukl2B6xQYCwt5UmLOlg0G4CQcALoNwYUP8Unf6HY uQww== X-Gm-Message-State: AOAM53233k1Bb310gEU4sibpU2atWCYpLAOWAq7Vx7SWctxeKwcUs3j/ C+J3JPbLspXOajWzHZcp8OE= X-Google-Smtp-Source: ABdhPJzKy9gc/UKwr7JeT8LwXT1LO7XR/0LnmkLGYD4CwvHOuEpmYfrvUakvMgK8Qis/7xuJUs1CWg== X-Received: by 2002:a05:6a00:1486:: with SMTP id v6mr3779593pfu.73.1644618883356; Fri, 11 Feb 2022 14:34:43 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.34.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:34:42 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Helge Deller , Johannes Thumshirn , Hannes Reinecke , Himanshu Madhani , "James E.J. Bottomley" Subject: [PATCH v3 47/48] scsi: zalon: Stop using the SCSI pointer Date: Fri, 11 Feb 2022 14:32:46 -0800 Message-Id: <20220211223247.14369-48-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Set .cmd_size in the SCSI host template instead of using the SCSI pointer from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer from struct scsi_cmnd. Cc: Helge Deller Reviewed-by: Johannes Thumshirn Reviewed-by: Hannes Reinecke Reviewed-by: Himanshu Madhani Signed-off-by: Bart Van Assche --- drivers/scsi/ncr53c8xx.c | 22 ++++++++++++---------- drivers/scsi/ncr53c8xx.h | 6 ++++++ drivers/scsi/zalon.c | 1 + 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/drivers/scsi/ncr53c8xx.c b/drivers/scsi/ncr53c8xx.c index fc8abe05fa8f..4458449c960b 100644 --- a/drivers/scsi/ncr53c8xx.c +++ b/drivers/scsi/ncr53c8xx.c @@ -514,30 +514,29 @@ static m_addr_t __vtobus(m_bush_t bush, void *m) * Deal with DMA mapping/unmapping. */ -/* To keep track of the dma mapping (sg/single) that has been set */ -#define __data_mapped SCp.phase -#define __data_mapping SCp.have_data_in - static void __unmap_scsi_data(struct device *dev, struct scsi_cmnd *cmd) { - switch(cmd->__data_mapped) { + struct ncr_cmd_priv *cmd_priv = scsi_cmd_priv(cmd); + + switch(cmd_priv->data_mapped) { case 2: scsi_dma_unmap(cmd); break; } - cmd->__data_mapped = 0; + cmd_priv->data_mapped = 0; } static int __map_scsi_sg_data(struct device *dev, struct scsi_cmnd *cmd) { + struct ncr_cmd_priv *cmd_priv = scsi_cmd_priv(cmd); int use_sg; use_sg = scsi_dma_map(cmd); if (!use_sg) return 0; - cmd->__data_mapped = 2; - cmd->__data_mapping = use_sg; + cmd_priv->data_mapped = 2; + cmd_priv->data_mapping = use_sg; return use_sg; } @@ -7854,6 +7853,7 @@ static int ncr53c8xx_slave_configure(struct scsi_device *device) static int ncr53c8xx_queue_command_lck(struct scsi_cmnd *cmd) { + struct ncr_cmd_priv *cmd_priv = scsi_cmd_priv(cmd); void (*done)(struct scsi_cmnd *) = scsi_done; struct ncb *np = ((struct host_data *) cmd->device->host->hostdata)->ncb; unsigned long flags; @@ -7864,8 +7864,8 @@ printk("ncr53c8xx_queue_command\n"); #endif cmd->host_scribble = NULL; - cmd->__data_mapped = 0; - cmd->__data_mapping = 0; + cmd_priv->data_mapped = 0; + cmd_priv->data_mapping = 0; spin_lock_irqsave(&np->smp_lock, flags); @@ -8085,6 +8085,8 @@ struct Scsi_Host * __init ncr_attach(struct scsi_host_template *tpnt, u_long flags = 0; int i; + WARN_ON_ONCE(tpnt->cmd_size < sizeof(struct ncr_cmd_priv)); + if (!tpnt->name) tpnt->name = SCSI_NCR_DRIVER_NAME; if (!tpnt->shost_groups) diff --git a/drivers/scsi/ncr53c8xx.h b/drivers/scsi/ncr53c8xx.h index fa14b5ca8783..be38c902859e 100644 --- a/drivers/scsi/ncr53c8xx.h +++ b/drivers/scsi/ncr53c8xx.h @@ -1288,6 +1288,12 @@ struct ncr_device { u8 differential; }; +/* To keep track of the dma mapping (sg/single) that has been set */ +struct ncr_cmd_priv { + int data_mapped; + int data_mapping; +}; + extern struct Scsi_Host *ncr_attach(struct scsi_host_template *tpnt, int unit, struct ncr_device *device); extern void ncr53c8xx_release(struct Scsi_Host *host); irqreturn_t ncr53c8xx_intr(int irq, void *dev_id); diff --git a/drivers/scsi/zalon.c b/drivers/scsi/zalon.c index f1e5cf8a17d9..22d412cab91d 100644 --- a/drivers/scsi/zalon.c +++ b/drivers/scsi/zalon.c @@ -81,6 +81,7 @@ lasi_scsi_clock(void * hpa, int defaultclock) static struct scsi_host_template zalon7xx_template = { .module = THIS_MODULE, .proc_name = "zalon7xx", + .cmd_size = sizeof(struct ncr_cmd_priv), }; static int __init From patchwork Fri Feb 11 22:32:47 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 542282 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9C9C6C433F5 for ; Fri, 11 Feb 2022 22:35:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354103AbiBKWfD (ORCPT ); Fri, 11 Feb 2022 17:35:03 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34680 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354166AbiBKWet (ORCPT ); Fri, 11 Feb 2022 17:34:49 -0500 Received: from mail-pf1-f174.google.com (mail-pf1-f174.google.com [209.85.210.174]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BE099D5F for ; Fri, 11 Feb 2022 14:34:45 -0800 (PST) Received: by mail-pf1-f174.google.com with SMTP id i21so17186317pfd.13 for ; Fri, 11 Feb 2022 14:34:45 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ACIKykN0EBRMFX9wNhDt2BPXzEzxukWVABPnH3eZLdg=; b=wO95JYTHOD7i3Y/E263m3WzGTDQIlCPxuRveu6QYExyL9ta62dnL3IKCHvdqiLAy0q eXPiZy3RPY/Dvq+QLvQ/IVpyIxUiYflO9oc/3MN2kI8K2bPI2IOQVFSD6k7aBY8wXu99 zk38GFUOPLNArS8rPXnvYhhZQvbZ2RmbIp9f5zjTmP2Pk5OYGs2YWaiMXda33aDzErLY i9DgOp91qlu8fg/4mHX6AqJnZhMK+7KLW03sAOWATMlp5dyD8uU2vQn1H6AWHq+eroVG rR2VW9Qr0NKL2axwKBhMcCwJabtoc4Y7ipad5QnzqP2KkcswRhKl2lEmIVCTptnTJg0Y ym8w== X-Gm-Message-State: AOAM5333Eszgal/br/pEDGyoeoJ4EYKHb51qQfSPLlYli9BXj95rYrrS LVtuTeJ7lb0tuM9GT9h+dxU= X-Google-Smtp-Source: ABdhPJxTT/lh/EgnzzG6sgsTDnPtcYuNwNI5dkqct6nIAYIv7UYl5iucMIWX5CHbnbq36d2nPo+uiQ== X-Received: by 2002:a05:6a00:170d:: with SMTP id h13mr3761921pfc.39.1644618885153; Fri, 11 Feb 2022 14:34:45 -0800 (PST) Received: from asus.hsd1.ca.comcast.net ([2601:647:4000:d7:feaa:14ff:fe9d:6dbd]) by smtp.gmail.com with ESMTPSA id n13sm6296733pjq.13.2022.02.11.14.34.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Feb 2022 14:34:44 -0800 (PST) From: Bart Van Assche To: "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Ming Lei , Hannes Reinecke , Christoph Hellwig , Johannes Thumshirn , Himanshu Madhani , Hannes Reinecke , "James E.J. Bottomley" Subject: [PATCH v3 48/48] scsi: core: Remove struct scsi_pointer from struct scsi_cmnd Date: Fri, 11 Feb 2022 14:32:47 -0800 Message-Id: <20220211223247.14369-49-bvanassche@acm.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220211223247.14369-1-bvanassche@acm.org> References: <20220211223247.14369-1-bvanassche@acm.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Remove struct scsi_pointer from struct scsi_cmnd since the previous patches removed all users of that member of struct scsi_cmnd. Additionally, reorder the members of struct scsi_cmnd such that the statement that the field below can be modified by the SCSI LLD is again correct. Cc: Ming Lei Cc: Hannes Reinecke Cc: Christoph Hellwig Reviewed-by: Johannes Thumshirn Reviewed-by: Himanshu Madhani Reviewed-by: Hannes Reinecke Signed-off-by: Bart Van Assche --- include/scsi/scsi_cmnd.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/include/scsi/scsi_cmnd.h b/include/scsi/scsi_cmnd.h index 6794d7322cbd..d99186a63469 100644 --- a/include/scsi/scsi_cmnd.h +++ b/include/scsi/scsi_cmnd.h @@ -123,11 +123,15 @@ struct scsi_cmnd { * command (auto-sense). Length must be * SCSI_SENSE_BUFFERSIZE bytes. */ + int flags; /* Command flags */ + unsigned long state; /* Command completion state */ + + unsigned int extra_len; /* length of alignment and padding */ + /* - * The following fields can be written to by the host specific code. - * Everything else should be left alone. + * The fields below can be modified by the LLD but the fields above + * must not be modified. */ - struct scsi_pointer SCp; /* Scratchpad used by some host adapters */ unsigned char *host_scribble; /* The host adapter is allowed to * call scsi_malloc and get some memory @@ -138,10 +142,6 @@ struct scsi_cmnd { * to be at an address < 16Mb). */ int result; /* Status code from lower level driver */ - int flags; /* Command flags */ - unsigned long state; /* Command completion state */ - - unsigned int extra_len; /* length of alignment and padding */ }; /* Variant of blk_mq_rq_from_pdu() that verifies the type of its argument. */