[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [Qemu-devel] [v5][PATCH 2/5] xen, gfx passthrough: create pseudo intel isa bridge



On Tue, 1 Jul 2014, Michael S. Tsirkin wrote:
> On Mon, Jun 30, 2014 at 08:34:46PM +0100, Stefano Stabellini wrote:
> > On Fri, 27 Jun 2014, Chen, Tiejun wrote:
> > > On 2014/6/25 17:58, Chen, Tiejun wrote:
> > > > On 2014/6/25 17:44, Michael S. Tsirkin wrote:
> > > > > On Wed, Jun 25, 2014 at 05:28:48PM +0800, Chen, Tiejun wrote:
> > > > > > On 2014/6/25 17:21, Michael S. Tsirkin wrote:
> > > > > > > On Wed, Jun 25, 2014 at 05:14:30PM +0800, Chen, Tiejun wrote:
> > > > > > > > On 2014/6/25 17:04, Michael S. Tsirkin wrote:
> > > > > > > > > On Wed, Jun 25, 2014 at 04:48:02PM +0800, Chen, Tiejun wrote:
> > > > > > > > > > On 2014/6/25 16:43, Michael S. Tsirkin wrote:
> > > > > > > > > > > On Wed, Jun 25, 2014 at 04:39:07PM +0800, Chen, Tiejun 
> > > > > > > > > > > wrote:
> > > > > > > > > > > > > In fact it's exactly what passthrough does.
> > > > > > > > > > > > > I wonder if more bits from ./hw/i386/kvm/pci-assign.c
> > > > > > > > > > > > > can be reused. How do you poke at the host device? 
> > > > > > > > > > > > > sysfs?
> > > > > > > > > > > > 
> > > > > > > > > > > > Yes, sysfs.
> > > > > > > > > > > > 
> > > > > > > > > > > > Thanks
> > > > > > > > > > > > Tiejun
> > > > > > > > > > > 
> > > > > > > > > > > Then you should be able to re-use large chunks of
> > > > > > > > > > > ./hw/i386/kvm/pci-assign.c: basically everything
> > > > > > > > > > > that deals with emulation.
> > > > > > > > > > 
> > > > > > > > > > Do you mean those hooks to get info from the real device? 
> > > > > > > > > > Xen
> > > > > > > > > > have its own
> > > > > > > > > > wrapper, xen_host_pci_get_block(), so we always go there in 
> > > > > > > > > > xen
> > > > > > > > > > scenario.
> > > > > > > > > > 
> > > > > > > > > > Thanks
> > > > > > > > > > Tiejun
> > > > > > > > > 
> > > > > > > > > Yes and that's not good.  We have two pieces of code doing 
> > > > > > > > > mostly
> > > > > > > > > identical things slightly differently.
> > > > > > > > > hw/i386/kvm/pci-assign.c is a bit younger so it's cleaner,
> > > > > > > > > but these really need to be unified.
> > > > > > > > > 
> > > > > > > > 
> > > > > > > > Sorry, take a look at this again,
> > > > > > > > 
> > > > > > > > xen_host_pci_get_block(XenHostPCIDevice *d, int pos, uint8_t 
> > > > > > > > *buf,
> > > > > > > > int len)
> > > > > > > >     |
> > > > > > > >     + xen_host_pci_config_read(d, pos, buf, len)
> > > > > > > >         |
> > > > > > > >         + pread(d->config_fd, buf, len, pos)
> > > > > > > > 
> > > > > > > > I thinks this should be same as kvm.
> > > > > > > > 
> > > > > > > > Thanks
> > > > > > > > Tiejun
> > > > > > > 
> > > > > > > get_block is trivial.
> > > > > > > 
> > > > > > > I really mean the whole PT infrastructure for
> > > > > > > - discovering host devices through sysfs
> > > > > > > - virtualizing devices
> > > > > > > 
> > > > > > > rom, bars, msi ...
> > > > > > > the list goes on.
> > > > > > > 
> > > > > > > logic is mostly the same.
> > > > > > > 
> > > > > > 
> > > > > > Looks you mean we can unify the entire PT infrastructure between kvm
> > > > > > and xen
> > > > > > inside qemu. But I'm afraid its not easy to do in a short time, so
> > > > > > maybe we
> > > > > > can queue this as next phase.
> > > > > > 
> > > > > > Thanks
> > > > > > Tiejun
> > > > > 
> > > > > I'm afraid once we merge your code, you'll lose interest :)
> > > > > 
> > > > 
> > > > Currently we have to push this feature into upstream as our first
> > > > priority, so unless something is really needed to address. Of course I
> > > > hope this point what we're talking is not such a thing :)
> > > > 
> > > > But I can promise here I'd like to do this optimization with your guide
> > > > next :)
> > > > 
> > > > > At least, don't add duplicate code for ROM.
> > > > > 
> > > > 
> > > > Let me try this.
> > > > 
> > > 
> > > Its not easy as expected.
> > > 
> > > kvm always work with this structure, AssignedDevice, and especially this 
> > > is
> > > just activated in kvm_enabled(). And then set all properties to this
> > > structure.
> > > 
> > > In xen case, the similar structure, XenHostPCIDevice, is not easy 
> > > transferred
> > > into the structure, AssignedDevice. So this mean we have to split
> > > assigned_dev_load_option_rom() as line by line for xen and kvm, 
> > > respectively.
> > > 
> > > I really agree we definitely need to unify PT infrastructure between kvm 
> > > and
> > > xen after this try since I can't understand why we originally introduce 
> > > same
> > > way to do same thing :(
> > > 
> > > Do you have better idea? If not, I prefer we open this completely as next
> > > action to follow-up. But this time I'm afraid I can't get in this.
> > 
> > The Xen PT code came first. At the time Anthony Liguori and I argued for
> > sharing the PT code with KVM going forward but Avi wanted to retain the
> > KVM PT code as is in order not to introduce any regressions on KVM.
> > 
> > Ah.. the good old times :-)
> > 
> > http://lists.xen.org/archives/html/xen-devel/2011-10/msg00195.html
> 
> Right, I remember that there was an idea to first make the code
> reusable before merging either Xen or KVM PT, but in the end 
> the plan to merge both and then abstract it out, won.
> We never got to abstracting it out but we should!

I agree


> Yet, I do not think we should require abstracting all of Xen PT as
> a pre-requisite for this work, but I think we can
> avoid adding to the duplication without a lot of effort.

It seems like a good idea


> To start sharing with ROM code, I think we should rename
> AssignedDevice->KvmAssignedDevice, and move fields that can be shared
> with Xen from there to AssignedDevice.
>
> -- 
> MST
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.