[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [TPM] Fix the tpm frontend to properly shut down when the domain
# HG changeset patch # User kfraser@xxxxxxxxxxxxxxxxxxxxx # Node ID 2ae6000abda3d0bcdcafde3074fa77febf57fbdd # Parent bd6d4a499e47c6a90ff0e06d242f7c2b47b12e08 [TPM] Fix the tpm frontend to properly shut down when the domain is shutting down (call to xenbus_frontend_closed()). Also the driver now waits longer until an outstanding response has been received (to support a busy system). Moves the 'Unknown' state with the other states that are not used by the TPM frontend. Signed-off-by: Stefan Berger <stefanb@xxxxxxxxxx> --- linux-2.6-xen-sparse/drivers/char/tpm/tpm_xen.c | 11 +++++++---- linux-2.6-xen-sparse/drivers/xen/tpmback/xenbus.c | 8 +++++--- 2 files changed, 12 insertions(+), 7 deletions(-) diff -r bd6d4a499e47 -r 2ae6000abda3 linux-2.6-xen-sparse/drivers/char/tpm/tpm_xen.c --- a/linux-2.6-xen-sparse/drivers/char/tpm/tpm_xen.c Wed Oct 18 15:13:41 2006 +0100 +++ b/linux-2.6-xen-sparse/drivers/char/tpm/tpm_xen.c Wed Oct 18 15:16:37 2006 +0100 @@ -343,6 +343,7 @@ static void backend_changed(struct xenbu case XenbusStateInitialising: case XenbusStateInitWait: case XenbusStateInitialised: + case XenbusStateUnknown: break; case XenbusStateConnected: @@ -351,13 +352,14 @@ static void backend_changed(struct xenbu case XenbusStateClosing: tpmif_set_connected_state(tp, 0); + xenbus_frontend_closed(dev); break; - case XenbusStateUnknown: case XenbusStateClosed: + tpmif_set_connected_state(tp, 0); if (tp->is_suspended == 0) device_unregister(&dev->dev); - xenbus_switch_state(dev, XenbusStateClosed); + xenbus_frontend_closed(dev); break; } } @@ -419,9 +421,10 @@ static int tpmfront_suspend(struct xenbu mutex_lock(&suspend_lock); tp->is_suspended = 1; - for (ctr = 0; atomic_read(&tp->tx_busy) && ctr <= 25; ctr++) { + for (ctr = 0; atomic_read(&tp->tx_busy) && ctr <= 300; ctr++) { if ((ctr % 10) == 0) - printk("TPM-FE [INFO]: Waiting for outstanding request.\n"); + printk("TPM-FE [INFO]: Waiting for outstanding " + "request.\n"); /* * Wait for a request to be responded to. */ diff -r bd6d4a499e47 -r 2ae6000abda3 linux-2.6-xen-sparse/drivers/xen/tpmback/xenbus.c --- a/linux-2.6-xen-sparse/drivers/xen/tpmback/xenbus.c Wed Oct 18 15:13:41 2006 +0100 +++ b/linux-2.6-xen-sparse/drivers/xen/tpmback/xenbus.c Wed Oct 18 15:16:37 2006 +0100 @@ -157,10 +157,12 @@ static void frontend_changed(struct xenb case XenbusStateClosing: be->instance = -1; - break; - - case XenbusStateUnknown: + xenbus_switch_state(dev, XenbusStateClosing); + break; + + case XenbusStateUnknown: /* keep it here */ case XenbusStateClosed: + xenbus_switch_state(dev, XenbusStateClosed); device_unregister(&be->dev->dev); tpmback_remove(dev); break; _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |