Re: [PATCH] virtio-net: Read MAC only after initializing MSI-X
From: Rusty Russell <hidden>
Date: 2011-10-04 01:18:35
Also in:
kvm, lkml
On Sun, 2 Oct 2011 11:09:00 +0200, "Michael S. Tsirkin" [off-list ref] wrote:
On Mon, Sep 19, 2011 at 05:19:49PM +0930, Rusty Russell wrote:quoted
On Mon, 19 Sep 2011 09:01:50 +0300, "Michael S. Tsirkin" [off-list ref] wrote:quoted
On Mon, Sep 19, 2011 at 01:05:17PM +0930, Rusty Russell wrote:quoted
On Sat, 20 Aug 2011 23:00:44 +0300, "Michael S. Tsirkin" [off-list ref] wrote:quoted
On Fri, Aug 19, 2011 at 07:33:07PM +0300, Sasha Levin wrote:quoted
Maybe this is better solved by copying the way it was done in PCI itself with capability linked list?There are any number of ways to lay out the structure. I went for what seemed a simplest one. For MSI-X the train has left the station. We can probably still tweak where the high 32 bit features for 64 bit features are. No idea if it's worth it.Sorry, this has been in the back of my mind. I think it's a good idea; can we use the capability linked list for pre-device specific stuff from now on? Thanks, Rusty.Do we even want capability bits then? We can give each capability an ack flag ...We could have, and if I'd known PCI when I designed virtio I might have. But it's not easy now to map structure offsets to that scheme, and we can't really force such a change on the non-PCI users. So I'd say we should only do it for the non-device-specific options. ie. we'll still have the MSI-X case move the device-specific config, but we'll use a linked list from now on, eg. for the next 32 features bits... Thoughts? Rusty.So I thought about this some more. It probably makes sense to stop adding info in the io space, and start adding new stuff in memory space which is much less contrained. As we need to keep compatibility, and also because memory access is much slower with kvm so we prefer io for datapath, we could have the first X bytes still mirrored in io space. MSIX is there, and it's pointed to from config space, so we could just put our stuff at offset 0. Or if we wanted a lot of flexibility, we could add pointers, in config space, to device specific and non device specific regions in memory space. Makes sense?
I've cc'd David Gibson who has noted in the past that I/O space on PPC is icky. I think a linked list for future virtio-pci extensions makes sense (not device-specific stuff, that's great as a simple structure). I think mirroring everything in mem space makes sense, too. Thanks, Rusty.