Skip to contentSkip to conversation

PCI device passthrough for FreeDOS guests

DISCUSSION Carl-Daniel Hailfinger 2 participants 2 messages Jul 13, 2009 – Jul 14, 2009 KVM

lore
Share & tools
lore
#0 lore raw

Hi,

I want to trace the PCI device accesses (config space, I/O ports, memory BARs) of a DOS application (EEPROM flasher) and it seems KVM can help with this.
The current plan is to install KVM, use FreeDOS as a guest, activate passthrough for the PCI device I'm interested in and log the accesses somehow.

Possible problems I'd have to solve:
- According to
http://www.linux-kvm.org/wiki/images/d/d0/KvmForum2008$kdf2008_14.pdf
PCI device passthrough needs a CPU with VT-d/IOMMU support.
- http://www.linux-kvm.org/page/TODO says passthrough won't work for conventional PCI devices (I assume a PCI graphics card is such a device).
- http://www.linux-kvm.org/page/TODO says passthrough won't work for devices without Function Level Reset (FLR).
- http://www.linux-kvm.org/page/TODO says VT support for real mode is not good, so FreeDOS might be a problem.
- The KVM wiki does not mention how to get PCI passthrough working.
- No idea if logging of PCI accesses is possible with KVM or if I have to use helper tools for that.

Any insights/hints are appreciated. If KVM is the wrong tool for my task, please point me in the right direction.

Please CC me as I'm not subscribed to the list. Thanks.

Regards,
Carl-Daniel

P.S. The linux-kvm.org wiki returns zero results if you search the wiki text for "PCI", but a Google search finds quite a few pages mentioning PCI. Is there a bug in the seach function?

#1 lore raw
Quoted 9 lines · Carl-Daniel Hailfinger

Hi,

I want to trace the PCI device accesses (config space, I/O ports, memory BARs) of a DOS application (EEPROM flasher) and it seems KVM can help with this.
The current plan is to install KVM, use FreeDOS as a guest, activate passthrough for the PCI device I'm interested in and log the accesses somehow.

Quoted 6 lines

Possible problems I'd have to solve:
- According to
http://www.linux-kvm.org/wiki/images/d/d0/KvmForum2008$kdf2008_14.pdf
PCI device passthrough needs a CPU with VT-d/IOMMU support.
- http://www.linux-kvm.org/page/TODO says passthrough won't work for conventional PCI devices (I assume a PCI graphics card is such a

It supports conventional PCI devices passgthrough now.

Quoted 2 lines

device). - http://www.linux-kvm.org/page/TODO says passthrough won't work for devices without Function Level Reset (FLR).

FLR is not must for passthrough. If the device status is correct, passthrough can work. FLR is used to keep device in correct status before and after passthrough. Now more device reset methods are supported, such as secondary bus reset and D0hot->D3 transition. So even the device won't support PCIe FLR, it still can be reset. It's not a problem now.

The VT-d TODO is obsolete. I will update it.

Quoted 3 lines

- http://www.linux-kvm.org/page/TODO says VT support for real mode is not good, so FreeDOS might be a problem.
- The KVM wiki does not mention how to get PCI passthrough working.

There is VT-d Howto: http://www.linux-kvm.org/page/How_to_assign_devices_with_VT-d_in_KVM. pls refer to it to passthrough pci.

Quoted 2 lines

- No idea if logging of PCI accesses is possible with KVM or if I have to use helper tools for that.

You can log PCI accesses. Pls refer to qemu-kvm/hw/device-assignment.c.

Regards,
Weidong

Quoted 12 lines

Any insights/hints are appreciated. If KVM is the wrong tool for my task, please point me in the right direction.

Please CC me as I'm not subscribed to the list. Thanks.

Regards,
Carl-Daniel

P.S. The linux-kvm.org wiki returns zero results if you search the wiki text for "PCI", but a Google search finds quite a few pages mentioning PCI. Is there a bug in the seach function?