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

[Xense-devel] RE: [Xen-devel] [RFC][PATCH][0/2] Intel(r) Trusted Execution Technology



Jonathan M. McCune <mailto:jonmccune@xxxxxxx> scribbled on Thursday,
July 12, 2007 9:41 PM:
> Hello again,
> 
> I made a mistake counting line numbers.  The macro that was causing
> problems was SYM_TRAMP_PHYS, which was removed somewhere between
> changeset 15331 and 15364.  I have successfully built and used the TXT
> patch with changeset 15331.

Glad to hear it.  In the original patch I forgot to mention which
changeset it was based on (15200).  I'm glad to see that it works on a
bit later version as well.

> 
> Sorry for the spam,
> -Jon
> 
> 
> Jonathan M. McCune wrote:
>> Hi Joseph, Jun, Xen developers,
>> 
>> I'm trying to get this patch to build, but I've encountered some
>> difficulty.  Applying the patch to today's tip results in three
>> failures which I was able to correct manually.  I also tried an
>> older changeset (15369) from the day Jun reported success, and
>> txt-xen-0608_01-xen.patch applied with `patch -p1 -F 3`.
>> txt-xen-0608_02-sboot.patch applied successfully in both cases. 
>> 
>> I tried both gcc 4.1.2 and 3.4.6.  The failure is the same both ways.
>> 
>> If I disable the TXT patch (CONFIG_TXT ?= n in Config.mk), Xen
>> builds successfully. 
>> 
>> Here is the compilation step that fails:
>> 
>> gcc -D__ASSEMBLY__ -O2 -fomit-frame-pointer -m32 -march=i686 -DNDEBUG
>> -Wall -Wstrict-prototypes -Wno-unused-value
>> -Wdeclaration-after-statement -nostdinc -fno-builtin -fno-common
>> -fno-strict-aliasing -iwithprefix include -Werror -Wno-pointer-arith
>> -pipe -I/export/txt/xen-unstable.hg-15369-sboot/xen/include
>>
-I/export/txt/xen-unstable.hg-15369-sboot/xen/include/asm-x86/mach-gener
ic
>>
-I/export/txt/xen-unstable.hg-15369-sboot/xen/include/asm-x86/mach-defau
lt
>> -msoft-float -fno-stack-protector -DCONFIG_X86_PAE=1 -g -D__XEN__
>> -DCONFIG_TXT -c head.S -o head.o
>> trampoline.S: Assembler messages:
>> trampoline.S:49: Error: junk `(trampoline_cpu_started)' after
>> expression trampoline.S:51: Error: junk `(idt_48)' after expression
>> trampoline.S:52: Error: junk `(gdt_48)' after expression
>> make[4]: *** [head.o] Error 1
>> make[4]: Leaving directory
>> `/export/txt/xen-unstable.hg-15369-sboot/xen/arch/x86/boot'
>> make[3]: ***
>>
[/export/txt/xen-unstable.hg-15369-sboot/xen/arch/x86/boot/built_in.o]
>> Error 2 make[3]: Leaving directory
>> `/export/txt/xen-unstable.hg-15369-sboot/xen/arch/x86'
>> make[2]: *** [/export/txt/xen-unstable.hg-15369-sboot/xen/xen] Error
>> 2 make[2]: Leaving directory
>> `/export/txt/xen-unstable.hg-15369-sboot/xen' make[1]: *** [install]
>> Error 2 
>> make[1]: Leaving directory
>> `/export/txt/xen-unstable.hg-15369-sboot/xen' make: ***
>> [install-xen] Error 2 
>> 
>> The lines of trampoline.S that trigger this error are not changed by
>> the patches, so I'm at a bit of a loss as to what is causing the
>> error. Those three symbols are inside a bootsym() macro which is
>> itself defined in trampoline.S.  The macro is not complicated, and
>> makes reference to a symbol from head.S (from whence trampoline.S is
>> included). 
>> 
>> Help is greatly appreciated.
>> 
>> Thanks,
>> -Jon
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> Hi Joseph,
>> 
>> I compiled TXT patch with the latest unstable, and it works well. I
>> mean my machine boot wtih /sboot.gz in grub file, and Xen runs like
>> normal. Sweet! 
>> 
>> Few questions:
>> - Now, how can I confirm that TXT is actully running on my machine?
>> - What to do next to take the advantage of TXT? Any application for
>> it? 
>> 
>> Thanks,
>> Jun
>> 
>> 
>> On 6/9/07, Cihula, Joseph <joseph.cihula@xxxxxxxxx> wrote:
>> 
>> Attached is a preliminary patch that adds Intel(r) Trusted Execution
>> Technology (Intel(r) TXT) support to Xen.  Intel(r) TXT was formerly
>> known by the codename LaGrande Technology (LT).
>> 
>> This version of the patch (the previous version was posted last year)
>> re-factors the Intel(r) TXT code into a separate module/binary that
>> is passed as the 'kernel' to GRUB and which then launches Xen itself
>> (after having performed the measured launch).
>> 
>> This patch supports all of the Xen processor modes
>> (32bit/32bitPAE/64bit) and supports multi-core/thread systems.  It
>> will run on either an Intel LT SDV3 or on the Intel(r) TXT TEP
>> (Technology Enabling Platform) from MPC. 
>> 
>> 
>> Intel(r) TXT in Brief:
>> ----------------------
>> o  Provides dynamic root of trust for measurement (DRTM)
>> o  DMA protection (on SDV3/TEP platforms only)
>> o  Data protection in case of improper shutdown
>> 
>> For more information, see http://www.intel.com/technology/security/.
>> This site also has a link to the Intel(r) TXT Preliminary
>> Architecture Specification. 
>> 
>> 
>> Overview of Patch Functionality:
>> --------------------------------
>> o  Measured Launch.  If the processor is detected as being
>> TXT-capable and enabled then the code will attempt to perform a
>> measured launch.  If the measured launch process fails (processor is
>> not capable, TXT is not enabled, missing SINIT, corrupted data,
>> etc.)) then it will fall-through to a non-TXT boot of Xen. 
>> 
>> o  Teardown of measured environment.  When Xen exits the measured
>> environment will be torn down properly.
>> 
>> o  Reset data protection.  Intel(r) TXT HW prevents access to
>> secrets if the system is reset without clearing them from memory (as
>> part of a TXT teardown).  This code will support this by setting the
>> flag indicating that memory should be so protected during the
>> measured launch and clearing the flag just before teardown.
>> 
>> o  Protection of TXT memory ranges.  Intel(r) TXT reserves certain
>> regions of RAM for its use and also defines several MMIO regions. 
>> These regions (excluding the TXT public configuration space) are
>> protected from use by any domains (including dom0).
>> 
>> 
>> Patch Contents:
>> ---------------
>> txt-xen-0608_01-xen.patch - the changes to Xen for Intel(r) TXT
>> support txt-xen-0608_02-sboot.patch - the new sboot module that
>> performs the measured launch 
>> 
>> 
>> Instructions for use:
>> ---------------------
>> o  By default, the functionality is disabled in the build.  It can be
>> enabled by changing the INTEL_TXT flag to 'y' in Config.mk.
>> 
>> o  The new sboot module must be added as the 'kernel' and xen made a
>> 'module'.  The SINIT AC module (available with SDV3 and TEP systems)
>> must be added to the grub.conf boot config as the last module, e.g.:
>>        title Xen 3.1.0 w/ Intel(r) Trusted Execution Technology
>>                kernel /sboot.gz
>>                module /xen.gz dom0_mem=524288 com1=115200,8n1
>>                module /vmlinuz-2.6.18-xen
>>                root=/dev/VolGroup00/LogVol00 ro module
>>                /initrd-2.6.18-xen.img module
>> /lpg_sinit_20050831_pae.auth.bin 
>> 
>> o  Progress of the launch process is indicated via debug printk's to
>> COM1 (hardcoded).  These appear before the normal "(XEN)" output and
>> are prefixed by "SBOOT:".  The code (in early_printk.c) does not
>> initialize the COM port so this needs to be done by GRUB - grub.conf
>>        should have: serial --speed=115200 --unit=0
>>        terminal console serial
>> 
>> 
>> Interesting Items of Note:
>> --------------------------
>> o  A Xen that is not compiled for Intel(r) TXT can still be launched
>> by sboot, however it will not protect any of the TXT memory nor sboot
>> itself.  Further, it will not be able to use any threads or cores
>> beyond the BSP.  And it will hang on reboot/shutdown.
>> 
>> o  A Xen compiled for Intel(r) TXT can be used without sboot and will
>> simply detect that it was not launched in a measured environment and
>> behave as normal. 
>> 
>> o  The patch defines two new E820 types, E820_PROTECTED and
>> E820_MLE_SHARED.  sboot will copy and alter the e820 table provided
>> by GRUB to "reserve" its own memory plus the TXT memory regions. 
>> These are marked as E820_PROTECTED so that the patched Xen code can
>> prevent them from being assigned to dom0.  The E820_MLE_SHARED type
>> is for a single page that sboot reserves for communication (sharing)
>> with Xen.  The patched Xen code will look for this page when parsing
>> the e820 table and uses its presence as the indicator that a
>> measured launch took place (the e820 table is not altered if the
>> measured launch fails for any reason). 
>> 
>> o  sboot is always built 32bit and runs in protected mode without
>> PAE or paging enabled.  sboot lives at (copies itself to) 0x70000. 
>> This seems like a safe location so far, but is not a good long-term
>> location.  We'd like to discuss moving Xen a little higher to allow
>> sboot to live at 0x100000--this is a separate thread.
>> 
>> o  Because a proper teardown requires turning off VMX on every
>> core/thread before executing GETSEC[SEXIT], some changes were made to
>> the Xen shutdown code.  An initial commonization of the reboot and
>> shutdown routines was done so that this new code would only have to
>> be put in one place.  Future patches will commonize the other
>> routines in Xen that shutdown or reboot the system, such that they
>> will also perform a teardown of the measured environment.
>> 
>> o  The code requires that VT be enabled as well as TXT.  This is
>> because the mechanism for bringing up the APs uses VMX to create a
>> mini-VM in order to trap on INIT-SIPI-SIPI.
>> 
>> o  Currently only sboot is measured.  We plan to extend this to xen
>> and dom0 in the future. 
>> 
>> o  The patch doesn't cap (extend with invalid value) the dynamic TPM
>> PCRs when the measured environment is torn down.  This will be added
>> when we have a method for re-entering sboot on shutdown implemented.
>> 
>> o  No DMA protection has been implemented in this patch.  SDV3/TEP
>> only support the NoDMA table for DMA protection and this is
>> superseded by VT-d.  VT-d support will be added shortly, though it
>> will only be available on new platforms. 
>> 
>> 
>> 
>> Comments and feedback are very welcome.  We'd especially like to see
>> a discussion about what changes are required for this code to be
>> merged into the -unstable tree. 
>> 
>> We have many enhancements planned, as well as support for newer TXT
>> Software Development Platforms (SDPs).
>> 
>> 
>> Joseph Cihula
>> Jimmy Wei
>> Shane Wang
>> Zhai Edwin
>> 
>> Open Source Technology Center
>> Intel Corp.

_______________________________________________
Xense-devel mailing list
Xense-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xense-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.