Re: ata_piix on MacBook4,1: fail to startup in a certain situation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks for verifying.

MATSUBAYASHI 'Shaolin' Kohji wrote:
> At Thu, 29 May 2008 10:45:18 +0900,
> Tejun Heo wrote:
>> With the patch applied, control should never reach either of the above
>> two lines.  Can you please double check?
> 
> I applied the following patch to check where the booting stops at
> 
> 
> --- drivers/ata/ata_piix.c.orig	2008-05-29 12:26:18.000000000 +0900
> +++ drivers/ata/ata_piix.c	2008-05-29 12:20:19.000000000 +0900
> @@ -251,6 +251,7 @@
>  	{ 0x8086, 0x2828, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata },
>  	/* Mobile SATA Controller IDE (ICH8M), Apple */
>  	{ 0x8086, 0x2828, 0x106b, 0x00a0, 0, 0, ich8m_apple_sata },
> +	{ 0x8086, 0x2828, 0x106b, 0x00a1, 0, 0, ich8m_apple_sata },

This should make your controller to use type ich8m_apple_sata.

>  	/* SATA Controller IDE (ICH9) */
>  	{ 0x8086, 0x2920, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata },
>  	/* SATA Controller IDE (ICH9) */
> @@ -526,7 +527,7 @@
>  
>  	[ich8m_apple_sata] =
>  	{
> -		.flags		= PIIX_SATA_FLAGS | PIIX_FLAG_SIDPR,
> +		.flags		= PIIX_SATA_FLAGS,
>  		.pio_mask	= 0x1f,	/* pio0-4 */
>  		.mwdma_mask	= 0x07, /* mwdma0-2 */
>  		.udma_mask	= ATA_UDMA6,

Which doesn't have PIIX_FLAG_SIDPR set.

> @@ -1360,6 +1361,8 @@
>  	if (!(host->ports[0]->flags & PIIX_FLAG_SIDPR))
>  		return;

And triggers this condition and return.

> +dev_printk(KERN_INFO, &pdev->dev, "PASSED: checking PIIX_FLAG_SIDPR\n");
> +
>  	if (pci_resource_start(pdev, PIIX_SIDPR_BAR) == 0 ||
>  	    pci_resource_len(pdev, PIIX_SIDPR_BAR) != PIIX_SIDPR_LEN)
>  		return;

So, it shouldn't get here.  Strange.  Ah... Crap.  Now I see it.
Generic entry for 2828 is above ich8m_apple_sata entry.  I wonder how
this ever worked.  Here's the updated patch.  This is without the SIDPR
change.  If this doesn't work please remove PIIX_FLAG_SIDPR from
ich8m_apple_sata entry and see whether that helps.

Thanks.

-- 
tejun
diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
index a9027b8..02d6efe 100644
--- a/drivers/ata/ata_piix.c
+++ b/drivers/ata/ata_piix.c
@@ -247,10 +247,11 @@ static const struct pci_device_id piix_pci_tbl[] = {
 	{ 0x8086, 0x2820, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata },
 	/* SATA Controller 2 IDE (ICH8) */
 	{ 0x8086, 0x2825, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata },
-	/* Mobile SATA Controller IDE (ICH8M) */
-	{ 0x8086, 0x2828, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata },
 	/* Mobile SATA Controller IDE (ICH8M), Apple */
 	{ 0x8086, 0x2828, 0x106b, 0x00a0, 0, 0, ich8m_apple_sata },
+	{ 0x8086, 0x2828, 0x106b, 0x00a1, 0, 0, ich8m_apple_sata },
+	/* Mobile SATA Controller IDE (ICH8M) */
+	{ 0x8086, 0x2828, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata },
 	/* SATA Controller IDE (ICH9) */
 	{ 0x8086, 0x2920, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata },
 	/* SATA Controller IDE (ICH9) */

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux