Hello,
(cc'ing Jeff)
On Thu, Sep 22, 2011 at 09:55:12AM +0800, ming.lei@xxxxxxxxxxxxx wrote:
> From: Ming Lei <ming.lei@xxxxxxxxxxxxx>
>
> This quirk patch fixes one kind of bug inside Intel Sandybridge CPT
> chipset, see reports from
>
> https://bugzilla.kernel.org/show_bug.cgi?id=40592.
>
> Many guys also have reported the problem before:
>
> https://bugs.launchpad.net/bugs/737388
> https://bugs.launchpad.net/bugs/794642
> ......
>
> With help from Tejun, the problem is found to be caused by 32bit PIO
> mode, so introduce the quirk patch to disable 32bit PIO on SATA piix
> for Sandybridge CPT chipset.
Have we successfully localized the problem to SNB? If so, great.
> static struct ata_port_operations piix_vmw_ops = {
> @@ -1585,6 +1586,15 @@ static int __devinit piix_init_one(struct pci_dev *pdev,
> "on poweroff and hibernation\n");
> }
>
> + /*
> + * Sandybridge chipset H61/P67/H67 have broken 32 mode up to now
> + * see https://bugzilla.kernel.org/show_bug.cgi?id=40592
> + */
> + if (pdev->vendor == PCI_VENDOR_ID_INTEL && pdev->device == 0x1c00)
> + piix_sata_ops.inherits = &ata_bmdma_port_ops;
> + else
> + piix_sata_ops.inherits = &ata_bmdma32_port_ops;
> +
No, this wouldn't work. Ops inheritance isn't dynamic.
Please define a separate ata_port_operations for controller which
require 16bit PIO - piix_pata16_ops, create a new controller id (say,
ich_snb_pata), add an accompanying port_info entry and device_id
entry.
Thank you.
--
tejun
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
[Linux Filesystems]
[Linux SCSI]
[Linux RAID]
[Git]
[Kernel Newbies]
[Linux Newbie]
[Share Photos]
[Security]
[Netfilter]
[Bugtraq]
[Photo]
[Yosemite]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Samba]
[Video 4 Linux]
[Device Mapper]
[Linux Resources]