Re: [PATCH] ata: Fix DVD not dectected at some Haswell platforms

joeyli
2013-01-30T07:36:40Z

於 三，2013-01-30 於 12:19 -0500，Youquan Song 提到：
> There is a quirk patch 5e5a4f5d5a08c9c504fe956391ac3dae2c66556d fix the 4 ports
> IDE controller 32bit PIO mode.
> Recently, the problem was showed at Haswell platform which includes 2 ports
> IDE controller.
>
> So introduce a qurik patch to disable 32bit PIO at this IDE controller.
>
> Signed-off-by: Youquan Song <youquan.song@intel.com>

Patch works to me for avoid DVD detection on Intel Shark Bay development
machine.

Tested-by: Lee, Chun-Yi <jlee@suse.com>

Thanks a lot!
Joey Lee

> ---
> drivers/ata/ata_piix.c | 14 +++++++++++++-
> 1 files changed, 13 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
> index ef773e1..1993e52 100644
> --- a/drivers/ata/ata_piix.c
> +++ b/drivers/ata/ata_piix.c
> @@ -150,6 +150,7 @@ enum piix_controller_ids {
> tolapai_sata,
> piix_pata_vmw, /* PIIX4 for VMware, spurious DMA_ERR */
> ich8_sata_snb,
> + ich8_2port_sata_snb,
> };
>
> struct piix_map_db {
> @@ -326,7 +327,7 @@ static const struct pci_device_id piix_pci_tbl[] = {
> /* SATA Controller IDE (Lynx Point) */
> { 0x8086, 0x8c01, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_snb },
> /* SATA Controller IDE (Lynx Point) */
> - { 0x8086, 0x8c08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata },
> + { 0x8086, 0x8c08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata_snb },
> /* SATA Controller IDE (Lynx Point) */
> { 0x8086, 0x8c09, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata },
> /* SATA Controller IDE (Lynx Point-LP) */
> @@ -502,6 +503,7 @@ static const struct piix_map_db *piix_map_db_table[] = {
> [ich8m_apple_sata] = &ich8m_apple_map_db,
> [tolapai_sata] = &tolapai_map_db,
> [ich8_sata_snb] = &ich8_map_db,
> + [ich8_2port_sata_snb] = &ich8_2port_map_db,
> };
>
> static struct ata_port_info piix_port_info[] = {
> @@ -643,6 +645,16 @@ static struct ata_port_info piix_port_info[] = {
> .port_ops = &piix_sata_ops,
> },
>
> + [ich8_2port_sata_snb] =
> + {
> + .flags = PIIX_SATA_FLAGS | PIIX_FLAG_SIDPR | PIIX_FLAG_PIO16,
> + .pio_mask = ATA_PIO4,
> + .mwdma_mask = ATA_MWDMA2,
> + .udma_mask = ATA_UDMA6,
> + .port_ops = &piix_sata_ops,
> + },
> +
> +
> };
>
> static struct pci_bits piix_enable_bits[] = {