Index: head-2006-02-23/drivers/xen/Kconfig =================================================================== --- head-2006-02-23.orig/drivers/xen/Kconfig 2006-02-28 15:23:42.000000000 +0100 +++ head-2006-02-23/drivers/xen/Kconfig 2006-02-28 15:24:02.000000000 +0100 @@ -110,7 +110,7 @@ config XEN_NETDEV_PIPELINED_TRANSMITTER enabled; then you must say N here. config XEN_TPMDEV_BACKEND - bool "TPM-device backend driver" + tristate "TPM-device backend driver" default n help The TPM-device backend driver @@ -154,7 +154,7 @@ config XEN_BLKDEV_TAP space. Odds are that you want to say N here. config XEN_TPMDEV_FRONTEND - bool "TPM-device frontend driver" + tristate "TPM-device frontend driver" default n select TCG_TPM select TCG_XEN Index: head-2006-02-23/drivers/xen/tpmback/common.h =================================================================== --- head-2006-02-23.orig/drivers/xen/tpmback/common.h 2006-02-28 15:19:06.000000000 +0100 +++ head-2006-02-23/drivers/xen/tpmback/common.h 2006-02-24 17:20:55.000000000 +0100 @@ -54,9 +54,11 @@ typedef struct tpmif_st { void tpmif_disconnect_complete(tpmif_t * tpmif); tpmif_t *tpmif_find(domid_t domid, long int instance); void tpmif_interface_init(void); +void tpmif_interface_exit(void); void tpmif_schedule_work(tpmif_t * tpmif); void tpmif_deschedule_work(tpmif_t * tpmif); void tpmif_xenbus_init(void); +void tpmif_xenbus_exit(void); int tpmif_map(tpmif_t *tpmif, unsigned long shared_page, unsigned int evtchn); irqreturn_t tpmif_be_int(int irq, void *dev_id, struct pt_regs *regs); int tpmif_vtpm_open(tpmif_t *tpmif, domid_t domain, u32 instance); Index: head-2006-02-23/drivers/xen/tpmback/interface.c =================================================================== --- head-2006-02-23.orig/drivers/xen/tpmback/interface.c 2006-02-28 15:19:06.000000000 +0100 +++ head-2006-02-23/drivers/xen/tpmback/interface.c 2006-02-24 17:20:35.000000000 +0100 @@ -186,6 +186,12 @@ tpmif_interface_init(void) 0, 0, NULL, NULL); } +void __init +tpmif_interface_exit(void) +{ + kmem_cache_destroy(tpmif_cachep); +} + /* * Local variables: * c-file-style: "linux" Index: head-2006-02-23/drivers/xen/tpmback/tpmback.c =================================================================== --- head-2006-02-23.orig/drivers/xen/tpmback/tpmback.c 2006-02-28 15:19:06.000000000 +0100 +++ head-2006-02-23/drivers/xen/tpmback/tpmback.c 2006-02-24 17:22:14.000000000 +0100 @@ -1092,7 +1092,20 @@ tpmback_init(void) return 0; } -__initcall(tpmback_init); +module_init(tpmback_init); + +static void __exit +tpmback_exit(void) +{ + + tpmif_xenbus_exit(); + tpmif_interface_exit(); + misc_deregister(&ibmvtpms_miscdevice); +} + +module_exit(tpmback_exit); + +MODULE_LICENSE("Dual BSD/GPL"); /* * Local variables: Index: head-2006-02-23/drivers/xen/tpmback/xenbus.c =================================================================== --- head-2006-02-23.orig/drivers/xen/tpmback/xenbus.c 2006-02-28 15:19:06.000000000 +0100 +++ head-2006-02-23/drivers/xen/tpmback/xenbus.c 2006-02-24 17:24:11.000000000 +0100 @@ -317,6 +317,11 @@ void tpmif_xenbus_init(void) xenbus_register_backend(&tpmback); } +void tpmif_xenbus_exit(void) +{ + xenbus_unregister_driver(&tpmback); +} + /* * Local variables: * c-file-style: "linux" Index: head-2006-02-23/drivers/xen/tpmfront/tpmfront.c =================================================================== --- head-2006-02-23.orig/drivers/xen/tpmfront/tpmfront.c 2006-02-28 15:19:06.000000000 +0100 +++ head-2006-02-23/drivers/xen/tpmfront/tpmfront.c 2006-02-24 17:24:20.000000000 +0100 @@ -480,6 +480,11 @@ static void __init init_tpm_xenbus(void) xenbus_register_frontend(&tpmfront); } +static void __exit exit_tpm_xenbus(void) +{ + xenbus_unregister_driver(&tpmfront); +} + static int tpm_allocate_buffers(struct tpm_private *tp) @@ -700,7 +705,18 @@ tpmif_init(void) return 0; } -__initcall(tpmif_init); +module_init(tpmif_init); + +static void __exit +tpmif_exit(void) +{ + exit_tpm_xenbus(); + gnttab_free_grant_references(gref_head); +} + +module_exit(tpmif_exit); + +MODULE_LICENSE("Dual BSD/GPL"); /* * Local variables: