From: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
To: Marc C <marc.ceeeee@gmail.com>
Cc: tj@kernel.org, linux-ide@vger.kernel.org
Subject: Re: [PATCH v3 3/3] libata: Add support for queued DSM TRIM
Date: Fri, 09 Aug 2013 18:07:04 +0400 [thread overview]
Message-ID: <5204F788.2080805@cogentembedded.com> (raw)
In-Reply-To: <1376023752-3105-4-git-send-email-marc.ceeeee@gmail.com>
Hello.
On 08/09/2013 08:49 AM, Marc C wrote:
> From: Marc Carino <marc.ceeeee@gmail.com>
> Some new SSDs support the queued version of the DSM TRIM command.
> Let the driver use the new command if supported.
> Signed-off-by: Marc Carino <marc.ceeeee@gmail.com>
> ---
> drivers/ata/libata-scsi.c | 27 +++++++++++++++++++++------
> 1 file changed, 21 insertions(+), 6 deletions(-)
> diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
> index 83c0890..1605ffc 100644
> --- a/drivers/ata/libata-scsi.c
> +++ b/drivers/ata/libata-scsi.c
> @@ -3098,12 +3098,27 @@ static unsigned int ata_scsi_write_same_xlat(struct ata_queued_cmd *qc)
> buf = page_address(sg_page(scsi_sglist(scmd)));
> size = ata_set_lba_range_entries(buf, 512, block, n_block);
>
> - tf->protocol = ATA_PROT_DMA;
> - tf->hob_feature = 0;
> - tf->feature = ATA_DSM_TRIM;
> - tf->hob_nsect = (size / 512) >> 8;
> - tf->nsect = size / 512;
> - tf->command = ATA_CMD_DSM;
> + if (ata_ncq_enabled(dev) &&
> + (dev->ncq_send_recv_cmds[ATA_LOG_NCQ_SEND_RECV_DSM_OFFSET] &
> + ATA_LOG_NCQ_SEND_RECV_DSM_TRIM)) {
> + /* Newer devices support queued TRIM commands */
> + tf->protocol = ATA_PROT_NCQ;
> + tf->command = ATA_CMD_FPDMA_SEND;
> + tf->hob_nsect = ATA_SUBCMD_FPDMA_SEND_DSM & 0x1f;
> + tf->nsect = qc->tag << 3;
> + tf->hob_feature = (size / 512) >> 8;
> + tf->feature = size / 512;
> +
> + qc->auxiliary = 1;
> + } else {
> + tf->protocol = ATA_PROT_DMA;
> + tf->hob_feature = 0;
> + tf->feature = ATA_DSM_TRIM;
> + tf->hob_nsect = (size / 512) >> 8;
> + tf->nsect = size / 512;
> + tf->command = ATA_CMD_DSM;
> + }
> +
The remaining issue I see with this is that we don't check whether the
controller/driver is capable of transferring the new commands to device, i.e.
that it's FIS-based.
WBR, Sergei
next prev parent reply other threads:[~2013-08-09 14:06 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-09 4:49 [PATCH v3 0/3] Introduce new SATA queued commands Marc C
2013-08-09 4:49 ` [PATCH v3 1/3] libata: Populate host-to-device FIS "auxiliary" field Marc C
2013-08-09 14:03 ` Tejun Heo
2013-08-09 14:36 ` Sergei Shtylyov
2013-08-09 14:53 ` Tejun Heo
2013-08-09 21:39 ` Sergei Shtylyov
2013-08-09 21:51 ` Tejun Heo
2013-08-09 22:17 ` Sergei Shtylyov
2013-08-09 22:26 ` Tejun Heo
2013-08-10 21:59 ` Sergei Shtylyov
2013-08-12 13:58 ` Tejun Heo
2013-08-09 21:24 ` Sergei Shtylyov
2013-08-09 14:17 ` Sergei Shtylyov
2013-08-09 14:29 ` Sergei Shtylyov
2013-08-09 14:26 ` Sergei Shtylyov
2013-08-09 4:49 ` [PATCH v3 2/3] libata: Add support for SEND/RECEIVE FPDMA QUEUED Marc C
2013-08-09 14:05 ` Tejun Heo
2013-08-10 2:10 ` Marc C
2013-08-09 4:49 ` [PATCH v3 3/3] libata: Add support for queued DSM TRIM Marc C
2013-08-09 14:07 ` Sergei Shtylyov [this message]
2013-08-09 14:08 ` Tejun Heo
2013-08-10 2:14 ` Marc C
2013-08-10 15:11 ` Tejun Heo
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=5204F788.2080805@cogentembedded.com \
--to=sergei.shtylyov@cogentembedded.com \
--cc=linux-ide@vger.kernel.org \
--cc=marc.ceeeee@gmail.com \
--cc=tj@kernel.org \
/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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.