throbber
USOO7716638B2
`
`(12) United States Patent
`Thornton
`
`(10) Patent No.:
`(45) Date of Patent:
`
`US 7,716,638 B2
`May 11, 2010
`
`(54) METHODS FOR DESCRIBING PROCESSOR
`FEATURES
`
`(75) Inventor: Andrew J. Thornton, Seattle, WA (US)
`
`(73) Assignee: Microsoft Corporation, Redmond, WA
`(US)
`
`(*) Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 1245 days.
`
`(21) Appl. No.: 11/072.913
`
`(22) Filed:
`
`Mar. 4, 2005
`
`(65)
`
`Prior Publication Data
`US 2006/02O0663 A1
`Sep. 7, 2006
`
`(51) Int. Cl.
`G06F 9/44
`(2006.01)
`G06F 9/45
`(2006.01)
`G06F 5/76
`(2006.01)
`G06F 9/30
`(2006.01)
`G06F 7/38
`(2006.01)
`(52) ck ('s) 717/149.771ss.
`712/15: 712/43; 712/228; 712/229; 718/108
`(58) Field of Classification Search ............... ... None
`See application file for complete search history.
`References Cited
`
`(56)
`
`U.S. PATENT DOCUMENTS
`5,825,649 A * 10/1998 Yoshimura ................... TOO/82
`
`5,961,642 A * 10, 1999 Lewis ............................ T13/1
`6,061,709 A * 5/2000
`... 718,103
`6.253,317 B1* 6/2001 Knapp et al. ................ T12/244
`6,981,135 B1
`12/2005 Trask ............................ T13/1
`7,076,647 B2* 7/2006 Roth et al. .....
`... 713,100
`7,130,977 B1 * 10/2006 Christie et al. ........
`... 711,163
`7,478,394 B1* 1/2009 de Dinechin et al. ........ T18, 108
`2005/0049985 A1* 3/2005 Mangasarian et al. ......... TO6/45
`2005/007618.6 A1* 4/2005 Traut ............................. 712/1
`2005, 01499.19 A1* 7, 2005 Rothman et al. ..
`... 717,162
`2005/0273571 A1* 12/2005 Lyon et al. ........
`... 711,203
`2006/0031060 A1
`2/2006 Weissmann .................. 703/27
`2006/0069878 A1* 3/2006 Aguilar et al. .............. T11 147
`2006/0101470 A1* 5/2006 Swanberg ......
`... T18, 105
`2006/0136653 A1* 6/2006 Traut et al. ..................... T11 ?6
`2007/0244941 A1* 10, 2007 Reed et al. .................. 707,205
`
`* cited by examiner
`
`Primary Examiner Tuan Q Dam
`Assistant Examiner—Isaac T Tecklu
`(74) Attorney, Agent, or Firm Woodcock Washburn LLP
`
`(57)
`
`ABSTRACT
`
`A machine readable description of a new feature of a proces
`sor is provided by a processor vendor. Control code executing
`on a processor, such as a traditional operating system kernel,
`apartitioning kernel, or the like can be programmed to receive
`the description of the feature and to use information provided
`by the description to detect, enable and manage operation of
`the new feature.
`
`17 Claims, 10 Drawing Sheets
`
`2OO -
`
`
`
`OS 1
`204
`
`OS2
`
`OS3
`208
`
`PARTITIONING KERNEL 202
`
`CPU
`120
`
`MEMORY
`130
`
`INTERRUPTS
`210
`
`I/O PORTS
`212
`
`MSRS
`214
`
`APPLE 1019
`
`1
`
`

`

`U.S. Patent
`
`May11, 2010
`
`Sheet 1 of 10
`
`US 7,716,638 B2
`
`
`
`
`
`ALOWSY
`
`YALAdWOO
`
`
`
`WIOMISNBallySpIA\\
`
`fi
`
`|
`
`
`
`setSWVWYSOud
`
`!\|LZLI1|\
`
`
`
`soeparuy06r.Soeayu¢“PELA[96Jayk-—jesaydiuagHeyl!velWwaysrs
`
`
`
`
`
`
`YIOMISNaoeyayuj@deH9}U]NowayyKiowayywesBosdJaYIO
`
`
`
`
`
`Ballye907)YIOMANyndy|sasna[}EJOA-UONJINE|IOA-UON
`OztoorOSTaoeyayu)pLaoepayu}9ELsainpoyy
`
`
`NOILVOIddVL"©)i4JLOWSY
`S61
`
`indinoOaplABuissao01gBuneedoBulssa00lg
`
`LOLZpcraShr|—asnolvivaNoo3|Sivsooud
`
`|sellms
`
`alqeaowayBIGEAOWAY-UON
`
`sorydessyjequagZeb(WVY)
`WYY9O0udYSHLONOILVOIMNddV|ONILVWYSdO
`
`
`
`
`
`
`L6}JoWUOW
`
`[Stssayeadssuyayeadsk——
`
`
`
`LZL|SNGWa}SAS
`
`Tjawey
`
`
`
`SELswesBosq
`
`uoneaddy
`
`weiBoid
`
`ejeq
`
`
`
`vel(Woy
`
`2
`
`
`
`
`
`
`
`
`
`
`

`

`U.S. Patent
`
`May 11, 2010
`
`Sheet 2 of 10
`
`US 7,716,638 B2
`
`2OO -
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`OS1
`204
`
`OS2
`206
`
`OS3
`208
`
`PARTITIONING KERNEL 202
`
`CPU
`120
`
`MEMORY
`130
`
`INTERRUPTS
`210
`
`I/O PORTS
`212
`
`MSRS
`214
`
`FIG. 2
`
`MEMORY
`306
`
`
`
`SECURE
`MEMORY
`
`SECURE
`LOADER
`304
`
`SECURE
`LOADER
`304"
`
`FIG. 3
`
`3
`
`

`

`U.S. Patent
`U.S. Patent
`
`May 11, 2010
`May11, 2010
`
`Sheet 3 of 10
`Sheet 3 of 10
`
`US 7,716,638 B2
`US 7,716,638 B2
`
`ff ©
`
`402
`
`404
`
`406
`406
`
`402 404
`
`
` 408
`
` 412
`
`4.08
`
`410
`410
`
`412
`
`414
`414
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`FG. 4
`FIG. 4
`
`4
`
`

`

`U.S. Patent
`
`May 11, 2010
`
`Sheet 4 of 10
`
`US 7,716,638 B2
`
`typedef struct FEATURE BLOB
`
`UINT32 Version;
`UINT32 Size;
`
`UCHAR vendor String 12); // as returned by CPUIDCO). EBX: ECX: EDX
`UINT32 Model Count;
`PROCESSOR-ID MATCH Model);
`
`FEATURE BLOB, *PFEATURE BLOB;
`FIG. 5a
`
`typedef struct PROCESSOR-ID MATCH
`UINT32 FamilyModel Stepping;
`UINT32 FamilyModel Stepping Mask;
`UINT32 FamilyModel SteppingMatch;
`
`// as returned by CPUID (1). EAX
`
`PROCESSORID MATCH, *PPROCESSOR ID MATCH;
`FIG. 5b
`
`typedef struct FEATURE-HEADER
`{
`
`FEATURESECTION TYPE Type;
`UINT32 version;
`UINT32 Size;
`
`FEATURE-HEADER, *PFEATURE-HEADER;
`
`typedef enum FEATURESECTION TYPE
`{
`FeatureDiscovery,
`Feature Enable,
`FeatureDisable,
`Feature Registers,
`FeatureSignature,
`FeatureAdvertise,
`
`} FEATURE SECTION TYPE, PFEATURESECTION TYPE;
`F.G. 6
`
`5
`
`

`

`U.S. Patent
`
`May 11, 2010
`
`Sheet 5 of 10
`
`US 7,716,638 B2
`
`typedef struct CPUID MATCH
`{
`
`UINT32 Leaf; - value in EAX when CPUID issued
`
`// Mask and Match values over CPUID CLeaf). EAX, EBX ECX, EDX
`
`UINT32 EaxMask;
`UINT32 EaxMatch;
`UINT32 EbXMask;
`UINT32 EbXMatch;
`UINT32 ECXMask;
`UINT32 EcxMatch;
`UINT32 EdixMask,
`UINT32 ECXMatch;
`
`CPUID. MATCH, PCPUID MATCH;
`
`FIG. 7a
`
`typedef enum ADDRESS-SPACE
`{
`Control Registers,
`Model SpecificRegisters,
`Local ApicRegisters
`// Memory offsets relative to APIC BASEMSR
`
`ADDRESS SPACE, *PADDRESS-SPACE;
`
`typedef struct BITS64
`{
`
`UINT64 Mask;
`UINT64. Match;
`BITS64, “PBITS64;
`
`FIG. 7b
`
`FIG. 7C
`
`typedef struct REGISTER-BITS64
`{
`ADDRESS-SPACE Address Space;
`UINT32 Register Number;
`BITS64 Bits;
`
`} REGISTERBITS64, *PREGISTER BITS64;
`
`G
`F
`7d
`
`6
`
`

`

`U.S. Patent
`
`May 11, 2010
`
`Sheet 6 of 10
`
`US 7,716,638 B2
`
`typedef struct FEATURE DISCOVERY
`{
`
`FEATURE HEADER Feature;
`
`CPUID. MATCH CpuidMatch;
`
`UINT32 Register Count;
`REGISTER BITS64 Registers (); // Registers will be checked in this order
`
`FEATURE DISCOVERY., PFEATURE DISCOVERY;
`F.G. 8
`
`typedef struct FEATURE-ENABE
`
`FEATURE-HEADER Feature;
`UINT32 EnableRegisterCount;
`REGISTER BITS64 EnableRegisters); // Registers will be enabled
`A? in this order and will be
`f/ disabled in reverse order
`A/ of no disable section is present.
`
`FEATURE ENABLE, *PFEATURE ENABLE;
`
`FIG. 9a
`
`typedef struct FEATURE DISABLE
`{
`
`FEATURE-HEADER Feature;
`UINT32 DisableRegisterCount;
`REGISTER-BITS64 Disable Registers (); // Registers will be disabled
`A/ in this order
`
`FEATURE DISABLE * PFEATURE DISABLE
`
`FG.9b
`
`7
`
`

`

`U.S. Patent
`
`May 11, 2010
`
`Sheet 7 of 10
`
`US 7,716,638 B2
`
`typedef struct -FEATURE-REGISTERS
`{
`
`FEATURE HEADER Feature;
`UINT32 RegisterCount;
`FEATURE REGISTER Registers); // Saves are done in the order specified,
`// restores in the reverse order
`FEATURE REGISTERS, *PFEATURE REGISTERS;
`
`FIG. 10a
`
`typedef struct FEATURE REGISTER
`ADDRESS-SPACE AddressSpace;
`UINT32 RegisterNumber;
`
`UINT64 Register BitsMask;
`
`// Indicates bits of the register
`// related to feature
`UINT64. UntrustedReadMask; // Indicates bits untrusted code
`// shouldn't read
`UINT64. UntrustedwriteMask; // Indicates bits untrusted code
`// shouldn't write
`
`// Indicates the register state should
`UINT32 SwitchWithThread: 1;
`// be context switched with the thread
`UINT32 SwitchWith Processor:l; // or partition.
`// Thread switch implies partition
`// switch.
`UINT32 LazyProcessorSwitchok: 1; // Indicates registers have no run time
`// side effects and can be lazily
`// switched when accessed.
`
`3 FEATURE REGISTER, *PFEATURE REGISTER;
`
`FIG. 1 Ob
`
`8
`
`

`

`U.S. Patent
`
`May 11, 2010
`
`Sheet 8 of 10
`
`US 7,716,638 B2
`
`typedef struct FEATURE ADVERTISE
`//
`// Globally Unique ID used by software to identify the feature.
`// It could also be used to find an internationalized friendly
`// name.
`//
`GUID FeatureGUID;
`
`//
`// NUL terminated string used to describe the feature in UI if
`// a locale specific one can't be found.
`//
`UCHAR Feature FriendlyName 256);
`
`FEATURE ADVERTISE, *PFEATURE ADVERTISE;
`
`FIG. 11
`
`9
`
`

