CN105009072B - 更新提交列表以指示数据将被写入固件接口变量存储库 - Google Patents

更新提交列表以指示数据将被写入固件接口变量存储库 Download PDF

Info

Publication number
CN105009072B
CN105009072B CN201380072019.0A CN201380072019A CN105009072B CN 105009072 B CN105009072 B CN 105009072B CN 201380072019 A CN201380072019 A CN 201380072019A CN 105009072 B CN105009072 B CN 105009072B
Authority
CN
China
Prior art keywords
smm
written
list
variable storage
event
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.)
Active
Application number
CN201380072019.0A
Other languages
English (en)
Other versions
CN105009072A (zh
Inventor
李秉中
T·M·范
D·舒马赫
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.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
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 Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of CN105009072A publication Critical patent/CN105009072A/zh
Application granted granted Critical
Publication of CN105009072B publication Critical patent/CN105009072B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1433Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a module or a part of a module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • 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
    • G06F9/4403Processor initialisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/603Details of cache memory of operating mode, e.g. cache mode or local memory mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)
  • Stored Programmes (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本文所公开的例子涉及更新提交列表以指示数据将被写入固件接口(FI)变量存储库。例子包括在给定的SMM事件期间将目标数据存储在计算设备的系统管理存储器的变量存储库缓存中,在所述给定的SMM事件期间更新提交列表以指示目标数据将被写入FI变量存储库,并结束所述给定的SMM事件,而在所述给定的SMM事件期间没有至少某一部分目标数据被写入FI变量存储库。

Description

更新提交列表以指示数据将被写入固件接口变量存储库
技术领域
本发明涉及计算设备,并且尤其涉及保护计算设备中信息。
背景技术
计算设备可以通过将信息保存于存储器的可以在计算设备的系统管理模式(SMM)下访问的部分中而保护信息免于被篡改。例如,计算设备可以在存储器的这样的部分中实现固件接口(FI)变量存储库,以保护所述存储库免于被篡改。在这样的例子中,在FI变量存储库中存储数据可以包括触发系统管理中断(SMI)以使得计算设备进入SMM,其中数据可以被写入存储库。
发明内容
根据本发明的第一方面,提供一种非暂时性机器可读存储介质,其编码有计算设备的处理资源可执行的指令,用于:响应于经由系统管理模式SMM将目标数据写入固件接口FI变量存储库的请求,在给定的SMM事件期间将所述目标数据存储于所述计算设备的系统管理存储器的变量存储库缓存中;在所述给定的SMM事件期间,更新提交列表以指示所述目标数据将被写入被实现于所述计算设备的非易失性存储器中的FI变量存储库,其中所述提交列表被存储于所述系统管理存储器中;以及通过在已经更新了所述提交列表之后退出所述SMM而结束所述给定的SMM事件,并且在所述给定的SMM事件期间没有至少某一部分所述目标数据被写入所述FI变量存储库。
根据本发明的第二方面,提供一种用于在计算设备中保护信息的系统,包括:缓存引擎,其响应于经由系统管理模式SMM将目标数据写入固件接口FI变量存储库的请求,在给定的SMM事件期间将所述目标数据存储于计算设备的系统管理存储器的变量存储库缓存中;更新引擎,其在所述给定的SMM事件期间,更新提交列表以指示所述目标数据将被写入被实现于所述计算设备的非易失性存储器中的FI变量存储库,其中所述提交列表被存储于所述系统管理存储器中;退出引擎,其通过在已经更新了所述提交列表之后退出所述SMM而结束所述给定的SMM事件,并且在所述给定的SMM事件期间没有至少某一部分所述目标数据被写入所述FI变量存储库;以及写入引擎,其在具有有限持续时间的至少一个补充SMM事件中的每一个期间,将在所述提交列表中指示的任意数据的相应部分写入所述FI变量存储库。
根据本发明的第三方面,提供一种用于在计算设备中保护信息的方法,包括:响应于经由系统管理模式SMM将目标数据写入固件接口FI变量存储库的请求,在给定的SMM事件期间将所述目标数据存储于计算设备的系统管理存储器的变量存储库缓存中;在所述给定的SMM事件期间,更新提交列表以指示所述目标数据将被写入被实现于所述计算设备的非易失性存储器中的FI变量存储库,其中所述提交列表被存储于所述系统管理存储器中;在所述给定的SMM事件期间,调度补充SMM事件;以及在更新了所述提交列表之后结束所述给定的SMM事件,并且在所述给定的SMM事件期间没有所述目标数据被写入所述FI变量存储库。
附图说明
以下具体实施方式对附图进行参考,其中:
图1是示例计算设备更新提交(commit)列表以指示数据将被写入固件接口(FI)变量存储库的框图;
图2是示例计算设备将提交列表中指示的数据写入FI变量存储库的框图;
图3是示例计算设备的框图,其包括在至少一个补充系统管理模式(SMM)事件期间将提交列表中指示的数据写入FI变量存储库的系统;
图4是用于更新提交列表以指示数据将被写入FI变量存储库的示例方法的流程图;以及
图5是用于在补充SMM事件期间将提交列表中指示的数据写入FI变量存储库的示例方法的流程图。
具体实施方式
如上所述,计算设备可以在存储器的可以在计算设备的系统管理模式(SMM)下访问的部分中实现固件接口(FI)变量存储库。在这种例子中,计算设备可以在SMM事件期间访问FI变量存储库。如本文所使用的,计算设备的“SMM事件”是计算设备处于SMM中的一段时间。在这种例子中,为了写入FI变量存储库,计算设备可以通过发布系统管理中断(SMI)以使得计算设备进入SMM而触发SMM事件。在SMM事件期间,计算设备可以将数据写入FI变量存储库,该存储库可以实现于(例如,存储于)计算设备的非易失性存储器设备中。
然而,在SMM事件期间将数据写入非易失性存储器设备可能会使得计算设备在不能接受的长时间内保持在SMM中。例如,如果非易失性存储器设备相对较慢、计算设备对非易失性存储器设备的访问相对较慢、待存储的数据量相对较大、或其组合,则在SMM中所花费的时间量可能太久。保持在SMM中太久会负面地影响计算设备的操作,例如,可能导致计算设备的操作系统(OS)的不稳定行为,或者甚至使得OS崩溃。
为了解决这些问题,响应于经由SMM将目标数据写入固件接口(FI)变量存储库的请求,本文所描述的例子可以将目标数据在给定的SMM事件期间存储于计算设备的系统管理存储器的变量存储库缓存中,在给定的SMM事件期间更新系统管理存储器的提交列表以指示目标数据将被写入FI变量存储库中,并在已经更新了提交列表之后结束给定的SMM事件且没有至少某一部分目标数据在给定的SMM事件期间被写入FI变量存储库。在本文所描述的例子中,在提交列表中指示的数据可以在给定SMM事件(其中更新了提交列表)之后的补充SMM事件期间被写入FI变量数据库。
以这种方式,本文所描述的例子可以退出SMM,而无需等待所有的目标数据被写入在计算设备的非易失性存储器中实现的FI变量存储库中。因此,本文所描述的例子可以响应于将数据写入FI变量存储库的请求,而限制在SMM中所花费的时间量。在一些例子中,系统管理存储器访问时间可以类似于计算设备的主存储器的访问时间,并因此可以比在计算设备的非易失性存储器中实现的FI变量存储库的访问时间快很多。此外,在本文所描述的一些例子中,每个补充SMM事件的长度可以被限制为防止计算设备在这种SMM事件期间保持在SMM中达过长时间。
现在参考附图,图1是示例性计算设备100更新提交列表以指示数据将被写入固件接口(FI)变量存储库的框图。如本文所使用的,“计算设备”可以是服务器(例如,机架型服务器、独立式服务器、至少一个刀片服务器、包括至少一个刀片服务器的刀片机箱、刀片机箱的分区(其中所述分区包括至少一个刀片服务器),等等)、工作站、台式计算机、笔记本计算机、平板计算机、移动电话、智能设备,或任意其它处理设备或装备。在图1的例子中,计算设备100包括处理资源110和编码有指令124、126、以及128的机器可读存储介质120。在一些例子中,存储介质120可以包括额外的指令。在一些例子中,指令124、126、128、以及本文所描述的与存储介质120有关的任意其它指令可以存储于远离计算设备100和处理资源110但可以被其访问的机器可读存储介质上。
在本文描述的例子中,处理资源可以包括例如一个处理器或多个处理器,其被包含于单个计算设备中或分散于多个计算设备中。如本文所使用的,“处理器”可以是以下项目中的至少一个:中央处理单元(CPU)、基于半导体的微处理器、图形处理单元(GPU)、配置为取回并执行指令的现场可编程门阵列(FPGA)、适用于取回并执行存储于机器可读存储介质上的指令的其它电子电路、或其组合。处理资源110可以取得、编码、以及执行存储于存储介质120上的指令以实现下文所描述的功能。在其它例子中,存储介质120的任意指令的功能可以以电子电路的形式、以在机器可读存储介质上编码的可执行指令的形式、或其组合的形式实现。
如本文所使用的,“机器可读存储介质”可以是任意的电子、磁、光、或其它物理存储装置,以包含或存储例如可执行指令、数据等的信息。例如,本文所描述的任意机器可读存储介质可以是以下中的任意一种:随机存取存储器(RAM)、易失性存储器、非易失性存储器、闪存、存储驱动器(例如,硬盘)、任意类型的存储盘(例如,光盘只读存储器(CD-ROM)、任意其它类型的光盘、DVD等)等等,或其组合。此外,本文所描述的任意的机器可读存储介质可以是非暂时性的。
计算设备100还包括系统管理存储器140。在一些例子中,系统管理存储器140可以是RAM,例如系统管理RAM(SMRAM)。在一些例子中,系统管理存储器140可以是计算设备100的主存储器的一部分。在这种例子中,形成系统管理存储器140的主存储器的部分可以由SMM中的计算设备100访问而对于计算设备100的任意OS则不可访问。在一些例子中,可以通过计算设备100的至少一个存储器设备来实现主存储器。在其它例子中,系统管理存储器140可以是任意的机器可读存储介质。
在图1的例子中,响应于经由SMM将目标数据148写入FI变量存储库的请求,指令124可以在给定的SMM事件期间将目标数据148存储在变量存储库缓存142中。变量存储库缓存142可以被存储于系统管理存储器140中。在本文描述的例子中,系统管理模式(SMM)可以是如下的模式:其中在计算设备的任意OS挂起的同时计算设备可以操作,并且其中OS不可访问的计算设备的资源(或资源的一部分)对计算设备是可访问的。例如,资源的特定部分(如,存储器设备的特定部分)可能对于计算设备的OS是不可访问的,但是对于当计算设备处于SMM时运行计算设备的固件的计算设备的部件是可访问的。在本文描述的例子中,计算设备的资源可以是计算设备的任意部件(例如,存储器设备、机器可读存储介质、处理资源等)或功能。在一些例子中,系统管理存储器140(例如,SMRAM)可能对计算设备100的OS是不可访问的,而对于SMM中的计算设备100是可访问的。在本文描述的例子中,在SMM中可访问而对OS“不可访问”的计算设备的资源(或资源的一部分)可以是不依赖于SMM的OS不可访问的资源或资源的一部分。另外,在本文所描述的一些例子中,对OS不可访问并在SMM期间对计算设备可访问的计算设备的资源(或其一部分)在将控制交给OS之前的启动计算设备的OS的启动过程期间对计算设备可以也是可访问的。
在一些例子中,经由SMM将目标数据148写入FI变量存储库的请求可以是计算设备100的OS或固件对调用SMM以将数据写入FI变量存储库的服务的调用。在这种例子中,响应于所述调用(直接或间接地),指令124可以将目标数据148在给定的SMM事件期间存储在变量存储库缓存142中。在一些例子中,服务例如可以是对计算设备100的OS和固件中的至少一个可用的“SetVariable”服务。在一些例子中,响应于对服务的调用,计算设备100可以触发使得计算设备100进入SMM的SMI,由此开始给定的SMM事件,其中指令124可以将目标数据148存储于变量存储库缓存142。在本文描述的例子中,“固件”可以是存储于至少一个机器可读存储介质上且可由计算设备的处理资源执行的指令。
在图1的例子中,变量存储库缓存142可以被存储于系统管理存储器140,并可以被维持为FI变量存储库的系统管理存储器140副本。在一些例子中,FI变量存储库可以实现于计算设备100的非易失性存储器中。在这种例子中,FI变量存储库可以实现于计算设备100的非易失性存储器设备中,其与包括系统管理存储器140的存储器设备分离开。在一些例子中,数据可以在被写入FI变量存储库之前,被写入变量存储库缓存142中。
在本文描述的例子中,FI变量存储库可以是计算设备的固件接口的变量存储库。在本文描述的例子中,计算设备的固件接口可以包括一组可执行指令以提供计算设备的固件和计算设备的OS之间的接口。在一些例子中,固件接口可以包括依据统一可扩展固件接口(UEFI)规范的接口、以及依据可扩展固件接口(EFI)规范的接口、基本输入/输出系统(BIOS)等,或其组合。
在本文描述的例子中,FI变量存储库可以是用于存储计算设备的OS和固件的数据的存储库。在这种例子中,OS或固件可以通过调用服务(例如,如上所述的SetVariable服务)经由SMM写入FI变量存储库。在这种例子中,OS或固件可以使用SetVariable服务来将变量写入FI变量存储库以在稍后经由SMM或在计算设备的启动期间读回。例如,OS可以使用SetVariable服务将数据写入FI变量存储库,从而当下次系统启动OS时数据对于计算设备可用,由此以某种方式影响计算设备的行为。
在图1的例子中,提交列表150可以存储于系统管理存储器140中。提交列表150可以是将写入FI变量存储库的数据的列表。在一些例子中,响应于经由SMM将目标数据148写入FI变量存储库的请求,在给定SMM事件期间,指令126可以更新提交列表150以指示目标数据148将被写入FI变量存储库。例如,指令126可以通过向提交列表150写入指示152来更新提交列表150,所述指示152为:目标数据148将被写入FI变量存储库。例如,指令126可以将目标数据148作为指示152写入提交列表150。在其它例子中,指令126可以向提交列表150写入对目标数据148的参考作为指示152。在这种例子中,参考可以至少包括目标数据148存储在变量存储库缓存142中的位置以及目标数据148的大小。
在一些例子中,指令128可以通过在提交列表150已经由指令126更新之后退出SMM而结束给定的SMM事件,并且在给定的SMM事件期间没有至少某一部分目标数据148被写入FI变量存储库。例如,指令128可以退出SMM,并由此结束给定的SMM事件,而在给定的SMM事件期间没有任何目标数据148被写入FI变量存储库。在这种例子中,指令128可以在指令126已经更新了提交列表150以指示目标数据148将被写入FI变量存储库之后,以及在任何目标数据148被写入FI变量存储库之前,结束给定的SMM事件。在其它例子中,指令128可以在目标数据148的第一部分在给定的SMM事件期间被写入FI变量存储库之后,且在目标数据148的第二部分被写入FI变量存储库之前,结束给定的SMM事件。在这种例子中,指令128可以在所有目标数据148被写入FI变量存储库之前结束给定的SMM事件。在本文描述的例子中,结束SMM事件包括退出SMM。在一些例子中,在结束给定的SMM事件之后在提交列表150中指示的数据可以在更新了提交列表150的给定的SMM事件之后在补充SMM事件期间被写入FI变量存储库中。在本文描述的例子中,补充SMM事件可以是在给定的SMM事件(在此期间更新了提交列表以指示数据将被写入FI变量存储库)之后发生的SMM事件。
在一些例子中,指令124、126、以及128可以是安装包的一部分,所述安装包在被安装时可以由处理资源110执行以实现本文描述的与指令124、126、以及128有关的功能。在这种例子中,存储介质120可以是便携式介质,例如CD、DVD、或闪速驱动器,或者服务器所维持的存储器(可以从其下载并安装所述安装包)。在其它例子中,指令124、126、以及128可以是在包括处理资源110的计算设备100中已安装的应用、多个应用、或部件中的一部分。在这种例子中,存储介质120可以包括诸如硬盘驱动器、固态驱动器等的存储器。在一些例子中,结合图1在本文描述的功能可以与结合图2-5中任一幅在本文描述的功能组合提供。
图2是示例性计算设备200将在提交列表150中指示的数据写入FI变量存储库中的框图。在图2的例子中,计算设备200包括处理资源110(如上结合图1所描述的),以及包括指令124、126、以及128的存储介质120(如上结合图1所描述的)。在图2的例子中,存储介质120还可以包括指令230、232、以及234。在一些例子中,存储介质120可以包括额外的指令。在其它例子中,指令124、126、128、230、232、234以及本文所描述的与存储介质120有关的任意其它指令可以被存储于远离计算设备100和处理资源110但可以被其访问的机器可读存储介质上。计算设备200还可以包括如上结合图1所描述的存储在系统管理存储器140中的变量存储库缓存140和提交列表150。在图2的例子中,计算设备200还包括实现于(例如,存储于)计算设备200的非易失性存储器260中的FI变量存储库262。
在图2的例子中,响应于经由SMM将目标数据148写入FI变量存储库的请求,指令124可以在给定的SMM事件期间将目标数据148存储在系统管理存储器140的变量存储库缓存142中,如以上结合图1所描述的。同样响应于所述请求,在给定SMM事件期间,指令126可以更新提交列表150以指示目标数据148将被写入FI变量存储库,如以上结合图1所描述的。例如,如上所述,指令126可以将指示152写入提交列表150中。
在一些例子中,在给定的SMM事件期间,指令230可以调度至少一个补充SMM事件。例如,指令230可以调度补充SMM事件以在给定的SMM事件已经结束并且计算设备200的OS已经重新获得对计算设备200的控制之后在某一时间点发生。在其它例子中,指令230可以将计算设备200配置为开始触发周期性补充SMM事件。在一些例子中,指令230可以通过写入适当的物理寄存器、在存储器中配置将被计算设备200的可执行指令使用的适当设定、或者以任意其它合适的方式,来调度单个或周期性SMM事件。
指令128可以通过在提交列表150已经由指令126更新之后退出SMM而结束给定的SMM事件,并且在给定的SMM事件期间没有至少某一部分目标数据148被写入FI变量存储库。在一些例子中,指令128可以在指令230调度至少一个补充SMM事件之后结束给定的SMM事件。在一些例子中,在每个补充SMM事件期间,指令232可以将在提交列表150中指示的任意数据的相应部分写入FI变量存储库262中。在其它例子中,在至少一些补充SMM事件中的每一个期间,指令232可以将在提交列表150中指示的任意数据的相应部分写入FI变量存储库262中。在这种例子中,在一些补充SMM事件期间,指令232可以不将在提交列表150中指示的任意数据写入FI变量存储库262中。在本文描述的例子中,指令232可以将数据写入FI变量存储库262中,或者可以使得计算设备200的其它部件、计算设备200的其它可执行指令(例如,驱动器)等将数据写入FI变量存储库262中。
在一些例子中,在给定的SMM事件之后至少一个补充SMM事件中的每一个期间,指令232可以针对将写入FI变量存储库中的数据的任意指示而检查提交列表150。例如,在给定的SMM事件之后的补充SMM事件期间,指令232可以检查提交列表150并识别目标数据148仍要被写入FI变量存储库262的指示152。在这种例子中,指令232可以在补充SMM事件期间,将在提交列表150中指示的目标数据148的至少一部分写入FI变量存储库262中。在其它例子中,在多个补充SMM事件的相应补充SMM事件期间,指令232可以将在提交列表150中指示的目标数据的相应部分写入FI变量存储库262中。在这种例子中,在其中将数据写入FI变量存储库262的多个补充SMM事件可能不是连续的补充SMM事件。例如,在其中没有数据被写入FI变量存储库262的补充SMM事件可以发生于将数据写入FI变量存储库262的多个补充SMM事件之间、在写入数据的多个补充SMM事件之前,或其组合。
在一些例子中,每个补充SMM事件的持续时间是有限的。在这种例子中,在每个补充SMM事件期间,指令234可以确定在补充SMM事件期间是否已经达到SMM时间限制。在本文描述的例子中,SMM时间限制的值可以是可配置的。在一些例子中,SMM时间限制的长度可以是大约100ms,或者任意其它适当的时间量。
如上所述,在一些例子中,在补充SMM事件期间,指令232可以将在提交列表150中指示的至少一部分目标数据148写入FI变量存储库262。在一些例子中,在补充SMM事件中,在提交列表150中指示的仍要被写入的目标数据148(或其一部分)的尺寸太大而不能写入FI变量存储库262。在这种例子中,在补充SMM事件期间,在所有指示的目标数据148已经被写入FI变量存储库262之前,在补充SMM事件期间,指令234可以确定已经达到SMM时间限制。响应于所述确定,指令128可以结束补充SMM事件。在这种例子中,指令128可以结束补充SMM事件,而不管在提交列表150中的任意数据是否被指示为仍要被写入FI变量存储库。
在这种例子中,在确定已经达到SMM时间限制之后以及在指令128结束补充SMM事件之前,指令126可以更新提交列表150以指示在补充SMM事件开始时提交列表150中指示的数据的哪部分仍要在补充SMM事件之后被写入FI变量存储库262。在这种例子中,当补充SMM事件结束时,提交列表150可以指示在补充SMM事件之后仍要被写入FI变量存储库262的数据。
在一些例子中,如果提交列表150指示在补充SMM事件之后数据仍要被写入FI变量存储库262并且计算设备200当前不被配置为触发周期性SMM事件,则指令230可以在指令128结束补充SMM事件之前调度另一补充SMM事件。在这种例子中,可以使用额外的SMM事件来继续将数据写入FI变量存储库262。如果计算设备200当前被配置为周期性触发补充SMM事件,则将无需进一步的调度而将触发额外SMM事件以继续写入FI变量存储库262。在其它例子中,如果在补充SMM事件之后没有数据仍要被写入FI变量存储库262,并且指令230先前将计算设备200配置为周期性触发补充SMM事件,则在结束当前补充SMM事件之前,指令230可以将计算设备200配置为停止周期性触发补充SMM事件。
在一些例子中,在每个补充SMM事件期间,指令232可以在指令234检测到已经达到SMM时间限制之前写入在提交列表150中指示可以写入的任意数据的任何量。在这种例子中,指令232可以将在提交列表150中指示的数据以提交列表150中指定的顺序写入FI变量存储库262,并开始于先前SMM事件(如果有的话)的写操作被停止的数据中的点。在这种例子中,如果在SMM事件期间目标数据148的第一部分被写入FI变量存储库262中,则在补充SMM事件期间指令232可以将目标数据148的剩余部分(或下一部分)写入FI变量存储库262中。
在一些例子中,指令124、126、128、230、232、234以及存储介质120的任意其它指令可以是安装包的一部分,所述安装包在被安装时可以由处理资源110执行以实现本文结合指令124、126、128、230、232、以及234所描述的功能。在这种例子中,存储介质120可以是便携式介质,例如CD、DVD、或闪速驱动器,或者服务器所维持的存储器(从其可以下载和安装所述安装包)。在其它例子中,指令124、126、128、230、232、以及234可以是已经安装于包括处理资源110的计算设备100上的应用、多个应用、或部件的一部分。在这种例子中,存储介质120可以包括存储器,例如硬盘驱动器、固态驱动器等。在一些例子中,可以组合在本文中结合图1和图3-5中任一幅所描述的功能提供在本文中结合图2所描述的功能。
图3是示例性计算设备300的框图,所述计算设备300包括在至少一个补充SMM事件期间将在提交列表中指示的数据写入FI变量存储库的系统320。在图3的例子中,计算设备300包括系统管理存储器140,如以上结合图1所描述的。如上结合图1所描述的,计算设备300还包括变量存储库缓存142和提交列表150,其每一个存储于系统管理存储器140中。计算设备300还包括在非易失性存储器260中实现的FI变量存储库262,如上结合图2所描述的。
在图3的例子中,系统320包括引擎324、326、327、328、330、以及332。在一些例子中,系统320可以包括额外的引擎。引擎324、326、327、328、330、332中的每一个以及系统320的任意其它引擎可以是硬件和编程的任意组合以实现相应引擎的功能。硬件和编程的这种组合可以以多种不同方式实现。例如,编程可以是存储于非暂时性机器可读存储介质上的处理器可执行指令,而硬件可以包括执行这些指令的处理资源。在这种例子中,机器可读存储介质可以存储指令,所述指令当被处理资源执行时实现系统320。存储指令的机器可读存储介质可以集成在与执行指令的处理资源相同的计算设备中,或者机器可读存储介质可以是分离的但是对于计算设备和处理资源是可访问的。处理资源可以是一个处理器或多个处理器,其被包含于单个计算设备中或跨多个计算设备分布。
在一些例子中,指令可以是当被安装时可以由处理资源执行以实现系统320的安装包的一部分。在这种例子中,机器可读存储介质可以是便携式介质,例如CD、DVD、或闪速驱动器,或者由服务器所维持的存储器(可以从其下载并安装所述安装包)。在其它例子中,指令可以是在包括处理资源的计算设备中已安装的应用、多个应用、或部件中的一部分。在这种例子中,机器可读存储介质可以包括诸如硬盘驱动器、固态驱动器等的存储器。
在图3的例子中,响应于经由SMM将目标数据148写入FI变量存储库262的请求,缓存引擎324可以在给定的SMM事件期间将目标数据148存储于计算设备300的系统管理存储器140的变量存储库缓存142中,如以上结合图1的指令124所描述的。在一些例子中,经由SMM将目标数据148写入FI变量存储库的请求可以是计算设备100的OS或固件对可以调用SMM以将数据写入FI变量存储库的服务的调用,如以上结合图1所描述的。在这种例子中,响应于对服务的调用,计算设备100可以触发可以使得计算设备100进入SMM的SMI,并且由此开始给定的SMM事件,在其中引擎324可以将目标数据148存储于变量存储库缓存142中,如以上结合图1的指令124所描述的。
在图3所示出的例子中,将目标数据148存储于FI变量存储库262的请求可以跟随在将可变数据144和146分别存储于FI变量存储库262的先前请求之后。在这种例子中,响应于先前请求,缓存引擎324可以在相应的SMM事件期间将可变数据144和146存储于变量存储库缓存142中,如以上结合目标数据148所描述的。在这种例子中,如图3所示,当缓存引擎324在给定的SMM事件期间将目标数据148存储于变量存储库缓存142时,可变数据144和146可能已经被存储于变量存储库缓存142中。
还响应于经由SMM将目标数据148写入FI变量存储库中的请求,在给定的SMM事件期间,更新引擎326可以更新提交列表150以指示目标数据148将被写入FI变量存储库262,如上结合图1所描述的。如上所述,提交列表150可以是将写入FI变量存储库262的数据的列表。在图3的例子中,响应于存储可变数据144和146的先前请求,更新引擎326在相应的SMM事件期间可以更新提交列表150以指示可变数据144和146中的每一个将被写入FI变量存储库262中。例如,可变数据144和146中的每一个可被写入提交列表150中。
在图3的例子中,给定的SMM事件可以发生在已经将可变数据144写入FI变量存储库262并且提交列表150已经被更新以移除可变数据144仍要被写入FI变量存储库262的指示之后。在这种例子中,当更新引擎326更新提交列表150以指示目标数据148将被写入FI变量存储库262时,如图3所示,提交列表150可仍指示可变数据146将被写入FI变量存储库262。
在一些例子中,更新引擎326用于在提交列表150中指定请求将数据写入FI变量存储库262中的顺序。在这种例子中,在提交列表150中指定的顺序还可以是将数据写入FI变量存储库262的顺序。以这种方式,本文所描述的例子可以将数据以数据被请求写入FI变量存储库262的顺序写入FI变量存储库262中。更新引擎326可以以任意适当的方式在提交列表中指定顺序。例如,数据或对数据的参考可以以数据被请求写入FI变量存储库262的顺序存储于提交列表150中。
在图3的例子中,调度引擎327可以在给定的SMM事件期间调度至少一个补充SMM事件。在这种例子中,调度补充SMM事件可以使得计算设备300在给定的SMM事件之后再次进入SMM。在一些例子中,在给定的SMM事件期间,引擎327可以调度一个补充SMM事件。在这种例子中,引擎327可以将计算设备300配置为在给定的SMM事件已经结束并且计算设备300的OS已经恢复操作之后就进入SMM。在这种例子中,在每个补充SMM事件期间,如果仍有数据在补充SMM事件之后要被写入FI变量存储库262,则引擎327可以调度另一补充SMM事件,其中写入引擎330可以继续写入FI变量存储库262。在其它例子中,在给定的SMM事件期间,引擎327可以通过将计算设备300配置为周期性进入SMM而调度至少一个补充SMM事件。
在一些例子中,如以上结合图1描述的,响应于更新提交列表150以指示目标数据148将被写入FI变量存储库262,引擎327可以调度补充SMM事件。例如,引擎327可以通过将合适的配置数据写入计算设备300的SMM事件调度存储装置355中,而调度补充SMM事件。在一些例子中,存储装置355可以是计算设备300的物理寄存器、计算设备300的可执行指令所使用的存储器的区域,等等。在其它例子中,引擎327可以以任意其它适当的方式调度补充SMM事件。
在一些例子中,响应于提交列表150被从空状态更新为指示数据将被写入FI变量存储库262,引擎327可以将计算设备300配置为周期性触发补充SMM事件(例如,通过周期性触发SMI以进入SMM)。在本文描述的例子中,提交列表150的空状态可以是提交列表没有指示任何数据将被写入FI变量存储库262的状态。作为例子,如果提交列表150在给定的SMM事件之前是空的,且在给定的SMM事件期间引擎326更新提交列表150以指示目标数据148将被写入FI变量存储库262,则作为响应,引擎327可以将计算设备300配置为周期性触发补充SMM事件。
在这种例子中,响应于确定提交列表150没有指示任意数据仍要被写入FI变量存储库,调度引擎327还可以将计算设备300配置为停止补充SMM事件的周期性触发。例如,如果在补充SMM事件之一期间完成在提交列表150中指示的目标数据148的写入,则写入引擎可以确定提交列表150没有指示任何进一步的数据将被写入FI变量存储库262。作为响应,调度引擎327可以将计算设备300配置为停止补充SMM事件的周期性触发。
在图3的例子中,退出引擎328可以通过在提交列表150已经被更新之后退出SMM,来结束给定的SMM事件(并且在给定的SMM事件期间没有至少某一部分目标数据148被写入FI变量存储库262),如以上结合图1的指令128所描述的。另外,在一些例子中,调度引擎327可以在引擎328结束给定的SMM事件之前调度至少一个补充SMM事件。
在一些例子中,每个补充SMM事件可以具有有限持续时间。在这种例子中,对于每个补充SMM事件,退出引擎328可以响应于在补充SMM事件期间达到SMM时间限制而结束补充SMM事件。例如,在每个补充SMM事件期间,写入引擎330可以确定是否已经达到SMM限制。响应于达到SMM时间限制,引擎328可以结束补充SMM事件,而不管在提交列表150中是否有任何数据被指示为仍要被写入FI变量存储库262。在这种例子中,在确定已经达到SMM时间限制之后,以及在引擎328结束补充SMM事件之前,引擎326可以更新提交列表150以指示在补充SMM事件开始时在提交列表150中指示的数据的哪部分在补充SMM事件之后仍要被写入FI变量存储库262。
在图3的例子中,写入引擎330可以在有限持续时间的至少一个补充SMM事件中的每一个期间将在提交列表150中指示的任意数据的相应部分写入FI变量存储库262。在本文描述的例子中,有限持续时间的补充SMM事件可以是持续时间受SMM时间限制和退出引擎328限制的补充SMM事件,如上所述。在这种例子中,在每个补充SMM事件期间,写入引擎330可以将在提交列表150中指示的任意数据的至少一部分写入FI变量存储库262。在SMM事件期间由引擎330写入FI变量存储库262的数据量可能取决于SMM时间限制的长度。例如,在补充SMM事件期间,引擎330可以写入在SMM时间限制达到之前它能够写入的足够多的在提交列表150中指示的数据。在其它例子中,引擎330可以在至少一些补充SMM事件中的每一个期间将在提交列表150中指示的任意数据的相应部分写入FI变量存储库262。在这种例子中,引擎330可以在一些补充SMM事件期间不将在提交列表150中指示的任意数据写入FI变量存储库262。在本文描述的例子中,写入引擎330可以将数据写入FI变量存储库262,或者可以使得计算设备300的其它部件、计算设备300的其它可执行指令(例如,驱动器)等将数据写入FI变量存储库262。
由于每个补充SMM事件具有有限持续时间,所以单个补充SMM事件可能不够长以将提交列表150中指示的所有的数据写入FI变量存储库262。在这种例子中,写入引擎330可以在多个补充SMM事件的过程中将在提交列表150中指示的数据写入FI变量存储库262。在这种例子中,写入引擎330可以在至少一些补充SMM事件中的每一个期间将提交列表150中指示的数据的相应部分写入FI变量存储库262。在一些例子中,写入引擎330在至少一个补充SMM事件期间可以不将任意所指示的数据写入FI变量存储库262。
在一些例子中,写入引擎330以在提交列表150中指定的顺序将提交列表150中指示的数据写入FI变量存储库262。在这种例子中,在相应的补充SMM事件期间,写入引擎330可以将提交列表150中指示的数据的相应部分写入FI变量存储库262,从而以提交列表150中指定的顺序写入所指示的数据。在图3所示出的例子中,例如,在给定的SMM事件期间,在引擎326更新提交列表150以指示目标数据148将被写入FI变量存储库262之后,提交列表150可以指示可变数据146和目标数据148将被写入FI变量存储库262,并且可以指定可变数据146被请求在目标数据148之前被写入。
在这种例子中,在有限持续时间的相应的补充SMM事件期间,写入引擎330可以将提交列表150中指示的数据146和148的相应部分写入FI变量存储库262。例如,在一个补充SMM事件期间,或者在多个补充SMM事件的过程中,写入引擎330可以将可变数据146和目标数据148以提交列表150中指定的顺序写入FI变量存储库262。
在图3的例子中,系统320还包括故障引擎332。在一些例子中,响应于检测到计算设备300的故障条件,故障引擎332可以触发写入引擎330来将在提交列表150中指示的任意数据写入FI变量存储库262。在一些例子中,故障条件可以是指示计算设备300或其某部分(例如,计算设备300的OS)的故障的任意条件。在一些例子中,故障条件可以由系统异常(例如,中断的类型)、机器检查等指示。在图3的例子中,响应于在将数据146和148写入FI变量存储库262之前检测到故障条件,引擎332可以在计算设备300的任意重置之前使得写入引擎330将数据146和148写入FI变量存储库262。以这种方式,当计算设备300的故障条件发生时,本文所描述的例子因为没有将提交列表150中指示的数据写入FI变量存储库262而可以防止计算设备300丢失所述数据。
在其它例子中,在响应于计算设备300的故障条件而执行的计算设备300的启动过程期间,故障引擎332可以使得写入引擎330将在提交列表150中指示的任意数据写入FI变量存储库262。例如,响应于计算设备300的故障条件,计算设备300可以被手动重置,或者可以通过故障条件的检测而触发重置。在重置之后,计算设备300可以开始启动过程以启动计算设备300的OS。在这种例子中,在启动过程期间,故障引擎332可以检测到提交列表150指示数据将被写入FI变量存储库262。响应于检测到提交列表150中指示的数据,在启动过程期间,引擎332可以使得写入引擎330将提交列表150中指示的数据写入FI变量存储库262。在这种例子中,提交列表150被存储于当发生计算设备300的重置时数据未丢失的存储器的区域中。在一些例子中,变量存储库缓存142也可以被存储于当发生计算设备300的重置时数据未丢失的存储器的区域中。另外,在这种例子中,在启动过程期间,FI变量存储库262和系统管理存储器140(包括变量存储库缓存142)对于计算设备300的部件可以是可访问的。
虽然在图3的例子中响应于相应的请求而将数据144、146、以及148写入变量存储库缓存142和FI变量存储库262中,但在其它例子中,可以响应于写入FI变量存储库262的任意数量的请求而将数据写入缓存142和变量存储库262中。在一些例子中,可以组合本文结合图1-2和4-5中任一幅描述的功能来提供本文结合图3所描述的功能。
图4是用于更新提交列表以指示数据将被写入FI变量存储库的示例性方法400的流程图。虽然以下参考图3的计算设备300描述了方法400的执行,但也可以使用执行方法400的其它适当的计算设备(例如,计算设备100或200)。另外,方法400的实现方式不局限于这种例子。
在方法400的405处,响应于经由SMM将目标数据148写入FI变量存储库262的请求,引擎324可以在给定的SMM事件期间将目标数据148存储在计算设备300的系统管理存储器140的变量存储库缓存142中。在410处,更新引擎326在给定的SMM事件期间可以更新提交列表150以指示目标数据148将被写入FI变量存储库262。如上所述,FI变量存储库262可以实现于计算设备300的非易失性存储器中,并且提交列表150可以存储于系统管理存储器140中。
在415处,在给定的SMM事件期间,如上所述,调度引擎327可以调度补充SMM事件。调度引擎327可以响应于经由SMM将目标数据148写入FI变量存储库262的请求而调度补充SMM事件。在一些例子中,调度引擎327可以通过将计算设备300配置为周期性触发后续SMM事件而调度补充SMM事件,其中后续SMM事件之一是补充SMM事件。在其它例子中,引擎327可以调度一个补充SMM事件。
在420处,退出引擎328可以在提交列表150被更新之后结束给定的SMM事件,并且在给定的SMM事件期间没有目标数据148被写入FI变量存储库262。在这种例子中,退出引擎328可以在任意目标数据148被写入FI变量存储库262之前结束给定的SMM事件,使得目标数据148在至少一个补充SMM事件期间被写入FI变量存储库262。
虽然图4的流程图示出了某些功能的执行的特定顺序,但方法400不限于此顺序。例如,在流程图中连续示出的功能可以以不同的顺序被执行,可以并发地或局部并发地被执行,或者以其组合方式被执行。在一些例子中,可以组合本文结合图1-3和5中任一幅描述的功能而提供本文结合图4描述的功能。
图5是用于在补充SMM事件期间将提交列表中指示的数据写入FI变量存储库的示例方法500的流程图。虽然在以下参考图3的计算设备300描述了方法500的执行,但也可以使用执行方法500的其它适当的系统(例如,计算设备100或200)。另外,方法500的实现方式不限于这种例子。
在方法500的505处,响应于经由SMM将目标数据148写入FI变量存储库262的请求,引擎324可以在给定的SMM事件期间将目标数据148存储于计算设备300的系统管理存储器140的变量存储库缓存142中。在510处,更新引擎326在给定的SMM事件期间可以更新提交列表150以指示目标数据148将被写入FI变量存储库262。如上所述,FI变量存储库262可以被实现于计算设备300的非易失性存储器中,并且提交列表150可以被存储于系统管理存储器140中。
在515处,在给定的SMM事件期间,调度引擎327可以调度补充SMM事件,如上所述。调度引擎327可以响应于经由SMM将目标数据148写入FI变量存储库262的请求而调度补充SMM事件。在520处,退出引擎328可以在提交列表150被更新之后结束给定的SMM事件,并且在给定的SMM事件期间没有目标数据148被写入FI变量存储库262。在这种例子中,退出引擎328可以在任意目标数据148被写入FI变量存储库262之前结束给定的SMM事件,使得目标数据148在至少一个补充SMM事件期间被写入FI变量存储库262。
在给定的SMM事件结束之后,计算设备300可以触发已调度的525处的补充SMM事件。在一些例子中,计算设备300可以触发SMI以使得计算设备300进入SMM并由此开始525处的补充SMM事件。
在530处,在补充SMM事件期间,写入引擎330可以将提交列表150中指示的任意数据的至少一部分写入FI变量存储库262。例如,如果提交列表150指示一部分可变数据146和所有目标数据148将被写入FI变量存储库262,则写入引擎330可以在补充SMM事件期间将所指示的可变数据146的部分写入FI变量存储库262。在一些例子中,如上所述,在一些补充SMM事件期间,数据可以不被写入FI变量存储库262。
在535处,写入引擎330可以确定在补充SMM事件期间是否已经达到SMM时间限制。如果没有,则写入引擎330可以返回到530以继续将在提交列表150中指示的数据写入FI变量存储库262。如果在535处确定在补充SMM事件期间已经达到SMM时间限制,则方法500可以进行到540。
在540处,响应于确定出在补充SMM事件期间已经达到SMM时间限制,更新引擎326可以更新提交列表150以指示在补充SMM事件之前在提交列表150中所指示的任意数据仍要在补充SMM事件之后被写入FI变量存储库262。例如,如果写入引擎330在达到SMM时间限制之前将提交列表150中指示的可变数据146的一部分写入FI变量存储库262,则在540处,更新引擎326可以更新提交列表150以指示目标数据148在补充SMM事件之后仍要被写入FI变量存储库262。例如,更新引擎326可以将可变数据146的所述部分的指示从提交列表150移除。
在545处,调度引擎327可以确定提交列表150是否指示仍有数据在补充SMM事件之后要被写入FI变量存储库262。如果不是,则方法500可以进行到555,在其中方法500可以结束。如果引擎327在545处确定提交列表150指示在补充SMM事件之后数据仍要被写入FI变量存储库262,则方法500可以进行到550。
在550处,响应于确定提交列表150指示在补充SMM事件之后数据仍要被写入FI变量存储库262,引擎327在补充SMM事件期间可以调度另一补充SMM事件。在这种例子中,在额外的补充SMM事件期间,至少一部分目标数据148可以被写入FI变量存储库262。在调度另一补充SMM事件之后,方法500可以返回到525。
虽然图5的流程图示出了某些功能的性能的具体顺序,但方法500并不局限于所述顺序。例如,在流程图中连续示出的功能可以以不同的顺序被执行,可以并发地或者局部并发地被执行,或者以其组合方式被执行。在一些例子中,可以组合本文中结合图1-4中任一幅描述的功能提供本文中结合图5所描述的功能。

Claims (15)

1.一种非暂时性机器可读存储介质,其编码有计算设备的处理资源可执行的指令,用于:
响应于经由系统管理模式SMM将目标数据写入固件接口FI变量存储库的请求,在给定的SMM事件期间将所述目标数据存储于所述计算设备的系统管理存储器的变量存储库缓存中;
在所述给定的SMM事件期间,更新提交列表以指示所述目标数据将被写入被实现于所述计算设备的非易失性存储器中的FI变量存储库,其中所述提交列表被存储于所述系统管理存储器中;以及
通过在已经更新了所述提交列表之后退出所述SMM而结束所述给定的SMM事件,并且在所述给定的SMM事件期间没有至少某一部分所述目标数据被写入所述FI变量存储库。
2.如权利要求1所述的存储介质,还包括用于以下的指令:
在所述给定的SMM事件期间,调度补充SMM事件;以及
在所述补充SMM事件期间,将在所述提交列表中指示的所述目标数据的至少一部分写入所述FI变量存储库。
3.如权利要求2所述的存储介质,还包括用于以下的指令:
确定在所述补充SMM事件期间已经达到SMM时间限制;
其中,用于结束所述SMM事件的所述指令还包括用于响应于所述确定而不管在所述提交列表中是否有任意数据被指示为仍要被写入所述FI变量存储库,结束所述补充SMM事件的指令。
4.如权利要求1所述的存储介质,还包括用于以下的指令:
在多个补充SMM事件中的相应补充SMM事件期间,将在所述提交列表中指示的所述目标数据的相应部分写入所述FI变量存储库。
5.如权利要求1所述的存储介质,其中,用于更新所述提交列表的所述指令包括用于将所述目标数据写入所述提交列表的指令。
6.如权利要求1所述的存储介质,其中,用于更新所述提交列表的所述指令包括用于将对所述目标数据的参考写入所述提交列表的指令,所述参考至少包括所述目标数据被存储在所述变量存储库缓存中的位置。
7.一种用于在计算设备中保护信息的系统,包括:
缓存引擎,其响应于经由系统管理模式SMM将目标数据写入固件接口FI变量存储库的请求,在给定的SMM事件期间将所述目标数据存储于计算设备的系统管理存储器的变量存储库缓存中;
更新引擎,其在所述给定的SMM事件期间,更新提交列表以指示所述目标数据将被写入被实现于所述计算设备的非易失性存储器中的FI变量存储库,其中所述提交列表被存储于所述系统管理存储器中;
退出引擎,其通过在已经更新了所述提交列表之后退出所述SMM而结束所述给定的SMM事件,并且在所述给定的SMM事件期间没有至少某一部分所述目标数据被写入所述FI变量存储库;以及
写入引擎,其在具有有限持续时间的至少一个补充SMM事件中的每一个期间,将在所述提交列表中指示的任意数据的相应部分写入所述FI变量存储库。
8.如权利要求7所述的系统,还包括:
调度引擎,其在所述给定的SMM事件期间,调度所述至少一个补充SMM事件中的一个。
9.如权利要求7所述的系统,还包括:
调度引擎,其将所述计算设备配置为响应于所述提交列表从空状态被更新为指示数据将被写入所述FI变量存储库,而周期性地触发所述至少一个补充SMM事件中的相应的一个;
其中,所述调度引擎还将所述计算设备配置为响应于确定所述提交列表没有指示任意数据仍要被写入所述FI变量存储库而停止补充SMM事件的周期性触发;以及
其中,对于所述至少一个补充SMM事件中的每一个,所述退出引擎响应于在该补充SMM事件期间达到SMM时间限制而结束该补充SMM事件。
10.如权利要求7所述的系统,其中:
所述更新引擎在所述提交列表中指定所述提交列表中指示的任意数据被请求写入所述FI变量存储库的顺序;以及
所述写入引擎以在所述提交列表中指定的所述顺序将所述提交列表中指示的任意数据写入所述FI变量存储库。
11.如权利要求10所述的系统,还包括:
故障引擎,其响应于所述计算设备的故障条件,触发所述写入引擎以将在所述提交列表中指示的任意数据写入所述FI变量存储库。
12.如权利要求10所述的系统,还包括:
故障引擎,其使得所述写入引擎在响应于所述计算设备的故障条件而执行的所述计算设备的启动过程期间,将在所述提交列表中指示的任意数据写入所述FI变量存储库。
13.一种用于在计算设备中保护信息的方法,包括:
响应于经由系统管理模式SMM将目标数据写入固件接口FI变量存储库的请求,在给定的SMM事件期间将所述目标数据存储于计算设备的系统管理存储器的变量存储库缓存中;
在所述给定的SMM事件期间,更新提交列表以指示所述目标数据将被写入被实现于所述计算设备的非易失性存储器中的FI变量存储库,其中所述提交列表被存储于所述系统管理存储器中;
在所述给定的SMM事件期间,调度补充SMM事件;以及
在更新了所述提交列表之后结束所述给定的SMM事件,并且在所述给定的SMM事件期间没有所述目标数据被写入所述FI变量存储库。
14.如权利要求13所述的方法,还包括:
在所述补充SMM事件期间,将在所述提交列表中指示的任意数据的至少一部分写入所述FI变量存储库;
响应于确定在所述补充SMM事件期间已经达到SMM时间限制,更新所述提交列表以指示在所述补充SMM事件之前在所述提交列表中指示的任意数据仍要在所述补充SMM事件之后被写入所述FI变量存储库;以及
响应于确定所述提交列表指示仍有数据要在所述补充SMM事件之后被写入所述FI变量存储库,而调度另一补充SMM事件。
15.如权利要求13所述的方法,其中所述调度包括:
将所述计算设备配置为周期性地触发后续的SMM事件,其中所述后续的SMM事件中的一个是所述补充SMM事件。
CN201380072019.0A 2013-01-31 2013-01-31 更新提交列表以指示数据将被写入固件接口变量存储库 Active CN105009072B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/023979 WO2014120169A1 (en) 2013-01-31 2013-01-31 Updating a commit list to indicate data to be written to a firmware interface variable repository

Publications (2)

Publication Number Publication Date
CN105009072A CN105009072A (zh) 2015-10-28
CN105009072B true CN105009072B (zh) 2018-11-23

Family

ID=51262735

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380072019.0A Active CN105009072B (zh) 2013-01-31 2013-01-31 更新提交列表以指示数据将被写入固件接口变量存储库

Country Status (5)

Country Link
US (1) US9632797B2 (zh)
EP (1) EP2951677A4 (zh)
JP (1) JP2016509305A (zh)
CN (1) CN105009072B (zh)
WO (1) WO2014120169A1 (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1265489A (zh) * 1999-03-01 2000-09-06 惠普公司 用于嵌入设备的java应用程序管理程序
CN101309217A (zh) * 2008-07-11 2008-11-19 北京航空航天大学 一种基于双向路由重建的ad hoc的网络多径路由方法
CN102119513A (zh) * 2007-11-14 2011-07-06 高通股份有限公司 移动环境中使用关键词向量和相关联度量来学习和预测有目标的内容消息的用户相关的方法和系统
CN102377809A (zh) * 2010-08-24 2012-03-14 鸿富锦精密工业(深圳)有限公司 客户端读取云存储空间数据的方法

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5694546A (en) * 1994-05-31 1997-12-02 Reisman; Richard R. System for automatic unattended electronic information transport between a server and a client by a vendor provided transport software with a manifest list
GB0109057D0 (en) 2001-04-11 2001-05-30 Renishaw Plc Absolute postition measurement
US8180872B1 (en) * 2001-06-29 2012-05-15 Symantec Operating Corporation Common data model for heterogeneous SAN components
ATE522264T1 (de) 2001-12-12 2011-09-15 Martek Biosciences Corp Extrahieren und entstearinieren von lipiden aus biomasse
JP2004118758A (ja) * 2002-09-30 2004-04-15 Hitachi Kokusai Electric Inc クライアントプログラムの更新方法
US20050033777A1 (en) 2003-08-04 2005-02-10 Moraes Mark A. Tracking, recording and organizing changes to data in computer systems
US7673174B2 (en) 2005-04-06 2010-03-02 University Of Washington Recovering device drivers
US7512719B1 (en) 2006-03-16 2009-03-31 American Megatrends, Inc. Sharing a dynamically located memory block between components executing in different processor modes in an extensible firmware interface environment
US20080040524A1 (en) 2006-08-14 2008-02-14 Zimmer Vincent J System management mode using transactional memory
FI120035B (fi) 2007-06-18 2009-06-15 Glaston Services Ltd Oy Menetelmä ja laite lasilevyjen taivuttamiseksi ja karkaisemiseksi
US7925876B2 (en) * 2007-08-14 2011-04-12 Hewlett-Packard Development Company, L.P. Computer with extensible firmware interface implementing parallel storage-device enumeration
US8117435B2 (en) 2008-06-30 2012-02-14 Intel Corporation Method and system for secured dynamic bios update
US8201163B2 (en) * 2008-07-16 2012-06-12 Dell Products, Lp Input/output transaction management during platform initiation
US8832454B2 (en) 2008-12-30 2014-09-09 Intel Corporation Apparatus and method for runtime integrity verification
EP2213314B1 (en) 2009-01-30 2016-03-23 Biotronik VI Patent AG Implant with a base body of a biocorrodible magnesium alloy
JP2010186452A (ja) * 2009-02-13 2010-08-26 Kyocera Mita Corp 保守管理システム、データベースサーバ、保守管理プログラムおよび保守管理方法
US8543803B2 (en) * 2009-02-20 2013-09-24 Lenovo (Singapore) Pte Ltd Apparatus, system, and method for accurate automated scheduling of computer suspend and resume
JP2010198332A (ja) * 2009-02-25 2010-09-09 Canon Inc ファームウェア更新装置、ファームウェア更新システム、ファームウェア更新方法、およびファームウェア更新プログラム
JP5346253B2 (ja) * 2009-08-24 2013-11-20 株式会社日立ソリューションズ ファームウェア更新システム、及び情報機器、並びにプログラム
JP2011044218A (ja) 2009-08-24 2011-03-03 Toshiba Corp 半導体記憶装置
US20110082832A1 (en) 2009-10-05 2011-04-07 Ramkumar Vadali Parallelized backup and restore process and system
US8255594B2 (en) 2009-10-15 2012-08-28 Intel Corporation Handling legacy BIOS services for mass storage devices using systems management interrupts with or without waiting for data transferred to mass storage devices
US20110320786A1 (en) * 2010-06-25 2011-12-29 International Business Machines Corporation Dynamically Rewriting Branch Instructions in Response to Cache Line Eviction
JP5539129B2 (ja) * 2010-09-13 2014-07-02 キヤノン株式会社 画像形成装置、ファームェアのアップデート方法、及び、プログラム
US9009407B2 (en) * 2011-03-29 2015-04-14 Dell Products L.P. System and method for performing system memory save in tiered/cached storage
WO2012139026A2 (en) 2011-04-08 2012-10-11 Insyde Software Corp. System and method for processing requests to alter system security databases and firmware stores in a unified extensible firmware interface-compliant computing device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1265489A (zh) * 1999-03-01 2000-09-06 惠普公司 用于嵌入设备的java应用程序管理程序
CN102119513A (zh) * 2007-11-14 2011-07-06 高通股份有限公司 移动环境中使用关键词向量和相关联度量来学习和预测有目标的内容消息的用户相关的方法和系统
CN101309217A (zh) * 2008-07-11 2008-11-19 北京航空航天大学 一种基于双向路由重建的ad hoc的网络多径路由方法
CN102377809A (zh) * 2010-08-24 2012-03-14 鸿富锦精密工业(深圳)有限公司 客户端读取云存储空间数据的方法

Also Published As

Publication number Publication date
JP2016509305A (ja) 2016-03-24
EP2951677A1 (en) 2015-12-09
EP2951677A4 (en) 2016-08-03
WO2014120169A1 (en) 2014-08-07
CN105009072A (zh) 2015-10-28
US9632797B2 (en) 2017-04-25
US20150363208A1 (en) 2015-12-17

Similar Documents

Publication Publication Date Title
CN102103483B (zh) 汇聚和散布多个数据元素
CN108874692A (zh) 空间存储器流传输置信机制
US8578104B2 (en) Multiprocessor system with mixed software hardware controlled cache management
JP6234484B2 (ja) チップ上のデータをプリフェッチするためのコンピュータ・システム、コンピュータ・プログラム、およびコンピュータ実装方法
KR102284957B1 (ko) 트랜잭션 데이터 처리 실행 모드에 대한 호출 스택 유지
KR20180090284A (ko) 이벤트 기동된 프로그래머블 프리페처
US20180032448A1 (en) Guarded Memory Access in a Multi-Thread Safe System Level Modeling Simulation
KR20170131366A (ko) 공유 리소스 액세스 제어 방법 및 장치
JP6237230B2 (ja) メモリ管理プログラム、メモリ管理方法、及びメモリ管理装置
KR20190114747A (ko) 프로세서 모니터링 소프트웨어를 지원하기 위한 임베디드 비휘발성 랜덤 액세스 메모리를 갖는 프로세서
CN100480996C (zh) 在冗余多线程系统中管理外部存储器更新的方法和设备
US9201708B2 (en) Direct memory interface access in a multi-thread safe system level modeling simulation
US20040025146A1 (en) Cycles per instruction stack in a computer processor
KR102464788B1 (ko) 업/다운 프리페쳐
US9336056B2 (en) Extendible input/output data mechanism for accelerators
CN106258006A (zh) 使用状态信息恢复系统
CN109885253A (zh) 存储设备上的原子跨介质写入
US7823013B1 (en) Hardware data race detection in HPCS codes
CN105009072B (zh) 更新提交列表以指示数据将被写入固件接口变量存储库
US10719441B1 (en) Using predictions of outcomes of cache memory access requests for controlling whether a request generator sends memory access requests to a memory in parallel with cache memory access requests
US10002077B2 (en) Persistent memory controller based atomicity assurance
US10007616B1 (en) Methods for core recovery after a cold start
JP7481328B2 (ja) トランザクショナル・メモリのための装置及びデータ処理方法
Garside et al. Wcet preserving hardware prefetch for many-core real-time systems
US9946656B2 (en) Completion packet return based on eviction or flush

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20160817

Address after: American Texas

Applicant after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP

Address before: Texas USA

Applicant before: Hewlett-Packard Development Company, Limited Liability Partnership

GR01 Patent grant
GR01 Patent grant