From: Niklas Cassel <cassel@kernel.org>
To: Damien Le Moal <dlemoal@kernel.org>
Cc: Igor Pylypiv <ipylypiv@google.com>, Tejun Heo <tj@kernel.org>,
Hannes Reinecke <hare@suse.de>,
linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v1 2/4] ata: libata-scsi: Generate ATA PT sense data when ATA ERR/DF are set
Date: Fri, 21 Jun 2024 13:41:36 +0200 [thread overview]
Message-ID: <ZnVm8Ah2KyvosTs0@ryzen.lan> (raw)
In-Reply-To: <e25962a1-cd0c-47c9-9e10-008c475f22cb@kernel.org>
On Fri, Jun 21, 2024 at 09:05:33AM +0900, Damien Le Moal wrote:
> On 6/20/24 21:55, Niklas Cassel wrote:
> >
> > Perhaps we should modify fill_result_tf() to set ATA_QCFLAG_RTF_FILLED,
> > after it has called ap->ops->qc_fill_rtf(qc);
>
> Yes, let's do that.
>
> > Then this code can check if ATA_QCFLAG_RTF_FILLED is set, like you suggested.
>
> And I wonder if we should not just drop ATA_QCFLAG_RESULT_TF and *always* set
> the result tf for all commands. I fail to see why this is conditional to that flag.
I'm guessing that originally this was just an optimization, that you did
not read the taskfile register for a command that was completed successfully.
(Since they did not see a need for it.)
And a command that failed would have gotten an error IRQ anyway, so the
result TF would be populated for those.
I'm not sure how much time we save by not reading the TF register for non-NCQ
commands... Most likely it would be possible to read the TF register for all
drivers for non-NCQ commands on completion.
E.g. we set the ATA_QCFLAG_RESULT_TF flag for internal commands and for
ATA-passthru commands, however, both of these are non-NCQ commands.
I think it is NCQ commands that are the problem...
For AHCI it is possible to get ATA status and ATA error, for NCQ commands,
if we extract it from the FIS rather than reading the PxTFD register,
and this is what we do in ahci_qc_ncq_fill_rtf().
Probably, most other drivers could also extract this from the FIS,
if we spend the effort on implementing that for every driver.
But if we don't do that, the drivers will read the TF register,
which e.g. for:
https://github.com/torvalds/linux/blob/v6.10-rc4/drivers/ata/sata_nv.c#L1400-L1407
doesn't seem to work for NCQ commands.
So I'm not sure if we can remove ATA_QCFLAG_RESULT_TF, but we could
definitely set it unconditionally for non-NCQ commands if we want.
Kind regards,
Niklas
next prev parent reply other threads:[~2024-06-21 11:41 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-14 19:18 [PATCH v1 0/4] ATA PASS-THROUGH sense data fixes Igor Pylypiv
2024-06-14 19:18 ` [PATCH v1 1/4] ata: libata: Remove redundant sense_buffer memsets Igor Pylypiv
2024-06-16 23:13 ` Damien Le Moal
2024-06-18 19:31 ` Igor Pylypiv
2024-06-17 10:41 ` Niklas Cassel
2024-06-18 19:58 ` Igor Pylypiv
2024-06-20 11:51 ` Niklas Cassel
2024-06-20 23:21 ` Igor Pylypiv
2024-06-14 19:18 ` [PATCH v1 2/4] ata: libata-scsi: Generate ATA PT sense data when ATA ERR/DF are set Igor Pylypiv
2024-06-16 23:22 ` Damien Le Moal
2024-06-18 1:13 ` Igor Pylypiv
2024-06-20 13:12 ` Niklas Cassel
2024-06-20 23:24 ` Igor Pylypiv
2024-06-17 11:29 ` Niklas Cassel
2024-06-17 12:37 ` Niklas Cassel
2024-06-18 21:51 ` Igor Pylypiv
2024-06-20 12:55 ` Niklas Cassel
2024-06-21 0:05 ` Damien Le Moal
2024-06-21 11:41 ` Niklas Cassel [this message]
2024-06-14 19:18 ` [PATCH v1 3/4] ata: libata-scsi: Report valid sense data for ATA PT if present Igor Pylypiv
2024-06-16 23:25 ` Damien Le Moal
2024-06-18 0:02 ` Igor Pylypiv
2024-06-18 2:20 ` Damien Le Moal
2024-06-17 10:49 ` Niklas Cassel
2024-06-17 23:31 ` Igor Pylypiv
2024-06-20 14:24 ` Niklas Cassel
2024-06-20 14:39 ` Niklas Cassel
2024-06-20 23:34 ` Igor Pylypiv
2024-06-14 19:18 ` [PATCH v1 4/4] ata: libata-scsi: Fix offsets for the fixed format sense data Igor Pylypiv
2024-06-16 23:37 ` Damien Le Moal
2024-06-18 1:51 ` Igor Pylypiv
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=ZnVm8Ah2KyvosTs0@ryzen.lan \
--to=cassel@kernel.org \
--cc=dlemoal@kernel.org \
--cc=hare@suse.de \
--cc=ipylypiv@google.com \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--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 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).