pci-testdev: fast mmio support
Teach PCI testdev to use fast MMIO when kvm makes it available. Before: mmio-wildcard-eventfd:pci-mem 2271 After: mmio-wildcard-eventfd:pci-mem 1218 Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
8d0ac88e23
commit
45aa4e8e39
|
@ -239,6 +239,7 @@ static void pci_testdev_realize(PCIDevice *pci_dev, Error **errp)
|
||||||
uint8_t *pci_conf;
|
uint8_t *pci_conf;
|
||||||
char *name;
|
char *name;
|
||||||
int r, i;
|
int r, i;
|
||||||
|
bool fastmmio = kvm_ioeventfd_any_length_enabled();
|
||||||
|
|
||||||
pci_conf = pci_dev->config;
|
pci_conf = pci_dev->config;
|
||||||
|
|
||||||
|
@ -261,8 +262,12 @@ static void pci_testdev_realize(PCIDevice *pci_dev, Error **errp)
|
||||||
memcpy(test->hdr->name, name, strlen(name) + 1);
|
memcpy(test->hdr->name, name, strlen(name) + 1);
|
||||||
g_free(name);
|
g_free(name);
|
||||||
test->hdr->offset = cpu_to_le32(IOTEST_SIZE(i) + i * IOTEST_ACCESS_WIDTH);
|
test->hdr->offset = cpu_to_le32(IOTEST_SIZE(i) + i * IOTEST_ACCESS_WIDTH);
|
||||||
test->size = IOTEST_ACCESS_WIDTH;
|
|
||||||
test->match_data = strcmp(IOTEST_TEST(i), "wildcard-eventfd");
|
test->match_data = strcmp(IOTEST_TEST(i), "wildcard-eventfd");
|
||||||
|
if (fastmmio && IOTEST_IS_MEM(i) && !test->match_data) {
|
||||||
|
test->size = 0;
|
||||||
|
} else {
|
||||||
|
test->size = IOTEST_ACCESS_WIDTH;
|
||||||
|
}
|
||||||
test->hdr->test = i;
|
test->hdr->test = i;
|
||||||
test->hdr->data = test->match_data ? IOTEST_DATAMATCH : IOTEST_NOMATCH;
|
test->hdr->data = test->match_data ? IOTEST_DATAMATCH : IOTEST_NOMATCH;
|
||||||
test->hdr->width = IOTEST_ACCESS_WIDTH;
|
test->hdr->width = IOTEST_ACCESS_WIDTH;
|
||||||
|
|
Loading…
Reference in a new issue