`

`U.S. Patent
`
`May 11, 2010
`
`Sheet 9 of 10
`
`US 7,716,638 B2
`
`//
`// All errors are reported using Get LastError C)
`//
`
`BOOL
`CheckFor Processor Feature (
`IN GUID FeatureGuid,
`OUT PBOOL Feature Present
`
`//
`// Enable and Disable apply to the current thread
`//
`BOOL
`Enable Processor Feature (
`IN GUID FeatureGuid
`D;
`
`BOOL
`Disable Processor Feature C
`IN GUID FeatureGuid
`D;
`
`F.G. 12
`
`NTSTATUS
`KeCheckForProcessor Feature C
`// Threads are 32 or 64 bit and
`IN PKTHREAD Thread,
`// some features may also be.
`IN GUID Featured uid,
`OUT PBOOLEAN Feature Present
`D;
`
`NTSTATUS
`Kenable Processor Feature C
`IN PKTHREAD Thread,
`IN GUID FeatureGuid
`D;
`
`NESTATUS
`KeDisable Processor Feature C
`IN PKTHREAD Thread,
`IN GUID Featured uid
`);
`
`F.G. 13
`
`10
`
`

`

`U.S. Patent
`
`May 11, 2010
`
`Sheet 10 of 10
`
`US 7,716,638 B2
`
`
`
`1402
`
`OBTAIN FEATURE
`DESCRIPTION AND VERIFY
`SGNATURE
`
`1404
`
`VERIFY FEATURE APPLIES TO
`PROCESSOR USING INFORMATION
`IN PROCESSOR SECTION
`
`1406 - PROCESS DETECTSECTION
`TOVERIFY PRESENCE OF
`FEATURE
`
`1408
`
`PROCESS ENABLE SECTION
`TOENABLE FEATURE
`
`1410
`
`PROCESS CONTEXT SECTION TO
`DENTIFY PROCESSOR STATE
`ASSOCIATED WITH FEATURE
`
`1412
`
`MODIFY CONTEXT SWITCH
`CODE TO INCORPORATE
`IDENTIFIED STATE
`
`1414
`
`RETURN GUID AND TEXTUAL
`DESCRIPTION IN RESPONSE TO
`CLIENT OUERIES
`
`FIG. 14
`
`11
`
`

