KR100729793B1 - 다중 아키텍처를 위한 구성 요소 소프트웨어용 smm로더 및 실행 매커니즘 - Google Patents

다중 아키텍처를 위한 구성 요소 소프트웨어용 smm로더 및 실행 매커니즘 Download PDF

Info

Publication number
KR100729793B1
KR100729793B1 KR1020037014674A KR20037014674A KR100729793B1 KR 100729793 B1 KR100729793 B1 KR 100729793B1 KR 1020037014674 A KR1020037014674 A KR 1020037014674A KR 20037014674 A KR20037014674 A KR 20037014674A KR 100729793 B1 KR100729793 B1 KR 100729793B1
Authority
KR
South Korea
Prior art keywords
event
event handler
processor
handler
service
Prior art date
Application number
KR1020037014674A
Other languages
English (en)
Other versions
KR20040007551A (ko
Inventor
짐머빈센트
Original Assignee
인텔 코오퍼레이션
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 인텔 코오퍼레이션 filed Critical 인텔 코오퍼레이션
Publication of KR20040007551A publication Critical patent/KR20040007551A/ko
Application granted granted Critical
Publication of KR100729793B1 publication Critical patent/KR100729793B1/ko

Links

Images

Classifications

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

Landscapes

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

Abstract

하나 이상의 소프트웨어 드라이버(software driver) 또는 펌웨어 볼륨(firmware volume) 형태로 실행 가능한 콘텐트가 마이크로프로세서의 시스템 관리 모드(system management mode, SMM) 또는 아이테니엄 기반 프로세서(Itanium-based processor)의 고유 모드(native mode)로 로딩되도록 허용하는 방법 및 시스템이다. 메커니즘은 상기 동작(operations)을 위해 설치되는, 어쩌면 상이한 당사자들(different parties)에 의해 쓰여질 수 있는 다중 드라이버를 허용한다.
드라이버들에 의해 제공되는 이벤트 핸들러(registers event handlers)를 등록하는 에이전트(agent)는 EFI 부트 서비스 모드(boot-service mode)로 실행되고, 상기 드라이버들과 이벤트 트리거링 조건(event triggering condition)에 대응하는 xMI(PMI 또는 SMI) 신호의 칩셋 제어를 추상하는 플랫폼 구성 요소를 연결(bind)하는 CPU 특정(CPU-specific) 구성 요소로 구성된다. 따라서, 여러 프로세서의 SMM 모드 및 Itenium 프로세서의 고유 모드의 기능성(functionality)은 그 시스템의 BIOS 벤더의 컴퓨터 시스템으로부터 OEM이 아닌 당사자들에 의해 쓰여진 추가(add-on) 드라이버들을 통해 확장될 수 있다.
다중 아키텍처, 다중 프로세서, SMM, IA32, Itenium, 이벤트, 핸들러

Description

다중 아키텍처를 위한 구성 요소 소프트웨어용 SMM 로더 및 실행 매커니즘 {SMM LOADER AND EXECUTION MECHANISM FOR COMPONENT SOFTWARE FOR MULTIPLE ARCHITECTURES}
본 발명은 일반적으로 컴퓨터 시스템에 관한 것으로, 특히 시스템 관리 모드(system management mode, SMM) 및 기타 프로세서의 유사한 모드의 기능성(functionality)을 확장하는 메커니즘에 관한 것이다.
386SL 프로세서가 인텔 코포레이션(Intel Corporation)에 의해 소개된 이래, SMM는 BIOS 또는 펌웨어(firmware)에 의해 로딩된 코드를 실행하는 운영 체제(operating system, OS)에 대해 숨은 동작 모드(hidden operation mode)로 IA32 프로세스 상에서 이용할 수 있게 되었다. SMM는 전원 관리, 시스템 하드웨어 제어 또는 독점(proprietary) OEM 설계된 코드 등 시스템 전체에 미치는(system-wide) 기능들을 처리하기 위해 제공된 특수 목적의 동작 모드(operating mode)이다. SMM은 운영 체제와 애플리케이션이 그것을 인식하거나 액세스조차 할 수 없기 때문에 "숨은(hidden)"것으로 간주된다.
IA32 프로세서들은 SMI(System Management Interrupt) 신호의 활성화(activation)를 통해 SMM에 들어 갈 수 있게 된다. SMI 신호와 대략 비슷한 PMI(Processor Management Interrupt)라고 하는 유사한 신호는 아이테니엄급(ItaniumTM-class) 프로세서들에 사용된다. 단순히, 본 명세서에서 SMI 및 PMI 신호 모두를 때로 xMI 신호라고도 한다.
지금까지, 전술한 인텔 프로세서들의 SMM 기능(capability)에 지렛대 작용(leverage)하는 대부분의 BIOS 구현예는 상기 BIOS를 사용하는 시스템에 특정한 기능들의 집합 또는 특수 기능(function)을 지원하기 위해 BIOS를 구축하는 동안에 생성된 코드의 모노리식 섹션(monolithic section)을 단순히 등록(register)하는 것이다. 상기 코드는 IA32의 16비트 어셈블리와 Itenium 프로세서용 64비트 어셈블리를 포함한다. 이들 레거시(legacy) 구현을 위한 모노리식 코드 세그먼트들은 모든 xMI 활성화에 응답하여 시작에서부터 완료까지 실행한다.
오늘날의 시스템은 제3자(third-party) SMM 코드의 실행 또는 등록에 대한 조항(provision)이 없으며, 따라서 SMM 프레임워크(framework)에 확장성(extensibility)을 허용하지 않는다. 그러한 확장성은 종종 요구된다. 예를 들어, 주문자 사용에 의한 제품 생산자(original equiment manufacturer, OEM) 또는 BIOS 벤더(vendor)에 의해 제공된 SMM 코드에 의해 제공되는 모든 플랫폼(platform)용 기능들이 불충분하면, 현재 SMM 프레임워크는 모노리식 코드 세그먼트에 의해 제공되는 기능들을 수정하거나 확장하기 위한 대안을 제공하지 않기 때문에, 개발자 또는 부가가치 전매가(value-added reseller, VAR)는 BIOS 벤더 또는 OEM으로부터 현존하는 코드의 사용을 허가 받아(license) 그들의 로직을 그들의 SMM 코드 구현에 이식(graft)하는 것을 시도하거나, 불충분한 대로 지내야 한다. 또한 오늘날의 IA32상에서의 구현예들은 프로세서의 16비트 모드에 제약을 받으므로, 코드의 크기와 32비트 또는 64비트 소프트웨어 엔지니어링 기술의 가능한 지렛대 작용이 한정된다. 또한 그러한 SMM는 종종 칩세트 워크어라운드(chipset work-arounds)(예를 들어, 칩세트 또는 CPU의 설계나 제조상의 결함에 기인하는 잘못된 및/또는 바람직하지 못한 결과를 발생시키는 CPU 또는 칩세트의 오류(errata))용으로 사용되며, 이 핵심 소프트웨어 갱신을 취득하기 위한 능력(ability)은 OEM 또는 BIOS 벤더의 모노리식 BIOS 구현에 의해 제어된다(gated).
현재의 환경에서, 대부분의 칩세트 벤더는 OS 드라이버를 사용한 그러한 워크어라운드를 통합하는 운영 체제 벤더를 가지는 것을 선택한다. 일반적으로 SMM 함수(function)를 위한 BIOS 갱신은 효과가 불확실하고, OS는 자신의 드라이버 모델을 통한 하드웨어 확장 메커니즘을 이미 가지고 있기 때문에, BIOS 벤더와 OEM은 이런 유형의 BIOS 갱신을 제공하는 것에 대해 동기 부여를 덜 받는다.
다음의 설명에서, 본 발명의 실시예를 완전한 이해를 위해 많은 구체적인 세부사항이 제공된다. 하지만, 이 기술 분야의 당업자는 하나 이상의 구체적인 세부사항 없이, 또는 다른 방법들, 구성 요소들 등과 함께 본 발명이 실시될 수 있음을 인식할 것이다. 다른 경우에, 본 발명의 여러 실시예의 양상(aspect)이 모호해지는 것을 피하기 위하여 공지된 구조 또는 동작은 도시되지 않거나 상세하게 설명되지 않는다.
본 명세서의 전반에 걸쳐 "하나의 실시예" 또는 "일 실시예"는 본 발명의 적어도 하나의 실시예에 포함된 실시예와 관련하여 기술된 특정한 특성(feature), 구조 또는 특징(characteristic)을 의미한다. 따라서, 본 명세서의 전반에 여러 곳에서 "하나의 실시예에서" 또는 "일 실시예에서"라는 문구는 반드시 동일한 실시예 모두를 가리키는 것은 아니다. 또한, 특정한 특성, 구조 또는 특징은 하나 이상의 실시예에서 임의의 적당한 방식으로 결합될 수 있다.
본 발명은 인텔의 32비트 계열 마이크로프로세서(즉, IA-32 프로세서들)의 시스템 관리 모드 또는 PMI 신호 활성화와 함께 Itenium 기반 프로세서(Itanium-based processor)의 고유 모드(native mode)로 로딩될, 하나 이상의 소프트웨어 드라이버(software driver) 형태로 실행 가능한 콘텐트를 허용하는 메커니즘을 제공한다. 코드의 실행 상태는 IA32 SMM에서는 SMI 신호에 의해 시작되고, ItaniumTM 프로세서들에서는 PMI 신호 활성화에 의해 시작되는데, 단순하게 하기 위해 이들을 보통 SMM이라 할 것이다. 상기 메커니즘은 SMM 동작들을 위해 설치되는, 어쩌면 상이한 당사자들(different parties)에 의해 쓰여질 수 있는 다중 드라이버(multiple driver)를 허용한다. 드라이버들을 등록하는 에이전트(agent)는 EFI(Extensible Firmware Interface, 확장 가능한 펌웨어 인터페이스) 부트 서비스 모드(boot-service mode)(즉, 운영 체제를 실행(launch)하기 이전의 모드)로 실행되고, 상기 드라이버들과 xMI(PMI 또는 SMI) 신호의 칩셋 제어를 추상하는(abstract) 플랫폼 구성 요소를 연결(bind)하는 CPU 지정(CPU-specific) 구성 요소로 이루어진다. 이들 기능성의 집합을 제공하는 API(Application program interface, 애플리케이션 프로그램 인터페이스)는 각각 SMM 기준(base)과 SMM 액세스 프로토콜이라 한다.
종래의 SMM 구현에서, SMM 공간은 제어를 넘겨주기 전에 하드웨어 메커니즘들을 통해 플랫폼 소프트웨어/펌웨어/BIOS에 의해 종종 잠금 상태(locked)가 되는데, 이것은 펌웨어에게 바인딩(binding)의 보안 및 제어를 추상하는 능력(ability)을 부여한다. 반대로, 본 발명에 의해 제공되는 SMM 액세스 프로토콜을 통한 소프트웨어 추상은 정확한 하드웨어 메커니즘을 알고 이해하고자하는 이러한 편의성에 대한 사용자의 요구를 없애, 드라이버들을 많은 플랫폼 전역에서 휴대 가능할 수 있도록 한다.
이하에 더욱 상세하게 설명되는 바와 같이, 본 발명은 다음의 특징들(features), 즉 I/O 액세스 추상화(abstraction) 및 메모리 할당 서비스를 포함하는 드라이버 사용을 위한 SMM의 라이브러리(library); 비 SMM 모드로 실행하는 애플리케이션 및 드아이버들과 통신하기 위한 수단; 소정의 주파수로 주기적으로 활성화하기 위한 광학 파라미터; SMM으로 로딩 시에 드라이버들을 인증하기 위한 수단; 등록 기능(registration capability)을 완결(close)시키기 위한 능력(ability); 여러 프로세서가 xMI 활성화를 수신하는 다중 프로세서 환경에서 실행하기 위한 능력(ability); 그리고 끝으로 식별된 등록된 이벤트 핸들러로서 레거시 IA32 SMM 코드를 실행하기 위한 기능(capability) 포함한다. 시스템의 특징은 모든 이벤트 핸들러가 IaniumTM 또는 IA32인 경우에 고유 프로세서 모드로 실행된다는 것이며, 프레임워크는 선택적으로 레거시 IA32 핸들러(들)을 실제 모드(real-mode)(즉, 16비트 모드)로 실행시키는 한편, 이벤트 핸들러들을 호출하기(invoking) 전에 프로세서를 플랫32(flat32) 모드로 둘 것이다.
전술한 본 발명의 특징(aspects)과 수반하는 많은 이점은 첨부 도면과 함께 이하의 상세한 설명을 참조함으로써 더 잘 이해되는 것과 마찬가지로 더욱 용이하게 인식될 것이다.
도 1은 숨은 메모리 공간으로 다양한 이벤트 핸들러가 로딩되어 SMI 또는 PMI(xMI) 이벤트에 응답하여 시행될 수 있도록 하는 본 발명의 일 실시예를 나타내는 개략도이다.
도 2는 xMI 이벤트를 처리할 때, 본 발명에 의해 사용되는 논리(logic)을 예시하는 흐름도이다.
도 3은 프로세서가 SMM으로 동작할 때 이벤트 처리를 관리하기 위해 사용되는 SMM Nub의 로딩 및 론칭(launching)을 실행하는 경우, 본 발명에 의해 사용되는 로직을 예시하는 흐름도이다.
도 4는 SMM Nub의 여러 기능 및 서비스 구성 요소들을 예시하는 블록도이다.
도 5 이벤트 핸들러를 등록할 때, 본 발명에 의해 사용되는 논리를 예시하는 흐름도이다.
도 6은 프리부트 프로세스(pre-boot process) 동안에 주사되는(scanned) 펌웨어 볼륨들 내에 저장되어 있는 이벤트 핸들러를 등록 및 설치할 때, 본 발명에 의해 사용되는 논리를 예시하는 흐름도이다.
도 7은 ItaniumTM 프로세서로 프로세서 관리 인터럽트(PMI) 이벤트를 서비스하는 이벤트 핸들러들을 등록할 때, 본 발명에 의해 수행되는 동작들을 예시하는 흐름도이다.
도 8은 PMI 이벤트 핸들러의 경우, 본 발명에 의해 수행되는 동작들을 예시하는 흐름도이다.
도 9는 본 발명의 구현에 적합한 개인용 컴퓨터 시스템을 개략적으로 나타낸 도면이다.
도 1에 하이 레벨 관점의 본 발명의 구현예를 도시한다. 구현예는 EFI 플레임워크를 사용함으로써 가능하게 되는데, 운영 체제와 플랫폼 펌웨어 사이를 인터페이싱하는 새로운 모델을 규정한다. 인터페이스는 플랫폼 관련 정보, 추가 부트(plus boot) 및 운영 시스템과 그 로더(loader)에서 이용할 수 있는 실행시간 서비스 호출(runtime service calls)을 포함하는 데이터 테이블들로 이루어진다. 이들 모두는 운영 체제를 부팅하고 프리부트(pre-boot) 애플리케이션을 실행하는 표준 환경을 제공한다.
SMM 확장성 프레임워크를 생성하는 프로세스는 블록 10에서 시작하는데, 여기서 SMM 확장성 프레임워크에 대해 사례를 들어 설명한다. 블록 10은 블록 12에서의 EFI SMM 기준 프로토콜(base protocol) 드라이버의 설치를 포함한다. EFI SMM 기준 프로토콜(SMM_BASE)는 IA32 또는 Itanium 프로세서의 ISA 지정 항목(ISA-specific details)을 추상할 수 있는 CPU 드라이버 또는 다른 에이전시에 의해 공표된 CPU 지정 프로토콜이다. 일단 설치되면, SMM_BASE는 블록 14에서 SMM 핸들러 등록 서비스를 공표한다(publish). 핸들러 등록 서비스의 공표는 EFI 시스템 파티션(partition)(16), BIOS 플래시 칩(flash chip)(18), 및 네트워크(20)를 통해 액세스되는 기억 장치 등을 포함하는 여러 기억 장치에 저장된 레거시 및 추가 드라이버(add-on driver)들은 블록 22에서 SMM 이벤트 핸들러들의 등록을 허용한다. 이런 종류의 기억 장치에 더해, 드라이버들은 본 발명이 구현되는 컴퓨터 시스템에 액세스 가능한 마더보더 기반 ROM, 추가 주변 카드에 포함된 옵션 ROM, 로컬 하드디스크 및 CD ROM을 포함하는 다른 영속적인 기억 장치에 저장될 수 있는데, 이것을 집합적으로 펌웨어 볼륨(firmware volume)으로 설명한다. (EFI 시스템 파티션(16), BIOS 플래시 칩(18) 및 드라이버(6)가 상주하는 원격 저장 장치도 또한 펌웨어 볼륨들을 구성할 수 있음에 유의하여야 한다.) 도 1에 도시한 바와 같이, 이들 드라이버는 EFI 시스템 파티션(16)에 저장된 레거시 드라이버(1)와 추가 드라이버(2), BIOS 플래시 칩(18) 상에 저장된 추가 드라이버(3, 4, 5), 그리고 네트워크(20)를 통해 원격 저장 장치(예: 파일 서버)로부터 액세스되는 추가 드라이버(6)를 포함한다. 본 명세서에 사용된 것처럼, 용어 "추가(add-on)"는 주문자 상표에 의한 제품 생산자(OEM)의 컴퓨터 시스템에 의해 제공될 때 원래의 펌웨어와 함께 제공되지 않은 드라이버들 및 펌웨어 파일들에 대응한다.
선택 모드(optional mode)에서, EFI SMM 기준 프로토콜은 SMM을 통해 xMI 이 벤트들을 서비스하도록 지정된 모든 드라이버들을 식별하기 위하여 여러 펌웨어 볼륨을 주사할 수 있다. 하나의 실시예에서, 이 드라이버들은 추가 드라이버(7)에 대응하는 "DRIVER7.DMH" 파일(25)로 예시된 바와 같이 그들의 파일 형식(file type)에 의해 식별된다.
EFI SMM 기준 프로토콜 드라이버의 설치중에, SMM Nub(24)가 SMM 전용 메모리 공간을 구성하는 SMRAM(26)으로 로딩된다. 이하에 더욱 자세하게 설명하는 것처럼, SMM Nub(24)는 제어가 SMM에 전달되는 동안에 PCI 및 I/O 서비스(30), 메모리 할당 서비스(32), 및 구성 테이블 등록(configuration table registration)(34)을 포함하는 이벤트 핸들러들에 SMM 라이브러리(28)를 제공하는 것을 포함하는 모든 활동들(activities)을 조화시키는 것에 책임이 있다.
SMM 이벤트 핸들러의 등록은 실행하도록 설계된 특정한 xMI 이벤트 서비스 기능을 수행하기 위한 핸들러를 허용하는 첫 번째 단계이다. SMM 이벤트 핸들러는 시스템 프로세서(CPU)에 의해 실행되는 경우에 인터럽트 서비스 루틴과 유사한 방식으로 이벤트 서비스 기능을 수행하는 코드의 집합, 즉 부호화된 기계 명령어(coded machine instructions)을 포함한다. 일반적으로, 각 SMM 이벤트 핸들러는 특정한 하드웨어 구성 요소 또는 서브시스템, 또는 하드웨어의 특정 클래스(class)를 서비스하기 위한 코드를 포함할 것이다. 예를 들어, SMM 이벤트 핸들러는 시스템의 실시간 클럭에 의해 발생된 오류, I/O 포트 오류, PCI 장치 오류 등을 서비스하기 위해 제공될 수 있다. 일반적으로, 소정의 드라이버와 SMM 이벤트 핸들러 사이에는 어떤 대응(correspondence)이 존재할 수 있다. 그러나, 이 것은 핸들러들이 단일 드라이버 파일 또는 객체로부터 추출된 기능 블록들의 집합을 포함할 수 있는 것처럼 엄격한 필요조건은 아니다.
레거시 드라이버 1을 위한 이벤트 핸들러가 등록될 때, 그 이벤트 핸들러는 레거시 핸들러(36)로서 SMRAM(26)에 로딩된다. 레거시 핸들러는 일반적으로 원래의 시스템 펌웨어와 함께 제공되는 이벤트 핸들러이며, xMI 이벤트를 처리하는 종래의 메커니즘을 의미한다. 블록 22에서 각 추가 SMM 이벤트 핸들러가 등록될 때, SMRAM(26)의 추가 SMM 이벤트 핸들러부(38)로 로딩되며, 일단 모든 이벤트 핸들러가 로딩되면 추가 SMM 이벤트 핸들러부(38)는 블록 42로 도시한 바와 같이 추가 드라이버(2-7)에 대응하는 이벤트 핸들러의 집합을 포함한다. 또한, 각 SMM 이벤트 핸들러가 등록될 때, 그 이벤트 핸들러가 컴퓨터 시스템의 특정 프로세서 및/또는 펌웨어와 함께 사용하는 것이 유효한 것임을 보증하기 위하여 블록 44에서 선택적으로 인증을 받을 수도 있다. 예를 들어, 공개 키(public key)를 구현하는 암호화 방법이 사용될 수 있다. SMM 이벤트 핸들러가 등록될 때, SMM Nub(24)에 의해 유지되는 핸들러 리스트(46)에 추가된다.
일단 모든 레거시 및 추가 SMM 이벤트 핸들러가 등록되어 SMRAM(26)에 로딩되었으면, 고유 구성 데이터(proper configuration data)(메타 데이터)가 SMM Nub(24)에 기록되고, SMRAM은 추가적인 SMM 이벤트 핸들러의 등록을 방지하기 위해 잠금 상태가 된다(locked). 이 시스템은 이제 SMM을 통해 여러 xMI 이벤트를 처리할 준비가 되었다.
도 1 및 2를 참조하면, IA32 프로세서로 xMI 이벤트를 처리하는 프로세스는 다음과 같이 진행된다. 블록 54에서, xMI 이벤트 신호(48)는 CPU(50)에 의해 수신된다. IA32 다중 프로세서 환경에서, xMI 이벤트 신호는 각각의 프로세서에 의해 수신된다. 일반적으로, IA32 프로세서들의 경우, xMI(SMI) 이벤트는 시스템 칩세트 상의 핀, 버스 사이클 유형, 또는 IA32 프로세서로 하여금 SMM로 들어가도록 하는 프로세서간 인터럽트(interprocessor interrupt, IPI)의 활성화에 응답하여 발생될 수 있다. ItaniumTM 프로세서의 경우, xMI(SMI) 이벤트는 시스템 칩세트 상의 핀, 버스 사이클 유형, 또는 ItaniumTM 프로세서로 하여금 물리 모드(Physical Mode)로 복귀하여 PMI 이벤트를 서비스하기 위해 PAL(Processor Abstraction Layer, 프로세서 추상화 층)에 등록된 코드를 실행하도록 하는 IPI의 활성화에 응답하여 발생될 수 있다.
xMI 이벤트에 응답하여, CPU(50)는 SMM 모드로 전환하고 명령어 포인터를 SMM Nub(24) 내의 첫 번째 명령어에 대한 것으로 수정하며, SMM Nub는 블록 55에 의해 제공된 바와 같이 실행을 시작한다. 판단 블록 56에서, 시스템이 다중 프로세서 시스템인지에 대한 판단이 이루어진다. 그 응답이 "예(yes)"이면, 블록 57에서 모든 프로세서가 동기화되고, 선택된 프로세서(예: 프리부트 프로세스 동안에 식별된 첫 번째 프로세서)를 제외한 모든 프로세서는 SMM Nub가 선택된 프로세서에서 실행되는 동안에 정지(halt)된다. 이어서 블록 58에서 각 CPU의 기계 상태(mashine state)는 CPU 하드웨어와 SMM Nub(24)에 의해 저장된다.
다음, 판단 블록 59에서, 등록 및 로딩이 완료된 임의의 16비트 레거시 핸들 러가 존재하는지에 대한 판단이 이루어진다. 만약 존재하면, 블록 60에서 그러한 레거시 핸들러에 대응하는 코드가 실행된다. 그런 다음 기계 실행 모드는 블록 61에서 플랫32 보호 모드(flat32 protected mode)로 전환된다. 보호 모드는 페이지불가(non-pageed) 32비트, 영기점 주소지정(zero-based addressing)을 구비한 플랫 32비트 모드를 포함한다.
일단 실행 모드가 완전히 전환되었으면, 고유 32비트 핸들러들은 도 2의 시작 루프 블록 63 및 종료 루프 블록 63, 그리고 도 1의 블록 52에 의해 제공된 바와 같이, 적합한 이벤트 핸들러가 디스패칭되고 실행되어 xMI 이벤트의 서비스가 완료될 때까지 이벤트 핸들러는 차례로 디스패칭된다. 일 실시예에서, 이벤트 핸들러는 위에서 아래의 순서로 트래버스되는(traversed) 링크형 리스트(linked list)로서 저장되며, 첫 번째 이벤트 핸들러가 디스패치되고 추가적인 이벤트 핸들러들은 필요할 때에 디스패칭된다. 각 이벤트 핸들러는 그 핸들러가 xMI 이벤트를 서비스하기에 적당한 핸들러인지를 판단하는 데 사용되는 코드의 제1 부분을 포함한다. 일반적으로 이러한 종류의 판단은 그 객체(object)에 대해 오류가 발생하였는지를 확인하기 위한 이벤트 핸들러에 대응하는 하드웨어 구성요소, 서브시스템 등의 문의(interrogating)를 포함한다. 만약 오류가 발생하였으면, 이벤트 핸들러는 블록 65에서 완료를 위해 실행되고, 그 후에 복귀 블록 66에서 xMI 이벤트를 서비스하였음을 나타내는 코드를 SMM Nub에 반환한다(return). 이벤트 핸들러는 대응하는 장치가 오류를 발생시키지 않았다고 판단하면, 그것을 나타내는 코드를 SMM Nub에 반환하고, SMM Nub는 리스트에서 다음 이벤트 핸들러를 디스패칭한다. 이 프로세스는 적합한 이벤트 핸들러가 실행될 때까지 반복된다.
취급되는 xMI 이벤트에 대한 승인(acknowledgment)에 따라, 블록 67에서 SMM Nub는 프로세서(들)을 이전 처리 모드로 복귀시키기 위하여 해당 프로세서/모든 프로세서에 대해 기계 상태를 복원하고 적합한 명령(IA32용 RSM)을 실행한다.
도 3을 참조하면, IA32 프로세서용 EFI SMM 기준 프로토콜 드라이버(SMM_BASE)는 다음 프로세스를 통해 설치된다. 먼저, 블록 68에서 SMM_BASE::Initialize 서비스가 호출된다. 이것은 이 구성자(constructor)를 로딩하고 이식(export)하는 DXE(Driver Execution Environment, 드라이버 실행 환경) 부트 서비스 드라이버를 사용하여 실행된다.
상기 드라이버 사례화(instantiating)에 응답하여, SMM Nub(24)의 시작 코드(startup code)는 보호 모드에서 동작하는 동안에 CPU 디폴트 SMRAM 주소(0x3000-세그먼트, 오프셋 0x8000)에서 SMRAM에 로딩된다. 그런 다음, 프로세서 모드는 블록 69에서 실행 주소 0x380000p에서 실제 모드(real-mode)로 바뀐다. 다음, 블록 70에서, 플랫폼의 SMRAM 실행에 대한 허용 가능한 주소 범위가 확인되어 할당된다. 이 정보는 이하에 설명하는 바와 같이, SMM_BASE::Initialize 드라이버를 사용하여 SMM_ACCESS::GetCapabilities 및 SMM_ACCESS::AcquireSmramRange 방법들을 호출함으로써 취득될 수 있다. 만약에 이 드라이버가 존재하지 않으면, 디폴트 정책(defalut policy)은 디폴크 크기(IA32는 128Kb, ItaniumTM는 256Kb)를 갖는 IA32 프로세서들을 위한 0xA000-세그먼트, 그리고 ItaniumTM 프로세서들을 위 한 실행시간 데이터(runtime-data)가 될 것이다.
주소 범위가 할당된 후, 블록 71에서 SMM_ACCESS::Open 서비스가 호출되고(invoked), 블록 72에서 SMRAM의 시작 주소는 디폴트 CPU 주소(0x38000p)에서 플랫폼 주소로 재배치된다. 재배치 코드는 실제 모드 구성 요소와 보호 모드 구성 요소를 포함할 것이다. 실제 모드 구성 요소는 SMMEntry를 SMRAM 재배치 주소에 포함시킬 것이다. 블록 73에서, 이 코드는 모든 레거시 서비스를 수행하기 위하여 필요할 때 실행될 것이며, 프로세서를 보호 모드 동작으로 전환할 것이다. 그런 다음 제어는 블록 74의 SMM 코어(core)로 넘겨진다(handed off).
전술한 바와 같이, SMM Nub(24)는 프로세서가 SMM에서 동작하는 동안에 활동들을 조화시키 것에 책임이 있다. SMM Nub(24)에 의해 제공되는 여러 기능(fuction) 및 서비스는 도 4에 도시된다. 이 기능들 및 서비스들은 기능 블록 75, 76, 및 78에 의해 제공된 바와 같이, 다중 프로세서 구성(configuration)의 모든 프로세서에 대한 동기화, 부동소수점 레지스터를 포함한 기계 상태의 저장, 그리고 필요에 따라 캐시의 플러싱(flushing)을 포함한다. SMM Nub는 또한 블록 73과 관련하여 전술한 바와 같이 프로세서 모드를 실제 모드에서 보호 모드로 전환하는 모드 전환 기능(80)을 제공한다. 모드 전환 기능(80)은 또한 프로세서들의 내부 캐시를 허용한다. SMM Nub(24)에 의해 제공되는 다른 기능들은 기능 블록 82, 84, 및 86에 도시한 바와 같이, SMRAM(26) 내의 호출 스택 구성(setting up), 핸들러 리스트의 유지, 및 순차적인 핸들러 디스패칭을 포함한다.
SMM Nub(24)는 PCI 및 I/O 서비스들(30), 메모리 할당 서비스들(32), 및 구 성 테이블 등록 서비스들(34)을 포함하는 SMM 라이브러리(28)를 통해 여러 이벤트 핸들러에 일련의 서비스를 제공한다. 또한 SMM Nub(24)는 xMI 이벤트가 서비스된 후에 수행되는 몇 가지 기능을 제공한다. 만약 컴퓨터 시스템이 다중 프로세서 구성으로 구현되면, 프로세서들은 기능(88)에 의해 해제된다(freed). 기능(90)은 필요한 경우 부동소수점 레지스터들을 포함한 프로세서(들)의 기계 상태를 복원한다. 끝으로 기능(92)은 시스템의 모든 프로세서에 대한 RMS 명령을 실행하기 위해 사용된다.
전술한 바와 같이, 본 발명은 로딩 이벤트 핸들러들을 위해 2개의 메커니즘, (1) 드라이버 기반 설치, 그리고 (2) 펌웨어 볼륨들로부터 자율적인 로딩을 제공한다.
드라이버 기반 설치의 경우, SMM_BASE 프로토콜은 DXE 디스패처에 의해 로딩된 드라이버에 의해 설치되어야 한다. SMM_BASE 프로토콜는 설치된 후, 이벤트 핸들러의 등록 및 설치를 허용하는 인터페이스를 공표한다. 등록을 위한 프로토콜은 EFI1.0 명세에 의해 기술되며, EFI 환경에서 새롭게 호출 가능한 인터페이스를 공표하는 메커니즘을 규정한다. SMM_BASE 프로토콜 공표는 EFI 코어와 함께 SMM-CIS(SMM "구성 요소 인터페이스 명세" 또는 프리부트 공간에서 이 등록 메커니즘을 추상화하는 API 집합 또는 EFI2.0 프로토콜을 기술하는 EFI2.0 문서)를 필수적으로 포함한다. EFI 코어는 GUID/인터페이스 포인터 쌍들의 데이터베이스를 유지한다. GUID는 인터페이스의 128비트 전역 고유(globally-unique) ID를 포함한다.
이 메커니즘을 통해, 이벤트 핸들러들을 설치하고자 하는 모든 드라이버는 SMM_BASE 프로토콜 인스턴스(instance)를 (코어 서비스 "LocateProtocol"을 통해) 발견하기 위해, 또는 SMM_BASE 프로토콜이 설치될 때 경보될 EFI 코어와 함께 통지를 등록하기 위해 EFI1.0 표준 메커니즘을 사용할 수 있으며, 하나의 실시예에서 이벤트 핸들러는 IA32에서의 PE32+ 이진 또는 ItaniumTM 명령어 집합, 또는 IA32용 레거시 16비트 핸들러들일 수 있는 소정의 코드이다. 어느 경우에나 일단 SMM_BASE 프로토콜이 설치되면, 많은 드라이버들은 SMM_BASE 인스턴스에 대한 인터페이스 포인터를 (EFI1.0 "HandleProtocolservice"를 통해) 마셜(marshall)할 수 있으며, 그 후 SMM_BASE::Register 서비스를 호출(invoke)한다. SMM_BASE 서비스를 소비하는 드라이버가 사용하는 이진 코드는 자체 드라이버 영상, 디스크의 파일, 또는 네트워크로부터 확인(ascertaining)할 수 있다. 상기 파일은 펌웨어 볼륨 내 또는 FAT 디스크 파티션 상에 존재할 수 있다.
이벤트 핸들러들의 등록은 SMM_BASE::Register 서비스에 의해 더욱 용이해진다. 이 서비스는 이벤트 드라이버의 등록을 허가하는 DXE 부트 서비스(Boot-Service) 드라이버를 포함한다. 도 5를 참조하면, 이벤트 핸들러를 등록하는 프로세스는 블록 100에서 시작하며, 이벤트 핸들러를 등록하기 위한 요구는 다른 부트 서비스 드라이버나 애플리케이션(즉, 드라이버 1 내지 7)으로부터 SMM_BASE 프로토콜 드라이버에 의해 수신된다. 이에 응답하여, IPI 또는 SMM_CONTROL 프로토콜을 사용하여 블록 102에서 SMI가 생성된다. 인수(argument)는 다른 핸들러를 호출하는 것처럼 ESP 메모리 스택 포인터를 사용하여 메모리 스택에 넘겨진다. 핸들러들 은 C로 쓰여 질 수 있으며 생성된 영상 PE32+일 수 있다. 다음, 블록 104에서 메모리 재배치(relocation)가 수행되고 ST(EFI1.O의 시스템 테이블) 포인터는 SMST(System Management System Table)에 대한 포인터로 교체된다.
다음, SMRAM이 SMM_ACCESS 프로토콜을 통해 액세스되는 SMM_ACESS::Open 서비스를 사용하여 블록 106에서 개방 상태가 된다(opened). SMM_ACCESS 프로토콜에 대해서는 후술되는 APPENDIX에서 더욱 상세하게 제공한다. SMM_ACESS::Open 서비스는 비SMRAM 기준 코드(base code)로부터 SMRAM의 가시성(visibility)을 허용하기 위해 메모리 제어기의 프로그래밍을 추상한다. 이것은 SMM_BASE 프로코콜이 SMM Nub와 같은 코드를 SMRAM에 복사하고 설치할 수 있도록 한다.
다음에, 판단 블록 108에서 이벤트 핸들러 루틴을 유지하기에 충분한 SMRAM이 사용 가능한지에 대한 판단이 이루어진다. 사용 가능한 SMRAM 메모리 공간이 충분하지 않다면, 논리 흐름(logic)은 호출자(caller)에게 경보되는 블록 110으로 진행한다. 선택사항으로, 경보되는 것에 응답하여 호출자는 SMRAM 내에 추가적인 메모리 공간을 얻기 위하여 SMM_ACCESS::GetCapabilities와 SMM_ACCESS::Acquire SmramRange 방법을 사용할 수 있다. 사용 가능한 SMRAM 메모리 공간이 충분하지 않다면, SMRAM은 SMM_ACCESS::Close 방법을 호출함으로써 폐쇄 상태가 되고(closed), 오류 복귀 블록 114에서 오류 코드는 호출자에게 반환된다.
사용 가능한 SMRAM 메모리 공간이 충분하다고 판단되었으면, 핸들러의 SMRAM 영상을 위한 메모리 버퍼는 블록 116에서 할당된다. 상기 할당이 성공하였는지에 대한 판단이 판단 블록 118에서 이루어진다. 만약 할당이 성공적이지 못하면, 논 리 흐름은 오류 복귀 블록 114로 진행한다. 만약 할당이 성공적이면, 이벤트 핸들러의 영상이 블록 120에서 미리 할당되어 있는 SMRAM 메모리 공간으로 로딩된다. 그런 다음 블록 122에서 상기 영상이 적당한(good) 것인지에 대한 판단이 이루어진다. 만약 적당하지 않다면, 논리 흐름은 오류 복귀 블록 114로 진행한다. 만약 상기 영상이 적당한 것으로 확인되면, 블록 124에서 SMM Nub(24)는 핸들러(46) 리스트에 새로운 이벤트 핸들러를 추가함으로써 새로운 이벤트 핸들러를 등록하고, 복귀 블록 126에서 SMRAM은 폐쇄 상태가 되며(closed) 프로세스는 호출자에게 돌아간다.
펌웨어 볼륨들로부터 이벤트 핸들러들을 자율적으로 로딩하는 메커니즘은 SMM_BASE 인터페이스 및 SMM_BASE::Register 서비스를 소비하는 다른 드라이버를 구비하는 것에 의존하지 않는다. 등록 프로세스를 시작하는 드라이버들을 구비하는 것이 아니라, 프리부트 동안에 구체화되는 (materialized) 여러 펌웨어 볼륨(FV)이 SMM_BASE 드라이버에 의해 로딩될 수 있는 이벤트 핸들러들을 포함하는 적합한 드라이버 파일들을 위해 주사된다.
펌웨어 볼륨은 펌웨어 파일들의 집합이다. 펌웨어 볼륨 내의 각 펌웨어 파일은 펌웨어 파일 헤더 내의 다른 메타데이터 중에 TYPE(유형) 필드를 구비한다. 펌웨어 파일 헤더 내의 TYPE 필드의 목록 중에 포함된 것은 "SmmHandler"라고 하는 새로운 TYPE이다. 펌웨어 볼륨과 펌웨어 파일 시스템 ReadFile 서비스 및 이 새로운 TPYE의 식별(understanding)은 SMM_BASE 인터페이스를 구현하고 공표하는 모든 드라이버에 의해 알려질 것이다.
도 6을 참조하면, 메커니즘은 블록 130에서 시작하며, SMM_BASE 드라이버는 프리부트 동안에 시스템 내에서 구체화되는 모든 펌웨어 볼륨을 검색한다. 시작 루프 블록 132 및 종료 루프 블록 134에 의해 규정된 바와 같이, 다음 로직이 이들 펌웨어 볼륨 각각에 대해 적용된다. 판단 블록 136에서, 펌웨어 볼륨이 펌웨어 파일 시스템과 일치하는 임의의 펌웨어 파일들을 포함하고 있는지에 대한 판단이 이루어진다. 만약 응답이 포함하지 않는다(no)이면, 논리 루프는 다음 펌웨어 볼륨을 검사하기 위해 돌아간다. 만약 하나 이상의 일치하는 펌웨어 파일이 발견되면, 이들 각 팍일들은 시작 블록 138 및 종료 블록 140에 규정된 바와 같은 다음 프로세스를 사용하여 검사된다. 판단 블록 142에서, SMM_BASE 드라이버는 현재 파일이 "SMMHandler" 파일을 가지고 있는지를 판단하기 위하여 현재 파일의 파일 유형을 검사한다. 만약 현재 파일이 "SMMHandler" 파일이 아니면, 논리 루프는 다음 파일의 검사를 시작하기 위해 되돌아 간다. 만약 파일 유형이 "SMMHandler"이면, SMM_BASE 드라이버는 블록 144에서 펌웨어 파일의 Sections(섹션들)을 분해하며, 섹션은 펌웨어 파일 내의 내부 패킹 메커니즘(internal packing mechanism)이다. 블록 136에 의해 제공된 바와 같이, 만약 섹션이 PE32+ 실행 가능한 영상을 포함하면, 블록 146에서 SMM_BASE 드라이버는 섹션 내에 포함된 레거시 16비트 핸들러 또는 실행 가능한 영상을 설치할 것이다. 여기서 PE32+는 장치 유형(machine type)이 SMM_BASE가 구현된 것과 동일(예: 컴퓨터 시스템은 IA32 장치이고 핸들러는 IA32 PE32+ 영상임)하거나 만약 SMM_BASE가 로딩 레거시 16비트 핸들러들을 지원하는 IA32 시스템 상에서 구현되는 경우, 마이크로소프트사에 의해 인터넷 상의 "www.microsoft.com/hwdev/efi"에 공표된 휴대 가능한 영상 명세서(Portable Image spectification)에 기술된 휴대 가능하고 실행 가능한(Potable Executable) 영상 유형이다. 그런 다음 논리 흐름은 동일한 방식으로 다음 펌웨어 파일들 및 펌웨어 볼륨들에 대한 프로세스로 진행한다.
일반적으로, 펌웨어 파일로부터 핸들러를 자율적으로 로딩할 때, 앞서 나타낸 바와 같이 SMM_BASE::Register에 대한 인수(arguments)로 가정할 것인 SMM_BASE는 부동 소수점 저장(save) 및 MakeFirst == FALSE와 같은 디폴트 값을 가질 것이다.
보통, IA-32 프로세서로 SMI를 처리하는 것과 아이테니엄급(Itanium-class) 프로세서로 PMI를 처리하는 것은 유사한 프로세스들을 포함한다. 그러나, 거기에는 약간의 차이가 있는데, 주요 차이점은 ItaniumTM 프로세서들은 xMI 신호의 활성화에 따라 시작되는 특별한 CPU 모드를 갖지 않는다는 것이다. 오히려, ItaniumTM 프로세서들은 PMI 이벤트를 처리하기 위하여 핸들러를 프로세서에 연결(bind)하는 메커니즘만을 제공한다. 이 연결은 모든 Itanium 플랫폼 구축자(builder)를 위해 인텔사가 제공한 펌웨어이며, 프로세서 구현 지정 특성(processor implementation-specific features)을 추상하기 위한 일관된 펌웨어 인터페이스를 제공하는 데 사용되는 Itanium 아키텍처의 일부를 포함하는, 프로세서 추상화 층(Processor Abstraction Layer, PAL) 내로의 등록 호출을 통해 달성된다.
ItaniumTM 프로세서로 PMI 이벤트를 처리하고 핸들러를 등록하는 것에 대한 자세한 것은 도 7 및 8에 나타냈다. 등록 프로세스는 EFI2.0 SMM_BASE 드라이버가 64비트 버전의 SMM Nub를 로딩하는 블록 148에서 시작한다. SMM Nub를 로딩함에 따라, 블록 150에서 EFI는 메모리 내에 로딩된 Nub 영상으로 PAL_PMI_ENTRYPOINT 서비스를 호출하여, Nub 코드로 진입점(entry point)를 생성시킨다.
초기화 동안에, PAL은 호출된 PAL_PROCS 서비스들의 집합을 공표한다. 이들 PAL_PROCS 중 하나는 그 후 프로세서의 모델 지정 레지스터(model-specific register, MSR)과 같은 적합한 프로세서 지정 자원에 진입점를 등록하는 데 사용된다. 때문에 진입점의 등록은 프로세서와 SMM Nub를 통해 액세스되는 PIM 이벤트 핸들러들의 집합 사이의 바인딩(binding)을 생성한다.
도 8을 참조하면, 그 후 PMI 이벤트 처리는 다음과 같이 수행될 수 있다. 블록 154에서, PAL_PMI 이벤트 핸들러는 PIM 이벤트를 수신한다. PAL_PMI 이벤트 핸들러는 그런 다음 블록 155에서 SMM Nub(24)를 호출하는 데, 이것은 앞서 등록된 Nub 진입점으로 인도되도록(vectored) 확장 가능한 PMI 이벤트 처리를 수행하기 위해 선택된 프로세서의 처리를 유발시킨다. 판단 블록 156에서, 시스템이 다중 프로세서 시스템인지에 대한 판단이 이루어진다. 만약 응답이 예(yes)이면 모든 프로세서는 블록 157에 집결되고, 선택된 프로세서(예: 프리부트 프로세스 동안에 식별된 첫 번째 프로세서)를 제외한 모든 프로세서는 선택된 프로세서에서 SMM Nub가 실행되는 동안 정지된다. 그 후 각 CPU의 기계 상태는 CPU 하드웨어와 SMM Nub(24) 모두에 의해 블록 158에서 저장된다.
프로세서(들)의 기계 상태(들) 중 하나가 저장되면, 시작 루프 블록 162와 종료 루프 블록 163에 의해 제공된 바와 같이, 고유 64비트 핸들러는 PMI 이벤트를 서비스 종료를 위해 적합한 이벤트가 실행될 때까지 차례로 디스패칭된다. 앞에서 처럼, 하나의 실시예에서 이벤트 핸들러들은 상부에서 하부로 차례로 트래버스되는(traversed) 링크형 리스트로 저장되며, 첫 번째 이벤트 핸들러가 디스패칭되고 추가적인 이벤트 핸들러들이 필요에 따라 디스패칭된다. 판단 블록 164에 의해 제공된 바와 같이, 각 이벤트 핸들러는 그 핸들러가 xMI 이벤트를 서비스하기에 적합한 핸들러인지를 판단하기 위해 사용되는 코드의 제1 부분을 포함하며, 이것은 일반적으로 앞서 논의한 바와 같은 방식으로 대응하는 하드웨어 구성요소에 대한 문의(interrogation)를 포함한다. 만약 현재 실행되는 이벤트 핸들러가 적합한 핸들러로 판단되면, 그 핸들러 이벤트는 블록 165에서 완료를 위해 실행되고, 그 후에 복귀 블록 166에서 자신이 PMI 이벤트를 서비스하였음을 나타내는 코드를 SMM Nub에 반환한다. 만약 그 이벤트 핸들러가 PMI 이벤트에 대한 적합한 핸들러가 아니라고 판단되면, SMM Nub에 그러한 취지를 나타내는 코드를 반환하고, SMM Nub는 리스트에서 다음 이벤트 핸들러를 디스패칭한다. SMI 이벤트 처리에 대해 앞서 논의한 것과 유사한 방식으로, 이 프로세스는 적합한 이벤트 핸들러가 실행될 때까지 반복된다.
취급되고 있는 PMI 이벤트에 대한 승인에 따라, 블록 167에서 SMM Nub는 프로세서(들)을 이전의 처리 모드로 복귀시키기 위하여 기계 상태를 복원하고 해당 프로세서/모든 프로세서들에 대한 적절한 명령을 실행한다.
본 발명을 구현하기 위한 장치 예
도 9를 참조하면, 일반적으로 종래의 개인용 컴퓨터(200)가 예시되어 있으며, 이것은 본 발명의 실시와 관련하여 사용하기에 적합하다. 본 발명의 분산 플랫폼 펌웨어 아키텍처는 또한 워크스테이션, 랩톱 및 컴퓨터 서버 상에서 유사한 방식으로 구현될 수 있다. 개인용 컴퓨터(200)는 이 기술 분야의 당업자에게 일반적으로 공지된 바와 같이, 내부에 플로피 디스크 드라이브(204), 하드 드라이브(206), 하나 이상의 마이크로프로세서와 메모리 모듈(둘 다 도시되지 않음)을 포함하는 적절한 집적회로가 구비되는(populated) 마더보드(208), 그리고 전원(역시 도시되지 않음)이 장착되는 프로세서 섀시(202)를 포함한다. 마더보드(208)는 또한 BIOS 펌웨어의 기준 부분(base portion)이 저장되는 로컬 펌웨어 기억 장치(210)(예: 플래시 EEPROM)를 포함한다. 네트워크(214)를 통해 원격 펌웨어 기억 장치(212)로부터 검색되는 BIOS 펌웨어의 상기 부분에의 접근을 용이하게 하기 위해, 개인용 컴퓨터(200)는 마더보드(208)에 내장되는 네트워크 인터페이스 카드(216) 또는 등가 회로를 포함한다. 네트워크(214)는 LAN, WAN, 및/또는 인터넷을 포함하며, 개인용 컴퓨터(200)와 원격 펌웨어 기억 장치(212) 사이에 유선 또는 무선 접속을 제공할 수 있다.
모니터(218)는 개인용 컴퓨터에 의해 실행되는 소프트웨어 프로그램들에 의해 생성되며, POST 시험과 펌웨어 로딩/실행의 다른 상황(aspect) 중에 일반적으로 표시될 수 있는 그래픽스와 텍스트를 표시하기 위해 포함된다. 마우스(220)(또는 다른 포인팅 장치는) 프로세서 섀시(202)의 후면의 직렬 포트(또는 버스 포트)에 접속되며, 마우스(220)로부터의 신호는 디스플레이 상의 커서를 제어하기 위해, 그 리고 개인용 컴퓨터 상에서 실행하는 소프트웨어 프로그램에 의해 모니터(218) 상에 표시되는 텍스트, 메뉴 옵션들 및 그래픽 요소를 선택하기 위하여 마더보드(108)로 전달된다. 또한, 키보드(222)는 개인용 컴퓨터 상에서 실행되는 소프트웨어 프로그램들의 실행에 영향을 미치는 텍스트 및 명령들의 사용자 입력을 위해 마더보드에 연결된다.
개인용 컴퓨터(200)는 또한 선택적으로 CD-ROM 디스크가 그 속에 삽입될 수 있어 디스크 상의 실행 가능한 파일들과 데이터가 개인용 컴퓨터(200)의 하드 드라이브(206) 상의 메모리 및/또는 기억 장치(storage)로 전송하기 위해 판독될 수 있는 컴팩트 디스크 판독전용 메모리(CD-ROM) 드라이브(224)를 포함한다. 만약 기준 BIOS 펌웨어가 플래시 EEPROM과 같은 재기록 가능한 장치 상에 기억되어 있다면, BIOS 펌웨어의 기준 부분(base protion)을 갱신하기 위한 기계 명령어는 CD-ROM 디스크 또는 플로피 디스크 상에 저장될 수 있으며, 플래시 EEPROM 상에 기억된 BIOS 펌웨어를 재기록(rewrite)하기 위해 컴퓨터의 프로세서에 의해 판독되고 처리될 수있다. 갱신 가능한 BIOS 펌웨어는 또한 네트워크(214)를 통해 로딩될 수 있다.
비록 본 발명은 바람직한 실시 형태와 그 변형에 관하여 설명하였지만, 이 기술 분야의 당업자는 다음의 청구범위를 벗어나지 않는 범위 내에서 본 발명에 대해 다른 많은 변형이 이루어질 수 있음을 이해할 것이다. 따라서, 본 발명의 범위는 전술한 설명에 의해 어떻게든 제한되는 식으로 의도되어서는 안되며, 그보다 다음의 청구범위를 참조함으로써 오로지 결정되어야 한다.
부록(APPENDIX)
IA32용 SMM_ACCESS 프로토콜
SMM_ACCESS 프로토콜은 칩세트 드라이버, 즉 82815 칩세트용 MCH 드라이버 에 의해 공표된다. 이 드라이버는 SMRAM을 개방(opening), 폐쇄(closing) 및 잠금(locking) 상태로 하는 메모리 제어기의 기능(capabilities)을 추상화한다. 드라이버는 또는 0xA0000에서의 레거시 프레임 버퍼의 위치, 및 물리적인 DRAM(T-SEG)의 상부 근처 메모리를 포함하는 SMRAM에 대한 가능한 영역을 기술한다.
SMM_ACCESS 프로토콜 구축자(constructor)는 ExitBootServices에 대한 콜백(call-back)을 등록하여야 한다. SMM_ACCESS 프로토콜는 다음의 기능(functions)을 제공한다:
SMM_ACCESS::Open
이 서비스는 비SMRAM 기반 코드로부터 SMRAM의 가시성(visibility)을 허용하기 위하여 메모리 제어기의 프로그래밍을 추상한다. 이것은 SMM_BASE 프로토콜이 SMM Nub와 같은 코드를 SMRAM에 복사하고 설치할 수 있도록 한다.
SMM_ACCESS::Close
이 서비스는 비SMRAM 기반 코드로부터 SMRAM의 가시성(visibility)을 억제하기(disable) 위하여 메모리 제어기의 프로그래밍을 추상한다. 이것은 다른 프리부트 에이전트들이 SMRAM 기반 콘텐츠를 보는 것을 SMM_BASE 프로토콜이 억제할 수 있도록 한다.
SMM_ACCESS::Lock
이 서비스는 SMRAM을 보호하는 하드웨어 기능(capability)을 추상하여, 이 영역의 가시성 개방에 있어 장래 시도가 성공할 수 없도록 한다.
SMM_ACCESS::GetCapabilities
이 호출은 SMM_BASE 드라이버로 가장 알맞고, SMRAM으로 사용 하기에 가능한 메모리 영역인 호출자를 제공한다. 이것은 정보를 공표하는 판독전용 보고 서비스이다. 그 영역의 요구(claiming)와 SMRAM에 기억된 것의 해독을 달성하기 위한 칩세트의 프로그래밍은 질의에서 그 영역을 획득함으로써 달성된다(다음 서비스 참조).
SMM_ACCESS::AcquiteSmramRange
이 서비스는 두 유형의 기능성(functionality)을 제공한다. 첫 번째는 EFI2.0 부트 서비스 호출자가 볼 수 있는(visible) 자원 관리 데이터베이스이다. 플랫폼에서 이용 가능한 SMRAM의 가능한 범위는 GetCapability들의 서비스 SMRAM 맵에 의해 공표되며, 영역(region)은 이 서비스에 의해 부여하도록 요구될 수 있는 맵(map)이다. 이 요구는 드라이버의 소유권에 대한 갱신을 최소한으로 포함하지만, 호출은 또한 실제로 요구 체제(request regime)를 가능하게 하는(enable) 칩세트 프로그래밍을 수반할 것이다.
SMM_ACCESS::ReleaseSmramRange
이 서비스는 두 유형의 기능성을 제공한다. 이 요구는 드라이버의 양도 소유권의 범위에 대한 갱신을 최소한으로 포함하지만, 호출은 또한 실제로 요구 체제(request regime)를 불가능하게 하는(disable) 칩세트 프로그래밍을 수반할 것 이다.

Claims (30)

  1. 컴퓨터 시스템에서 프로세서의 숨은 실행 및 기억 모드(hidden execution and storage mode)를 확장하기 위한 방법으로서,
    컴퓨터 시스템의 주문자 상표에 의한 제품 생산자(original equipment manufacturer, OEM)에 의해 제공되는 원래의 펌웨어 세트(orignal set of firmware)에 기억되어 있는 제1 이벤트 핸들러(first evnet handler)를, 상기 프로세서의 상기 숨은 실행 및 기억 모드로는 액세스할 수 있지만 다른 동작 모드로는 액세스할 수 없는 숨은 메모리 공간(hidden memory space)에 로딩할 수 있도록 하는 메커니즘을 제공하는 단계,
    상기 컴퓨터 시스템의 주문자 상표에 의한 제품 생산자에 의해 제공되는 상기 원래의 펌웨어 세트에는 기억되어 있지 않은 제2 이벤트 핸들러(second evnet handler)를, 상기 숨은 메모리 공간에 로딩할 수 있도록 하는 메커니즘을 제공하는 단계, 및
    상기 숨은 실행 및 기억 모드로 전환되도록 하는 이벤트에 응답하여, 상기 프로세서가 이벤트를 서비스하기 위해, 상기 제1 이벤트 핸들러와 상기 제2 핸들러의 선택적인 실행을 가능하게 하는 단계
    를 포함하는, 프로세서의 숨은 실행 및 기억 모드를 확장하기 위한 방법.
  2. 제1항에서,
    상기 숨은 실행 및 기억 모드는 마이크로프로세서의 시스템 관리 모드(system management mode, SMM)를 포함하는, 프로세서의 숨은 실행 및 기억 모드를 확장하기 위한 방법.
  3. 제1항에서,
    상기 제2 이벤트 핸들러의 로딩 및 실행을 가능하게 하는 상기 메커니즘은,
    원래의 펌웨어 세트가 기억되어 있는 구성 요소(component) 이 외의 다른 구성 요소에 기억된 이벤트 핸들러에 대응하는 기계 코드(machine code)의 집합을 상기 숨은 메모리 공간에 로딩될 수 있도록 하는 추상화된 인터페이스(abstracted interface)를 제공하는 단계, 및
    상기 프로세서가 상기 숨은 실행 및 기억 모드로 동작하는 동안에 상기 이벤트를 서비스하기 위해 상기 기계 코드의 집합을 실행하도록 상기 프로세서의 명령어 포인터(instruction pointer)를 수정하는(redirect) 단계
    를 포함하여 이루어지는, 프로세서의 숨은 실행 및 기억 모드를 확장하기 위한 방법.
  4. 제3항에서,
    상기 추상화된 인터페이스는 상기 컴퓨터 시스템의 운영 체제를 로딩하기 이전에 상기 제2 이벤트 핸들러에 대응하는 상기 기계 코드의 집합을 드라이버가 로딩할 수 있도록 상기 컴퓨터 시스템의 프리부트 프로세스(pre-boot process) 동안에 공표되는(published), 프로세서의 숨은 실행 및 기억 모드를 확장하기 위한 방법.
  5. 제1항에서,
    상기 제2 이벤트 핸들러를 로딩 및 실행 가능하게 하는 상기 메커니즘은,
    상기 프로세서의 상기 숨은 실행 및 기억 모드와 호환 가능한 이벤트 핸들러를 포함하는 모든 펌웨어 파일의 존재를 식별하기 위해 상기 컴퓨터 시스템의 프리부트 프로세스 동안에 구체화되는 모든 펌웨어 볼륨들을 주사하는(scanning) 단계,
    상기 이벤트 핸들러를 상기 숨은 메모리 공간에 로딩하는 단계, 및
    상기 프로세서가 상기 숨은 실행 및 기억 모드로 동작하는 동안에 상기 이벤트를 서비스하기 위해 상기 이벤트 핸들러를 실행하도록 상기 프로세서의 명령어 포인터를 수정하는 단계
    를 포함하여 이루어지는, 프로세서의 숨은 실행 및 기억 모드를 확장하기 위한 방법.
  6. 제1항에서,
    상기 선택적인 실행을 가능하게 하는 단계 후에, 상기 이벤트 핸들러 관리 서비스를 상기 숨은 메모리 기억 공간에 로딩하는 단계,
    상기 이벤트 핸들러 관리 서비스에 하나 이상의 이벤트 핸들러를 등록하는 단계,
    상기 하나 이상의 이벤트 핸들러를 상기 숨은 메모리 공간에 로딩하는 단계,
    상기 프로세서가 상기 숨은 실행 및 기억 모드로 전환되도록 하는 상기 이벤트에 응답하여 상기 이벤트 핸들러 관리 서비스의 실행을 시작하도록 상기 프로세서의 명령어 포인터를 수정하는 단계, 및
    상기 이벤트를 서비스하기 위해 상기 이벤트 핸들러 관리 서비스를 통해 이벤트 핸들러를 디스패칭(dispatching)하는 단계
    를 더 포함하는, 프로세서의 숨은 실행 및 기억 모드를 확장하기 위한 방법.
  7. 제6항에서,
    복수의 이벤트 핸들러는 상기 이벤트 핸들러 관리 서비스에 등록되고 상기 숨은 메모리 공간에 로딩되며,
    상기 프로세서의 숨은 실행 및 기억 모드를 확장하기 위한 방법은,
    상기 하나 이상의 이벤트 핸들러를 상기 숨은 메모리 공간에 로딩하는 단계 후에, 상기 복수의 이벤트 핸들러에 대한 순서화된 목록을 생성하는 단계,
    상기 이벤트 핸들러를 디스패칭하는 단계 후에, 첫 번째 이벤트 핸들러를 디스패칭하는 단계,
    상기 첫 번째 이벤트 핸들러가 상기 이벤트의 서비스에 적합한 이벤트 핸들러인지를 판단하고, 상기 판단 결과 적합한 이벤트 핸들러이면 상기 이벤트에 대한 서비스를 완료하기 위해 상기 첫 번째 이벤트 핸들러를 실행하는 단계, 및
    상기 판단 결과 적합한 이벤트 핸들러가 아니면 상기 리스트에서 다음 이벤트 핸들러를 디스패칭하여, 상기 다음 이벤트 핸들러가 적합한 이벤트 핸들러인지를 판단하며, 적합한 이벤트 핸들러가 디스패칭되고 실행되어 상기 이벤트에 대한 서비스가 완료될 때까지 이 동작을 반복하는 단계
    를 더 포함하는, 프로세서의 숨은 실행 및 기억 모드를 확장하기 위한 방법.
  8. 제7항에서,
    상기 복수의 이벤트 핸들러 각각은 상기 이벤트를 발생시키는 상기 컴퓨터 시스템 내의 하드웨어 구성요소에 의해 생성된 오류 상태(error condition)를 서비스하기 위하여 상기 프로세서에 의해 실행되는 기계 코드(machine code)의 집합을 포함하며,
    이벤트 핸들러가 상기 이벤트의 서비스에 적합한 이벤트 핸들러인지에 대한 판단은,
    가장 최근에 디스패칭된 이벤트 핸들러에 대응하는 하드웨어 구성요소에 의해 상기 오류 상태가 발생되었는지를 판단하기 위해 질의하는, 상기 가장 최근에 디스패칭된 상기 이벤트 핸들러에 대응하는 상기 기계 코드의 집합의 제1 부분을 실행하는 단계, 및
    상기 오류 상태가 상기 대응하는 하드웨어 구성 요소에 의해 발생된 것으로 판단되면 상기 이벤트 핸들러에 대한 상기 기계 코드 집합의 실행을 완료하고, 그렇지 않으면 상기 이벤트 핸들러가 상기 오류 조건을 서비스하기에 적합한 이벤트 핸들러가 아님을 나타내는 값을 상기 이벤트 핸들러 관리 서비스에 반환하는 단계
    를 포함하여 이루어지는, 프로세서의 숨은 실행 및 기억 모드를 확장하기 위한 방법.
  9. 제6항에서,
    상기 이벤트 핸들러가 상기 숨은 메모리 공간에 로딩되기 전에 상기 이벤트 핸들러를 인증하는 단계를 더 포함하는, 프로세서의 숨은 실행 및 기억 모드를 확장하기 위한 방법.
  10. 제6항에서,
    상기 원래의 펌웨어 세트는 제1 이벤트 핸들러를 포함하는 하나 이상의 레거시 이벤트 핸들러(legacy event handler)를 포함하며,
    상기 프로세서의 숨은 실행 및 기억 모드를 확장하기 위한 방법은,
    상기 이벤트 핸들러 관리 서비스에 상기 하나 이상의 레거시 이벤트 핸들러를 등록하는 단계,
    상기 숨은 실행 및 기억 모드에 액세스 가능한 상기 숨은 메모리 공간에 상기 하나 이상의 레거시 이벤트 핸들러를 로딩하는 단계, 및
    상기 이벤트를 서비스하기 위해 상기 이벤트 핸들러 관리 서비스를 통해 상기 하나 이상의 레거시 이벤트 핸들러 중 적어도 하나를 디스패칭하는 단계
    를 더 포함하는, 프로세서의 숨은 실행 및 기억 모드를 확장하기 위한 방법.
  11. 제6항에서,
    상기 컴퓨터 시스템은 복수의 프로세서를 포함하며,
    상기 프로세서의 숨은 실행 및 기억 모드를 확장하기 위한 방법은,
    상기 이벤트 핸들러 관리 서비스를 상기 복수의 프로세서 중에서 선택된 프로세서에 로딩하는 단계,
    상기 선택된 프로세서가 상기 이벤트에 응답하여 상기 이벤트 핸들러 관리 서비스의 실행을 시작하도록 하는 단계,
    상기 선택된 프로세서 이외의 상기 복수의 프로세서 모두를 동기화하고, 상기 이벤트 핸들러 관리 서비스를 실행하는 동안에 다른 프로세서 각각에 대한 현재 동작의 실행을 정지하는 단계, 및
    적합한 이벤트 핸들러에 의해 상기 이벤트가 서비스된 후, 상기 복수의 프로세서 모두를 각각의 동작의 실행을 재개하도록 이전의 처리 모드로 복귀시티는 단계,
    를 더 포함하는, 프로세서의 숨은 실행 및 기억 모드를 확장하기 위한 방법.
  12. 제1항에서,
    상기 원래의 펌웨어 세트 내의 기계 코드로서 기억된 소정의 레거시 이벤트 핸들러가 상기 이벤트에 응답하여 적절한 때에 상기 이벤트를 서비스하기 위해 실행되도록 허용하는 단계를 더 포함하는, 프로세서의 숨은 실행 및 기억 모드를 확장하기 위한 방법.
  13. 컴퓨터 시스템에서 마이크로프로세서의 시스템 관리 모드(sytem management mode, SMM)를 확장하기 위한 방법으로서,
    원래의 펌웨어의 집합이 기억되어 있는 구성 요소 이 외의 구성 요소에 기억된 드라이버가 SMM 상태에서 상기 마이크로프로세서에 액세스할 수 있는 SMM 메모리(SMRAM)에 로딩되는 이벤트 핸들러를 포함하는 기계 코드의 집합을 제공하도록 허용하기 위하여 상기 컴퓨터 시스템의 프리부트 프로세스 동안에 인터페이스를 공표하는(publishing) 단계,
    SMM 트리거링 이벤트에 응답하여 상기 마이크로프로세서를 SMM으로 전환하는 단계, 및
    상기 SMM 트리거링 이벤트를 서비스하기 위해 상기 이벤트 핸들러를 실행하는 단계
    를 포함하는, 마이크로프로세서의 시스템 관리 모드를 확장하기 위한 방법.
  14. 제13항에서,
    상기 인터페이스를 공표하는 단계 후에, SMRAM에 이벤트 핸들러 관리 서비스를 로딩하는 단계,
    상기 이벤트 핸들러 관리 서비스에 하나 이상의 이벤트 핸들러를 등록하는 단계,
    상기 하나 이상의 이벤트 핸들러를 SMRAM에 로딩하는 단계,
    상기 이벤트 핸들러를 실행하는 단계 후에, 상기 SMM 트리거링 이벤트에 응답하여 상기 이벤트 핸들러 관리 서비스의 실행을 시작하도록 상기 마이크로프로세서의 명령어 포인터를 수정하는 단계, 및
    상기 이벤트를 서비스하기 위해 상기 이벤트 핸들러 관리 서비스를 통해 이벤트 핸들러를 디스패칭하는 단계
    를 더 포함하는, 마이크로프로세서의 시스템 관리 모드를 확장하기 위한 방법.
  15. 제14항에서,
    복수의 이벤트 핸들러는 상기 이벤트 핸들러 관리 서비스에 등록되어 SMRAM에 로딩되며,
    상기 마이크로프로세서의 시스템 관리 모드를 확장하기 위한 방법은,
    상기 하나 이상의 이벤트 핸들러를 SMRAM에 로딩하는 단계 후에,상기 복수의 이벤트 핸들러에 대한 순서화된 리스트를 생성하는 단계,
    상기 이벤트 핸들러를 디스패칭하는 단계 후에, 첫 번째 이벤트 핸들러를 디스패칭하는 단계,
    상기 첫 번째 이벤트 핸들러가 상기 SMM 트리거링 서비스를 서비스 하기에 적합한 이벤트 핸들러인지를 판단하고, 상기 판단 결과 적합한 이벤트 핸들러이면 상기 이벤트에 대한 서비스를 완료하기 위해 상기 첫 번째 이벤트 핸들러를 실행하는 단계, 및
    상기 판단 결과 적합하지 않은 이벤트 핸들러이면, 상기 리스트에서 다음 이벤트 핸들러를 디스패칭하여, 상기 다음 이벤트 핸들러가 상기 SMM 트리거링 이벤트를 서비스하기에 적합한 이벤트 핸들러인지를 판단하며, 적합한 이벤트 핸들러가 디스패칭되고 실행되어 상기 SMM 트리거링 이벤트에 대한 서비스가 완료될 때까지 상기 동작을 반복하는 단계
    를 더 포함하는, 마이크로프로세서의 시스템 관리 모드를 확장하기 위한 방법.
  16. 제14항에서,
    상기 이벤트 핸들러가 상기 SMRAM에 로딩되기 전에 상기 이벤트 핸들러를 인증하는 단계를 더 포함하는, 마이크로프로세서의 시스템 관리 모드를 확장하기 위한 방법.
  17. 제14항에서,
    상기 원래의 펌웨어 세트는 하나 이상의 레거시 이벤트 핸들러를 포함하며,
    상기 마이크로프로세서의 시스템 관리 모드를 확장하기 위한 방법은,
    상기 이벤트 핸들러 관리 서비스에 상기 하나 이상의 레거시 이벤트 핸들러를 등록하는 단계,
    상기 SMRAM에 상기 하나 이상의 레거시 이벤트 핸들러를 로딩하는 단계, 및
    상기 SMM 트리거링 이벤트에 대응하는 레거시 이벤트를 서비스하기 위해 상기 이벤트 핸들러 관리 서비스를 통해 상기 하나 이상의 레거시 이벤트 핸들러 중 적어도 하나를 디스패칭하는 단계
    를 더 포함하는, 마이크로프로세서의 시스템 관리 모드를 확장하기 위한 방법.
  18. 제13항에서,
    상기 인터페이스를 공표하는 단계 후에,상기 마이크로프로세서의 상기 SMM 모드와 호환 가능한 이벤트 핸들러를 포함하는 모든 펌웨어 파일의 존재를 식별하기 위해 상기 컴퓨터 시스템의 프리부트 프로세스 동안에 구체화되는 모든 펌웨어 볼륨들을 주사하는 단계, 및
    상기 이벤트 핸들러를 상기 SMRAM에 로딩하는 단계
    를 더 포함하는 , 마이크로프로세서의 시스템 관리 모드를 확장하기 위한 방법.
  19. 프로세서에서 플랫폼 관리 인트럽트(platform management interrupt, PMI) 이벤트를 처리하는 방법으로서,
    상기 프로세서에 액세스할 수 있는 메모리에 PMI 이벤트 처리 관리 서비스(event-handling management service)를 로딩하는 단계,
    상기 PIM 이벤트 처리 관리 서비스에 대한 진입점(entry point)을 등록하는 단계,
    상기 PMI 이벤트 처리 관리 서비스를 통해 하나 이상의 PMI 이벤트 핸들러가 상기 프로세서에 액세스할 수 있도록 허용하는 단계, 및
    상기 PMI 이벤트에 응답하여, 상기 프로세서가 자신의 진입점(entry point)에서 PMI 이벤트 처리 관리 서비스의 실행을 시작하도록 상기 프로세서를 인도하는(vectoring) 단계
    를 포함하며,
    상기 PMI 이벤트 처리 관리 서비스의 실행은, 상기 PMI 이벤트를 서비스하기 위해 상기 하나 이상의 PMI 이벤트 핸들러 중 적어도 하나를 디스패칭하는 기능을 수행하는, 플랫폼 관리 인트럽트 이벤트를 처리하는 방법.
  20. 제19항에서,
    상기 하나 이상의 PMI 이벤트 핸들러는 상기 PMI 이벤트 처리 관리 서비스에 PMI 이벤트 핸들러의 등록을 허용하는 등록 인터페이스를 공표함으로써 상기 PMI 이벤트 처리 관리 서비스에 액세스할 수 있게 되는, 플랫폼 관리 인트럽트 이벤트를 처리하는 방법.
  21. 제20항에서,
    상기 PMI 이벤트 처리 관리 서비스에 복수의 이벤트 핸들러가 등록되며,
    상기 플랫폼 관리 인트럽트 이벤트를 처리하는 방법은,
    상기 복수의 이벤트 핸들러에 대한 순서화된 리스트를 생성하는 단계,
    첫 번째 이벤트 핸들러를 디스패칭하는 단계,
    상기 첫 번째 이벤트 핸들러가 상기 PMI 이벤트를 서비스하기에 적합한 이벤트 핸들러인지를 판단하고, 상기 판단 결과 적합한 이벤트 핸들러이면 상기 이벤트에 대한 서비스를 완료하기 위해 상기 첫 번째 이벤트 핸들러를 실행하는 단계, 및
    상기 판단 결과 적합한 이벤트 핸들러가 아니면, 상기 리스트에서 다음 이벤트 핸들러를 디스패칭하여, 상기 다음 이벤트 핸들러가 상기 PMI 이벤트를 서비스하기에 적합한 이벤트 핸들러인지를 판단하며, 적합한 이벤트 핸들러가 디스패칭되고 실행되어 상기 PMI 이벤트에 대한 서비스가 완료될 때까지 이 동작을 반복하는 단계
    를 더 포함하는, 플랫폼 관리 인트럽트 이벤트를 처리하는 방법.
  22. 제19항에서,
    상기 컴퓨터 시스템은 복수의 프로세서를 포함하며,
    상기 플랫폼 관리 인트럽트 이벤트를 처리하는 방법은,
    상기 PMI 이벤트 처리 관리 서비스의 실행에 의해, 상기 하나 이상의 PMI 이벤트 핸들러 중 적어도 하나를 디스패칭한 후에, 상기 PMI 이벤트 처리 관리 서비스를 상기 복수의 프로세서 중에서 선택된 프로세서에 로딩하는 단계,
    상기 선택된 프로세서가 상기 이벤트에 응답하여 상기 PMI 이벤트 처리 관리 서비스의 실행을 시작하도록 하는 단계,
    상기 선택된 프로세서 이외의 상기 복수의 프로세서 모두를 동기화하고, 상기 이벤트 처리 관리 서비스를 실행하는 동안에 다른 프로세서 각각에 대해 현재 동작의 실행을 정지하는 단계, 및
    적합한 이벤트 핸들러에 의해 상기 PMI 이벤트가 서비스된 후, 상기 복수의 프로세서 모두를 각각의 동작의 실행을 재개하도록 이전의 처리 모드로 복귀시키는 단계,
    를 더 포함하는, 플랫폼 관리 인트럽트 이벤트를 처리하는 방법.
  23. 기억된 복수의 기계 명령어를 갖는 기계로 판독 가능한 매체로서,
    상기 복수의 기계 명령어는 컴퓨터 시스템에서 프로세서에 의해 실행될 때,
    상기 컴퓨터 시스템의 주문자 상표에 의한 제품 생산자에 의해 제공되는 원래의 펌웨어 세트에는 기억되어 있지 않은 복수의 이벤트 핸들러를, 상기 프로세서의 숨은 실행 및 기억 모드로는 액세스할 수 있지만 다른 동작 모드로는 액세스할 수 없는 숨은 메모리 공간에 로딩할 수 있도록 하는 메커니즘을 제공하는 동작, 및
    상기 프로세서가 이벤트를 서비스하기 위해 상기 숨은 실행 및 기억 모드로 전환되도록 하는 상기 이벤트에 응답하여 상기 복수의 이벤트 핸들러 중 적절한 이벤트 핸들러를 선택적으로 실행하는 동작
    을 수행하며,
    상기 메커니즘은 적어도 2개의 상이한 제3의 소스로부터 이벤트 핸들러들을 상기 숨은 메모리 공간에 로딩할 수 있도록 하는, 기계로 판독 가능한 매체.
  24. 제23항에서,
    상기 복수의 이벤트 핸들러의 로딩 및 실행을 가능하게 하는 상기 메커니즘은,
    상기 원래의 펌웨어 세트가 기억되어 있는 구성 요소 이 외의 구성 요소에 기억된 이벤트 핸들러에 대응하는 기계 코드의 집합을 상기 숨은 메모리 공간에 로딩될 수 있도록 하는 추상화된 인터페이스를 제공하는 단계, 및
    상기 프로세서가 상기 숨은 실행 및 기억 모드로 동작하는 동안에 상기 이벤트를 서비스하기 위해 상기 기계 코드의 집합을 실행하도록 상기 프로세서의 명령어 포인터를 수정하는 단계
    를 포함하여 이루어지는, 기계로 판독 가능한 매체.
  25. 제23항에서,
    상기 복수의 이벤트 핸들러를 로딩 및 실행을 가능하게 하는 상기 메커니즘은,
    상기 프로세서의 상기 숨은 실행 및 기억 모드와 호환 가능한 이벤트 핸들러를 포함하는 모든 펌웨어 파일의 존재를 식별하기 위해 상기 컴퓨터 시스템의 프리부트 프로세스 동안에 구체화되는 모든 펌웨어 볼륨들을 주사하는 단계,
    상기 이벤트 핸들러를 상기 숨은 메모리 공간에 로딩하는 단계, 및
    상기 프로세서가 상기 숨은 실행 및 기억 모드로 동작하는 동안에 상기 이벤트를 서비스하기 위해 상기 이벤트 핸들러를 실행하도록 상기 프로세서의 명령어 포인터를 수정하는 단계
    를 포함하여 이루어지는, 기계로 판독 가능한 매체.
  26. 제23항에서,
    상기 복수의 기계 명령어의 실행은,
    상기 메카니즘을 제공하는 동작 후에, 상기 이벤트 핸들러 관리 서비스를 상기 숨은 메모리 기억 공간에 로딩하는 동작,
    상기 이벤트 핸들러 관리 서비스에 하나 이상의 이벤트 핸들러를 등록하는 동작,
    상기 하나 이상의 이벤트 핸들러를 상기 숨은 메모리 공간에 로딩하는 동작,
    적절한 이벤트 핸들러를 선택적으로 실행하는 동작 후에, 상기 프로세서가 상기 숨은 실행 및 기억 모드로 전환되도록 하는 상기 이벤트에 응답하여 상기 이벤트 핸들러 관리 서비스의 실행을 시작하도록 상기 프로세서의 명령어 포인터를 수정하는 동작, 및
    상기 이벤트를 서비스하기 위해 상기 이벤트 핸들러 관리 서비스를 통해 이벤트 핸들러를 디스패칭하는 동작
    을 더 수행하는, 기계로 판독 가능한 매체.
  27. 제26항에서,
    복수의 이벤트 핸들러는 상기 이벤트 핸들러 관리 서비스에 등록되고 상기 숨은 메모리 공간에 로딩되며,
    상기 복수의 기계 명령어의 실행은,
    상기 하나 이상의 이벤트 핸들러를 상기 숨은 메모리 공간에 로딩하는 동작 후에, 상기 복수의 이벤트 핸들러에 대한 순서화된 목록을 생성하는 동작,
    이벤트 핸들러를 디스패칭하는 동작 후에, 첫 번째 이벤트 핸들러를 디스패칭하는 동작,
    상기 첫 번째 이벤트 핸들러가 상기 이벤트를 서비스하기에 적합한 이벤트 핸들러인지를 판단하고, 상기 판단 결과 적합한 이벤트 핸들러이면 상기 이벤트에 대한 서비스를 완료하기 위해 상기 첫 번째 이벤트 핸들러를 실행하는 동작,
    상기 판단 결과 적합한 이벤트 핸들러가 아니면 상기 리스트에서 다음 이벤트 핸들러를 디스패칭하여, 상기 다음 이벤트 핸들러가 적합한 이벤트 핸들러인지를 판단하며, 적합한 이벤트 핸들러가 디스패칭되고 실행되어 상기 이벤트에 대한 서비스가 완료될 때까지 이 동작을 반복하는 동작
    을 더 수행하는, 기계로 판독 가능한 매체.
  28. 컴퓨터 시스템으로서,
    원래의 펌웨어 세트가 기억되는 마더보드,
    복수의 기계 명령어가 기억되며 상기 마더보드에 동작 가능하게 연결되는 메모리, 및
    상기 메모리와 통신 가능하게 연결되어 있는 프로세서
    를 포함하고,
    상기 프로세서는 상기 기계 명령어를 실행하여,
    상기 컴퓨터 시스템의 주문자 상표에 의한 제품 생산자에 의해 제공되는 원래의 펌웨어 세트에 기억되어 있는 제1 이벤트 핸들러를, 상기 프로세서의 상기 숨은 실행 및 기억 모드로는 액세스할 수 있지만 다른 동작 모드로는 액세스할 수 없는 숨은 메모리 공간에 로딩하고,
    상기 컴퓨터 시스템의 주문자 상표에 의한 제품 생산자에 의해 제공되는 상기 원래의 펌웨어 세트에는 기억되어 있지 않은 제2 이벤트 핸들러를, 상기 숨은 메모리 공간에 로딩하며,
    상기 프로세서가 이벤트를 서비스하기 위해 상기 숨은 실행 및 기억 모드로 전환되도록 하는 상기 이벤트에 응답하여 상기 제1 및 제2 이벤트 핸들러를 선택적인 실행을 가능하게 하는, 동작들을 수행하는 것을 특징으로 하는 컴퓨터 시스템.
  29. 제28항에서,
    상기 제2 이벤트 핸들러의 로딩 및 실행은
    상기 원래 펌웨어 세트가 기억되어 있는 구성 요소 이 외의 구성 요소에 기억된 이벤트 핸들러에 대응하는 기계 코드의 집합을 상기 숨은 메모리 공간에 로딩될 수 있도록 하는 추상화된 인터페이스를 제공하고,
    상기 프로세서가 상기 숨은 실행 및 기억 모드로 동작하는 동안에 상기 이벤트를 서비스하기 위해 상기 기계 코드의 집합을 실행하도록 상기 프로세서의 명령어 포인터를 수정하는 것을 포함하는 컴퓨터 시스템.
  30. 제28항에서,
    상기 제2 이벤트 핸들러의 로딩 및 실행은
    상기 프로세서의 상기 숨은 실행 및 기억 모드와 호환 가능한 이벤트 핸들러를 포함하는 모든 펌웨어 파일의 존재를 식별하기 위해 상기 컴퓨터 시스템의 프리부트 프로세스 동안에 구체화되는 모든 펌웨어 볼륨들을 주사하고,
    상기 제2 이벤트 핸들러를 상기 숨은 메모리 공간에 로딩하며,
    상기 프로세서가 상기 숨은 실행 및 기억 모드로 동작하는 동안에 상기 이벤트를 서비스하기 위해 상기 이벤트 핸들러를 실행하도록 상기 프로세서의 명령어 포인터를 수정하는 것을 포함하는 컴퓨터 시스템.
KR1020037014674A 2001-05-11 2002-05-09 다중 아키텍처를 위한 구성 요소 소프트웨어용 smm로더 및 실행 매커니즘 KR100729793B1 (ko)

Applications Claiming Priority (3)

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

Publications (2)

Publication Number Publication Date
KR20040007551A KR20040007551A (ko) 2004-01-24
KR100729793B1 true KR100729793B1 (ko) 2007-06-20

Family

ID=25317936

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037014674A KR100729793B1 (ko) 2001-05-11 2002-05-09 다중 아키텍처를 위한 구성 요소 소프트웨어용 smm로더 및 실행 매커니즘

Country Status (7)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101114644B1 (ko) 2008-09-29 2012-03-05 인텔 코포레이션 방법, 물품 및 시스템

Families Citing this family (96)

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

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0924610A2 (en) * 1997-12-15 1999-06-23 Compaq Computer Corporation Implementing universal serial bus support with a minimum of system RAM

Family Cites Families (16)

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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0924610A2 (en) * 1997-12-15 1999-06-23 Compaq Computer Corporation Implementing universal serial bus support with a minimum of system RAM

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101114644B1 (ko) 2008-09-29 2012-03-05 인텔 코포레이션 방법, 물품 및 시스템

Also Published As

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

Similar Documents

Publication Publication Date Title
KR100729793B1 (ko) 다중 아키텍처를 위한 구성 요소 소프트웨어용 smm로더 및 실행 매커니즘
US6775728B2 (en) Method and system for concurrent handler execution in an SMI and PMI-based dispatch-execution framework
US7134007B2 (en) Method for sharing firmware across heterogeneous processor architectures
KR101232558B1 (ko) 컴퓨터 구현 방법 및 시스템
US7237102B2 (en) Methods and apparatus for configuring hardware resources in a pre-boot environment without requiring a system reset
US20050114639A1 (en) Hardened extensible firmware framework to support system management mode operations using 64-bit extended memory mode processors
US8826269B2 (en) Annotating virtual application processes
US7434224B2 (en) Plural operating systems having interrupts for all operating systems processed by the highest priority operating system
CA2178581C (en) Automatic booting framework
US7146512B2 (en) Method of activating management mode through a network for monitoring a hardware entity and transmitting the monitored information through the network
US7448030B2 (en) Optimized ordering of firmware modules in pre-boot environment
US7162626B2 (en) Use of common language infrastructure for sharing drivers and executable content across execution environments
US20080040524A1 (en) System management mode using transactional memory
US7421431B2 (en) Providing access to system management information
US20040267708A1 (en) Device information collection and error detection in a pre-boot environment of a computer system
US6963970B2 (en) System and method for executing a fast reset of a computer system
US7484083B1 (en) Method, apparatus, and computer-readable medium for utilizing BIOS boot specification compliant devices within an extensible firmware interface environment
US11907071B2 (en) Storage failover protocol for secure and seamless extended firmware load
US7426582B1 (en) Method, system, and apparatus for servicing PS/2 devices within an extensible firmware interface environment
JP2006522971A (ja) オペレーティングシステム
JP3869716B2 (ja) ソフトウェアライセンス管理機構を備える計算機
Giroir Zimmer et al.

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20100604

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee