From: Damien Le Moal <damien.lemoal@wdc.com> To: Jens Axboe <axboe@kernel.dk>, linux-block@vger.kernel.org, linux-ide@vger.kernel.org, "Martin K . Petersen" <martin.petersen@oracle.com>, linux-scsi@vger.kernel.org Cc: Sathya Prakash <sathya.prakash@broadcom.com>, Sreekanth Reddy <sreekanth.reddy@broadcom.com>, Suganath Prabu Subramani <suganath-prabu.subramani@broadcom.com> Subject: [PATCH v3 8/9] libahci: Introduce ncq_prio_supported sysfs sttribute Date: Fri, 6 Aug 2021 20:11:44 +0900 [thread overview] Message-ID: <20210806111145.445697-9-damien.lemoal@wdc.com> (raw) In-Reply-To: <20210806111145.445697-1-damien.lemoal@wdc.com> Currently, the only way a user can determine if a SATA device supports NCQ priority is to try to enable the use of this feature using the ncq_prio_enable sysfs device attribute. If enabling the feature fails, it is because the device does not support NCQ priority. Otherwise, the feature is enabled and indicates that the device supports NCQ priority. Improve this odd interface by introducing the read-only ncq_prio_supported sysfs device attribute to indicate if a SATA device supports NCQ priority. The value of this attribute reflects if the device flag ATA_DFLAG_NCQ_PRIO is set or cleared. Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com> --- drivers/ata/libahci.c | 1 + drivers/ata/libata-sata.c | 24 ++++++++++++++++++++++++ include/linux/libata.h | 1 + 3 files changed, 26 insertions(+) diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c index fec2e9754aed..5b3fa2cbe722 100644 --- a/drivers/ata/libahci.c +++ b/drivers/ata/libahci.c @@ -125,6 +125,7 @@ EXPORT_SYMBOL_GPL(ahci_shost_attrs); struct device_attribute *ahci_sdev_attrs[] = { &dev_attr_sw_activity, &dev_attr_unload_heads, + &dev_attr_ncq_prio_supported, &dev_attr_ncq_prio_enable, NULL }; diff --git a/drivers/ata/libata-sata.c b/drivers/ata/libata-sata.c index dc397ebda089..5566fd4bb38f 100644 --- a/drivers/ata/libata-sata.c +++ b/drivers/ata/libata-sata.c @@ -834,6 +834,30 @@ DEVICE_ATTR(link_power_management_policy, S_IRUGO | S_IWUSR, ata_scsi_lpm_show, ata_scsi_lpm_store); EXPORT_SYMBOL_GPL(dev_attr_link_power_management_policy); +static ssize_t ata_ncq_prio_supported_show(struct device *device, + struct device_attribute *attr, + char *buf) +{ + struct scsi_device *sdev = to_scsi_device(device); + struct ata_port *ap = ata_shost_to_port(sdev->host); + struct ata_device *dev; + bool ncq_prio_supported; + int rc = 0; + + spin_lock_irq(ap->lock); + dev = ata_scsi_find_dev(ap, sdev); + if (!dev) + rc = -ENODEV; + else + ncq_prio_supported = dev->flags & ATA_DFLAG_NCQ_PRIO; + spin_unlock_irq(ap->lock); + + return rc ? rc : sysfs_emit(buf, "%u\n", ncq_prio_supported); +} + +DEVICE_ATTR(ncq_prio_supported, S_IRUGO, ata_ncq_prio_supported_show, NULL); +EXPORT_SYMBOL_GPL(dev_attr_ncq_prio_supported); + static ssize_t ata_ncq_prio_enable_show(struct device *device, struct device_attribute *attr, char *buf) diff --git a/include/linux/libata.h b/include/linux/libata.h index b23f28cfc8e0..a2d1bae7900b 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h @@ -539,6 +539,7 @@ typedef void (*ata_postreset_fn_t)(struct ata_link *link, unsigned int *classes) extern struct device_attribute dev_attr_unload_heads; #ifdef CONFIG_SATA_HOST extern struct device_attribute dev_attr_link_power_management_policy; +extern struct device_attribute dev_attr_ncq_prio_supported; extern struct device_attribute dev_attr_ncq_prio_enable; extern struct device_attribute dev_attr_em_message_type; extern struct device_attribute dev_attr_em_message; -- 2.31.1
next prev parent reply other threads:[~2021-08-06 11:12 UTC|newest] Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-08-06 11:11 [PATCH v3 0/9] libata cleanups and improvements Damien Le Moal 2021-08-06 11:11 ` [PATCH v3 1/9] libata: fix ata_host_alloc_pinfo() Damien Le Moal 2021-08-06 11:11 ` [PATCH v3 2/9] libata: fix ata_host_start() Damien Le Moal 2021-08-06 11:11 ` [PATCH v3 3/9] libata: cleanup device sleep capability detection Damien Le Moal 2021-08-06 11:11 ` [PATCH v3 4/9] libata: cleanup ata_dev_configure() Damien Le Moal 2021-08-06 11:35 ` Hannes Reinecke 2021-08-06 11:11 ` [PATCH v3 5/9] libata: cleanup NCQ priority handling Damien Le Moal 2021-08-06 11:11 ` [PATCH v3 6/9] libata: fix ata_read_log_page() warning Damien Le Moal 2021-08-06 11:11 ` [PATCH v3 7/9] libata: print feature list on device scan Damien Le Moal 2021-08-06 11:11 ` Damien Le Moal [this message] 2021-08-06 11:37 ` [PATCH v3 8/9] libahci: Introduce ncq_prio_supported sysfs sttribute Hannes Reinecke 2021-08-06 12:17 ` Damien Le Moal 2021-08-06 11:11 ` [PATCH v3 9/9] scsi: mpt3sas: Introduce sas_ncq_prio_supported " Damien Le Moal
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210806111145.445697-9-damien.lemoal@wdc.com \ --to=damien.lemoal@wdc.com \ --cc=axboe@kernel.dk \ --cc=linux-block@vger.kernel.org \ --cc=linux-ide@vger.kernel.org \ --cc=linux-scsi@vger.kernel.org \ --cc=martin.petersen@oracle.com \ --cc=sathya.prakash@broadcom.com \ --cc=sreekanth.reddy@broadcom.com \ --cc=suganath-prabu.subramani@broadcom.com \ --subject='Re: [PATCH v3 8/9] libahci: Introduce ncq_prio_supported sysfs sttribute' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).