On Fri, Nov 04, 2011 at 03:53:24PM +0200, Sasha Levin wrote: > On Fri, 2011-11-04 at 15:51 +0200, Michael S. Tsirkin wrote: > > On Fri, Nov 04, 2011 at 02:32:19PM +0200, Sasha Levin wrote: > > > On Fri, 2011-11-04 at 13:40 +0200, Michael S. Tsirkin wrote: > > > > On Fri, Nov 04, 2011 at 08:14:43PM +1030, Rusty Russell wrote: > > > > > > > 3) If we're changing the queue layout, it's a chance to fix a > > > > > > > longstanding bug: let the guest notify the host of preferred > > > > > > > queue size and alignment. > > > > > > > > > > > > Yup, we can do that. > > > > > > > > We don't need to change all of layout for that - just add another field > > > > in the common config structure to supply the alignment. > > > > > > How would you do it without changing the layout? Add another optional > > > field at the end which will shift offsets based on whether the host and > > > guest support this new feature or not? > > > > > > This leads to 3 different things which now shift config offsets around. > > > > No. Just put the field at offset 24 from the offset specified > > by VIRTIO_PCI_CAP_COMMON_CFG. > > Two questions here: > > - What about backwards compatibility? How would the config space look > when we're not using the new layout? Exactly as it does now. You don't get to tweak alignment then. > - How does it work with 64 bit features which are also located there? Basically each field gets an offset. E.g. 24 - features 28 - queue alignment > > > As you said, the PCI cap list was introduced both to save space (which > > > is not the motivation here), and because it's a very efficient > > > > It's actually pretty inefficient - there's an overhead of 3 bytes for > > each vendor specific option. > > It's efficient because while you pay a small price for each optional > option it also means that that option is optional and won't clutter the > config space if it's not really in use. I guess my assumption is that most options will be in use, not discarded dead-ends. > Think of how the PCI config space would look if all those caps wouldn't > have been optional and would instead all of them would have just have > been attached to the end of the config space. It started out this way, but then they started running out of space - it's only 256 bytes - so the capability mechanism was invented. > > > > > and easy way to manage optional features without requiring tricks > > > which move offsets around like we do now. > > > > Tricks with offsets only appeared because we had datapath, device > > specific and common config in the same place. > > feature list isn't needed to fix that. > > > > > -- > > > > > > Sasha. > > -- > > Sasha. -- 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