sata_mv 0000:03:06.0: PCI ERROR; PCI IRQ cause=0x30000040

Submitted by Mark Lord on Oct. 9, 2009, 3:07 a.m.

Details

Message ID 4ACEA8FB.4060901@rtr.ca
State Not Applicable
Delegated to: David Miller
Headers show

Commit Message

Mark Lord Oct. 9, 2009, 3:07 a.m.
Bernie Innocenti wrote:
>
> I want to try reducing the frequency of the PCI-X bus, but the BIOS does
> not seem to provide a setting for it.  Is there another way?
..

Nothing that's easy.

Here.. apply this patch, and post the output after you reboot with it.


--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Mark Lord Oct. 9, 2009, 3:16 a.m.
Mark Lord wrote:
> Bernie Innocenti wrote:
>>
>> I want to try reducing the frequency of the PCI-X bus, but the BIOS does
>> not seem to provide a setting for it.  Is there another way?
> ..
> 
> Nothing that's easy.
..

Adding to that:  there is a register on the chip,
which software could use to override the normal auto-detected
PCI mode (bus speed) for the chip.  This could be used to,
say, select 100Mhz or 66Mhz, or even 33Mhz operation.

BUT.. the register is autodetected from the bus at power-on,
and so if software wants to override that (by rewriting the reg),
it will also need to reset the PCI bus afterward.

Which requires knowing how to reset a PCI bridge,
something I don't know about.

Cheers
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch hide | download patch | download mbox

--- 2.6.31/drivers/ata/sata_mv.c.orig	2009-08-21 22:16:05.000000000 -0400
+++ linux/drivers/ata/sata_mv.c	2009-10-08 23:05:37.392203506 -0400
@@ -3738,6 +3738,12 @@ 
 			hp_flags |= MV_HP_ERRATA_60X1B2;
 			break;
 		case 0x9:
+		{
+			struct mv_host_priv *hpriv = host->private_data;
+			void __iomem *mmio = hpriv->base;
+			printk(KERN_INFO "sata_mv: pcix_mode=%d\n", mv_in_pcix_mode(host));
+			printk(KERN_INFO "sata_mv: MV_PCI_COMMAND=%08x\n", readl(mmio + MV_PCI_COMMAND);
+		}
 			hp_flags |= MV_HP_ERRATA_60X1C0;
 			break;
 		default: