From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Xu, Quan" Subject: Re: [v3 3/5] Qemu-Xen-vTPM: Register Xen stubdom vTPM frontend driver Date: Tue, 20 Jan 2015 02:33:14 +0000 Message-ID: <945CA011AD5F084CBEA3E851C0AB28890E869FBE__1911.08356598324$1421721420$gmane$org@SHSMSX101.ccr.corp.intel.com> References: <1419980585-18704-1-git-send-email-quan.xu@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Stefano Stabellini Cc: "qemu-devel@nongnu.org" , "xen-devel@lists.xen.org" List-Id: xen-devel@lists.xenproject.org > -----Original Message----- > From: Stefano Stabellini [mailto:stefano.stabellini@eu.citrix.com] > Sent: Tuesday, January 20, 2015 1:19 AM > To: Xu, Quan > Cc: qemu-devel@nongnu.org; xen-devel@lists.xen.org; > stefano.stabellini@eu.citrix.com > Subject: Re: [v3 3/5] Qemu-Xen-vTPM: Register Xen stubdom vTPM frontend > driver > > On Tue, 30 Dec 2014, Quan Xu wrote: > > +int vtpm_recv(struct XenDevice *xendev, uint8_t* buf, size_t *count) > > +{ > > + struct xen_vtpm_dev *vtpmdev = container_of(xendev, struct > xen_vtpm_dev, > > + xendev); > > + struct tpmif_shared_page *shr = vtpmdev->shr; > > + unsigned int offset; > > + > > + if (shr->state == TPMIF_STATE_IDLE) { > > + return -ECANCELED; > > + } > > + > > + while (vtpm_status(vtpmdev) != VTPM_STATUS_IDLE) { > > + vtpm_aio_wait(vtpm_aio_ctx); > > + } > > Is this really necessary to write this as a busy loop? > I think you should write it as a proper aio callback for efficiency: > QEMU is going to burn 100% of the cpu polling and not doing anything else! I agree. I will improve it in v4. -Quan > > > > + offset = sizeof(*shr) + 4*shr->nr_extra_pages; > > + memcpy(buf, offset + (uint8_t *)shr, shr->length); > > + *count = shr->length; > > + > > + return 0; > > +}