[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] Allow adjustment of the size of TPM transfer buffers
# HG changeset patch # User kaf24@xxxxxxxxxxxxxxxxxxxx # Node ID dd87869f877ca9c68c97f36b3870908fb279edb9 # Parent a9dce0ffc90198bbc0cef139212efd4b8f3b129b Allow adjustment of the size of TPM transfer buffers to the size that a lower-layer driver supports. Signed-off-by: Stefan Berger <stefanb@xxxxxxxxxx> diff -r a9dce0ffc901 -r dd87869f877c linux-2.6-xen-sparse/drivers/char/tpm/tpm_nopci.c --- a/linux-2.6-xen-sparse/drivers/char/tpm/tpm_nopci.c Mon Oct 3 14:04:27 2005 +++ b/linux-2.6-xen-sparse/drivers/char/tpm/tpm_nopci.c Mon Oct 3 14:05:37 2005 @@ -30,7 +30,8 @@ enum { TPM_MINOR = 224, /* officially assigned */ - TPM_BUFSIZE = 2048, + TPM_MIN_BUFSIZE = 2048, + TPM_MAX_BUFSIZE = 65536, TPM_NUM_DEVICES = 256, TPM_NUM_MASK_ENTRIES = TPM_NUM_DEVICES / (8 * sizeof(int)) }; @@ -63,7 +64,7 @@ down(&chip->buffer_mutex); atomic_set(&chip->data_pending, 0); - memset(chip->data_buffer, 0, TPM_BUFSIZE); + memset(chip->data_buffer, 0, chip->vendor->buffersize); up(&chip->buffer_mutex); } @@ -458,7 +459,8 @@ spin_unlock(&driver_lock); - chip->data_buffer = kmalloc(TPM_BUFSIZE * sizeof(u8), GFP_KERNEL); + chip->data_buffer = kmalloc(chip->vendor->buffersize * sizeof(u8), + GFP_KERNEL); if (chip->data_buffer == NULL) { chip->num_opens--; put_device(chip->dev); @@ -507,8 +509,8 @@ down(&chip->buffer_mutex); - if (in_size > TPM_BUFSIZE) - in_size = TPM_BUFSIZE; + if (in_size > chip->vendor->buffersize) + in_size = chip->vendor->buffersize; if (copy_from_user (chip->data_buffer, (void __user *) buf, in_size)) { @@ -517,7 +519,9 @@ } /* atomic tpm command send and result receive */ - out_size = tpm_transmit(chip, chip->data_buffer, TPM_BUFSIZE); + out_size = tpm_transmit(chip, + chip->data_buffer, + chip->vendor->buffersize); atomic_set(&chip->data_pending, out_size); up(&chip->buffer_mutex); @@ -667,6 +671,12 @@ chip->vendor = entry; + if (entry->buffersize < TPM_MIN_BUFSIZE) { + entry->buffersize = TPM_MIN_BUFSIZE; + } else if (entry->buffersize > TPM_MAX_BUFSIZE) { + entry->buffersize = TPM_MAX_BUFSIZE; + } + chip->dev_num = -1; for (i = 0; i < TPM_NUM_MASK_ENTRIES; i++) diff -r a9dce0ffc901 -r dd87869f877c linux-2.6-xen-sparse/drivers/char/tpm/tpm_nopci.h --- a/linux-2.6-xen-sparse/drivers/char/tpm/tpm_nopci.h Mon Oct 3 14:04:27 2005 +++ b/linux-2.6-xen-sparse/drivers/char/tpm/tpm_nopci.h Mon Oct 3 14:05:37 2005 @@ -62,6 +62,7 @@ u8 req_complete_val; u8 req_canceled; u16 base; /* TPM base address */ + u32 buffersize; /* The device's requested buffersize */ int (*recv) (struct tpm_chip *, u8 *, size_t); int (*send) (struct tpm_chip *, u8 *, size_t); diff -r a9dce0ffc901 -r dd87869f877c linux-2.6-xen-sparse/drivers/char/tpm/tpm_xen.c --- a/linux-2.6-xen-sparse/drivers/char/tpm/tpm_xen.c Mon Oct 3 14:04:27 2005 +++ b/linux-2.6-xen-sparse/drivers/char/tpm/tpm_xen.c Mon Oct 3 14:05:37 2005 @@ -445,6 +445,7 @@ .base = 0, .attr = TPM_DEVICE_ATTRS, .miscdev.fops = &tpm_xen_ops, + .buffersize = 64 * 1024, }; static struct device tpm_device = { @@ -476,6 +477,8 @@ tpm_fe_unregister_receiver(); return rc; } + + tpm_xen.buffersize = tpmfe.max_tx_size; if ((rc = tpm_register_hardware_nopci(&tpm_device, &tpm_xen)) < 0) { device_unregister(&tpm_device); _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |