CN105359101B - 用于多核处理器的系统管理中断处理 - Google Patents

用于多核处理器的系统管理中断处理 Download PDF

Info

Publication number
CN105359101B
CN105359101B CN201480008784.0A CN201480008784A CN105359101B CN 105359101 B CN105359101 B CN 105359101B CN 201480008784 A CN201480008784 A CN 201480008784A CN 105359101 B CN105359101 B CN 105359101B
Authority
CN
China
Prior art keywords
system management
processor core
management interrupt
response
computing device
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
CN201480008784.0A
Other languages
English (en)
Other versions
CN105359101A (zh
Inventor
S·贾亚库马尔
M·J·库玛
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.)
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 CN105359101A publication Critical patent/CN105359101A/zh
Application granted granted Critical
Publication of CN105359101B publication Critical patent/CN105359101B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers

Abstract

用于系统管理中断(SMI)处理的技术包含配置成响应于检测SMI而进入系统管理模式(SMM)的若干处理器核。进入SMM并获取主线程锁的第一处理器核设置正在进行标记,并执行主SMI处理机而不等待其它处理核进入SMM。其它处理器核执行附属SMI处理机。主SMI处理机可引导附属SMI处理机处理核特定SMI。多核处理器可响应于检测到SMI而设置SMI服务未决标记,其由获取主线程锁的处理器核清除。进入SMM的处理器核可在确定正在进行标记未被设置并且服务未决标记未被设置时立即重新开始正常执行以检测并减轻寄生SMI。描述并要求保护其它实施例。

Description

用于多核处理器的系统管理中断处理
背景技术
计算机处理器通常提供了几种操作模式。用于普通代码(诸如操作系统、用户应用等)的操作模式通常包含实时模式(其中处理器使用物理存储器地址)和保护模式(其中处理器使用虚拟化存储器地址)。处理器可提供附加模式,诸如用于寻址大地址空间的长模式。
某些处理器提供了用于处理由计算平台的硬件组件生成的某些中断(称为系统管理中断(SMI))的特殊操作模式(称为系统管理模式(SMM))。在检测到SMI时,此类处理器通过保存其当前状态并然后进入SMM来暂停执行。在SMM内部,处理器执行SMI处理机代码。此类SMI处理机代码可执行诸如错误处理、功率管理、平台闪存更新、系统管理任务等的任务。在完成后,SMI处理机代码执行重新开始指令(RSM),使处理器重新加载其保存的状态,并重新开始执行先前的操作模式。接收SMI、进入SMM和SMI处理机的操作从而对在处理器上执行的其它代码(包含操作系统代码)是透明的。
某些多核处理器可通过向所有处理器核广播SMI来处理SMI。在接收到SMI并进入SMM后,每个处理器核可竞争以变成负责处理SMI的主核。此类主核经常称为“君主(monarch)”或“自举(boot strap)处理器”。主核在处理SMI之前等待另一附属核(有时称为“应用处理器”)进入SMM。当主核处理SMI时,附属核在等待循环中空闲。从而,SMI处理机代码可以是单线程的,甚至当在多核处理器上执行时。
典型处理器还包含机器检查架构。此类机器检查架构是检测处理器或计算机平台中硬件错误(机器检查异常)并警告操作系统的低级机制。一些机器检查异常可在硬件中纠正或由操作系统纠正;未纠正的机器检查异常一般是致命错误,并且可导致操作系统崩溃(例如“停止错误”、“内核恐慌”、“蓝屏”等)。
附图说明
本文描述的概念在附图中作为示例而非作为限制图示。为了图示的简洁和清晰起见,在附图中图示的元件不一定按比例绘制。在视为合适的地方,附图标记在各图之间已经被重复以指示对应或类似元件。
图1是用于处理系统管理中断的计算装置的至少一个实施例的简化框图;
图2是图1的计算装置的环境的至少一个实施例的简化框图;
图3是可由图1和图2的计算装置执行的用于处理系统管理中断的方法的至少一个实施例的简化流程图;
图4是可由图1和图2的计算装置执行的用于主SMI处理机的方法的至少一个实施例的简化流程图;
图5是可由图1和图2的计算装置执行的用于附属SMI处理机的方法的至少一个实施例的简化流程图;以及
图6是可在典型处理器中发生的挂起条件的示意时间线图。
具体实施方式
虽然本公开的概念易受到各种修改和备选形式,但其特定实施例已经在附图中作为示例示出,并且将在本文中详细描述。然而,应该理解,没有意图将本公开的概念局限于所公开的具体形式,而是相反,本发明将覆盖与本公开和所附权利要求书一致的所有修改、等同物和备选。
在说明书中提到“一个实施例”、“实施例”、“说明性实施例”等指示所描述的实施例可包含具体特征、结构或特性,但每一个实施例可以或者可以不必然包含该具体特征、结构或特性。而且,此类短语不一定是指同一实施例。进一步说,当结合实施例描述具体特征、结构或特性,认为结合不管是否明确描述的其它实施例实现此类特征、结构或特性在本领域技术人员的知识内。
所公开的实施例在一些情况下可用硬件、固件、软件或它们的任何组合来实现。所公开的实施例也可实现为由易失性或非易失性机器可读(例如计算机可读)介质携带或存储在其上的指令,所述指令可由一个或多个处理器读取和执行。机器可读存储介质可实施为用于存储或传送由机器(例如易失性或非易失性存储器、媒体盘或其它媒体装置)可读形式的信息的任何存储装置、机制或其它物理结构。
在附图中,一些结构或方法特征可按特定布置和/或排序示出。然而,应该认识到,可能不需要此类特定布置和/或排序。而是,在一些实施例中,此类特征可按与在说明性附图中示出的不同的方式和/或次序布置。此外,在具体附图中包含结构或方法特征不打算暗示此类特征在所有实施例中都需要,并且在一些实施例中,可能不包含或者可与其它特征组合。
现在参考图6,当由于称为“SMI合并”的现象而接连生成多个SMI时,典型的多核处理器可停止执行或“挂起”。示意图600图示了SMI合并问题。区域602和604图示了处理器操作模式。具体地说,区域602图示了保护模式,并且区域604图示了SMM。当然,可使用长模式、真实模式或另一普通操作模式代替保护模式。线程606和608被图示为初始执行在保护模式602中。在时间段610期间,SMI源生成SMI 612,其被广播给两个线程606、608。对于每个线程设置SMI未决标记。在时间段610与614之间的边界,线程608进入SMM 604。当线程608进入SMM时,自动清除线程608的SMI未决标记。在此时,线程606正在执行较长指令,并且保持在保护模式602中。在时间段614期间,SMI源生成SMI 616,其被广播给两个线程606和608。对于每个线程606、608再次设置SMI未决标记。因为对于线程606已经设置SMI未决标记,所以对于线程606,SMI 612和SMI 616已经有效地合并在一起。在时间段614与618之间的边界,线程606进入SMM 604,自动清除用于线程606的SMI未决标记。因为线程608已经在SMM中,所以线程608的SMI未决位保持设置。在时间段618期间,线程608执行SMI处理机,其处理所有未决SMI,包含SMI 612和SMI 616。在时间段618与620之间的边界,线程606、608执行RSM指令622,并且返回到保护模式602。在时间段620期间,线程608立即返回到SMM 604,因为线程608的SMI未决位仍被设置。然而,线程606保持在保护模式602中,因为未对于线程606设置SMI未决位。从而,线程608基于寄生SMI进入SMM 604。在时间段624期间,线程608闲置地等待线程606进入SMM 604,其将不发生而没有超时、处理器间中断等。从而,由于SMI合并,线程606、608不同步并且执行可停止。
现在参考图1,用于处理SMI的说明性计算装置100包含多核处理器102和I/O子系统104,它们都可生成SMI。在接收到SMI时,处理器102指定主处理器核,其开始处理SMI而不等待其它处理器核进入SMM。主处理器核可引导每一个其它处理器核处理从其它处理器核始发的那些SMI。处理器102可通过检测寄生SMI并快速重新开始执行来避免SMI合并问题,如下面详细讨论的。
通过发起SMI的处理而不等待其它处理器核进入SMM,处理器102减少了处理SMI的等待时间,并随着核的计数的增大而增大SMI处理的可缩放性。引导其它处理器核处理SMI允许处理从具体处理器核始发的SMI,因为与此类SMI相关的信息仅在始发SMI的处理器核中可用。检测寄生SMI进一步减少了等待时间,并改进了SMI处理的可缩放性。此类改进的等待时间和可缩放性可允许机器检查异常的基于SMI的处理。
计算装置100可被实施为能够执行本文描述的功能的任何类型装置。例如,计算装置100可实施为但不限于计算机、智能电话、平板计算机、膝上型计算机、笔记本计算机、台式计算机、工作站、移动计算装置、蜂窝电话、手机、消息传递装置、车载信息处理装置、网络器具、web器具、分布式计算系统、多处理器系统、基于处理器的系统、消费电子装置、数字电视装置和/或配置成处理系统管理中断的任何其它计算装置。如图1中所示,说明性计算装置100包含处理器102、I/O子系统104、存储器106和数据存储装置110。当然,在其它实施例中,计算装置100可包含其它或附加组件,诸如在台式计算机中发现的组件(例如各种输入/输出装置)。此外,在一些实施例中,说明性组件中的一个或多个可结合在另一组件中,或另外来自另一组件的一部分。例如,在一些实施例中,存储器106或其部分可结合在处理器102中。
处理器102可实施为能够执行本文描述的功能的任何类型的多核处理器。例如,处理器102可实施为微处理器、数字信号处理器、微控制器或其它处理器或处理/控制电路。处理器102包含处理器核120和非核140。每一个处理器核120是能够执行编程指令的独立处理单元。说明性处理器102包含四个处理器核120a至120d;然而,可包含任何数量的处理器核120。
非核140包含未包含在处理器核120中的处理器102的任何部分,诸如例如存储器控制器。说明性处理器102的非核140包含SMI状态寄存器142。SMI状态寄存器142是由每一个处理器核120可寻址的存储器位置。SMI状态寄存器142包含SMI服务未决标记144。当检测到SMI时,SMI服务未决标记144由处理器102的硬件设置。SMI服务未决标记144也可由在处理器核120上执行的软件清除。当设置时,SMI服务未决标记144可含有任何逻辑值;例如,当设置时,SMI服务未决标记144可含有逻辑高值、逻辑低值、零值或非零值。在一些实施例中,SMI服务未决标记144可实现为SMI状态寄存器142的一个位。备选地,SMI服务未决标记144可以是独立寄存器。非核140进一步包含高速缓冲存储器146,并且非核140的一些实施例可包含存储器控制器148。高速缓冲存储器146可以是由处理器核120共享的最后一级高速缓存。在操作期间,高速缓冲存储器146和存储器控制器148可生成要由处理器102处理的SMI。尽管未图示,但非核140此外可包含处理器或片上系统的典型组件,诸如图形处理器、输入/输出控制器或功率管理电路。
处理器102以通信方式耦合到I/O子系统104,I/O子系统104可实施为电路和/或组件以便于与计算装置100的处理器102、存储器106和/或其它组件的输入/输出操作。例如,I/O子系统104可实施为或以其他方式包含存储器控制器集线器、平台控制器集线器、输入/输出控制集线器、固件装置、通信链路(即,点对点链路、总线链路、导线、电缆、光导、印刷电路板迹线等)和/或其它组件和子系统以便于输入/输出操作。I/O子系统104可生成SMI,或转发从计算装置100的其它组件接收的SMI。I/O子系统104可通过断言处理器102的物理输入管脚上的电信号将SMI传递到处理器102。在一些实施例中,I/O子系统104可形成片上系统(SoC)的一部分,并与计算装置100的处理器102、存储器106和其它组件一起结合在单个集成电路芯片上。
存储器106可实施为能够执行本文描述的功能的任何类型的易失性或非易失性存储器或数据存储装置。在操作中,存储器106可存储在计算装置100的操作期间使用的各种数据和软件,诸如操作系统、应用、程序、库以及驱动。如上面所描述的,存储器106可经由I/O子系统104以通信方式耦合到处理器102,或者在一些实施例中,可通过存储器控制器148直接耦合到处理器102。
存储器106包含对处理器核120可存取同时在SMM中执行的存储区域108。这个区域(称为系统管理随机存取存储器(SMRAM))包含用于SMI处理的可执行代码和数据。I/O子系统104可调节对SMRAM 108的存取,当在SMM中不执行时防止代码存取或修改SMRAM 108。
数据存储装置110可实施为配置用于数据的短期存储或长期存储的任何类型装置,诸如例如存储器装置和电路、存储卡、硬盘驱动器、固态驱动器或其它数据存储装置。数据存储装置110可存储用于SMI处理的软件和/或固件,包含在操作期间安装到SMRAM 108中的代码。
现在参考图2,在一个实施例中,计算装置100在操作期间建立环境200。说明性实施例200包含线程202、正在进行(in-progress)标记208、主线程锁210和SMI处理机212。环境200的各种模块可实施为硬件、固件、软件或它们的组合。
每一个线程202是对应于处理器核120之一的架构状态的执行的独立线程。也就是说,每一个线程202对应于由处理器核120之一执行的指令流以及处理器核120的对应寄存器状态。每一个线程202还可包含或涉及用于线程特定的软件标记的存储装置。此类软件标记可存储在存储器106中,或存储在存储器层级的其它级。线程202包含一个主线程204和若干附属线程206。下面详细描述主线程204和附属线程206的指配。要指出,备选实施例200包含四个线程——一个主线程204和三个附属线程206——然而,在其它实施例中,可包含任何数量的线程202。还有,在备选实施例中,线程202和处理器核120处于一对一关系。在其它实施例中,可存在不同关系。例如,在对称多线程处理器中,两个线程202可在单个处理器核120上执行。
正在进行标记208可实施为指示已经指定主线程204的存储器位置,其指示SMI处理机代码当前正在进行。正在进行标记208可含有指示SMI处理机代码当前正在进行的任何逻辑值,例如逻辑高值、逻辑低值、非零值或零值。正在进行标记208最初被清除,意味着SMI处理机代码当前不是正在进行。如下面所详细描述的,正在进行标记208由软件管理。正在进行标记208可实施为存储器106中或SMRAM 108中的位置。
主线程锁210是用于选择线程202之一作为主线程204的同步机制。如下面所详细描述的,在进入SMM后,线程202可竞争以获取主线程锁210,其中竞争的获胜者变成主线程204。在获取主线程锁210后,主线程204可设置正在进行标记208。主线程锁210可实施为计算装置100的硬件寄存器或者作为存储在存储器106或SMRAM 108中的软件锁。
SMI处理机212配置成处理SMI中断。如下面所详细描述的,SMI处理机212管理正在进行标记208,选择主线程204,并处理由处理器核120、非核140和I/O子系统104生成的SMI。在一些实施例中,那些功能可由子模块例如由SMI处理机管理器214、主SMI处理机216或附属SMI处理机218执行。
现在参考图3,在使用中,计算装置100可执行用于处理SMI的方法300。方法300可作为SMI处理机管理器214的一部分由每一个线程202执行。方法300开始于框302,其中计算装置100检测SMI,并且处理器核120进入SMM。如上面所描述的,SMI可始发于处理器核120、非核140或I/O子系统104之一。具体地说,I/O子系统可基于从计算装置100的其它组件接收的输入引起SMI。在一些实施例中,可响应于由处理器102的机器检查架构生成的机器检查异常而引起SMI。在一些实施例中,所谓的“软件SMI”可由在处理器102上执行的代码生成,所述代码写到I/O地址空间的指定地址。响应于检测到从处理器102的此类写,I/O子系统104可生成SMI。不管源如何,SMI是异步的,意味着可在任何时间引起SMI,包含当处理器核120当前正在执行指令时。当生成SMI时,为每一个处理器核120设置SMI未决标记(未图示)。当每个处理器核120都完成了当前指令,到达指令边界时,如果设置SMI未决标记,则处理器核120转变到SMM。处理器核120的当前上下文被保存到SMRAM 108中,SMI未决标记被清除,并且SMI服务未决标记144被设置。一旦在SMM中,处理器核120就执行线程202的指令,开始于SMI处理机管理器214。
在框304中,线程202读取正在进行标记208。在框306中,线程202确定正在进行标记208是否被设置。如下面所更详细描述的,线程202在指定主线程204时设置正在进行标记208。从而,如果在框304中已经设置了正在进行标记208,则另一线程202已经变成主线程204,并且当前线程202因此是附属线程206。如果设置了正在进行标记208,则方法300分支到框308。在框308中,线程202执行附属SMI处理机218,如下面相对于图5详细描述的。
参考回框306,如果正在进行标记208未被设置,则方法300前进到框310,其中线程202读取SMI状态寄存器142的SMI服务未决标记144。SMI服务未决标记144指示SMI是否已经生成并且尚未处理。如上面所描述的,SMI服务未决标记144由处理器102的硬件设置,并且由在处理器核120上执行的软件清除。
在框312中,线程202确定SMI服务未决标记144是否被设置。如果SMI服务未决标记144未被设置,则方法300分支到框314。在框314中,线程202执行RSM指令。在执行RSM指令时,保存在SMRAM 108中的处理器核120的上下文被加载到处理器核120的适当寄存器中,并且处理器核120重新开始在其先前操作模式中的执行。例如,处理器核120可重新开始在保护模式、长模式或真实模式执行。如上面所描述的,在正在进行标记208和SMI服务未决标记144都未被设置的情形下方法300到达框314。此类情形作为如上面结合图6所描述的寄生SMI的结果发生;也就是说,当SMI合并条件已经使线程202失去同步时。SMI服务未决标记144允许处理器102跟踪此类寄生SMI,并快速重新开始执行而没有过多空闲时间。
参考回框312,如果设置SMI服务未决标记144,则方法300前进到框316。在框316中,线程202尝试变成主线程204。线程202可通过尝试获取主线程锁210来这么做。如上面所讨论的,主线程锁210可实施为适合于选择单线程202的任何同步机制。在一些实施例中,主线程锁210可实施为硬件寄存器,例如作为引导标记寄存器(BOFL)。BOFL对所有线程202可存取。当BOFL由线程之一读取时,清除BOFL的内容。假定BOFL最初持有非零值,读取BOFL的第一线程202接收那个非零值。读取BOFL的任何随后线程202接收零值。从而,BOFL可用于实现硬件信号机。在一些实施例中,主线程锁210可实现为软件锁,例如信号机、互斥、自旋锁等。
在框318中,线程202确定它是否成功变成主线程204。如果否,则方法300分支到框308以执行附属SMI处理机218,如下面相对于图5所描述的。如果线程202成功变成主线程204,则方法300前进到框320。
在框320中,线程202设置正在进行标记208。如上面所描述的,相对于框306,在设置正在进行标记208之后,随后线程202可立即执行附属SMI处理机218而不尝试获取主线程锁210。在框322中,线程202清除SMI服务未决标记144。在正确检测到处理SMI以确保寄生SMI之前,清除SMI服务未决标记144。在框324中,线程202执行主SMI处理机216,如下面相对于图4详细描述的。线程202执行主SMI处理机216而不等待任何其它线程202进入SMM。
现在参考图4,在使用中,计算装置100可执行用于处理SMI的方法324。方法324可实施为主SMI处理机216,其由单个主线程204执行。如上面所描述的,在执行方法324之前,此类主线程204已经被指定。方法324开始于框402,其中主线程204确定SMI是否是软件生成的SMI。主线程204可通过读取计算装置100的寄存器进行此类确定。如果SMI是软件生成的SMI,则方法324前进到框404。
在框404,主线程204确定始发软件SMI的线程202是否已经登记到SMM。始发线程202可以仅是能够处理此类软件SMI的线程202。始发线程202可以是主线程204本身。每一个线程202都可使用过程间通信的任何方法,例如通过使用全局可存取软件标记,登记到SMM。主线程204可通过将与SMI关联的寄存器值与存储在SMRAM 108中的保存的状态值相比较,来确定始发SMI的线程202的身份。例如,主线程204可确定具有存储在SMRAM 108中的IO_MISC值的线程202是否匹配与软件SMI关联的IO_MISC值。
在框406,如果主线程204已经确定生成软件SMI的线程202尚未登记,则方法324循环回到框404以继续等待此类线程202登记。如果主线程204确定生成软件SMI的线程202已经登记,则方法324前进到框408和412。
参考回框402,如果主线程204确定SMI不是软件生成的SMI,则方法324前进到框408和412。在框408,主线程204处理从计算装置100和非核140生成的SMI,也就是,从计算装置100的组件而不是处理器核120生成的SMI。主线程204可通过查询在SMRAM 108、存储器106或I/O子系统104中保持的状态寄存器来确定需要处理什么SMI。主线程204可通过纠正存储器错误、记录错误以便报告给操作系统、执行功率管理活动来处理此类SMI。主线程204可通过调用适当的子处理机(未图示)来处理此类SMI。
在一些实施例中,在框410,主线程204可等待其它线程202登记到SMM。处理某些SMI源可能需要存取在处理器核120之间共享的资源;因此,为了防止与操作系统代码或在其它处理器核120上执行的其它代码冲突,主线程204可等待其它线程202进入SMM。例如,需要跨PCI总线输入或输出的SMI处理机可等待其它线程202进入SMM,因为对PCI总线的读和写是非原子的。为了防止过多等待时间,当要处理的具体SMI未发布与其它线程202的潜在冲突时,主线程204不应该等待其它线程202。
在框412中,主线程204处理由主线程204正在其上执行的处理器核120生成的SMI(核SMI)。再一次,主线程204可通过查询在SMRAM 108或在处理器核120中保持的状态寄存器来确定要处理的核SMI。在核SMI的情况下,此类状态信息可仅对在处理器核120上执行的主线程204可存取。在一些实施例中,在框414,主线程204可等待其它线程202进入SMM,如上面相对于框410所讨论的。进一步说,尽管并行图示了,但框408和412可顺序执行和以任何次序执行。在执行框408和412之后,方法324前进到框416。
在框416中,主线程204找到指配给生成核SMI的处理器核120的下一附属线程206。主线程204可通过搜索一组线程特定软件标记来找到此类附属线程206。如下面所描述的,此类线程特定软件标记可由附属SMI处理机218设置。在框418中,主线程204确定是否已经找到附属线程206。如果是,则方法可前进到框420。
在框420,主线程204向附属线程206发送命令以使附属线程206处理核SMI。如上面所描述的,由处理器核120生成的SMI的状态寄存器可仅对在处理器核120上运行的具体线程202可存取。主线程204可使用任何形式的过程间通信,例如通过打开锁、发信号通知信号机、引起中断、发起远程过程调用等,来发送命令。主线程204在继续之前等待附属线程206完成处理SMI,这有效地序列化了SMI处理。在处理完成之后,方法324循环回到框416,以找到经历核SMI的下一附属线程206。
参考回框418,如果未找到经历核SMI的附属线程206,则方法324前进到框422。在这一点,所有SMI源都已经被处理,并且处理器102准备重新开始普通操作。在框422,主线程204向所有附属线程206都发送RSM命令。如下面所描述的,在接收到这个命令后,附属线程206的处理器核120重新开始操作在先前执行模式。
在框424中,主线程204清除正在进行标记208。清除正在进行标记208为处理器102处理另一SMI做准备。在框426,主线程204执行RSM指令,其使处理器核120退出SMM,并重新开始先前操作模式。
现在参考图5,在使用中,计算装置100可执行用于处理SMI的方法308。方法308可实施为附属SMI处理机218,其可由附属线程206中的一个或多个执行。如上面所描述的,在执行方法308之前,此类附属线程206已经基于无法获取主线程锁210或基于在主线程204已经被指定之后进入SMM指定。方法308开始于框502,其中附属线程206确定它是否已经经历了核SMI。如上面所描述的,当SMI由线程202正在其上执行的具体处理器核120生成时,线程202经历了核SMI。附属线程206可通过查询计算装置100的状态寄存器和/或处理器102进行此类确定。
在框504,如果附属线程206经历了核SMI,则方法308前进到框506。在框506,附属线程206设置线程特定软件标记,指示当前线程202经历了核SMI。如上面所描述的,当确定是否引导附属线程206处理核SMI时,主线程204可读取此类软件标记。参考回框504,如果附属线程206未经历核SMI,则方法308向前跳到框508。
在框508中,附属线程206等待来自主线程204的命令。如上面所描述的,主线程204可使用任何形式的过程间通信发送此类命令。在框510中,附属线程206确定是否已经接收到命令。如果否,则方法308循环回到框508以继续等待来自主线程204的更多命令。如果已经接收到命令,则方法308前进到框512。
在框512中,附属线程206确定是否从主线程204接收到RSM命令。如果是,则方法308分支到框514。在框514,附属线程206执行RSM指令,其使处理器核120退出SMM,并重新开始操作在先前操作模式。参考回框512,如果命令不是RSM命令,则方法308前进到框516。
在框516中,附属线程206处理核SMI。如上面所描述的,处理核SMI可包含纠正处理器核120的存储器错误,并将纠正的错误报告给操作系统。附属线程206可执行正在处理的具体核SMI的子处理机。在一些实施例中,在框518,附属线程206可等待其它线程202进入SMM,如上面相对于框410和414所讨论的。在处理核SMI之后,方法308循环回到框508以继续等待来自主线程204的更多命令。
示例
示例1包含一种用于处理在计算装置中生成的系统管理中断的多核处理器,所述多核处理器包括:处理器核,用于(i)响应于所述多核处理器检测到所述系统管理中断而进入系统管理模式;以及(ii)响应于进入系统管理模式而执行系统管理中断处理机管理器,所述系统管理中断处理机管理器用于:确定正在进行标记是否被设置,所述正在进行标记指示所述多核处理器中的另一处理器核已经获取了所述计算装置的主线程锁;响应于确定所述正在进行标记未被设置而尝试获取所述主线程锁;响应于所述主线程锁的获取而设置所述正在进行标记;以及响应于所述主线程锁的获取而执行主系统管理中断处理机。
示例2包含示例1的主题,并且进一步包含附属处理器核,其中所述系统管理中断处理机管理器进一步执行所述主系统管理中断处理机而不等待所述附属处理器核进入所述系统管理模式。
示例3包含示例1和示例2中任一个的主题,并且进一步包含系统管理中断服务未决标记,其中所述多核处理器响应于检测到所述系统管理中断而设置所述系统管理中断服务未决标记;并且系统管理中断处理机管理器将进一步:响应于确定所述正在进行标记未被设置而确定所述系统管理中断服务未决标记是否被设置,响应于确定所述系统管理中断服务未决标记未被设置而重新开始所述处理器核的执行模式,响应于确定所述系统管理中断服务未决标记被设置而尝试获取所述主线程锁,以及响应于所述主线程锁的获取并在执行所述主系统管理中断处理机之前清除所述系统管理中断服务未决标记。
示例4包含示例1-3中任一个的主题,并且进一步包含系统管理中断状态寄存器,其中所述系统管理中断服务未决标记包括所述系统管理中断状态寄存器的系统管理中断服务未决位。
示例5包含示例1-4中任一个的主题,并且其中处理器核的执行模式包括保护模式、长模式或真实模式之一。
示例6包含示例1-5中任一个的主题,并且其中主线程锁包括计算装置的硬件寄存器。
示例7包含示例1-6中任一个的主题,并且其中主线程锁包括计算装置的软件锁。
示例8包含示例1-7中任一个的主题,并且其中所述处理器核包括附属处理器核,并且系统管理中断处理机管理器将进一步:响应于确定所述正在进行标记被设置而执行附属系统管理中断处理机;以及响应于未能获取所述主线程锁而执行所述附属系统管理中断处理机。
示例9包含示例1-8中任一个的主题,并且进一步包含不同于附属处理器核的主处理器核,其中附属系统管理中断处理机将:确定附属处理器核是否是系统管理中断的源;响应于确定所述附属处理器核是所述系统管理中断的源而从所述主处理器核接收处理所述系统管理中断的命令;以及响应于从所述主处理器核接收到所述命令而处理所述系统管理中断。
示例10包含示例1-9中任一个的主题,并且其中附属系统管理中断处理机进一步响应于确定附属处理器核是系统管理中断的源而设置标记以指示附属处理器核是系统管理中断的源。
示例11包含示例1-10中任一个的主题,并且进一步包含第二附属处理器核,其中附属系统管理中断处理机进一步等待第二附属处理器核进入系统管理中断。
示例12包含示例1-11中任一个的主题,并且其中所述附属系统管理中断处理机进一步处理由所述计算装置的机器检查架构生成的机器检查异常。
示例13包含示例1-12中任一个的主题,并且其中所述附属系统管理中断处理机进一步纠正所述附属处理器核的存储器错误,并将纠正的错误报告给所述计算装置的操作系统。
示例14包含示例1-13中任一个的主题,并且其中主系统管理中断处理机清除正在进行标记。
示例15包含示例1-14中任一个的主题,并且其中所述处理器核包括主处理器核,并且主系统管理中断处理机将进一步:确定所述系统管理中断是否是由所述计算装置的组件而不是处理器核生成;以及响应于确定所述系统管理中断是由所述计算装置的组件而不是处理器核生成而处理所述系统管理中断。
示例16包含示例1-15中任一个的主题,并且其中主系统管理中断处理机将进一步:确定所述系统管理中断是否是由主处理器核生成;以及响应于确定所述系统管理中断是由所述主处理器核生成而处理所述系统管理中断。
示例17包含示例1-16中任一个的主题,并且其中主系统管理中断处理机将进一步处理由所述计算装置的机器检查架构生成的机器检查异常。
示例18包含示例1-17中任一个的主题,并且其中所述主系统管理中断处理机将进一步纠正所述计算装置的存储器错误,并将纠正的错误报告给所述计算装置的操作系统。
示例19包含示例1-18中任一个的主题,并且进一步包含不同于主处理器核的附属处理器核,其中处理器核包括主处理器核,并且主系统管理中断处理机将进一步:确定附属处理器核是否是系统管理中断的源;响应于确定所述附属处理器核是所述系统管理中断的源而向所述附属处理器核发送处理所述系统管理中断的命令;以及等待所述附属处理器核完成所述系统管理中断的处理。
示例20包含示例1-19中任一个的主题,并且其中主系统管理中断处理机进一步读取标记以指示附属处理器核是系统管理中断的源,所述标记由附属处理器核设置。
示例21包含一种用于处理在计算装置中生成的系统管理中断的方法,所述方法包括:由所述计算装置的处理器核响应于检测到所述系统管理中断而进入所述处理器核的系统管理模式;由所述处理器核确定正在进行标记是否被设置,所述正在进行标记指示所述计算装置的另一处理器核已经获取了所述计算装置的主线程锁;由所述处理器核响应于确定所述正在进行标记未被设置而尝试获取所述主线程锁;由所述处理器核响应于获取所述主线程锁而设置所述正在进行标记;以及由所述处理器核响应于获取所述主线程锁而执行主系统管理中断处理机。
示例22包含示例21的主题,并且其中执行所述主系统管理中断处理机包括执行所述主系统管理中断处理机而不等待所述计算装置的附属处理器核进入所述系统管理模式。
示例23包含示例21和示例22中任一个的主题,并且进一步包含:由所述处理器核响应于确定所述正在进行标记未被设置而确定所述计算装置的系统管理中断服务未决标记是否被设置,其中所述计算装置的处理器响应于检测到所述系统管理中断而设置所述系统管理中断服务未决标记;由所述处理器核响应于确定所述系统管理中断服务未决标记未被设置而重新开始所述处理器核的执行模式;以及由所述处理器核响应于获取所述主线程锁并在执行所述主系统管理中断处理机之前清除所述系统管理中断服务未决标记;其中尝试获取所述主线程锁进一步包括:响应于确定所述系统管理中断服务未决标记被设置而尝试获取所述主线程锁。
示例24包含示例21-23中任一个的主题,并且其中确定系统管理中断服务未决标记是否被设置包括确定处理器的系统管理中断状态寄存器的服务未决位是否被设置。
示例25包含示例21-24中任一个的主题,并且其中重新开始执行模式包括如下之一:重新开始保护模式、重新开始长模式或重新开始真实模式。
示例26包含示例21-25中任一个的主题,并且其中尝试获取主线程锁包括尝试读取计算装置的硬件寄存器。
示例27包含示例21-26中任一个的主题,并且其中尝试获取主线程锁包括尝试获取计算装置的软件锁。
示例28包含示例21-27中任一个的主题,并且其中所述处理器核包括附属处理器核,所述方法进一步包括:由所述附属处理器核响应于确定所述正在进行标记被设置而执行附属系统管理中断处理机;以及由所述附属处理器核响应于未获取所述主线程锁而执行所述附属系统管理中断处理机。
示例29包含示例21-28中任一个的主题,并且其中执行所述附属系统管理中断处理机包括:由所述附属处理器核确定所述附属处理器核是否是所述系统管理中断的源;由所述附属处理器核响应于确定所述附属处理器核是所述系统管理中断的源而从不同于所述附属处理器核的所述计算装置的主处理器核接收处理所述系统管理中断的命令;以及由所述附属处理器核响应于从所述主处理器核接收到所述命令而处理所述系统管理中断。
示例30包含示例21-29中任一个的主题,并且进一步包含:由附属处理器核响应于确定所述附属处理器核是所述系统管理中断的源而设置指示附属处理器核是系统管理中断的源的标记。
示例31包含示例21-30中任一个的主题,并且其中处理系统管理中断进一步包括等待计算装置的第二附属处理器核进入系统管理模式。
示例32包含示例21-31中任一个的主题,并且其中处理所述系统管理中断进一步包括处理由所述计算装置的机器检查架构生成的机器检查异常。
示例33包含示例21-32中任一个的主题,并且其中处理机器检查异常包括纠正所述附属处理器核的存储器错误,并将纠正的错误报告给所述计算装置的操作系统。
示例34包含示例21-33中任一个的主题,并且其中执行主系统管理中断处理机包括清除正在进行标记。
示例35包含示例21-34中任一个的主题,并且其中所述处理器核包括主处理器核,并且其中执行所述主系统管理中断处理机包括:由所述主处理器核确定所述系统管理中断是否由所述计算装置的组件而不是处理器核生成;以及由所述主处理器核响应于确定所述系统管理中断是由所述计算装置的组件而不是处理器核生成而处理系统管理中断。
示例36包含示例21-35中任一个的主题,并且其中执行主系统管理中断处理机进一步包括:由主处理器核确定所述系统管理中断是否是由主处理器核生成;以及由主处理器核响应于确定系统管理中断是由主处理器核生成而处理系统管理中断。
示例37包含示例21-36中任一个的主题,并且其中处理所述系统管理中断进一步包括处理由所述计算装置的机器检查架构生成的机器检查异常。
示例38包含示例21-37中任一个的主题,并且其中处理机器检查异常包括纠正计算装置的存储器错误,并将纠正的错误报告给计算装置的操作系统。
示例39包含示例21-38中任一个的主题,并且其中所述处理器核包括主处理器核,并且其中执行所述主系统管理中断处理机包括:由所述主处理器核确定不同于所述主处理器核的所述计算装置的附属处理器核是否是所述系统管理中断的源;由所述主处理器核响应于确定所述附属处理器核是所述系统管理中断的源而向所述附属处理器核发送处理所述系统管理中断的命令;以及由所述主处理器核等待所述附属处理器核完成处理所述系统管理中断。
示例40包含示例21-39中任一个的主题,并且其中确定计算装置的附属处理器核是否是系统管理中断的源包括读取指示附属处理器核是系统管理中断的源的标记,所述标记由附属处理器核设置。
示例41包含计算装置,计算装置包括:处理器;以及存储器,其中存储有多个指令,所述指令当由处理器执行时使计算装置执行示例21-40中任一个的方法。
示例42包含一个或多个机器可读存储介质,其包括其上存储的多个指令,所述指令响应于被执行而导致计算装置执行示例21-40中任一个的方法。
示例43包含一种用于处理在计算装置中生成的系统管理中断的计算装置,所述计算装置包括:用于由计算装置的处理器核响应于检测到所述系统管理中断而进入所述处理器核的系统管理模式的部件;用于由处理器核确定正在进行标记是否被设置的部件,正在进行标记指示所述计算装置的另一处理器核已经获取了所述计算装置的主线程锁;用于由处理器核响应于确定所述正在进行标记未被设置而尝试获取所述主线程锁的部件;用于由处理器核响应于获取主线程锁而设置正在进行标记的部件;以及用于由处理器核响应于获取所述主线程锁而执行主系统管理中断处理机的部件。
示例44包含示例43的主题,并且其中用于执行所述主系统管理中断处理机的部件包括用于执行所述主系统管理中断处理机而不等待所述计算装置的附属处理器核进入所述系统管理模式的部件。
示例45包含示例43和示例44中任一个的主题,并且进一步包含用于由处理器核响应于确定所述正在进行标记未被设置而确定所述计算装置的系统管理中断服务未决标记是否被设置的部件,其中所述计算装置的处理器响应于检测到所述系统管理中断而设置所述系统管理中断服务未决标记;用于由处理器核响应于确定所述系统管理中断服务未决标记未被设置而重新开始所述处理器核的执行模式的部件;以及用于由处理器核响应于获取所述主线程锁并在执行所述主系统管理中断处理机之前清除所述系统管理中断服务未决标记的部件;其中用于尝试获取所述主线程锁的部件进一步包括:用于响应于确定所述系统管理中断服务未决标记被设置而尝试获取所述主线程锁的部件。
示例46包含示例43-45中任一个的主题,并且其中用于确定系统管理中断服务未决标记是否被设置的部件包括用于确定处理器的系统管理中断状态寄存器的服务未决位是否被设置的部件。
示例47包含示例43-46中任一个的主题,并且其中用于重新开始执行模式的部件包括如下之一:用于重新开始保护模式的部件、用于重新开始长模式的部件或用于重新开始真实模式的部件。
示例48包含示例43-47中任一个的主题,并且其中用于尝试获取主线程锁的部件包括用于尝试读取计算装置的硬件寄存器的部件。
示例49包含示例43-48中任一个的主题,并且其中用于尝试获取主线程锁的部件包括用于尝试获取计算装置的软件锁的部件。
示例50包含示例43-49中任一个的主题,并且其中所述处理器核包括附属处理器核,计算装置进一步包括:用于由附属处理器核响应于确定所述正在进行标记被设置而执行附属系统管理中断处理机的部件;以及用于由附属处理器核响应于未获取所述主线程锁而执行所述附属系统管理中断处理机的部件。
示例51包含示例43-50中任一个的主题,并且其中用于执行附属系统管理中断处理机的部件包括:用于由附属处理器核确定所述附属处理器核是否是所述系统管理中断的源的部件;用于由附属处理器核响应于确定所述附属处理器核是所述系统管理中断的源而从不同于所述附属处理器核的所述计算装置的主处理器核接收处理所述系统管理中断的命令的部件;以及用于由附属处理器核响应于从所述主处理器核接收到所述命令而处理所述系统管理中断的部件。
示例52包含示例43-51中任一个的主题,并且进一步包含:用于由附属处理器核响应于确定所述附属处理器核是所述系统管理中断的源而设置指示附属处理器核是系统管理中断的源的标记的部件。
示例53包含示例43-52中任一个的主题,并且其中用于处理系统管理中断的部件进一步包括用于等待计算装置的第二附属处理器核进入系统管理模式的部件。
示例54包含示例43-53中任一个的主题,并且其中用于处理所述系统管理中断的部件进一步包括用于处理由所述计算装置的机器检查架构生成的机器检查异常的部件。
示例55包含示例43-54中任一个的主题,并且其中用于处理机器检查异常的部件包括用于纠正所述附属处理器核的存储器错误并将纠正的错误报告给所述计算装置的操作系统的部件。
示例56包含示例43-55中任一个的主题,并且其中用于执行主系统管理中断处理机的部件包括用于清除正在进行标记的部件。
示例57包含示例43-56中任一个的主题,并且其中所述处理器核包括主处理器核,并且其中用于执行所述主系统管理中断处理机的部件包括:用于由主处理器核确定所述系统管理中断是否由所述计算装置的组件而不是处理器核生成的部件;以及用于由主处理器核响应于确定所述系统管理中断是由所述计算装置的组件而不是处理器核生成而处理系统管理中断的部件。
示例58包含示例43-57中任一个的主题,并且其中用于执行主系统管理中断处理机的部件包括:用于由主处理器核确定所述系统管理中断是否由所述主处理器核生成的部件;以及用于由主处理器核响应于确定系统管理中断是由主处理器核生成而处理系统管理中断的部件。
示例59包含示例43-58中任一个的主题,并且其中用于处理所述系统管理中断的部件进一步包括用于处理由所述计算装置的机器检查架构生成的机器检查异常的部件。
示例60包含示例43-59中任一个的主题,并且其中用于处理机器检查异常的部件包括用于纠正计算装置的存储器错误并将纠正的错误报告给所述计算装置的操作系统的部件。
示例61包含示例43-60中任一个的主题,并且其中所述处理器核包括主处理器核,并且其中用于执行所述主系统管理中断处理机的部件包括:用于由主处理器核确定不同于所述主处理器核的所述计算装置的附属处理器核是否是所述系统管理中断的源的部件;用于由主处理器核响应于确定所述附属处理器核是所述系统管理中断的源而向所述附属处理器核发送处理所述系统管理中断的命令的部件;以及用于由主处理器核等待所述附属处理器核完成处理所述系统管理中断的部件。
示例62包含示例43-61中任一个的主题,并且其中用于确定计算装置的附属处理器核是否是系统管理中断的源的部件包括用于读取指示附属处理器核是系统管理中断的源的标记的部件,所述标记由附属处理器核设置。

Claims (18)

1.一种用于处理在计算装置中生成的系统管理中断的多核处理器,所述多核处理器包括:
处理器核,用于(i)响应于所述多核处理器检测到所述系统管理中断而进入系统管理模式;以及(ii)响应于进入所述系统管理模式而执行系统管理中断处理机管理器,所述系统管理中断处理机管理器用于:
确定正在进行标记是否被设置,所述正在进行标记指示所述多核处理器中的另一处理器核已经获取了所述计算装置的主线程锁;
响应于确定所述正在进行标记未被设置而尝试获取所述主线程锁;
响应于所述主线程锁的获取而设置所述正在进行标记;以及
响应于所述主线程锁的所述获取而执行主系统管理中断处理机,
其中所述多核处理器进一步包括系统管理中断服务未决标记,其中:
所述多核处理器将响应于检测到所述系统管理中断而设置所述系统管理中断服务未决标记;以及
所述系统管理中断处理机管理器将进一步:
响应于确定所述正在进行标记未被设置而确定所述系统管理中断服务未决标记是否被设置,
响应于确定所述系统管理中断服务未决标记未被设置而重新开始所述处理器核的执行模式,
响应于确定所述系统管理中断服务未决标记被设置而尝试获取所述主线程锁;以及
响应于所述主线程锁的获取并在执行所述主系统管理中断处理机之前清除所述系统管理中断服务未决标记。
2.如权利要求1所述的多核处理器,进一步包括附属处理器核,其中所述系统管理中断处理机管理器将进一步执行所述主系统管理中断处理机而不等待所述附属处理器核进入所述系统管理模式。
3.如权利要求1所述的多核处理器,进一步包括系统管理中断状态寄存器,其中所述系统管理中断服务未决标记包括所述系统管理中断状态寄存器的系统管理中断服务未决位。
4.如权利要求1所述的多核处理器,其中所述处理器核包括附属处理器核,所述多核处理器进一步包括不同于所述附属处理器核的主处理器核,并且所述系统管理中断处理机管理器将进一步:
响应于确定所述正在进行标记被设置而执行附属系统管理中断处理机;以及
响应于未能获取所述主线程锁而执行所述附属系统管理中断处理机;
其中所述附属系统管理中断处理机将:
确定所述附属处理器核是否是所述系统管理中断的源;
响应于确定所述附属处理器核是所述系统管理中断的源而从所述主处理器核接收处理所述系统管理中断的命令;以及
响应于从所述主处理器核接收到所述命令而处理所述系统管理中断。
5.如权利要求4所述的多核处理器,其中所述附属系统管理中断处理机将进一步处理由所述计算装置的机器检查架构生成的机器检查异常。
6.如权利要求1所述的多核处理器,其中所述处理器核包括主处理器核,并且所述主系统管理中断处理机将进一步:
确定所述系统管理中断是否由所述计算装置的组件而不是处理器核生成;
确定所述系统管理中断是否由所述主处理器核生成;以及
响应于确定所述系统管理中断是由所述计算装置的所述组件而不是处理器核生成,或者响应于确定所述系统管理中断由所述主处理器核生成,而处理所述系统管理中断,其中处理所述系统管理中断包括处理由所述计算装置的机器检查架构生成的机器检查异常。
7.如权利要求1所述的多核处理器,进一步包括不同于所述处理器核的附属处理器核,其中所述处理器核包括主处理器核,并且所述主系统管理中断处理机将进一步:
确定所述附属处理器核是否是所述系统管理中断的源;
响应于确定所述附属处理器核是所述系统管理中断的源而向所述附属处理器核发送处理所述系统管理中断的命令;以及
等待所述附属处理器核完成所述系统管理中断的处理。
8.一种用于处理在计算装置中生成的系统管理中断的方法,所述方法包括:
由所述计算装置的处理器核响应于检测到所述系统管理中断而进入所述处理器核的系统管理模式;
由所述处理器核确定正在进行标记是否被设置,所述正在进行标记指示所述计算装置的另一处理器核已经获取了所述计算装置的主线程锁;
由所述处理器核响应于确定所述正在进行标记未被设置而尝试获取所述主线程锁;
由所述处理器核响应于获取所述主线程锁而设置所述正在进行标记;以及
由所述处理器核响应于获取所述主线程锁而执行主系统管理中断处理机,
其中所述方法进一步包括:
由所述处理器核响应于确定所述正在进行标记未被设置而确定所述计算装置的系统管理中断服务未决标记是否被设置,其中所述计算装置的处理器将响应于检测到所述系统管理中断而设置所述系统管理中断服务未决标记;
由所述处理器核响应于确定所述系统管理中断服务未决标记未被设置而重新开始所述处理器核的执行模式;以及
由所述处理器核响应于获取所述主线程锁并在执行所述主系统管理中断处理机之前清除所述系统管理中断服务未决标记;
其中尝试获取所述主线程锁进一步包括:响应于确定所述系统管理中断服务未决标记被设置而尝试获取所述主线程锁。
9.如权利要求8所述的方法,其中所述处理器核包括附属处理器核,所述方法进一步包括:
由所述附属处理器核响应于确定所述正在进行标记被设置而执行附属系统管理中断处理机;以及
由所述附属处理器核响应于未获取所述主线程锁而执行所述附属系统管理中断处理机;
其中执行所述附属系统管理中断处理机包括:
由所述附属处理器核确定所述附属处理器核是否是所述系统管理中断的源;
由所述附属处理器核响应于确定所述附属处理器核是所述系统管理中断的源而从不同于所述附属处理器核的所述计算装置的主处理器核接收处理所述系统管理中断的命令;以及
由所述附属处理器核响应于从所述主处理器核接收到所述命令而处理所述系统管理中断。
10.如权利要求8所述的方法,其中所述处理器核包括主处理器核,并且其中执行所述主系统管理中断处理机包括:
由所述主处理器核确定不同于所述主处理器核的所述计算装置的附属处理器核是否是所述系统管理中断的源;
由所述主处理器核响应于确定所述附属处理器核是所述系统管理中断的源而向所述附属处理器核发送处理所述系统管理中断的命令;以及
由所述主处理器核等待所述附属处理器核完成处理所述系统管理中断。
11.一种用于处理在计算装置中生成的系统管理中断的计算装置,所述计算装置包括:
用于由计算装置的处理器核响应于检测到所述系统管理中断而进入所述处理器核的系统管理模式的部件;
用于由所述处理器核确定正在进行标记是否被设置的部件,所述正在进行标记指示所述计算装置的另一处理器核已经获取了所述计算装置的主线程锁;
用于由所述处理器核响应于确定所述正在进行标记未被设置而尝试获取所述主线程锁的部件;
用于由所述处理器核响应于获取所述主线程锁而设置所述正在进行标记的部件;以及
用于由所述处理器核响应于获取所述主线程锁而执行主系统管理中断处理机的部件,
其中所述计算装置进一步包括:
用于由所述处理器核响应于确定所述正在进行标记未被设置而确定所述计算装置的系统管理中断服务未决标记是否被设置的部件,其中所述计算装置的处理器将响应于检测到所述系统管理中断而设置所述系统管理中断服务未决标记;
用于由所述处理器核响应于确定所述系统管理中断服务未决标记未被设置而重新开始所述处理器核的执行模式的部件;以及
用于由所述处理器核响应于获取所述主线程锁并在执行所述主系统管理中断处理机之前清除所述系统管理中断服务未决标记的部件;
其中用于尝试获取所述主线程锁的所述部件进一步包括:用于响应于确定所述系统管理中断服务未决标记被设置而尝试获取所述主线程锁的部件。
12.如权利要求11所述的计算装置,其中用于执行所述主系统管理中断处理机的所述部件包括用于执行所述主系统管理中断处理机而不等待所述计算装置的附属处理器核进入所述系统管理模式的部件。
13.如权利要求11所述的计算装置,其中用于确定所述系统管理中断服务未决标记是否被设置的所述部件包括用于确定所述处理器的系统管理中断状态寄存器的服务未决位是否被设置的部件。
14.如权利要求11所述的计算装置,其中所述处理器核包括附属处理器核,所述计算装置进一步包括:
用于由所述附属处理器核响应于确定所述正在进行标记被设置而执行附属系统管理中断处理机的部件;以及
用于由所述附属处理器核响应于未获取所述主线程锁而执行所述附属系统管理中断处理机的部件;
其中用于执行所述附属系统管理中断处理机的所述部件包括:
用于由所述附属处理器核确定所述附属处理器核是否是所述系统管理中断的源的部件;
用于由所述附属处理器核响应于确定所述附属处理器核是所述系统管理中断的源而从不同于所述附属处理器核的所述计算装置的主处理器核接收处理所述系统管理中断的命令的部件;以及
用于由所述附属处理器核响应于从所述主处理器核接收到所述命令而处理所述系统管理中断的部件。
15.如权利要求14所述的计算装置,其中用于处理所述系统管理中断的所述部件进一步包括用于处理由所述计算装置的机器检查架构生成的机器检查异常的部件。
16.如权利要求11所述的计算装置,其中所述处理器核包括主处理器核,并且其中用于执行所述主系统管理中断处理机的所述部件包括:
用于由所述主处理器核确定所述系统管理中断是否由所述计算装置的组件而不是处理器核生成的部件;
用于由所述主处理器核确定所述系统管理中断是否由所述主处理器核生成的部件;以及
用于由所述主处理器核响应于确定所述系统管理中断是由所述计算装置的所述组件而不是处理器核生成或者响应于确定所述系统管理中断由所述主处理器核生成而处理所述系统管理中断的部件,其中用于处理所述系统管理中断的所述部件包括用于处理由所述计算装置的机器检查架构生成的机器检查异常的部件。
17.如权利要求11所述的计算装置,其中所述处理器核包括主处理器核,并且其中用于执行所述主系统管理中断处理机的所述部件包括:
用于由所述主处理器核确定不同于所述主处理器核的所述计算装置的附属处理器核是否是所述系统管理中断的源的部件;
用于由所述主处理器核响应于确定所述附属处理器核是所述系统管理中断的源而向所述附属处理器核发送处理所述系统管理中断的命令的部件;以及
用于由所述主处理器核等待所述附属处理器核完成处理所述系统管理中断的部件。
18.一种机器可读介质,其上面存储指令,所述指令在被执行时导致所述机器执行如权利要求8-10中任一项所述的方法。
CN201480008784.0A 2013-03-13 2014-02-26 用于多核处理器的系统管理中断处理 Active CN105359101B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/799,327 US9311138B2 (en) 2013-03-13 2013-03-13 System management interrupt handling for multi-core processors
US13/799327 2013-03-13
PCT/US2014/018664 WO2014158603A1 (en) 2013-03-13 2014-02-26 System management interrupt handling for multi-core processors

Publications (2)

Publication Number Publication Date
CN105359101A CN105359101A (zh) 2016-02-24
CN105359101B true CN105359101B (zh) 2020-01-31

Family

ID=51533789

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480008784.0A Active CN105359101B (zh) 2013-03-13 2014-02-26 用于多核处理器的系统管理中断处理

Country Status (4)

Country Link
US (1) US9311138B2 (zh)
EP (1) EP2972852B1 (zh)
CN (1) CN105359101B (zh)
WO (1) WO2014158603A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9141454B2 (en) * 2012-12-27 2015-09-22 Intel Corporation Signaling software recoverable errors
US10956169B2 (en) * 2015-10-30 2021-03-23 Texas Instruments Incorporated Method and system for boot time optimization of embedded multiprocessor systems
CN108292339B (zh) * 2016-01-26 2022-02-11 惠普发展公司,有限责任合伙企业 系统管理模式特权架构
US20170286333A1 (en) * 2016-03-30 2017-10-05 Intel Corporation Arbiter Based Serialization of Processor System Management Interrupt Events
US10061722B2 (en) 2016-10-17 2018-08-28 Qualcomm Incorporated Method to handle concurrent fatal events in a multicore execution environment
CN107436859A (zh) * 2017-08-04 2017-12-05 湖南利能科技股份有限公司 一种基于amp的数据采集方法
US11481206B2 (en) * 2019-05-16 2022-10-25 Microsoft Technology Licensing, Llc Code update in system management mode
US11829807B2 (en) * 2020-05-15 2023-11-28 Samsung Electronics Co., Ltd. Method and apparatus for preventing task-signal deadlock due to contention for mutex in RTOS
US20230105316A1 (en) * 2021-10-04 2023-04-06 Dell Products L.P. Secondary processor proxied device ownership system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5564060A (en) * 1994-05-31 1996-10-08 Advanced Micro Devices Interrupt handling mechanism to prevent spurious interrupts in a symmetrical multiprocessing system
CN1589431A (zh) * 2001-11-15 2005-03-02 英特尔公司 基于pmi和smi的调度执行框架中用于并发处理程序执行的方法和系统

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5862389A (en) * 1995-02-27 1999-01-19 Intel Corporation Method and apparatus for selectively invoking a particular interrupt service routine for a particular interrupt request
US20020099893A1 (en) * 2001-01-24 2002-07-25 Nguyen Tuyet-Huong Thi System and method for the handling of system management interrupts in a multiprocessor computer system
US6779065B2 (en) 2001-08-31 2004-08-17 Intel Corporation Mechanism for interrupt handling in computer systems that support concurrent execution of multiple threads
US6772259B2 (en) 2001-09-12 2004-08-03 International Business Machines Corporation Interrupt handlers used in different modes of operations
US20030093510A1 (en) * 2001-11-14 2003-05-15 Ling Cen Method and apparatus for enumeration of a multi-node computer system
US20030229794A1 (en) 2002-06-07 2003-12-11 Sutton James A. System and method for protection against untrusted system management code by redirecting a system management interrupt and creating a virtual machine container
GB2396712B (en) 2002-11-18 2005-12-07 Advanced Risc Mach Ltd Handling multiple interrupts in a data processing system utilising multiple operating systems
US7149832B2 (en) 2004-11-10 2006-12-12 Microsoft Corporation System and method for interrupt handling
US7984281B2 (en) * 2005-10-18 2011-07-19 Qualcomm Incorporated Shared interrupt controller for a multi-threaded processor
US7433985B2 (en) * 2005-12-28 2008-10-07 Intel Corporation Conditional and vectored system management interrupts
US7721034B2 (en) * 2006-09-29 2010-05-18 Dell Products L.P. System and method for managing system management interrupts in a multiprocessor computer system
US7865762B2 (en) * 2007-12-04 2011-01-04 Intel Corporation Methods and apparatus for handling errors involving virtual machines
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
US20090172229A1 (en) * 2007-12-28 2009-07-02 Krystof Zmudzinski Methods for selecting cores to execute system management interrupts
US7725637B2 (en) 2007-12-31 2010-05-25 Intel Corporation Methods and apparatus for generating system management interrupts
US8473945B2 (en) 2007-12-31 2013-06-25 Intel Corporation Enabling system management mode in a secure system
US8151027B2 (en) * 2009-04-08 2012-04-03 Intel Corporation System management mode inter-processor interrupt redirection

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5564060A (en) * 1994-05-31 1996-10-08 Advanced Micro Devices Interrupt handling mechanism to prevent spurious interrupts in a symmetrical multiprocessing system
CN1589431A (zh) * 2001-11-15 2005-03-02 英特尔公司 基于pmi和smi的调度执行框架中用于并发处理程序执行的方法和系统

Also Published As

Publication number Publication date
WO2014158603A1 (en) 2014-10-02
EP2972852A4 (en) 2016-11-09
EP2972852A1 (en) 2016-01-20
EP2972852B1 (en) 2020-07-15
CN105359101A (zh) 2016-02-24
US20140281092A1 (en) 2014-09-18
US9311138B2 (en) 2016-04-12

Similar Documents

Publication Publication Date Title
CN105359101B (zh) 用于多核处理器的系统管理中断处理
KR101635778B1 (ko) 시스템 관리 모드의 프로세서에 상태 스토리지를 제공하기 위한 장치, 방법 및 시스템
CN105723348A (zh) 使用事务性存储器检测未授权存储器修改及访问
US20150278123A1 (en) Low-overhead detection of unauthorized memory modification using transactional memory
CN110737534A (zh) 任务的处理方法、装置和服务器
EP3241116B1 (en) Memory access protection using processor transactional memory support
US11099884B2 (en) Dynamic control of halt polling based on receiving a monitoring instruction executed by a guest
US9760411B2 (en) Switching a locking mode of an object in a multi-thread program
US10802998B2 (en) Technologies for processor core soft-offlining
CN114168271B (zh) 一种任务调度方法、电子设备及存储介质
US20160188456A1 (en) Nvram-aware data processing system
US20150127931A1 (en) Information processing apparatus, boot up method, and computer-readable storage medium storing boot up program
CN117234729B (zh) 动态内存保护方法、装置、计算机设备及存储介质
US8122167B1 (en) Polling in a virtualized information handling system
US7797473B2 (en) System for executing system management interrupts and methods thereof
CN115576734B (zh) 一种多核异构日志存储方法和系统
US11455261B2 (en) First boot with one memory channel
US10289467B2 (en) Error coordination message for a blade device having a logical processor in another system firmware domain
US20200301608A1 (en) Controller event queues
US10360652B2 (en) Wavefront resource virtualization
CN117453413A (zh) 资源申请方法、装置、电子设备以及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant