mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 23:33:54 -06:00
pci: add pci test device
This device is used for kvm unit tests, currently it supports testing performance of ioeventfd. Using updated kvm unittest, here's an example output: mmio-no-eventfd:pci-mem 8796 mmio-wildcard-eventfd:pci-mem 3609 mmio-datamatch-eventfd:pci-mem 3685 portio-no-eventfd:pci-io 5287 portio-wildcard-eventfd:pci-io 1762 portio-datamatch-eventfd:pci-io 1777 Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
41cb62c2d9
commit
22773d6066
5 changed files with 354 additions and 0 deletions
26
docs/specs/pci-testdev.txt
Normal file
26
docs/specs/pci-testdev.txt
Normal file
|
@ -0,0 +1,26 @@
|
|||
pci-test is a device used for testing low level IO
|
||||
|
||||
device implements up to two BARs: BAR0 and BAR1.
|
||||
Each BAR can be memory or IO. Guests must detect
|
||||
BAR type and act accordingly.
|
||||
|
||||
Each BAR size is up to 4K bytes.
|
||||
Each BAR starts with the following header:
|
||||
|
||||
typedef struct PCITestDevHdr {
|
||||
uint8_t test; <- write-only, starts a given test number
|
||||
uint8_t width_type; <- read-only, type and width of access for a given test.
|
||||
1,2,4 for byte,word or long write.
|
||||
any other value if test not supported on this BAR
|
||||
uint8_t pad0[2];
|
||||
uint32_t offset; <- read-only, offset in this BAR for a given test
|
||||
uint32_t data; <- read-only, data to use for a given test
|
||||
uint32_t count; <- for debugging. number of writes detected.
|
||||
uint8_t name[]; <- for debugging. 0-terminated ASCII string.
|
||||
} PCITestDevHdr;
|
||||
|
||||
All registers are little endian.
|
||||
|
||||
device is expected to always implement tests 0 to N on each BAR, and to add new
|
||||
tests with higher numbers. In this way a guest can scan test numbers until it
|
||||
detects an access type that it does not support on this BAR, then stop.
|
Loading…
Add table
Add a link
Reference in a new issue