From patchwork Fri Aug 6 11:11:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Damien Le Moal X-Patchwork-Id: 493087 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6AD97C4320E for ; Fri, 6 Aug 2021 11:11:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4A52C601FD for ; Fri, 6 Aug 2021 11:11:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240444AbhHFLMH (ORCPT ); Fri, 6 Aug 2021 07:12:07 -0400 Received: from esa6.hgst.iphmx.com ([216.71.154.45]:47118 "EHLO esa6.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232079AbhHFLMG (ORCPT ); Fri, 6 Aug 2021 07:12:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1628248312; x=1659784312; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=T5iQtR+m8wm/ph6xRjNe4reIj5HsO8pLsUVsDBnawno=; b=F6DZtJM8uL+UU2ntH0EgLrejaoFz8w8WDaK2O6pf/aGb4toebd3aER49 hjlANpYw6llPFzi0KKUlezah4cMttRcM1qW4UYPyH8vbXHEWKz4Xqbe5Q zJZGlg/y+4bCA8tYD9Dywx1uEjLnGAVpjTQ8TPezL8R483CWLJaV4nWCt qzi1glXCor2wlM5sTL6R0Gwpz5oxh6r6SIcLz/8/BRx1AKCgylUOzr1nk 4Ws9sdBbfQEq6rdAeSEIkCLy+lkJstsQD64+sclvOdrQli7SjR8sPLduJ UEzPTDfmAj3mJkZMlAX4nYsl+bQ8Hd6CZSzwdXMryWMQ2IzTnRAS79AGr w==; X-IronPort-AV: E=Sophos;i="5.84,300,1620662400"; d="scan'208";a="177055539" Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 06 Aug 2021 19:11:51 +0800 IronPort-SDR: UnJhJ08Wi/rXK4bsnbmQpO1D8MdQNO37wksJk3hSOY8iVS74fWEEdGp1+vLsuenpOz8IWKLjDD 3Tjr/KKCUsXWU51P0Q8pOhV1jm/FwcKXlsV5s0wtu8VCaATBHt3r5MkLu3Q1yzrmi4AFye8OIO vt3L/rFTnoCrCLkTKLRZ99DUDOJScSlDOh19Rosi8fa1Hbc/LVDMTdJO9/zYRUM6yk7RVGlVnS m182VBgHyeJ1LHR8e1IcUgPahosFHT7uPO/bWoRARDv8X5lXiyB15rbogqJDEY0MXdYvftPzbg Kgp8VAIjYQUruoqY0re6Ib1t Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Aug 2021 03:47:26 -0700 IronPort-SDR: Se+NN54bWB7PzSZkzW28YlNJP6Cl+N3Tt2KVvwFk39RdRPrGUmEbOvzoZC8GEBwSRS+5iXxoQy 3wOl/yZ0t/T56RBfR76UqVK7fhaDW8E3KuX3FXI1MvmK+D3XP5ggwQ/xZN0i8DjHA38SxJEz62 Eco/HeirkpKGjPTsxXdggfkFNb9rMcOC0j0ToSofiFK0wBZvTRQG3bHdnktq1Wv8FqpG6lyDNd /nTDCdaZDcxiB/RBV4z5QTpehSD6kb1haGP1jn87AhB6BLBafRgNq+ye6V+6By5V1f86rCS9QE Jvw= WDCIronportException: Internal Received: from washi.fujisawa.hgst.com ([10.149.53.254]) by uls-op-cesaip02.wdc.com with ESMTP; 06 Aug 2021 04:11:50 -0700 From: Damien Le Moal To: Jens Axboe , linux-block@vger.kernel.org, linux-ide@vger.kernel.org, "Martin K . Petersen" , linux-scsi@vger.kernel.org Cc: Sathya Prakash , Sreekanth Reddy , Suganath Prabu Subramani Subject: [PATCH v3 1/9] libata: fix ata_host_alloc_pinfo() Date: Fri, 6 Aug 2021 20:11:37 +0900 Message-Id: <20210806111145.445697-2-damien.lemoal@wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210806111145.445697-1-damien.lemoal@wdc.com> References: <20210806111145.445697-1-damien.lemoal@wdc.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Avoid a potential NULL pointer dereference by testing that the ATA port info variable "pi". Reported-by: kernel test robot Signed-off-by: Damien Le Moal Reviewed-by: Hannes Reinecke --- drivers/ata/libata-core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index 61c762961ca8..ea8b91297f12 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c @@ -5458,7 +5458,7 @@ struct ata_host *ata_host_alloc_pinfo(struct device *dev, ap->link.flags |= pi->link_flags; ap->ops = pi->port_ops; - if (!host->ops && (pi->port_ops != &ata_dummy_port_ops)) + if (!host->ops && pi && pi->port_ops != &ata_dummy_port_ops) host->ops = pi->port_ops; } From patchwork Fri Aug 6 11:11:39 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Damien Le Moal X-Patchwork-Id: 493086 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5A277C43216 for ; Fri, 6 Aug 2021 11:11:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3E00E601FD for ; Fri, 6 Aug 2021 11:11:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S245353AbhHFLML (ORCPT ); Fri, 6 Aug 2021 07:12:11 -0400 Received: from esa6.hgst.iphmx.com ([216.71.154.45]:47128 "EHLO esa6.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S245322AbhHFLMJ (ORCPT ); Fri, 6 Aug 2021 07:12:09 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1628248315; x=1659784315; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=vHcGZ73V/R4Q8ziXdS6jpoinqApQHXcoTZdx3/d+YEs=; b=HjRpYG1p8F2Wn/42Udz2+/ElOvUpn0xcZ61KqpWa6JBAubq9NyMMlVEj LUl9hwC0BOEarNbegjDYhHjD/CUT617bMnDEWHCO2OoJwhaYlEfxReVIK 9V6KGY00txCNDOLooXVoXOSTJrRvyaMO/5C9mPOY9QtwmmqK+QDUhc5iI X/j9GEaTJcznjhhI/xT2vFUHLE6QuEqB6YIPXj22QX1iPcMQxmiZFYcEK eAy/S9BtOGMe/Y8/2GIuCc9MJ2g6wwSN3ONsInASBe2Hky8Oz3GfZtjZs G14T+M461W5/KOJepsl1rT6EvGIgmvyoRlUf/pVNZPvCAngwf/IazVfhQ w==; X-IronPort-AV: E=Sophos;i="5.84,300,1620662400"; d="scan'208";a="177055551" Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 06 Aug 2021 19:11:54 +0800 IronPort-SDR: KpfjRcOrqq43grPMDFiIP2KwiqLRn8EZ3vS/QrTbOSUrMFm/nE0RGm1/p14YuUd2mvKRETYBQc 3jLX7uULlnkRH+Xv42bDOHe/J+iD3I4eTgq6CtEwG3mkJWW5B3BXyIY0y4PTlqQxDn5vedxTNP f6RTQGOtGe6gdSCyZ6kpmvWPgqsS9jfZh9nqxT6W8akGuByFI7wgJ24NUgnxv5BbN9kBcpxtPw yoc4Q/NMUe+FdaSmyLQpl2AX58SPdvU02gc2FTVD9bmBhQaCLTlCw8m5UAcV/boHdDl6xX50oG hyqitb9pMQvFThNxW/3sHfi7 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Aug 2021 03:47:29 -0700 IronPort-SDR: lgmijqd75EPJrzm/UMNTW4gdk/zPTfLNGCp5AOXSpXwIpKZq0wlhhWQQ7aw+LYA4MQvqNvmFJX UpSJZn40ENJ1uj2OkMr9gjz0MSL5fA3UTiRuzEygbBfvWrXNLpsHBH+a5TcsirRf0InAp0q2HA eEz+jl0j0uOBfBPbFjBjIZv3HuPb3eyoAReDkmS2oyOd7/I7GBBwRVfC4rek+LR0Ywnt/2GDNm RaZAmcvaYov93UXSuqDa1vK7430YjNYzbzm/QmsICQ/gGwKbd3/nOvMD5+XIFXyQW8zQLOqBMB xT8= WDCIronportException: Internal Received: from washi.fujisawa.hgst.com ([10.149.53.254]) by uls-op-cesaip02.wdc.com with ESMTP; 06 Aug 2021 04:11:53 -0700 From: Damien Le Moal To: Jens Axboe , linux-block@vger.kernel.org, linux-ide@vger.kernel.org, "Martin K . Petersen" , linux-scsi@vger.kernel.org Cc: Sathya Prakash , Sreekanth Reddy , Suganath Prabu Subramani Subject: [PATCH v3 3/9] libata: cleanup device sleep capability detection Date: Fri, 6 Aug 2021 20:11:39 +0900 Message-Id: <20210806111145.445697-4-damien.lemoal@wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210806111145.445697-1-damien.lemoal@wdc.com> References: <20210806111145.445697-1-damien.lemoal@wdc.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Move the code to retrieve the device sleep capability and timings out of ata_dev_configure() into the helper function ata_dev_config_devslp(). While at it, mark the device as supporting the device sleep capability only if the sata settings page was retrieved successfully to ensure that the timing information is correctly initialized. Signed-off-by: Damien Le Moal Reviewed-by: Hannes Reinecke --- drivers/ata/libata-core.c | 55 +++++++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 23 deletions(-) diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index fe49197caf99..b13194432e5a 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c @@ -2363,6 +2363,37 @@ static void ata_dev_config_trusted(struct ata_device *dev) dev->flags |= ATA_DFLAG_TRUSTED; } +static void ata_dev_config_devslp(struct ata_device *dev) +{ + u8 *sata_setting = dev->link->ap->sector_buf; + unsigned int err_mask; + int i, j; + + /* + * Check device sleep capability. Get DevSlp timing variables + * from SATA Settings page of Identify Device Data Log. + */ + if (!ata_id_has_devslp(dev->id)) + return; + + err_mask = ata_read_log_page(dev, + ATA_LOG_IDENTIFY_DEVICE, + ATA_LOG_SATA_SETTINGS, + sata_setting, 1); + if (err_mask) { + ata_dev_dbg(dev, + "failed to get SATA Settings Log, Emask 0x%x\n", + err_mask); + return; + } + + dev->flags |= ATA_DFLAG_DEVSLP; + for (i = 0; i < ATA_LOG_DEVSLP_SIZE; i++) { + j = ATA_LOG_DEVSLP_OFFSET + i; + dev->devslp_timing[i] = sata_setting[j]; + } +} + /** * ata_dev_configure - Configure the specified ATA/ATAPI device * @dev: Target device to configure @@ -2565,29 +2596,7 @@ int ata_dev_configure(struct ata_device *dev) } } - /* Check and mark DevSlp capability. Get DevSlp timing variables - * from SATA Settings page of Identify Device Data Log. - */ - if (ata_id_has_devslp(dev->id)) { - u8 *sata_setting = ap->sector_buf; - int i, j; - - dev->flags |= ATA_DFLAG_DEVSLP; - err_mask = ata_read_log_page(dev, - ATA_LOG_IDENTIFY_DEVICE, - ATA_LOG_SATA_SETTINGS, - sata_setting, - 1); - if (err_mask) - ata_dev_dbg(dev, - "failed to get Identify Device Data, Emask 0x%x\n", - err_mask); - else - for (i = 0; i < ATA_LOG_DEVSLP_SIZE; i++) { - j = ATA_LOG_DEVSLP_OFFSET + i; - dev->devslp_timing[i] = sata_setting[j]; - } - } + ata_dev_config_devslp(dev); ata_dev_config_sense_reporting(dev); ata_dev_config_zac(dev); ata_dev_config_trusted(dev); From patchwork Fri Aug 6 11:11:41 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Damien Le Moal X-Patchwork-Id: 493085 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 16B79C4338F for ; Fri, 6 Aug 2021 11:12:08 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id EBE8261186 for ; Fri, 6 Aug 2021 11:12:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S245404AbhHFLMU (ORCPT ); Fri, 6 Aug 2021 07:12:20 -0400 Received: from esa6.hgst.iphmx.com ([216.71.154.45]:47118 "EHLO esa6.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S245365AbhHFLMM (ORCPT ); Fri, 6 Aug 2021 07:12:12 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1628248318; x=1659784318; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=soC5qKjs6HcnaOU7WHgJkTyCmuz0NoEeZLniXtNDGi0=; b=pGirjBTvrFVD3VhRRKUT7Vyu6mRcBc4A8d1WKD3OFHEOtNlZEY8pZr1d 4INxUbgVa1jHmayXz2RZqTERKdu2iMUqsUMuvPepq0WuxOXumz1Xnnpa/ s9djb05v75xmPaVQpzUFPz1NF0iaIldFJPP/zCXNKf2zVxEGrr5gHFIBo VbTgckauojjHkKtvkqarptHAOLAZn0GSEOV64MVB/hcrlEQ9lgralgR+c 5oxlKQSPKE0KJBQcY9apyHGl4G0wE6Ws+orY1ItamGhM4fNBpBfztliKw D4ycgNEcfVT7PPp2A3JVuftrKjKUSA2HrSiEKxSnsnxG3g+oTb2RCojCd A==; X-IronPort-AV: E=Sophos;i="5.84,300,1620662400"; d="scan'208";a="177055558" Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 06 Aug 2021 19:11:58 +0800 IronPort-SDR: s6Yb/LiGwi2lnfdHfmW8KI37LbZNbqxYWFur7qOeuqvIWlpiZZSMn1uIAnYmwHwPzuLftUtzxK ODI6cD0JfEvzXNfkWljR2GU9FZ2NtPh4qpr9XBjp7J7ABxAkMp7zrFozwkPRIbrmzicwtZBJOX ncP/T+jIphruCJjNQNq+qx9dokdPYqZ1sd4a3e7FdcvxurxIjRXHu2746jUNJRNvBbTBiPB7Rq eOOS5E+OCpQ+5+jjx4ASiu+zaC24kWEkk4ddTiHk2ZmXtgJQQugN83iUrYVCz7AQXN6/DF3hMl mMTbZSKeDQj+xZcZTTJztbzc Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Aug 2021 03:47:33 -0700 IronPort-SDR: 0kPkzAmVo7P//TneA/LJqWwmhKs7wd80skqW1OiKG6t3mUpFOvfeLFhUUP3ueV0LTzzfj/NXuN ptAezV9OjX7pS21Y1sx8/zeXJtJlRTwYZBUcSGjmC5FcGhYALO5BqM6wFydPay8/DrkczAxXMO 4+pUbyRWYu3hti8C58sdq/sQyRVZAbGeumxRXyJC8SK2O0mM81JAX8snvpSw08R8O1mX2BnuWn 4MAsd4F9vRI2dGtAKrnaeANhOxzEj8u2x/c0t031/212eZyUSY/r9i6WMKwILSG7WrxuWrvz7A oJ8= WDCIronportException: Internal Received: from washi.fujisawa.hgst.com ([10.149.53.254]) by uls-op-cesaip02.wdc.com with ESMTP; 06 Aug 2021 04:11:56 -0700 From: Damien Le Moal To: Jens Axboe , linux-block@vger.kernel.org, linux-ide@vger.kernel.org, "Martin K . Petersen" , linux-scsi@vger.kernel.org Cc: Sathya Prakash , Sreekanth Reddy , Suganath Prabu Subramani Subject: [PATCH v3 5/9] libata: cleanup NCQ priority handling Date: Fri, 6 Aug 2021 20:11:41 +0900 Message-Id: <20210806111145.445697-6-damien.lemoal@wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210806111145.445697-1-damien.lemoal@wdc.com> References: <20210806111145.445697-1-damien.lemoal@wdc.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org The ata device flag ATA_DFLAG_NCQ_PRIO indicates if a device supports the NCQ Priority feature while the ATA_DFLAG_NCQ_PRIO_ENABLE device flag indicates if the feature is enabled. Enabling NCQ priority use is controlled by the user through the device sysfs attribute ncq_prio_enable. As a result, the ATA_DFLAG_NCQ_PRIO flag should not be cleared when ATA_DFLAG_NCQ_PRIO_ENABLE is not set as the device still supports the feature even after the user disables it. This leads to the following cleanups: - In ata_build_rw_tf(), set a command high priority bit based on the ATA_DFLAG_NCQ_PRIO_ENABLE flag, not on the ATA_DFLAG_NCQ flag. That is, set a command high priority only if the user enabled NCQ priority use. - In ata_dev_config_ncq_prio(), ATA_DFLAG_NCQ_PRIO should not be cleared if ATA_DFLAG_NCQ_PRIO_ENABLE is not set. If the device does not support NCQ priority, both ATA_DFLAG_NCQ_PRIO and ATA_DFLAG_NCQ_PRIO_ENABLE must be cleared. With the above ata_dev_config_ncq_prio() change, ATA_DFLAG_NCQ_PRIO flag is set on device scan and revalidation. There is no need to trigger a device revalidation in ata_ncq_prio_enable_store() when the user enables the use of NCQ priority. Remove the revalidation code from that funciton to simplify it. Also change the return value from -EIO to -EINVAL when a user tries to enable NCQ priority for a device that does not support this feature. While at it, also simplify ata_ncq_prio_enable_show(). Overall, there is no functional change introduced by this patch. Signed-off-by: Damien Le Moal Reviewed-by: Hannes Reinecke --- drivers/ata/libata-core.c | 32 ++++++++++++++------------------ drivers/ata/libata-sata.c | 37 ++++++++++++------------------------- 2 files changed, 26 insertions(+), 43 deletions(-) diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index d3076283f9ce..3e574e29ee37 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c @@ -712,11 +712,9 @@ int ata_build_rw_tf(struct ata_taskfile *tf, struct ata_device *dev, if (tf->flags & ATA_TFLAG_FUA) tf->device |= 1 << 7; - if (dev->flags & ATA_DFLAG_NCQ_PRIO) { - if (class == IOPRIO_CLASS_RT) - tf->hob_nsect |= ATA_PRIO_HIGH << - ATA_SHIFT_PRIO; - } + if (dev->flags & ATA_DFLAG_NCQ_PRIO_ENABLE && + class == IOPRIO_CLASS_RT) + tf->hob_nsect |= ATA_PRIO_HIGH << ATA_SHIFT_PRIO; } else if (dev->flags & ATA_DFLAG_LBA) { tf->flags |= ATA_TFLAG_LBA; @@ -2178,11 +2176,6 @@ static void ata_dev_config_ncq_prio(struct ata_device *dev) struct ata_port *ap = dev->link->ap; unsigned int err_mask; - if (!(dev->flags & ATA_DFLAG_NCQ_PRIO_ENABLE)) { - dev->flags &= ~ATA_DFLAG_NCQ_PRIO; - return; - } - err_mask = ata_read_log_page(dev, ATA_LOG_IDENTIFY_DEVICE, ATA_LOG_SATA_SETTINGS, @@ -2190,18 +2183,21 @@ static void ata_dev_config_ncq_prio(struct ata_device *dev) 1); if (err_mask) { ata_dev_dbg(dev, - "failed to get Identify Device data, Emask 0x%x\n", + "failed to get SATA settings log, Emask 0x%x\n", err_mask); - return; + goto not_supported; } - if (ap->sector_buf[ATA_LOG_NCQ_PRIO_OFFSET] & BIT(3)) { - dev->flags |= ATA_DFLAG_NCQ_PRIO; - } else { - dev->flags &= ~ATA_DFLAG_NCQ_PRIO; - ata_dev_dbg(dev, "SATA page does not support priority\n"); - } + if (!(ap->sector_buf[ATA_LOG_NCQ_PRIO_OFFSET] & BIT(3))) + goto not_supported; + + dev->flags |= ATA_DFLAG_NCQ_PRIO; + + return; +not_supported: + dev->flags &= ~ATA_DFLAG_NCQ_PRIO_ENABLE; + dev->flags &= ~ATA_DFLAG_NCQ_PRIO; } static int ata_dev_config_ncq(struct ata_device *dev, diff --git a/drivers/ata/libata-sata.c b/drivers/ata/libata-sata.c index 8adeab76dd38..dc397ebda089 100644 --- a/drivers/ata/libata-sata.c +++ b/drivers/ata/libata-sata.c @@ -839,23 +839,17 @@ static ssize_t ata_ncq_prio_enable_show(struct device *device, char *buf) { struct scsi_device *sdev = to_scsi_device(device); - struct ata_port *ap; + struct ata_port *ap = ata_shost_to_port(sdev->host); struct ata_device *dev; bool ncq_prio_enable; int rc = 0; - ap = ata_shost_to_port(sdev->host); - spin_lock_irq(ap->lock); dev = ata_scsi_find_dev(ap, sdev); - if (!dev) { + if (!dev) rc = -ENODEV; - goto unlock; - } - - ncq_prio_enable = dev->flags & ATA_DFLAG_NCQ_PRIO_ENABLE; - -unlock: + else + ncq_prio_enable = dev->flags & ATA_DFLAG_NCQ_PRIO_ENABLE; spin_unlock_irq(ap->lock); return rc ? rc : snprintf(buf, 20, "%u\n", ncq_prio_enable); @@ -869,7 +863,7 @@ static ssize_t ata_ncq_prio_enable_store(struct device *device, struct ata_port *ap; struct ata_device *dev; long int input; - int rc; + int rc = 0; rc = kstrtol(buf, 10, &input); if (rc) @@ -883,27 +877,20 @@ static ssize_t ata_ncq_prio_enable_store(struct device *device, return -ENODEV; spin_lock_irq(ap->lock); + + if (!(dev->flags & ATA_DFLAG_NCQ_PRIO)) { + rc = -EINVAL; + goto unlock; + } + if (input) dev->flags |= ATA_DFLAG_NCQ_PRIO_ENABLE; else dev->flags &= ~ATA_DFLAG_NCQ_PRIO_ENABLE; - dev->link->eh_info.action |= ATA_EH_REVALIDATE; - dev->link->eh_info.flags |= ATA_EHI_QUIET; - ata_port_schedule_eh(ap); +unlock: spin_unlock_irq(ap->lock); - ata_port_wait_eh(ap); - - if (input) { - spin_lock_irq(ap->lock); - if (!(dev->flags & ATA_DFLAG_NCQ_PRIO)) { - dev->flags &= ~ATA_DFLAG_NCQ_PRIO_ENABLE; - rc = -EIO; - } - spin_unlock_irq(ap->lock); - } - return rc ? rc : len; } From patchwork Fri Aug 6 11:11:43 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Damien Le Moal X-Patchwork-Id: 493084 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CCBEDC19F31 for ; Fri, 6 Aug 2021 11:12:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9C33F601FD for ; Fri, 6 Aug 2021 11:12:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S245330AbhHFLMY (ORCPT ); Fri, 6 Aug 2021 07:12:24 -0400 Received: from esa6.hgst.iphmx.com ([216.71.154.45]:47136 "EHLO esa6.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S245377AbhHFLMP (ORCPT ); Fri, 6 Aug 2021 07:12:15 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1628248321; x=1659784321; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=pk+lhm8JBHwvIjXHR2WChMXDt5SKOnHmtBL2xd0eUh0=; b=P2DoOAXVWQ3FsqsDODX66Ho8kxaR5GqheDYbSvWrGB19auv0JB/dAOGc Xd7T4yHft+/N9ENKXILb62PlJ6O8OT2h/tDEniQYeTyVc1tJ4irT9vsUe YpYCWK4mCn25i786Wp1QvQSER0EKs+DyqpnGb6tonuka4KPxhETyGyIVJ tlgqDKQEPLql0w89ZgIsj2GyXCdIcD4yTNu/VXSgVsejYjmt2sgI6PBn5 KHwMglYUSPRV1qSOGgAJZwu06VGQvvasgPXk6R72/U74dMa27+UZFr+Do vHwYAN2lOJZvNcWv+5W8oCRPctLoNAzhrOj4NnSc2zvTH8UR7kWLPpyHa Q==; X-IronPort-AV: E=Sophos;i="5.84,300,1620662400"; d="scan'208";a="177055562" Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 06 Aug 2021 19:12:01 +0800 IronPort-SDR: aSvM1abw8ufBwtaElj6qhfJMxbjEJ3VkEtnkHvI8Bx8gD4TTw3jfjapd6V9CW8/LonMnPV3f/E ghJxbuyVa0WdHVMVT9Rsetm9O+/wNpeqrsV8lzuItaU7KdSGn1INDdmzZGse2iJMfC3a75emf2 wrYVD4GFlDFbzgP8PwgOKMO/MKRUSWokT+iS2K6BjhpfjXTGPsnCc4RcpTSxcEva2SD/bQHlo6 hKoW1ULIC9l6ov34UCCEDTg2f+OhnuUo2hDL906HkrCs6y0+vbcErwhRYL1+gSTl/isFRSHKK/ FCBGrsRASZIding396bVV0cM Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Aug 2021 03:47:36 -0700 IronPort-SDR: yhbEO0YFw9ohBBAnSkl3gZHdCyBirIv+Ci6aBCsN4SmFao1G5bIrrc3Jkg4ipRLihByQ/oVf8t 0F0GKFp8Y6Izqm9I705o5APrqCjzl8Y11jSSz7vU9lmCEkllfDWE+l5/tPHeS+nzXHfukaOqsu C9OqWkNPVglW0ez9vnq99YQi5LL8LafiK/kagLvrMb6FXl8S1pQ34sd9acB3z6cusowM7e2hUs VnRXaZVWLO5XdbeUHGKRfHIPpsNfpF/rTNBHtYsTFpgSI4gkpwzGWUW3ILWEvQKqM8YAIlM97q 3HY= WDCIronportException: Internal Received: from washi.fujisawa.hgst.com ([10.149.53.254]) by uls-op-cesaip02.wdc.com with ESMTP; 06 Aug 2021 04:11:59 -0700 From: Damien Le Moal To: Jens Axboe , linux-block@vger.kernel.org, linux-ide@vger.kernel.org, "Martin K . Petersen" , linux-scsi@vger.kernel.org Cc: Sathya Prakash , Sreekanth Reddy , Suganath Prabu Subramani Subject: [PATCH v3 7/9] libata: print feature list on device scan Date: Fri, 6 Aug 2021 20:11:43 +0900 Message-Id: <20210806111145.445697-8-damien.lemoal@wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210806111145.445697-1-damien.lemoal@wdc.com> References: <20210806111145.445697-1-damien.lemoal@wdc.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Print a list of features supported by a drive when it is configured in ata_dev_configure() using the new function ata_dev_print_features(). The features printed are not already advertized and are: trusted send-recev support, device attention support, device sleep support, NCQ send-recv support and NCQ priority support. Signed-off-by: Damien Le Moal Reviewed-by: Hannes Reinecke --- drivers/ata/libata-core.c | 17 +++++++++++++++++ include/linux/libata.h | 4 ++++ 2 files changed, 21 insertions(+) diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index e0ab03f59a8f..6d5d99ccbff3 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c @@ -2433,6 +2433,20 @@ static void ata_dev_config_devslp(struct ata_device *dev) } } +static void ata_dev_print_features(struct ata_device *dev) +{ + if (!(dev->flags & ATA_DFLAG_FEATURES_MASK)) + return; + + ata_dev_info(dev, + "Features:%s%s%s%s%s\n", + dev->flags & ATA_DFLAG_TRUSTED ? " Trust" : "", + dev->flags & ATA_DFLAG_DA ? " Dev-Attention" : "", + dev->flags & ATA_DFLAG_DEVSLP ? " Dev-Sleep" : "", + dev->flags & ATA_DFLAG_NCQ_SEND_RECV ? " NCQ-sndrcv" : "", + dev->flags & ATA_DFLAG_NCQ_PRIO ? " NCQ-prio" : ""); +} + /** * ata_dev_configure - Configure the specified ATA/ATAPI device * @dev: Target device to configure @@ -2595,6 +2609,9 @@ int ata_dev_configure(struct ata_device *dev) ata_dev_config_zac(dev); ata_dev_config_trusted(dev); dev->cdb_len = 32; + + if (ata_msg_drv(ap) && print_info) + ata_dev_print_features(dev); } /* ATAPI-specific feature tests */ diff --git a/include/linux/libata.h b/include/linux/libata.h index 3fcd24236793..b23f28cfc8e0 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h @@ -161,6 +161,10 @@ enum { ATA_DFLAG_D_SENSE = (1 << 29), /* Descriptor sense requested */ ATA_DFLAG_ZAC = (1 << 30), /* ZAC device */ + ATA_DFLAG_FEATURES_MASK = ATA_DFLAG_TRUSTED | ATA_DFLAG_DA | \ + ATA_DFLAG_DEVSLP | ATA_DFLAG_NCQ_SEND_RECV | \ + ATA_DFLAG_NCQ_PRIO, + ATA_DEV_UNKNOWN = 0, /* unknown device */ ATA_DEV_ATA = 1, /* ATA device */ ATA_DEV_ATA_UNSUP = 2, /* ATA device (unsupported) */ From patchwork Fri Aug 6 11:11:45 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Damien Le Moal X-Patchwork-Id: 493083 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 56C22C4338F for ; Fri, 6 Aug 2021 11:12:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3D55661186 for ; Fri, 6 Aug 2021 11:12:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S245398AbhHFLM1 (ORCPT ); Fri, 6 Aug 2021 07:12:27 -0400 Received: from esa6.hgst.iphmx.com ([216.71.154.45]:47118 "EHLO esa6.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S245396AbhHFLMT (ORCPT ); Fri, 6 Aug 2021 07:12:19 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1628248325; x=1659784325; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=v0axotK745BOmKq1hqhT1UMPhW1oSJVk5yL66WtuDMY=; b=erlzAz2lDZ3965euaEZQlacWHwpk7EFCO0zBgLyqFU6KfcVtvtHJsODG 6dPKGKzZo0EoQ4wQgMQBEumQy/Bj5aa1X4EEqJY9a36KrpsQdICwMISkT BWWh1JraLn0DG/DnZFDsJ4PBHylnaI8q+2W924LOauHfjnec1nHTauuCn 545xLLWjS07WsoYeO42FoqRiiCb0EoTIJM3ZahFYQhMsAZr1S+gWT2RHe /oQY7/6u0Xnt1H0OTLkVSitPF0GEc6QX86CaVvhoqId8qn6aEku8UpY3Q a3U47Kdt7vCqwcX6DW1NG0AyN1AmGVGQ7+tpRT/QP1Mc+Lhf5BmCheIhZ Q==; X-IronPort-AV: E=Sophos;i="5.84,300,1620662400"; d="scan'208";a="177055568" Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 06 Aug 2021 19:12:04 +0800 IronPort-SDR: KTaKKAuxVbRs2y53ZPO6heWYS0R/XuqE6zt5GHiaKfN8HeJS4yZqplcSqAVPzIDB0RONQi7GlD dlGffleNl+ZeyUHXNjO6d7UU5dlW7dk8qU+jNXBy+odRcqobgElZyDxG+NN07RqhfoI4Bw3KxD 5VFQlKy4k/X1yfi4YJ+IJlrgsbrA+sJIuL5Wos3l6u6bryRrwXRaNJoufJklYe2J4MxH7zGPim x7nCNVY7ZtBTvFjBmOW3BQpu7tS//an/dhXmt2y9eY3D9RHWdDQmE1bTJrIEZCI/WKg6e3LLfp 3V3TAmBWduWXfGqKEwyVBJGx Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Aug 2021 03:47:39 -0700 IronPort-SDR: xUdRLdaF8Z1wH2PxSgxa8xDUk+opTC5ZVk52K0P3Rz17/ojCUYPqu86ToEih30t7uatRGKv1yH NV6d/IU9rVO7h1jMDziL+sbHVvNQl4ukolPRT97FNcaeVV7tIXO4cR9N7VCP3gem/W7QbL9Ngz G+kveD2HxQluQl8JxlsOQd2v4OqlLJR/waZQM5AfAXVlImZOJwbBbs89urbWnG9qWqyW6vEhvb 1FVcvCYRKX/ccmqsPtHjjGr9g56hItWVKnS2Z+pjNdeylu2HcyR5a36lvauwMzxE3rF3I2fj3q xA0= WDCIronportException: Internal Received: from washi.fujisawa.hgst.com ([10.149.53.254]) by uls-op-cesaip02.wdc.com with ESMTP; 06 Aug 2021 04:12:02 -0700 From: Damien Le Moal To: Jens Axboe , linux-block@vger.kernel.org, linux-ide@vger.kernel.org, "Martin K . Petersen" , linux-scsi@vger.kernel.org Cc: Sathya Prakash , Sreekanth Reddy , Suganath Prabu Subramani Subject: [PATCH v3 9/9] scsi: mpt3sas: Introduce sas_ncq_prio_supported sysfs sttribute Date: Fri, 6 Aug 2021 20:11:45 +0900 Message-Id: <20210806111145.445697-10-damien.lemoal@wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210806111145.445697-1-damien.lemoal@wdc.com> References: <20210806111145.445697-1-damien.lemoal@wdc.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Similarly to AHCI, introduce the device sysfs attribute sas_ncq_prio_supported to advertize if a SATA device supports the NCQ priority feature. Without this new attribute, the user can only discover if a SATA device supports NCQ priority by trying to enable the feature use with the sas_ncq_prio_enable sysfs device attribute, which fails when the device does not support high priroity commands. Signed-off-by: Damien Le Moal Reviewed-by: Hannes Reinecke --- drivers/scsi/mpt3sas/mpt3sas_ctl.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/drivers/scsi/mpt3sas/mpt3sas_ctl.c b/drivers/scsi/mpt3sas/mpt3sas_ctl.c index b66140e4c370..f83d4d32d459 100644 --- a/drivers/scsi/mpt3sas/mpt3sas_ctl.c +++ b/drivers/scsi/mpt3sas/mpt3sas_ctl.c @@ -3918,6 +3918,24 @@ sas_device_handle_show(struct device *dev, struct device_attribute *attr, } static DEVICE_ATTR_RO(sas_device_handle); +/** + * sas_ncq_prio_supported_show - Indicate if device supports NCQ priority + * @dev: pointer to embedded device + * @attr: sas_ncq_prio_supported attribute descriptor + * @buf: the buffer returned + * + * A sysfs 'read-only' sdev attribute, only works with SATA + */ +static ssize_t +sas_ncq_prio_supported_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct scsi_device *sdev = to_scsi_device(dev); + + return sysfs_emit(buf, "%d\n", scsih_ncq_prio_supp(sdev)); +} +static DEVICE_ATTR_RO(sas_ncq_prio_supported); + /** * sas_ncq_prio_enable_show - send prioritized io commands to device * @dev: pointer to embedded device @@ -3960,6 +3978,7 @@ static DEVICE_ATTR_RW(sas_ncq_prio_enable); struct device_attribute *mpt3sas_dev_attrs[] = { &dev_attr_sas_address, &dev_attr_sas_device_handle, + &dev_attr_sas_ncq_prio_supported, &dev_attr_sas_ncq_prio_enable, NULL, };