platform_drv: disable PCI DMA class specific

for such classes where it should be safe and where we have seen issues.
Disabling in general bus master DMA causes on some machines hard hangs, e.g.
because the USB handover protocol was violated.

Fixes #2835
This commit is contained in:
Alexander Boettcher
2018-05-22 09:10:02 +02:00
committed by Christian Helmuth
parent b8411ae1b8
commit 5ca30b0318
5 changed files with 64 additions and 36 deletions

View File

@@ -242,13 +242,7 @@ void adjust_pci_device ( struct pci_device *pci ) {
pci_read_config_word(pci, PCI_COMMAND, &pci_command);
new_command = pci_command | PCI_COMMAND_MASTER | PCI_COMMAND_MEM | PCI_COMMAND_IO;
if (pci_command != new_command) {
LOG("PCI BIOS has not enabled device " FMT_BUSDEVFN "! "
"Updating PCI command %04x->%04x\n", PCI_BUS(pci->busdevfn),
PCI_SLOT(pci->busdevfn), PCI_FUNC (pci->busdevfn),
pci_command, new_command);
pci_write_config_word(pci, PCI_COMMAND, new_command);
}
pci_write_config_word(pci, PCI_COMMAND, new_command);
unsigned char pci_latency;
pci_read_config_byte ( pci, PCI_LATENCY_TIMER, &pci_latency);