From: Jeff Garzik <jeff@garzik.org>
To: Tejun Heo <tj@kernel.org>
Cc: IDE/ATA development list <linux-ide@vger.kernel.org>,
stable@kernel.org, josephjang@gmail.com, mrsohn@gmail.com
Subject: Re: [PATCH #upstream-fixes, -stable] ata_piix: add workaround for Samsung DB-P70
Date: Fri, 13 Mar 2009 14:58:09 -0400 [thread overview]
Message-ID: <49BAACC1.8090800@garzik.org> (raw)
In-Reply-To: <49ACB780.1070604@kernel.org>
Tejun Heo wrote:
> Samsung DB-P70 somehow botched the first ICH9 SATA port. The board
> doesn't expose the first port but somehow SStatus reports link online
> while failing SRST protocol leading to repeated probe failures and
> thus long boot delay.
>
> Because the BIOS doesn't carry any identifying DMI information, the
> port can't be blacklisted safely. Fortunately, the controller does
> have subsystem vendor and ID set. It's unclear whether the subsystem
> IDs are used only for the board but it can be safely worked around by
> disabling SIDPR access and just using SRST works around the problem.
> Even when the workaround is triggered on an unaffected board the only
> side effect will be missing SCR access.
>
> Signed-off-by: Tejun Heo <tj@kernel.org>
> Reported-by: Joseph Jang <josephjang@gmail.com>
> Reported-by: Jonghyon Sohn <mrsohn@gmail.com>
> ---
> drivers/ata/ata_piix.c | 37 +++++++++++++++++++++++++++++++++++++
> 1 file changed, 37 insertions(+)
>
> diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
> index 54961c0..ef8b30d 100644
> --- a/drivers/ata/ata_piix.c
> +++ b/drivers/ata/ata_piix.c
> @@ -1289,6 +1289,39 @@ static const int *__devinit piix_init_sata_map(struct pci_dev *pdev,
> return map;
> }
>
> +static bool piix_no_sidpr(struct ata_host *host)
> +{
> + struct pci_dev *pdev = to_pci_dev(host->dev);
> +
> + /*
> + * Samsung DB-P70 only has three ATA ports exposed and
> + * curiously the unconnected first port reports link online
> + * while not responding to SRST protocol causing excessive
> + * detection delay.
> + *
> + * Unfortunately, the system doesn't carry enough DMI
> + * information to identify the machine but does have subsystem
> + * vendor and device set. As it's unclear whether the
> + * subsystem vendor/device is used only for this specific
> + * board, the port can't be disabled solely with the
> + * information; however, turning off SIDPR access works around
> + * the problem. Turn it off.
> + *
> + * This problem is reported in bnc#441240.
> + *
> + * https://bugzilla.novell.com/show_bug.cgi?id=441420
> + */
> + if (pdev->vendor == PCI_VENDOR_ID_INTEL && pdev->device == 0x2920 &&
> + pdev->subsystem_vendor == PCI_VENDOR_ID_SAMSUNG &&
> + pdev->subsystem_device == 0xb049) {
> + dev_printk(KERN_WARNING, host->dev,
> + "Samsung DB-P70 detected, disabling SIDPR\n");
> + return true;
> + }
> +
> + return false;
> +}
> +
> static int __devinit piix_init_sidpr(struct ata_host *host)
> {
> struct pci_dev *pdev = to_pci_dev(host->dev);
> @@ -1302,6 +1335,10 @@ static int __devinit piix_init_sidpr(struct ata_host *host)
> if (hpriv->map[i] == IDE)
> return 0;
>
> + /* is it blacklisted? */
> + if (piix_no_sidpr(host))
> + return 0;
applied
prev parent reply other threads:[~2009-03-13 18:58 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-03 4:52 [PATCH #upstream-fixes, -stable] ata_piix: add workaround for Samsung DB-P70 Tejun Heo
2009-03-03 13:17 ` Mark Lord
2009-03-04 2:36 ` Tejun Heo
2009-03-04 15:52 ` Mark Lord
2009-03-13 18:58 ` Jeff Garzik [this message]
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=49BAACC1.8090800@garzik.org \
--to=jeff@garzik.org \
--cc=josephjang@gmail.com \
--cc=linux-ide@vger.kernel.org \
--cc=mrsohn@gmail.com \
--cc=stable@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).