[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 09/11] vpci: register as an internal ioreq server
> -----Original Message----- > From: Roger Pau Monne <roger.pau@xxxxxxxxxx> > Sent: 26 September 2019 16:07 > To: Paul Durrant <Paul.Durrant@xxxxxxxxxx> > Cc: xen-devel@xxxxxxxxxxxxxxxxxxxx; Ian Jackson <Ian.Jackson@xxxxxxxxxx>; Wei > Liu <wl@xxxxxxx>; Andrew > Cooper <Andrew.Cooper3@xxxxxxxxxx>; George Dunlap <George.Dunlap@xxxxxxxxxx>; > Jan Beulich > <jbeulich@xxxxxxxx>; Julien Grall <julien.grall@xxxxxxx>; Konrad Rzeszutek > Wilk > <konrad.wilk@xxxxxxxxxx>; Stefano Stabellini <sstabellini@xxxxxxxxxx>; Tim > (Xen.org) <tim@xxxxxxx> > Subject: Re: [PATCH v2 09/11] vpci: register as an internal ioreq server > > On Tue, Sep 10, 2019 at 03:49:41PM +0200, Paul Durrant wrote: > > > -----Original Message----- > > > From: Roger Pau Monne <roger.pau@xxxxxxxxxx> > > > Sent: 03 September 2019 17:14 > > > To: xen-devel@xxxxxxxxxxxxxxxxxxxx > > > Cc: Roger Pau Monne <roger.pau@xxxxxxxxxx>; Ian Jackson > > > <Ian.Jackson@xxxxxxxxxx>; Wei Liu > > > <wl@xxxxxxx>; Andrew Cooper <Andrew.Cooper3@xxxxxxxxxx>; George Dunlap > > > <George.Dunlap@xxxxxxxxxx>; > Jan > > > Beulich <jbeulich@xxxxxxxx>; Julien Grall <julien.grall@xxxxxxx>; Konrad > > > Rzeszutek Wilk > > > <konrad.wilk@xxxxxxxxxx>; Stefano Stabellini <sstabellini@xxxxxxxxxx>; > > > Tim (Xen.org) > <tim@xxxxxxx>; > > > Paul Durrant <Paul.Durrant@xxxxxxxxxx> > > > Subject: [PATCH v2 09/11] vpci: register as an internal ioreq server > > > @@ -478,6 +480,67 @@ void vpci_write(pci_sbdf_t sbdf, unsigned int reg, > > > unsigned int size, > > > spin_unlock(&pdev->vpci->lock); > > > } > > > > > > +#ifdef __XEN__ > > > +static int ioreq_handler(struct vcpu *v, ioreq_t *req, void *data) > > > +{ > > > + pci_sbdf_t sbdf; > > > + > > > + if ( req->type == IOREQ_TYPE_INVALIDATE ) > > > + /* > > > + * Ignore invalidate requests, those can be received even without > > > + * having any memory ranges registered, see send_invalidate_req. > > > + */ > > > + return X86EMUL_OKAY; > > > > In general, I wonder whether internal servers will ever need to deal with > > invalidate? The code only > exists to get QEMU to drop its map cache after a decrease_reservation so that > the page refs get > dropped. > > I think the best solution here is to rename hvm_broadcast_ioreq to > hvm_broadcast_ioreq_external and switch it's callers. Both > send_timeoffset_req and send_invalidate_req seem only relevant to > external ioreq servers. send_timeoffset_req() is relic which ought to be replaced with another mechanism IMO... When an HVM guest writes its RTC, a new 'timeoffset' value (offset of RTC from host time) is calculated (also applied to the PV wallclock) and advertised via this ioreq. In XenServer, this is picked up by QEMU, forwarded via QMP to XAPI and then written into the VM meta-data (which than causes it to be written into xenstore too). All this is so that that guest's RTC can be set correctly when it is rebooted... There has to be a better way (e.g. extracting RTC via hvm context and saving it before cleaning up the domain). send_invalidate_req() is relevant for any emulator maintaining a cache of guest->host memory mappings which, I guess, could include internal emulators even if this is not the case at the moment. Paul > > Thanks, Roger. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |