Re: [patch] PCI: modify SB700 SATA MSI quirk

Tejun Heo
2008-01-25T00:19:43Z

Shane Huang wrote:
> SB700 SATA MSI bug will be fixed in SB700 revision A21 at hardware
> level,
> but the SB700 revision older than A21 will also be found in the market.
> This patch modify the original quirk commit
> bc38b411fe696fad32b261f492cb4afbf1835256 instead of withdrawing it.
>
>
> Signed-off-by: Shane Huang <shane.huang@amd.com>
>
>
> Since there is some word wrapping problem with my mail client MS
> outlook, I also attach the patch as an attachment. Please check it.

Can you please get a decent email client? Thunderbird + toggle word
wrap + external editor combination works fine.

> diff -ruN old/drivers/pci/quirks.c new/drivers/pci/quirks.c
> --- old/drivers/pci/quirks.c 2008-01-07 05:45:38.000000000 +0800
> +++ new/drivers/pci/quirks.c 2008-01-22 11:31:09.000000000 +0800
> @@ -1709,6 +1709,22 @@
> {
> dev->dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG;
> }
> +static void __devinit quirk_msi_intx_disable_ati_bug(struct pci_dev
> *dev)
> +{
> + struct pci_dev *p;
> + u8 rev = 0;
> +
> + /* SB700 MSI issue will be fixed at HW level from revision A21,
> + * we need check PCI REVISION ID of SMBus controller to get
> SB700 revision.
> + */
> + p = pci_get_device(PCI_VENDOR_ID_ATI,
> PCI_DEVICE_ID_ATI_SBX00_SMBUS, NULL);

It would be nice if things stay under 80col limit although we don't
follow that too well in quirks.c.

> + if (p!=NULL) {

We usually write 'if (p)' and don't use unless necessary.

> + pci_read_config_byte(p, PCI_CLASS_REVISION, &rev);
> + }
> + if ((rev < 0x3B) && (rev >= 0x30)) {
> + dev->dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG;
> + }
> +}
> DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM,
> PCI_DEVICE_ID_TIGON3_5780,
> quirk_msi_intx_disable_bug);
> @@ -1729,17 +1745,17 @@
> quirk_msi_intx_disable_bug);
>
> DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4390,
> - quirk_msi_intx_disable_bug);
> + quirk_msi_intx_disable_ati_bug);
> DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4391,
> - quirk_msi_intx_disable_bug);
> + quirk_msi_intx_disable_ati_bug);
> DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4392,
> - quirk_msi_intx_disable_bug);
> + quirk_msi_intx_disable_ati_bug);
> DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4393,
> - quirk_msi_intx_disable_bug);
> + quirk_msi_intx_disable_ati_bug);
> DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4394,
> - quirk_msi_intx_disable_bug);
> + quirk_msi_intx_disable_ati_bug);
> DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4395,
> - quirk_msi_intx_disable_bug);
> + quirk_msi_intx_disable_ati_bug);

--
tejun