`

`US 7,716,638 B2
`
`1.
`METHODS FOR DESCRIBING PROCESSOR
`FEATURES
`
`FIELD OF THE INVENTION
`
`The present invention relates to processors used in com
`puting systems, and more particularly, to a method for pro
`viding a machine readable description of a new feature imple
`mented in a given model or family of processors to enable a
`computing system to detect, enable and manage operation of
`the new feature without any a priori knowledge of it.
`
`10
`
`BACKGROUND
`
`2
`processor available to a computing system so that the system
`can detect, enable and manage operation of the new feature.
`The present invention satisfies this need.
`SUMMARY OF THE INVENTION
`
`The present invention is directed to a machine readable
`description of a new feature of a processor, as embodied in a
`computer readable medium, a method of generating same,
`and a method of using the machine readable description to
`detect, enable and manage operation of the feature in a com
`puting system. Control code executing on a processor, such as
`a traditional operating system kernel, a partitioning kernel, or
`the like can be programmed to receive the description of the
`feature and to use information provided by the description to
`detect, enable and manage operation of the new feature. With
`the present invention, a processor Vendor can implement new
`features in Successive releases of a processor model without
`requiring a kernel Vendor to release a corresponding update to
`the kernel software with each new processor release. Instead,
`a machine readable description of a new feature can provide
`the information necessary for the kernel to support the fea
`ture.
`In one embodiment, the machine readable description of
`the feature comprises a section that stores information that
`identifies a type of processor in which the feature is imple
`mented and another section containing information that can
`be processed to detect presence of the feature within a pro
`cessor of the identified type. The description may also com
`prise another section that stores information that can be pro
`cessed to enable operation of the feature within a processor of
`the identified type. The description may further comprise
`another section that stores information that can be processed
`to disable operation of the feature within a processor of the
`identified type. The description may also comprise a section
`that stores information identifying state within a processor of
`the identified type that is associated with the feature. Such
`information may further identify whether the state must be
`saved prior to the processor Switching context between two
`threads of execution or switching context between two virtual
`processors in a system employing a partitioning kernel. The
`description may further comprise a section that stores an
`identifier associated with the feature and a textual description
`of the feature, as well as a section that stores a digital signa
`ture computed over at least a portion of the description. The
`signature can be processed to confirm the provenance of the
`description.
`Other features of the present invention will become evident
`hereinafter.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`The foregoing Summary and the following detailed
`description of the invention are better understood when read
`in conjunction with the appended drawings. Exemplary
`embodiments of the invention are shown in the drawings,
`however it is understood that the invention is not limited to the
`specific methods and instrumentalities depicted therein. In
`the drawings:
`FIG. 1 is a block diagram of an exemplary computing
`system in which aspects of the present invention may be
`practiced;
`FIG. 2 is a block diagram of another exemplary computing
`system in which aspects of the present invention may be
`practice;
`FIG. 3 is a block diagram of yet another exemplary com
`puting system in which aspects of the present invention may
`be practiced;
`
`15
`
`Microprocessor vendors typically develop a family of pro
`cessors designed around a given processor architecture and
`then continuously evolve the architecture. For example, Intel
`Corporation has developed several generations of processors
`around its x86 architecture, the most recent being the PEN
`TIUM(R) family of microprocessors. Similarly, Advanced
`Micro Devices, Inc. has developed families of processors
`designed around its X64 architecture. Often a processor ven
`dor will add a feature to an existing model or family of
`processors. Examples of new features that have been added to
`a processor family include the Physical Address Extension
`(PAE), MMX instructions, and streaming SIMD extensions
`(SSE) features added to the PENTIUM(R) family of proces
`SOS.
`Features that add additional bits to existing registers within
`a processor, that add new registers to the processor, or that
`require additional processor State to be saved and restored
`across processor context switches can be problematic for both
`processor vendors and developers of operating systems
`designed to execute on Such a processor. In particular, in order
`for an operating system to use Such a feature or to make Such
`a feature available to application programs, the kernel of the
`operating system must be modified to Support the new fea
`ture. This is true of both traditional operating system kernels,
`such as the kernel of the WINDOWS(R) operating system
`available from Microsoft Corporation, and so-called parti
`tioning kernels that provide partitioned execution environ
`ments for multiple 'guest operating systems. Because these
`kinds of new features require Support in the kernel, the intro
`duction of such a feature by a processor vendor is effectively
`gated on the release of an updated version of the kernel.
`The existence of new features in a processor presents addi
`tional problems for partitioning kernels. A partitioning kernel
`provides a separate, partitioned execution environment for
`each of multiple 'guest operating systems running on a
`single computing system. While each operating system runs
`in a separate partition, it appears to each operating system that
`it has full control of the underlying processor and other sys
`tem components. In reality, the partitioning kernel presents
`one or more separate, virtualized processors to each operating
`system. It is important in Such a system to prevent secrets
`from leaking between partitions and to prevent one partition
`from corrupting the state of another partition. However, if a
`new feature has been implemented in a processor on which
`the partitioning kernel is running and that feature adds new
`registers or additional bits to existing registers or adds to the
`processor State that must be saved during a context Switch
`from one partition to another, the potential to leak secrets
`between partitions or for one partition to corrupt the state of
`another exists. Thus, it is particularly important for a parti
`tioning kernel to be aware of any such new feature.
`Thus, there is a need for a mechanism by which a processor
`Vendor can make information concerning a new feature of a
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`12
`
`

