All of lore.kernel.org
 help / color / mirror / Atom feed
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



      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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.