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

[Xen-devel] [PATCH] to put dmar hidding/restoring into Xen to fix S3 w/ TXT (Resend)



Put the code for hidding and restoring DMAR table from tboot into Xen in order 
to fix S3 broken issue with TXT launch.

Signed-off-by: Shane Wang <shane.wang@xxxxxxxxx>

diff -r 946d84529a07 xen/arch/x86/tboot.c
--- a/xen/arch/x86/tboot.c      Sat Jan 08 11:07:18 2011 +0000
+++ b/xen/arch/x86/tboot.c      Wed Jan 12 01:37:14 2011 +0800
@@ -352,6 +352,9 @@ void tboot_shutdown(uint32_t shutdown_ty
 
     /* if this is S3 then set regions to MAC */
     if ( shutdown_type == TB_SHUTDOWN_S3 ) {
+        /* restore DMAR table */
+        acpi_dmar_reinstate();
+
         /*
          * Xen regions for tboot to MAC
          */
@@ -484,6 +487,7 @@ int tboot_s3_resume(void)
 int tboot_s3_resume(void)
 {
     vmac_t mac;
+    int ret = 0;
 
     if ( !tboot_in_measured_env() )
         return 0;
@@ -492,22 +496,30 @@ int tboot_s3_resume(void)
     tboot_gen_xenheap_integrity(g_tboot_shared->s3_key, &mac);
     printk("MAC for xenheap before S3 is: 0x%08"PRIx64"\n", xenheap_mac);
     printk("MAC for xenheap after S3 is: 0x%08"PRIx64"\n", mac);
-    if ( mac != xenheap_mac )
-        return -1;
+    if ( mac != xenheap_mac ) {
+        ret = -1;
+        goto exit;
+    }
 
     tboot_gen_frametable_integrity(g_tboot_shared->s3_key, &mac);
     printk("MAC for frametable before S3 is: 0x%08"PRIx64"\n", frametable_mac);
     printk("MAC for frametable after S3 is: 0x%08"PRIx64"\n", mac);
-    if ( mac != frametable_mac )
-        return -2;
+    if ( mac != frametable_mac ) {
+        ret = -2;
+        goto exit;
+    }
 
     tboot_gen_domain_integrity(g_tboot_shared->s3_key, &mac);
     printk("MAC for domains before S3 is: 0x%08"PRIx64"\n", domain_mac);
     printk("MAC for domains after S3 is: 0x%08"PRIx64"\n", mac);
-    if ( mac != domain_mac )
-        return -3;
+    if ( mac != domain_mac ) {
+        ret = -3;
+        goto exit;
+    }
 
-    return 0;
+exit:
+    acpi_dmar_zap();
+    return ret;
 }
 
 /*

Attachment: dmar.patch
Description: dmar.patch

_______________________________________________
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®.