CN1636190A - 对多体系组件软件的***管理模式加载程序和执行机制 - Google Patents

对多体系组件软件的***管理模式加载程序和执行机制 Download PDF

Info

Publication number
CN1636190A
CN1636190A CNA028096703A CN02809670A CN1636190A CN 1636190 A CN1636190 A CN 1636190A CN A028096703 A CNA028096703 A CN A028096703A CN 02809670 A CN02809670 A CN 02809670A CN 1636190 A CN1636190 A CN 1636190A
Authority
CN
China
Prior art keywords
button
onrelease
processor
hidden
execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA028096703A
Other languages
English (en)
Other versions
CN1318970C (zh
Inventor
文森特·齐默
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1636190A publication Critical patent/CN1636190A/zh
Application granted granted Critical
Publication of CN1318970C publication Critical patent/CN1318970C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种使以一个或者多个软件驱动程序或者固件卷方式的可执行内容能够被加载进微处理器的***管理模式(SMM)或者基于Itanium处理器的本机模式的方法和***。该机制允许可能由不同方编写的多个驱动程序被安装用于这些操作。一个注册由驱动程序提供的事件处理程序的代理在EFI引导服务模式中运行,它由绑定了驱动程序的CPU特定的组件和抽象对应事件触发条件的xMI(PMI或者SMI)信号的芯片组控制的平台组件组成。从而,通过除了OEM之外的其他方编写的附加驱动程序,各种处理器的SMM模式和Itanium处理器的本机模式的功能能够从***的BIOS厂商的计算机***被扩展。

Description

对多体系组件软件的***管理模式加载程序和执行机制
技术领域
本发明一般地涉及计算机***,具体地涉及一种用于扩展处理器的***管理模式(SMM)和其他类似模式的功能性的机制。
背景技术
自从英特尔(Intel)公司推出386SL型处理器以来,作为一种被隐藏至操作***、执行由基本输入输出***(BIOS)或者固件加载的代码的操作模式,SMM一直用于IA32处理器。SMM是一种为处理像电源管理、***硬件控制或者原始设备制造商(OEM)设计的专有代码这样的***级功能而提供的特定用途操作模式。由于操作***(OS)和软件应用程序不能看到,或者甚至不能访问它,所以该模式被认为是“隐藏的”。
通过SMI(***管理中断)信号触发,IA32处理器能够进入SMM。一种大致类似于SMI信号,被称为PMI(处理器管理中断)信号的相似信号被用于ItaniumTM类处理器。简化起见,这里SMI和PMI信号有时都被称为xMI信号。
迄今,善用上述Intel处理器的SMM性能的大多数BIOS实现仅仅注册单段在建立BIOS过程中创建的代码,以支持对于使用BIOS的***特殊的特定功能或者一系列功能。该代码包括IA32中的16位汇编和用于Itanium处理器的64位汇编。为响应所有xMI触发,用于这些遗留实现的单代码段自始至终运行着。
现今的***中没有注册或者执行第三方SMM代码的规定,因而不允许扩展SMM结构。但这种扩展经常是想要的。例如,如果原始设备制造商(OEM)或者BIOS厂商为指定平台提供的SMM代码提供的功能不足,开发者或者增值经销商(VAR)不得不要么许可来自BIOS厂商或者OEM的现有代码并试图将他们自己的逻辑移植至他们的SMM代码实现中,要么忍受这种不足,因为目前的SMM架构没有提供一种修改或者扩展单代码段提供的功能的替换方式。另外,现今在IA32处理器上的实现限于处理器的16位模式,因而限制了代码长度和对32位或者64位软件工程技术的合理利用。而且,由于SMM经常被用于芯片组工作区(例如,产生由于芯片组或者CPU中的设计或者制造缺陷引起的错误的和/或者不可预料的结果的CPU或者芯片组勘误表),这种关键软件更新的能力被BIOS厂商或者OEM的整体的BIOS实现控制了。
在现今的环境中,大多数芯片组厂商选择让操作***厂商利用OS驱动程序集成这种工作区。一般,SMM功能的BIOS更新实现上还存在问题,而且,由于通过自身的驱动模型,OS已经具有硬件可扩展性机制,所以BIOS厂商和OEM很少去积极提供这些类型的BIOS更新。
附图说明
结合附图,参考下面的详细描述,本发明的前述方面和伴随的许多优点更容易被意识到,同时也更好理解;其中:
图1是举例说明本发明的一个能使各种事件处理程序(event handler)加载进隐藏的内存空间并且被执行来响应一个SMI或者PMI(xMI)事件的示例性的实现的示意图;
图2是举例说明当处理xMI事件时,本发明使用的逻辑的流程图;
图3是举例说明当加载和开始***管理模式(SMM)核心(Nub)的执行时,本发明使用的逻辑的流程图,该***管理模式核心当处理器以SMM运行时,被用来管理事件处理;
图4是举例说明SMM核心的各种功能和服务组件的方框图;
图5是举例说明当注册事件处理程序时,本发明使用的逻辑的流程图;
图6是举例说明当注册和安装存储在预引导处理过程中被扫描的固件卷(firmware volume)中的事件处理程序时,本发明使用的逻辑的流程图;
图7是举例说明当注册用于服务ItaniumTM处理器的处理器管理中断(PMI)事件的事件处理程序时,本发明执行的操作的流程图;
图8是举例说明当处理PMI事件时,本发明执行的操作的流程图;以及
图9是适合实现本发明的个人计算机***的示意图。
具体实施方式
在下面的描述中,为了使本发明的实施例被彻底理解,会提供许多具体的细节。然而,相关领域的技术人员将认识到,缺少一个或者多个具体的细节,或者利用其他方法、组件等,本发明也能被实行。在其他情况下,没有详细地示出或者描述公知的结构或者操作,以避免混淆本发明的各种实施例的方面。
本说明书中凡提及“一个实施例”或者“实施例”,表示结合该实施例描述的具体的特点、结构或者特征包括在本发明的至少一个实施例中。因此,本说明书中出现在各处的“一个实施例中”或者“实施例中”的字样,未必都是指同一个实施例。而且,在一个或者多个实施例中,具体的特点、结构或者特征可以以任何适当的方式结合。
本发明提供了一种机制,使得以一个或者多个软件驱动程序方式的可执行内容能够被加载进Intel 32位系列微处理器(即,IA-32处理器)的***管理模式(SMM),或者用PMI信号触发的基于Itanium处理器的本机模式(native mode)。在IA32 SMM中代码的执行状态是被SMI信号初始化的,而在ItaniumTM处理器中该状态是被PMI信号触发初始化的;简化起见,这些一般都被称为SMM。该机制允许可能由不同方编写的多驱动程序被安装用于SMM操作。一个注册驱动程序的代理在EFI(可扩展固件接口)引导服务模式(即,操作***启动前的模式)中运行,它由绑定驱动程序的CPU特定(CPU-specific)的组件和抽象xMI(PMI或者SMI)信号的芯片组控制的平台组件组成。提供这一系列功能的API(应用程序接口)分别被称为SMM基础(SMM Base)和SMM访问(SMMAccess)协议。
在一般的SMM实现中,在交出控制权之前,SMM空间经常被平台软件/固件/BIOS通过硬件机制锁定;这样赋予固件抽象这种绑定的控制和安全的能力。相反,通过本发明提供的SMM访问协议,软件抽象使该设备的使用者不必知道和理解确切的硬件机制,因而使得驱动程序是跨平台可移植的。
如以下提供的进一步详细介绍,本发明包括下面的特征:一个供驱动程序使用的SMM中的库,包括I/O访问抽象和内存分配服务;一种以非SMM模式执行的与驱动程序和应用程序通信的方法;一个以给定频率周期性触发的可选择参数;一种在被加载进SMM过程中验证驱动程序的方法;一种关闭注册权的能力;一种在许多处理器接收xMI触发的多处理器环境中运行的能力;以及最后,将遗留IA32 SMM代码当作一种特殊注册的事件处理程序来运行的能力。本***的一个特点在于所有事件处理程序都在ItaniumTM本机处理器模式中运行,或者在IA32情况下,当以实模式(即,16位模式)运行可选择的遗留IA32处理程序时,在调用事件处理程序前,结构将使处理器进入32位平坦(flat 32)模式。
本发明的一个示例性实现的高级示图在图1中被描述。通过使用EFI结构该实现成为可能,该结构为操作***和平台固件之间的接口定义了一新模型。接口由包含有与平台相关的信息的数据表组成,加上操作***及其加载程序可用的引导和运行时间服务调用。同时,这些提供了引导操作***和运行预引导应用程序的标准环境。
产生SMM可扩展性结构的过程在方框10中被初始化,其中,用具体例子说明了SMM可扩展性结构。这包括在方框12中的安装EFI SMM基础协议驱动程序。EFI SMM基础协议,即SMM_BASE,是CPU特定的协议,由CPU驱动程序或者另一能够抽象IA32或者Itanium处理器的ISA特定(ISA-specific)的细节的代理公布。一旦被安装,SMM_BASE在方框14中公布SMM处理程序注册服务。该处理程序注册服务的公布使得遗留和附加的驱动程序在方框22中注册SMM事件处理程序,其中驱动程序被存储在各种存储设备上,包括EFI***分区16和BIOS闪存芯片18,以及通过网络20被访问的存储设备上。除了这些类型的存储设备,驱动程序还可以保存在其他的实施本发明的计算机***可访问的持久性存储设备上,包括基于主板的ROM、包含在附加的外设卡上的选项ROM、本地硬盘以及CD ROM,这些都用固件卷23共同描述。(注意,EFI***分区16、BIOS闪存芯片18和驱动程序6驻留的远程存储设备也可以包括固件卷。)如图1中描述的,这些驱动程序包括存储在EFI***分区16中的遗留(legacy)驱动程序1和附加(add-on)驱动程序2、存储在BIOS闪存芯片18上的附加驱动程序3、4和5以及通过网络20由远程存储设备(例如,文件服务器)访问的附加驱动程序6。如这里用到的,术语“附加的”对应于没有被提供如该***的原始设备制造商(OEM)所提供的计算机***的原始固件的驱动程序和固件文件。
在一种可选择的模式中,EFI SMM基础协议驱动程序可以扫描各种固件卷来识别任何通过SMM为服务xMI事件而被指定的驱动程序。在一个实施例中,这些驱动程序通过它们的文件类型来识别,例如,作为例子的“DRIVER7.SMH”文件25对应附加驱动程序7。
在EFI SMM基础协议驱动程序的安装过程中,SMM核心24被加载进包括只用于SMM(SMM-only)内存空间的SMRAM 26中。如以下被进一步详细解释的,当控制权被转移给SMM时,SMM核心24负责协调所有活动,包括为事件处理程序提供SMM库28,该库包括PCI和I/O服务30、内存分配服务32和配置表注册34。
注册SMM事件处理程序是使处理程序能够执行被设计要执行的具体xMI事件服务功能的第一步。SMM事件处理程序包括一组代码(即,被编码的机器指令),该代码被***处理器(CPU)执行时,以类似于中断服务例程的方式执行事件服务功能。一般,每个SMM事件处理程序将包含服务具体的硬件组件或者子***,或者具体的一类硬件的代码。例如,SMM事件处理程序可以被提供来服务***实时时钟引起的错误、I/O端口错误、PCI设备错误等。一般,给定的驱动程序和SMM事件处理程序之间可以有某种对应。然而,这并不是严格的要求,因为处理程序可以包括一系列从单个的驱动程序文件或者对象中提取的功能块。
当服务于遗留驱动程序1的事件处理程序被注册时,它被作为遗留处理程序加载进SMRAM 26中。遗留处理程序是一种事件处理程序,一般被提供了原始***固件,并且代表处理xMI事件的传统机制。当各附加SMM事件处理程序在方框22中被注册时,它被加载进SMRAM 26的附加SMM事件处理程序部分38;一旦所有的附加事件处理程序被加载,附加SMM事件处理程序部分28就包括一系列如方框42所描绘的对应于附加驱动程序2-7的事件处理程序。另外,当各SMM事件处理程序被注册时,也可能在方框44中选择性地被验证,以确保事件处理程序对计算机***的具体的处理器和/或者固件的使用是合法的。例如,一种实现公共密钥的加密方法可以被使用。当SMM事件处理程序被注册时,它们也被加入由SMM核心24维护的处理程序列表46中。
一旦所有的遗留和附加的SMM事件处理程序都已经被注册并被加载进SMRAM 26中,而且正确的配置数据(元数据)被写入SMM核心24,则SMRAM被锁定,阻止另外的SMM事件处理程序注册。该***现在已经准备好通过SMM处理各种xMI事件。
参考图1和图2,用IA32处理器处理xMI事件的过程进行如下:在方框54中,xMI事件信号48被CPU 50接收。在IA32多处理器环境中,xMI事件信号被各处理器接收。一般,对于IA32处理器,xMI(SMI)事件可以是响应引起IA32处理器进入SMM的***芯片组上的引脚、总线周期类型或者处理器间中断(IPI)的触发而产生的。对于ItaniumTM处理器,xMI事件可以是响应引起ItaniumTM处理器返回物理模式并执行为服务PMI事件而向PAL(处理器抽象层)注册的代码的***芯片组上的引脚、总线周期类型或者IPI的触发而产生的。
响应xMI事件,CPU 50切换为SMM模式,并且将指令指针重新指向SMM核心24中的第一指令,SMM核心在这里开始执行,如方框55所提供的。在判断框56中,判断***是否是多处理器***。如果答案为“是”,所有处理器在方框57中被同步,因此,当被选定的处理器中的SMM核心被执行时,除了该选定的处理器(例如,预引导过程中被识别的第一处理器)之外,所有处理器都被停止。然后各CPU的机器状态在方框58中被CPU硬件和SMM核心24保存。
接着,在判断框59中,判断是否存在已经被注册并加载的任何遗留16位处理程序。如果存在,对应于那些遗留处理程序的代码在方框60中被执行。然后,在方框61中机器执行模式被切换为Flat 32保护模式。该保护模式包括具有未分页32位、基于零寻址的Flat 32模式。
一旦执行模式切换完成,本机32位处理程序被依次调度(dispatch),直至适当的事件处理程序被执行完毕以服务xMI事件,如图2中的开始循环和结束循环方框62和63以及图1中方框52提供的。在一个实施例中,事件处理程序被保存为从头到尾依次游历的链表,其中第一个事件处理程序被调度,另外的事件处理程序根据需要被调度。各事件处理程序包含有用来判断该处理程序是否是服务xMI事件的适当处理程序的第一部分代码,如判断框64提供的。这类典型的判断包括询问对应于该事件处理程序的硬件组件、子***等,查看对象是否发生错误。如果错误已经发生,事件处理程序在方框65中被执行完毕,于是在返回框66中,它再返回一个代码至SMM核心,表示它已经服务了xMI事件。如果事件处理程序判断它的对应设备没有引起错误,它也返回一个代码至SMM核心表示这一点,并且SMM核心调度列表中的下一个事件处理程序。该过程被重复,直至适当的事件处理程序被执行。
获悉xMI事件被处理,SMM核心恢复机器状态,并且执行对于该处理器/所有处理器适当的指令(对于IA32的RSM),以使处理器在方框67中返回至它(们)以前的处理模式。
参考图3,用于IA32处理器的EFI SMM基础协议驱动程序(SMM_BASE)通过下面过程安装。首先,在方框68中SMM_BASE::Initialize服务被调用。这是利用加载并输出该构造器的DXE(驱动执行环境)引导服务驱动程序来实现的。
对应实例化驱动程序,当在保护模式中操作时,用于SMM核心24的启动代码在CPU缺省SMRAM地址处(0x3000段,偏移0x8000)被加载进SMRAM。然后,在方框69中,处理器模式在执行地址0x38000p处转换为实模式。接着,在方框70中,用于平台的SMRAM实现所允许的地址范围被确定和分配。通过利用SMM_BASE::Initialize驱动程序调用SMM_ACCESS::GetCapabilities和SMM_ACCESS::AcquireSmramRange方法可以得到该信息,如下所述。如果该驱动程序不存在,则缺省策略将会是缺省大小(对于IA32是128千字节和对于ItaniumTM是256千字节)的用于IA32处理器的0xA000段和用于ItaniumTM处理器的运行时间数据。
地址范围被分配后,在方框71中SMM_ACCESS::Open服务被调用,并且在方框72中SMRAM的初始地址从缺省的CPU地址(0x38000p)被重新定位至平台地址。被重定位的代码将包括一个实模式组件和一个保护模式组件。实模式组件将包括进入SMRAM重定位地址的SMMEntry。在方框73中,该代码在必要的时候被执行以完成任何遗留服务,并将处理器切换为保护模式操作。然后,在方框74中控制权被交给SMM核心。
如以上讨论的,当处理器以SMM运行时,SMM核心24负责协调活动。图4中用图描述了SMM核心24提供的各种功能和服务。这些功能和服务包括同步对于多处理器配置的所有处理器、保存机器状态,包括需要时的浮点注册,以及清空缓存,如功能框75、76和78所提供的。SMM核心也提供了将处理器模式由实模式切换为保护模式的模式切换功能80,如以上参考方框73所讨论的。模式切换功能80也能使能处理器的内部缓存。SMM核心24提供的其他功能包括在SMRAM 26中建立调用栈,维护处理程序列表以及依次调用处理程序,如功能框82、84和86所描述的。
SMM核心24通过SMM库28为各种事件处理程序提供一系列服务,包括PCI和I/O服务30,内存分配服务32和配置表注册服务34。另外,SMM核心24还提供在xMI事件被服务之后被实施的若干功能。如果计算机***实施了多处理器配置,这些处理器通过功能88被释放。功能90还原处理器的机器状态,包括需要时的浮点注册。最后,功能92用来在***中所有处理器上执行RMS指令。
如以上讨论的,本发明提供了加载事件处理程序的两种机制:(1)基于驱动程序的安装;和(2)从固件卷中自主加载。
对于基于驱动程序的安装,通过DXE调度程序加载的驱动程序将安装SMM_BASE协议。SMM_BASE协议被安装后,公布一个使事件处理程序被注册和加载的接口。注册协议由EFI 1.0说明书描述,它定义了一种在EFI环境中公布新的可调用的接口的机制。SMM_BASE协议公布实质上包括用EFI核心揭示在SMM-CIS(描述EFI 2.0协议或者在预引导空间中抽象这种注册机制的API设置的EFI 2.0文档或者SMM“组件接口说明”)中描述的API。EFI核心维护GUID/接口指针对的协议数据库。GUID包括接口的128位全球唯一ID。
通过该机制,当SMM_BASE协议被安装后,希望安装事件处理程序的任何驱动程序都能应用EFI 1.0的标准机制来发现SMM_BASE协议实例(通过核心服务“定位协议(LocateProtocol)”)或者向要被使得处于待命状态的EFI核心注册通知,其中在一个实施例中,事件处理程序是某些代码,可以是IA32或者ItaniumTM指令集中的PE32+二进制代码,或者是用于IA32的遗留16位处理程序代码。任一情况下,一旦SMM_BASE协议被安装,各种驱动程序可以排列接口指针至SMM_BASE实例(通过EFI 1.0“处理协议(HandleProtocol)服务”),然后调用SMM_BASE::Register服务。使用SMM_BASE服务的驱动程序所用的二进制代码能从它自己的驱动程序映像、来自磁盘的文件或者网络来确定。文件可以在固件卷中或者在FAT磁盘分区上。
通过SMM_BASE::Register服务,事件处理程序的注册更容易。该服务包括允许事件处理程序注册的DXE引导服务驱动程序。参考图5,注册事件处理程序的过程在方框100中开始,其中注册事件处理程序的请求通过SMM_BASE协议驱动程序从另一个引导服务驱动程序或者应用程序(即,驱动程序1-7)被接收。作为响应,在方框102中,利用IPI或者SMM_CONTROL协议,SMI被产生。利用ESP内存栈指针,自变量在内存栈被传送,似乎是调用另一处理程序。处理程序可以用C和生成的映像PE32+来编写。接着,在方框104中进行内存重定位,并且ST(来自EFI1.0的***表)指针被指向SMST(***管理***表)的指针替换。
接着,在方框106中,用SMM_ACCESS::Open服务,SMRAM被打开,它是通过SMM_ACCESS协议访问。下面的附录给出了SMM_ACCESS协议的进一步的细节。SMM_ACCESS::Open服务从基于非SMRAM的代码中抽象了内存控制器的程序指令,实现了SMRAM可见性。这使得SMM_BASE协议能将代码,例如SMM核心,复制和安装进SMRAM中。
接着,在判断框108中,判断是否有足够的SMRAM可用来容纳事件处理例程。如果没有足够的SMRAM内存空间是可用的,逻辑进行到方框110,其中有一调用程序被使得处于待命状态。作为一个选择,响应被使得处于待命状态,调用程序可以用SMM_ACCESS::GetCapabilities和SMM_ACCESS::AcquireSmramRange方法来获得SMRAM中额外的内存空间。如果没有足够的SMRAM内存空间可用,在错误返回框114中,通过调用SMM_ACCESS::Close方法,SMRAM被关闭,并且向调用程序返回一个错误代码。
如果判断为有足够的SMRAM内存空间可用,在方框116中,用于处理程序的SMRAM映像的内存缓冲区被分配。在判断框118中,判断分配是否成功。如果分配没有成功,逻辑进行到错误返回框114。如果分配成功,在方框120中,事件处理程序的映像被加载进先前被分配的SMRAM内存空间。然后在判断框122中,判断映像是否是有效的。如果不是,逻辑进行到错误返回框114。如果映像被验证是有效的,在方框124中,SMM核心24通过将其加入它的处理程序列表46中,注册该新的事件处理程序,并且在返回框126中,SMRAM被关闭,过程返回到调用程序。
从固件卷中自主加载事件处理程序的机制并不依赖于使另一个驱动程序使用SMM_BASE接口和SMM_BASE::Register服务。不是使驱动程序初始化注册程序,而是在预引导过程中被具体化(materialize)的各种固件卷(FV)被扫描来找到包含有通过SMM_BASE驱动程序加载的事件处理程序的适当的驱动程序文件。
固件卷是固件文件的集合。除了在固件文件头中的其他元数据,固件卷中的每一个固件文件都具有类型字段(TYPE field)。一个被称为“SmmHandler”的新类型被包括在固件文件头内的类型字段的列举中。理解了固件卷和固件文件***,实现和公布SMM_BASE接口的所有驱动程序都将知道ReadFile服务和这种新类型。
参考图6,该机制开始于方框130,其中SMM_BASE驱动程序搜索预引导过程中在***中被具体化的所有固件卷。如开始循环框和结束循环框132和134定义的,下面的逻辑被应用于这些固件卷的其中每一个。在判断框136中,判断固件卷是否包括任何与固件文件***一致的固件文件。如果答案是“否”,逻辑循环返回检测下一个固件卷。如果找到了一个或者多个一致的固件文件,利用下面的过程,这些文件的其中每一个都被检测,如开始循环框和结束循环框138和140定义的。在判断框142中,SMM_BASE驱动程序检测当前文件的文件类型,以确定它是否是“SMMHandle”文件。如果不是,逻辑循环返回开始下一个文件的检测。如果文件类型是“SMMHandler”,在方框144中,SMM_BASE驱动程序分解固件文件节(section);节是固件文件内的内部打包机制。如方框146所提供的,如果一个节包含有PE32+可执行的映像,或者,如果SMM_BASE的实现是在支持加载遗留16位处理程序的IA32***上,则在方框146中,SMM_BASE驱动程序将安装包含在节中的可执行映像或者遗留16位处理程序,其中PE32+是微软在可移动映像(PortableImage)说明(于“www.microsoft.com/hwdev/efi”张贴在互联网上)中描述的可移动可执行映像类型,它与实现SMM_BASE的机器类型是相同的(例如,计算机***是IA32机器并且处理程序是IA32 PE32+映像)。然后,逻辑以类似方式继续处理随后的固件文件和固件卷。
一般,当从固件文件中自主加载处理程序时,SMM_BASE将假定以上提出的用于SMM_BASE::Register的自变量具有缺省值,例如浮点保存和MakeFirst==FALSE。
一般,处理IA32处理器的SMI和Itanium类处理器的PMI包括类似过程。然而,也存在着一些区别。二者之间一个主要的区别是ItaniumTM处理器没有响应它的xMI信号触发而进入的专用CPU模式。相反地,ItaniumTM处理器仅仅提供一种将处理程序绑定进处理器的机制以处理PMI事件。这种绑定通过进入处理器抽象层(PAL)的注册调用来实现,其中PAL是Intel为所有Itanium平台构建器提供的固件,包括用来提供一致的固件接口以抽象处理器实现特定(processor implementation-specific)的特征的Itanium结构的一部分。
图7和图8示出了用ItaniumTM处理器注册处理程序和处理PMI事件的细节。注册过程在方框148中开始,其中EFI 2.0 SMM_BASE驱动程序加载64位版本的SMM核心。一旦加载了SMM核心,在方框150中,EFI用内存中的Nub的被加载映像调用PAL_PMI_ENTRYPOINT服务,该服务创建了进入Nub代码的入口点。
在初始化过程中,PAL公布一系列被称为PAL_PROCS的服务。然后,这些PAL_ROCS中的一个被用于向适当的处理器特定(processor-specific)的资源,例如处理器的模型特定(processor’s model-specific)的寄存器(MSR)注册入口点。由此,入口点的注册创建了处理器和通过SMM核心被访问的一系列PMI事件处理程序之间的绑定。
参考图8,PMI事件处理于是可以如下进行。在方框154中,PAL_PMI事件处理程序接收PMI事件。然后,在方框155中,PAL_PMI事件处理程序调用SMM核心24,使得被选定执行可扩展PMI事件处理的处理器的处理被引导至以上已被注册的Nub入口点。在判断框156中,判断***是否是多处理器***。如果答案为“是”,在方框157中所有处理器被会合,由此,当被选定的处理器中的SMM核心被执行时,除了被选定的处理器(例如,预引导过程中被识别的第一处理器),所有处理器都被停止。然后,在方框158中,各CPU的机器状态被CPU硬件和SMM核心24两者保存。
一旦处理器的机器状态已经被保存,本机64位处理程序被依次调用直至适当的事件处理程序被执行完毕来服务PMI事件,如开始循环框和结束循环框162和163所提供的。如前所述,在一个实施例中,事件处理程序被保存为从头到尾依次被游历的链表,其中第一个事件处理程序被调度,另外的事件处理程序根据需要而被调度。各事件处理程序包含有用来判断该处理程序是否是服务xMI事件的适当处理程序的第一部分代码,如判断框164提供的,该判断一般包括以前面讨论过的方式询问相应的硬件组件。如果当前被执行的事件处理程序被判断为是适当的处理程序,则在方框165中该处理程序被执行完毕,于是,在返回框166中它返回一个代码至SMM核心,表示已经服务了PMI事件。如果事件处理程序判断它不是适当的PMI事件的处理程序,它也返回一个代码至SMM核心表达这一点,并且SMM核心调度列表中的下一个事件处理程序。以类似于前面讨论的SMI事件处理的方式,该过程被重复直至适当的事件处理程序被执行。
获悉PMI事件被处理,SMM核心恢复机器状态,并且执行对于处理器/所有处理器适当的指令(RSM),以使处理器在方框167中返回至它(们)以前的处理模式。
实现本发明的示例机器
参考图9,与实践本发明相关的适于使用的一般传统个人计算机200被举例说明。本发明的分布式平台固件结构也可以以类似方式在工作站、膝上型电脑和计算机服务器上实现。个人计算机200包括处理器机箱202,其中安装有软盘驱动器204、硬盘驱动器206、板上组装了包含有一个或者多个微处理器和存储器模块(二者都未示出)的适当集成电路的主板208以及电源(也未示出),如本领域的普通技术人员一般公知的。主板208还包括保存了BIOS固件基础部分的本地固件存储设备210(例如,闪烁电可擦除只读存储器(flash EEPROM))。为了方便访问通过网络214从远程固件存储设备212检索到的BIOS固件部分,个人计算机200包括一个网络接口卡216或者集成在主板208中的等价电路。网络214可以包括局域网(LAN)、广域网(WAN)和/或者互联网,并且可以提供个人计算机200和远程固件存储设备212之间的有线或者无线连接。
该机器还包括显示器218,用于显示由个人计算机运行的软件程序所产生的以及在上电自检和其他方式的固件加载/执行的过程中通常会显示的图像和文本。鼠标220(或者其他指点设备)被连接至处理器机箱202背面的串口(或总线端口),发自鼠标220的信号被传输至主板208以控制显示屏上的光标,以及选择通过在个人计算机上执行的软件程序而显示在显示器218上的文本、菜单项和图像成分。另外,键盘222被耦联至主板,以使用户输入影响在个人计算机上执行的软件程序的运行的文本和命令。
个人计算机200也可选择地包括光盘只读存储(CD-ROM)驱动器224,CD-ROM盘可以***其中,使得盘上的可执行文件和数据能够被读出,以传输至个人计算机200的内存和/或者硬盘驱动器206上的存储器里。如果基础BIOS固件被保存在可重写设备上,例如flash EEPROM,更新BIOS固件基础部分的机器指令可以保存在CD-ROM盘上或者软盘上,由计算机的处理器读出并处理,以重写保存在flash EEPROM上的BIOS固件。可更新的BIOS固件也可以通过网络214加载。
虽然本发明是结合实践它的优选方式和对其的修改来描述的,但是本领域的普通技术人员应理解,可以对本发明进行许多其他的在所附权利要求范围内的修改。所以,并不意味着本发明的范围是由以上的描述以任何方式来限定的,而是完全根据所附的权利要求来决定。
附录
用于IA32的SMM_ACCESS协议
SMM_ACCESS协议被芯片组驱动程序,即82815芯片组的MCH驱动程序公布。该驱动程序抽象了内存控制器开、关和锁定SMRAM的能力。它还描述了用于SMRAM的可能区域,包括在0xA000处的遗留帧缓冲区的定位以及在物理DRAM(T-SEG)顶部附近的内存的定位。
SMM_ACCESS协议的构造器应在ExitBootServices上注册一个回调(call-back)。SMM_ACCESS协议提供了以下功能:
SMM_ACCESS::Open
该服务从基于非SMRAM的代码中抽象了内存控制器的程序指令,实现了SMRAM可见性。这使得SMM_BASE协议能将代码,例如SMM核心,复制和安装进SMRAM中。
SMM_ACCESS::Close
该服务从基于非SMRAM的代码中抽象了内存控制器的程序指令,禁止了SMRAM可见性。这使得SMM_BASE协议能阻止其他预引导代理查看基于SMRAM的内容。
SMM_ACCESS::Lock
该服务抽象了保SMRAM安全的硬件能力,以使以后的尝试不能成功开启该区域的可见性。
SMM_ACCESS::GetCapabilities
该调用为调用程序提供了可被用作SMRAM可用内存区域,其中调用程序很可能是SMM_BASE驱动程序。这是一个公布信息的只读报告服务。SMRAM中导致对这种存储解码的芯片组程序指令以及该区域的声明,通过获得所指的区域(见下一服务)而生效。
SMM_ACCESS::AcquireSmramRange
该服务提供了两种类型的功能。第一个是它是EFI 2.0引导服务的调用程序可见的资源管理数据库。平台中可用的SMRAM的可能区域被GetCapabilities的服务SMRAM映射公布,并且该区域是可以被该服务请求使能的映射。该请求至少包括对驱动程序的所有权的更新,但是该调用还需要实际上使请求方式有效的芯片组程序指令。
SMM_ACCESS::ReleaseSmramRange
该服务提供了两种类型的功能。该请求至少包括释放区域所有权的对驱动程序的更新,但是该调用还需要实际上使请求方式无效的芯片组程序指令。

Claims (30)

1.一种用于扩展计算机***中的处理器的被隐藏的执行和存储模式的方法,包括:
提供一种使事件处理程序能够被加载进被隐藏的内存空间中的机制,所述事件处理程序没有被保存在所述计算机***的原始设备制造商提供的一组原始固件中,所述被隐藏的内存空间对于所述被隐藏的执行和存储模式是可访问的,但是对于所述处理器的其他操作模式是不可访问的;和
响应引起所述处理器被切换为所述被隐藏的执行和存储模式的事件,执行所述事件处理程序,以服务所述事件。
2.如权利要求1所述的方法,其中,所述被隐藏的执行和存储模式包括微处理器的***管理模式(SMM)。
3.如权利要求1所述的方法,其中,使能所述事件处理程序的加载和执行的所述机制包括:
提供一个被抽象的接口,所述接口使得对应于被保存在任何其中保存有所述一组原始固件的组件外部的事件处理程序的一组机器代码能够被加载进所述被隐藏的内存空间;
当所述处理器在所述被隐藏的执行和存储模式中运行时,将所述处理器的指令指针重定向,以执行所述这组机器代码来服务所述事件。
4.如权利要求3所述的方法,其中,被抽象的接口是在所述计算机***的预引导过程中被公布的,以使驱动程序能够在加载所述计算机***的操作***之前加载对应于所述事件处理程序的所述这组机器代码。
5.如权利要求1所述的方法,其中,使能所述事件处理程序的加载的所述机制包括:
扫描在所述计算机***的预引导过程中被具体化的任何固件卷,以识别包含与所述处理器的所述被隐藏的执行和存储模式兼容的事件处理程序的任何固件文件的存在;
将所述事件处理程序加载进所述被隐藏的内存空间;
当所述处理器在所述被隐藏的执行和存储模式中运行时,将所述处理器的指令指针重定向,以执行所述事件处理程序来服务所述事件。
6.如权利要求1所述的方法,还包括:
将事件处理程序管理服务加载进所述被隐藏的内存存储空间;
向所述事件处理管理服务注册一个或者多个事件处理程序;
将所述的一个或者多个事件处理程序加载进所述被隐藏的内存空间;
响应引起所述处理器被切换到所述被隐藏的执行和存储模式的事件,将所述处理器的指令指针重定向,以开始所述事件处理程序管理服务的执行;和
通过所述事件处理程序管理服务调度事件处理程序,以服务所述事件。
7.如权利要求6所述的方法,其中,多个事件处理程序向所述事件处理管理服务注册,并被加载进所述被隐藏的内存空间,还包括:
创建所述多个事件处理程序的有序列表;
调度第一个事件处理程序;
判断所述第一个事件处理程序是否是服务所述事件的适当的事件处理程序,如果是,则将所述第一个事件处理程序执行完毕,以服务所述事件;否则
调度所述列表中的下一个事件处理程序,并且判断该事件处理程序是否是适当的事件处理程序,重复该功能直至适当的事件处理程序被调度,由此该事件处理程序被执行完毕,以服务所述事件。
8.如权利要求7所述的方法,其中,所述的多个事件处理程序中的每一个包括一组被所述处理器执行的机器代码,以服务引起所述事件的计算机***中的硬件组件所产生的错误状态,和判断事件处理程序是否是服务所述事件的适当的事件处理程序,包括:
执行对应于最近被调度的事件处理程序的所述这组机器代码的第一部分,所述这组机器代码的第一部分询问对应于该事件处理程序的硬件组件,以判断所述错误状态是否是由该硬件组件引起的;和
如果判断出所述错误状态是由其对应的硬件组件引起的,则完成所述事件处理程序的所述这组机器代码的执行,否则返回一个值至所述事件处理程序管理服务,表示该事件处理程序不是服务所述错误状态的适当的事件处理程序。
9.如权利要求6所述的方法,还包括在所述事件处理程序被加载进所述被隐藏的内存空间之前对其进行验证。
10.如权利要求6所述的方法,其中,所述一组原始固件包括一个或者多个遗留事件处理程序,还包括:
向所述事件处理管理服务注册所述的一个或者多个遗留事件处理程序;
将所述的一个或者多个遗留事件处理程序加载进可以被所述被隐藏的执行和存储模式访问的所述被隐藏的内存空间;和
通过所述事件处理程序管理服务,调度所述的一个或者多个遗留事件处理程序中的至少一个,以服务所述事件。
11.如权利要求6所述的方法,其中,所述计算机***包括多个处理器,还包括:
将所述事件处理程序管理服务加载进所述的多个处理器中被选定的一个处理器;
响应所述事件,使所述被选定的处理器开始执行所述事件处理程序管理服务;
在执行所述事件处理程序管理服务的过程中,同步除了所述被选定的处理器之外的其他所有所述的多个处理器,并且停止这些其他处理器中的每一个的各自当前操作的执行;
在所述事件被适当的事件处理程序服务之后,将所有所述的多个处理器返回至以前的处理模式,以恢复它们各自操作的执行。
12.如权利要求1所述的方法,还包括在适当的时候,响应所述事件而使作为机器代码保存在所述一组原始固件中的任何的遗留事件处理程序能够被执行,以服务所述事件。
13.一种用于扩展计算机***中的微处理器的***管理模式(SMM)的方法,包括:
在所述计算机***的预引导过程中,公布一个接口使得被保存在其中保存有一组原始固件的组件的外部的驱动程序能够提供一组包括被加载进***管理模式内存(SMRAM)中的事件处理程序的机器代码,所述***管理模式内存在***管理模式中对于所述微处理器是可访问的;
响应***管理模式触发事件,将所述微处理器切换为***管理模式;和
执行所述事件处理程序以服务***管理模式触发事件。
14.如权利要求13所述的方法,还包括:
将事件处理程序管理服务加载进***管理模式内存;
向所述事件处理管理服务注册一个或者多个事件处理程序;
将所述的一个或者多个事件处理程序加载进***管理模式内存;
响应***管理模式触发事件,将所述微处理器的指令指针重定向,以开始所述事件处理程序管理服务的执行;和
通过所述事件处理程序管理服务调度事件处理程序,以服务所述事件。
15.如权利要求14所述的方法,其中,多个事件处理程序被向所述事件处理管理服务注册,并被加载进***管理模式内存,还包括:
创建所述多个事件处理程序的有序列表;
调度第一个事件处理程序;
判断所述第一个事件处理程序是否是服务***管理模式触发事件的适当的事件处理程序,如果是,则将所述第一个事件处理程序执行完毕,以服务所述事件;否则
调度所述列表中的下一个事件处理程序,并且判断该事件处理程序是否是服务***管理模式触发事件的适当的事件处理程序,重复该功能直至适当的事件处理程序被调度,由此该事件处理程序被执行完毕,以服务该***管理模式触发事件。
16.如权利要求14所述的方法,还包括在所述事件处理程序被加载进***管理模式内存之前对其进行验证。
17.如权利要求14所述的方法,其中,所述一组原始固件包括一个或者多个遗留事件处理程序,还包括:
向事件处理管理服务注册所述的一个或者多个遗留事件处理程序;
将所述的一个或者多个遗留事件处理程序加载进***管理模式内存;和
通过事件处理程序管理服务,调度所述的一个或者多个遗留事件处理程序中的至少一个,以服务对应于***管理模式触发事件的遗留事件。
18.如权利要求13所述的方法,还包括:
扫描在所述计算机***的预引导过程中被具体化的任何固件卷,以识别包含与所述微处理器的***管理模式兼容的事件处理程序的任何固件文件的存在;
将所述事件处理程序加载进***管理模式内存;以及
执行所述事件处理程序,以服务所述***管理模式触发事件。
19.一种处理处理器中的平台管理中断(PMI)的方法,包括:
将平台管理中断事件处理管理服务加载进所述处理器可访问的内存;
为所述平台管理中断事件处理管理服务注册入口点;
通过所述平台管理中断事件处理管理服务使得一个或者多个平台管理中断事件处理程序成为所述处理器可访问的;和
响应所述平台管理中断事件,引导所述处理器在其入口点开始执行所述平台管理中断事件处理管理服务,其中,所述平台管理中断事件处理管理服务的执行完成了以下功能:
调度所述的一个或者多个平台管理中断事件处理程序中的至少一个,以服务平台管理中断事件。
20.如权利要求19所述的方法,其中,通过公布使能平台管理中断事件处理程序向所述平台管理中断事件处理管理服务注册的注册接口,所述的一个或者多个平台管理中断事件处理程序成为所述平台管理中断事件处理管理服务可访问的。
21.如权利要求20所述的方法,其中,多个事件处理程序向所述平台管理中断事件处理管理服务注册,还包括:
创建所述的多个事件处理程序的有序列表;
调度第一个事件处理程序;
判断所述第一个事件处理程序是否是服务所述平台管理中断事件的适当的事件处理程序,如果是,则将所述第一个事件处理程序执行完毕,以服务所述事件;否则
调度所述列表中的下一个事件处理程序,并且判断该事件处理程序是否是服务所述平台管理中断事件的适当的事件处理程序,重复该功能直至适当的事件处理程序被调度,由此该事件处理程序被执行完毕,以服务所述平台管理中断事件。
22.如权利要求19所述的方法,其中,所述计算机***包括多个处理器,还包括:
将所述平台管理中断事件处理程序管理服务加载进所述的多个处理器中的被选定的一个处理器;
响应所述事件,使所述被选定的处理器开始执行所述平台管理中断事件处理程序管理服务;
在执行所述事件处理程序管理服务的过程中,同步除了所述被选定的处理器之外的其他所有所述的多个处理器,并且停止这些其他处理器中的每一个的各自当前操作的执行;
在所述平台管理中断事件被适当的事件处理程序服务之后,将所有所述的多个处理器返回至以前的处理模式,以恢复它们各自操作的执行。
23.一种机器可读的介质,具有多个保存在其上的机器指令,当在计算机***中被处理器执行时,进行下面的操作:
提供一种使事件处理程序能够被加载进被隐藏的内存空间中的机制,所述事件处理程序没有被保存在所述计算机***的原始设备制造商提供的一组原始固件中,所述被隐藏的内存空间对于所述处理器的被隐藏的执行和存储模式是可访问的,但是对于所述处理器的其他操作模式是不可访问的;和
响应引起所述处理器被切换为所述被隐藏的执行和存储模式的事件,执行所述事件处理程序,以服务所述事件。
24.如权利要求23所述的机器可读的介质,其中,使能所述事件处理程序的加载和执行的所述机制包括:
提供一个被抽象的接口,所述接口使得对应于被保存在任何其中保存有所述一组原始固件的组件外部的事件处理程序的一组机器代码能够被加载进所述被隐藏的内存空间;
当所述处理器在所述被隐藏的执行和存储模式中运行时,将所述处理器的指令指针重定向,以执行所述这组机器代码来服务所述事件。
25.如权利要求23所述的机器可读的介质,其中,使能所述事件处理程序的加载和执行的所述机制包括:
扫描在所述计算机***的预引导过程中被具体化的任何固件卷,以识别包含与所述处理器的所述被隐藏的执行和存储模式兼容的事件处理程序的任何固件文件的存在;
将所述事件处理程序加载进所述被隐藏的内存空间;
当所述处理器在所述被隐藏的执行和存储模式中运行时,将所述处理器的指令指针重定向,以执行所述事件处理程序来服务所述事件。
26.如权利要求23所述的机器可读的介质,其中,所述的多个机器指令的执行还进行下面的操作:
将事件处理程序管理服务加载进所述被隐藏的内存空间;
向所述事件处理管理服务注册一个或者多个事件处理程序;
将所述的一个或者多个事件处理程序加载进所述被隐藏的内存空间;
响应引起所述处理器被切换到所述被隐藏的执行和存储模式的事件,将所述处理器的指令指针重定向,以开始所述事件处理程序管理服务的执行;和
通过所述事件处理程序管理服务调度事件处理程序,以服务所述事件。
27.如权利要求26所述的机器可读的介质,其中,多个事件处理程序向所述事件处理管理服务注册,并被加载进所述被隐藏的内存空间,并且所述的多个机器指令的执行还进行下面的操作:
创建所述多个事件处理程序的有序列表;
调度第一个事件处理程序;
判断所述第一个事件处理程序是否是服务所述事件的适当的事件处理程序,如果是,则将所述第一个事件处理程序执行完毕,以服务所述事件;否则
调度所述列表中的下一个事件处理程序,并且判断该事件处理程序是否是适当的事件处理程序,重复该功能直至适当的事件处理程序被调度,由此该事件处理程序被执行完毕,以服务所述事件。
28.一种计算机***,包括:
在其上保存有一组原始固件的主板;
被可操作地耦联至所述主板,其中保存有多个机器指令的内存;和
与内存连接的处理器,用于执行机器指令以进行下面的操作:
提供一种使事件处理程序能够被加载进被隐藏的内存空间中的机制,所述事件处理程序没有被保存在所述计算机***的原始设备制造商提供的一组原始固件中,所述被隐藏的内存空间对于所述处理器的被隐藏的执行和存储模式是可访问的,但是对于所述处理器的其他操作模式是不可访问的;和
响应引起所述处理器被切换为所述被隐藏的执行和存储模式的事件,执行所述事件处理程序,以服务所述事件。
29.如权利要求28所述的计算机***,其中,使能所述事件处理程序的加载和执行的所述机制包括:
提供一个被抽象的接口,所述接口使得对应于被保存在任何其中保存有所述一组原始固件的组件外部的事件处理程序的一组机器代码能够被加载进所述被隐藏的内存空间;
当所述处理器在所述被隐藏的执行和存储模式中运行时,将所述处理器的指令指针重定向,以执行所述这组机器代码来服务所述事件。
30.如权利要求28所述的计算机***,其中,使能所述事件处理程序的加载和执行的所述机制包括:
扫描在所述计算机***的预引导过程中被具体化的任何固件卷,以识别包含与所述处理器的所述被隐藏的执行和存储模式兼容的事件处理程序的任何固件文件的存在;
将所述事件处理程序加载进所述被隐藏的内存空间;
当所述处理器在所述被隐藏的执行和存储模式中运行时,将所述处理器的指令指针重定向,以执行所述事件处理程序来服务所述事件。
CNB028096703A 2001-05-11 2002-05-09 对多体系组件软件的***管理模式加载程序和执行机制 Expired - Fee Related CN1318970C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/854,174 US6848046B2 (en) 2001-05-11 2001-05-11 SMM loader and execution mechanism for component software for multiple architectures
US09/854,174 2001-05-11

Publications (2)

Publication Number Publication Date
CN1636190A true CN1636190A (zh) 2005-07-06
CN1318970C CN1318970C (zh) 2007-05-30

Family

ID=25317936

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028096703A Expired - Fee Related CN1318970C (zh) 2001-05-11 2002-05-09 对多体系组件软件的***管理模式加载程序和执行机制

Country Status (7)

Country Link
US (3) US6848046B2 (zh)
KR (1) KR100729793B1 (zh)
CN (1) CN1318970C (zh)
AU (1) AU2002316088A1 (zh)
DE (1) DE10296798B4 (zh)
HK (1) HK1075718A1 (zh)
WO (1) WO2002093375A2 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105264506A (zh) * 2013-01-29 2016-01-20 惠普发展公司,有限责任合伙企业 向内存映射配置分配处理器
CN108369520A (zh) * 2016-01-25 2018-08-03 惠普发展公司,有限责任合伙企业 保护基本输入/输出(bios)代码
CN112041812A (zh) * 2018-04-27 2020-12-04 Ati科技无限责任公司 内核装置模块的实时更新

Families Citing this family (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6848046B2 (en) 2001-05-11 2005-01-25 Intel Corporation SMM loader and execution mechanism for component software for multiple architectures
US7103641B2 (en) * 2001-06-18 2006-09-05 Intel Corporation Method and apparatus for distributing computer platform firmware across a network
US7133926B2 (en) * 2001-09-28 2006-11-07 Hewlett-Packard Development Company, L.P. Broadcast compressed firmware flashing
US6760827B2 (en) * 2001-11-30 2004-07-06 Lsi Logic Corporation Method and apparatus for accessing ROM PCI memory above 64 K
US20030135744A1 (en) * 2002-01-11 2003-07-17 International Business Machines Corporation Method and system for programming a non-volatile device in a data processing system
US7065651B2 (en) * 2002-01-16 2006-06-20 Microsoft Corporation Secure video card methods and systems
US7565509B2 (en) * 2002-04-17 2009-07-21 Microsoft Corporation Using limits on address translation to control access to an addressable entity
US7058768B2 (en) * 2002-04-17 2006-06-06 Microsoft Corporation Memory isolation through address translation data edit control
US7175642B2 (en) * 2002-04-19 2007-02-13 Pelikan Technologies, Inc. Methods and apparatus for lancet actuation
US7206940B2 (en) * 2002-06-24 2007-04-17 Microsoft Corporation Methods and systems providing per pixel security and functionality
US8155314B2 (en) 2002-06-24 2012-04-10 Microsoft Corporation Systems and methods for securing video card output
JP4400059B2 (ja) * 2002-10-17 2010-01-20 株式会社日立製作所 ポリシー設定支援ツール
US7293178B2 (en) * 2002-12-09 2007-11-06 Microsoft Corporation Methods and systems for maintaining an encrypted video memory subsystem
US20040128493A1 (en) * 2002-12-27 2004-07-01 Zimmer Vincent J. Methods and apparatus for providing a firmware defined radio
US7112758B2 (en) * 2003-01-10 2006-09-26 The University Of Connecticut Apparatus and method for solution plasma spraying
US7320052B2 (en) 2003-02-10 2008-01-15 Intel Corporation Methods and apparatus for providing seamless file system encryption and redundant array of independent disks from a pre-boot environment into a firmware interface aware operating system
US20040220959A1 (en) * 2003-04-30 2004-11-04 Rothman Michael A Methods and apparatus to enable system configuration during operating system runtime
US8141052B2 (en) * 2003-05-09 2012-03-20 Microsoft Corporation Instrumenting software for enhanced diagnosability
US20040268337A1 (en) * 2003-06-30 2004-12-30 Culter Bradley G. Allowing firmware to borrow a processor
US7310724B2 (en) * 2003-06-30 2007-12-18 Intel Corporation Parallel execution of enhanced EFI based BIOS drivers on a multi-processor or hyper-threading enabled platform
US7512956B1 (en) * 2003-08-14 2009-03-31 Hewlett-Packard Development Company, L.P. System and method for supporting non-standard procedure calls
US20050086667A1 (en) * 2003-09-30 2005-04-21 Feng Jin Symmetric Scheduling for parallel execution
US7363411B2 (en) * 2003-10-06 2008-04-22 Intel Corporation Efficient system management synchronization and memory allocation
US7493435B2 (en) * 2003-10-06 2009-02-17 Intel Corporation Optimization of SMI handling and initialization
JP4839219B2 (ja) * 2003-10-24 2011-12-21 バイエル・ヘルスケア・エルエルシー 酵素的電気化学的バイオセンサ
US7533274B2 (en) * 2003-11-13 2009-05-12 International Business Machines Corporation Reducing the boot time of a TCPA based computing system when the core root of trust measurement is embedded in the boot block code
US8627294B1 (en) * 2003-11-14 2014-01-07 Oracle America, Inc. Method and apparatus for synchronization in a multiplexed arbitrary-action tracing framework
US7281240B1 (en) * 2003-11-14 2007-10-09 Sun Microsystems, Inc. Mechanism for lossless, lock-free buffer switching in an arbitrary-context tracing framework
US7502942B1 (en) * 2003-12-19 2009-03-10 Adaptec, Inc. System and method for authentication of embedded raid on a motherboard having input/output processor
US7321990B2 (en) * 2003-12-30 2008-01-22 Intel Corporation System software to self-migrate from a faulty memory location to a safe memory location
US7234054B2 (en) 2004-02-09 2007-06-19 Intel Corporation Method and apparatus for enabling platform configuration
US20050216611A1 (en) * 2004-03-29 2005-09-29 Martinez Alberto J Method and apparatus to achieve data pointer obfuscation for content protection of streaming media DMA engines
US7464862B2 (en) 2004-06-15 2008-12-16 Quickvault, Inc. Apparatus & method for POS processing
US7216189B2 (en) * 2004-07-20 2007-05-08 Hewlett-Packard Development Company, L.P. Single BIOS technique for supporting processors with and without 64-bit extensions
CA2576508A1 (en) * 2004-08-04 2006-02-16 Osa Technologies, Inc. Software and firmware adaptation for unanticipated/changing hardware environments
US7523284B1 (en) 2004-08-10 2009-04-21 American Megatrends, Inc. Method and apparatus for providing memory management within a system management mode
WO2006069492A1 (en) * 2004-12-31 2006-07-06 Intel Corporation Manageability extension mechanism for system firmware
US7581047B2 (en) * 2005-01-25 2009-08-25 American Megatrends, Inc. Usage of keyboard driver in extensible firmware interface for adding new hot keys at firmware level
US7810153B2 (en) * 2005-01-28 2010-10-05 Microsoft Corporation Controlling execution of computer applications
US7802294B2 (en) * 2005-01-28 2010-09-21 Microsoft Corporation Controlling computer applications' access to data
US7487222B2 (en) * 2005-03-29 2009-02-03 International Business Machines Corporation System management architecture for multi-node computer system
US20060294355A1 (en) * 2005-06-24 2006-12-28 Zimmer Vincent J Secure variable/image storage and access
US8806224B2 (en) * 2005-06-28 2014-08-12 Intel Corporation Low cost trusted platform
US7500094B2 (en) * 2005-10-18 2009-03-03 American Megatrends, Inc. BIOS identification, initialization and management
KR100746025B1 (ko) * 2006-01-12 2007-08-06 삼성전자주식회사 운영체제 스위칭 장치 및 방법
US7454547B1 (en) * 2006-05-16 2008-11-18 American Megatrends, Inc. Data exchange between a runtime environment and a computer firmware in a multi-processor computing system
US8011013B2 (en) * 2006-07-19 2011-08-30 Quickvault, Inc. Method for securing and controlling USB ports
US7743072B2 (en) * 2006-07-28 2010-06-22 American Megatrends, Inc. Database for storing device handle data in an extensible firmware interface environment
US8661425B1 (en) * 2006-07-28 2014-02-25 American Megatrends, Inc. Method, apparatus, and computer-readable medium for storing data associated with a firmware program
US20080040524A1 (en) * 2006-08-14 2008-02-14 Zimmer Vincent J System management mode using transactional memory
US7689733B2 (en) * 2007-03-09 2010-03-30 Microsoft Corporation Method and apparatus for policy-based direct memory access control
US20080237683A1 (en) * 2007-03-30 2008-10-02 Min Kyu S High-k trilayer dielectric device and methods
US20090119748A1 (en) * 2007-08-30 2009-05-07 Jiewen Yao System management mode isolation in firmware
US7827371B2 (en) * 2007-08-30 2010-11-02 Intel Corporation Method for isolating third party pre-boot firmware from trusted pre-boot firmware
WO2009061320A2 (en) * 2007-11-08 2009-05-14 Comodo Ca, Inc. Method and system for protecting a computer against malicious software
US8522236B2 (en) * 2007-12-28 2013-08-27 Intel Corporation Method and system for establishing a robust virtualized environment
US20090172229A1 (en) * 2007-12-28 2009-07-02 Krystof Zmudzinski Methods for selecting cores to execute system management interrupts
US7802042B2 (en) 2007-12-28 2010-09-21 Intel Corporation Method and system for handling a management interrupt event in a multi-processor computing device
US8826037B2 (en) * 2008-03-13 2014-09-02 Cyberlink Corp. Method for decrypting an encrypted instruction and system thereof
US8201163B2 (en) * 2008-07-16 2012-06-12 Dell Products, Lp Input/output transaction management during platform initiation
US8843742B2 (en) * 2008-08-26 2014-09-23 Hewlett-Packard Company Hypervisor security using SMM
US8041794B2 (en) 2008-09-29 2011-10-18 Intel Corporation Platform discovery, asset inventory, configuration, and provisioning in a pre-boot environment using web services
US8239667B2 (en) * 2008-11-13 2012-08-07 Intel Corporation Switching between multiple operating systems (OSes) using sleep state management and sequestered re-baseable memory
US8392895B2 (en) 2009-01-13 2013-03-05 Mediatek Inc. Firmware extension method and firmware builder
US8151027B2 (en) * 2009-04-08 2012-04-03 Intel Corporation System management mode inter-processor interrupt redirection
US8850601B2 (en) 2009-05-18 2014-09-30 Hewlett-Packard Development Company, L.P. Systems and methods of determining a trust level from system management mode
US8578138B2 (en) * 2009-08-31 2013-11-05 Intel Corporation Enabling storage of active state in internal storage of processor rather than in SMRAM upon entry to system management mode
US8522066B2 (en) * 2010-06-25 2013-08-27 Intel Corporation Providing silicon integrated code for a system
US9063836B2 (en) * 2010-07-26 2015-06-23 Intel Corporation Methods and apparatus to protect segments of memory
US8539245B2 (en) 2010-08-06 2013-09-17 Intel Corporation Apparatus and method for accessing a secure partition in non-volatile storage by a host system enabled after the system exits a first instance of a secure mode
US8428929B2 (en) 2010-09-30 2013-04-23 Intel Corporation Demand based USB proxy for data stores in service processor complex
US8646100B2 (en) * 2011-06-03 2014-02-04 Apple Inc. Method for executing an application in a restricted operating environment
US10325297B2 (en) 2011-11-28 2019-06-18 Dell Products, Lp Method for comparing sales performance of web sites and a system therefor
CN103150152A (zh) * 2011-12-06 2013-06-12 广东新岸线计算机***芯片有限公司 一种移动终端的外设电源管理方法和***
US9396335B2 (en) 2012-08-28 2016-07-19 Dell Products, Lp Arbitrary code execution and restricted protected storage access to trusted code
KR101821633B1 (ko) * 2013-03-14 2018-03-08 삼성전자주식회사 메모리 시스템
WO2015094176A1 (en) * 2013-12-17 2015-06-25 Intel Corporation Secure enclaves for use by kernel mode applications
US9411975B2 (en) 2014-03-31 2016-08-09 Intel Corporation Methods and apparatus to securely share data
US9703346B2 (en) 2014-06-23 2017-07-11 Intel Corporation Firmware interface with backup non-volatile memory storage
US9785801B2 (en) 2014-06-27 2017-10-10 Intel Corporation Management of authenticated variables
US20160196131A1 (en) * 2014-07-07 2016-07-07 Symphony Teleca Corporation Remote Embedded Device Update Platform Apparatuses, Methods and Systems
US9910794B2 (en) * 2014-09-26 2018-03-06 Infineon Technologies Ag Processing data
US10657262B1 (en) 2014-09-28 2020-05-19 Red Balloon Security, Inc. Method and apparatus for securing embedded device firmware
US9740492B2 (en) 2015-03-23 2017-08-22 Intel Corporation System management mode trust establishment for OS level drivers
US10705909B2 (en) * 2015-06-25 2020-07-07 International Business Machines Corporation File level defined de-clustered redundant array of independent storage devices solution
US9977682B2 (en) * 2015-12-09 2018-05-22 Intel Corporation System management mode disabling and verification techniques
US10101928B2 (en) * 2016-02-19 2018-10-16 Dell Products L.P. System and method for enhanced security and update of SMM to prevent malware injection
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US10116633B2 (en) 2016-09-16 2018-10-30 Bank Of America Corporation Systems and devices for hardened remote storage of private cryptography keys used for authentication
US10970390B2 (en) * 2018-02-15 2021-04-06 Intel Corporation Mechanism to prevent software side channels
US10824436B2 (en) * 2018-12-13 2020-11-03 Ati Technologies Ulc Hybrid configuration management using bootloader translation
CN109766126B (zh) * 2019-01-11 2022-02-01 深圳忆联信息***有限公司 多核固件加载方法、装置、计算机设备及存储介质
US11948008B2 (en) 2019-04-30 2024-04-02 Hewlett-Packard Development Company, L.P. System management memory coherency detection
US20210141903A1 (en) * 2020-11-19 2021-05-13 Sarathy Jayakumar Seamless smm global driver update base on smm root of trust

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5109329A (en) * 1987-02-06 1992-04-28 At&T Bell Laboratories Multiprocessing method and arrangement
US6193422B1 (en) * 1992-04-03 2001-02-27 Nec Corporation Implementation of idle mode in a suspend/resume microprocessor system
JPH07334372A (ja) * 1993-12-24 1995-12-22 Seiko Epson Corp エミュレートシステム及びエミュレート方法
US5581697A (en) * 1994-01-28 1996-12-03 Sun Microsystems, Inc. Method and apparatus for run-time error checking using dynamic patching
US5671422A (en) * 1994-11-14 1997-09-23 Intel Corporation Method and apparatus for switching between the modes of a processor
US6032256A (en) * 1995-01-09 2000-02-29 Bernard; Peter Andrew Power controlled computer security system and method
US6093213A (en) * 1995-10-06 2000-07-25 Advanced Micro Devices, Inc. Flexible implementation of a system management mode (SMM) in a processor
US5724589A (en) * 1995-10-13 1998-03-03 Borland International, Inc. Development system with a property-method-event programming model for developing context-free reusable software components
US6263378B1 (en) * 1996-06-03 2001-07-17 Sun Microsystems, Inc. System and method for rapid development of bootstrap device detection modules
US5949882A (en) * 1996-12-13 1999-09-07 Compaq Computer Corporation Method and apparatus for allowing access to secured computer resources by utilzing a password and an external encryption algorithm
US6262713B1 (en) * 1997-03-31 2001-07-17 Compaq Computer Corporation Mechanism and method for focusing remote control input in a PC/TV convergence system
US6633313B1 (en) * 1997-05-08 2003-10-14 Apple Computer, Inc. Event routing mechanism in a computer system
US6128732A (en) 1997-12-15 2000-10-03 Compaq Computer Corporation Implementing universal serial bus support with a minimum of system RAM
US6088804A (en) * 1998-01-12 2000-07-11 Motorola, Inc. Adaptive system and method for responding to computer network security attacks
US6681230B1 (en) * 1999-03-25 2004-01-20 Lucent Technologies Inc. Real-time event processing system with service authoring environment
DE19946959B4 (de) 1999-09-30 2009-05-07 Fujitsu Siemens Computers Gmbh Verfahren zum Laden von Daten für grundlegende Systemroutinen
US6848046B2 (en) 2001-05-11 2005-01-25 Intel Corporation SMM loader and execution mechanism for component software for multiple architectures

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105264506A (zh) * 2013-01-29 2016-01-20 惠普发展公司,有限责任合伙企业 向内存映射配置分配处理器
CN105264506B (zh) * 2013-01-29 2018-01-26 慧与发展有限责任合伙企业 向内存映射配置分配处理器
US9940291B2 (en) 2013-01-29 2018-04-10 Hewlett Packard Enterprise Development Lp Assigning processors to memory mapped configuration
CN108369520A (zh) * 2016-01-25 2018-08-03 惠普发展公司,有限责任合伙企业 保护基本输入/输出(bios)代码
CN108369520B (zh) * 2016-01-25 2022-03-08 惠普发展公司,有限责任合伙企业 保护基本输入/输出(bios)代码
CN112041812A (zh) * 2018-04-27 2020-12-04 Ati科技无限责任公司 内核装置模块的实时更新

Also Published As

Publication number Publication date
WO2002093375A2 (en) 2002-11-21
KR100729793B1 (ko) 2007-06-20
US6848046B2 (en) 2005-01-25
US20020169951A1 (en) 2002-11-14
HK1075718A1 (en) 2005-12-23
WO2002093375A3 (en) 2007-12-21
CN1318970C (zh) 2007-05-30
US7260848B2 (en) 2007-08-21
AU2002316088A8 (en) 2008-02-07
KR20040007551A (ko) 2004-01-24
AU2002316088A1 (en) 2002-11-25
DE10296798B4 (de) 2009-03-19
US20050102459A1 (en) 2005-05-12
DE10296798T5 (de) 2004-04-29
US20020169979A1 (en) 2002-11-14

Similar Documents

Publication Publication Date Title
CN1318970C (zh) 对多体系组件软件的***管理模式加载程序和执行机制
US6775728B2 (en) Method and system for concurrent handler execution in an SMI and PMI-based dispatch-execution framework
US9619279B2 (en) Operating systems sharing supervisor address space with same virtual to physical mapping for supervisor address space using same translation formula with different translation tree
CA2178581C (en) Automatic booting framework
US8201170B2 (en) Operating systems are executed on common program and interrupt service routine of low priority OS is modified to response to interrupts from common program only
US7437546B2 (en) Multiple, cooperating operating systems (OS) platform system and method
US20050114639A1 (en) Hardened extensible firmware framework to support system management mode operations using 64-bit extended memory mode processors
US8713582B2 (en) Providing policy-based operating system services in an operating system on a computing system
US20040088531A1 (en) Methods and apparatus for configuring hardware resources in a pre-boot environment without requiring a system reset
CN1700171A (zh) 提供从虚拟环境对硬件的直接访问
US8930684B2 (en) Adding a runtime service for firmware-based images for a device not known to an operating system
WO1995017716A1 (en) Object-oriented booting framework
CN1722092A (zh) Vex-虚拟扩展框架
CN105051682A (zh) 用于硬件设备的软件接口
CN105229600A (zh) 基于能力的设备驱动程序框架
Fankhauser et al. Topsy–a teachable operating system
US20040268337A1 (en) Allowing firmware to borrow a processor
US7426582B1 (en) Method, system, and apparatus for servicing PS/2 devices within an extensible firmware interface environment
JP2006522971A (ja) オペレーティングシステム
US7434231B2 (en) Methods and apparatus to protect a protocol interface
US11520597B2 (en) Operating system architecture for microkernel generations support
Giroir Zimmer et al.

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1075718

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070530

Termination date: 20160509