Skip to content

Commit d29fc02

Browse files
tatokisfloatious
authored andcommitted
ata: pata_via: Force PIO for ATAPI devices on VT6415/VT6330
The controller has a hardware bug that can hard hang the system when doing ATAPI DMAs without any trace of what happened. Depending on the device attached, it can also prevent the system from booting. In this case, the system hangs when reading the ATIP from optical media with cdrecord -vvv -atip on an _NEC DVD_RW ND-4571A 1-01 and an Optiarc DVD RW AD-7200A 1.06 attached to an ASRock 990FX Extreme 4, running at UDMA/33. The issue can be reproduced by running the same command with a cygwin build of cdrecord on WinXP, although it requires more attempts to cause it. The hang in that case is also resolved by forcing PIO. It doesn't appear that VIA has produced any drivers for that OS, thus no known workaround exists. HDDs attached to the controller do not suffer from any DMA issues. Cc: [email protected] Link: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/916677 Signed-off-by: Tasos Sahanidis <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Niklas Cassel <[email protected]>
1 parent 19272b3 commit d29fc02

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

drivers/ata/pata_via.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,8 @@ static unsigned int via_mode_filter(struct ata_device *dev, unsigned int mask)
368368
}
369369

370370
if (dev->class == ATA_DEV_ATAPI &&
371-
dmi_check_system(no_atapi_dma_dmi_table)) {
371+
(dmi_check_system(no_atapi_dma_dmi_table) ||
372+
config->id == PCI_DEVICE_ID_VIA_6415)) {
372373
ata_dev_warn(dev, "controller locks up on ATAPI DMA, forcing PIO\n");
373374
mask &= ATA_MASK_PIO;
374375
}

0 commit comments

Comments
 (0)