summaryrefslogtreecommitdiffstats
path: root/documentation/dev-manual/figures
AgeCommit message (Collapse)Author
2013-04-10dev-manual: Edits to "Yocto Project Source Repositories" section.Scott Rifenbark
Some minor text editing. Also, updated two figures to be more recent. One for the Index of Releases and one for the YP Downloads page from the website. They were very dated. (From yocto-docs rev: 59255d7c0175a5280239d070ce902079229cf909) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-10-22documentation: dev-manual - removed the wip.png figureScott Rifenbark
this figure used to be at the end of the development manual. I have removed it from both figures directories and taken it out of the TARFILE list in the Makefile. (From yocto-docs rev: ad8fcfc4bddb6bcee0e1a4ece78cd87ab0d51b6c) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-10-10documentation: dev-manual, mega-manual - removed figureScott Rifenbark
Removed the "kernel-example-repos-generic.png" file as it describes the bare clone method for kernel modification. We are removing that from this manual. (From yocto-docs rev: c25c4f662c2f8a83fd9b09583646be9dbe01424c) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-10-10documentation: dev-manual, bsp-guide, kernel-manual - kernel workflowScott Rifenbark
The kernel workflow section was re-written to reflect that the kernel appendix has been removed. Also, changes to the flow in general no longer make reference to the bare clone and the copy of the bare clone as a method used to modify the kernel. Many links were modified in other manuals as well. (From yocto-docs rev: 38adbcb00d4305029cfa94e5ef047da41823f021) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-10-10documentation: dev-manual - Removed figures no longer needed.Scott Rifenbark
The figure that shows the bare clone and the copy of the bare clone are no longer needed. The description for the kernel workflow has been reduced to discussing only modification of the temporary source files. We are no longer talking about creating a bare clone and copying it as a way to modify the kernel in this manual. That topic will be described elsewhere. (From yocto-docs rev: f6a25e5e3763ea7a1f8a81ce377e3b520143b852) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-10-07documentation: dev-manual - Created generic figuresScott Rifenbark
Each time the kernel revision is bumped (e.g. 3.2 to 3.4) Some of the figures would be out of date. The reason is they had pathnames that included the release of the kernel. For previous YP releases I was adding logic to the Makefile to be sure to catch the right files dependent on the branch from which the documents were being built. This scheme is not scalable so I decided to make the figures generic by adding a note within the figures explaining the place-holder "<x.x>" as part of a pathname. Thus, three new figures were added to the folders directories of the dev-manual and the mega-manual. Correspondingly, the 'denzil' version of the figures were deleted. I modified the Makefile so that if the BRANCH is not edison or denzil then the generic figure set is used. I have to retain the logic for both edison and denzil to cover the case where a user clones or sets up an edison or denzil repo and then builds out the manuals. Basically, it had to be backwards compatible for releases prior to danny. (From yocto-docs rev: 8283eed4b0b9ec164b87db99c35231f8731ac443) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-10-07documentation: Makefile, dev-manual - Updated kernel example repo figureScott Rifenbark
Danny, the "kernel-example-repo-<release>.png" file changed to "kernel-example-repo-danny.png". To correctly make the dev-manual and the mega-manual some things needed to change: 1. New figure created and added to both the dev-manual and the mega-manuals figures directory. 2. The "kernel-example-repo-denzil.png" files from the dev-manual and mega-manual figures directory was removed. 3. The Makefile was adjusted so a new BRANCH=danny area now exists to set TARFILES for both dev-manual and mega-manual. (From yocto-docs rev: 8b2ff6b657a1486559799e219baaec9fde2e5c6c) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-10-04documentation: dev-manual - Updated BSP flow overview.Scott Rifenbark
This section now points into the BSP Guide where it talks about using the yocto-bsp script to create a BSP. The prior method was by hand and described in an appendix (A) of the YP Development Manual. FYI - this results in the removal of Appendex A in a future commit. (From yocto-docs rev: 5e1c44b1768b79dd1447ea47461b84248bd2111f) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-10-02documentation: dev-manual - Updated the Application Dev figure.Scott Rifenbark
Added information in the #4 box to include the cross-dev toolchain. (From yocto-docs rev: 198ab4326369d8c74225d9de51bf536621ab2251) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-10-02documentation: dev-manual - updated kernel flow figure.Scott Rifenbark
I made this more accurate by including notes to edit the source and use of menuconfig within the diagram. (From yocto-docs rev: 91d3d2e935aab24c4bd96c5921a605cbbb7e3231) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-09-04documentation: Title changesScott Rifenbark
Removed "The" from all the titles of the books. This makes it easier to reference to them and easier for the automated processing of the mega-manual. (From yocto-docs rev: af566d6d007cff642648698ea487a6eeaa8cc930) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-05-01documentation/dev-manual: New figure just for denzilScott Rifenbark
New image needed for Denzil. I created a new file named "kernel-example-repos-denzil.png" and copied it to the Figures folder. I also deleted the "kernel-example-repos.png" image. (From yocto-docs rev: 97105187735c15e452580a0174897517c1860f2c) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-05-01documentation/dev-manual/figures/kernel-overview-3.png: Removed fileScott Rifenbark
This file was replaced by a release-specific file named "kernel-overview-3-denzil. (From yocto-docs rev: 85220f16ce10086372f9d81c61cb4e3eb40d52e4) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-05-01documentation: release-specific figure needed for denzil in dev-manualScott Rifenbark
dev-manual/dev-manual-model.xml: The Bare Clone and Copy of the Bare Clone figures are out of date for denzil. These needed to be re-done so they use "linux-yocto-3.2.git" and "my-linux-yocto-3.0-work" as the root names. This presents a Makefile issue when making the denzil and pre-denzil versions of the manuals. Whenever you use a different figure for a different release, you need to involve the BRANCH variable in the Makefile. This is necessary because you are using different figures in the generated tarballs. The set of figures could be unique to the release. The outdated figure is "kernel-overview-3.png" and will eventually be removed (later commit). I created a new figure named "kernel-overview-3-denzil.png" and used that in the dev-manual-model.xml file. documentation/Makefile: I updated the Makefile to test for a "denzil" release build and if so include the new file in the generated tarball. This commit adds the new .PNG file as well. Fixed the Makefile so that if you don't supply a BRANCH value, it uses the latest figures (denzil). (From yocto-docs rev: b3550d7640343cd5459efb04c591b81a1e41bc1b) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-03-08documentation/dev-manual/figures/kernel-example-repos.png: update figureScott Rifenbark
The figure that shows the kernel repos needed the git push command fixed. There was no ":" character in it. (From yocto-docs rev: 4add1c83a8e3f4fec9ec6b678e31e259c700c077) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-03-08documentation/dev-manual: Updates to index of releasesScott Rifenbark
Had to update the figure again and I updated the surrounding text. (From yocto-docs rev: ed0aea8ad3670aace1eb51ca7a72e75a4c129fba) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-03-08documentation/dev-manual/figures/index-downloads.png: updated pictureScott Rifenbark
Updated the picture that shows the index of releases. they renamed this from index of downloads. (From yocto-docs rev: 38ffbb3138fa43fcb44456e6b6f46dc78cc87a14) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-03-08documentation/dev-manual/figures/git-workflow.png: Updated figure flowScott Rifenbark
The Git Workflow was missing a pull line from the second (bottom) contrib box into the project's master Git repository. I added the line. (From yocto-docs rev: e7e2f92a92cec3798395470595ba1a2beaf36575) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-10-31documentation/dev-manual: Bruce Ashfield's dev-manual comments added.Scott Rifenbark
I was not able to get to Bruce's comments he submitted to me for the "Model" chapter of the development manual. His comments consisted of various tweaks to terminology I used and the inclusion of some additional technical information. This commit addresses all his comments for the review. (From yocto-docs rev: 206a22e1ccf077360974f18295b6df455cd50545) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-10-06documentation/dev-manual/figures/kernel-example-repos.png: updated figureScott Rifenbark
Changed the pathnames for kernel 3.0 from 2.37 (From yocto-docs rev: 220ce5fbb3663940b5940445190d30d98f58a438) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-10-04documentation/dev-manual/figures/wip.png: new figure added.Scott Rifenbark
(From yocto-docs rev: f373d2b9f3530e31dc84b9333cfef93cdfd2c5e2) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-09-25documentation/dev-manual/figures/app-dev-flow.png: Updated app flow imageScott Rifenbark
(From yocto-docs rev: 5c0c04ccc2d1fdac89dc1394805e4b8c4cc2c082) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-09-25documentation/dev-manual: model changes and updated figureScott Rifenbark
Edits to the dev-manual-model.xml chapter for general improvements. Also had to update the figure that shows the kernel development flow. (From yocto-docs rev: 2aacccb03d167eac74a1b45c39a9edac160efc7f) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-09-02documentation/dev-manual/figures: Three figures for kernel added.Scott Rifenbark
these are new figures to support the "Modifying the Kernel" conceptual section. (From yocto-docs rev: 1a0ecc104479b54a8122e3de2b30694fac8d7e73) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-08-23documentation/dev-manual/figures: Figure updatesScott Rifenbark
Not sure if I need to commit these again. They are showing up in the git status command so I might have updated them and forgot to commit them. Doing so to be sure. (From yocto-docs rev: 75c87592c10647ec09f42a1363a8ae123cd6e33d) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-08-15documentation/dev-manual/figures/kernel-example-repos.png: new figureScott Rifenbark
This figure provides a conceptual look at the repos and file structures needed to run the example. Or, for that matter, to get set up to modify the kernel. (From yocto-docs rev: d469449f1d416a6a96bdde297daae68a9f3094e5) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-08-15documentation/dev-manual/figures/bsp-dev-flow.png: Updated BSP flow diagram.Scott Rifenbark
(From yocto-docs rev: 4dc246fa368f35efa93ff88f323ca433abe096da) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-08-04documentation/dev-manual/figures/bsp-dev-flow.png: Updated pictureScott Rifenbark
New flow suggested by Dave Stewart. (From yocto-docs rev: 101a464f0f17f3816bfb32f6e3a5da714cc32a06) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-08-04documentation/dev-manual/figures: Added three figures for sourcesScott Rifenbark
(From yocto-docs rev: 956f3d8a35a89caff40531690cdd51fd33b534d2) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-08-04documentation/dev-manual/figures/bsp-dev-flow.png: Updated figureScott Rifenbark
(From yocto-docs rev: 8bf534dc43433032998f6e59bd35c923f1c7bd47) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-08-04documentation/dev-manual/figures/bsp-dev-flow.png: Updated the figure.Scott Rifenbark
(From yocto-docs rev: 48718ed82ea5b7aac57c9f566caef5abcf67db20) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-08-04documentation/dev-manual/figures/bsp-dev-flow.png: New illustrationScott Rifenbark
This is the BSP flow illustration. (From yocto-docs rev: 82ec8528c058d702402767ffa471695eb82e259c) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-07-21documentation/dev-manual/figures/dev-title.png: Initial file created. (From ↵Scott Rifenbark
yocto-docs rev: dd336b3d12586661d30f6d22d709031266cf7ed2) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-07-21documentation/dev-manual: Added top-level directory for Dev Manual. (From ↵Scott Rifenbark
yocto-docs rev: d85283b6c1d939909c46f94750e4ff36ee42cadb) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Yocto Linux Embedded kernelGrokmirror user
aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/intel_txt.txt
blob: d83c1a2122c9c2b788b942391710103ec6083806 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
=====================
Intel(R) TXT Overview
=====================

Intel's technology for safer computing, Intel(R) Trusted Execution
Technology (Intel(R) TXT), defines platform-level enhancements that
provide the building blocks for creating trusted platforms.

Intel TXT was formerly known by the code name LaGrande Technology (LT).

Intel TXT in Brief:

-  Provides dynamic root of trust for measurement (DRTM)
-  Data protection in case of improper shutdown
-  Measurement and verification of launched environment

Intel TXT is part of the vPro(TM) brand and is also available some
non-vPro systems.  It is currently available on desktop systems
based on the Q35, X38, Q45, and Q43 Express chipsets (e.g. Dell
Optiplex 755, HP dc7800, etc.) and mobile systems based on the GM45,
PM45, and GS45 Express chipsets.

For more information, see http://www.intel.com/technology/security/.
This site also has a link to the Intel TXT MLE Developers Manual,
which has been updated for the new released platforms.

Intel TXT has been presented at various events over the past few
years, some of which are:

      - LinuxTAG 2008:
          http://www.linuxtag.org/2008/en/conf/events/vp-donnerstag.html

      - TRUST2008:
          http://www.trust-conference.eu/downloads/Keynote-Speakers/
          3_David-Grawrock_The-Front-Door-of-Trusted-Computing.pdf

      - IDF, Shanghai:
          http://www.prcidf.com.cn/index_en.html

      - IDFs 2006, 2007
	  (I'm not sure if/where they are online)

Trusted Boot Project Overview
=============================

Trusted Boot (tboot) is an open source, pre-kernel/VMM module that
uses Intel TXT to perform a measured and verified launch of an OS
kernel/VMM.

It is hosted on SourceForge at http://sourceforge.net/projects/tboot.
The mercurial source repo is available at http://www.bughost.org/
repos.hg/tboot.hg.

Tboot currently supports launching Xen (open source VMM/hypervisor
w/ TXT support since v3.2), and now Linux kernels.


Value Proposition for Linux or "Why should you care?"
=====================================================

While there are many products and technologies that attempt to
measure or protect the integrity of a running kernel, they all
assume the kernel is "good" to begin with.  The Integrity
Measurement Architecture (IMA) and Linux Integrity Module interface
are examples of such solutions.

To get trust in the initial kernel without using Intel TXT, a
static root of trust must be used.  This bases trust in BIOS
starting at system reset and requires measurement of all code
executed between system reset through the completion of the kernel
boot as well as data objects used by that code.  In the case of a
Linux kernel, this means all of BIOS, any option ROMs, the
bootloader and the boot config.  In practice, this is a lot of
code/data, much of which is subject to change from boot to boot
(e.g. changing NICs may change option ROMs).  Without reference
hashes, these measurement changes are difficult to assess or
confirm as benign.  This process also does not provide DMA
protection, memory configuration/alias checks and locks, crash
protection, or policy support.

By using the hardware-based root of trust that Intel TXT provides,
many of these issues can be mitigated.  Specifically: many
pre-launch components can be removed from the trust chain, DMA
protection is provided to all launched components, a large number
of platform configuration checks are performed and values locked,
protection is provided for any data in the event of an improper
shutdown, and there is support for policy-based execution/verification.
This provides a more stable measurement and a higher assurance of
system configuration and initial state than would be otherwise
possible.  Since the tboot project is open source, source code for
almost all parts of the trust chain is available (excepting SMM and
Intel-provided firmware).

How Does it Work?
=================

-  Tboot is an executable that is launched by the bootloader as
   the "kernel" (the binary the bootloader executes).
-  It performs all of the work necessary to determine if the
   platform supports Intel TXT and, if so, executes the GETSEC[SENTER]
   processor instruction that initiates the dynamic root of trust.

   -  If tboot determines that the system does not support Intel TXT
      or is not configured correctly (e.g. the SINIT AC Module was
      incorrect), it will directly launch the kernel with no changes
      to any state.
   -  Tboot will output various information about its progress to the
      terminal, serial port, and/or an in-memory log; the output
      locations can be configured with a command line switch.

-  The GETSEC[SENTER] instruction will return control to tboot and
   tboot then verifies certain aspects of the environment (e.g. TPM NV
   lock, e820 table does not have invalid entries, etc.).
-  It will wake the APs from the special sleep state the GETSEC[SENTER]
   instruction had put them in and place them into a wait-for-SIPI
   state.

   -  Because the processors will not respond to an INIT or SIPI when
      in the TXT environment, it is necessary to create a small VT-x
      guest for the APs.  When they run in this guest, they will
      simply wait for the INIT-SIPI-SIPI sequence, which will cause
      VMEXITs, and then disable VT and jump to the SIPI vector.  This
      approach seemed like a better choice than having to insert
      special code into the kernel's MP wakeup sequence.

-  Tboot then applies an (optional) user-defined launch policy to
   verify the kernel and initrd.

   -  This policy is rooted in TPM NV and is described in the tboot
      project.  The tboot project also contains code for tools to
      create and provision the policy.
   -  Policies are completely under user control and if not present
      then any kernel will be launched.
   -  Policy action is flexible and can include halting on failures
      or simply logging them and continuing.

-  Tboot adjusts the e820 table provided by the bootloader to reserve
   its own location in memory as well as to reserve certain other
   TXT-related regions.
-  As part of its launch, tboot DMA protects all of RAM (using the
   VT-d PMRs).  Thus, the kernel must be booted with 'intel_iommu=on'
   in order to remove this blanket protection and use VT-d's
   page-level protection.
-  Tboot will populate a shared page with some data about itself and
   pass this to the Linux kernel as it transfers control.

   -  The location of the shared page is passed via the boot_params
      struct as a physical address.

-  The kernel will look for the tboot shared page address and, if it
   exists, map it.
-  As one of the checks/protections provided by TXT, it makes a copy
   of the VT-d DMARs in a DMA-protected region of memory and verifies
   them for correctness.  The VT-d code will detect if the kernel was
   launched with tboot and use this copy instead of the one in the
   ACPI table.
-  At this point, tboot and TXT are out of the picture until a
   shutdown (S<n>)
-  In order to put a system into any of the sleep states after a TXT
   launch, TXT must first be exited.  This is to prevent attacks that
   attempt to crash the system to gain control on reboot and steal
   data left in memory.

   -  The kernel will perform all of its sleep preparation and
      populate the shared page with the ACPI data needed to put the
      platform in the desired sleep state.
   -  Then the kernel jumps into tboot via the vector specified in the
      shared page.
   -  Tboot will clean up the environment and disable TXT, then use the
      kernel-provided ACPI information to actually place the platform
      into the desired sleep state.
   -  In the case of S3, tboot will also register itself as the resume
      vector.  This is necessary because it must re-establish the
      measured environment upon resume.  Once the TXT environment
      has been restored, it will restore the TPM PCRs and then
      transfer control back to the kernel's S3 resume vector.
      In order to preserve system integrity across S3, the kernel
      provides tboot with a set of memory ranges (RAM and RESERVED_KERN
      in the e820 table, but not any memory that BIOS might alter over
      the S3 transition) that tboot will calculate a MAC (message
      authentication code) over and then seal with the TPM. On resume
      and once the measured environment has been re-established, tboot
      will re-calculate the MAC and verify it against the sealed value.
      Tboot's policy determines what happens if the verification fails.
      Note that the c/s 194 of tboot which has the new MAC code supports
      this.

That's pretty much it for TXT support.


Configuring the System
======================

This code works with 32bit, 32bit PAE, and 64bit (x86_64) kernels.

In BIOS, the user must enable:  TPM, TXT, VT-x, VT-d.  Not all BIOSes
allow these to be individually enabled/disabled and the screens in
which to find them are BIOS-specific.

grub.conf needs to be modified as follows::

        title Linux 2.6.29-tip w/ tboot
          root (hd0,0)
                kernel /tboot.gz logging=serial,vga,memory
                module /vmlinuz-2.6.29-tip intel_iommu=on ro
                       root=LABEL=/ rhgb console=ttyS0,115200 3
                module /initrd-2.6.29-tip.img
                module /Q35_SINIT_17.BIN

The kernel option for enabling Intel TXT support is found under the
Security top-level menu and is called "Enable Intel(R) Trusted
Execution Technology (TXT)".  It is considered EXPERIMENTAL and
depends on the generic x86 support (to allow maximum flexibility in
kernel build options), since the tboot code will detect whether the
platform actually supports Intel TXT and thus whether any of the
kernel code is executed.

The Q35_SINIT_17.BIN file is what Intel TXT refers to as an
Authenticated Code Module.  It is specific to the chipset in the
system and can also be found on the Trusted Boot site.  It is an
(unencrypted) module signed by Intel that is used as part of the
DRTM process to verify and configure the system.  It is signed
because it operates at a higher privilege level in the system than
any other macrocode and its correct operation is critical to the
establishment of the DRTM.  The process for determining the correct
SINIT ACM for a system is documented in the SINIT-guide.txt file
that is on the tboot SourceForge site under the SINIT ACM downloads.