From: Robert Hancock <hancockr@shaw.ca>
To: Tejun Heo <htejun@gmail.com>,
linux-kernel <linux-kernel@vger.kernel.org>,
ide <linux-ide@vger.kernel.org>
Cc: l.genoni@oltrelinux.com, Alan Cox <alan@lxorguk.ukuu.org.uk>
Subject: Re: something strange in libata-core.c for kernel 2.6.22-rc3
Date: Mon, 21 May 2007 02:34:11 -0600 [thread overview]
Message-ID: <46515983.6030206@shaw.ca> (raw)
In-Reply-To: <fa.Ldjy2OubeKomZD0OV2gRm/wpUFo@ifi.uio.no>
Tejun Heo wrote:
> l.genoni@oltrelinux.com wrote:
>> Mybe I am wrong, but if you are detecting 40-wire cable to set them to
>> DMA/33, why the check includes also 80-wire cables configuring them to
>> DMA/33 too?
>>
>> With this patch my nvidia4 IDE controllers detects correctly and
>> configure correctly DMA/100 for my HD and DMA/33 for my DVD (the first
>> uses a 80-wire cable, the second a 40-wire cable).
>>
>> Am I wrong somewhere?
>
> That's the drive side verification of 80c cable check, so if the
> condition triggers we downgrade 80c or unknown to 40c. Cable detection
> on nvidia PATA is a disaster. You're supposed to do some ACPI dancing
> and drive side detection is completely bogus. Eeeek....
>
> Alan, did you have a chance to test the ACPI cable detection? It just
> didn't work when I tried it. It always returned 80c on my machine.
On a whim I started poking around in the disassembled ACPI DSDT code for
my Asus A8N-SLI Deluxe board, which is one of these chipsets. The
original thought was that the STM/GTM trick on these chipsets is
supposed to allow us to determine what modes we should use based on what
modes it sets up appropriately. Unfortunately, unless I'm missing
something in the AML (which is possible) it doesn't seem like there is
any validation being done on the settings passed in. The settings appear
to essentially just get programmed into the controller when STM is
called and read back on GTM. The only complication is some logic on the
_PTS method (Prepare to Sleep) which stores the current settings into
some variables, and in STM, if a flag was set by the _PTS method, the
previous settings for all registers are stored back first before writing
the requested values into the correct places.
So in this case, obviously the approach used by pata_acpi, etc. won't
work for cable detection. Whatever magic register on the chipset
contains the cable detect value, the AML doesn't seem to be accessing
it. The ACPI spec doesn't really give any guarantee that the "try STM on
all possible modes" trick will work either, since there seems to be no
mention of the AML being required to validate the mode and the STM
function has no return value to indicate failure.
I guess this means that what we have to do is trust that the BIOS set up
a reasonable mode and base the cable detect on that (either by reading
back the boot-up controller registers, or by calling GTM). I imagine
this is what the Windows default IDE driver is doing (just using the
boot-up mode and feeding it back using GTM/STM on suspend/resume cycles).
--
Robert Hancock Saskatoon, SK, Canada
To email, remove "nospam" from hancockr@nospamshaw.ca
Home Page: http://www.roberthancock.com/
next parent reply other threads:[~2007-05-21 8:34 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <fa.MCe9nCgx+WnsHp+weZyM9LiDF0s@ifi.uio.no>
[not found] ` <fa.rv8/6n3uBnAIoUHHNUW3eR7cJd8@ifi.uio.no>
[not found] ` <fa.LXy58QwLlPXDhsfVUU9kEfA3QbI@ifi.uio.no>
[not found] ` <fa.Ldjy2OubeKomZD0OV2gRm/wpUFo@ifi.uio.no>
2007-05-21 8:34 ` Robert Hancock [this message]
2007-05-21 9:09 ` something strange in libata-core.c for kernel 2.6.22-rc3 Tejun Heo
2007-05-21 11:15 ` Alan Cox
2007-05-21 18:14 ` Robert Hancock
2007-05-21 9:41 ` Jeff Garzik
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=46515983.6030206@shaw.ca \
--to=hancockr@shaw.ca \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=htejun@gmail.com \
--cc=l.genoni@oltrelinux.com \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@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).