* Michael S. Tsirkin (mst@xxxxxxxxxx) wrote: > KVM does not virtualize low address bits for memory accesses, so we must > require that PCI BAR size is a multiple of 4K for passthrough to work > (this also guarantees that address is 4K aligned). > > Users of recent linux kernels can force resource size up to 4K > using: > > commit 32a9a682bef2f6fce7026bd94d1ce20028b0e52d > Author: Yuji Shimada <shimada-yxb@xxxxxxxxxxxxxxx> > Date: Mon Mar 16 17:13:39 2009 +0900 > PCI: allow assignment of memory resources with a specified alignment > > Signed-off-by: Michael S. Tsirkin <mst@xxxxxxxxxx> > > --- > > diff --git a/hw/device-assignment.c b/hw/device-assignment.c > index 237060f..c2ef31f 100644 > --- a/hw/device-assignment.c > +++ b/hw/device-assignment.c > @@ -381,6 +381,14 @@ static int assigned_dev_register_regions(PCIRegion *io_regions, > int t = cur_region->type & IORESOURCE_PREFETCH > ? PCI_ADDRESS_SPACE_MEM_PREFETCH > : PCI_ADDRESS_SPACE_MEM; > + if (cur_region->size & 0xFFF) { > + fprintf(stderr, "Unable to assign device: PCI region %d " > + "at address 0x%llx has size 0x%x, " > + " which is not a multiple of 4K\n", > + i, (unsigned long long)cur_region->base_addr, > + cur_region->size); > + return -1; > + } should render this useless now shouldn't it? /* add offset */ pci_dev->v_addrs[i].u.r_virtbase += (cur_region->base_addr & 0xFFF); thanks, -chris -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html