CN114610510A - 固件相关事件通知 - Google Patents

固件相关事件通知 Download PDF

Info

Publication number
CN114610510A
CN114610510A CN202210293219.XA CN202210293219A CN114610510A CN 114610510 A CN114610510 A CN 114610510A CN 202210293219 A CN202210293219 A CN 202210293219A CN 114610510 A CN114610510 A CN 114610510A
Authority
CN
China
Prior art keywords
firmware
notification
platform
unique identifier
globally unique
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.)
Pending
Application number
CN202210293219.XA
Other languages
English (en)
Inventor
S·加雅库玛
M·J·库马
V·J·齐默
R·普尔纳查得兰
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 CN114610510A publication Critical patent/CN114610510A/zh
Pending 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Stored Programmes (AREA)

Abstract

本公开涉及固件相关事件通知。设备可包括被配置为在平台上操作的操作系统(OS)。在设备初始化期间,平台中的固件模块可将至少一个全局唯一标识符(GUID)加载到固件配置表中。当平台向OS发送通知时,平台可将至少一个GUID加载到平台通知表中,并且可在平台通知表的状态字段中设置平台通知位。在检测到通知时,OS管理模块可通过查询平台通知表来建立通知的来源。平台通知位可使OS管理模块将平台通知表和固件配置表中的GUID进行比较。服务可基于任何匹配GUID而被调用。如果没有GUID匹配,则可基于设备中的固件变量来调用服务。

Description

固件相关事件通知
本申请是针对PCT国际申请号为PCT/US2016/034739、国际申请日为2016年5月27日、进入中国国家阶段的申请号为201680030397.6,题为“固件相关事件通知”的申请的分案申请。
技术领域
本公开内容涉及设备内通信,更具体地涉及用于将源自固件的通知发布到操作系统的设备中的系统。
背景技术
在计算设备中,“平台”可包括其上可执行操作系统(OS)的装备和/或软件。例如,当设备被初始化(例如,引导、重引导等)时,固件可加载到平台中以提供OS可以用来与平台中的装备进行交互的软件驱动程序、实用程序、接口等。在设备初始化期间加载的固件传统上提供用于设备的基线操作。然而,随着计算设备技术的发展,由固件提供的功能也在不断发展。现代固件不仅加载可能对设备操作和OS/硬件交互而言是必需的驱动程序、实用程序等,而且还可提供诸如保护措施之类的经增强的功能。例如,固件可被配置成加载验证随后加载的程序的已知的好程序,并然后在设备的存储器内的安全区域中加密这些已知的好程序,并由此确保没有恶意的软件(例如,恶意软件)可在计算设备最易受攻击的时候(例如,在还没有OS级安全软件被加载的初始化期间)危害计算设备。此外,固件可进一步能够监视计算设备中的装备变化(例如,外围设备的增加和减少)并确定装备变化是安全的(例如,所添加的设备是否在白名单中)。
虽然上述功能的好处是显而易见的,但是实现这种类型功能的方式却不是显而易见的。基于通用可扩展固件接口(UEFI)的固件可提供“运行时间”特征(例如,在计算设备可操作时在后台操作的程序),该“运行时间”特征可有效地实现诸如上文所描述的功能,并且因此,不会负面地影响计算设备的性能。其可与诸如基于高级配置和电源接口(ACPI)标准的字节代码进行比较,该字节代码可以是功能性的,但由于需要软件解释器来执行代码,所以引入更多的处理开销。在执行各操作时,固件可能需要向OS通知各种事件,诸如,例如潜在安全漏洞、设备中的硬件改变等。但是,基于UEFI的固件虽然效率更高,但不包含用于向设备中的OS生成通知的有效工具。
附图简述
随着以下具体实施方式继续,并且在参考附图之后,要求保护的主题的各实施例的特征和优点将变得明显,在附图中相似的标号指定相似的部件,并且其中:
图1例示了根据本公开的至少一个实施例的被配置成用于固件相关事件通知的示例设备;
图2例示了根据本公开的至少一个实施例的设备可用的示例配置;
图3例示了根据本公开的至少一个实施例的中断源查询的示例;
图4例示了根据本公开的至少一个实施例的可扩展固件接口通知(EFIN)表的示例;
图5例示了根据本公开的至少一个实施例的可扩展固件接口平台通信信道(PCC)共享的存储器空间的示例;
图6例示了根据本公开的至少一个实施例的示例可扩展固件接口物理基础控制寄存器和可扩展固件接口运行时间范围控制寄存器;
图7例示了根据本公开的至少一个实施例的用于生成和接收固件相关通知的示例操作;以及
图8例示了根据本公开的至少一个实施例的用于生成关于设备中的外围设备拓扑变化的事件通知的示例操作。
虽然下列具体实施方式将参考说明性实施例来进行,但是,许多替代方案、修改以及变体对本领域技术人员将是显而易见的。
详细描述
本公开涉及固件相关事件通知。一般而言,设备可至少包括被配置为在平台上操作的操作系统(OS)。最初,在设备初始化(例如,引导)期间,平台中的固件模块可将至少一个全局唯一标识符(GUID)加载到设备中的固件配置表中。在正常操作期间,可能需要向OS通知在平台中发生的某些事件。在事件发生时(例如,基于外围设备拓扑变化),固件模块可与消息收发接口交互以使得向OS生成通知。例如,固件模块可将与事件相关的至少一个GUID加载到设备中的共享存储器空间内的平台通知表中,并且也可在平台通知表中的状态字段中设置平台通知位。然后可生成通知,该通知可被OS中的OS管理模块(OSMM)检测。OSMM可通过例如查询平台通知表来建立通知的来源。一旦确定平台通知位已被设置,OSMM就可将设置在平台通知表和固件配置表中的GUID进行比较。如果确定两个表中至少有一个GUID是匹配的,则可基于匹配的GUID来调用服务。替换地,可基于设备中设置的固件变量(例如,响应于OSMM发出的GetVariable()指令而返回)来调用服务。根据本公开,使用,例如,物理范围表和物理掩码表可至少保护平台通知表免受未经授权的改变。
在至少一个实施例中,用于生成固件相关事件通知的示例设备可至少包括存储器模块、固件模块和处理模块。存储器模块可至少包括共享存储器空间。固件模块可将消息收发接口的至少一部分加载到共享存储器空间中,并可使得消息收发接口向设备中的OS生成通知。处理模块可至少基于从OS接收到的指令来执行设备中的操作,操作系统包括OSMM以至少对由消息收发接口呈现的通知作出反应。
在设备的初始化期间,固件模块可执行以下至少一者:将至少一个全局唯一标识符和相应的服务标识符条目加载到固件配置表中或生成至少一个固件变量。固件配置表可基于,例如,统一可扩展固件接口(UEFI)标准。固件模块可在通知被生成之前将至少一个GUID加载到共享存储器空间中的平台通知表中。平台通知表可基于,例如,高级配置和电源接口(ACPI)标准。通知可以是,例如,系统控制中断(SCI)。在至少一个示例实现中,平台通知表可由物理基础控制寄存器或物理掩码控制寄存器中的至少一者来保护。固件模块可进一步在平台通知表的状态字段中设置至少一个平台通知位。
在至少一个实施例中,OSMM可使得处理模块通过至少查询平台通知表来发现通知的来源。响应于确定在平台通知表中设置有平台通知位,OSMM可使得处理模块确定是否平台通知表中的至少一个GUID与固件配置表中加载的任何GUID相同。响应于确定平台通知表中的至少一个GUID与固件配置表中加载的任何GUID都不相同,OSMM将使得处理模块从固件配置表中请求固件变量。OSMM可然后使得处理模块基于与被确定与固件配置表中的GUID相匹配的平台通知表中的GUID对应的服务标识符,或被返回的固件变量,来调用操作系统中的至少一个服务。
在至少一个实施例中,可基于在设备中检测到的外围设备拓扑变化来生成通知。根据本公开,用于生成固件相关通知的示例方法可包括:配置设备中的固件配置表,确定需要向设备中的操作系统生成来自设备中的平台的通知,配置设备中的平台通知表以及生成通知。根据本公开,用于接收固件相关通知的示例方法可包括:接收在设备中的操作系统处的通知,至少基于查询设备中的平台通知表来发现通知的来源,以及确定平台通知位是否已经被设置在平台通知表的状态字段中。
图1例示了根据本公开的至少一个实施例的被配置成用于固件相关事件通知的示例设备。最初,以下可参考或可使用通常与用于实现固件(例如,UEFI)的某些技术相关联的术语,来实现可提供设备内通信(例如,ACPI)的接口。本文使用这些参考仅仅是为了解释,并不旨在将根据本公开的各实施例限制为任何特定的实现方式。虽然这些示例技术为理解各实施例提供了基础,但是实际实施方式可采用现有的或者将来开发的其他类似技术。
一般而言,设备100可以是包括可配置为至少接收数据输入、处理数据和生成输出的资源的任何装置。设备100的示例可包括但不限于:诸如基于来自Google(谷歌)公司的基于
Figure BDA0003561043790000041
OS、来自Apple(苹果)公司的
Figure BDA0003561043790000042
或Mac
Figure BDA0003561043790000043
来自Microsoft(微软)公司的
Figure BDA0003561043790000044
OS、来自Linux基金会的
Figure BDA0003561043790000045
OS、来自Mozilla项目的
Figure BDA0003561043790000046
OS、来自Blackberry(黑莓)公司的
Figure BDA0003561043790000051
OS、来自Hewlett-Packard(惠普)公司的
Figure BDA0003561043790000052
OS、来自Symbian(塞班)基金会的
Figure BDA0003561043790000053
OS等的蜂窝手机或智能电话之类的移动通信设备;诸如类似于来自Apple公司的
Figure BDA0003561043790000054
来自Microsoft公司的
Figure BDA0003561043790000055
来自Samsung(三星)公司的Galaxy
Figure BDA0003561043790000056
来自Amazon(亚马逊)公司的
Figure BDA0003561043790000057
等的平板计算机、来自Intel(英特尔)公司的包括低功率芯片组的
Figure BDA0003561043790000058
上网本、笔记本、膝上型计算机、掌上型计算机等的移动计算设备;诸如类似于来自Samsung的Galaxy
Figure BDA0003561043790000059
的腕表形状因子计算设备、类似于来自Google公司的Google
Figure BDA00035610437900000510
的眼镜形状因子计算设备/用户界面、类似于来自Samsung公司的Gear
Figure BDA00035610437900000511
的虚拟现实(VR)耳机设备、来自Oculus VR公司的Oculus
Figure BDA00035610437900000512
之类的可穿戴设备;诸如台式计算机、服务器、以高性能计算(HPC)架构组织的计算设备组、智能电视或其他类型的“智能”设备之类的典型固定计算设备;类似于来自Intel公司的Next Unit of Computing(未来计算单元)(NUC)平台的小型形状因子计算解决方案(例如,空间有限的应用、电视机顶盒等);等等。
设备100可至少包括平台102和OS 104。平台102可至少包括例如OS104可在其上执行的硬件资源和硬件实现的软件(例如,固件)。根据本公开,接口106可提供用于交互的方式,使得至少平台102中的固件模块108能够与OS 104中的OS管理模块(OSMM)110进行交互。固件模块108可包括,例如,可配置成在设备100初始化时(例如,在初始引导期间、在重新引导期间等)实现某些代码(例如,诸如UEFI之类的运行时间应用)的硬件(例如,非易失性存储器)。OSMM 110可包括在OS 104中的负责处理平台相关事件的至少一个应用、实用程序、服务等。为了便于固件模块106与OSMM 110之间的交互,接口106可以至少包括消息收发接口112和共享存储器空间114。消息收发接口112可包括消息收发系统,诸如但不限于:能够生成可被OSMM 110观察的通知的ACPI。共享存储器空间114可在存储器中包括可由固件模块108和OSMM 110访问的至少一个位置。
在操作的示例中,在设备100的初始化期间,固件模块108可加载包括GUID的数据条目(例如元组),该数据条目可包括可被用于至少在设备100内全局地建立唯一标识符的任何数据布置和指示可由OS 104(例如,由OSMM 110)加载的服务的对应指针,如在116所例示的。在至少一个实施例中,数据条目可被加载到固件配置表中。一旦有事件在平台102中发生(诸如例如,平台102的配置的改变、安全问题等),固件模块108就可请求消息收发接口112向OS 104生成通知,如在118所示出的。消息收发接口112可接着被配置为向OS 104生成通知,如在120所示出的。在至少一个实施例中,通知可以是中断。通知可然后使得OSMM 110至少查询共享存储器空间114(如在122所示出的)以找到通知的来源。该过程的一部分可能涉及确定在与通知相对应的表中配置的GUID是否与设备初始化期间在固件配置表中最初配置的GUID相匹配。如果有任何GUID被确定为匹配,则可(例如,基于在引导配置116期间加载的数据)调用与所匹配的GUID相对应的服务。否则,可发生替换的操作,诸如,例如使用命令来获得也可能在引导配置116期间已被设置的固件变量,并且调用可能与所返回的固件变量相对应的任何服务。以上操作和结构的更具体的示例将在图3至8中被描述。
可根据图1中标识的操作和结构来实现各种益处。根据本公开,提供了可允许在OS104中执行固件触发服务的各实施例。在一些实施例中,这可通过还包括附加的基于硬件的保护的新类别的范围寄存器来实现。上述操作的可靠性可通过例如UEFI图像的数字签名和/或在(诸如那些来自Intel公司的)一些微处理器设备中发现的类似于聚合安全和管理引擎(CSME)的安全协处理器的质询/响应来实现。
执行和保护的这种组合可允许将附加功能并入固件模块108(例如,并入UEFI运行时间中),同时还解决对其攻击的顾虑。在计算机分级保护理论中,其中不同级别的特权被视为“环”,最高特权的软件/固件可在“环0”中执行。由于固件模块108的运行时间元素与OS内核驱动程序在环0中具有共同位置,使得固件运行时间对于将其作为目标的攻击者而言特别有吸引力、易受攻击等。增强固件运行时间可提供安全地利用固件运行时间(例如,UEFI运行时间)以实现附加运行时间功能的能力。为此,可利用GUID和相应的调用来暴露新的平台能力。
历史上,新的服务需要总线驱动程序、专用处理器寄存器以支持指令调用(例如,CPUID叶)、以及可能对灵活平台开发不利的其他类型的专用设备。其一个示例包括地址空间镜像,地址空间镜像通常以ACPI源语言(ASL)来实现,但可能受到ACPI机器语言(AML)虚拟机的语义的约束。端口陷入系统管理模式(SMM)的历史技术可能对大规模系统(例如,包括数百个内核,其中SMM延迟应被保持在120μs以下)具有有害影响。
根据本公开的各实施例可解决缘于不存在用于向OS 104通知有事件在平台102中发生的异步通知机制的问题,其中作为响应,OS 104可调用应用程序接口(API)或服务(例如,EFI变量服务)来促进与平台102的交互(例如,用于获得更多关于事件的信息、用于处理事件、用于向平台102发送命令等)。平台102可能需要向OS 104发送通知的一示例存在于基于地址的镜像中(例如,在基于类似于来自Intel公司的至强Xeon家族的处理器芯片组的服务器平台中)。地址镜像可有助于支持在服务器应用中的数据完整性,因为在存储器故障期间,处理器可从一个镜像式信道切换到另一镜像式信道。在设备100的初始化期间,镜像式存储器范围可被暴露给OS 104,使得OS 104可将关键代码(例如,内核空间)加载到镜像式存储器范围中以增加可靠性。然而,当镜像在故障转移期间(例如,由于存储器故障)“中断”时,可向OS 104通知此事件。根据本公开,平台102中的固件模块108的运行时间部分(例如,UEFI运行时间)可能能够向OS104通知此事件。响应于该通知,OS 104可调用平台固件API、基于UEFI变量的服务等,以找到该通知的原因并处理该原因。在另一示例中,OS 104可请求开始基于地址的存储器检查和校正操作(例如,巡检清除(patrol scrub)),并且平台102可能被要求在清除结束时向OS 104发送通知。
本文公开的各种实施例可向平台提供得到OS 104的注意而无需依赖于基于ACPI名称空间的通知的方式。替代地,可利用UEFI框架的丰富性,而无需依赖于解释ASL代码的非常有限的能力。ASL代码的局限性可能严重限制了在现代电子装备(例如,微处理器)中可用的更高级特征的部署。本文公开的各种实施例可允许使用UEFI服务,而不是平台事件的ASL名称空间代码。
考虑到存在关于可按环0特权被插入的恶意的软件(例如,恶意软件)的安全顾虑,可使用对与OS通知相关的表的条目进行的分离式或嵌入式的签名(例如,基于在调用上的基于数字认证代码的签名),使得更安全的调度程序可确保GUID标识的可执行文件可链接到某个权威(诸如UEFI安全引导中的平台密钥)。过去,安全管理模式(SMM)可保护在运行时间处的关键代码。但是,存在对在某些服务器上调用SMM可能会造成延迟/缩放问题的顾虑。例如,此类顾虑可通过以下来缓解:将对于UEFI运行时间主机嵌入式控制器接口(HECI)调用的认证(例如,经由专用的HECI驱动程序)移动到可信执行环境(TEE)中,诸如被来自Intel公司的一些处理器芯片组支持的聚合安全和管理引擎(CSME)。CSME可然后利用固件模块108中的安全回调处理程序来执行质询/响应。附加地,UEFI可将平台(例如流分析器)上的外围设备连接暴露给CSME,从而允许CSME中的TEE将新添加的外围设备与所配备的“白名单”设备进行比较,以减少未经授权的数据捕捉。
图2例示了根据本公开的至少一个实施例的系统可用的示例配置。本公开在项目编号之后包含的撇号(例如,100')可指示特定项目的一示例实施例正在被例示。例如,设备100'可能能够执行在图1中公开的任何或全部活动。然而,设备100’仅作为在符合本公开的实施例中可使用的装置的示例被呈现,并且不旨在将本文公开的任何实施例限制为任何特定的实现方式。
设备100’可以包括例如用于管理设备的操作的系统模块200。系统模块200可包括例如,处理模块202、存储器模块204、电源模块206、用户接口模块208和通信接口模块210。设备100’可进一步包括通信模块212。尽管通信模块212已被例示为与系统模块200分开,但是,在本文中已经提供的图2所示的示例配置仅仅是为了解释。与通信模块212相关联的功能中的一些或全部也可被并入系统模块200内。
在设备100’中,处理模块202可以包括位于分开的组件中的一个或多个处理器,或者替换地可以包括在单个组件中(例如,在片上系统(SoC)配置中)的一个或多个处理核以及处理器相关的支持电路(例如,桥接接口等)。示例处理器可包括但不仅限于,可从英特尔公司获得的各种基于x86的微处理器(包括奔腾(Pentium)、至强(Xeon)、安腾(Itanium)、赛扬(Celeron)、凌动(Atom)、夸克(Quark)、酷睿(Core)i系列,酷睿M系列产品家族中的那些微处理器)、高级RISC(例如,精简指令集计算)机器或“ARM”处理器,等等。支持电路的示例可包括配置成提供接口的芯片组(例如,可从英特尔公司获得的北桥、南桥等),通过此接口,处理模块202可以与在设备100’中可能正以不同的速度、在不同的总线上等操作的其他系统组件进行交互。此外,通常与支持电路相关联的功能中的一些或全部也可以被包括在与处理器相同的物理封装内(例如,诸如在可从英特尔公司获得的Sandy Bridge处理器系列中)。
处理模块202可以配置成执行设备100’中的各种指令。指令可以包括程序代码,所述程序代码配置成使处理模块202执行与读取数据、写入数据、处理数据、制定数据、转换数据、变换数据等活动相关的活动。信息(例如,指令、数据等)可以存储在存储器模块204中。存储器模块204可以包括固定或可移除格式的随机存取存储器(RAM)和/或只读存储器(ROM)。RAM可包括配置成在设备100’的操作期间保持信息的非易失性存储器,诸如,例如静态RAM(SRAM)或动态RAM(DRAM)。ROM可包括基于BIOS、UEFI等配置以在设备100’被激活时提供指令的非易失性(NV)存储器模块,诸如电可编程ROM(EPROM)之类的可编程存储器、闪存、等等。其他固定式/可移除存储器可包括但不限于:磁存储器(诸如例如,软盘、硬盘驱动器等)、电子存储器(诸如,固态闪存(例如,嵌入式多媒体卡(eMMC)等))、可移除存储器卡或棒(例如,微存储设备(uSD),USB等))、光存储器(诸如,基于紧致盘的ROM(CD-ROM)、数字视频盘(DVD)、蓝光盘),等等。
电源模块206可包括内部电源(例如,电池,燃料电池等)和/或外部电源(例如,机电或太阳能发电机、电网、外部燃料电池等)以及配置成将操作所需的功率供应给设备100’的相关电路。用户接口模块208可包括允许用户与设备100’进行交互的硬件和/或软件,诸如例如,各种输入机制(例如,话筒、开关、按钮、旋钮、键盘、扬声器、触敏表面、配置成捕捉图像和/或感应接近度、距离、运动、手势、定向、生物计量数据,等的一个或多个传感器,等等)以及各种输出机制(例如,扬声器、显示器、发光/闪烁指示器、用于振动、运动的机电组件,等等)。用户接口模块208中的硬件可被并入设备100’内和/或可经由有线或无线通信介质而耦合到设备100’。在某些情况下用户界面模块208可以是可选的,诸如例如,在设备100’是服务器(例如,机架服务器、刀片服务器等)的情况下,其不包括用户界面模块208,而是依赖于另一设备(例如,管理终端)来实现用户界面功能。
通信接口模块210可以配置成管理通信模块212的分组路由和其他控制功能,通信模块212可包括配置成支持有线和/或无线通信的资源。在一些实例中,设备100’可包括由集中式通信接口模块210管理的多于一个的通信模块212(例如,包括用于有线协议和/或无线无线电的分开的物理接口模块)。有线通信可以包括串行和并行有线介质,诸如例如,以太网、USB、火线、Thunderbolt、数字视频接口(DVI)、高清晰度多媒体接口(HDMI),等等。无线通信可包括例如,近接近度无线介质(例如,诸如基于RF标识(RFID)或近场通信(NFC)标准、红外(IR)等之类的射频(RF))、短距离无线介质(例如,蓝牙、WLAN、Wi-Fi,等等)、长距离无线介质(例如,蜂窝广域无线电通信技术、基于卫星的通信,等等)、经由声波的电子通信等等。在一个实施例中,通信接口模块210可以配置成防止在通信模块212中活跃的无线通信彼此干扰。在执行此功能时,通信接口模块210可以基于例如等待传输的消息的相对优先级来调度通信模块212的活动。尽管图2中公开的实施例例示了与通信模块212分开的通信接口模块210,但是通信接口模块210和通信模块212的功能也可被并入到相同的模块中。
根据本公开,存储器模块204可至少包括对应于固件模块108’的NV存储器,该固件模块在设备初始化期间可使得至少固件运行时间代码(例如,UEFI运行时间)被加载到存储器模块204中的RAM中以及至少一个固件配置表被配置。OS 104可稍后(例如,与OSMM 110’一起)被加载到RAM中。当平台102需要向OS 104警告一事件时,固件模块108’的运行时间部分可与消息收发接口112’(例如,ACPI)交互,以使得处理模块202在在向OS 104生成通知之前配置至少一个将被配置的表。在至少一个实施例中,该表可以是存在于存储器模块204的共享存储器空间112’内的平台通知表。
图3例示了根据本公开的至少一个实施例的中断源查询的示例。示例中断查询124'例示了可被遍历以确定与系统控制中断(SCI)相对应的来源的各种表。最初,结构EFI通知(EFIN)表300可以基于ACPI表实施准则。EFIN表300可包括至少一个ACPI头部和至少一个EFIN PCC子空间标识符(例如,如图3所例示的“X”)。相对应的平台通信信道表(PCCT)在302处被例示。典型地,当平台102利用SCI来通知OS 104时,OS 104将读取处理器核心逻辑芯片组(例如,南桥)中的ACPI状态寄存器来标识通知的原因,并接着调用相对应的ASL名称空间方法。例如,非本地的外围设备组件互连快速(PCIe)“热插拔”事件(例如,在设备100运行时添加或移除PCIe装备)可设置状态位并对OS 104触发SCI以使得OSMM110通过评估被确定为与此状态对应的ASL代码来进行响应。PCC机制被添加到ACPI 5.0中,使得OS 104除了仅评估ASL方法之外,还可评估表。ACPI PCCT 302是ACPI表,该ACPI表至少包括ACPI头部和从0…n的PCC子空间结构阵列。每个PCC子空间可包括可与PCCT 302中的EFIN PCC子空间结构的索引位置相对应的标识符(例如,在图3的示例中,标识符X的PCC子空间结构可具有可标识相对应的PCC共享存储器空间306的索引Y)。如304所示,标识符X的PCC子空间结构可包括结构的类型、长度,共享存储器空间的基地址和长度,以及门铃寄存器、值。门铃寄存器可向OSMM 110指示SCI的来源(例如,OS 104的来源“敲响门铃”以中断执行代码,并且可被门铃寄存器识别)。
PCC共享存储器空间306可包括多个特征特定表,该特征特定表充当用于在平台102和OS 104之间传递命令和参数的邮箱。至少在308例示的示例表结构也可被称为“平台通知表”。如在308所示,与标识符X相对应的共享存储器空间可包括:例如“EFIN”的签名、命令字段310、状态字段312、GUID的数量、和GUID的列表。在操作中,状态字段312可包括至少一个平台通知位,该至少一个平台通知位当被设置时可触发OS 104(例如,OSMM 110)随后检查被设置在共享存储器空间中的GUID列表,如在314所示。可将共享存储器空间中的GUID列表与在设备初始化期间被加载在固件配置表(例如,EFI系统表)中的GUID进行比较。如果被加载在共享存储器空间中的任何GUID被确定为与固件配置表GUID相匹配,则在固件配置表中被标识的至少一个服务可(例如,通过与所匹配的GUID相对应的指针)被调用,如在316所示的。否则,在至少一个实施例中,OSMM110可使用在共享存储器空间中列出的GUID执行GetVariable()操作,然后可调用与任何所返回的变量相对应的服务。
图4图示按照本公开的至少一个实施例的示例EFIN表。示例ACPI EFIN表300'可至少包括ACPI头部和EFIN特定条目。ACPI头部可包括:签名(例如,“EFIN”)、EFIN的字节长度(这可能暗示在表的末尾EOT有许多EFIN特定输入字段)、EFIN表修订号、EFIN表的校验和(对“有效”表而言该校验和应该等于零)、原始装备制造商(OEM)标识(ID)(例如,用于设备100或被安装在设备100中的装备)、OEM表ID(例如,其可指示设备100或被安装在设备100中的装备的制造商模型标识)、与所提供的OEM表ID对应的EFIN表的OEM修订号、以及指示创建了EFIN表的实用程序(例如,程序、服务等)的厂商ID的创建者修订。EFIN特定条目可包括例如可被用于标识PCCT 302中的相应的PCC子空间结构的至少一个EFIN PCC标识符。
图5图示按照本公开案的至少一个实施例的示例EFI PCC共享存储器空间。PCC共享存储器空间308'的一个示例在图5中被例示,接下来是命令字段310'和状态字段312'的进一步的表分支。PCC共享存储器空间308'可包括例如签名字段(例如,可包括指示其是用于EFIN的共享存储器空间的“EFIN”的签名)、PCC命令字段(例如,以ACPI定义的格式)和状态字段(例如,以ACPI定义的格式)。在至少一个实施例中,示例共享存储器空间308'的子部分可被定义为“通信空间”,其中至少将由平台102向OS 104通知的GUID可能会列出对GUID列表中GUID的总数的指示。
与共享存储器空间308'中的命令字段相对应的示例分支表在310'被示出。命令字段310'可包括例如命令位串、保留位串、和生成SCI位串。在至少一个实施例中,在生成SCI位串中的一个或多个位可被设置以向OS生成SCI。与状态字段相对应的示例分支表在312'被示出。状态字段312'可包括例如命令完成位、SCI门铃位、错误位、平台通知位和保留位串。SCI门铃位可被用于在源查询期间向OSMM 110指示SCI的来源,而平台通知位可指示OSMM 110可能需要响应于通知(例如,解决在平台102中发生的事件)来检查GUID列表以确定需要被调用服务。
图6例示了根据本公开的至少一个实施例的示例EFI物理基础控制寄存器和EFI运行时间范围控制寄存器。根据本公开,修改平台通知表中的信息可触发生成向OS 104发送的通知。就此,可能会导致通知被触发,其可能会对包括在设备100中的安全性具有非预期的效果。例如,设备100中的恶意软件可使得OSMM 104执行与GUID连接的服务,这可以允许恶意软件从OS 104获得信息,或者甚至获得对OS 104的控制。
可在根据本公开的各实施例中实现安全措施,以保护此类意料之外的行为。例如,固件模块108(例如,UEFI驱动程序)的运行时间元素可利用例如来自Intel公司的数字认证代码(Authenticode)动态链接库(DLL)来签名。UEFI运行时间还可能能够与在TEE中运行的系统安全的安全部分(例如病毒防护程序)执行质询/响应交互,该系统安全的安全部分使用例如来自Intel公司的安全防护扩展(SGX)来实现。这种类型的操作可允许在TEE中运行的已知好的应用验证UEFI运行时间也是已知好的(例如,没有被危害)。
单独或与上述结合,范围寄存器(例如,以存储器类型范围寄存器(MTRR)或系统管理范围寄存器的方式)可被用于防止对EFI运行时间服务的未经授权的写入访问。EFI运行时间范围寄存器(RTRR)600的示例在图6中的602和604被例示。这些寄存器可以是每个线程一个,并且在OS 104控制设备100(例如OS切换)之前由固件模块108建立。具体而言,寄存器602和604可以是系统引导固件将在OS切换之前对其进行编程以保护该区域不被修改的模块特定寄存器(MSR)。在至少一个实施例中,12位的IA32_MTRRCAP寄存器可向固件模块108指示设备100是否支持RTRR。示例物理基础控制寄存器602和示例运行时间范围物理掩码寄存器可被用于确定目标物理地址是否落入运行时间服务存在的RTRR地址范围内。EFI运行时间范围物理基础控制寄存器602可为EFI运行时间服务范围定义基地址和存储器类型。在至少一个实施例中,在尝试访问寄存器602之前,可能需要测试IA32_MTRRCAP寄存器中的RTRR支持位。如果RTRR支持位未被设置为1,则在尝试访问寄存器602时可能引起一般保护(GP)异常。例如,寄存器602可至少包括物理基础字段和类型字段。物理基础字段可以是读/写(R/W)并且可以设置基地址,其中“XX”可以取决于处理器所支持的可寻址性。类型字段也可以是R/W,并且可指示RTRR存储器的可缓存性类型(例如,可被设置为“6”以表示写回(WB)存储器)。
EFI运行时间范围物理掩码控制寄存器可包括至少一个被用于确定共享存储器空间地址范围的掩码。与上文类似,可能需要在访问寄存器604之前对IA32_MTRRCAP寄存器中的RTRR支持位进行测试。如果确定RTRR支持位未被设置为1,则访问此寄存器时将引起GP异常。例如,寄存器604可至少包括物理掩码字段和有效字段。物理掩码字段可以是R/W,并且可设置确定被映射的存储器区域的范围的RTRR存储器范围掩码。有效字段也可以是R/W,并且可指示RTRR在设置时是有效的。
图7例示了根据本公开的至少一个实施例的用于生成和接收固件相关通知的示例操作。操作700至712可由设备中的平台执行。在操作700中,设备可以被初始化。在初始化期间,在操作702中,可在至少一个固件配置表中配置GUID(例如,通过平台中的固件模块)。在操作704和706中,正常操作可在设备中继续,直到在操作704中(例如,基于在平台中发生的事件)做出平台需要向设备中的OS发送通知的确定为止。然后,在操作708中平台可将至少一个GUID加载到平台通知表中,并且在操作710中可在平台通知表的状态字段中设置平台通知位。然后,在操作712中,通知(例如,SCI)可被生成。
操作714至728可发生在设备的OS中。在操作714中,由平台生成的通知可被OS接收。在操作716中,OS(例如,OS中的OSMM)可然后发现通知的来源。通知的来源可通过例如搜索在设备的ACPI PCCT中设置的门铃位来发现。考虑到在操作710中由平台设置平台通知位,所设置的平台通知位可然后在操作718中触发OS评估在平台通知表中设置的GUID。然后OS可将在平台通知表中设置的任何GUID与在设备初始化期间在固件配置表中设置的GUID进行比较。可在操作720中确定是否有任何GUID匹配。在操作722中,确定GUID中的至少一个匹配,则在操作724中,可由OS调用与固件配置表中的至少一个匹配的GUID相对应的至少一个服务。替换地,如果在操作722中确定没有GUID匹配,则在操作726中,可由OS使用在平台通知表中设置的GUID来发出getvariable()命令,并且在操作728中,由getvariable()命令返回的任何值都可被用于调用相关联的服务。
图8例示了根据本公开的至少一个实施例的用于生成关于设备中的外围设备拓扑变化的事件通知的示例操作。安全相关的示例被呈现在图8中,其中设备平台可能能够向在OS中执行的安全资源通知设备中的外围设备拓扑变化。如本文所参考的,外围设备拓扑变化可以是与设备相关联的硬件、装备等的改变(例如,添加、移除、重新定位(例如,到另一端口)、重新配置等),所述改变可能被平台感觉到,但潜在地不会被OS感觉到。
正常的设备操作可在操作800和802中继续,直到在操作802中确定外围设备拓扑变化已在设备中发生。随后可在操作804中确定新的外围设备是否已被添加到设备。如果在操作804中确定新的外围设备尚未被添加到设备,则可假设已经发生了改变,其中外围设备已与设备断开连接,或以其他可被平台检测到方式发生变化。然后可在操作806中确定外围设备的改变是否被允许。如果确定改变不被允许,则可根据本文所公开的各种实施例在操作808处采取包括向OS发送的通知的保护措施。在操作806中,确定所检测到的外围设备改变被允许,则在操作810中,可允许进行外围设备改变。
返回到操作804,如果确定新的外围设备被添加到设备,则在操作812中,可作出所添加的外围设备是否被列入白名单(例如,在白名单上)的确定。白名单可以是已知好的或安全的外围设备的列表在操作812中确定所添加的外围设备未被列入白名单之后,返回到操作808以接合包括向OS发送的通知的安全措施。否则,在操作814中,新的外围设备的连接可被允许。
尽管图7和8例示了根据不同的实施例的操作,但是将会理解,并非图7和8中所描绘的所有操作对于其他实施例都是必需的。实际上,在本文中完全构想了在本公开的其他实施例中,图7和8中所描绘的操作和/或本文中所描述的其他操作能以未专门在附图中的任一附图中示出的方式组合,但是仍完全符合本公开。由此,针对在一个附图中未确切地示出的特征和/或操作的权利要求被视为在本公开的范围和内容内。
如在本申请和权利要求书中所使用,由术语“和/或”连接的项目列表可以意味着列出的项的任何组合。例如,短语“A、B和/或C”可以意味着A;B;C;A和B;A和C;B和C;或A、B和C。如在本申请和权利要求书中所使用的,由术语“……中的至少一个”连接的项目列表可以意味着列出的项的任何组合。例如,短语“A、B或C中的至少一个”可以意味着A;B;C;A和B;A和C;B和C;或A、B和C。
如本文中任意实施例中所使用的那样,术语“系统”或“模块”可以指例如被配置成用于执行前述任意操作的软件、固件和/或电路。软件可以具体化为记录在非暂态计算机可读存储介质上的软件包、代码、指令,指令集和/或数据。固件可以实现如硬编码(例如,非易失性)在存储器设备中的代码、指令或指令集和/或数据。如本文任何实施例中所使用的那样,“电路”可单独或以任何组合方式包括诸如:硬连线电路;可编程电路,诸如包括一个或更多单独指令处理核的计算机处理器;状态机电路;和/或存储由可编程电路执行的指令的固件。模块可以共同地或分别地具体化为形成较大系统的部分的电路,所述较大系统例如,集成电路(IC)、片上系统(SoC)、台式计算机、膝上型计算机、平板计算机、服务器、智能电话,等等。
可在包括一种或多种存储介质(例如,非暂态存储介质)的系统中实现本文中描述的操作中的任一操作,一种或多种存储介质上单独或组合地在其上存储有指令,所述指令当由一个或多个处理器执行时执行这些方法。在此,处理器可以包括例如,服务器CPU、移动设备CPU和/或其他可编程电路。同样,本文中所描述的操作旨在可以跨多个物理设备(诸如,在多于一个的不同的物理位置处的处理结构)分布。存储介质可包括任何类型的有形介质,例如,包括硬盘、软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)以及磁光盘的任何类型的盘;半导体设备,诸如,只读存储器(ROM)、随机存取存储器(RAM)(诸如,动态和静态RAM)、可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、闪存、固体盘(SSD)、嵌入式多媒体卡(eMMC)、安全数字输入/输出(SDIO)卡、磁卡或光卡;或适合于存储电子指令的任何类型的介质。其他实施例可以实现为由可编程控制设备执行的软件模块。
因此,本公开涉及固件相关事件通知。设备可包括被配置为在平台上操作的操作系统(OS)。在设备初始化期间,平台中的固件模块可将至少一个全局唯一标识符(GUID)加载到固件配置表中。当平台向OS发送通知时,平台可将至少一个GUID加载到平台通知表中,并且可在平台通知表的状态字段中设置平台通知位。在检测到通知时,OS管理模块可通过查询平台通知表来建立通知的来源。平台通知位可使OS管理模块将平台通知表和固件配置表中的GUID进行比较。服务可基于任何匹配GUID而被调用。如果没有GUID匹配,则可基于设备中的固件变量来调用服务。
以下示例关于进一步的实施例。本公开的下面的示例可以包括主题素材,诸如设备、方法、用于存储指令的至少一种机器可读介质(当执行所述指令时,所述指令使机器基于方法来执行动作)、用于基于方法来执行动作的装置,和/或用于固件相关事件通知的系统,如下文所提供。
根据示例1,提供了一种用于生成固件相关事件通知的设备。该设备可包括存储器模块,该存储器至少包括共享存储器空间,固件模块,所述固件模块将消息收发接口的至少一部分加载到所述共享存储器空间中,并可使得所述消息收发接口向所述设备中的操作系统生成通知以及处理模块,该处理模块至少基于从该操作系统接收到的指令来执行所述设备中的操作,该操作系统包括操作系统管理模块以至少对由所述消息收发接口呈现的该通知作出反应。
示例2可包括示例1中的元素,其中在所述设备的初始化期间,所述固件模块将执行以下至少一者:将至少一个全局唯一标识符和相应的服务标识符条目加载到固件配置表中,或生成至少一个固件变量。
示例3可包括示例2中的元素,其中所述固件配置表基于统一可扩展固件接口(UEFI)标准。
示例4可包括示例2至3中的任一个的元素,其中所述固件模块在通知被生成之前将至少一个全局唯一标识符加载到所述共享存储器空间中的平台通知表中。
示例5可包括示例4中的元素,其中所述平台通知表基于高级配置和电源接口(ACPI)标准。
示例6可包括示例4至5中的任一个的元素,其中该通知是系统控制中断(SCI)。
示例7可包括示例4至6中的任一个的元素,其中所述平台通知表由物理基础控制寄存器或物理掩码控制寄存器中的至少一者来保护。
示例8可包括示例7中的元素,其中所述物理基础控制寄存器将防止对固件模块的运行时间部分的未经授权的写入。
示例9可包括示例7至8中的任一个的元素,其中物理掩码控制寄存器将确定共享存储器空间的地址范围。
示例10可包括示例4至9中的任一个的元素,其中所述固件模块进一步在所述平台通知表的状态字段中设置至少一个平台通知位。
示例11可包括示例10中的元素,其中所述操作系统管理模块使得所述处理模块通过至少查询所述平台通知表来发现所述通知的来源。
示例12可包括示例11中的元素,其中所述操作系统管理模块通过查询高级配置和电源接口(ACPI)平台通信信道(PCC)表中设置的门铃位来发现通知的来源。
示例13可包括示例10至12中的任一个的元素,其中响应于确定在所述平台通知表中设置有所述平台通知位,所述操作系统管理模块将使得处理模块确定是否所述平台通知表中的至少一个全局唯一标识符与所述固件配置表中加载的任何全局唯一标识符相同。
示例14可包括示例13中的元素,其中响应于确定所述平台通知表中的至少一个全局唯一标识符与所述固件配置表中加载的任何全局唯一标识符都不相同,所述操作系统管理模块将使得所述处理模块从所述固件配置表中请求固件变量。
示例15可包括示例14中的元素,其中所述操作系统管理模块将使得所述处理模块:基于与被确定与所述固件配置表中的全局唯一标识符相匹配的所述平台通知表中的全局唯一标识符相对应的所述服务标识符、或在没有匹配的全局唯一标识符被确定的情况下基于被返回的固件变量,来调用所述操作系统中的至少一个服务。
示例16可包括示例1至15中的任一个的元素,其中基于在设备中检测到的外围设备拓扑变化来生成通知。
示例17可包括示例16中的元素,其中当外围设备改变不被允许时或当未被列为白名单的外围设备被添加到设备时,会生成通知。
示例18可包括示例1至17中的任一个的元素,其中通过使用数字认证代码动态链接库进行签名来保护固件模块的至少一个运行时间元素。
示例19可包括示例1至18中的任一个的元素,其中通过在可信执行环境内运行的设备安全性的一部分执行的质询/响应交互。
示例20可包括示例19中的元素,其中可信执行环境是使用安全防护扩展来建立的。
根据示例21,提供了一种用于生成固件相关通知的方法。该方法可包括配置设备中的固件配置表,确定需要向设备中的操作系统生成来自设备中的平台的通知,配置设备中的平台通知表以及生成通知。
示例22可包括示例21中的元素,其中配置所述固件配置表包括以下至少一者:将至少一个全局唯一标识符和相应的服务标识符条目加载到固件配置表中,或生成至少一个固件变量。
示例23可包括示例21至22中的任一个的元素,其中配置在设备中的平台通知表包括将至少一个全局唯一标识符加载到平台通知表中,并在状态字段中设置至少一个平台通知位。
示例24可包括示例21至23中的任一个的元素,并可进一步包括基于在设备中检测到的外围设备拓扑改变来确定需要通知。
示例25可包括示例24中的元素,并可进一步包括当外围设备改变不被允许时或当未被列为白名单的外围设备被添加到设备时导致通知被生成。
示例26可包括示例21至25中的任一个的元素,并可进一步包括使用物理基础控制寄存器或物理掩码控制寄存器中的至少一者来保护至少所述平台通知表。
根据示例27,提供了一种用于接收固件相关通知的设备。该方法可包括接收在设备中的操作系统处的通知,至少基于查询设备中的平台通知表来发现通知的来源,以及确定平台通知位是否已经被设置在平台通知表的状态字段中。
示例28可包括示例27中的元素,其中发现通知的来源包括查询高级配置和电源接口(ACPI)平台通信信道(PCC)表中设置的门铃位。
示例29可包括示例27至28中的任一个的元素,并可进一步包括:响应于所述平台位被设置,确定所述平台通知表中的至少一个全局唯一标识符是否与所述设备的固件配置表中加载的任何全局唯一标识符相同、响应于确定所述平台通知表中的至少一个全局唯一标识符与所述固件配置表中加载的任何全局唯一标识符都不相同,请求固件变量、以及基于与被确定与所述固件配置表中的全局唯一标识符相匹配的所述平台通知表中的全局唯一标识符对应的服务标识符或被返回的固件变量来调用所述操作系统中的至少一个服务。
根据示例30,提供了一种包括至少一个设备的系统,所述系统布置成执行上述示例21到29中的任一项所述的方法。
根据示例31,提供了一种芯片组,所述芯片组布置成执行上述示例21到29中的任一项所述的方法。
根据示例32,提供至少一种机器可读介质,包括多条指令,响应于在计算设备上执行所述多条指令,所述多条指令指令使所述计算设备执行上述示例21到29中的任一项所述的方法。
根据示例33,提供了一种被配置成用于固件相关事件通知的设备,所述设备被布置成执行上述示例21到29中的任一项所述的方法。
根据示例34,提供了一种用于生成固件相关通知的系统。该系统可包括用于配置设备中的固件配置表的装置,用于确定需要向设备中的操作系统生成来自设备中的平台的通知的装置,用于配置设备中的平台通知表的装置以及用于生成通知的装置。
示例35可包括示例34中的元素,其中用于配置所述固件配置表的装置包括用于实现以下至少一者的装置:将至少一个全局唯一标识符条目加载到固件配置表中,或生成至少一个固件变量。
示例36可包括示例34至35中的任一个的元素,其中用于配置在设备中的平台通知表的装置包括用于将至少一个全局唯一标识符加载到平台通知表中的装置,以及用于在平台通知表的状态字段中设置至少一个平台通知位的装置。
示例37可包括示例34至36中的任一个的元素,并可进一步包括用于基于在设备中检测到的外围设备拓扑改变来确定需要通知的装置。
示例38可包括示例37中的元素,并可进一步包括用于当外围设备改变不被允许时或当未被列为白名单的外围设备被添加到设备时导致通知被生成的装置。
示例39可包括示例34至38中的任一个的元素,并可进一步包括用于使用物理基础控制寄存器或物理掩码控制寄存器中的至少一者来保护至少所述平台通知表的装置。
根据示例40,提供了一种用于接收固件相关通知的系统。该方法可包括用于接收在设备中的操作系统处的通知的装置,用于至少基于查询设备中的平台通知表来发现通知的来源的装置,以及用于确定平台通知位是否被已经设置在平台通知表的状态字段中的装置。
示例41可包括示例40中的元素,其中用于发现通知的来源的装置包括查询高级配置和电源接口(ACPI)平台通信信道(PCC)表中设置的门铃位。
示例42可包括示例40至41中的任一个的元素,并可进一步包括:用于响应于所述平台位被设置,确定所述平台通知表中的至少一个全局唯一标识符是否与所述设备的固件配置表中加载的任何全局唯一标识符相同的装置,用于响应于确定所述平台通知表中的至少一个全局唯一标识符与所述固件配置表中加载的任何全局唯一标识符都不相同,请求固件变量的装置,以及用于基于与被确定与所述固件配置表中的全局唯一标识符相匹配的所述平台通知表中的全局唯一标识符对应的服务标识符或被返回的固件变量来调用所述操作系统中的至少一个服务的装置。
已在本文中采用的术语和表达是用作描述的术语而非限制的术语,并且在使用此类术语和表达时,不旨在排除所示出的和所描述的特征的任何等效方案(或其部分),应当认识到,在权利要求书的范围内,各种修改都是可能的。相应地,权利要求书旨在涵盖所有此类等效方案。

Claims (23)

1.一种生成固件相关事件通知的设备,包括:
存储器模块,所述存储器模块至少包括共享存储器空间;
固件模块,所述固件模块用于将消息收发接口的至少部分加载到所述共享存储器空间中,并用于使得所述消息收发接口向所述设备中的操作系统生成通知;
受信任执行环境TEE;以及
处理模块,所述处理模块至少基于从所述操作系统接收到的指令来执行所述设备中的操作,所述操作系统包括操作系统管理模块以至少对由所述消息收发接口呈现的所述通知作出反应;
其中,所述固件模块的至少运行时间元素通过由在所述TEE内执行的所述固件模块的运行时组件执行的挑战/响应交互来保护。
2.如权利要求1所述的设备,其特征在于,在所述设备的初始化期间,所述固件模块用于执行以下各项中的至少一项:将至少一个全局唯一标识符和相应的服务标识符条目加载到固件配置表中,或生成至少一个固件变量。
3.如权利要求2所述的设备,其特征在于,所述固件配置表基于统一可扩展固件接口UEFI标准。
4.如权利要求2所述的设备,其特征在于,所述固件模块进一步用于在所述通知被生成之前将至少一个全局唯一标识符加载到所述共享存储器空间中的平台通知表中。
5.如权利要求4所述的设备,其特征在于,所述平台通知表基于高级配置和电源接口ACPI标准。
6.如权利要求4所述的设备,其特征在于,所述平台通知表由物理基础控制寄存器或物理掩码控制寄存器中的至少一者来保护。
7.如权利要求4所述的设备,其特征在于,所述固件模块进一步用于在所述平台通知表的状态字段中设置至少一个平台通知位。
8.如权利要求7所述的设备,其特征在于,响应于确定在所述平台通知表中设置有所述平台通知位,所述操作系统管理模块用于使得所述处理模块确定是否所述平台通知表中的至少一个全局唯一标识符与所述固件配置表中加载的任何全局唯一标识符相同。
9.如权利要求8所述的设备,其特征在于,响应于确定所述平台通知表中的至少一个全局唯一标识符与所述固件配置表中加载的任何全局唯一标识符都不相同,所述操作系统管理模块用于使得所述处理模块从所述固件配置表中请求固件变量。
10.如权利要求9所述的设备,其特征在于,所述操作系统管理模块用于使得所述处理模块:基于与被确定与所述固件配置表中的全局唯一标识符相匹配的所述平台通知表中的全局唯一标识符相对应的所述服务标识符、或在没有匹配的全局唯一标识符被确定的情况下基于被返回的固件变量,来调用所述操作系统中的至少一个服务。
11.如权利要求4所述的设备,其特征在于,所述操作系统管理模块用于使得所述处理模块通过至少查询所述平台通知表来发现所述通知的来源。
12.如权利要求1所述的设备,其特征在于,所述通知是系统控制中断SCI。
13.如权利要求1所述的设备,其特征在于,基于在所述设备中检测到的外围设备拓扑变化来生成所述通知。
14.一种用于接收固件相关通知的方法,包括:
在设备中的操作系统处,接收由经由固件电路加载到所述设备的共享存储器空间中的消息收发接口生成的通知,所述固件电路至少包括通过在所述设备的受信任执行环境TEE内执行的挑战/响应交互来保护的运行时间元素;
经由所述设备中的所述操作环境并且响应于接收到的通知,至少部分地基于所述操作系统对所述设备中的平台通知表进行查询来发现所述通知的来源;以及
经由所述操作系统,确定平台通知位是否已经被设置在所述平台通知表的状态字段中。
15.如权利要求14所述的方法,进一步包括:
响应于确定所述平台通知位被设置,确定所述平台通知表中的至少一个全局唯一标识符是否与所述设备中的固件配置表中加载的任何全局唯一标识符相同。
16.如权利要求15所述的方法,进一步包括:
响应于确定所述平台通知表中的至少一个全局唯一标识符与所述固件配置表中加载的任何全局唯一标识符都不相同,请求固件变量。
17.如权利要求15所述的方法,进一步包括:
基于与被确定与所述固件配置表中的全局唯一标识符相匹配的所述平台通知表中的全局唯一标识符对应的服务标识符、或被返回的固件变量,来调用所述操作系统中的至少一个服务。
18.如权利要求14所述的方法,其中,发现所述通知的所述来源包括查询高级配置和功率接口ACPI平台通信信道PCC表中设置的门铃位。
19.至少一种非瞬态机器可读存储设备,具有单独地或组合地存储于其上的、用于生成固件相关通知的指令,所述指令在由一个或多个处理器执行时,使得所述一个或多个处理器用于:
在设备中的操作系统处,接收由经由固件电路加载到所述设备的共享存储器空间中的消息收发接口生成的通知,所述固件电路至少包括通过在所述设备的受信任执行环境TEE内执行的挑战/响应交互来保护的运行时间元素;
经由所述设备中的所述操作环境并且响应于接收到的通知,至少部分地基于对所述设备中的平台通知表进行查询来发现所述通知的来源;以及
经由所述操作系统,确定平台通知位是否已经被设置在所述平台通知表的状态字段中。
20.如权利要求19所述的至少一种非瞬态机器可读存储设备,其特征在于,所述指令在被执行使进一步使得所述一个或多个处理器用于:
响应于确定所述平台通知位被设置,确定所述平台通知表中的至少一个全局唯一标识符是否与所述设备中的固件配置表中加载的任何全局唯一标识符相同。
21.如权利要求20所述的至少一种非瞬态机器可读存储设备,其特征在于,所述指令在被执行使进一步使得所述一个或多个处理器用于:
响应于确定所述平台通知表中的至少一个全局唯一标识符与所述固件配置表中加载的任何全局唯一标识符都不相同,请求固件变量。
22.如权利要求20所述的至少一种非瞬态机器可读存储设备,其特征在于,所述指令在被执行使进一步使得所述一个或多个处理器用于:
基于与被确定与所述固件配置表中的全局唯一标识符相匹配的所述平台通知表中的全局唯一标识符对应的服务标识符、或被返回的固件变量,来调用所述操作系统中的至少一个服务。
23.如权利要求19所述的至少一种非瞬态机器可读存储设备,其中,发现所述通知的所述来源包括查询高级配置和功率接口ACPI平台通信信道PCC表中设置的门铃位。
CN202210293219.XA 2015-06-26 2016-05-27 固件相关事件通知 Pending CN114610510A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US14/751,733 2015-06-26
US14/751,733 US9612887B2 (en) 2015-06-26 2015-06-26 Firmware-related event notification
PCT/US2016/034739 WO2016209552A1 (en) 2015-06-26 2016-05-27 Firmware-related event notification
CN201680030397.6A CN107735769B (zh) 2015-06-26 2016-05-27 固件相关事件通知

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201680030397.6A Division CN107735769B (zh) 2015-06-26 2016-05-27 固件相关事件通知

