Skip to contentSkip to conversation

pci-passthrough logging

DISCUSSION Vikram Ambrose 2 participants 2 messages Feb 20, 2010 – Feb 21, 2010 KVM

lore
Share & tools
lore
#0 lore raw

Hello,

I'm new to kvm and I'm trying to log pci config and mmio read/writes for a particular pci (pci-e to be precise) device that I've passthrough to qemu-kvm (dma=none).

I put a printk into kvm_iodevice_read/write() in linux/virt/kvm/iodev.h but the log seems to get corrupted when the action picks up.

I looked at qemu-kvm/hw/pci_host.c and found pci_host_data_write/read_mmio[]. But I don't know where those are implemented, nor exactly what they do for that matter.

I appologise for the n00b nature of my problem, but there isnt any documentation on the pci-passthrough architecture in linux/Documentation/kvm or in qemu-kvm.

Does anyone know where/how to log pci-passthrough accesses?

thanks,

Vik.
PS: This is a "one off" question, so I'm not subscribed to the list, please make sure my email addresses is in the reply fields.

#1 lore raw
Quoted 11 lines · Vikram Ambrose

Hello,

I'm new to kvm and I'm trying to log pci config and mmio read/writes for a particular pci (pci-e to be precise) device that I've passthrough to qemu-kvm (dma=none).

I put a printk into kvm_iodevice_read/write() in linux/virt/kvm/iodev.h but the log seems to get corrupted when the action picks up.

I looked at qemu-kvm/hw/pci_host.c and found pci_host_data_write/read_mmio[]. But I don't know where those are implemented, nor exactly what they do for that matter.

I appologise for the n00b nature of my problem, but there isnt any documentation on the pci-passthrough architecture in linux/Documentation/kvm or in qemu-kvm.

Does anyone know where/how to log pci-passthrough accesses?

For config-space accesses, hook assigned_dev_pci_{read,write}_config(). For mmio, hook slow_bar_{read,write}*(), and hack assigned_dev_register_regions() to select the slow path (otherwise kvm will let the guest write directly to the device). For pio, hook assigned_dev_ioport_{read,write)*().

Signature · 1 line
error compiling committee.c: too many arguments to function