KR20150029613A - 입력/출력 에러-억제 이벤트 후의 복구 - Google Patents
입력/출력 에러-억제 이벤트 후의 복구 Download PDFInfo
- Publication number
- KR20150029613A KR20150029613A KR1020147031321A KR20147031321A KR20150029613A KR 20150029613 A KR20150029613 A KR 20150029613A KR 1020147031321 A KR1020147031321 A KR 1020147031321A KR 20147031321 A KR20147031321 A KR 20147031321A KR 20150029613 A KR20150029613 A KR 20150029613A
- Authority
- KR
- South Korea
- Prior art keywords
- error
- input
- virtual machine
- operating system
- computer
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1608—Error detection by comparing the output signals of redundant hardware
- G06F11/1616—Error detection by comparing the output signals of redundant hardware where the redundant component is an I/O device or an adapter therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0751—Error or fault detection not based on redundancy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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 the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0712—Error 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 the processing taking place on a specific hardware platform or in a specific software environment in a virtual computing platform, e.g. logically partitioned systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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 the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0745—Error 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 the processing taking place on a specific hardware platform or in a specific software environment in an input/output transactions management context
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1482—Generic software techniques for error detection or fault masking by means of middleware or OS functionality
- G06F11/1484—Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
- Retry When Errors Occur (AREA)
Abstract
본 명세서에서는, 컴퓨팅 장치 상에서 실행 중인 운영 체제 또는 가상 머신 모니터에게 입력/출력 에러-억제 이벤트를 통보하도록 구성된 인터럽트 핸들러 등의 플랫폼 엔티티를 갖춘 컴퓨팅 장치를 위한, 장치, 컴퓨터로 구현된 방법, 시스템, 장치, 및 컴퓨터-판독가능 매체의 실시예들이 설명된다. 다양한 실시예에서, 인터럽트 핸들러는, 운영 체제 또는 가상 머신 모니터로부터의 지시에 응답하여, 입력/출력 에러-억제 이벤트를 야기한 입력/출력 장치로의 링크의 복구를 가능하게 할 수 있도록 구성될 수 있다.
Description
본 발명의 실시예는 전반적으로 데이터 처리 기술 분야에 관한 것으로, 더 구체적으로는, 입력/출력 에러-억제 이벤트 후의 복구에 관한 것이다.
본 명세서에서 제공되는 배경 설명은 본 개시의 정황을 전반적으로 제시하기 위한 목적이다. 본 발명의 배경부에서 설명되는 범위까지의 현재 거명된 발명자들의 연구 뿐만 아니라 출원 시점에서의 종래 기술로서 여겨질 수 없는 설명의 양태들은, 명시적으로든 묵시적으로든 본 개시에 대한 종래 기술로서 인정되지 않는다. 여기서 달리 나타내지 않는 한, 본 절에서 설명되는 접근법들은 본 개시의 청구항들에 대한 종래 기술이 아니며 본 절에 포함된다고 해서 종래 기술로 인정되는 것은 아니다.
캘리포니아주, 산타 클라라시의 Intel®사에 의해 개발된 라이브 에러 복구("LER"; Live Error Recovery) 기술로 구성된 하드웨어 또는 펌웨어 등의 에러-억제 로직은, PCIe(Peripheral Component Interconnect Express) 등의 다양한 기술을 이용하여 연동된 입력/출력("I/O") 장치 상에서 발생하는 에러를 억제하는데 이용될 수 있다. LER은 포트 상의 에러가 억제된 후에 I/O 장치/포트의 복구를 가능케 한다. 그러나, 예를 들어 운영 체제("OS"; operating system) 또는 가상 머신 모니터("VMM"; virtual machine monitor) 레벨에서 여전히 시스템 고장이 존재할 수 있는데, 이것은 에러-억제 로직과 OS/VMM 사이에서 조율이 불충분하거나 없을 수 있기 때문이다.
실시예들은 첨부된 도면들과 연계한 이하의 상세한 설명에 의해 용이하게 이해될 것이다. 이 설명을 용이하게 하기 위해, 유사한 참조 번호는 유사한 구조적 요소를 가리킨다. 실시예들은 첨부된 도면들에서 제한이 아닌 예로서 설명된다.
도 1은, 다양한 실시예들에 따른, 본 개시의 교시의 적용가능한 부분들로 구성된 예시의 컴퓨팅 장치를 개략적으로 나타낸다.
도 2는, 다양한 실시예들에 따른, 다양한 컴포넌트들 사이의 예시의 프로세스 흐름을 개략적으로 도시한다.
도 3은, 다양한 실시예들에 따른, 인터럽트 핸들러 등의 플랫폼 엔티티에 의해 구현될 수 있는 예시의 방법을 개략적으로 도시한다.
도 4는, 다양한 실시예들에 따른, 운영 체제 또는 가상 머신 모니터에 의해 구현될 수 있는 예시의 방법을 개략적으로 도시한다.
도 5는, 다양한 실시예들에 따른, 개시된 방법 및 컴퓨터-판독가능 매체가 구현될 수 있는 예시의 컴퓨팅 장치를 개략적으로 도시한다.
도 1은, 다양한 실시예들에 따른, 본 개시의 교시의 적용가능한 부분들로 구성된 예시의 컴퓨팅 장치를 개략적으로 나타낸다.
도 2는, 다양한 실시예들에 따른, 다양한 컴포넌트들 사이의 예시의 프로세스 흐름을 개략적으로 도시한다.
도 3은, 다양한 실시예들에 따른, 인터럽트 핸들러 등의 플랫폼 엔티티에 의해 구현될 수 있는 예시의 방법을 개략적으로 도시한다.
도 4는, 다양한 실시예들에 따른, 운영 체제 또는 가상 머신 모니터에 의해 구현될 수 있는 예시의 방법을 개략적으로 도시한다.
도 5는, 다양한 실시예들에 따른, 개시된 방법 및 컴퓨터-판독가능 매체가 구현될 수 있는 예시의 컴퓨팅 장치를 개략적으로 도시한다.
이하의 상세한 설명에서, 상세한 설명의 일부를 형성하고 유사한 번호는 전체를 통해 유사한 부분을 가리키는, 실행될 수 있는 실시예로서 도시된, 첨부된 도면을 참조한다. 다른 실시예들이 이용될 수 있으며 본 개시의 범위로부터 벗어나지 않고 구조적 또는 논리적 변경이 이루어질 수 있다는 것을 이해해야 한다. 따라서, 이하의 상세한 설명은 제한적 의미로 간주되어서는 안 되고, 실시예들의 범위는 첨부된 청구항들 및 그들의 균등물에 의해 정의된다.
청구 대상의 이해에 가장 도움이 되는 방식으로, 다양한 동작들이 복수의 개별 작용이나 동작들로서 차례로 설명될 수 있다. 그러나, 설명의 순서는, 이들 동작들이 반드시 순서 의존적이라는 것을 암시하는 것으로 해석되어서는 안 된다. 특히, 이들 동작들은 제시된 순서로 수행되지 않을 수도 있다. 설명되는 동작들은 설명된 실시예와는 상이한 순서로 수행될 수도 있다. 추가 실시예에서는 다양한 추가 동작들이 수행되거나 및/또는 설명된 동작들이 생략될 수도 있다.
본 개시의 목적을 위해, 구문 "A 및/또는 B"는 (A), (B), 또는 (A 및 B)를 의미한다. 본 개시의 목적을 위해, 구문 "A, B 및/또는 C"는 (A), (B), (C), (A 및 B), (A 및 C), (B 및 C) 또는 (A, B 및 C)를 의미한다.
설명은, 각각이 동일하거나 상이한 실시예들 중 하나 이상을 참조할 수 있는, 구문 "실시예에서" 또는 "실시예들에서"를 사용할 수 있다. 또한, 용어 "포함하는", "내포하는", "갖는" 등은, 본 개시의 실시예에 관하여 사용될 때, 동의어이다.
여기서 사용될 때, 용어 "모듈"은, 하나 이상의 소프트웨어 또는 펌웨어 프로그램, 조합 논리 회로, 및/또는 설명된 기능을 제공하는 기타의 적절한 컴포넌트를 실행하는 주문형 집적 회로("ASIC"), 전자 회로, 프로세서(공유형, 전용형, 또는 그룹) 및/또는 메모리(공유형, 전용형, 또는 그룹)를 말하거나, 이들의 일부이거나, 이들을 포함할 수 있다.
도 1은 본 개시의 교시의 적용가능한 부분들로 구성된 컴퓨팅 장치(100)에 구현될 수 있는 다양한 컴포넌트들을 개략적으로 도시한다. 도 1의 1-N으로 라벨링된 복수의 입력/출력("I/O") 장치(102)는 복수의 I/O 포트(103)에 접속될 수 있다. 복수의 I/O 장치(102)는, 키보드, 마우스, 터치-감응 스크린, 디스플레이, 스피커, 프린터, 팩스, 저장 장치(예를 들어, 하드 디스크 드라이브, 솔리드 스테이트 드라이브), 스캐너, 안테나 등의 유무선 통신 인터페이스 등을 포함하지만 이것으로 제한되지 않는 다양한 타입의 I/O 장치를 포함할 수 있다. 다양한 실시예에서, I/O 포트(103)는, 주변 컴포넌트 인터커넥트 익스프레스(PCIe; Peripheral Component Interconnect Express) 루트 포트 등의, 다양한 타입의 포트일 수 있다.
각각의 I/O 포트(103)는 (도 1에서 "E-C LOGIC"으로 표기된) 에러-억제 로직(104)을 포함할 수 있다. 에러-억제 로직(104)은, I/O 포트(103) 및/또는 I/O 장치(102) 상의 에러를 검출 및 억제하여 에러 전파를 방지하도록 구성된, 하드웨어, 소프트웨어(예를 들어, 펌웨어에서의 명령어들), 또는 이 둘의 임의의 조합일 수 있다. 다양한 실시예에서, 에러-억제 로직(104)은, 캘리포니아주 산타 클라라시의 Intel®사에 의해 개발된 라이브 에러 복구("LER"; Live Error Recovery) 기술을 포함할 수 있다. 다양한 실시예에서, 에러가 검출되면, 에러를 겪고 있는 I/O 포트(103)에 대한 에러-억제 상태 비트(예를 들어, LER 이벤트 상태 비트)가 세트되어 에러-억제 모드가 트리거되었음을 나타낼 수 있다. 다양한 실시예에서, 에러-억제 이벤트시에, I/O 포트(103)는, I/O 장치(102)로의 링크를, 송출 요청이 중단될 수 있는 링크다운(LinkDown) 상태로 강제할 수 있다. 다양한 실시예에서, 인입 패킷은 링크다운 상태에서 정상적으로 흘러가는(drain) 것이 허용될 수 있다. 다양한 실시예에서, 에러-억제 이벤트의 클리어(clear)시에, I/O 포트(103)의 에러-억제 상태 비트도 클리어될 수 있다. 링크는, 트랜잭션이 정상적으로 전파되는 것이 허용되는, 링크업(LinkUp) 상태로 진입하는 것이 허용될 수 있다.
컴퓨팅 장치(100)는 다양한 하위 레벨 기능을 제어하는 다양한 "플랫폼 엔티티"를 포함할 수 있다. 플랫폼 엔티티는, 하드웨어, 소프트웨어(예를 들어, 마이크로제어기 펌웨어) 또는 이 둘의 임의 조합으로 구현될 수 있다. 일부 실시예의 경우, 이들은 베이스보드 관리 제어기("BMC"; baseboard management controller)(106) 및/또는 인터럽트 핸들러(108)를 포함할 수 있지만 이것으로 제한되지 않는다. 다양한 실시예에서, BMC(106) 또는 그 균등물은, 센서 또는 기타의 유사한 기술을 이용하여 컴퓨팅 장치(100)의 물리적 상태를 모니터링하는 전문화된 서비스 프로세서일 수 있다.
인터럽트 핸들러(108)는, 하드웨어 및/또는 소프트웨어 인터럽트에 응답하여 실행되도록 구성될 수 있다. 인터럽트 핸들러(108)는 그 실행을 트리거하는 인터럽트의 성질에 따라 다양한 루틴을 수행할 수 있다. 예를 들어, 사용자(미도시)가 키보드(미도시) 상의 키를 누르거나 터치-감응 스크린(미도시)과 상호작용한다면, 대응하는 키보드 또는 터치-감응 스크린 제어기로부터 인터럽트 핸들러(108)로 하드웨어 인터럽트가 전송될 수 있고, 이는, 결국, 하나 이상의 다른 컴포넌트(예를 들어, 워드 프로세싱 애플리케이션)에 입력의 진입의 표시를 제공할 수 있다.
컴퓨팅 장치(100)는 또한 메모리(110)를 포함할 수 있다. 메모리(110)는, 동적 랜덤 액세스 메모리("DRAM") 등의 다양한 타입의 메모리일 수 있다. 다양한 실시예에서, 메모리(110)는, 운영 체제("OS"; operating system) 및/또는 가상 머신 모니터("VMM"; virtual machine monitor)(112)를 실행하기 위한 명령어를 포함할 수 있다. 메모리(110)는, 복수의 I/O 장치(102)에 소프트웨어 인터페이스를 제공할 수 있는, 도 1에서 1-N으로 라벨링된 복수의 드라이버(114)를 실행하기 위한 명령어를 더 포함할 수 있다. 도 1에 도시되지 않았지만, 메모리(110)는 또한, 임의 개수의 다른 컴퓨터 프로그램(예를 들어, 워드 프로세서, 미디어 재생기, 웹 서비스 등의 애플리케이션)을 실행하기 위한 명령어를 포함할 수 있다.
배경부에서 언급된 바와 같이, 컴퓨팅 장치(100)의 에러-억제 로직(104) 및 상위 레벨 컴포넌트들(예를 들어, OS/VMM(112))은, I/O 에러로 인해 에러-억제 이벤트가 에러-억제 로직(104)에 의해 시그널링될 때, 조율되지 않을 수도 있다. 이것은 I/O 에러가 억제되었더라도 컴퓨팅 장치(100) 고장을 초래할 수 있다. 따라서, 본 명세서에서 설명되는 다양한 기술들은 I/O 에러-억제 이벤트의 발생 후에 OS/VMM 레벨에서 컴퓨팅 장치(100)의 고장을 방지하도록 구현될 수 있다. 이것은 임무-결정적 환경에서 신뢰성, 가용성 및 서비스가용성("RAS")을 증가시킬 수 있다.
다양한 환경에서, 에러-억제 로직(104)은 인터럽트 핸들러(108) 등의 플랫폼 엔티티에게 I/O 에러-억제 이벤트를 통보할 수 있다. 플랫폼은 결국 OS/VMM(112)에게 I/O 에러-억제 이벤트를 통보할 수 있다. 예를 들어, 다양한 실시예에서, 인터럽트 핸들러(108)는, 플랫폼 통신 채널("PCC"; platform communication channel)(116) 등의 플랫폼 엔티티와 OS/VMM(112) 사이의 통신 채널을 이용하여 OS/VMM(112)에게 I/O 에러-억제 이벤트를 통보할 수 있다. PCC(116)는, BMC(106), 에러-억제 로직(104), 및/또는 인터럽트 핸들러(108) 등의 플랫폼 엔티티에 의해, OS/VMM(112) 등의 컴퓨팅 장치(100)의 상위 레벨 엔티티들과 통신하기 위해 이용가능한 메커니즘일 수 있다. 다양한 실시예에서, PCC(116)는, 하나 이상의 독립된 통신 채널 또는 부-공간(subspace)으로서 구현될 수 있는 어드레스 공간을 정의할 수 있다. 다양한 실시예에서, PCC(116)는, 2011년 12월 6일 공개된, 고급 구성 및 전력 인터페이스 명세, 개정 5.0("ACPI 명세")를 준수할 수 있다. 다양한 실시예에서, 인터럽트 핸들러(108) 등의 플랫폼 인터페이스는, 예를 들어, PCC(116)를 통해, 인터럽트 핸들러(108)를 통하지 않고, OS/VMM(112)에게 직접 에러-억제 이벤트를 통보할 수 있다.
다양한 실시예에서, 다양한 컴포넌트들은, I/O 에러-억제 이벤트를 야기한 I/O 장치(102)로의 링크의 복구를 가능케 할 수 있다. 예를 들어, OS/VMM(112)은 I/O 포트(103) 및/또는 I/O 장치(102)와 연관된 소프트웨어 스택을 클리어하고 인터럽트 핸들러(108) 등의 플랫폼 엔티티에게 스택이 클리어되었음을 나타내는 표시를 (예를 들어, PCC를 이용하여) 전달할 수 있다. 인터럽트 핸들러(108)는 결국 다양한 하드웨어 레지스터들의 내용을 변경하여 링크를 복구할 수 있다. 예를 들어, 인터럽트 핸들러(108)는 에러 레지스터들을 클리어할 수 있고 ―또는 에러-억제 로직(104)이나 I/O 포트(103)와 연관된 기타의 로직으로 하여금 클리어하게 할 수 있고― , I/O 에러-억제 이벤트에 응답하여 세트되었던 I/O 포트(103)의 에러-억제 이벤트 상태 비트를 클리어할 수 있다. 다양한 실시예에서, 일단 이들 레지스터들이 클리어되고 나면, I/O 포트는 I/O 장치(102)로의 링크를 링크업 상태로 천이할 수 있다.
컴퓨팅 장치(100)의 다양한 컴포넌트들 사이의 예시의 프로세스 흐름이 도 2에 도시되어 있다. 좌측에는, 도 1의 에러-억제 로직(104) 및/또는 I/O 포트(103)에 대응할 수 있는 PCIe 루트 포트가 있다. 다양한 실시예에서 인터럽트 핸들러(108) 및/또는 BMC(106) 중 하나 이상일 수 있는 플랫폼 엔티티가 중간에 있다. 우측에는, OS 또는 VMM, 예를 들어, 도 1의 OS/VMM(112)이 있다.
컴퓨팅 장치(100)가 부팅할 때 등의 다양한 시점에서, 다양한 컴포넌트들은 (점선으로 도시된) 초기화 루틴을 수행하여 OS/VMM-레벨 고장을 피하면서 I/O 장치(102) 및/또는 I/O 포트(103)로의 링크를 복구하도록 컴퓨팅 장치(100)를 준비시킬 수 있다. 예를 들어, 블록(202)에서, 복수의 I/O 포트(103)와 연관된 정보는, 예를 들어, 인터럽트 핸들러(108) 등의 플랫폼 엔티티에 의해, OS/VMM(112)에 액세스가능한 메모리에 저장될 수 있다. 일부 실시예에서, 이 정보는 ACPI 명세에 따르는 포맷으로 저장될 수 있다. 다양한 실시예에서, 이 정보는, I/O 포트 정보(예를 들어, I/O 포트에 접속된 장치의 타입 등), 핸들링될 수 있는 에러의 타입 등을 포함할 수 있다. 블록(204)에서, 이 정보는 복수의 에러-억제 이벤트 핸들러를 등록하기 위해 OS/VMM(112)에 의해 이용될 수 있다. 다양한 실시예에서, 복수의 이벤트 핸들러는 복수의 I/O 포트(103)에 대응할 수 있다.
I/O 에러의 발생시에, 블록(206)에서, I/O 에러는, 예를 들어, 에러-억제 로직(104)에 의해 특정 I/O 포트(103)에서 검출될 수 있다. 블록(208)에서, 예를 들어, 에러-억제 로직(104)에 의해, 검출된 에러가 억제되었는지에 관해 결정이 이루어질 수 있다. 예를 들어, 다양한 실시예에서, LER 하드웨어/소프트웨어는 I/O 에러가 억제되었다는 것을 시그널링할 수 있다. 에러가 억제되면, 에러-억제 로직(104)은 I/O 에러-억제 이벤트를 시그널링하고, 프로세스는 블록(210)으로 진행할 수 있다.
블록(210)에서, 인터럽트 핸들러(108) 등의 플랫폼 엔티티는 I/O 에러를 겪은 I/O 포트(103)를 식별할 수 있다. 예를 들어, 에러-억제 로직(104)은 인터럽트 핸들러(108)에게 에러-억제 이벤트와 에러-억제 이벤트가 발생한 I/O 포트(103)를 통보할 수 있다. 블록(212)에서, 예를 들어 인터럽트 핸들러(108) 등의 플랫폼 엔티티에 의해, 에러-억제 레코드(record)가 생성될 수 있다. 에러-억제 레코드는, 에러를 겪은 식별된 I/O 포트(103), 에러에 관한 정보 등을 포함하지만 이것으로 제한되지 않는 다양한 정보를 포함할 수 있다. 그 다음, 에러-억제 레코드는 OS/VMM(112)에 전달될 수 있다. 다양한 실시예에서, 인터럽트 핸들러(108)는, 에러-억제 레코드를 OS/VMM(112)에 전달하기 위해, I/O 또는 메모리-맵핑된 I/O를 통해 액세스가능한 하드웨어 레지스터를 이용하는 것을 포함할 수 있는, PCC 도어벨(doorbell) 프로토콜을 이용할 수 있다. 블록(214)에서, (블록(204)에서 생성되었을 수 있는) 적절한 에러-억제 이벤트 핸들러는 드라이버-레벨 복구를 구현할 수 있다. 예를 들어, 에러-억제 이벤트 핸들러는, 드라이버(114)가 에러를 겪은 I/O 장치(102)를 복구할 수 있는지를 드라이버(114)가 표시할 수 있도록, (에러-억제 이벤트를 야기한 I/O 포트(103) 및/또는 장치(102)에 대응하는) 드라이버(114)에게 에러-억제 이벤트를 통보할 수 있다.
드라이버가 I/O 장치(102)를 복구할 수 있을 것임을 드라이버가 표시한다고 가정하면, 블록(216)에서, OS/VMM(112)은, 예를 들어, PCC(116)를 통해 인터럽트 핸들러(108) 등의 플랫폼 엔티티에게, 에러-억제 이벤트를 야기한 I/O 장치(102)로의 링크를 복구하기 위한 준비 및/또는 지시를 전달할 수 있다. 다양한 실시예에서, OS/VMM(112)은 플랫폼 엔티티에게 이러한 준비/지시를 전달하기 위해 PCC 도어벨 프로토콜을 이용할 수 있다. 블록(218)에서, 예를 들어, 인터럽트 핸들러(108) 등의 플랫폼 엔티티에 의해, I/O 포트(103)가 링크를 재개하게 하는 적절한 명령(예를 들어, 클리어 에러 레지스터(들))이 내려질 수 있다.
인터럽트 핸들러(108) 등의 플랫폼 엔티티에 의해 구현될 수 있는 예시의 방법(300)이 도 3에 도시되어 있다. 블록(302)에서, OS/VMM(112)에 의해 복수의 I/O 포트(103)에 대응하는 복수의 에러-억제 이벤트 핸들러를 등록하기 위해 이용될 수 있는 복수의 I/O 포트(103) 및/또는 I/O 장치(102)와 연관된 정보가, 예를 들어, 인터럽트 핸들러(108)에 의해, OS/VMM(112)에 액세스가능한 메모리에 저장("공개")될 수 있다.
I/O 에러의 발생시에, 블록(304)에서, 대응하는 I/O 에러-억제 이벤트를 시그널링한 에러 억제 로직(104)을 갖는 I/O 포트(103)는, 예를 들어, 인터럽트 핸들러(108) 등의 플랫폼 엔티티에 의해 식별될 수 있다. 도 3에는 도시되어 있지 않지만, 다양한 실시예에서, 플랫폼 엔티티는, 에러를 겪고 있는 I/O 포트(103) 상의 모든 활성(또는 "진행중인(in-flight)") 트랜잭션이 추가의 진행 이전에 완료(또는 "소진(drain)")될 때까지 기다릴 수 있다.
모든 진행중인 트랜잭션이 완료된 후에, 블록(306)에서, 인터럽트 핸들러(108) 등의 플랫폼 엔티티는 에러-억제 이벤트와 연관된 에러-억제 레코드를 생성할 수 있다. 다양한 실시예에서, 에러-억제 레코드는, 에러-억제 이벤트가 트리거되었던 I/O 포트(103)의 식별자 등의 다양한 정보를 포함할 수 있다. 블록(308)에서, 예를 들어 인터럽트 핸들러(108) 등의 플랫폼 엔티티에 의해 OS/VMM(112)에 에러-억제 레코드가 전달될 수 있다. 앞서 언급된 바와 같이, 이 전달은 PCC(116)를 통해, 예를 들어, PCC 도어벨 프로토콜을 이용하여 발생할 수 있다.
블록(310)에서, 인터럽트 핸들러(108) 등의 플랫폼 엔티티는, 예를 들어, OS/VMM(112)으로부터 PCC(116)를 통해, OS/VMM(112)이 고장난 I/O 장치(102)로의 링크를 복구할 준비가 되어 있다는 표시를 수신할 수 있다. 다양한 실시예에서, 블록(312)에서는, 인터럽트 핸들러(108) 등의 플랫폼 엔티티는, I/O 에러-억제 이벤트를 겪은 I/O 포트(103)와 연관된 에러 로그를 클리어할 수 있다. 다양한 실시예에서, 블록(314)에서는, 인터럽트 핸들러(108) 등의 플랫폼 엔티티가, I/O 에러-억제 이벤트를 겪은 I/O 포트(103)의 복구를 가능케 할 수 있다. 예를 들어, 인터럽트 핸들러(108)는 I/O 포트(103)가 링크를 재개하게 하는 적절한 명령을 내릴 수 있다.
도 4는, 다양한 실시예들에 따른, OS/VMM(112) 등의, 다양한 컴포넌트들에 의해 구현될 수 있는 예시의 방법(400)을 도시한다. 블록(402)에서, 예를 들어, 도 3의 302에서 인터럽트 핸들러(108)에 의해 저장된 복수의 I/O 포트(103)와 연관된 정보에 기초하여, 예를 들어, OS/VMM(112)에 의해, 복수의 I/O 포트(103)와 연관된 복수의 에러-억제 이벤트 핸들러가 등록될 수 있다. 에러-억제 이벤트 핸들러는, 기동시 등의 다양한 시점에 생성될 수 있다.
블록(404)에서, 예를 들어, OS/VMM(112)에 의해, 인터럽트 핸들러(108) 등의 플랫폼 엔티티로부터 에러-억제 이벤트의 통보가 수신될 수 있다. 다양한 실시예에서, 이 통보는, PCC(116)를 통해, 예를 들어, PCC 도어벨 프로토콜을 이용하여 수신될 수 있다. 블록(406)에서, 에러-억제 이벤트를 야기한 I/O 장치(102)와 연관된 드라이버(114)는, 예를 들어, 에러-억제 이벤트의 OS/VMM(112)에 의해 식별되고 통보될 수 있다. 블록(408)에서, OS/VMM(112)은, 예를 들어, I/O 장치(102)와 연관된 드라이버(114)로부터, 드라이버가 I/O 장치(102)를 복구할 수 있다는 통보를 수신할 수 있다.
일단 드라이버(114)가 I/O 장치(102)를 복구할 수 있을 것이라는 것을 OS/VMM(112)이 통보받고 나면, 블록(410)에서, OS/VMM(112)은, 예를 들어, PCC(116)를 통해, 인터럽트 핸들러(108) 등의 플랫폼 엔티티에게 에러를 겪은 I/O 장치(102)로의 링크를 복구할 것을 지시할 수 있다. 에러-억제 이벤트를 겪은 고장난 I/O 장치(102)로의 링크가 복구되면, 블록(412)에서, OS/VMM(112)은 I/O 장치(102)를 에러 이전에 행했던 바와 같이 재구성 및 핸들링할 수 있다.
도 5는 다양한 실시예에 따른 예시의 컴퓨팅 장치(500)를 나타낸다. 컴퓨팅 장치(500)는, 다수의 컴포넌트, 프로세서(504) 및 적어도 하나의 통신 칩(506)을 포함할 수 있다. 다양한 실시예에서, 프로세서(504)는 프로세서 코어일 수 있다. 다양한 실시예에서, 적어도 하나의 통신 칩(506)은 또한 물리적으로 및 전기적으로 프로세서(504)에 결합될 수 있다. 추가의 구현에서, 통신 칩(506)은 프로세서(504)의 일부일 수도 있다. 다양한 실시예에서, 컴퓨팅 장치(500)는 인쇄 회로 기판("PCB"; printed circuit board)(502)을 포함할 수 있다. 이들 실시예의 경우, 프로세서(504)와 통신 칩(506)이 그 위에 배치될 수 있다. 대안적 실시예에서, 다양한 컴포넌트들이 PCB(502)의 채용없이 결합될 수도 있다.
그 응용에 따라, 컴퓨팅 장치(500)는, PCB(502)에 물리적으로 및 전기적으로 결합되거나 결합되지 않을 수 있는, 본 명세서에서 논의된 플랫폼 엔티티들 중 하나 이상과 같은, 다른 컴포넌트들을 포함할 수 있다. 이들 다른 컴포넌트들은, (본 개시의 교시의 적용가능한 부분들로 구성된) BMC(507), 휘발성 메모리(예를 들어, "DRAM"이라고도 하는, 동적 랜덤 액세스 메모리(508)), 비휘발성 메모리(예를 들어, "ROM"이라고도 하는, 판독 전용 메모리(510)), 플래시 메모리(512), (본 개시의 교시의 적용가능한 부분들로 구성된) 하나 이상의 에러-억제 로직(513), 그래픽 프로세서(514), (본 개시의 교시의 적용가능한 부분들로 구성된) 인터럽트 핸들러(515), 디지털 신호 처리기(미도시), 암호 프로세서(미도시), 입력/출력("I/O") 제어기(516), 안테나(518), 디스플레이(미도시), 터치 스크린 디스플레이(520), 터치 스크린 제어기(522), 배터리(524), 오디오 코덱(미도시), 비디오 코덱(미도시), 위성 위치확인 시스템("GPS") 장치(528), 컴파스(530), 가속도계(미도시), 자이로스코프(미도시), 스피커(532), 카메라(534), (하드 디스크 드라이브, 솔리드 스테이트 드라이브, 컴팩트 디스크("CD"), 디지털 다기능 디스크("DVD") 등의) 대용량 저장 장치(미도시) 등을 포함하지만, 이것으로 제한되는 것은 아니다. 다양한 실시예에서, 프로세서(504)는, BMC(507) 및/또는 인터럽트 핸들러(515) 등의 다른 컴포넌트와 동일한 다이 상에 통합되어 시스템 온 칩("SoC")을 형성할 수도 있다.
다양한 실시예에서, 휘발성 메모리(예를 들어, DRAM(508)), 비휘발성 메모리(예를 들어, ROM(510)), 플래시 메모리(512), 및 대용량 저장 장치는, 프로세서(들)(504)에 의한 실행에 응답하여, 컴퓨팅 장치(500)가 방법(300) 및/또는 방법(400)의 모든 또는 선택된 양태들을 실시할 수 있게 하도록 구성된 프로그래밍 명령어를 포함할 수 있다. 예를 들어, 휘발성 메모리(예를 들어, DRAM(508)), 비휘발성 메모리(예를 들어, ROM(510)), 플래시 메모리(512), 및 대용량 저장 장치 등의 메모리 컴포넌트들 중 하나 이상은, 컴퓨팅 장치(500)가, 방법(300) 및/또는 방법(400)의 모든 또는 선택된 양태들과 같은, 개시된 기술들을 실시할 수 있게 하도록 구성된 명령어들의 임시적 및/또는 영구적 사본을 포함할 수 있다.
통신 칩(506)은 컴퓨팅 장치(500)로의 및 컴퓨팅 장치(500)로부터의 데이터의 전달을 위한 유선 및/또는 무선 통신을 가능케 할 수 있다. 용어 "무선(wireless)" 및 그 파생어들은, 비-고체 매체를 통한 변조된 전자기 복사(electromagnetic radiation)를 이용하여 데이터를 전달할 수 있는, 회로, 장치, 시스템, 방법, 기술, 통신 채널 등을 기술하는데 이용될 수 있다. 이 용어는 연관된 장치가 어떠한 유선도 포함하지 않는다는 것을 암시하는 것은 아니지만, 일부 실시예들에서는 포함하지 않을 수도 있다. 통신 칩(506)은, Wi-Fi (IEEE 802.11군), WiMAX (IEEE 802.16군), IEEE 802.20, 롱 텀 에볼루션(LTE), Ev-DO, HSPA+, HSDPA+, HSUPA+, EDGE, GSM, GPRS, CDMA, TDMA, DECT, Bluetooth, 그 파생물 뿐만 아니라 3G, 4G, 5G, 및 그 이상으로 표기된 기타 임의의 무선 프로토콜을 포함하지만 이들로 제한되지 않는 다수의 무선 표준이나 프로토콜 중 임의의 것을 구현할 수 있다. 컴퓨팅 장치(500)는 복수의 통신 칩(506)을 포함할 수 있다. 예를 들어, 제1 통신 칩(506)은 Wi-Fi 및 Bluetooth 등의 더 단거리의 무선 통신에 전용되고, 제2 통신 칩(506)은 GPS, EDGE, GPRS, CDMA, WiMAX, LTE, Ev-DO 및 기타 등의 더 장거리의 무선 통신에 전용될 수도 있다.
다양한 구현에서, 컴퓨팅 장치(500)는, 랩탑, 넷북, 노트북, 울트라북, 스마트폰, 컴퓨팅 태블릿, PDA(personal digital assistant), 울트라 모바일 PC, 모바일 전화, 데스크탑 컴퓨터, 서버, 프린터, 스캐너, 모니터, 셋탑 박스, 오락 제어 유닛(예를 들어, 게이밍 콘솔), 디지털 카메라, 휴대형 음악 재생기, 또는 디지털 비디오 레코더일 수 있다. 추가 구현들에서, 컴퓨팅 장치(500)는, 데이터를 처리하는 기타 임의의 전자 장치일 수 있다.
다양한 실시예에서, 프로세서(504)(또는 그 프로세서 코어들 중 하나)는 하나 이상의 플랫폼 엔티티들과 함께 팩키징될 수 있다. 한 실시예의 경우, 프로세서(504)(또는 그 프로세서 코어들 중 하나)는 하나 이상의 플랫폼 엔티티들과 함께 팩키징되어 시스템 인 팩키지(SiP; System in Package)를 형성할 수 있다. 한 실시예의 경우, 프로세서(504)(또는 그 프로세서 코어들 중 하나)는 하나 이상의 플랫폼 엔티티들과 함께 팩키징되고, 동일한 다이 상에 통합될 수 있다. 한 실시예의 경우, 프로세서(504)(또는 그 프로세서 코어들 중 하나)는 하나 이상의 플랫폼 엔티티들과 함께 팩키징되어 SoC를 형성할 수 있다.
인터럽트 핸들러 등의 컴퓨팅 장치의 플랫폼 엔티티가 컴퓨팅 장치에서 실행 중인 운영 체제 또는 가상 머신 모니터에게 입력/출력 에러-억제 이벤트를 통보하고, 운영 체제 또는 가상 머신 모니터로부터의 지시에 응답하여, 입력/출력 에러-억제 이벤트를 야기한 입력/출력 장치로의 링크의 복구를 가능케 하기 위한 장치(apparatus), 컴퓨터로 구현된 방법, 시스템, 장치(device), 및 컴퓨터-판독가능 매체의 실시예들이 본 명세서에서 설명된다. 다양한 실시예에서, 인터럽트 핸들러는 또한, 플랫폼 통신 채널을 이용하여, 예를 들어, 도어벨 프로토콜을 이용하여, 운영 체제 또는 가상 머신 모니터에게 입력/출력 에러-억제 이벤트를 통보할 수 있다.
다양한 실시예에서, 인터럽트 핸들러는 입력/출력 에러-억제 이벤트를 야기한 입력/출력 장치와 연관된 포트를 식별하고, 운영 체제 또는 가상 머신 모니터에게 식별된 포트를 통보할 수 있다. 다양한 실시예에서, 인터럽트 핸들러는 에러-억제 이벤트와 연관된 에러-억제 레코드를 생성할 수 있다. 다양한 실시예에서, 인터럽트 핸들러는 입력/출력 에러-억제 이벤트를 야기한 입력/출력 장치와 연관된 에러 로그(error log)를 클리어할 수 있다.
다양한 실시예에서, 인터럽트 핸들러는 복수의 입력/출력 포트에 대응하는 복수의 에러-억제 이벤트 핸들러를 등록하기 위해 운영 체제 또는 가상 머신 모니터에 의해 이용가능한 복수의 입력/출력 포트와 연관된 정보를 운영 체제 또는 가상 머신 모니터에 액세스가능한 메모리에 저장할 수 있다.
또한, 컴퓨팅 장치의 운영 체제 또는 가상 머신 모니터가 컴퓨팅 장치의 인터럽트 핸들러로부터 에러-억제 이벤트의 통보를 수신하고, 통보에 응답하여, 에러-억제 이벤트를 야기한 입력/출력 장치로의 링크의 복구를 가능케 하기 위한 장치, 컴퓨터로 구현된 방법, 시스템, 장치, 및 컴퓨터-판독가능 매체의 실시예도 본 명세서에서 설명된다. 다양한 실시예에서, 운영 체제 또는 가상 머신 모니터는 에러-억제 이벤트를 야기한 입력/출력 장치와 연관된 드라이버에게 에러-억제 이벤트를 통보할 수 있다.
다양한 실시예에서, 운영 체제 또는 가상 머신 모니터는, 입력/출력 장치와 연관된 드라이버로부터, 드라이버가 입력/출력 장치를 복구할 수 있다는 통보를 수신할 수 있다. 다양한 실시예에서, 운영 체제 또는 가상 머신 모니터는, 인터럽트 핸들러에 의해 생성되는 복수의 입력/출력 포트와 연관된 정보에 기초하여, 복수의 입력/출력 포트와 연관된 복수의 에러-억제 이벤트 핸들러를 등록할 수 있다. 다양한 실시예에서, 운영 체제 또는 가상 머신 모니터는, 플랫폼 통신 채널을 통해, 예를 들어, 도어벨 프로토콜을 이용하여, 인터럽트 핸들러로부터 에러-억제 이벤트의 통보를 수신할 수 있다. 다양한 실시예에서, 운영 체제 또는 가상 머신 모니터는, 인터럽트 핸들러에게, 예를 들어, 플랫폼 통신 채널을 통해, 입력/출력 에러를 야기한 입력/출력 장치로의 링크를 복구하기 위한 지시를 전달할 수 있다.
설명의 목적을 위해 여기서 소정의 실시예들이 예시되고 설명되었지만, 본 출원은 여기서 논의된 실시예들의 임의의 개조 또는 변형을 포괄하고자 한다. 따라서, 본 명세서에서 설명된 실시예들은 청구항들에 의해서만 제한되어야 함을 명시적으로 의도한다.
본 개시가 "한" 또는 "제1" 요소 또는 그 균등물을 인용할 때, 이러한 개시는 하나 이상의 이러한 요소를 포함하며, 2개 이상의 이러한 요소를 요구하지도 않고 배제하지도 않는다. 또한, 식별된 요소들에 대한 서수적 표시자(예를 들어, 제1, 제2, 제3)는 요소들간을 구분하기 위해서 사용되며, 이러한 요소들의 요구되거나 제한된 개수를 표시 또는 암시하지 않으며, 특별히 달리 기술되지 않는 한 이들은 이러한 요소들의 특정한 위치나 순서를 표시하지도 않는다.
Claims (34)
- 컴퓨터-판독가능 코드가 그 안에 구현된 적어도 하나의 컴퓨터-판독가능 매체로서,
상기 컴퓨터-판독가능 코드는, 컴퓨팅 장치의 인터럽트 핸들러가, 상기 컴퓨팅 장치에 의한 명령어의 실행에 응답하여, 상기 컴퓨팅 장치에서 실행 중인 운영 체제 또는 가상 머신 모니터에게 입력/출력 에러-억제 이벤트를 통보하고, 상기 운영 체제 또는 가상 머신 모니터로부터의 지시에 응답하여, 상기 입력/출력 에러-억제 이벤트를 야기한 입력/출력 장치로의 링크의 복구를 가능하게 할 수 있도록 구성된 명령어를 포함하는 적어도 하나의 컴퓨터-판독가능 매체. - 제1항에 있어서, 상기 명령어는 또한, 상기 컴퓨팅 장치에 의한 실행에 응답하여, 상기 인터럽트 핸들러가 플랫폼 통신 채널을 이용하여 상기 운영 체제 또는 가상 머신 모니터에게 상기 입력/출력 에러-억제 이벤트를 통보하게 할 수 있는, 적어도 하나의 컴퓨터-판독가능 매체.
- 제1항에 있어서, 상기 명령어는 또한, 상기 컴퓨팅 장치에 의한 실행에 응답하여, 상기 인터럽트 핸들러가 상기 입력/출력 에러-억제 이벤트를 야기한 상기 입력/출력 장치와 연관된 포트를 식별하고, 상기 운영 체제 또는 가상 머신 모니터에게 상기 식별된 포트를 통보하게 할 수 있는, 적어도 하나의 컴퓨터-판독가능 매체.
- 제1항에 있어서, 상기 명령어는 또한, 상기 컴퓨팅 장치에 의한 실행에 응답하여, 상기 인터럽트 핸들러가 상기 에러-억제 이벤트와 연관된 에러-억제 레코드(error-containment record)를 생성하게 할 수 있는, 적어도 하나의 컴퓨터-판독가능 매체.
- 제1항에 있어서, 상기 명령어는 또한, 상기 컴퓨팅 장치에 의한 실행에 응답하여, 상기 인터럽트 핸들러가 상기 입력/출력 에러-억제 이벤트를 야기한 상기 입력/출력 장치와 연관된 에러 로그(error log)를 클리어(clear)하게 할 수 있는, 적어도 하나의 컴퓨터-판독가능 매체.
- 제1항 내지 제5항 중 어느 한 항에 있어서, 상기 명령어는 또한, 상기 컴퓨팅 장치에 의한 실행에 응답하여, 상기 인터럽트 핸들러가 복수의 입력/출력 포트에 대응하는 복수의 에러-억제 이벤트 핸들러를 등록하기 위해 상기 운영 체제 또는 가상 머신 모니터에 의해 이용가능한 상기 복수의 입력/출력 포트와 연관된 정보를 상기 운영 체제 또는 가상 머신 모니터에 액세스가능한 메모리에 저장하게 할 수 있는, 적어도 하나의 컴퓨터-판독가능 매체.
- 컴퓨터-판독가능 코드가 그 안에 구현된 적어도 하나의 컴퓨터-판독가능 매체로서,
상기 컴퓨터-판독가능 코드는, 컴퓨팅 장치의 운영 체제 또는 가상 머신 모니터가, 상기 컴퓨팅 장치에 의한 명령어의 실행에 응답하여, 상기 컴퓨팅 장치의 인터럽트 핸들러로부터, 에러-억제 이벤트의 통보를 수신하고, 상기 통보에 응답하여 상기 에러-억제 이벤트를 야기한 입력/출력 장치로의 링크의 복구를 가능하게 할 수 있도록 구성된 명령어를 포함하는 적어도 하나의 컴퓨터-판독가능 매체. - 제7항에 있어서, 상기 명령어는 또한, 상기 컴퓨팅 장치에 의한 실행에 응답하여, 상기 운영 체제 또는 가상 머신 모니터가 상기 에러-억제 이벤트를 야기한 상기 입력/출력 장치와 연관된 드라이버에게 상기 에러-억제 이벤트를 통보하게 할 수 있는, 적어도 하나의 컴퓨터-판독가능 매체.
- 제8항에 있어서, 상기 명령어는 또한, 상기 컴퓨팅 장치에 의한 실행에 응답하여, 상기 운영 체제 또는 가상 머신 모니터가 상기 입력/출력 장치와 연관된 상기 드라이버로부터, 상기 드라이버가 상기 입력/출력 장치를 복구할 수 있다는 통보를 수신하게 할 수 있는, 적어도 하나의 컴퓨터-판독가능 매체.
- 제7항에 있어서, 상기 명령어는 또한, 상기 컴퓨팅 장치에 의한 실행에 응답하여, 상기 운영 체제 또는 가상 머신 모니터가 상기 인터럽트 핸들러에 의해 생성되는 복수의 입력/출력 포트와 연관된 정보에 기초하여 복수의 입력/출력 포트와 연관된 복수의 에러-억제 이벤트 핸들러를 등록하게 할 수 있는, 적어도 하나의 컴퓨터-판독가능 매체.
- 제7항에 있어서, 상기 명령어는 또한, 상기 컴퓨팅 장치에 의한 실행에 응답하여, 상기 운영 체제 또는 가상 머신 모니터가 플랫폼 통신 채널 도어벨 프로토콜(doorbell protocol)을 통해 상기 인터럽트 핸들러로부터 상기 에러-억제 이벤트의 통보를 수신하게 할 수 있는, 적어도 하나의 컴퓨터-판독가능 매체.
- 제7항에 있어서, 상기 명령어는 또한, 상기 컴퓨팅 장치에 의한 실행에 응답하여, 상기 운영 체제 또는 가상 머신 모니터가 상기 인터럽트 핸들러에게 상기 입력/출력 에러를 야기한 상기 입력/출력 장치로의 링크를 복구하기 위한 지시를 전달하게 할 수 있는, 적어도 하나의 컴퓨터-판독가능 매체.
- 컴퓨터로 구현된 방법으로서,
컴퓨팅 장치의 인터럽트 핸들러에 의해, 입력/출력 에러-억제 이벤트를 시그널링한 입력/출력 포트를 식별하는 단계;
상기 인터럽트 핸들러에 의해, 상기 에러-억제 이벤트와 연관된 에러-억제 레코드 ―상기 에러 억제 레코드는 상기 입력/출력 포트의 식별자를 포함함― 를 생성하는 단계; 및
상기 인터럽트 핸들러에 의해, 상기 컴퓨팅 장치 상에서 실행 중인 운영 체제 또는 가상 머신 모니터에게 상기 에러-억제 레코드를 제공하는 단계
를 포함하는 컴퓨터로 구현된 방법. - 제13항에 있어서, 상기 운영 체제 또는 가상 머신 모니터로부터의 지시에 응답하여, 상기 인터럽트 핸들러에 의해, 상기 입력/출력 포트로부터 상기 입력/출력 에러-억제 이벤트를 야기한 입력/출력 장치로의 링크의 복구를 가능하게 하는 단계를 더 포함하는 컴퓨터로 구현된 방법.
- 제13항에 있어서, 상기 인터럽트 핸들러에 의해, 플랫폼 통신 채널을 이용하여 상기 운영 체제 또는 가상 머신 모니터에게 상기 입력/출력 에러-억제 이벤트를 통보하는 단계를 더 포함하는 컴퓨터로 구현된 방법.
- 제13항에 있어서, 상기 인터럽트 핸들러에 의해, 상기 입력/출력 에러-억제 이벤트를 야기한 상기 입력/출력 장치와 연관된 에러 로그를 클리어하는 단계를 더 포함하는 컴퓨터로 구현된 방법.
- 제13항 내지 제16항 중 어느 한 항에 있어서, 상기 인터럽트 핸들러에 의해, 복수의 입력/출력 포트에 대응하는 복수의 에러-억제 이벤트 핸들러를 등록하기 위해 상기 운영 체제 또는 가상 머신 모니터에 의해 이용가능한 상기 복수의 입력/출력 포트와 연관된 정보를 상기 운영 체제 또는 가상 머신 모니터에 액세스가능한 메모리에 저장하는 단계를 더 포함하는 컴퓨터로 구현된 방법.
- 제17항에 있어서, 상기 운영 체제 또는 가상 머신 모니터에 의해, 에러-억제 이벤트를 핸들링하는 복수의 에러-억제 이벤트 핸들러를 등록하는 단계를 더 포함하는 컴퓨터로 구현된 방법.
- 제13항 내지 제16항 중 어느 한 항에 있어서, 상기 운영 체제 또는 가상 머신 모니터에 의해, 상기 에러-억제 이벤트를 야기한 상기 입력/출력 장치와 연관된 드라이버에게 상기 에러-억제 이벤트를 통보하는 단계를 더 포함하는 컴퓨터로 구현된 방법.
- 제19항에 있어서, 상기 운영 체제 또는 가상 머신 모니터에 의해, 상기 입력/출력 장치와 연관된 상기 드라이버로부터, 상기 드라이버가 상기 입력/출력 장치를 복구할 수 있다는 통보를 수신하는 단계를 더 포함하는 컴퓨터로 구현된 방법.
- 컴퓨팅 장치에서 실행되는 것에 응답하여 상기 컴퓨터 장치로 하여금 제13항 내지 제16항 중 어느 한 항에 따른 컴퓨터로 구현된 방법을 실행하게 하는 복수의 명령어를 포함하는 적어도 하나의 머신-판독가능 매체.
- 제13항 내지 제16항 중 어느 한 항의 컴퓨터로 구현된 방법을 수행하도록 구성된 장치(apparatus).
- 컴퓨터로 구현된 방법으로서,
컴퓨터 장치 상에서 실행 중인 운영 체제 또는 가상 머신 모니터에 의해, 상기 컴퓨팅 장치의 플랫폼 엔티티로부터 에러-억제 이벤트의 통보를 수신하는 단계, 및
상기 통보에 응답하여, 상기 운영 체제 또는 가상 머신 모니터에 의해, 상기 플랫폼 엔티티에게 상기 에러-억제 이벤트를 야기한 입력/출력 장치로의 링크를 복구하도록 지시하는 단계
를 포함하는 컴퓨터로 구현된 방법. - 제23항에 있어서, 상기 운영 체제 또는 가상 머신 모니터에 의해, 상기 에러-억제 이벤트를 야기한 상기 입력/출력 장치와 연관된 드라이버에게 상기 에러-억제 이벤트를 통보하는 단계를 더 포함하는 컴퓨터로 구현된 방법.
- 제24항에 있어서, 상기 운영 체제 또는 가상 머신 모니터에 의해, 상기 입력/출력 장치와 연관된 상기 드라이버로부터, 상기 드라이버가 상기 입력/출력 장치를 복구할 수 있다는 통보를 수신하는 단계를 더 포함하는 컴퓨터로 구현된 방법.
- 제23항에 있어서, 상기 운영 체제 또는 가상 머신 모니터에 의해, 상기 플랫폼 엔티티에 의해 생성되는 복수의 입력/출력 포트와 연관된 정보에 기초하여, 상기 복수의 입력/출력 포트와 연관된 복수의 에러-억제 이벤트 핸들러를 등록하는 단계를 더 포함하는 컴퓨터로 구현된 방법.
- 제23항에 있어서, 상기 운영 체제 또는 가상 머신 모니터에 의해, 플랫폼 통신 채널을 통해 상기 플랫폼 엔티티로부터 상기 에러-억제 이벤트의 통보를 수신하는 단계를 더 포함하는 컴퓨터로 구현된 방법.
- 제23항에 있어서, 상기 운영 체제 또는 가상 머신 모니터에 의해, 상기 플랫폼 엔티티에게, 상기 입력/출력 에러를 야기한 상기 입력/출력 장치로의 링크를 복구하기 위한 지시를 전달하는 단계를 더 포함하는 컴퓨터로 구현된 방법.
- 시스템으로서,
하나 이상의 프로세서;
인터럽트 핸들러; 및
운영 체제 또는 가상 머신 모니터
를 포함하고,
상기 인터럽트 핸들러는, 입력/출력 에러-억제 이벤트에 응답하여, 입력/출력 에러-억제 이벤트를 시그널링한 루트 포트(root port)를 식별하고, 상기 에러-억제 이벤트와 연관된 에러-억제 레코드 ―상기 에러-억제 레코드는 상기 루트 포트의 식별자를 포함함 ― 를 생성하며, 상기 운영 체제 또는 가상 머신 모니터에게 상기 에러-억제 레코드를 제공하도록 구성되며,
상기 운영 체제 또는 가상 머신 모니터는, 상기 인터럽트 핸들러로부터, 상기 에러-억제 레코드를 수신하고, 상기 에러-억제 이벤트를 야기한 입력/출력 장치로의 링크의 복구를 가능하게 하도록 구성된, 시스템. - 제29항에 있어서, 상기 인터럽트 핸들러는 또한 복수의 입력/출력 포트에 대응하는 복수의 에러-억제 이벤트 핸들러를 등록하기 위해 상기 운영 체제 또는 가상 머신 모니터에 의해 이용가능한 상기 복수의 입력/출력 포트와 연관된 정보를 상기 운영 체제 또는 가상 머신 모니터에 액세스가능한 메모리에 저장하도록 구성된, 시스템.
- 제30항에 있어서, 상기 운영 체제 또는 가상 머신 모니터는 또한, 에러-억제 이벤트를 핸들링하는 복수의 에러-억제 이벤트 핸들러를 등록하도록 구성된, 시스템.
- 제29항 내지 제31항 중 어느 한 항에 있어서, 상기 인터럽트 핸들러 및 운영 체제 또는 가상 머신 모니터가 통신하는 플랫폼 통신 채널을 더 포함하는 시스템.
- 제29항 내지 제31항 중 어느 한 항에 있어서, 상기 에러-억제 이벤트를 트리거하는 라이브 에러 복구(Live Error Recovery) 로직을 더 포함하는 시스템.
- 제29항 내지 제31항 중 어느 한 항에 있어서, 터치 스크린 디스플레이를 더 포함하는 시스템.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2012/041160 WO2014209251A2 (en) | 2012-06-06 | 2012-06-06 | Recovery after input/ouput error-containment events |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150029613A true KR20150029613A (ko) | 2015-03-18 |
KR101679947B1 KR101679947B1 (ko) | 2016-12-06 |
Family
ID=49716277
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147031321A KR101679947B1 (ko) | 2012-06-06 | 2012-06-06 | 입력/출력 에러-억제 이벤트 후의 복구 |
Country Status (9)
Country | Link |
---|---|
US (1) | US9411667B2 (ko) |
EP (1) | EP2859459B1 (ko) |
JP (1) | JP6032510B2 (ko) |
KR (1) | KR101679947B1 (ko) |
CN (1) | CN104704478B (ko) |
AU (1) | AU2012398458B2 (ko) |
BR (1) | BR112014027707A2 (ko) |
TW (1) | TWI526821B (ko) |
WO (1) | WO2014209251A2 (ko) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9519532B2 (en) * | 2014-01-20 | 2016-12-13 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Handling system interrupts with long-running recovery actions |
CN104077198B (zh) * | 2014-06-19 | 2017-06-06 | 华为技术有限公司 | 门铃db恢复方法及装置、具有该装置的输入/输出i/o设备 |
JP6333410B2 (ja) | 2014-06-24 | 2018-05-30 | 華為技術有限公司Huawei Technologies Co.,Ltd. | 障害処理方法、関連装置、およびコンピュータ |
JP6341795B2 (ja) * | 2014-08-05 | 2018-06-13 | ルネサスエレクトロニクス株式会社 | マイクロコンピュータ及びマイクロコンピュータシステム |
US9916270B2 (en) * | 2015-03-27 | 2018-03-13 | Intel Corporation | Virtual intelligent platform management interface (IPMI) satellite controller and method |
JP2016197360A (ja) * | 2015-04-06 | 2016-11-24 | 富士通株式会社 | 情報処理装置、情報処理装置の制御プログラム及び情報処理装置の制御方法 |
US20160371107A1 (en) * | 2015-06-18 | 2016-12-22 | Dell Products, Lp | System and Method to Discover Virtual Machines from a Management Controller |
EP3314515B1 (en) * | 2016-01-25 | 2020-03-18 | Hewlett-Packard Development Company, L.P. | Notice of intrusion into firmware |
JP2018055337A (ja) * | 2016-09-28 | 2018-04-05 | 富士通株式会社 | 情報処理装置およびプログラム |
CN111222832A (zh) * | 2018-11-23 | 2020-06-02 | 株式会社理光 | 定制工作流的***、方法,及可定制工作流的mfp |
US11074095B2 (en) | 2019-01-04 | 2021-07-27 | International Business Machines Corporation | Event-based virtual machine that hosts microservices for handling program faults |
US11379295B1 (en) * | 2019-05-15 | 2022-07-05 | Amazon Technologies, Inc. | Recovery protocols for system malfunctions in virtual computing environments |
US11249872B1 (en) * | 2020-06-26 | 2022-02-15 | Xilinx, Inc. | Governor circuit for system-on-chip |
US20230315561A1 (en) * | 2022-03-31 | 2023-10-05 | Google Llc | Memory Error Recovery Using Write Instruction Signaling |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030126516A1 (en) * | 2001-12-28 | 2003-07-03 | Komarla Eshwari P. | Scalable CPU error recorder |
US20070061634A1 (en) * | 2005-09-15 | 2007-03-15 | Suresh Marisetty | OS and firmware coordinated error handling using transparent firmware intercept and firmware services |
JP2008262538A (ja) * | 2007-01-30 | 2008-10-30 | Hewlett-Packard Development Co Lp | 入出力(i/o)エラーをハンドリングするための方法及びシステム |
US20110283037A1 (en) * | 2010-05-13 | 2011-11-17 | Hitachi, Ltd. | Information processing apparatus and data transfer method |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5193181A (en) * | 1990-10-05 | 1993-03-09 | Bull Hn Information Systems Inc. | Recovery method and apparatus for a pipelined processing unit of a multiprocessor system |
US20020184576A1 (en) * | 2001-03-29 | 2002-12-05 | International Business Machines Corporation | Method and apparatus for isolating failing hardware in a PCI recoverable error |
US6851006B2 (en) * | 2001-08-25 | 2005-02-01 | International Business Machines Corporation | Interruption handler-operating system dialog for operating system handling of hardware interruptions |
US7134052B2 (en) * | 2003-05-15 | 2006-11-07 | International Business Machines Corporation | Autonomic recovery from hardware errors in an input/output fabric |
US7287197B2 (en) | 2003-09-15 | 2007-10-23 | Intel Corporation | Vectoring an interrupt or exception upon resuming operation of a virtual machine |
US7328376B2 (en) * | 2003-10-31 | 2008-02-05 | Sun Microsystems, Inc. | Error reporting to diagnostic engines based on their diagnostic capabilities |
JP4218538B2 (ja) * | 2004-01-28 | 2009-02-04 | 日本電気株式会社 | コンピュータシステム、バスコントローラ及びそれらに用いるバス障害処理方法 |
US7478265B2 (en) * | 2004-10-14 | 2009-01-13 | Hewlett-Packard Development Company, L.P. | Error recovery for input/output operations |
US8028189B2 (en) | 2004-11-17 | 2011-09-27 | International Business Machines Corporation | Recoverable machine check handling |
US7594144B2 (en) | 2006-08-14 | 2009-09-22 | International Business Machines Corporation | Handling fatal computer hardware errors |
US7774638B1 (en) * | 2007-09-27 | 2010-08-10 | Unisys Corporation | Uncorrectable data error containment systems and methods |
US8510592B1 (en) * | 2009-09-15 | 2013-08-13 | Netapp, Inc. | PCI error resilience |
US8782461B2 (en) | 2010-09-24 | 2014-07-15 | Intel Corporation | Method and system of live error recovery |
TW201216165A (en) | 2010-10-13 | 2012-04-16 | Inventec Corp | System management interrup mechanism |
US9086965B2 (en) * | 2011-12-15 | 2015-07-21 | International Business Machines Corporation | PCI express error handling and recovery action controls |
-
2012
- 2012-06-06 KR KR1020147031321A patent/KR101679947B1/ko active IP Right Grant
- 2012-06-06 CN CN201280073141.5A patent/CN104704478B/zh not_active Expired - Fee Related
- 2012-06-06 WO PCT/US2012/041160 patent/WO2014209251A2/en active Application Filing
- 2012-06-06 AU AU2012398458A patent/AU2012398458B2/en not_active Ceased
- 2012-06-06 BR BR112014027707A patent/BR112014027707A2/pt not_active IP Right Cessation
- 2012-06-06 JP JP2015524229A patent/JP6032510B2/ja not_active Expired - Fee Related
- 2012-06-06 US US13/997,870 patent/US9411667B2/en active Active
- 2012-06-06 EP EP12891435.5A patent/EP2859459B1/en active Active
-
2013
- 2013-05-23 TW TW102118229A patent/TWI526821B/zh not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030126516A1 (en) * | 2001-12-28 | 2003-07-03 | Komarla Eshwari P. | Scalable CPU error recorder |
US20070061634A1 (en) * | 2005-09-15 | 2007-03-15 | Suresh Marisetty | OS and firmware coordinated error handling using transparent firmware intercept and firmware services |
JP2008262538A (ja) * | 2007-01-30 | 2008-10-30 | Hewlett-Packard Development Co Lp | 入出力(i/o)エラーをハンドリングするための方法及びシステム |
US20110283037A1 (en) * | 2010-05-13 | 2011-11-17 | Hitachi, Ltd. | Information processing apparatus and data transfer method |
Also Published As
Publication number | Publication date |
---|---|
TW201403307A (zh) | 2014-01-16 |
TWI526821B (zh) | 2016-03-21 |
AU2012398458A1 (en) | 2015-03-05 |
WO2014209251A3 (en) | 2015-02-26 |
KR101679947B1 (ko) | 2016-12-06 |
CN104704478A (zh) | 2015-06-10 |
US20130332781A1 (en) | 2013-12-12 |
AU2012398458B2 (en) | 2016-05-19 |
EP2859459B1 (en) | 2019-12-25 |
US9411667B2 (en) | 2016-08-09 |
JP6032510B2 (ja) | 2016-11-30 |
JP2015532738A (ja) | 2015-11-12 |
EP2859459A2 (en) | 2015-04-15 |
CN104704478B (zh) | 2018-10-19 |
WO2014209251A2 (en) | 2014-12-31 |
EP2859459A4 (en) | 2016-03-16 |
BR112014027707A2 (pt) | 2017-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101679947B1 (ko) | 입력/출력 에러-억제 이벤트 후의 복구 | |
US10445154B2 (en) | Firmware-related event notification | |
US9749448B2 (en) | Header parity error handling | |
US9026865B2 (en) | Software handling of hardware error handling in hypervisor-based systems | |
JP5602814B2 (ja) | 仮想アーキテクチャにおいて使用される装置、方法及びシステム | |
US20140229942A1 (en) | Isolated guest creation in a virtualized computing system | |
EP3123337B1 (en) | Multinode hubs for trusted computing | |
US20140019814A1 (en) | Error framework for a microprocesor and system | |
US20140282506A1 (en) | Encapsulation of an application for virtualization | |
US9229820B2 (en) | Information processing device with memory dump function, memory dump method, and recording medium | |
US11163659B2 (en) | Enhanced serial peripheral interface (eSPI) signaling for crash event notification | |
US10908987B1 (en) | Handling memory errors in computing systems | |
US10877921B2 (en) | Methods and apparatus to extend USB-C software support to non-USB-C devices | |
EP3940545B1 (en) | Determining a private connection between devices or functions of a serial bus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |