From: Daniel De Graaf <dgdegra@tycho.nsa.gov>
To: Ian Campbell <Ian.Campbell@citrix.com>
Cc: "Matthew.Fioravante@jhuapl.edu" <Matthew.Fioravante@jhuapl.edu>,
"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>,
"JBeulich@suse.com" <JBeulich@suse.com>,
"konrad.wilk@oracle.com" <konrad.wilk@oracle.com>
Subject: Re: [PATCH v5.1 01/12] mini-os/tpm{back, front}: Change shared page ABI
Date: Thu, 11 Apr 2013 10:38:12 -0400 [thread overview]
Message-ID: <5166CAD4.7090209@tycho.nsa.gov> (raw)
In-Reply-To: <1365689654.8126.4.camel@zakaz.uk.xensource.com>
On 04/11/2013 10:14 AM, Ian Campbell wrote:
> On Fri, 2013-03-22 at 22:30 +0000, Daniel De Graaf wrote:
>> @@ -529,15 +526,27 @@ void free_tpmif(tpmif_t* tpmif)
>> void tpmback_handler(evtchn_port_t port, struct pt_regs *regs, void *data)
>> {
>> tpmif_t* tpmif = (tpmif_t*) data;
>> - tpmif_tx_request_t* tx = &tpmif->tx->ring[0].req;
>> - /* Throw away 0 size events, these can trigger from event channel unmasking */
>> - if(tx->size == 0)
>> - return;
>> -
>> - TPMBACK_DEBUG("EVENT CHANNEL FIRE %u/%u\n", (unsigned int) tpmif->domid, tpmif->handle);
>> - tpmif_req_ready(tpmif);
>> - wake_up(&waitq);
>> + vtpm_shared_page_t* pg = tpmif->page;
>>
>
> Do we not need a barrier somewhere around here to ensure that the far
> end's write to pg->state is visible to this cpu?
The frontend's write to pg->state is always done prior to the frontend
sending its event channel notification, so an explicit barrier is not
needed in this function. Since there is only one read and a clear
dependency on the one write, so I'm not sure where the barrier here
would need to go even if it was needed.
We might need a barrier in send_response between the memcpy and setting
the state to VTPM_STATE_FINISH. It so happens that the existing code
includes a call to local_irq_save which includes barrier(), making the
code technically safe - but an explicit barrier would clarify this and
avoid potential bugs introduced by moving tpmif_req_finished() around.
> The writer does:
> write all fields apart from state
> barrier()
> write state.
>
> no need for a barrier at the end of that lot either?
>
>> + switch (pg->state)
>> + {
>> + case VTPM_STATE_SUBMIT:
>> + TPMBACK_DEBUG("EVENT CHANNEL FIRE %u/%u\n", (unsigned int) tpmif->domid, tpmif->handle);
>> + tpmif_req_ready(tpmif);
>> + wake_up(&waitq);
>> + break;
>> + case VTPM_STATE_CANCEL:
>> + /* If we are busy with a request, do nothing */
>> + if (tpmif->flags & TPMIF_REQ_READY)
>> + return;
>> + /* Acknowledge the cancellation if we are idle */
>> + pg->state = VTPM_STATE_IDLE;
>> + notify_remote_via_evtchn(tpmif->evtchn);
>> + return;
>> + default:
>> + /* Spurious wakeup; do nothing */
>> + return;
>> + }
>> }
>>
>
--
Daniel De Graaf
National Security Agency
next prev parent reply other threads:[~2013-04-11 14:38 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-22 22:28 [PATCH RFC] drivers/tpm: add xen tpmfront interface Daniel De Graaf
2013-03-22 22:30 ` [PATCH v5.1 01/12] mini-os/tpm{back, front}: Change shared page ABI Daniel De Graaf
2013-04-11 14:00 ` Ian Campbell
2013-04-11 14:11 ` Daniel De Graaf
2013-04-11 14:14 ` Ian Campbell
2013-04-11 14:38 ` Daniel De Graaf [this message]
2013-04-11 15:25 ` Ian Campbell
2013-04-11 15:46 ` Daniel De Graaf
2013-04-11 14:27 ` Ian Campbell
2013-04-11 15:10 ` Daniel De Graaf
2013-04-11 15:22 ` Ian Campbell
2013-04-11 16:18 ` Daniel De Graaf
2013-04-11 16:20 ` [PATCH v5.2] " Daniel De Graaf
2013-04-11 14:17 ` [PATCH RFC] drivers/tpm: add xen tpmfront interface Ian Campbell
2013-04-11 14:38 ` Daniel De Graaf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5166CAD4.7090209@tycho.nsa.gov \
--to=dgdegra@tycho.nsa.gov \
--cc=Ian.Campbell@citrix.com \
--cc=JBeulich@suse.com \
--cc=Matthew.Fioravante@jhuapl.edu \
--cc=konrad.wilk@oracle.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.