From: Tejun Heo <htejun@gmail.com>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: jeff@garzik.org, linux-ide@vger.kernel.org, liml@rtr.ca,
albertl@mail.com, jens.axboe@oracle.com
Subject: Re: [PATCH 13/13] libata: use PIO for misc ATAPI commands
Date: Wed, 28 Nov 2007 08:01:54 +0900 [thread overview]
Message-ID: <474CA1E2.1060008@gmail.com> (raw)
In-Reply-To: <20071127165600.39b8c383@the-village.bc.nu>
Hello, Alan.
Alan Cox wrote:
> On Wed, 28 Nov 2007 00:13:59 +0900
> Tejun Heo <htejun@gmail.com> wrote:
>
>> ATAPI devices come with plethora of bugs and many ATA controllers have
>> trouble dealing with odd byte DMA transfers. The problem is currently
>> somewhat masked by not allowing DMA transfers if the transfer size
>> isn't aligned to 16 bytes plus partial masking in problematic LLDs.
>
> NAK. Same complaint I had originally and which is not addressed.
Heh, yeah, I expected NACK from you and my argument is the same. I'll
just repeat one more time for the record as the other thread didn't cc
linux-ide. :-)
> The whole approach being used here is fundamentally in the wrong place.
> Its also horribly damaging because of our PIO behaviour currently.
>
> - Until our PIO works without IRQ masking you can't take this approach for
> arbitary devices without hurting users badly.
That definitely is on to do list. I wonder Jeff is still against
turning off IRQ from the IRQ controller?
Also, even if it's being done from interrupt handler, the data transfer
is usually very short (tens of bytes). I hardly feel any difference.
Also, let's not forget there are already drivers which do things this
way and yet others for which PIO or DMA doesn't matter at all.
> - I still see no evidence in the drives I've looked at that all of this
> is drive side (or indeed that most of it is)
Of the ten drives I tested, only two were problematic but then again I
didn't try with the 16 byte alignment test lifted. What I'm worried
about is test coverage. The 16 byte alignment made us avoid some
problem cases (Albert, do you recall which?) but the condition itself is
problematic because it partially masks actual problems (dumb luck (tm)).
Plus, different drivers use different masking rules, so debugging
becomes difficult as the behavior depends on the combination of drive
and controller.
Because we can't use DMA uniformly, I went the other way and tried to
use PIO uniformly. Another important point is that the other OS which
is probably the only platform most ATAPI device vendors test against use
PIO for these commands.
> - Control over the DMA/PIO strategy belongs with the driver. If we mess
> that up it will cost us dearly later.
And I don't get what we'll lose. Care to deliberate?
> What we should be doing IMHO is
>
> - Fix the PIO IRQ masking
> - Creating ata_std_check_atapi_dma()
> - Let drivers select between the std_check_atapi_dma() and their
> own rules
>
> Finally ata_std_check_atapi_dma should be blacklist based for all but the
> really generic issues (%15 etc), otherwise we punish the 99.999% of
> systems that work perfectly well for the sake of a tiny number that are
> problematic.
My argument is... Yes, we punish other systems, but the amount of
punishment is not substantial and definitely negotiable with gained
behavior uniformity between drivers and with the other OS.
Note1: If anybody can show me what we'll actually lose by forcing PIO,
I'm sold.
Note2: Let's say we fixed PIO IRQ masking. Would that change your opinion?
Thanks.
--
tejun
next prev parent reply other threads:[~2007-11-27 23:02 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-27 15:13 [PATCHSET] libata: improve ATAPI data transfer handling Tejun Heo
2007-11-27 15:13 ` [PATCH 01/13] libata: update atapi_eh_request_sense() such that lbam/lbah contains buffer size Tejun Heo
2007-11-27 15:13 ` [PATCH 02/13] cdrom: add more GPCMD_* constants Tejun Heo
2007-11-27 15:13 ` [PATCH 03/13] libata: rename ATA_PROT_ATAPI_* to ATAPI_PROT_* Tejun Heo
2007-11-27 15:13 ` [PATCH 04/13] libata: add ATAPI_* cmd types and implement atapi_cmd_type() Tejun Heo
2007-11-27 15:13 ` [PATCH 05/13] libata: improve ATAPI draining Tejun Heo
2007-11-29 6:28 ` Albert Lee
2007-11-29 7:26 ` Tejun Heo
2007-11-29 14:34 ` Tejun Heo
2007-11-27 15:13 ` [PATCH 06/13] libata: make atapi_request_sense() use sg Tejun Heo
2007-11-27 15:13 ` [PATCH 07/13] libata: kill non-sg DMA interface Tejun Heo
2007-11-27 15:13 ` [PATCH 08/13] libata: change ATA_QCFLAG_DMAMAP semantics Tejun Heo
2007-11-27 15:13 ` [PATCH 09/13] libata: convert to chained sg Tejun Heo
2007-11-27 15:13 ` [PATCH 10/13] libata: add qc->dma_nbytes Tejun Heo
2007-11-27 17:20 ` Alan Cox
2007-11-27 15:13 ` [PATCH 11/13] libata: implement ATAPI drain buffer Tejun Heo
2007-11-27 15:13 ` [PATCH 12/13] libata: implement ATAPI per-command-type DMA horkages Tejun Heo
2007-11-27 15:13 ` [PATCH 13/13] libata: use PIO for misc ATAPI commands Tejun Heo
2007-11-27 16:56 ` Alan Cox
2007-11-27 23:01 ` Tejun Heo [this message]
2007-11-27 23:31 ` Mark Lord
2007-11-27 23:34 ` Mark Lord
2007-11-27 23:37 ` 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=474CA1E2.1060008@gmail.com \
--to=htejun@gmail.com \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=albertl@mail.com \
--cc=jeff@garzik.org \
--cc=jens.axboe@oracle.com \
--cc=liml@rtr.ca \
--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;
as well as URLs for NNTP newsgroup(s).