* Enabling AHCI on ICH7 without BIOS support
@ 2007-08-14 13:09 Jonathan Bastien-Filiatrault
2007-08-16 12:23 ` Tejun Heo
0 siblings, 1 reply; 8+ messages in thread
From: Jonathan Bastien-Filiatrault @ 2007-08-14 13:09 UTC (permalink / raw)
To: jgarzik; +Cc: linux-ide
Hello,
I am the owner of a Dell Latitude D620 notebook with an ICH7 SATA
controller, unfortunately, the BIOS does not offer the option of using
"native mode" instead of "compatibility mode" when it comes to SATA. For
now, the ata_piix runs happily in compatibility mode. Looking at the
ICH7 docs, I found that poking register 0x90 in PCI configuration space
with value 0x40 should enable AHCI. However, there are some issues with
poking that register with setpci in an early initramfs:
- The kernel does not seem to update the device id from PCI config
space, which changes with the controller mode (it would seem the PCI
subsystem keeps a copy)
- Poking PCI registers from userspace is far from ideal
It would be great if the AHCI driver (or otherwise) had a
"force_ich7_ahci" to properly setup and initialize this device in full
"native" AHCI mode. This option would be greatly welcome from users like
me who have a stupid bios (eh, who doesn't).
Thank you,
Jonathan
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Enabling AHCI on ICH7 without BIOS support
2007-08-14 13:09 Enabling AHCI on ICH7 without BIOS support Jonathan Bastien-Filiatrault
@ 2007-08-16 12:23 ` Tejun Heo
2007-08-16 12:58 ` Jonathan Bastien-Filiatrault
0 siblings, 1 reply; 8+ messages in thread
From: Tejun Heo @ 2007-08-16 12:23 UTC (permalink / raw)
To: Jonathan Bastien-Filiatrault; +Cc: jgarzik, linux-ide
Hello,
Jonathan Bastien-Filiatrault wrote:
> Hello,
>
> I am the owner of a Dell Latitude D620 notebook with an ICH7 SATA
> controller, unfortunately, the BIOS does not offer the option of using
> "native mode" instead of "compatibility mode" when it comes to SATA. For
> now, the ata_piix runs happily in compatibility mode. Looking at the
> ICH7 docs, I found that poking register 0x90 in PCI configuration space
> with value 0x40 should enable AHCI. However, there are some issues with
> poking that register with setpci in an early initramfs:
>
>
> - The kernel does not seem to update the device id from PCI config
> space, which changes with the controller mode (it would seem the PCI
> subsystem keeps a copy)
>
> - Poking PCI registers from userspace is far from ideal
>
>
> It would be great if the AHCI driver (or otherwise) had a
> "force_ich7_ahci" to properly setup and initialize this device in full
> "native" AHCI mode. This option would be greatly welcome from users like
> me who have a stupid bios (eh, who doesn't).
Sorry but most BIOSen don't map ABAR unless it supports AHCI and there
usually isn't a hole to fit in ABAR afterwards unless the kernel
completely reallocates IO resources, which, again unfortunately, can't
be done reliably cuz machines can be quirky and might puke if addresses
aren't laid out as their BIOSen would do.
So, you'll have to live with ata_piix.
--
tejun
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Enabling AHCI on ICH7 without BIOS support
2007-08-16 12:23 ` Tejun Heo
@ 2007-08-16 12:58 ` Jonathan Bastien-Filiatrault
2007-08-16 13:19 ` Tejun Heo
2007-08-19 1:44 ` ISHIKAWA Mutsumi
0 siblings, 2 replies; 8+ messages in thread
From: Jonathan Bastien-Filiatrault @ 2007-08-16 12:58 UTC (permalink / raw)
To: Tejun Heo; +Cc: jgarzik, linux-ide
Tejun Heo wrote:
> Hello,
>
> Jonathan Bastien-Filiatrault wrote:
>
>> Hello,
>>
>> I am the owner of a Dell Latitude D620 notebook with an ICH7 SATA
>> controller, unfortunately, the BIOS does not offer the option of using
>> "native mode" instead of "compatibility mode" when it comes to SATA. For
>> now, the ata_piix runs happily in compatibility mode. Looking at the
>> ICH7 docs, I found that poking register 0x90 in PCI configuration space
>> with value 0x40 should enable AHCI. However, there are some issues with
>> poking that register with setpci in an early initramfs:
>>
>>
>> - The kernel does not seem to update the device id from PCI config
>> space, which changes with the controller mode (it would seem the PCI
>> subsystem keeps a copy)
>>
>> - Poking PCI registers from userspace is far from ideal
>>
>>
>> It would be great if the AHCI driver (or otherwise) had a
>> "force_ich7_ahci" to properly setup and initialize this device in full
>> "native" AHCI mode. This option would be greatly welcome from users like
>> me who have a stupid bios (eh, who doesn't).
>>
>
> Sorry but most BIOSen don't map ABAR unless it supports AHCI and there
> usually isn't a hole to fit in ABAR afterwards unless the kernel
> completely reallocates IO resources, which, again unfortunately, can't
> be done reliably cuz machines can be quirky and might puke if addresses
> aren't laid out as their BIOSen would do.
>
> So, you'll have to live with ata_piix.
>
>
So far, I have managed to patch up the AHCI driver to initialize the
ICH7 AHCI state machine as the BIOS would do (as per the AHCI spec
instructions). This involves mapping ABAR and such. So far, I have
gotten the AHCI driver to detect the chip properly, but it does not
detect any drives. It looks like I will need to further initialize the
chip. I think there might be a chance of success, but it will involve
manually specifying which ports are present via a module parameter.
Thank you,
Jonathan
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Enabling AHCI on ICH7 without BIOS support
2007-08-16 12:58 ` Jonathan Bastien-Filiatrault
@ 2007-08-16 13:19 ` Tejun Heo
2007-08-19 1:44 ` ISHIKAWA Mutsumi
1 sibling, 0 replies; 8+ messages in thread
From: Tejun Heo @ 2007-08-16 13:19 UTC (permalink / raw)
To: Jonathan Bastien-Filiatrault; +Cc: jgarzik, linux-ide
Jonathan Bastien-Filiatrault wrote:
> So far, I have managed to patch up the AHCI driver to initialize the
> ICH7 AHCI state machine as the BIOS would do (as per the AHCI spec
> instructions). This involves mapping ABAR and such. So far, I have
> gotten the AHCI driver to detect the chip properly, but it does not
> detect any drives. It looks like I will need to further initialize the
> chip. I think there might be a chance of success, but it will involve
> manually specifying which ports are present via a module parameter.
You probably need to program PCS.
--
tejun
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Enabling AHCI on ICH7 without BIOS support
2007-08-16 12:58 ` Jonathan Bastien-Filiatrault
2007-08-16 13:19 ` Tejun Heo
@ 2007-08-19 1:44 ` ISHIKAWA Mutsumi
2007-08-19 5:34 ` Tejun Heo
1 sibling, 1 reply; 8+ messages in thread
From: ISHIKAWA Mutsumi @ 2007-08-19 1:44 UTC (permalink / raw)
To: joe; +Cc: htejun, jgarzik, linux-ide
>>>>> In <46C44A05.9040302@dastyle.net>
>>>>> Jonathan Bastien-Filiatrault <joe@dastyle.net> wrote:
>> Tejun Heo wrote:
>>
>> > Hello,
>> >
>> > Jonathan Bastien-Filiatrault wrote:
>> >
>> >> Hello,
>> >>
>> >> I am the owner of a Dell Latitude D620 notebook with an ICH7 SATA
>> >> controller, unfortunately, the BIOS does not offer the option of using
>> >> "native mode" instead of "compatibility mode" when it comes to SATA. For
>> >> now, the ata_piix runs happily in compatibility mode. Looking at the
>> >> ICH7 docs, I found that poking register 0x90 in PCI configuration space
>> >> with value 0x40 should enable AHCI. However, there are some issues with
>> >> poking that register with setpci in an early initramfs:
>> >>
>> >>
>> >> - The kernel does not seem to update the device id from PCI config
>> >> space, which changes with the controller mode (it would seem the PCI
>> >> subsystem keeps a copy)
>> >>
>> >> - Poking PCI registers from userspace is far from ideal
>> >>
>> >>
>> >> It would be great if the AHCI driver (or otherwise) had a
>> >> "force_ich7_ahci" to properly setup and initialize this device in full
>> >> "native" AHCI mode. This option would be greatly welcome from users like
>> >> me who have a stupid bios (eh, who doesn't).
>> >>
>> >
>> > Sorry but most BIOSen don't map ABAR unless it supports AHCI and there
>> > usually isn't a hole to fit in ABAR afterwards unless the kernel
>> > completely reallocates IO resources, which, again unfortunately, can't
>> > be done reliably cuz machines can be quirky and might puke if addresses
>> > aren't laid out as their BIOSen would do.
>> >
>> > So, you'll have to live with ata_piix.
>> >
>> >
>> So far, I have managed to patch up the AHCI driver to initialize the
>> ICH7 AHCI state machine as the BIOS would do (as per the AHCI spec
>> instructions). This involves mapping ABAR and such. So far, I have
>> gotten the AHCI driver to detect the chip properly, but it does not
>> detect any drives. It looks like I will need to further initialize the
>> chip. I think there might be a chance of success, but it will involve
>> manually specifying which ports are present via a module parameter.
Do you know Edvin's patch?
http://www.bughost.org/pipermail/power/2007-June/000538.html
I've tested it and works fine on my note
(Sony VAIO type S VGN-SZ92PS, ICH7-M)
--
ISHIKAWA Mutsumi
<ishikawa@fonfun.co.jp>, <ishikawa@debian.org>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Enabling AHCI on ICH7 without BIOS support
2007-08-19 1:44 ` ISHIKAWA Mutsumi
@ 2007-08-19 5:34 ` Tejun Heo
2007-08-19 6:56 ` Török Edwin
0 siblings, 1 reply; 8+ messages in thread
From: Tejun Heo @ 2007-08-19 5:34 UTC (permalink / raw)
To: ISHIKAWA Mutsumi; +Cc: joe, jgarzik, linux-ide
ISHIKAWA Mutsumi wrote:
>>>>>> In <46C44A05.9040302@dastyle.net>
>>>>>> Jonathan Bastien-Filiatrault <joe@dastyle.net> wrote:
>>> Tejun Heo wrote:
>>>
>>>> Hello,
>>>>
>>>> Jonathan Bastien-Filiatrault wrote:
>>>>
>>>>> Hello,
>>>>>
>>>>> I am the owner of a Dell Latitude D620 notebook with an ICH7 SATA
>>>>> controller, unfortunately, the BIOS does not offer the option of using
>>>>> "native mode" instead of "compatibility mode" when it comes to SATA. For
>>>>> now, the ata_piix runs happily in compatibility mode. Looking at the
>>>>> ICH7 docs, I found that poking register 0x90 in PCI configuration space
>>>>> with value 0x40 should enable AHCI. However, there are some issues with
>>>>> poking that register with setpci in an early initramfs:
>>>>>
>>>>>
>>>>> - The kernel does not seem to update the device id from PCI config
>>>>> space, which changes with the controller mode (it would seem the PCI
>>>>> subsystem keeps a copy)
>>>>>
>>>>> - Poking PCI registers from userspace is far from ideal
>>>>>
>>>>>
>>>>> It would be great if the AHCI driver (or otherwise) had a
>>>>> "force_ich7_ahci" to properly setup and initialize this device in full
>>>>> "native" AHCI mode. This option would be greatly welcome from users like
>>>>> me who have a stupid bios (eh, who doesn't).
>>>>>
>>>> Sorry but most BIOSen don't map ABAR unless it supports AHCI and there
>>>> usually isn't a hole to fit in ABAR afterwards unless the kernel
>>>> completely reallocates IO resources, which, again unfortunately, can't
>>>> be done reliably cuz machines can be quirky and might puke if addresses
>>>> aren't laid out as their BIOSen would do.
>>>>
>>>> So, you'll have to live with ata_piix.
>>>>
>>>>
>>> So far, I have managed to patch up the AHCI driver to initialize the
>>> ICH7 AHCI state machine as the BIOS would do (as per the AHCI spec
>>> instructions). This involves mapping ABAR and such. So far, I have
>>> gotten the AHCI driver to detect the chip properly, but it does not
>>> detect any drives. It looks like I will need to further initialize the
>>> chip. I think there might be a chance of success, but it will involve
>>> manually specifying which ports are present via a module parameter.
>
> Do you know Edvin's patch?
>
> http://www.bughost.org/pipermail/power/2007-June/000538.html
>
> I've tested it and works fine on my note
> (Sony VAIO type S VGN-SZ92PS, ICH7-M)
Yeah, I've seen it but I'm not sure whether it would worth the risk.
For one, there are BIOSen which won't assign IO memory region to ABAR at
all. There also is a patch to reallocate IO memory regions and make
room for ABAR but that can break things.
Thanks.
--
tejun
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Enabling AHCI on ICH7 without BIOS support
2007-08-19 5:34 ` Tejun Heo
@ 2007-08-19 6:56 ` Török Edwin
2007-08-19 8:07 ` Tejun Heo
0 siblings, 1 reply; 8+ messages in thread
From: Török Edwin @ 2007-08-19 6:56 UTC (permalink / raw)
To: linux-ide
Tejun Heo <htejun <at> gmail.com> writes:
> ISHIKAWA Mutsumi wrote:
> > Do you know Edvin's patch?
> >
> > http://www.bughost.org/pipermail/power/2007-June/000538.html
> >
> > I've tested it and works fine on my note
> > (Sony VAIO type S VGN-SZ92PS, ICH7-M)
Thanks for testing.
>
> Yeah, I've seen it but I'm not sure whether it would worth the risk.
> For one, there are BIOSen which won't assign IO memory region to ABAR at
> all. There also is a patch to reallocate IO memory regions and make
> room for ABAR but that can break things.
>
It works fine on 2.6.22 (except that you loose the CD-ROM, and I found no way to
reliably reactivate it), however since 2.6.23-rc it breaks.
I get misrouted IRQs: IRQ 12 (keyboard) is being fired instead of IRQ 18 (ahci),
the kernel disables IRQ 18 because of spurious IRQs, and then IRQ 0 gets fired
instead of IRQ 18. It is an edge-triggered interrupt, and I get the feeling the
interrupt status isn't cleared after handling it, since I continously get
messages about misrouted IRQs even if the system idle.
It works with irqpoll, but I don't have to tell you how slow that is.
When I'll be back from holiday I will try to compare lspci -xxx outputs, and
then maybe try a git-bisect.
Bottom line is that force-enabling AHCI like this can stop working at any time
with a new kernel version.
If there is a document describing _exactly_ what steps I need to follow to
properly enable the device, I'd be happy to read it, but I guess such
documentation is only available to BIOS developers.
--Edwin
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Enabling AHCI on ICH7 without BIOS support
2007-08-19 6:56 ` Török Edwin
@ 2007-08-19 8:07 ` Tejun Heo
0 siblings, 0 replies; 8+ messages in thread
From: Tejun Heo @ 2007-08-19 8:07 UTC (permalink / raw)
To: Török Edwin; +Cc: linux-ide
Török Edwin wrote:
> If there is a document describing _exactly_ what steps I need to follow to
> properly enable the device, I'd be happy to read it, but I guess such
> documentation is only available to BIOS developers.
It all depends on how BIOS set up the controller / IO regions during
boot and even worse BIOS might expect certain configuration when ACPI
suspend/resume or shutdown transition is requested. I don't really
think we can include AHCI force-enable in the mainline. It's just too
risky without too much benefit.
--
tejun
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2007-08-19 8:08 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-08-14 13:09 Enabling AHCI on ICH7 without BIOS support Jonathan Bastien-Filiatrault
2007-08-16 12:23 ` Tejun Heo
2007-08-16 12:58 ` Jonathan Bastien-Filiatrault
2007-08-16 13:19 ` Tejun Heo
2007-08-19 1:44 ` ISHIKAWA Mutsumi
2007-08-19 5:34 ` Tejun Heo
2007-08-19 6:56 ` Török Edwin
2007-08-19 8:07 ` Tejun Heo
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).