From: Niklas Cassel <cassel@kernel.org>
To: Igor Pylypiv <ipylypiv@google.com>
Cc: Damien Le Moal <dlemoal@kernel.org>, linux-ide@vger.kernel.org
Subject: Re: [PATCH v2] ata: libata-sata: Use LBA from sense data descriptor
Date: Fri, 11 Apr 2025 08:35:24 +0200 [thread overview]
Message-ID: <Z_i4LNxRNQNk4p3_@ryzen> (raw)
In-Reply-To: <Z_f5Lf48v6VNbvpB@google.com>
On Thu, Apr 10, 2025 at 10:00:29AM -0700, Igor Pylypiv wrote:
> On Thu, Apr 10, 2025 at 04:04:29PM +0200, Niklas Cassel wrote:
> > On Thu, Apr 10, 2025 at 03:02:33PM +0200, Niklas Cassel wrote:
> > >
> > > I guess now when we do have access to the information, the most consistent
> > > thing would be to fill all field we can in qc->result_tf... but, to do this
> > > for every IO might slow things down.
> > >
> > > So is there perhaps some logic to only filling LBA (in addition to STATUS
> > > and ERROR, which are filled for all NCQ commands), since that is the only
> > > field that can change, as per the specs.
> >
> > Looking at this more closely:
> > https://github.com/torvalds/linux/blob/v6.15-rc1/include/linux/libata.h#L574-L577
> >
> > FEATURE is a union with ERROR, so we cannot save it in qc->result_tf.
> >
> > COMMAND is a union with STATUS, so we cannot save it in qc->result_tf.
> >
> >
> > The sense data descriptor does not provide AUXILIARY, nor DEVICE,
> > so we cannot save these.
> >
>
> Successful Sense Data descriptor provides AUXILIARY field as well:
>
> ACS-6 (revision 10)
>
> Table 339 — Successful Sense Data descriptor format
> +--------+------+-----------------------------------------------------+
> | Offset | Type | Description |
> +--------+------+-----------------------------------------------------+
> | 0 | Byte | SENSE KEY field (see 9.29.3.2) |
> | 1 | Byte | ADDITIONAL SENSE CODE field (see 9.29.3.2) |
> | 2 | Byte | ADDITIONAL SENSE CODE QUALIFIER field (see 9.29.3.2)|
> | 3 | Byte | COMMAND field (see 9.29.3.3) |
> | 4 | Byte | FEATURE field (7:0) (see 9.29.3.3) |
> | 5 | Byte | FEATURE field (15:8) (see 9.29.3.3) |
> | 6 | Byte | COUNT field (7:0) (see 9.29.3.3) |
> | 7 | Byte | COUNT field (15:8) (see 9.29.3.3) |
> | 8 | Byte | LBA field (7:0) (see 9.29.3.4) |
> | 9 | Byte | LBA field (15:8) (see 9.29.3.4) |
> | 10 | Byte | LBA field (23:16) (see 9.29.3.4) |
> | 11 | Byte | LBA field (31:24) (see 9.29.3.4) |
> | 12 | Byte | LBA field (39:32) (see 9.29.3.4) |
> | 13 | Byte | LBA field (47:40) (see 9.29.3.4) |
> | 14 | Byte | INFORMATION field (7:0) (see 9.29.3.5) |
> | 15 | Byte | INFORMATION field (15:8) (see 9.29.3.5) |
> | 16 | Byte | AUXILIARY field (7:0) (see 9.29.3.6) |
> | 17 | Byte | AUXILIARY field (15:8) (see 9.29.3.6) |
> | 18 | Byte | AUXILIARY field (23:16) (see 9.29.3.6) |
> | 19 | Byte | AUXILIARY field (31:24) (see 9.29.3.6) |
> | 20 | Byte | ICC field (7:0) (see 9.29.3.6) |
> | 21..23 | Bytes| Reserved |
> +--------+------+-----------------------------------------------------+
>
> The data in AUXILIARY and ICC is only valid when the AUXILIARY AND ICC FIELDS
> VALID bit is set. Similarly to other fields, AUXILIARY contains a copy of
> command inputs.
I was working on my laptop, and was not looking at the latest ACS-6 draft.
ACS-6 r2 has bytes 16 to 13 marked as Reserved.
But indeed, in the latest draft we do also have the AUX field, thank you
for noticing!
Kind regards,
Niklas
next prev parent reply other threads:[~2025-04-11 6:35 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-09 8:45 [PATCH v2] ata: libata-sata: Use LBA from sense data descriptor Niklas Cassel
2025-04-09 17:29 ` Igor Pylypiv
2025-04-10 13:02 ` Niklas Cassel
2025-04-10 14:04 ` Niklas Cassel
2025-04-10 17:00 ` Igor Pylypiv
2025-04-11 6:35 ` Niklas Cassel [this message]
2025-04-11 0:01 ` 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=Z_i4LNxRNQNk4p3_@ryzen \
--to=cassel@kernel.org \
--cc=dlemoal@kernel.org \
--cc=ipylypiv@google.com \
--cc=linux-ide@vger.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox