On Thu, 2008-11-06 at 14:02 -0600, Anthony Liguori wrote: > Hollis Blanchard wrote: > > I wanted to make sure people on non-x86 architectures couldn't run into > > vring-size related problems that didn't also appear on x86. > > > > Having a VRING_SHIFT and a VRING_PAGE_SIZE where VRING_PAGE_SIZE != (1 > << VRING_SHIFT) is almost certainly going to break things in unexpected > ways because it's going against common understanding of the relationship > between shift and page_size. In the patch I sent, they are named VIRTIO_PFN_SHIFT and VRING_PAGE_SIZE. In fact, the first could really be named VIRTIO_PCI_PFN_SHIFT or even more specific, which hopefully would alleviate the confusion. Anyways, I've been trying to implement your other idea, which was to advertise a "virtio page size" from the host to the guest. Since the virtio IO space is only 20 bytes long, and it's full, we need to offer a feature bit to notify the guest that the IO space has been expanded. virtio's PCI IO resource ------------------------------------ | 20 bytes | | ------------------------------------ virtio-pci virtio-<device> specific specific data data If guests don't acknowledge the feature, the host pretends the VIRTIO_PAGE_SIZE register (which would be the new IO offset 20) doesn't exist, and reads to offset 20 instead return the device-specific config data. Problem: the guest has not yet acknowledged the advertised features before accessing device-specific data. So in the virtio-blk/virtio-pci case, virtio_dev_probe() calls virtblk_probe() *before* vp_finalize_features(). virtblk_probe() uses virtio_config_val(), which returns the wrong data because the new yet unknown feature flag is still set. (Of course, we can't just fix the ordering guest-side, because that breaks backwards compatibility.) It seems to me that virtio-pci configuration is not very flexible. I think I'm going to continue revising the hardcoded page size patches I sent earlier... -- Hollis Blanchard IBM Linux Technology Center -- To unsubscribe from this list: send the line "unsubscribe kvm-ia64" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html