From: Joseph C. <jos...@in...> - 2011-04-08 21:44:50
|
changeset 719122201417 in /var/www/tboot.hg details: tboot.hg?cmd=changeset;node=719122201417 description: Separate AC Module subtype field from type field in ACM header The existing code used a 32 bit type field in the ACM header. But the type field is actually only 16 bits followed by a 16 bit subtype field. The acmod.h file is changed appropraitely and the dump of the ACM header (in both tboot and acminfo output) is changed to show the subtype field. Signed-off-by: Joseph Cihula <jos...@in...> diffstat: tboot/include/txt/acmod.h | 8 ++++++-- tboot/txt/acmod.c | 9 ++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diffs (58 lines): diff -r f4253e6313d4 -r 719122201417 tboot/include/txt/acmod.h --- a/tboot/include/txt/acmod.h Fri Apr 08 13:50:39 2011 -0700 +++ b/tboot/include/txt/acmod.h Fri Apr 08 14:52:23 2011 -0700 @@ -2,7 +2,7 @@ * acmod.c: support functions for use of Intel(r) TXT Authenticated * Code (AC) Modules * - * Copyright (c) 2003-2010, Intel Corporation + * Copyright (c) 2003-2011, Intel Corporation * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -51,7 +51,8 @@ } acm_flags_t; typedef struct { - uint32_t module_type; + uint16_t module_type; + uint16_t module_subtype; uint32_t header_len; uint32_t header_ver; /* currently 0.0 */ uint16_t chipset_id; @@ -79,6 +80,9 @@ /* value of module_type field */ #define ACM_TYPE_CHIPSET 0x02 +/* value of module_subtype field */ +#define ACM_SUBTYPE_RESET 0x01 + /* value of module_vendor field */ #define ACM_VENDOR_INTEL 0x8086 diff -r f4253e6313d4 -r 719122201417 tboot/txt/acmod.c --- a/tboot/txt/acmod.c Fri Apr 08 13:50:39 2011 -0700 +++ b/tboot/txt/acmod.c Fri Apr 08 14:52:23 2011 -0700 @@ -2,7 +2,7 @@ * acmod.c: support functions for use of Intel(r) TXT Authenticated * Code (AC) Modules * - * Copyright (c) 2003-2010, Intel Corporation + * Copyright (c) 2003-2011, Intel Corporation * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -178,6 +178,13 @@ printk("(ACM_TYPE_CHIPSET)\n"); else printk("(unknown)\n"); + printk("\t subtype: 0x%x ", hdr->module_subtype); + if ( hdr->module_subtype == ACM_SUBTYPE_RESET ) + printk("(execute at reset)\n"); + else if ( hdr->module_subtype == 0 ) + printk("\n"); + else + printk("(unknown)\n"); printk("\t length: 0x%x (%u)\n", hdr->header_len, hdr->header_len); printk("\t version: %u\n", hdr->header_ver); printk("\t chipset_id: 0x%x\n", (uint32_t)hdr->chipset_id); |