From: Robert Hancock <hancockrwd@gmail.com>
To: Matthew Garrett <mjg59@srcf.ucam.org>
Cc: Matthew Wilcox <willy@linux.intel.com>,
Alan Cox <alan@lxorguk.ukuu.org.uk>, Tejun Heo <tj@kernel.org>,
Alex Buell <alex.buell@munted.org.uk>,
Jeff Garzik <jeff@garzik.org>, Theodore Ts'o <tytso@mit.edu>,
linux-kernel@vger.kernel.org,
Linux IDE mailing list <linux-ide@vger.kernel.org>
Subject: Re: No NCQ support on X61s Ultrabay? (Intel ICH8 SATA controller question)
Date: Thu, 30 Apr 2009 19:49:13 -0600 [thread overview]
Message-ID: <49FA5519.9000107@gmail.com> (raw)
In-Reply-To: <20090430154701.GA27737@srcf.ucam.org>
Matthew Garrett wrote:
> On Thu, Apr 30, 2009 at 08:35:08AM -0700, Matthew Wilcox wrote:
>> On Thu, Apr 30, 2009 at 02:47:02PM +0100, Alan Cox wrote:
>>>> So, at the point of driver load, there just isn't much we can do about
>>>> the missing ABAR. It's sad. Dunno why some laptop manufacturers
>>>> still program the thing into piix mode. :-(
>>> Forcing out of PIIX mode would need to go into the PCI quirks and be a
>>> boot option not a module one - at that point its doable as a header quirk.
>> I think Matthew Garrett already has code to do this.
>
> Yeah, but some testers reported that it broke after using it for a
> while. The most recent version I have is this:
We should likely have something like this in the kernel, but it should
default to off. For one thing, some machines seem to have BIOS code that
tries to poke the controller for some reason during suspend/shutdown
events, etc. which would likely go nuts if the controller was
unexpectedly in AHCI mode..
>
> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> index a807797..9e7b460 100644
> --- a/drivers/pci/quirks.c
> +++ b/drivers/pci/quirks.c
> @@ -893,6 +893,52 @@ DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP600_SATA, quirk
> DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP700_SATA, quirk_amd_ide_mode);
> DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP700_SATA, quirk_amd_ide_mode);
>
> +static void __devinit quirk_ahci_sata(struct pci_dev *pdev)
> +{
> + u32 sir, newval;
> + u16 mode;
> +
> + /* Make sure we're in AHCI mode */
> + pci_read_config_word(pdev, 0x90, &mode);
> + pci_write_config_word(pdev, 0x90, 0x40);
> +
> + /* Need to set the SCRAE bit */
> + pci_read_config_dword(pdev, 0x94, &sir);
> + newval = (sir | 0x200);
> + pci_write_config_dword(pdev, 0x94, newval);
> +
> + /* Set PCI_CLASS_STORAGE_SATA */
> + if ((pdev->class >> 8) == PCI_CLASS_STORAGE_IDE) {
> + pci_write_config_byte(pdev, PCI_CLASS_PROG, 0x01);
> + pci_write_config_byte(pdev, PCI_CLASS_DEVICE, 0x06);
> + pdev->class = PCI_CLASS_STORAGE_SATA_AHCI;
> + }
> +
> + pci_read_config_word(pdev, PCI_DEVICE_ID, &pdev->device);
> + pci_assign_resource(pdev, 5);
> +
> + printk (KERN_INFO "Quirked PIIX device to AHCI mode\n");
> +}
> +
> +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x2652, quirk_ahci_sata);
> +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x2653, quirk_ahci_sata);
> +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x2680, quirk_ahci_sata);
> +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x27c4, quirk_ahci_sata);
> +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x2828, quirk_ahci_sata);
> +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x2928, quirk_ahci_sata);
> +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x292d, quirk_ahci_sata);
> +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x292e, quirk_ahci_sata);
> +
> +#if 0
> +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x2651, quirk_ahci_sata);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x27c0, quirk_ahci_sata);
> +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x2820, quirk_ahci_sata);
> +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x2825, quirk_ahci_sata);
> +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x2920, quirk_ahci_sata);
> +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x2921, quirk_ahci_sata);
> +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x2926, quirk_ahci_sata);
> +#endif
> +
> /*
> * Serverworks CSB5 IDE does not fully support native mode
> */
>
next prev parent reply other threads:[~2009-05-01 1:49 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <E1LzLgA-0004j6-9W@closure.thunk.org>
2009-04-30 2:27 ` No NCQ support on X61s Ultrabay? (Intel ICH8 SATA controller question) Jeff Garzik
2009-04-30 7:33 ` Alex Buell
2009-04-30 7:45 ` Tejun Heo
2009-04-30 13:47 ` Alan Cox
2009-04-30 15:35 ` Matthew Wilcox
2009-04-30 15:47 ` Matthew Garrett
2009-05-01 1:49 ` Robert Hancock [this message]
2009-05-03 2:07 ` Tejun Heo
2009-05-03 20:50 ` Robert Hancock
2009-05-03 22:35 ` Jason Riedy
2009-04-30 11:34 ` Theodore Tso
2009-04-30 11:38 ` Theodore Tso
2009-05-01 1:51 ` Robert Hancock
2009-05-01 2:51 ` Theodore Tso
2009-05-01 4:21 ` Robert Hancock
2009-05-01 11:35 ` Matthew Wilcox
2009-05-01 13:14 ` Theodore Tso
2009-05-01 13:59 ` Matthew Garrett
2009-05-01 14:09 ` Matthew Wilcox
2009-04-30 15:42 ` Henrique de Moraes Holschuh
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=49FA5519.9000107@gmail.com \
--to=hancockrwd@gmail.com \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=alex.buell@munted.org.uk \
--cc=jeff@garzik.org \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mjg59@srcf.ucam.org \
--cc=tj@kernel.org \
--cc=tytso@mit.edu \
--cc=willy@linux.intel.com \
/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).