`

`US 7,716,638 B2
`
`3
`FIG. 4 graphically illustrates a machine readable descrip
`tion of a feature of a processor, in accordance with one
`embodiment of the present invention;
`FIGS. 5a and 5b describe one embodiment of a format of a
`section of the description of FIG. 4;
`FIG. 6 describes one embodiment of a format of a header
`that is included in various sections of the machine readable
`description of FIG. 4;
`FIGS. 7a through 7d together describe one embodiment of
`a format of certain fields of the sections illustrated in FIGS. 8
`and 9:
`FIG. 8 describes one embodiment of a format of yet
`another section of the description of FIG. 4;
`FIG. 9a describes one embodiment of a format of another
`section of the description of FIG. 4;
`FIG.9b describes one embodiment of yet another section
`of the description of FIG. 4;
`FIGS. 10a and 10b together describe one embodiment of a
`format of still another section of the description of FIG. 4;
`FIG. 11 describes one embodiment of a format of another
`section of the description of FIG. 4;
`FIG. 12 describes an exemplary application programming
`interface (API) that can be provided to expose a processor
`feature to an application program and to allow the application
`program to request that the feature be enabled;
`FIG. 13 describes a similar API that can be provided by an
`operating system kernel to expose a processor feature to
`drivers and other kernel mode program modules and to allow
`those modules to request that the feature be enabled; and
`FIG. 14 is a flow diagram illustrating one embodiment of a
`method of processing a description of a feature of a processor,
`in accordance with the present invention.
`
`10
`
`15
`
`25
`
`30
`
`4
`gram code' and “code” refer to any set of instructions that are
`executed or otherwise processed by a processor. The term
`“program module” refers to program code and/or data in the
`form of routines, programs, objects, components, data struc
`tures and the like that perform particular functions or imple
`ment particular data types. The term “data structure” refers to
`an organization of pieces of information or data. Examples of
`data structures include but are not limited to files, lists, arrays,
`records, trees, objects and tables. A data structure can com
`prise a single structure having a plurality of sections or fields
`of information or can comprise a collection of separate pieces
`of information organized in some manner. The term "kernel
`refers to any form of code executing on a processor to control
`the operation of a computing system, including without limi
`tation traditional operating system kernels, such as the ker
`nels of the WINDOWSR) family of operating systems avail
`able from Microsoft Corporation, the kernel of the
`MACINTOSHR) operating system available from Apple
`Computer, Inc. and the LINUX kernel, as well as partitioning
`kernels discussed below and illustrated in FIG. 2.
`Referring to FIG. 1, the exemplary computing system 100
`comprises a central processing unit 120, a graphics process
`ing unit 125, a system memory 130, and a system bus 121 that
`couples various system components including the system
`memory to the processing unit 120. The system bus 121 may
`be any of several types of bus structures including a memory
`bus or memory controller, a peripheral bus, and a local bus
`using any of a variety of bus architectures. By way of
`example, and not limitation, such architectures include Indus
`try Standard Architecture (ISA) bus, Micro Channel Archi
`tecture (MCA) bus, Enhanced ISA (EISA) bus, Video Elec
`tronics Standards Association (VESA) local bus, and
`Peripheral Component Interconnect (PCI) bus (also known as
`Mezzanine bus).
`Computing system 100 may include a variety of computer
`readable media. Computer readable media can be any avail
`able media that can be accessed by computing system 100 and
`includes both volatile and nonvolatile, removable and non
`removable media. By way of example, and not limitation,
`computer readable media may comprise both computer Stor
`age media and communication media. Computer storage
`media includes both volatile and nonvolatile, removable and
`non-removable media implemented in any method or tech
`nology for storage of information or data. Computer storage
`media includes, but is not limited to, random access memory
`(RAM), read-only memory (ROM), Electrically-Erasable
`Programmable Read-Only Memory (EEPROM), flash
`memory or other memory technology, memory cards,
`memory sticks, compact disc read-only memory (CDROM),
`digital versatile disks (DVD) or other optical disk storage,
`magnetic cassettes, magnetic tape, magnetic disk storage or
`other magnetic storage devices, or any other medium which
`can be used to store the desired information and which can be
`accessed by computing system 100. Communication media
`typically a carrier wave or other transport mechanism or
`signal that is modulated to transmit information, including
`program code and data, from one location to another. The
`term “modulated signal” means a signal that has one or more
`of its characteristics set or changed in Such a manner as to
`encode information in the signal. By way of example, and not
`limitation, communication media includes wired media Such
`as a wired network or direct-wired connection, and wireless
`media Such as acoustic, radio frequency (RF), infrared, and
`other wireless media. Combinations of any of the above are
`also be included within the scope of computer readable
`media.
`
`DETAILED DESCRIPTION OF THE INVENTION
`
`35
`
`40
`
`The present invention is directed to a machine readable
`description of a new feature of a processor, a method of
`generating same, and a method of using the machine readable
`description to detect, enable and manage operation of the
`feature in a computing system. An operating system kernel, a
`partitioning kernel, or the like can be programmed to receive
`the description of the feature and to use information provided
`by the description to detect, enable and manage operation of
`the new feature. With the present invention, a processor ven
`45
`dor can implement new features in Successive releases of a
`processor model without requiring a kernel Vendor to release
`a corresponding update to the kernel software with each new
`processor release. Instead, a machine readable description of
`a new feature can provide the information necessary for the
`kernel to support the feature.
`Exemplary Computing Systems
`FIG. 1 illustrates the functional components of one
`example of a computing system 100 in which aspects of the
`present invention may be embodied or practiced. As used
`herein, the terms “computing system.” “computer system.”
`and “computer refer to any machine, system or device that
`comprises a processor capable of executing or otherwise pro
`cessing program code and/or data. Examples of computing
`systems include, without any intended limitation, personal
`computers (PCs), minicomputers, mainframe computers, thin
`clients, network PCs, servers, workStations, laptop comput
`ers, hand-held computers, programmable consumer electron
`ics, multimedia consoles, game consoles, satellite receivers,
`set-top boxes, automated teller machines, arcade games,
`mobile telephones, personal digital assistants (PDAs) and any
`other processor-based system or machine. The terms “pro
`
`50
`
`55
`
`60
`
`65
`
`13
`
`

`

`5
`The system memory 130 includes computer storage media
`in the form of volatile and/or nonvolatile memory such as
`ROM 131 and RAM 132. A basic input/output system 133
`(BIOS), containing the basic routines that help to transfer
`information between elements within computing system 100,
`such as during start-up, is typically stored in ROM 131. RAM
`132 typically contains data and/or program modules that are
`immediately accessible to and/or presently being operated on
`by processing unit 120. By way of example, and not limita
`tion, FIG. 1 illustrates operating system 134, application pro
`grams 135, other program modules 136, and program data
`137. The operating system may comprise a kernel 139. RAM
`132 may contain other data and/or program code as well.
`The computing system 100 may also include other remov
`able/non-removable, Volatile/nonvolatile computer storage
`media. By way of example only, FIG. 1 illustrates a hard disk
`drive 141 that reads from or writes to non-removable, non
`Volatile magnetic media, a magnetic disk drive 151 that reads
`from or writes to a removable, nonvolatile magnetic disk 152,
`and an optical disk drive 155 that reads from or writes to a
`removable, nonvolatile optical disk 156, such as a CD ROM,
`DVD or other optical media. The computing system 100 may
`also incorporate various means for writing to and reading
`from any of the other forms of computer readable media
`described above. The hard disk drive 141 is typically con
`nected to the system bus 121 through a non-removable
`memory interface Such as interface 140, and magnetic disk
`drive 151 and optical disk drive 155 are typically connected to
`the system bus 121 by a removable memory interface, such as
`interface 150.
`The drives and their associated computer storage media
`discussed above and illustrated in FIG. 1 provide storage of
`program code, data structures, program modules and other
`data for the computing system 100. In FIG. 1, for example,
`hard disk drive 141 is illustrated as storing operating system
`144, application programs 145, other program modules 146.
`and program data 147. Note that these components can either
`be the same as or different from operating system 134, appli
`cation programs 135, other program modules 136, and pro
`gram data 137. Operating system 144, application programs
`145, other program modules 146, and program data 147 are
`given different numbers here to illustrate that, at a minimum,
`they are different copies. A user may enter commands and
`information into the computing system 100 through input
`devices such as a keyboard 162 and pointing device 161,
`commonly referred to as a mouse, trackball or touch pad.
`Other input devices (not shown) may include a microphone,
`joystick, game pad, satellite receiver, Scanner, or the like.
`These and other input devices are often connected to the
`processing unit 120 through a user input interface 160 that is
`coupled to the system bus 121, but may be connected by other
`interfaces and bus structures, such as a parallel port, game
`port or a universal serial bus (USB).
`A monitor 191 or other type of display device is also
`connected to the system bus 121 via an interface. Such as a
`video interface 190. In addition to monitor 191, computers
`may also include other peripheral output devices such as
`speakers 197 and printer 196, which may be connected
`through an output peripheral interface 195.
`The computing system 100 may operate in a networked
`environment using logical connections to one or more remote
`computers, such as a remote computer 180. The remote com
`puter 180 may be a personal computer, a server, a router, a
`network PC, a peer device or any other type of computing
`system, and typically includes many or all of the elements
`described above relative to the computing system 100,
`although only a memory storage device 181 has been illus
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`US 7,716,638 B2
`
`10
`
`15
`
`6
`trated in FIG. 1. The logical connections depicted in FIG. 1
`include a local area network (LAN) 171 and a wide area
`network (WAN) 173, but may also include other networks.
`Such networking environments are commonplace in offices,
`enterprise-wide computer networks, intranets and the Inter
`net.
`When used in a LAN networking environment, the com
`puting system 100 is connected to the LAN 171 through a
`network interface or adapter 170. When used in a WAN net
`working environment, the computing system 100 typically
`includes a modem 172 or other means for establishing com
`munications over the WAN 173, such as the Internet. The
`modem 172, which may be internal or external, may be con
`nected to the system bus 121 via the user input interface 160,
`or other appropriate mechanism. In a networked environ
`ment, program modules depicted relative to the computing
`system 100, or portions thereof, may be stored in the remote
`memory storage device. By way of example, and not limita
`tion, FIG. 1 illustrates remote application programs 185 as
`residing on memory device 181. It will be appreciated that the
`network connections shown are exemplary and other means
`ofestablishing a communications link between the computers
`may be used.
`FIG. 2 is a block diagram illustrating another exemplary
`computing system 200 in which aspects of the present inven
`tion may be embodied or practiced. The computing system
`200 comprises a partitioning kernel 202 that provides a sepa
`rate, partitioned execution environment for each of multiple
`'guest' operating systems (e.g., 204, 206 and 208) running on
`the same processor 120. Each guest operating system can be
`a different operating system or can be a different instance of
`the same operating system. Other than the partitioning kernel
`202, the computing system 200 may generally comprise the
`same system components as the computing system 100 of
`FIG.1. While each guest operating system runs in a separate
`partition, it appears to each operating system that it has full
`control of the underlying processor 120 and other compo
`nents of the system, such as the memory 130, interrupts 210,
`input/output ports 212, and model specific registers (MSRs)
`214 which are shown separately but which are part of the
`processor 120. In reality, the partitioning kernel presents one
`or more separate, virtualized processors together with some
`or all of the computing environment described in FIG. 1 to
`each operating system 204, 206 and 208. It is important in
`Such a system to prevent Secrets from leaking between parti
`tions and to prevent one partition from corrupting the state of
`another partition. However, as mentioned above, if a new
`feature has been implemented in new release of the processor
`120 on which the partitioning kernel is running and that
`feature adds new registers or additional bits to existing reg
`isters or adds to the processor state that must be saved during
`a context Switch from one partition to another, the potential to
`leak secrets between partitions or for one partition to corrupt
`the State of another exists. Thus the partitioning kernel is
`forced to disallow guest access to any registers orbits within
`registers that are not defined when it is written. It is therefore
`particularly important for a partitioning kernel to be aware of
`any such new feature as it gates their availability to any guest
`operating system.
`FIG. 3 is a block diagram illustrating at least a portion of
`yet another exemplary computing system 300 in which
`aspects of the present invention may be embodied or prac
`ticed. Again, although not shown in FIG. 3, the computing
`system 300 may generally comprise all or some of the same
`components as the computing systems 100, 200 shown in
`FIGS. 1 and 2. As shown, in this system, program code that
`implements a loader function 304 may be executed from
`
`14
`
`

`

`7
`within secure storage in the processor 302 itself. Alterna
`tively, a secure loader 304 (shown in dashed lines) may be
`executed from a secure region 308 of the system memory that
`is protected from modification. In either case, the secure
`loader (304 or 304) cannot be tampered with and is consid
`ered part of the trusted computing base. The secure loader
`(304 or 304") functions to load other code from a memory 306
`during boot-up of the computing system, Such as code to carry
`out the boot-up process or code comprising all or part of an
`operating system, so that the loaded code can be executed by
`the processor. As described hereinafter, the process of loading
`a machine readable description of a new processor feature and
`confirming its provenance inaccordance with an aspect of the
`present invention may be implemented as part of a secure
`loader, such as secure loader 304.
`Machine Readable Description of a Feature of a Proc

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket