qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH V14 5/7] Add a TPM Passthrough backend driver im


From: Stefan Berger
Subject: Re: [Qemu-devel] [PATCH V14 5/7] Add a TPM Passthrough backend driver implementation
Date: Mon, 20 Feb 2012 19:30:35 -0500
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.23) Gecko/20110928 Fedora/3.1.15-1.fc14 Lightning/1.0b3pre Thunderbird/3.1.15

On 02/20/2012 04:30 PM, Michael S. Tsirkin wrote:
On Wed, Dec 14, 2011 at 08:43:20AM -0500, Stefan Berger wrote:
+
+static void *tpm_passthrough_thread(void *d)
+{
+    TPMPassthruThreadParams *thr_parms = d;
+    TPMPassthruState *tpm_pt = thr_parms->tb->s.tpm_pt;
+    uint32_t in_len;
+
+    dprintf("tpm_passthrough: THREAD IS STARTING\n");
+
+    /* start command processing */
+    while (!tpm_pt->thread_terminate) {
IMO you want to checvk thread_terminate undet a lock/


The way the termination flag is used along with the condition it isn't necessary to call it with a lock held. It may run into the condition but then be woken up with a signal and then again check the flag and terminate.

+        /* receive and handle commands */
+        in_len = 0;
+        do {
+            dprintf("tpm_passthrough: waiting for commands...\n");
+
+            if (tpm_pt->thread_terminate) {
+                break;
+            }
+
This will have to be duplicate in each backend, no?

There is this sequence of code around the condition that helps us waiting for the front-end to send a command that is indeed repeated in every backend. I isolated that now but would like to keep the general thread more flexible and inside the individual backends. There is quite some code that is different in every backend.


So I would say make this logic part of backend
and expose some api.

Ok, a single function for now:

void tpm_backend_wait_for_command(TPMState *tpm_state);


You can then call it from backend or invoke
backend callbacks from frontend.


 I was only going to invoke it from within the backend thread.


   Stefan




reply via email to

[Prev in Thread] Current Thread [Next in Thread]