# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID 2aa9e9867477a3a5ede39acea8cbb0bbf0f8c88b
# Parent c9d706834d25a9efe5bd3a98cbf32c6998f30ab4
This fixes the state machine of the vTPM driver.
Signed-off-by: Stefan Berger <stefanb@xxxxxxxxxx>
diff -r c9d706834d25 -r 2aa9e9867477
linux-2.6-xen-sparse/drivers/xen/tpmback/xenbus.c
--- a/linux-2.6-xen-sparse/drivers/xen/tpmback/xenbus.c Thu Apr 13 09:57:57 2006
+++ b/linux-2.6-xen-sparse/drivers/xen/tpmback/xenbus.c Thu Apr 13 09:59:08 2006
@@ -164,10 +164,10 @@
switch (frontend_state) {
case XenbusStateInitialising:
+ case XenbusStateInitialised:
+ break;
+
case XenbusStateConnected:
- break;
-
- case XenbusStateInitialised:
err = connect_ring(be);
if (err) {
return;
diff -r c9d706834d25 -r 2aa9e9867477
linux-2.6-xen-sparse/drivers/xen/tpmfront/tpmfront.c
--- a/linux-2.6-xen-sparse/drivers/xen/tpmfront/tpmfront.c Thu Apr 13
09:57:57 2006
+++ b/linux-2.6-xen-sparse/drivers/xen/tpmfront/tpmfront.c Thu Apr 13
09:59:08 2006
@@ -334,12 +334,6 @@
goto abort_transaction;
}
- err = xenbus_printf(xbt, dev->nodename,
- "state", "%d", XenbusStateInitialised);
- if (err) {
- goto abort_transaction;
- }
-
err = xenbus_transaction_end(xbt, 0);
if (err == -EAGAIN)
goto again;
@@ -347,6 +341,9 @@
xenbus_dev_fatal(dev, err, "completing transaction");
goto destroy_tpmring;
}
+
+ xenbus_switch_state(dev, XenbusStateConnected);
+
return 0;
abort_transaction:
@@ -387,6 +384,7 @@
if (tp->is_suspended == 0) {
device_unregister(&dev->dev);
}
+ xenbus_switch_state(dev, XenbusStateClosed);
break;
}
}
@@ -439,6 +437,7 @@
/* lock, so no app can send */
mutex_lock(&suspend_lock);
+ xenbus_switch_state(dev, XenbusStateClosed);
tp->is_suspended = 1;
for (ctr = 0; atomic_read(&tp->tx_busy) && ctr <= 25; ctr++) {
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|