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

[Xen-devel] [PATCH] [QEMU] [TPM-TIS] Transmit the locality in which the command was sent


  • To: Xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>
  • From: Stefan Berger <stefanb@xxxxxxxxxx>
  • Date: Wed, 06 Dec 2006 21:21:29 -0500
  • Delivery-date: Wed, 06 Dec 2006 18:21:34 -0800
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>

Transmit the locality in which the command was sent in the highest 3
bits of the 4 bytes prepended to each packet.

Signed-off-by: Stefan Berger <stefanb@xxxxxxxxxx>

Index: root/xen-unstable.hg/tools/ioemu/hw/tpm_tis.c
===================================================================
--- root.orig/xen-unstable.hg/tools/ioemu/hw/tpm_tis.c
+++ root/xen-unstable.hg/tools/ioemu/hw/tpm_tis.c
@@ -132,7 +132,7 @@ typedef struct TPMState {
 
 
 /* local prototypes */
-static int TPM_Send(tpmState *s, tpmBuffer *buffer, char *msg);
+static int TPM_Send(tpmState *s, tpmBuffer *buffer, uint8_t locty, char *msg);
 static int TPM_Receive(tpmState *s, tpmBuffer *buffer);
 static uint32_t vtpm_instance_from_xenstore(void);
 static void tis_poll_timer(void *opaque);
@@ -271,6 +271,8 @@ static int create_local_socket(tpmState 
 /*
  * the 'write' method for sending requests to the vTPM
  * four bytes with the vTPM instance number are prepended to each request
+ * the locality in which the command was sent is transmitted in the
+ * highest 3 bits
  */
 static int write_local_socket(tpmState *s, const tpmBuffer *buffer)
 {
@@ -608,7 +610,7 @@ static void tis_mem_writel(void *opaque,
             }
         }
         if (val & STS_TPM_GO) {
-            n = TPM_Send(s, &s->buffer,"tpm_data_write");
+            n = TPM_Send(s, &s->buffer, locty, "tpm_data_write");
             if (n > 0) {
                 /* sending of data was successful */
                 s->offset = 0;
@@ -915,7 +917,7 @@ const static unsigned char tpm_failure[]
 /*
  * Send a TPM request.
  */
-static int TPM_Send(tpmState *s, tpmBuffer *buffer, char *msg)
+static int TPM_Send(tpmState *s, tpmBuffer *buffer, uint8_t locty, char *msg)
 {
     int len;
     uint32_t size = tpm_get_size_from_buffer(buffer->buf);
@@ -945,6 +947,10 @@ static int TPM_Send(tpmState *s, tpmBuff
     showBuff(buffer->buf, "To TPM");
 #endif
 
+    /* transmit the locality in the highest 3 bits */
+    buffer->instance[0] &= 0x1f;
+    buffer->instance[0] |= (locty << 5);
+
     len = vTPMTransmit[s->Transmitlayer].write(s, buffer);
     if (len < 0) {
         s->Transmitlayer = -1;
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

 


Rackspace

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