Publications (1)

Publication Number Publication Date
CN114610510A true CN114610510A (zh) 2022-06-10

Family

ID=57586223

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202210293219.XA Pending CN114610510A (zh) 2015-06-26 2016-05-27 固件相关事件通知
CN201680030397.6A Active CN107735769B (zh) 2015-06-26 2016-05-27 固件相关事件通知

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201680030397.6A Active CN107735769B (zh) 2015-06-26 2016-05-27 固件相关事件通知

Country Status (5)

Country Link
US (2) US9612887B2 (zh)
EP (1) EP3314419A4 (zh)
JP (1) JP6768710B2 (zh)
CN (2) CN114610510A (zh)
WO (1) WO2016209552A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018194667A1 (en) * 2017-04-21 2018-10-25 Hewlett-Packard Development Company, L.P. Firmware outputted keyboard code to enter operating system state
CN107229530A (zh) * 2017-06-29 2017-10-03 上海联影医疗科技有限公司 进程间的通信方法、存储介质以及计算机设备
US10262158B1 (en) 2017-07-27 2019-04-16 American Megatrends, Inc. Restricting the use of a firmware tool to a specific platform
US10915331B2 (en) 2017-08-04 2021-02-09 Qualcomm Incorporated Partitioning flash and enabling flexible boot with image upgrade capabilities
US10705852B2 (en) * 2018-02-14 2020-07-07 Dell Products L.P. System and method of providing updates
US10613850B1 (en) * 2018-10-16 2020-04-07 American Megatrends International, Llc Performant and secure storage and retrieval of firmware variables
CN109508312B (zh) * 2018-11-14 2021-10-29 郑州云海信息技术有限公司 一种pcie外接卡热添加信息的发送方法及相关装置
CN109491947B (zh) * 2018-11-14 2021-12-03 郑州云海信息技术有限公司 一种pcie外接卡热移除信息的发送方法及相关装置
US11609766B2 (en) * 2019-01-04 2023-03-21 Baidu Usa Llc Method and system for protecting data processed by data processing accelerators
JP2022039788A (ja) * 2020-08-28 2022-03-10 株式会社日立製作所 イベント監視装置及びイベント監視方法
TWI760036B (zh) * 2020-12-30 2022-04-01 技嘉科技股份有限公司 透過http/https的伺服器韌體的資料傳輸方法及伺服器
US11915785B2 (en) 2021-01-26 2024-02-27 Micron Technology, Inc. Memory sub-system management based on dynamic control of wordline start voltage
CN115563628B (zh) * 2022-01-17 2023-09-22 荣耀终端有限公司 一种变量读取、写入方法和变量读取、写入装置

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6131131A (en) * 1998-01-22 2000-10-10 Dell U.S.A., L.P. Computer system including an enhanced communication interface for an ACPI-compliant controller
US7165170B2 (en) * 2003-09-12 2007-01-16 Intel Corporation System and method for firmware to export pre-boot data into the operating system runtime environment
US20050216721A1 (en) 2004-03-24 2005-09-29 Zimmer Vincent J Methods and apparatus for initializing a memory
US7519973B2 (en) * 2004-09-29 2009-04-14 Hewlett-Packard Development Company, L.P. Providing unique event notification to enable firmware to request that an operating system perform a unique action
US7953996B2 (en) * 2006-12-18 2011-05-31 Hewlett-Packard Development Company, L.P. ACPI to firmware interface
US20090278679A1 (en) * 2008-05-07 2009-11-12 Dell Products L.P. Methods and Media for Event Notification in Information Handling Systems
CN101419560B (zh) * 2008-12-05 2013-01-23 苏州壹世通科技有限公司 一种基于可扩展固件接口的操作系统切换方法
US8132055B2 (en) 2009-11-20 2012-03-06 International Business Machines Corporation Operating system-firmware interface update recovery
US8522066B2 (en) 2010-06-25 2013-08-27 Intel Corporation Providing silicon integrated code for a system
CN102279914B (zh) * 2011-07-13 2014-08-06 中国人民解放军海军计算技术研究所 一种uefi可信支撑系统及其控制方法
CN103377063B (zh) 2012-04-28 2016-06-22 国际商业机器公司 从遗留操作系统环境恢复到uefi预启动环境的方法和系统
US9223982B2 (en) 2013-03-01 2015-12-29 Intel Corporation Continuation of trust for platform boot firmware
US9477848B2 (en) * 2013-03-15 2016-10-25 Insyde Software Corp. System and method for managing and diagnosing a computing device equipped with unified extensible firmware interface (UEFI)-compliant firmware
US9411605B2 (en) 2013-08-29 2016-08-09 Samsung Electronics Co., Ltd. Device-less and system agnostic unified extensible firmware interface (UEFI) driver
CN104572061A (zh) * 2014-03-21 2015-04-29 中电科技(北京)有限公司 一种基于龙芯服务器的uefi固件实现方法
CN104580135B (zh) * 2014-09-10 2018-04-17 中电科技(北京)有限公司 一种基于uefi的终端实时控制系统和方法
US9525675B2 (en) * 2014-12-26 2016-12-20 Mcafee, Inc. Encryption key retrieval
US9830457B2 (en) * 2015-05-05 2017-11-28 Dell Products, L.P. Unified extensible firmware interface (UEFI) credential-based access of hardware resources

Also Published As

Publication number Publication date
EP3314419A4 (en) 2019-02-27
WO2016209552A1 (en) 2016-12-29
CN107735769A (zh) 2018-02-23
US20160378576A1 (en) 2016-12-29
EP3314419A1 (en) 2018-05-02
US20170161124A1 (en) 2017-06-08
US10445154B2 (en) 2019-10-15
JP6768710B2 (ja) 2020-10-14
JP2018523201A (ja) 2018-08-16
CN107735769B (zh) 2022-04-19
US9612887B2 (en) 2017-04-04

Similar Documents

Publication Publication Date Title
CN107735769B (zh) 固件相关事件通知
CN106605233B (zh) 使用处理器提供可信执行环境
CN109918919B (zh) 认证变量的管理
US10860305B1 (en) Secure firmware deployment
US10726120B2 (en) System, apparatus and method for providing locality assertion between a security processor and an enclave
US9135435B2 (en) Binary translator driven program state relocation
US9781117B2 (en) Multinode hubs for trusted computing
CN106255955B (zh) 多操作系统装置的访问隔离
US20090328195A1 (en) Authentication and Access Protection of Computer Boot Modules in Run-Time Environments
US20110154500A1 (en) Executing Trusted Applications with Reduced Trusted Computing Base
CN106415574B (zh) 采用用于促进对安全存储器的访问的中间结构
US9311177B2 (en) Mechanism to support reliability, availability, and serviceability (RAS) flows in a peer monitor
TWI443580B (zh) 透過埠共享硬體之對儲存裝置之帶外存取
WO2013089695A1 (en) Method and system for monitoring calls to an application program interface (api) function
EP2973175B1 (en) Managing device driver cross ring accesses
US9965620B2 (en) Application program interface (API) monitoring bypass
CN107667346B (zh) 用于基于熔断的固件块分派的设备、方法和系统
US9537738B2 (en) Reporting platform information using a secure agent
US11281595B2 (en) Integration of disparate system architectures using configurable isolated memory regions and trust domain conversion bridge
US11568048B2 (en) Firmware descriptor resiliency mechanism
EP4273722A1 (en) Terminal chip and measurement method therefor

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination