KR100612715B1 - 입/출력 패브릭 내의 하드웨어 에러로부터의 자율 복구 - Google Patents

입/출력 패브릭 내의 하드웨어 에러로부터의 자율 복구 Download PDF

Info

Publication number
KR100612715B1
KR100612715B1 KR1020040025747A KR20040025747A KR100612715B1 KR 100612715 B1 KR100612715 B1 KR 100612715B1 KR 1020040025747 A KR1020040025747 A KR 1020040025747A KR 20040025747 A KR20040025747 A KR 20040025747A KR 100612715 B1 KR100612715 B1 KR 100612715B1
Authority
KR
South Korea
Prior art keywords
input
output
fabric
error
resource
Prior art date
Application number
KR1020040025747A
Other languages
English (en)
Other versions
KR20040098520A (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 KR20040098520A publication Critical patent/KR20040098520A/ko
Application granted granted Critical
Publication of KR100612715B1 publication Critical patent/KR100612715B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F41WEAPONS
    • F41GWEAPON SIGHTS; AIMING
    • F41G1/00Sighting devices
    • F41G1/32Night sights, e.g. luminescent
    • F41G1/34Night sights, e.g. luminescent combined with light source, e.g. spot light
    • F41G1/35Night sights, e.g. luminescent combined with light source, e.g. spot light for illuminating the target, e.g. flash lights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error 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/0712Error 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error 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/0745Error 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
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F41WEAPONS
    • F41GWEAPON SIGHTS; AIMING
    • F41G11/00Details of sighting or aiming apparatus; Accessories
    • F41G11/001Means for mounting tubular or beam shaped sighting or aiming devices on firearms

Abstract

장치, 프로그램 제품 및 장치는, 컴퓨터 내의 프로세싱 요소에 복수의 말단 입/출력(IO) 자원을 결합하는데 사용되는 입/출력 패브릭으로부터의 입/출력 패브릭 요소 내에서 검출되는 에러들을 전달한다. 특히, 그러한 에러들은, 입/출력 패브릭 요소 내의 에러로부터의 복구와 관련된 입/출력 패브릭 요소에 의해 영향을 받은 말단 입/출력 자원에 전달된다. 그렇게 함으로써, 각 영향을 받은 입/출력 자원에 액세스하는데 사용되는 하나의 장치 드라이버 또는 다른 프로그램 코드는, 종종 각 영향을 받은 입/출력 자원에 대해 완료된 복구를 대기하는 입/출력 패브릭 요소 내의 에러로부터의 복구를 요청함이 없이, 그 관련된 입/출력 자원 내의 전달된 에러로부터 비동기적인 복구가 가능하다. 부가적으로, 하나의 입/출력 패브릭은, 복구 가능 및 복구 불가능 말단 입/출력 자원 모두를 지원하도록 동적으로 구성된다. 특히, 입/출력 패브릭 내의 입/출력 패브릭 요소는, 말단 입/출력 자원이 본래 복구 불가능이라는 검출에 응답하여, 그러한 입/출력 패브릭 요소 내에서 머신 체크 시그널링을 인에이블하도록 동적으로 구성된다. 그렇게 동적으로 구성된 입/출력 패브릭 요소는, 복구 불가능 자원과 복구 불가능 자원에 액세스하는 하나의 프로세서 사이에서 정의된 하드웨어 경로 내에 배치되도록 동적으로 구성된다.

Description

입/출력 패브릭 내의 하드웨어 에러로부터의 자율 복구{AUTONOMIC RECOVERY FROM HARDWARE ERRORS IN AN INPUT/OUTPUT FABRIC}
도 1은 본 발명에 상응하는 논리적으로 파티션된 컴퓨터 내의 주요 하드웨어 구성을 나타내는 블럭 다이어그램이다.
도 2는 도 1에서 설명된 것과 택일적인 논리적으로 파티션된 아키택처의 블럭 다이어그램이다.
도 3은 본 발명에 상응하는 자율 복구와 관련되어 사용될 수 있는 예시적인 입/출력 패브릭의 블럭 다이어그램이다.
도 4는 도 3의 입/출력 패브릭 내의 입/출력 패브릭 에러의 검출 및 복구를 설명하는 흐름도이다.
도 5는 복구 불가능 말단 입/출력 자원의 설치(installation) 이후의, 도 3의 입/출력 패브릭의 블럭 다이어그램이다.
도 6은 복구 불가능 말단 입/출력 자원의 설치에 응답한, 비-머신 체크(non-machine check) 및 머신 체크 모드 사이의 도 4의 입/출력 패브릭의 동적 스위칭을 설명하는 흐름도이다.
본 발명은 컴퓨터 및 컴퓨터 소프트웨어에 관한 것이고, 특히 컴퓨터에 결합된 하드웨어 자원에서의 장애 관리(managing failure)에 관한 것이다.
현대 사회에서, 컴퓨터에 대한 의존도가 점점 증가함에 따라, 컴퓨터 기술은 컴퓨터와 관계하여 계속하여 증가되는 신뢰성의 문제뿐만 아니라, 증가되는 수행 요구를 따라잡기 위해 진보되어 왔다. 특히 컴퓨터는, 중요한 프로세싱이 일정한 기반 하에서 실행되고, 어떠한 고장 시간(downtime)도 간단하게 받아들여질 수 없는 고난도 작업에서, 그리고 절대적으로 필요한(mission critical) 어플리케이션에서, 계속하여 사용되고 있다.
종종 작업이 증가함에 따라, 더 빠르고 더 복잡한 하드웨어 요소의 사용이 요구된다. 더 나아가, 다수의 어플리케이션에 있어서, 프로세서와, 저장장치, 네트워크 커넥션과 같은 주변 장치 등과 같은 복수의 하드웨어가, 시스템 전체 성능을 높이기 위해 병렬적으로 실행된다.
이렇게 더 복잡한 구성 요소를 사용하기 위해서, 이러한 구성 요소의 조작에 사용되는 소프트웨어는 종종, 구성 요소 사용의 효과적인 관리를 위해 더 정교하고 복잡해야 한다. 예컨대, 멀티스레드 운영 시스템과 커널이 개발되어 왔으며, 컴퓨터 프로그램이 복수의 "스레드(thread)"상에서 동시에 실행되도록 하여, 복수의 작업들이 실질적으로 동시에 수행될 수 있게 되었다. 예컨대, 전자상거래 컴퓨터 어플리케이션에 있어서, 상이한 스레드가 다른 고객에게 할당될 수 있고, 각 고객들의 특정한 전자상거래 활동이 분리된 스레드 안에서 처리될 수 있다.
멀티스레드 운영 시스템에 있어서의 하나의 논리적인 확장이란, 논리적 파티션(logical partition)의 개념으로서, 여기서 하나의 물리적인 컴퓨터는, 다양한 논리적인 파티션 사이에 할당된 물리적인 컴퓨터(예컨대, 프로세서, 메모리, 입/출력 장치) 내의 다양한 자원들과 함께, 실질적으로 복수의 그리고 독립적인 가상의 컴퓨터(논리적인 파티션으로 참조됨)와 같이 수행될 수 있다. 각 논리적인 파티션은 분리된 운영 시스템을 실행하고, 사용자와 논리적 파티션 상에서 실행되는 소프트웨어 어플리케이션의 관점에서, 완전히 독립된 컴퓨터로서 수행한다.
논리적 파티션닝에 관하여, 종종 하이퍼바이저(hypervisor) 또는 파티션 관리자(partition manager)로써 참조되는 공유 프로그램은, 논리적인 파티션을 관리하고, 다른 논리적인 파티션에 자원들을 할당하는 일을 용이하게 한다. 예컨대, 파티션 관리자는, 프로세서, 워크스테이션, 저장 장치, 메모리 공간, 네트워크 어댑터 등과 같은 자원들을, 분리된 물리적인 컴퓨터와 동일한 방법으로 각 논리적 파티션의 상대적으로 독립적인 운영을 지원하도록 다양한 파티션에 할당할 수 있다.
그러나, 상기의 컴퓨터 환경에서의 유효한 작업수행이 증가함에 따라, 오류의 가능성도 증가하게 되었다. 병렬적으로 작업들을 수행함으로써, 하나의 작업이, 수행되고 있는 다른 작업과 충돌할 가능성이 높아졌으며, 결과적으로, 손상된 데이터 또는 시스템 오류를 발생하게 되었다. 유사하게, 하드웨어 기반의 요소들은 항상 적어도 일정한 오류의 위험의 지배를 받게 되고, 이러한 위험은 종종 하드웨어 구성 요소의 복잡성과 함께 증가하며, 다수의 더 복잡한 하드웨어 요소의 사용으로 인해 구동시간 동안의 하드웨어 구성요소가 오류 또는 장애를 만날 가능성이 증가 하게 되었다.
결과적으로, 멀티스레드 운영 시스템 및 논리적 파티션닝 양자 모두의 개발과 함께, 현대 컴퓨터 설계에 있어서 중요한 개발 노력이 장애(fault) 극복, 높은 효율 및 자기-치유 성능을 구체화하는데 집중되고 있다.
개발 노력이 지향되고 있는 하나의 특정 분야는, 예컨대, 저장 장치, 네트워크 커넥션, 워크스테이션과, 컴퓨터의 중앙 처리 장치에 구성 요소를 연결하는데 사용되는 어댑터, 제어기와 다른 인터커넥션 하드웨어와 같은 컴퓨터에 의해 사용되는 주변 하드웨어 요소와 관련된 고장을 관리하는 것이다. 아래에서 입/출력(IO) 자원(IO resource)으로 참조될 주변 요소들은 일반적으로, "패브릭(fabric)"을 형성하는 하나 또는 이상의 매개체로서의 인터커넥션 하드웨어 장치 요소를 통해 컴퓨터와 결합하며, 이 패브릭을 통해 중앙 처리 장치와 입/출력 간의 통신이 전달된다.
데스크탑 컴퓨터, 랩탑 컴퓨터 등과 같은 낮은 수행도의 컴퓨터 설계에 있어서, 이 설계에 사용되는 입/출력 패브릭은 상대적으로 단순한 설계만을 요구하게 되는데, 예컨대 IDE(Integrated Drive Electronic), PCI(Peripheral Component Interconnect) 또는 USB(Universal Serial Bus)와 같은 몇몇의 인터커넥션 기술을 지원하는 입/출력 칩을 사용한다. 한편으로, 높은 수행도의 컴퓨터 설계에 있어서, 이 설계에 대한 모든 필요한 통신 요구를 처리하기 위해 복잡한 인터커넥션 하드웨어 장치의 구성이 요구되므로, 입/출력에 대한 요구가 더 커질 수 있다. 일부의 예에서, 통신에 대한 필요성은, 컴퓨터의 중앙 처리 장치가 내장된 인클로저(enclosure)에 분리되고 결합된, 하나 또는 이상의 부가적인 인클로저의 사용을 요구하기에 충분히 높을 수 있다.
종종, 더 복잡한 설계에 있어서, 입/출력 어댑터와 같은 주변 요소들은, 컴퓨터의 주 인클로저 또는 보조 인클로저의 하나 또는 양쪽에 어레이된 "슬롯"을 사용하는 입/출력 패브릭에 장착되고 결합된다. 그러나 다른 요소들은 케이블과, 다른 종류의 커넥터를 통하는 것과 같은 다른 방법으로 입/출력 패브릭에 장착되거나 결합되며, 이러한 다른 종류의 커넥션은 종종 편의를 위해, "슬롯"이라고 참조된다. 그러므로, 사용되는 커넥션의 종류에도 불구하고, 입/출력 슬롯은 입/출력 패브릭를 통해 컴퓨터와 통신하는 입/출력 자원을 위한 연결 지점을 의미한다. 일부의 예에서, "입/출력 슬롯"이라는 용어는 또한 입/출력 패브릭의 특정한 연결 지점에 장착된 실제의 주변 하드웨어 구성 요소로 참조되기 위해 사용되며, 이점에 관하여, 결합된 입/출력 슬롯 또는 입/출력 자원은 또한 말단 입/출력 자원(endpoint IO resource)이라고 참조된다.
입/출력 패브릭을 통해 컴퓨터에 결합되는 말단 입/출력 자원을 관리하는 것은 종종, 입/출력 자원에 액세스하는 컴퓨터 내의 다양한 레벨의 소프트웨어 사이의 상대적인 독립성뿐만 아니라, 복수의 말단 입/출력 자원과 연결되는 복수의 작업의 현재 수행을 지원하는 입/출력 패브릭의 일반적인 특성에 기인한 문제점을 지니고 있다. 입/출력 패브릭 자체 내의 구성 요소에서 발생되는 고장뿐만 아니라, 말단 입/출력 자원에서 발생하는 고장이 시스템 내의 다른 말단 입/출력 자원에 액세스하는 성능에 중요한 영향을 줄 수 있다. 더 나아가, 전체 시스템의 유효성을 유지하는 개별적인 구성 요소 내의 고장과 같은 악영향을 감소시키기 위한 목표로 인해, 이러한 고장을 극복하기 위해 고장을 유리시키고 시스템을 동적으로 재구성하는 지향하는 중대한 노력이 있어 왔다.
논리적으로 파티션된 컴퓨터에 있어서, 예컨대, 입/출력 슬롯은 개별적인 논리적 파티션에 할당될 수 있으며, 각 논리적인 파티션의 장치 드라이버는 그 파티션에 할당된 각 입/출력 슬롯에서 입/출력 어댑터를 제어할 수 있다. 이러한 입/출력 슬롯은 일반적으로 공통 입/출력 패브릭을 통해 전체 컴퓨터 및 프로세서/메모리 조합에 연결되며, 이 공통 입/출력 패브릭은, 그 패브릭의 공통 인터커넥션 요소를 통해 연결되는 슬롯을 구비하는 모든 파티션에 의해 효과적으로 공유된다.
일부의 논리적으로 파티션된 시스템에 있어서, 입/출력 패브릭은 케이블 버스를 통해, 외부 입/출력 인클로저에 프로세서/메모리를 연결시키는 브릿지 패브릭 요소(Bridge fabric element)와, 이 케이블 버스를 복수의 입/출력 슬롯의 구비한 입/출력 버스에 연결시키는 하나 또는 이상의 부가적인 브릿지 요소를 포함할 수 있다. 그러한 케이블 버스의 구현은, 프로세스/메모리 조합과 함께 각 외부 입/출력 인클로저에 배치되는 원격 입/출력(Remote Input/Output, RIO) 버스를 인터페이스하는데 사용되는 원격 입/출력 허브로써 언급되는 프로세서 브릿지와 함께 원격 입/출력 버스를 이루며, 원격 입/출력 브릿지 요소는 복수의 PCI 호스트 브릿지(PCI Host Bridge, PHB)에 케이블 버스를 연결시키는 각 외부 입/출력 인클로저 상에 배치되고, 플러그된 PCI 입/출력 어댑터 카드가 연결되는 개별적인 입/출력 슬롯을 생성하는 복수의 PCI-PCI 브릿지 각각에 연결된다.
그러한 시스템에 있어서, 입/출력 패브릭 하드웨어 중 하나의 요소가 에러를 검출한 경우, 그 하드웨어 요소는 일반적으로, 프로세서/메모리 조합과 잔존 입/출력 패브릭 및 입/출력 슬롯 요소 사이에서 어느 방향으로의 데이터 운반의 계속을 억제하는 에러 상태에 들어간다. 이 에러 상태에서의 데이터 운반의 억제란 정확하게는, 그 에러 상태의 구성 요소가 모든 프로세서 저장 및 어댑터 DMA들을 버리고, 올-원(all-ones) 비트 단위의 데이터(bitwise data)를 모든 프로세서 로드로 반환하는 것으로 정의된다.
이것은 많은 시스템, 특히 장치 드라이버가 입/출력 어댑터와 통신하기 위해 메모리-맵핑된 입/출력(Memory-Mapped IO, MMIO)을 사용하는 PCI-호환 입/출력 버스와 어댑터를 채용하는 시스템에서 공통된다.
이로써 파티션 운영 시스템에 설치된 장치 드라이버는, 어댑터를, 마치 프로세서/메모리 버스에 논리적으로 직접 연결되어, 단지 특정한 메모리 어드레스 범위를 차지하는 시스템 메모리의 확장인 것처럼 취급할 수 있다. 장치 드라이버는 내부 어댑터의 설비에 직접적으로 관련된 프로세서 로드(load) 또는 저장(store) 명령을 목표로 하는 "메모리" 어드레스를 사용하는 어댑터와 통신한다. 그러한 모델에 있어서, 장치드라이버는 입/출력 패브릭 요소의 구성 및 배열을 인지하지 못하고, 메모리-맵핑된 로드(load) 또는 저장(store)에 응답하여, 장치 드라이버가 단순히 메모리 영역에 액세스하는 것처럼 동작하는 입/출력 패브릭 및 입/출력 어댑터에 의존한다.
그러한 시스템에 있어서, 일반적으로 장치 드라이버는 입/출력 패브릭에 관계된 에러를 검출하는 2 개의 방법 중 하나에 의존한다. 제1 방법에 있어서, MMIO 로드가 에러 상태에서 패브릭 요소를 만난 경우에, 요청 프로세서에 하나의 머신 체크 조건(machine check condition)을 신호로 알린다. 머신 체크(machine check)는 일반적으로, 액세스 요청에 의한 지위 신호(status signal)의 반환 또는 인터럽트의 유발을 지시하는 것이고, 그 결과 일반적으로 실행을 머신 체크 인터럽트 처리기로 전환하고, 이 인터럽트는 거의 항상 운영 시스템의 종료를 가져오며, 임의의 어플리케이션은 이전에 발생한 저장이 성공적으로 완료되었음을 확인할 수 없게 되는 결과로써, 데이터 보전(data integrity) 문제로 인해 실행을 계속하게 된다. 이러한 경우에, 장치 드라이버와 운영 시스템은 일반적으로 데이터 보전의 손실 없이 이 에러로부터 복구될 수 없도록 설계된다. 결과적으로, 이 에러에 대한 공통 응답은 전체 논리적인 파티션[또는 논-파티션(non-partitioned) 시스템 내의 시스템]의 실행을 종료하는 것이다.
종래 기술에 의한 제2 방법에 있어서, 에러 상태에 있는 경우, 입/출력 패브릭 및 입/출력 어댑터는 특정한 세트의 데이터를 반환함으로써 메모리-맵핑된 로드(memory-mapped loads)에 응답하도록 구성되며, 이 데이터 세트는 장치 드라이버에 의해 잠재적으로 에러를 의미하는 것으로 인식될 수 있다. 예컨대, 하나의 데이터 공통 세트는 올-원(all-ones) 비트 단위의 데이터로써 참조되며, 메모리-맵핑된 로드에 응답하여 반환되는 데이터의 각 비트는 one으로 설정된다. 이 경우에 있어서, 장치 드라이버는 하나의 올-원(all-ones) 패턴에 대한 메모리-맵핑된 로드 응답 데이터를 검사하도록 설계되며, 그러한 경우에, 플랫폼 하드웨어의 임의의 요소가 이 결과를 발생하는 에러 상태에 들어갔는지 여부를 결정하도록 운영 시스템 서비스를 호출한다. 다수의 예에 있어서, 이 에러 상태는 논리적인 파티션 또는 운영 시스템의 실행을 종료하지 않고, 비-머신 체크로부터 복구될 수 있다.
머신 체크-기반 기술은, 하드웨어 에러로부터의 동적 복구에 있어 많은 진보에 선행하였으며, 그와 같이, 신호화된 머신 체크를 요청하는 장치 드라이버 및 입/출력 자원은 종종 본래 복구 불가능(non-recoverable)한 것이다. 상기한 후자의 기술은 그러나, 종종, 적합한 복구 프로토콜과 연결되어 사용되는 경우에, 머신 체크의 발생을 방지하고, 더 큰 복구성을 제공하며, 그 결과로써, 이 기술에 의존하는 장치 드라이버 및 입/출력 자원은 본래 더 일반적으로 복구 가능(recoverable)하다.
어느 접근을 사용하여, 입/출력 패브릭 에러로부터 복구하는 것, 예컨대 에러 분리 데이터(error isolation data)를 포획하는 것, 영향을 받은 하드웨어를 재설정(resetting)하는 것 및 정상적인 입/출력 조작을 재개하는 것(resuming)은 각 영향을 받은 장치 드라이버 및 입/출력 어댑터가 신뢰성있게 에러 조건을 검출하는 것을 보장하는 것과 같은 방법으로 동기화되어야 하며, 이 조건을 검출할 때까지, 장치 드라이버와 그 어댑터 사이의 입/출력는 패브릭 에러 상태가 지속되는 것처럼 계속되도록 요청된다. 그러나, 또한 모든 영향을 받은 장치 드라이버가 이 에러를 검출할 때까지는, 플랫폼 하드웨어 및 파티션 관리자에 의해 에러가 검출되는 지점으로부터의 시간은 예상될 수 없으며, 과도하게 길 수도 있고, 이 경우 입/출력 패브릭 복구를 매우 복잡하게 하거나 지연시킬 수도 있다. 극단적인 경우에 있어서, 이 에러의 순간에 활성화되지 않을 수 있는 CD 롬 드라이브의 드라이버와 같은, 장치 드라이버는 극도로 장 기간동안(며칠, 몇 주 또는 몇 달 동안일 수도 있음) 어댑터로부터 MMIO를 수행하지 않을 수 있으며, 그것은 얼마나 오랫동안 장치 드라이버가 활성화 상태에 있는가에 달려 있지만, 얼마나 오래 그 관련 입/출력 어댑터를 사용하고 있는지에 달려있지 않다.
한편으로는, 모든 장치 드라이버가 입/출력 패브릭 에러로부터의 복구를 완료하기 전에 에러 조건을 독립적으로 검출하는 것을 대기하는 것은, 종종 지나친 지연과 예상할 수 없는 결과 그리고 하나의 논리적인 파티션의 장치 드라이버가 다른 논리적 파티션이 복구되는 것을 방해할 가능성으로 이르게 한다. 다른 한편으로, 특히 입/출력 패브릭의 복구가 완료되도록 하는 입/출력 패브릭 에러의 장치 드라이버에 경고를 발하는 것이, 특히 논리적으로 파티션된 시스템에 있어서, 문제될 수 있으며, 이것은, 더 오래된 장치 드라이버의 비호환성과, 복잡한 방법으로 장치 드라이버 및 커널을 변화시키고, 재 설계하거나, 강화할 필요성에 기인한 것이다.
따라서, 종래 기술에 있어서, 영향을 받은 입/출력 자원에 대한 장치 드라이버가 입/출력 패브릭의 에러를 검출하고, 이 에러로부터 복구할 수 있는 것을 보장하는 더 빠르고, 더 자율적이며 더 효율적인 방법에 대한 상당한 필요성이 존재하며, 특히 논리적으로 파티션된 컴퓨터 등에 있어서, 또는 존재하는 장치 드라이버의 사용을 용이하게 하는 것에 있어서 더 그러하다.
특히 논리적으로 파티션된 시스템에 있어서, 수행되는 머신 체크를 필요로 하는 복구 불가능(non-recoverable) 장치 드라이버와 관련된 또 다른 문제란, 입/출력 패브릭을 초기화하는 것은, 머신 체크에 공통적인 하나의 세트의 패브릭 요소를 구비하는 모든 파티션을 드러낸다는 점에 있다. 이것은 파티션된 시스템에 있어서 매우 바람직하지 못한 것인데, 이 시스템에 있어서, 하나의 파티션에 의해 사용되는 입/출력 어댑터의 고장으로 인한 에러는 그 패브릭의 공통 요소를 공유하는 복수의 다른 파티션의 머신 체크를 초기화하는 종료로 귀착된다.
다수의 컴퓨터 환경에 있어서, 시스템 유효성에 대한 영향이 매우 감소됨으로 인해, 복구 불가능한 장치 드라이버 및 입/출력 자원은 교체되었거나, 교체될 것이다. 결과적으로, 가능할 때마다 오직 복구 가능한 장치 드라이버 및 입/출력 자원만을 사용하는 것이 종종 바람직하다. 그러나, 일부의 환경에 있어서, 더 오래된 유산(legacy) 입/출력 자원 및 장치 드라이버가 여전히 사용될 수 있으며, 더 진보된 복구 프로토콜을 지원하지 못할 수도 있다. 더 나아가, 복구 불가능 및 복구 가능 장치 드라이버는 일부의 입/출력 자원에 대해 유효할 수도 있다.
결과적으로, 실제에 있어서, 어느 설치된 입/출력 자원이 복구 가능 장치 드라이버인지, 또는 특별한 자원에 대해 그 장치 드라이버의 어느 버전이 머신 체크를 요청할 수 있는지를 식별하는 것은 매우 어렵다. 부가적으로, 고객들은 논리적인 파티션 입/출력 정렬을 재구성하거나, 장치 드라이버를 업데이트하거나, 새로운 입/출력 어댑터를 추가하기 때문에, 균일하게 하나의 종류 또는 그 밖의 종류였던 하나의 파티션이 재구성되어, 이 파티션이 장치 드라이버의 양쪽 종류의 혼합물을 획득하거나, 균일하게 다른 종류가 된다.
결과적으로, 종래 기술에 있어서, 혼합된 환경에 있어서 입/출력 자원 및 장치 드라이버의 복구 가능성을 검출하는 방법에 대해 중요한 필요성이 존재하며, 입/출력 에러를 신뢰성 있게 관리하는 입/출력 패브릭을 동적으로 구성하는 것은, 가능할 때마다 머신 체크를 사용하는 것을 최소화할 수 있다.
본 발명은 컴퓨터 내의 프로세싱 요소에 복수의 말단 입/출력 자원을 결합하는데 사용되는 입/출력 패브릭의 에러로부터, 복수의 말단 입/출력 자원의 복구를 동기화하는 방법을 하나의 측면에서 제공함으로써, 종래 기술과 관련된 이러한 또는 다른 문제들을 제기한다. 특히, 본 발명에 상응하는 실시예는, 입/출력 패브릭 요소의 에러로부터 복구되는 것과 관련되는, 그러나 입/출력 패브릭 요소에 의해 영향을 받은 말단 입/출력 자원에, 입/출력 패브릭 내 특정한 입/출력 패브릭 요소 내에서 검출된 에러를 효과적으로 전달할 수 있다. 그렇게 함으로써, 장치 드라이버 또는 각 영향을 받은 입/출력 자원에 액세스하는데 사용되는 다른 프로그램 코드는 관련된 입/출력 자원의 전달된 에러로부터 비동기식으로 복구될 수 있으며, 종종 이 영향을 받은 각각의 입/출력 자원에 대해 완료된 복구를 대기하는 입/출력 패브릭 에러로부터 복구를 요청할 필요도 없다.
그러므로, 본 발명의 일 면에 상응하여, 복수의 말단 입/출력 자원으로의 액세스를 제공하는 입/출력 패브릭 요소의 에러는, 입/출력 패브릭 요소의 검출된 에러에 응답하여, 복수의 말단 입/출력 자원 각각에 대해 에러 상태를 확립하고(establishing an error state), 입/출력 패브릭 요소 내의 이 에러로부터 복구됨으로써 처리된다.
본 발명은 또다른 측면에서, 복구 가능 및 복구 불가능 말단 입/출력 자원 모두를 지원하는 입/출력 패브릭을 동적으로 구성하는 방법을 제공함으로써 부가적인 문제를 제기한다. 특히, 입/출력 패브릭 내의 입/출력 패브릭 요소는, 말단 입/출력 자원이 본래 복구 불가능하다는 검출에 응답하여, 그러한 입/출력 패브릭 요소 내에서 머신 체크 시그널링이 가능하도록 동적으로 구성될 수 있다. 이렇게 동적으로 구성된 입/출력 패브릭 요소는 복구 불가능한 자원 및 이 복구 불가능 자원에 액세스하는 프로세서 사이에 정의된 하드웨어 경로 내에 배치된다.
그러므로, 본 발명의 또 다른 측면에 상응하여, 복수의 말단 입/출력 자원에 적어도 하나의 프로세서에 대한 액세스를 제공하는 복수의 입/출력 패브릭 요소로 구성된 입/출력 패브릭은, 복수의 말단 입/출력 자원 중의 제1 말단 입/출력 자원이 복구 불가능한 자원임을 검출함으로써 동적으로 재구성될 수 있으며, 이에 응답하여, 상기 프로세서 및 제1 말단 입/출력 자원 사이의 하드웨어 경로에서 정의된 각 입/출력 패브릭 요소에서 머신 체크 시그널링을 동적으로 인에이블한다.
본 발명의 특징짓는 이러한 그리고 다른 장점 및 특징은 첨부된 청구범위에 배치되어 있으며, 더 많은 부분을 형성할 것이다. 그러나, 본 발명 및 그 실시를 위한 장점 및 목적의 더 나은 이해를 위해, 도면 및 상세한 설명 상에 참조가 이루어질 것이며, 여기서 본 발명의 예시적인 실시예들이 기술될 것이다.
이하에서 논의될 실시예들은, 예컨대 네트워크 커넥션, 저장 장치, 프린터, 워크스테이션, 및/또는 어댑터 및/또는 제어기 등의 주변 하드웨어 구성 요소와 같은 컴퓨터 내의 입/출력 자원들의 관리와 관계되는 자율 복구 기술을 사용한다.
일 측면에 있어서, 이하에서 논의될 실시예들은 에러에 의해 영향을 받은 개별적인 입/출력 자원으로, 입/출력 패브릭 내의 입/출력 패브릭 요소에서 검출된 에러들을 전달하는 성능을 지원한다. 그렇게 함으로써, 그 에러가 입/출력 자원을 사용하는 파티션 또는 운영 시스템 내에 독립적으로 어드레스될 때까지, 영향을 받은 각 입출력 자원 내의 에러 상태를 지속하는 경우에, 에러들이 입/출력 패브릭 내에서 동적으로 수정될 수 있다. 그렇게 함으로써, 자원과 패브릭 에러 복구의 동기화는 매우 단순화되며, 특히 복수의 논리적인 파티션이 특정한 입/출력 패브릭 도메인(IO fabric domain)을 공유할 수 있는 논리적으로 파티션된 환경에 대해서는 더욱 그러하다.
또 다른 측면에 있어서, 이하에서 논의될 실시예들은 동일한 패브릭 내의 복구 가능 및 복구 불가능 입/출력 자원 모두를 수용하는 성능을 지원한다. 복구 가능 및 복구 불가능 입/출력 자원 모두의 수용은 하나 또는 이상의 입/출력 패브릭 요소를 선택적으로 스위칭함으로써 설명된 실시예 내에서 관리되며, 여기서 패브릭 요소는, 입/출력 자원이 복구 불가능으로 결정될 때마다 머신 체크가 가능하도록, 컴퓨터 프로세서와 입/출력 자원 간의 경로에 배치되는 것이다.
이러한 정황에 있어, 복구 가능 입/출력 자원은 동적으로 복구되도록 구성된 자원으로서, 환언하면, 컴퓨터를 운영하는 동안 실행되는 복구 프로토콜에 응답하는 정상적인 시스템 운영 기간 동안의 자원을 말한다. 일반적으로, 입/출력 자원은, 논리적 파티션의 운영 시스템 내에 상주하는 장치 드라이버 또는 논리적으로 파티션되지 않은 컴퓨터의 운영 시스템이 그 자원에 대한 복구 프로토콜을 지원하는 경우에, 복구 가능하다. 입/출력 자원의 복구성은 또한 입/출력 패브릭 내의 다른 소프트웨어 및/또는 하드웨어 특성뿐만 아니라, 다른 운영 시스템 또는 커널 서비스 내에서 제공되는 지원에 기반할 수 있다. 또한, 일반적으로 입/출력 자원의 복구성은 자원을 관리하는데 사용되는 장치 드라이버 내의 복구 프로토콜에 대한 지원에 적어도 부분적으로 의존하기 때문에, 적합한 장치 드라이버와 함께 사용되는 경우에 복구 가능한 입/출력 자원이라도, 복구 프로토콜을 지원하지 않는 더 오래된 장치 드라이버가 자원을 관리하는데 사용되는 상황에서는 복구 불가능일 수 있다.
대조적으로, 복구 불가능 입/출력 자원은 동적인 복구를 지원하지 않는다. 많은 정황에 있어서, 입/출력 자원의 복구 불가능은, 프로세서 머신 체크가 에러에 응답하여 발생되고, 일반적으로 그 결과 궁극적으로 전체 운영 시스템이 종료되고, 어플리케이션들이 실행되어 복구를 위해 시스템이 재시작되는 것을 요청한다. 논리적으로 파티션된 컴퓨터에 있어서, 머신 체크는 전체 시스템보다는 논리적 파티션의 종료와 재시작만으로 귀착되는 것이 목표이다.
아래에서 더 명확해지는 바와 같이, 본 발명에 상응하는 실시예들은 예컨대, 브릿지 장치, 허브 장치, 스위치, 커넥터, 호스트 장치, 슬레이브 장치, 제어 장치, 케이블, 모뎀, 시리얼라이저/디시리얼라이저(serializer/deserializer), 광전기적(optoelectronic) 송수신기 등을 포함하는 수많은 종류와 수의 입/출력 패브릭 요소를 포함하는 입/출력 패브릭을 사용할 수 있다.
다른 이점 중에서도, 여기에서 묘사되는 기술은 논리적으로 파티션된 컴퓨터 내에서의 슬롯 또는 자원 레벨 파티션닝의 구현을 용이하게 하며, 이로써 개별적인 입/출력 자원들 또는 슬롯들은 논리적으로 파티션된 컴퓨터 내에 상주하는 특정한 논리적 파티션에 제한될 수 있다. 그러나, 여기서 묘사되는 기술이, 예컨대 버스 또는 인클로저 레벨과 같은 자원 파티션닝의 다른 입도(granularity)와 함께 뿐만 아니라, 논리적으로 파티션되지 않은 환경에서도 사용될 수 있다는 것이 이해될 것이다.
도면에 대해서, 여러 도면을 통해 동일한 번호는 동일한 부분을 의미하는데, 도 1은 본 발명에 상응하는 논리적으로 파티션된 컴퓨터(10)의 주요 하드웨어 요소를 설명한다. 일반적으로 컴퓨터(10)는 예컨대, 네트워크 서버, 미니(midrange) 컴퓨터, 메인프레임 컴퓨터(예컨대, IBM eServer 컴퓨터) 등과 같은 다수의 임의의 멀티-유저 컴퓨터를 나타낸다. 그러나, 본 발명은 논리적으로 파티션되지 않은 컴퓨터를 포함하는 다른 멀티-유저 컴퓨터뿐만 아니라, 다른 컴퓨터와 데이터 프로세싱 시스템[예컨대, 워크스테이션, 데스크탑 컴퓨터, 휴대용 컴퓨터 등과 같은 싱글-유저 컴퓨터와, 다른 프로그램 가능한 전자 장치(예컨대, 내장 집적 제어기 등)]에서도 구현될 수 있다는 것이 이해될 것이다.
일반적으로 컴퓨터(10)는 버스(16)를 통해 메모리(14)에 결합되는 하나 또는 이상의 프로세서(12)를 포함한다. 각 프로세서(12)는 단일 스레드 프로세서 또는 멀티스레드 프로세서[프로세서(12a)와 같이]로서 구현될 수 있으며, 복수의 하드웨어 스레드(18)로 통합되어 나타나 있다. 대부분에 있어서, 멀티스레드 프로세서(12a)의 각 하드웨어 스레드(18)는 컴퓨터 내에 상주하는 소프트웨어에 의해 독립적인 프로세서와 같이 취급된다.
부가적으로, 도 1에서도 설명된 바와 같이, 하나 또는 이상의 프로세서(12)(예컨대, 프로세서 12b)는 서비스 프로세서로서 구현될 수 있으며, 이 프로세서는 시스템 초기 프로그램 로드(initial program loads, IPL's)를 관리하는 특별한 펌웨어 코드를 구동하고, 시스템 하드웨어를 모니터하고, 진단하고, 구성하는데 사용되는 것이다. 본 발명은 특정한 구현으로 제한되지 않지만, 일반적으로, 컴퓨터(10)는 하나의 서비스 프로세서와 복수의 시스템 프로세서를 포함하며, 이들은 운영 시스템 및 컴퓨터에 상주하는 어플리케이션을 실행하도록 사용된다. 일부의 실시예에 있어서, 서비스 프로세서는 버스(16)를 통하는 것과 다른 방법으로 컴퓨터 내의 다양한 다른 하드웨어 요소에 결합될 수 있다.
메모리(14)는 하나 또는 이상의 데이터 레벨, 명령 및/또는 조합 캐시(종래 기술에서 잘 알려진 것처럼 개별적인 프로세서 또는 복수의 프로세서를 위해 사용되는 임의의 캐시)뿐만 아니라, 예컨대 DRAM-기반의 주 저장 장치 같은 하나 또는 이상의 메모리 장치를 포함한다. 더 나아가, 메모리(14)는 예컨대, 하나 또는 이상의 네트워크 어댑터(22)(컴퓨터와 네트워크(24)를 결속시키기 위함), 하나 또는 이상의 저장 제어기(26)(컴퓨터를 하나 또는 이상의 저장 장치(28)에 결속시키기 위함)와, 하나 또는 이상의 워크스테이션(30)[복수의 워크스테이션 어댑터를 통해 하나 또는 이상의 터미널 또는 워크스테이션(32)을 결속시키기 위함]과 같은 입/출력 패브릭(20)을 통해 다수의 종류의 외부 장치에 결합된다.
도 1은 또한, 컴퓨터(10)의 논리적으로 파티션된 컴퓨팅 환경을 구현하는데 사용되는 주요 소프트웨어 요소와 자원들을 더 자세히 설명하고 있으며, 이 컴퓨터(10)는 파티션 관리자 또는 하이퍼바이저(hypervisor 36)에 의해 관리되는 복수의 논리적 파티션(34)을 포함한다. 다수의 논리적 파티션은 종래 기술에 의해 공지된 바와 같이 지원되며, 컴퓨터 내의 임의의 시간에 상주하는 논리적 파티션의 수는, 파티션이 컴퓨터에 부가 또는 제거됨에 따라 동적으로 변할 수 있다.
설명된 IBM eServer-기반의 구현에 있어서, 파티션 관리자(36)는 프로그램 코드의 2개의 층으로 구성된다. 첫 번째[여기서 논리적으로 디스패치가 불가능한 부분(38)으로 참조됨]는 컴퓨터(10)의 펌웨어 내 또는 라이센스 내부 코드(Licensed Internal Code, LIC) 내에서 구현되며, 이는 예컨대, 운영 시스템과 같은 더 높은 층을 분리시키는 동안, 다양한 하드웨어 요소로 낮은 레벨의 인터페이스를 제공하는데 사용된다. 펌웨어는 또한 서비스 프로세서(12b)와 같은 서비스 프로세서와 통신한다. 디스패치가 불가능한 부분(38)은 컴퓨터(10)를 위해, 페이지 테이블 관리(page table management) 등과 같은 다수의 저 레벨 파티션 관리를 제공한다. 디스패치가 불가능한 부분(undispatchable portion, 38)은 작업(task)의 개념을 가지고 있지 않으며, 소프트웨어의 더 높은 층으로부터의 함수 호출 또는 하드웨어로부터의 인터럽트를 통해 주로 액세스될 수 있다.
파티션 관리자(36) 내 프로그램 코드의 두 번째 층은 여기서 디스패치가 가능한 부분(dispatchable portion, 40)으로 참조된다. 작업의 개념이 없고, 메모리 재배치 해제(relocation off)로 구동되며, 소프트웨어의 더 높은 층으로부터의 수퍼바이저(supervisor)의 함수 호출을 통해 액세스가 가능한 디스패치가 불가능한 부분(38)과는 대조적으로, 디스패치가 가능한 부분(40)은 작업(임의의 운영 시스템과 같음)의 개념을 가지고 있으며, 메모리 재배치 설정(relocation on)으로 구동된다. 디스패치가 가능한 부분은 일반적으로, 사용자로부터 숨겨지는 경우를 제외하고는, 파티션과 동일한 방법으로 실행된다. 디스패치가 가능한 부분은 일반적으로, 파티션의 생성 및 삭제, 동시에 발생하는 하드웨어 관리와, 프로세서, 메모리 와 다른 하드웨어 자원의 다양한 파티션(34)으로의 할당 등과 같은 더 높은 레벨의 파티션 관리 조작을 관리한다.
각 논리적 파티션(34)은 일반적으로 정적 및 또는 동적으로 할당된 컴퓨터(10) 내의 유효한 자원의 부분이다. 예컨대, 각 논리적 파티션은, 유효한 메모리 공간의 부분뿐만 아니라 하나 또는 이상의 프로세서(12) 및/또는 하나 또는 이상의 하드웨어 스레드(18)에 할당될 수 있다. 논리적 파티션은, 프로세서와 같은 특정한 하드웨어 자원을 공유할 수 있으며, 소정의 프로세서가 하나 이상의 논리적 파티션에 의해 사용될 수 있다. 택일적으로, 하드웨어 자원은 한번에 오직 하나의 논리적 파티션에 할당될 수 있다.
매스 저장 장치(mass storage), 백업 저장 장치, 사용자 입력, 네트워크 커넥션, 디스플레이 장치, 및 I/O 어댑터와 같은 부가적인 자원이 일반적으로 종래 기술에서 공지된 방법으로 하나 또는 이상의 논리적 파티션에 할당된다. 자원들은 예컨대, 버스-바이-버스(bus-by-bus) 기반 또는 자원-바이-자원(resource-by-resource) 기반과 같은 다수의 방법으로, 동일한 버스 상에서 자원을 공유하는 복수의 논리적 파티션으로서 할당될 수 있다. 일부의 자원은 한번에 복수의 논리적 파티션으로 할당될 수도 있다. 부가적으로, 일부의 자원은, 예컨대 가상 로컬 영역 네트워크에서 사용되는 가상 네트워크 어댑터와 같이 본래 "가상적으로" 사용될 수 있다.
각 논리적 파티션(34)은 파티션되지 않은 컴퓨터의 운영 시스템과 동일한 방법으로 논리적 파티션의 주요 조작을 제어하는 하나의 운영 시스템(42)을 사용한다. 예컨대, 각 운영 시스템(42)은 AIX, 유닉스, 리눅스 등과 같은 다른 운영 시스템뿐만 아니라, IBM에서 유효한 OS/400 운영 시스템을 사용하여 구현될 수 있다.
각 논리적 파티션(34)은 개별적 또는 독립적인 메모리 공간에서 실행되므로, 각 논리적 파티션은 각 논리적 파티션에서 실행되는 각 사용자 어플리케이션(user app, 44)의 관점에서, 독립적이고 파티션되지 않은 컴퓨터와 동일한 방법으로 동작 한다. 이와 같이, 일반적으로 사용자 어플리케이션은 파티션된 환경에서의 사용을 위한 임의의 특별한 구성을 필요로 한다.
분리된 가상의 컴퓨터처럼 논리적 파티션(34)의 주어진 특성에 의하면, 논리적 파티션이 분리된 물리적 머신 상에 있는 것처럼, 논리적 파티션들이 서로 통신하는 것이 가능하도록 인터-파티션(inter-partition) 통신을 지원하는 것이 바람직하다. 이와 같이, 일부의 구현에 있어서, 이더넷 프로토콜(Ethernet protocol)과 같은 네트워킹 프로토콜을 통해 논리적 파티션(34) 간의 통신을 허용하는 디스패치가 불가능한 부분(38) 내에서 가상 로컬 영역 네트워크(LAN)를 지원하는 것이 바람직할 수도 있다. 파티션 간의 통신을 지원하는 다른 방법이 본 발명에 상응하여 또한 지원될 수 있다.
본 발명에 상응하여 다른 논리적으로 파티션된 환경이 사용될 수 있음이 이해될 수 있을 것이다. 예컨대, 도 2에서 설명된 바와 같이, 메모리(14')는 대신, 도 1의 부분(38)과 동일한 방법으로 구성된 디스패치가 불가능한 부분(38')을 구비한[그러나, 또한 운영 시스템(42)과 하나 또는 이상의 사용자 어플리케이션(44)이 상주하는 프라이머리 파티션(33')에 통합되는 디스패치가 가능한 부분(40')을 구비함] 파티션 관리자(36')에 상주한다.
일반적으로, 본 발명의 실시예를 구현하기 위해 실행되는 루틴, 즉 운영 시스템 또는 특별한 어플리케이션, 구성 프로그램, 오브젝트, 모듈 또는 순차적인 명령, 또는 그의 서브세트의 부분으로서 구현되었는지 여부가, 여기서 "컴퓨터 프로그램 코드" 또는 간단히 "프로그램 코드"로써 참조될 것이다. 프로그램 코드는 일 반적으로, 다양한 시간에 컴퓨터 내의 다양한 메모리와 저장 장치에 상주하는 하나 또는 이상의 명령을 포함하며, 컴퓨터 내의 하나 또는 이상의 프로세서에 의해 읽혀지거나, 실행되는 경우에, 컴퓨터로 하여금 본 발명의 다양한 측면을 실시하는 단계 또는 구성 요소를 실행하는데 필요한 단계들을 실행하도록 한다. 게다가, 본 발명은 앞으로, 충분히 기능하는 컴퓨터와 컴퓨터 시스템에 대해 설명될 것이지만, 당업자는 본 발명의 다양한 실시예가 다양한 형태의 프로그램 제품으로 배포될 수 있으며, 본 발명이, 실제적으로 배포를 수행하는 데 사용되는 신호 저장 매체(signal bearing media)의 특정한 형태에도 불구하고, 동일하게 적용됨을 이해해야 한다. 신호 저장 매체의 예는 휘발성 및 비휘발성 메모리 장치와 같은 기록가능형 미디어, 플로피 및 다른 제거가능 디스크, 하드디스크 드라이브, 자기 테이프, 광학 디스크(예컨대, CD-ROM, DVDs, etc) 디지탈 및 아날로그 통신 링크와 같은 전송형 미디어를 포함한다.
부가적으로, 이후에 묘사될 다양한 프로그램 코드가 어플리케이션 또는 소프트웨어 요소를 기반으로 식별될 수 있으며, 이것을 기반으로 본 발명의 특정한 실시예에서 구현된다. 그러나, 다음의 임의의 특별한 프로그램 명명법은 단지 편의를 위해 사용된 것이므로, 본 발명은 그러한 명명법에 의해 식별되고, 암시되는 임의의 특정한 어플리케이션에만 사용되는 것으로 제한되지 않는다. 더 나아가, 프로그램 기능이 일반적인 컴퓨터(예컨대, 운영 시스템, 라이브러리, API's, 어플리케이션, 에플릿 등) 내에 상주하는 다양한 소프트웨어 층 중에 할당될 수 있는 다양한 방법뿐만 아니라, 컴퓨터 프로그램이 루틴, 과정(procedure), 방법, 모듈, 오브젝 트 등으로 조직화될 수 있는 수많은 방법이 있으므로, 본 발명은 여기서 묘사된 프로그램 기능의 특정한 조직화와 할당에 제한되지 않음이 이해되어야 한다.
당업자들은, 도 1 및 2에서 설명된 예시적인 환경이 본 발명을 제한하기 위함이 아니라는 것을 이해할 것이다. 실제로, 당업자들은, 다른 택일적인 하드웨어 및/또는 소프트웨어 환경이 본 발명의 범위를 벗어나지 않도록 사용될 수 있음을 이해할 것이다.
도 3에 있어서, 센트럴 일렉트로닉스 컴플렉스(Central Electronics Complex, CEC, 54)를 복수의 말단 입/출력 자원(56, 여기서는 입출력 슬롯)에 결합하는데 사용되는 입/출력 패브릭(52)과 함께 예시적인 컴퓨터 시스템(50)이 도시되어 있다. CEC(54)는 하나의 프로세서/메모리 또는 시스템 버스(62)에 결합된 하나 또는 이상의 프로세서(58) 및 메모리(60)을 포함하는 것으로 설명된다. 설명된 실시예에 있어서, CEC(54)는 입출력 슬롯(56)으로부터 분리된 인클로저 내에 내장되며, 이와 같이, 입/출력 슬롯은 하나 또는 이상의 입/출력 인클로저(64) 내에 그룹의 형태로 내장된다. 일부의 구현에 있어서, 도 3에 설명된 구성 요소는 동일한 인클로저 내에 내장된다는 것을 이해해야 한다.
입/출력 패브릭(52)은 하나 또는 이상의 원격 입/출력(RIO) 네트워크(66)를 포함하며, 각 네트워크(66)은, 입/출력 인클로저(64)에 배치된 하나 또는 이상의 원격 입/출력 브릿지(70)과 함께, CEC(54) 내에 내장되는 원격 입/출력 허브(68)을 포함하고, 프로세서/메모리 버스(62)에 결합되어 루프 토폴로지 내에 레이아웃된다. 각 원격 입/출력 브릿지(70)는 PCI, PCI-X 또는 PCI Express와 같은 PCI 호환 인터페이스를 지원하기 위해 하나 또는 이상의 PCI 호스트 브릿지(PHB's)에 번갈아 결합한다. 각 PHB(72)는 프라이머리 PCI 버스를 호스트하며, 이 버스는 복수의 PCI-PCI 브릿지(74)에 결합되며, 각 브릿지는 차례로 관련 입/출력 슬롯(56)을 제2 PCI 버스에 결합한다. 예컨대, 입/출력 슬롯(56)이 PCI 호환 어댑터 카드 또는 PCI-PCI 브릿지 및/또는 PHB를 통합하는 전자평면(electronic planar) 상에 직접 내장되는(결합되는) 전자 PCI 어댑터 칩을 수용하는 커넥터로서 구현될 수 있다.
PCI 기반 인터페이스는 메모리 맵핑된 입/출력(Memory Mapped Input/Output, MMIO)를 지원한다. 이와 같이, 컴퓨터(50)가 논리적으로 파티션된 환경을 구현하는 경우에, 이 논리적 파티션 운영 시스템은, 프로세서(58)로부터 어댑터까지의 MMIO에 대해, 프로세서 어드레스를 특정한 PCI 어댑터 메모리로 "결합(bind)"하도록 허용되며, 메모리(60)로 또는 메모리(60)로부터의 DMA로의 어댑터를 인에이블하기 위해, 메모리(60)으로부터의 어드레스를 이 어댑터에 결합(bind)하도록 허용될 수도 있다.
설명된 실시예에 있어서, PCI-PCI 브릿지(74) 매개 PHB's(72) 및 입/출력 슬롯(56)의 사용은, 개별적인 어댑터와 PHB's(72), 원격 입/출력 요소(68, 70), 프로세서(58)과, 메모리(60) 사이의 부가적인 시그널링 및 어댑터의 설정하기 위한 분리(binding isolation)를 가능하게 한다. 부가적인 분리(isolation)는 개별적인 입/출력 슬롯의 다른 논리적 파티션으로의 할당을 용이하게 하여, 논리적 파티션은 PCI-PCI 브릿지(74)에 공통으로 연결되는 입/출력 패브릭 하드웨어를 공유할 수 있으나, 다른 논리적 파티션에 할당된 입/출력 슬롯(56)의 조작은 특정한 논리적 파티션에 할당된 어댑터의 조작을 중단시키지 않으며, 어댑터 어드레드 결합(binding)이 강제되어 어떠한 논리적 파티션 또는 어댑터도 또다른 파티션-어댑터 결합(binding)을 사용할 수 없다. 다른 실시예에 있어서, 그렇게 함으로서 PCI-PCI 브릿지에 결합되는 모든 입/출력 슬롯이 논리적으로 파티션된 컴퓨터 내의 동일한 논리적 파티션으로 제한되는 것이 필요함에도 불구하고, 복수의 입/출력 슬롯이 소정의 PCI-PCI 브릿지에 결합될 수 있다. 또한, 다른 실시예에 있어서, 복수의 슬롯이 각 슬롯에 대한 내부 분리의 용이성을 제공하기 위해 PHB에 결합될 수 있다.
또한, 설명된 실시예에 있어서, 최신 플러그 제어기는 바람직하게 각 입/출력 슬롯과 관련되며, 전기적 전원이 시스템 내의 다른 입/출력 슬롯(56)에 전원 상태(the state of power)로부터 독립적인 각 입/출력 슬롯(56)에 선택적으로 인가되도록, PHB's(72) 또는 PCI-PCI 브릿지(74) 중 어느 하나에 통합된다. 부가적으로, 일부의 실시예에 있어서, 입/출력 패브릭 요소의 그룹은 공통 집적 회로 또는 카드 내로 집적화될 수 있다. 예컨대, 복수의 PCI-PCI 브릿지(74)는 공통 집적 회로 상에 배치될 수 있다.
부가적으로, 설명된 실시예에 있어서, 각 PCI-PCI 브릿지(74)는 관련 입/출력 슬롯에 대한 에러 상태를 관리할 수 있어서, 입/출력 패브릭으로부터의 에러들은 우세한 입/출력 슬롯에 전달될 수 있다. 선택적으로, PHB 또는 다른 입/출력 패브릭 요소는 입/출력 패브릭에 결합된 복수의 입/출력 슬롯에 대한 에러 상태를 관리하는 기능을 통합한다.
컴퓨터 내의 말단 입/출력 자원과 프로세서 사이의 통신을 지원하는, 수많은 선택적 구성이, 본 발명에 상응하는 입/출력 패브릭을 위해 사용될 수 있음을 이해해야 한다. 예컨대, USB, SCSI, IDE, IEEE-1394, PCI-Express, Fibre Channel과 InfiniBand를 포함하지만 이에 제한되지 않는 수많은 상이한 인터커넥트 표준이, PCI 대신에 또는 PCI에 추가되어 사용될 수 있다. 더욱이, 브릿지, 스위치, 호스트, 허브, 인클로저, 어댑터, 커낵터, 통신 프로토콜, 제어기와 다른 종류의 하드웨어 장치의 선택적인 수와 구성이, 본 발명에 상응하는 입/출력 패브릭에 통합될 수 있다. 그러므로, 도 3의 구성은 단지 예시적인 것으로, 본 발명은 여기에 개시된 특정한 구성에 제한되지 않는다.
상기한 바와 같이, 본 발명에 상응하는 실시예는, 복구 가능 및 복구 불가능 입/출력 자원의 혼합된 환경을 지원하기 위해, 머신 체크와 비-머신 체크(non-machine check) 사이의, 장치 드라이버 에러 검출 및 그러한 에러에 대한 복구 및/또는 입/출력 패브릭 부분들의 동적인 재구성을 용이하게 하도록, 입/출력 자원으로의 입/출력 패브릭 에러의 전달을 지원한다. 이에 관하여, 도 3과 관련하여 설명된 예시적인 입/출력 패브릭에 연결된 논리적으로 파티션된 환경을 사용하는 예시적인 실시예가 아래에 나타나 있다. 그러나 본 발명은 이 특정한 실시예에 한정되지 않음을 이해해야 한다.
설명된 실시예에 있어서, 입/출력 패브릭 요소는 에러 상태를 구현하는데, 이 상태에서, 패브릭 요소는 에러 조건이 검출된 경우에, (1) MMIO 저장을 말단에 버리고; (2) 올-원(all-one) 데이터를 MMIO 로드에 반환하고;(3) DMA 쓰기(write) 및 거절(reject)를 버리고, DMA 읽기 요청으로 에러 지위를 반환한다(예컨대, PCI 버스 상에서 PHB는 목표 Abort 또는 Retry 지위와 함께 DMA 읽기(read) 요청에 응답할 수 있음).
게다가, 설명된 실시예에 있어서, 입/출력 패브릭 요소는 머신 체크와 비-머신 체크 모드 사이에서 동적으로 재구성될 수 있다. 이와 같이, 머신 체크 모드에 있을 때, 올-원(all-ones) 데이터를 MMIO 로드로 반환하면서, 패브릭 요소는 프로세서 내의 머신 체크 인터럽트를 감소시키는 에러 지위(error status)를 반환한다.
설명된 실시예에서 사용되는 복구 가능한 장치 드라이버는 올-원(all-ones) 로드 응답을 검출하고, 패브릭 에러 상태에 대한 머신 체크를 요청하지 않는다. 파티션 관리자는 입/출력 패브릭을 초기화하여, 머신 체크는 패브릭 에러 상태에서 신호로 알려지지 않는다. 임의의 파티션을 활성화하기 전에, 파티션 관리자는 모든 패브릭 요소들을 초기화하여, 에러 상태에 진입하는 경우에 머신 체크를 신호로 알리지 않는다. 복구 불가능한 장치 드라이버가 검출되고, 슬롯 구성이 파티션된 시스템의 에러 분리 정책(error isolation policy)을 만족하는 경우에, 파티션 관리자는, 프로세서/메모리 버스와 입/출력 어댑터 슬롯 사이의 하드웨어 경로를 형성하도록 인터커넥트하는 그러한 패브릭 요소에 대해, 머신 체크를 동적으로 활성화하는 패브릭 요소를 개조한다. 유사하게, 입/출력 어댑터 슬롯이 더 이상 복구 불가능 장치 드라이버의 제어를 받지 않는 경우에는, 파티션 관리자는 또한, 패브릭 요소를 그 비-머신 체크 모드로 동적으로 반환하도록 이 패브릭 요소를 개조할 수 있다.
패브릭 내의 임의의 지점에는, 2개의 슬롯 사이의 경로의 접합점(a junction)이 존재할 수 있다. 머신 체크 신호를 인에이블 또는 디스에이블하도록, 패브릭 요소를 개조하는 경우에, 파티션 관리자는 이 접합점에서 그것을 보증하고, 프로세서/메모리 버스로의 접합점으로부터의 경로에서, 패브릭 요소는 적합하게 초 기화되어, 만약 어떠한 슬롯이 머신 체크 에러 모드를 요청하는 경우에도, 슬롯과 프로세서/메모리 버스 사이의 공통 경로를 형성하는 이 요소들은 머신 체크를 신호화하도록 설정된다.
도 4는 (100)에서 복구 가능 장치 드라이버에 관한 입/출력 패브릭 에러를 검출하고 복구하는 단계에 대한 예시적인 흐름을 설명한다. 파티션 관리자의 디스패치가 불가능한 부분은 패브릭 하드웨어 관리자(102)를 포함한다. 패브릭 하드웨어 관리자(102)는 패브릭 하드웨어 초기화와 작업을 사용하는 복구 순차(recovery sequencing)의 대부분을 수행한다. 파티션 관리자의 디스패치가 불가능한 부분은, 파티션으로 할당되는 슬롯 내의 입/출력 어댑터 상에서 조작되는 파티션 장치 드라이버를 인에이블하도록, 권한 체크(authority check)를 수행한다. 부가적으로, 파티션 관리자의 디스패처가 불가능한 부분은 패브릭 입/출력 하드웨어 인터럽트를 수신하고, 패브릭 하드웨어 관리자(102)와 파티션 운영 시스템(104) 모두로부터 호출될 수 있다(도 4에서 파티션 관리자 호출 인터페이스로서 식별되는 점선으로 나타남). 디스패치가 불가능한 파티션 관리자는, 패브릭 하드웨어 관리자(102)와 파티션 운영 시스템(104)와 관련된 이벤트 큐에 저장된 이벤트 메세지를 사용하여, 비동기적 조건을 패브릭 하드웨어 관리자(102) 또는 파티션 운영 시스템(104)에 신호로 알리며, 이 이벤트는 패브릭 에러 인터럽트와 관련된 이벤트를 포함한다.
도 4에는, 파티션 관리자의 복구 불가능 부분이 패브릭 관리자 요소(106)와 슬롯 관리자 요소(108)를 포함하여 나타나 있다. 패브릭 관리자(106)는, 에러 또는 다른 비동기적인 조건이 발생하는 경우에, 패브릭 하드웨어의 상태를 모니터하고, 이 패브릭 하드웨어로부터의 인터럽트를 수신한다. 파티션 관리자의 디스패치가 불가능한 부분은 또한, 각 입/출력 슬롯에 대해, 파티션 운영 시스템으로부터 호출이 있는 경우 권한 체크와 슬롯 조작을 수행하도록 입/출력 슬롯 상태를 모니터 하는 슬롯 관리자(108)를 포함한다. 슬롯 관리자 요소(108)는 또한 패브릭 에러가 발생하는 경우에, 패브릭 관리자(106)와 파티션 운영 시스템(104) 상호작용(interaction)을 동기화하며, 파티션 장치 드라이버가 에러를 검출하고 이 에러 지위를 요청할 때까지, 패브릭 에러 지위를 저장하는 메카니즘을 제공한다.
단계 (110.1 내지 120.3)의 순차는, 패브릭 에러(환언하면, 입/출력 패브릭 내의 입/출력 패브릭 요소 중의 하나에서의 에러)를 인식한 경우의 파티션 관리자의 조작을 의미한다. 순차(122 내지 130)는 올-원(all-ones) 로드 응답을 검출한 경우의 복구 가능한 장치의 조작을 의미한다. 양쪽 순차 모두는 거의 동시에 발생할 수 있으며, 단계(128 내지 130)는 이 2개의 순차 사이에서 동기화하는 단계이다. 만약 장치드라이버가 구체적인 패브릭 에러 지위를 처리하거나 기록하지 않는다면, 이 장치 드라이버는 단계(128)를 생략하고 오직 단계(130)를 수행할 수 있다는 점에 주목하기 바란다.
단계(110.1 및 110.2)는, 가능한 패브릭 에러를 파티션 관리자에 신호로 알리는 독립적인 메카니즘을 나타낸다. 단계(110.1)는 파티션 관리자 인터럽트 처리기에 에러 인터럽트를 신호로 알리는 패브릭 하드웨어 요소를 나타내며, 단계(110.2)는 단계(124)를 수행하는 장치 드라이버를 나타내는데, 이 단계(124)는, 만약 단계(112.1)를 수행하고, 슬롯에 대한 슬롯 관리자(108)에서 패브릭 에러 상태를 저장하는 파티션 관리자에 앞서 단계(110.2)가 발생한다면, 이 단계를 초기화한다. 단계(110.1 및 110.2)는 순차적으로 또는 동시에 발생할 수 있다. 파티션 관리자와 운영 시스템 장치 드라이버 양쪽 모두는 하나의 CPU를 공유할 수 있고, 순차(110.1 내지 120.3와 122 내지 130)의 개별적인 단계는 서로에 상대적인, 임의의 순서로서 물리적으로 발생하지만, 파티션 관리자와 장치 드라이버의 관점에서 논리적으로 순차적으로 나타난다.
단계(110.1) 내의 순차(110.1 내지 120.3)를 시험하는 경우, 에러를 검출한 패브릭 하드웨어 요소는 에러 인터럽트를 파티션 관리자에게 신호로 알린다. 이 인터럽트는, 단계(110.2)가 처음 발생하여 파티션 관리자 에러 검출을 초기화하는 경우조차, 항상 발생한다. 즉, 단계(110.2)는 단계(110.1)의 인터럽트를 수신하는 파티션 관리자에 선행할 수 있으며, 단계(110.2)는 패브릭 하드웨어의 검사를 초기화할 수 있으므로, 그 결과 에러 지위가 단계(112.2)의 모든 영향을 받은 슬롯 관리자에 신호로 알려지게 된다. 그러나, 패브릭 관리자(106)는, 단계(110.1)의 인터럽트가 발생할 때까지 단계(114)의 패브릭 에러 상태의 복구를 초기화하지 않는다. 이 인터럽트가 발생하는 경우, 만약 장치 드라이버가 패브릭 관리자(106)로 하여금 단계(124)에서, 패브릭 에러 지위를 개별적인 슬롯 관리자(108)에 저장하도록 한다면, 패브릭 관리자(106) 인터럽트 처리기는 이 지위를 수집하여, 단계(112.1)를 수행한다.
부가적으로, 파티션 관리자는 보통 패브릭 요소 또는 슬롯(파티션 관리자로의 파티션 호출을 통해 요청된 슬롯으로의 구성 입/출력과 같은)으로의 어떤 입/출력 조작을 수행하는데, 올-원(all-ones) 로드 응답을 검출할 수도 있다. 이것이 발생하는 경우, 파티션 관리자 자체는 단계(110.2)로 하여금 그 경로에서의 에러에 대한 패브릭을 분석하도록 한다.
다음의 단계(112.1)에서, 패브릭 관리자(106)는 에러 이벤트를 패브릭 하드웨어 관리자(102)에게 신호로 알린다(단계 114). 패브릭 하드웨어 관리자(102)는 하드웨어 조작의 필요한 순차를 수행한다.(단계 116 내지 120.1). 파티션 관리자의 디스패치가 가능한 부분은 모든 직접적인 하드웨어 액세스를 수행하기 때문에, 패브릭 하드웨어 관리자(102)는 패브릭 하드웨어 자체를 개조하기 위해 디스패치가 불가능한 파티션 관리자로의 파티션 관리자 호출을 사용한다. 패브릭 관리자(106)와 통신하는 이러한 파티션 관리자 상태는 또한, 패브릭 하드웨어 관리자(102)가 패브릭 에러 조건을 복수하기 위해 필요한 순차적인 하드웨어 조작을 수행하기 때문에, 패브릭 관리자(106)가 모니터할 필요가 있는 패브릭 요소 상태 또는 하드웨어 모드 내에서 변화한다.
단계(112.2)에서, 슬롯 관리자(108)는 에러 이벤트를 파티션 운영 시스템(104)에 신호로 알린다. 파티션 운영 시스템(104)은 선택적으로, 의존하거나, 장치 드라이버가 MMIO 로드를 발급할 때까지 대기하지 않고, 패브릭 또는 슬롯 에러를 비동기적으로 검출하도록 그러한 이벤트를 수신하는 것을 인에이블한다. 몇몇의 경우에서, 장치 드라이버와 입/출력 어댑터 사이의 통신 프로토콜은, 장치 드라이버가 오직 MMIO 저장만을 또는 거의 항상 MMIO 저장만을 수행하고 드물게 MMIO 로드를 수행할 수도 있다. 그러한 경우에, 단계(112.2)에서 이벤트 메세지를 수신하는 단계는 장치 드라이버 순차(124 내지 130)를 초기화하도록 동작할 수 있다.
단계(116)에 있어서, 패브릭 하드웨어 관리자(102)는 패브릭 실패 이벤트로부터의 에러 상태 정보를 사용하여, 에러 내의 패브릭 요소를 결정하고 하드웨어 복구를 초기화한다. 에러 상태에 있는 경우에, 패브릭 요소는 계속하여 MMIO 저장과 DMA's를 버리고 all-one를 로드 응답에 반환하여, 파티션 내에 동시에 실행되는 장치 드라이버는, 패브릭 하드웨어 관리자(102)가 이 패브릭 요소를 통해 도달된 각 슬롯의 에러 상태를 복제할 수 있을 때까지, 이 동작을 관찰한다. 그러므로, 단계(116)에서, 패브릭 하드웨어 관리자(102)는 패브릭을, 패브릭 하드웨어 관리자(102)가 입/출력 어댑터 슬롯에서 하드웨어에 액세스하고 프리즈(freeze) 조건을 감소시킬 수 있는 상태로 패브릭을 반환한다.
설명된 실시예에 있어서, 파티션 장치 드라이버는, 슬롯 관리자(108)와 직접 통신하는 파티션 관리자 호출을 사용하여 모든 PCI 구성 입/출력을 수행하게 되며, 그리하여, 슬롯 관리자(108)는 직접적으로 패브릭 에러 지위(단계 112.1과 112.2의 발생에 후속함)를, 구성 입/출력 파티션 관리자 호출을 실행 중인 파티션에 반환한다. 장치 드라이버는, 어댑터 PCI 메모리에 대응된(mapped) 파티션 가상 어드레드를 사용하여, 메모리-맵핑된 입/출력을 수행한다. 그러므로, 설명된 실시예에 있어서, 플랫폼 슬롯 하드웨어는 하나의 메카니즘을 제공하고, 이로써 단계(116)의 파티션 관리자는, 브릿지 내의 프리즈(freeze) 상태를 확정하도록 슬롯을 연결하는 PCI-PCI 브릿지 요소를 향하는 구성 입/출력 조작을 사용할 수 있다.
단계(116)에서, 그 뒤 패브릭 하드웨어 관리자(102)는 패브릭 요소를, 구성 입/출력을 수행할 수 있는 상태로 복구시키고, 패브릭 하드웨어 관리자(102)가 그 패브릭 요소를 통해 도달한 각 슬롯의 동일한 프리즈 또는 에러 상태를 확립할 때까지 패브릭 요소를, 메모리-맵핑된 조작이 계속해서 저장을 버리고, 올-원(all-ones)를 로드로 반환하는 에러 상태에 남겨둔다. 설명된 실시예가 슬롯 PCI-PCI 브릿지로의 구성 입/출력을 사용하는 반면에, 독특하고 개별적으로 인에이블된 리얼 어드레스 범위를, 패브릭 하드웨어로부터 이격적으로 PCI 메모리를 대응하도록(mapped) 제공하고, 단계(116) 복구 동안, 패브릭 어드레스 범위만을 다시 인에이블하는 것과 같이, 동등한 성능을 제공하는 패브릭 하드웨어 내에서, 다른 메카니즘이 제공될 수 있음을 이해해야 한다.
단계(118)에 있어서, 패브릭 하드웨어 관리자(102)는 패브릭의 PCI-PCI 브릿지 요소 내의 프리즈 조건을 확정하는 구성 입/출력을 수행하도록 파티션 관리자 호출을 사용하여, 패브릭 요소를 통해 도달한 각 슬롯은 에러 상태에 위치된다. 이것에 후속하여, 단계(120.1)에서 패브릭 하드웨어 관리자(102)가 완전히 패브릭 요소를 그 정상적인 운영 상태에 반환하는 경우에는, 각 슬롯의 PCI-PCI 브릿지는 이 원본 패브릭 에러 상태를 복제하여, 저장과 DMA's를 버리고 올-원(all-ones)를 로드 응답에 반환하므로, 영향을 받은 입/출력 슬롯에 패브릭 에러를 효과적으로 전달할 수 있다.
설명된 실시예에서, PCI-PCI 브릿지가 이 함수를 실행하는 동안, 패브릭의 다른 요소가 동일한 함수를 제공할 수 있다는 것이 명백해야 하는데, 예컨대, 메모리-맵핑된 어댑터 어드레드와 개별적인 슬롯에 할당된 DMA 소스 어드레스에 기반하는 것을 말한다.
단계(120.1)에 있어서, 각 영향을 받은 슬롯에서 프리즈 상태를 복제했던 패브릭 하드웨어 관리자(102)는 패브릭 요소의 복구를 완료하고, 패브릭 복구가 완료됨을 패브릭 관리자(106)에게 신호로 알린다. 단계(102.2)의 패브릭 관리자(106)는 개별적인 슬롯 관리자(108)에게 패브릭 복구가 완료됐음을 신호로 알리고, 이 슬롯 관리자(108)는 내부 슬롯 상태 정보 내에 이것을 반영한다. 차례로, 단계(120.3)의 각 슬롯 관리자(108)는 선택적으로 이벤트를 파티션 운영 시스템(104)에 복구가 완료됐음을 알린다. 단계(112.2)에 관련하여, 파티션은 선택적으로 수단과 같은 이벤트의 영수증(receipt)으로 하여금 순차(122 내지 130) 또는 그 순차의 서브세트를 초기화하도록 한다. 그렇지 않다면, 순차(122 내지 130)에서와 같이, 나중에 투표를 함으로써, 파티션 운영 시스템에 의해 입/출력 패브릭 에러 복구를 검출하는데 사용될 수 있는 일부의 실시예에 있어서 어떠한 이벤트도 파티션 운영 시스템에 전달되지 않을 수 있다.
단계(122)의 파티션 운영 시스템(104)에서 수행되는 순차(122 내지 130)를 참조하면, 파티션 장치 드라이버는 MMIO 로드로부터의 올-원(all-ones) 데이터를 수신하는 결과로써 가능한 패브릭 또는 슬롯 에러 조건을 인지하게 된다. 상기에서 설명된 바와 같이, 파티션 운영 시스템(104)은 선택적으로 패브릭 에러 이벤트 메세지의 영수증(receipt)을 인에이블하고, 대체되거나 단계(122)에 선행하여 이 메카니즘을 통해 패브릭 에러 조건을 검출한다.
단계(124)에 있어서, 장치 드라이버, 또는 이 장치 드라이버로부터 야기되는 파티션 커널 유틸리티는 패브릭 또는 슬롯 에러 조건이 현존하는지 여부를 결정하 도록 파티션 관리자를 호출한다. 만약 슬롯 관리자(108)가 단계(110.1 또는 110.2)를 통해 검출된 패브릭 에러를 신호로 통보 받지 않았다면, 슬롯 관리자(108)는 에러 상태에 대한 패브릭 경로를 분석하기 위해 단계(110.2)를 수행한다. 만약 이 조건이 검출되면, 단계(110.2)는 패브릭 상태를 슬롯 관리자(108)에게 반환하고, 슬롯 관리자는 차례로 이 지위를 단계(124)에서 파티션 운영 시스템(104)에 반환한다.
설명된 실시예에서, PCI-PCI 브릿지는, 입/출력 어댑터 슬롯에 연결하는 PCI 제2 버스 상에 있는 에러 조건을 검출하는 경우, 패브릭 에러 상태에 진입한다. 설명된 실시예에 있어서, 슬롯 관리자(108)는 또한, 만약 어떠한 더 높은 레벨의 패브릭 에러 상태도 검출되지 않았다면, 이 에러 상태에 대한 PCI-PCI 브릿지를 검사하며, 이 상태가 존재하는 때는 하나의 지위를, 다른 패브릭 요소와 관련 없는 슬롯 프리즈 조건이 존재함을 지시하는 파티션 운영 시스템(104)에 반환한다.
단계(126)에 있어서, 파티션 운영 시스템(104) 또는 장치 드라이버는, 로그(logging)와 같은 목적으로 부가적인 패브릭 에러를 획득하거나, 패브릭 에러가 복구 가능한지 여부를 결정하기 위해, 선택적으로 슬롯 관리자(108)를 호출한다. 단계(128)에 있어서, 장치 드라이버 또는 운영 시스템은 슬롯 프리즈 조건을 제거함으로써 슬롯의 복구를 초기화하기 위해 슬롯 관리자(108)를 호출한다. 이러한 점에 있어서, 슬롯 관리자(108)는 패브릭 관리자(106) 패브릭 복구와 장치 드라이버 슬롯 복구를 동기화한다. 만약 슬롯 관리자(108)가 패브릭 복구를 완료하지 못했다면, 슬롯 관리자(108)는 단계(128)에서 비지(busy) 지위를 반환한다. 장치 드라이버 또는 운영 시스템은 그 뒤, 패브릭 관리자(106)가 단계(120.2)를 완료할 때까지, 주기적인 간격으로 단계(128)의 호출을 재 시도한다.
또한 단계(128)에 있어서, 만약 패브릭 에러 조건이, 파티션 관리자가 하드웨어 서비스 동작 또는 플랫폼 재부팅 또는 전원 사이클과 같은 수동적인 간섭 없이 정상적인 패브릭 조작을 복구할 수 없는 것이라면, 슬롯 관리자(108)는 슬롯이 영구적으로 유효하지 않다거나, 서비스 동작 동안에 유효하지 않다는 것을 지시하는 지위를 반환한다. 그 경우에 있어서, 만약 파티션 운영 시스템(104)이 그러한 이벤트의 영수증(receipt)을 인에이블했다면, 장치 드라이버는 몇 분 또는 몇 시간과 같은 매우 더 긴 시간으로 재시도 간격을 확장할 수 있거나 또는 파티션 관리자가 단계(120.3)에서 복구 이벤트를 신호로 알릴 때까지 재 시도하는 노력을 연기할 수도 있다.
단계(130)에 있어서, 성공적인 지위 반환에 후속하여, 장치 드라이버는 그후 운영 상태로 입/출력 어댑터를 복구하는 순차적인 파티션 관리자 호출을 수행하고, 그에 의해 입/출력 어댑터의 에러 상태를 재 설정한다. 그러한 동작은 PCI RST과 같은 하나의 재설정을 어댑터에 발행하는 단계와 그 후에 어댑터를 다시 초기화하는 단계 또는 입/출력 어댑터와 장치 드라이버 상태를 다시 동기화하는 단계와 패브릭이 에러 상태에 있는 동안 버릴 수 있었던 조작들을 반복하는 단계를 포함한다. 단계(130)를 완료하자마자, 입/출력 어댑터는, 입/출력 패브릭 에러가 복구되고 입/출력 어댑터와 프로세서/메모리버스 간의 통신이 복구되면서, 그 조작 상태로 반환된다.
또한 상기에서 언급한 바와 같이, 본 발명에 상응하는 실시예는, 소정의 입/출력 패브릭 내의, 또한 복구 불가능 및 복구 가능한 모든 말단 입/출력 자원을 사용하는 성능과, 시스템 내의 다른 종류의 입/출력 자원의 설치에 동적으로 적용되는 성능을 지원한다. 이것에 관하여, 실제로 장치 드라이버 또는 다른 관리 프로그램 코드가 머신 체크 모드를 사용하여 조작을 시도할 때까지, 복구 가능 또는 복구 불가능으로써 자원을 식별하는 것이 종종 불가능하다는 것을 이해해야만 한다. 결과적으로, 운영 시스템 또는 이러한 경우를 검출하는 파티션 관리자 함수를 통합하고, 언제 입/출력 구성이 입/출력 패브릭의 세그먼트가, 다른 파티션으로 붕괴됨이 없이 머신 체크 모드에서 조작될 수 있는지를 결정하고, 적합한 시간에 머신 체크 모드로 들어가고 나가는 입/출력 패브릭의 적당한 요소를 전이시키는 것이, 설명된 실시예에서 바람직하다. 또한 시스템 자체가, 그러한 조건을 검출하고, 다른 파티션의 순간적인 요청을 수용하기 위해, 입/출력 패브릭의 조작 모드를 동적으로 개조하는 것은, 설명된 실시예의 바람직한 특성이다.
논리적으로 파티션된 시스템에 있어서, 하나의 파티션에 의한 입/출력 에러의 검출은 바람직하게는, 영향을 받은 입/출력 패브릭 요소를 공통으로 구비하는 다른 파티션에 의한, 입/출력 조작의 파티션 관리자 복구와 재개를 방해하지 않아야 한다. 이 설명된 실시예는, 영향을 받은 장치 드라이버가 궁극적으로 신뢰성 있게 입/출력 에러 상태가 발생했다는 것과, 장치 드라이버가 이 에러를 검출했고, 어댑터 복구를 초기화할 때까지 어떠한 데이터 운반도 어댑터로 또는 어댑터로부터 발생하지 않았다는 것을 검출하라는 상기 요청을 보존하는 동안, 이 발생들에 즉시 후속하는 입/출력 패브릭 에러를 복구하는 문제를 제기한다.
유사하게는, 논리적으로 파티션된 시스템에 있어서, 머신 체크 모드에서 조작되는 하나의 파티션의 요청은 바람직하게는, 파티션이 복구 가능한 장치 드라이버를 채용하는 머신 체크에 다른 파티션을 부당하게 드러내지 않아야 한다. 설명된 실시예는 그러므로 필요하지 않은 경우에는, 다른 파티션을 머신 체크 모드에 드러내지 않고, 그것을 필요로 하는 장치 드라이버와 파티션에 대한 머신 체크 모드를 검출하고 인에이블하는 문제를 제기한다.
그러므로, 설명된 실시예를 목적으로, 운영 시스템의 조합된 장치 드라이버 내에는, 복구 가능 및 복구 불가능 양쪽 모두의 장치 드라이버 종류가 존재할 수 있으며, 각 장치 드라이버는 파티션 운영 시스템에 할당된 다양한 슬롯을 제어하는 것임을 가정할 것이다. 복구 불가능 장치 드라이버는, 더 오래된, "유산(legacy)" 기술을 의미하며, 운영 시스템 내의 복구 가능 장치 드라이버 프로토콜보다 일반적으로 선행한다. 그러므로, 입/출력 패브릭 내에서 복구 가능한 장치 드라이버 함수를 인에이블하는 단계는, 이 모델을 지원하는 입/출력 패브릭 하드웨어 내의 새로운 특징에 부가하여, 일반적으로 더 새로운 운영 시스템 커널 서비스와 장치 드라이버 함수들 중 하나의 함수이다. 예컨대, AIX 운영 시스템을 사용하는 일부의 컴퓨터에 있어서, 확장 에러 처리(Extended Error Handling, EEH)로 알려진 복구 가능 프로토콜이 사용된다.
머신 체크를 제공하지 않는 입/출력 패브릭 에러 상태를 인에이블하는 것은, 종종 더 새로운 장치 드라이버와 커널 서비스임에도 불구하고, 논리적으로 파티션된 시스템에 있어서 특히, 이러한 더 새로운 복구 가능 장치 드라이버는, 프라이머리 타입의 장치 드라이버와, 더 나아가 파티션 운영 시스템 내에 구성된 대부분의 장치 드라이버로 구성된다. 그러므로, 설명된 실시예의 파티션 관리자는 바람직하게는, 머신 체크 신호를 예방하거나 억제하고, 운영 시스템 커널 사용에 의존하는 패브릭 초기화 상태로 디폴트되는데, 이 커널의 사용이란 더 오래된 복구 불가능 장치를 검출하고, 입/출력 패브릭 내에 머신 체크 시그널링 모드를 활성화하도록 파티션 관리자를 요청하는 것이다.
본 발명에 상응하는 입/출력 패브릭 조작의 혼합된 모드를 설명하기 위해, 도 5는 선택적인 컴퓨터 아키텍처(50')를 설명하는데, 여기에, 입/출력 슬롯(56')의 복구 불가능 말단 입/출력 자원이 설치되어 있다. 입/출력 자원과 컴퓨터 내로 액세스하는 프로세서(예컨대, 프로세서/메모리 버스(62)에 결합된 프로세서(58) 중의 하나) 사이의 경로는 원격 입/출력 허브(68'), 원격 입/출력 브릿지(70'), PHB(72') 및 PCI-PCI 브릿지(74')를 포함한다. 본 발명에 상응하여, 복구 불가능 장치 드라이버가, 입/출력 슬롯(56') 내의 입/출력 자원을 관리하는 것과 연결되어 사용될 때마다, 입/출력 슬롯(56')과 프로세서/메모리 버스(62) 사이의 경로에 있는 각 입/출력 패브릭 요소(68' 내지 74')는 머신 체크를 인에이블하도록 설정된다.
도 6을 참조하면, 도면은 복구 불가능한 장치 드라이버(152)를 검출하기 위한 예시적인 흐름(150)을 설명하는데, 이 장치 드라이버는 입/출력 패브릭 하드웨어 조작 모드를 신호로 알리고 개조하는 머신 체크를, 패브릭 요소 에러 상태 또는 슬롯 에러 조건으로부터 그렇게 하도록 요청하는 것이다. 파티션 관리자로부터의 패브릭 관리자(154)와 슬롯 관리자(156)는, 장치 드라이버(152)가 상주하는 파티션 내에서 제공되는 지원 OS 커널 서비스(158)와 함께 설명된다. 더 나아가, 논리적 파티션닝(LPAR) 구성 데이터 베이스(160)는 PCI-PCI 브릿지(162), PHB(164), 원격 입/출력 브릿지 요소(166)와 원격 입/출력 허브 요소(168)를 포함하는 복수의 예시적인 패브릭 요소와 함께, 패브릭 관리자(154)에 결합됨으로서 설명된다.
복구 불가능 장치 드라이버의 검출에 응답하는 입/출력 패브릭의 동적인 재구성은 도 6의 순차적인 단계(170.1 내지 186)에서 나타난다. 특히, 복구 가능 장치 드라이버(152)가 커널 유틸리티(158)를 신호로 알리는 단계(170.1)[차례로 파티션 관리자(단계 170.2)]를 수행하는 예에 대하여, 이 장치 드라이버(14)가 복구 가능형이고, 머신 체크 시그널링을 요청하지 않는다고 가정하자. 설명된 실시예에 있어서, 일반적으로 파티션 관리자는 이미 머신 체크 시그널링을 방해하는 입/출력 패브릭을 초기화했을 것이고, 이와같이, 이 조작은 커널 서비스와 파티션 관리자에 관하여, 조언하는 조작(advisory operation)과 같은 것을 나타낸다.
단계(172)에 있어서, 장치 드라이버(152)는 DMA 및 인터럽트뿐만 아니라, 메모리-맵핑된 로드 및 저장에 대한 어댑터를 인에이블함으로써, 그 관련 입/출력을 사용하도록 준비할 수 있다. PCI 어댑터를 사용하는, 설명된 실시예에 있어서, 단계(172)는 인에이블 메모리, 입/출력, 또는 "1"로 설정된 마스터 조작(DMA) 비트와 함께, 장치 드라이버(152)가 구성 입/출력 저장을 어댑터 커맨드 레지스터에 수행하는 파티션 관리자를 호출하는 단계를 나타낸다.
만약 단계(172)의 전에, 장치 드라이버(152)가 단계(170.1)를 수행하지 않았다면, 장치 드라이버(152)는 올-원(all-ones) 에러 검출기를 구현하지 않는 더 오래된 (유산) 종류의 장치 드라이버를 나타내는 것으로 간주되고, 실패된 MMIO 로드 상의 머신 체크를 요청할 것으로 이해된다(예컨대, 장치 드라이버가 복구 불가능임). 디스에이블 머신 체크(단계 170.1 및 170.2)를 구현하는 커널 서비스(158) 또는 파티션 관리자 인터페이스 중 어느 하나와 MMIO 인에이블(단계 172) 호출은, 이러한 검출을 수행할 수 있다(설명된 실시예에서, 이러한 검출은, 단계(172)에서 인에이블 MMIO 로드 서비스를 실행하는 부분으로써, 인에이블 머신 체크 모드로 파티션 관리자의 적합한 슬롯 관리자(156)를 그 뒤(단계 174) 호출하는 커널 서비스(158)로 삭제됨에도 불구하고).
이와 같이, 이러한 실시예에 있어서, 복구 불가능 자원은 단순히 자원에 액세스를 시도하는 장치 드라이버와 관련된 머신 체크 시그널링을 디스에이블하는 요청의 부재(absence)의 검출을 통해, 간단하게 검출된다(예컨대, 이 자원을 초기화하고, 이 자원에 결합하고(bind), 이 자원을 구성하거나, 그렇지 않으면, 장치 드라이버와 자원 사이의 통신을 성립시키는 시도 중에). 장치 드라이버 활성과 운영 시스템에 결합하는 동안에 운영 시스템에 의해 열거되는 다른 커널 호출의 생략과 같이, 복구 불가능 자원을 검출하는 다른 방법이 택일적으로 사용될 수 있음을 이해해야 한다.
논리적으로 파티션된 시스템에 있어서, 설명된 실시예의 파티션 관리자의 중요한 기능은 인터-파티션 분리(inter-partition isolation)를 보장하는 것인데, 이는 다른 파티션의 유효성에 영향을 주는 하나의 파티션의 동작을 방해하는 것을 포함한다. 이러한 경우에 있어서, 파티션된 시스템의 목적은 주어진 입/출력 슬롯에 대해, 하나의 파티션에 의한 머신 체크 모드의 인에이블 동작이 가능할 때마다 오직 그 파티션으로의 영향 내로 제한되어야만 한다는 것이다. 설명된 실시예에 있어서, 파티션 관리자는 장치 드라이버가 머신 체크 시그널링을 인에이블하여, 특정한 파티션이 그 파티션에만 할당된 유일한 입/출력 슬롯을 연결하는 입/출력 패브릭의 범위 내에서만 머신 체크를 인에이블할 수 있는 구성을 제한하는 것이다.
그러므로 단계(176)에서, 패브릭 관리자(154)는 머신 체크 인에이블 동작이 요청되는 슬롯이 이 제한을 만족하는 패브릭 도메인 내에 있는지 여부를 결정하도록, 논리적 파티션 구성 데이터베이스(160)를 체크한다. 즉, 파티션 관리자는 파티션이, 만약 이것이 패브릭 내의 하나의 지점에서 이루어져 그 지점을 목표하는 모든 MMIO 로드가 오직 그 파티션에 할당된 슬롯에 관계되어 있다면, 머신 체크 모드를 확립하도록 한다. 예컨대, 설명된 실시예에서, PHB는, 다른 PHB's 상의 슬롯을 사용하는 다른 파티션을 머신 체크에 종속시키지 않기 위해, 그 PHB 아래의 슬롯에 대해 머신 체크 시그널링이 인에이블될 수 있는 지점을 나타낸다. 그러므로, 설명된 실시예에 있어서, 파티션 관리자는, 그 PHB를 통해 연결된 모든 슬롯이 동일한 파티션에 할당된 경우에만, 하나의 파티션으로 하여금 단계(174)에 있어서 머신 체크 모드를 확립하도록 한다. 결과로써, 파티션 관리자는 또한, 입/출력 패브릭의 PHB와 더 높은 레벨 요소가 머신 체크 모드로 설정된 어느 경우에 있어서, 또 다른 논리적인 파티션으로의 이러한 슬롯 중 하나의 할당을 방해한다.
그렇지 않다면, 단계(174)의 파티션 관리자는 실패 지위를 파티션 관리자 호출로 반환하고, 차례로, 커널 서비스(158)는 단계(172)에 있는 실패 지위를 장치 드라이버(152)에 반환한다. 장치 드라이버(152)는 그로써 머신 체크 모드를 확립하는 것이 전체 시스템의 인터-파티션 정책과 메카니즘에 반하는 경우에, 관련된 입/출력 어댑터를 조작하는 것이 금지된다.
만약 입/출력 슬롯 할당과 물리적인 구성이 머신 체크 모드의 인에이블을 허가한다면, 단계(178 내지 186))의 파티션 관리자는, 패브릭의 각 요소의 조작 모드를 개조하여, 그것이 이 에러 상태에서 패브릭의 가장 바깥 요소로부터 첫 번째로 처리되는 머신 체크를 신호로 보낸다[예컨대, PHB (164, 단계 182), 원격 입/출력 브릿지 요소(166, 단계 184)와 원격 입/출력 허브 요소(168, 단계 186)와 같은 프로세서/메모리 버스로 그 슬롯을 입/출력 패브릭의 잔존 요소를 통해 순차적으로 뒤로 연결하는, 그 슬롯(단계 180)에 대한 PCI-PCI 브릿지(162)]. 다른 순차가 다른 실시예에서 사용될 수 있다.
간단하게 도 5로 돌아가서, 만약 파티션 관리자가 본래 복구 불가능으로써 입/출력 슬롯(56')에 장착되는 입/출력 자원에 대한 장치 드라이버를 검출한다면, 전에 언급한 흐름은 그러므로, 머신 체크 모드에 대해 인에이블된 PCI-PCI-브릿지(74'), 원격 입/출력 브릿지(70')와 원격 입/출력 허브(68')를 포함하는 입/출력 자원과 프로세서/메모리 버스 사이의 경로에 배치된 각 패브릭 요소가 된다.
도 6으로 돌아가서, 논리적으로 파티션된 시스템의 설명된 실시예에 있어서, 파티션은 파워 온 및 오프(논리적으로)되거나 서로 독립적으로 재부팅될 수 있다. 하나 또는 이상의 슬롯에 대한 머신 체크 모드를 확립한 하나의 파티션이 파워 오프 또는 재부팅되는 경우에, 그 파티션 관리자의 디스패치가 가능한 부분은, 그 파티션에 할당된 각 슬롯에 대한 슬롯 관리자를 신호로 알린다. 파티션 관리자는 슬롯에 대한 몇몇 재-초기화를 수행하여, 그 파티션이 다음에 부팅될 때, 또다른 파티션으로의 가능한 재-할당 또는 동일한 파티션 내의 그 슬롯의 재활성화를 위해 그것을 준비한다. 특히, 파티션 재부팅은 종종, 장치 드라이버의 업데이트 또는 교체와 관련되는데, 이는 슬롯에 대한 복구 불가능 장치 드라이버가, 하나의 파티션의 부분이 재부팅되거나 파워-오프 및 온 되는 입/출력 어댑터에 대한 복구 가능한 장치 드라이버에 의해 교체될 수 있는 것과 같다.
그러한 환경에 있어서, 패브릭 관리자(154)가 또한, 파티션 파워-오프 또는 재부팅과 관련하여 그 장치 드라이버를 종료시켰다는 것과, 머신 체크 모드가 더이상 패브릭 도메인 내에서 활성화되어 남아 있는 다른 슬롯에 대해 요청되지 않아서, 이 패브릭 에러 모드를 머신 체크를 억제하는 단계로 전환할지 여부를 인식하는 것이 바람직하다. 이 경우에, 패브릭 하드웨어 관리자는 그 슬롯 관리자(156)에 신호를 보내고, 차례로, 종료된 파티션과 관련된 슬롯에 대한 패브릭 관리자(154)를 신호로 알린다. 그 뒤 패브릭 관리자(154)는 단계(180 내지 186)의 순차를 전환하여, 머신 체크 시그널링 모드에 있는 패브릭 요소는 더이상 머신 체크를 신호로 알리지 않도록 설정된다.
다양한 정책이, 머신 체크로 또는 머신 체크로부터의 스위치가 허용되는지 여부를 제어하기 위해 구현될 수 있다. 예컨대, 논리적으로 파티션된 시스템에 있어서, 동일한 PHB 상의 모든 다른 슬롯을 소유하는 슬롯을 소유하는 파티션 상에서, 하나의 슬롯의 스위치를 머신 체크 모드로 조건화하는 것이 바람직하다(선택적 으로 임의의 빈 슬롯을 포함하여). 인터파티션 동작이 분리되는 것과 동일한 방법으로 하나의 패브릭을 공유하는 클러스터 시스템과 같이, 다른 에러 조건 또는 하나의 패브릭에 대한 토폴로지를 부가적으로 스위치에 부여하는 것이 바람직하다.
머신 체크 시그널링을 디스에이블하는 입/출력 패브릭 요소의 반환은 또한 일반적으로, 머신 체크 모드로부터 반환되는 소정의 PHB 내의 모든 슬롯 상에서 조건화된다. 또한 파티션 관리자는 머신 체크 인에이블된 PHB 상의 임의의 슬롯이 파티션 관리자 또는 또다른 파티션에 전달되는 못하도록 한다.
머신 체크 시그널링이 인에이블되거나 강요되는 모드들 사이의 입/출력 패브릭 요소의 동적인 스위칭의 구현은 본 명세서의 장점을 갖고 있는 종래의 보통의 기술 중 하나의 성능 내에 있음이 이해되어야 한다. 게다가, 여기서 설명된 소프트웨어의 기능의 구현은 본 명세서의 장점을 포함하는 종래의 기술 중 하나의 성능 범위 내와 유사하다.
여기서 설명된 실시예의 다양한 개조가, 본 명세서의 장점을 포함하는 종래의 기술 중 하나에 이루어질 수 있음이 명백하다. 그러므로, 본 발명은 이후에 첨부되는 청구항에 기술될 것이다.
장치, 프로그램 제품 및 장치는, 컴퓨터 내의 프로세싱 요소에 복수의 말단 입/출력 자원을 결합하는데 사용되는 입/출력 패브릭으로부터의 입/출력 패브릭 요소 내에서 검출되는 에러들을 전달한다. 특히, 그러한 에러들은, 입/출력 패브릭 요소 내의 에러로부터의 복구와 관련된 입/출력 패브릭 요소에 의해 영향을 받은 말단 입/출력 자원에 전달된다. 그렇게 함으로써, 각 영향을 받은 입/출력 자원에 액세스하는데 사용되는 하나의 장치 드라이버 또는 다른 프로그램 코드는, 각 영향을 받은 입/출력 자원에 대해 완료된 복구를 대기하는 입/출력 패브릭 요소 내의 에러로부터의 복구를 종종 요청함이 없이, 그 관련된 입/출력 자원 내의 전달된 에러로부터 비동기적으로 복구가 가능하다. 부가적으로, 하나의 입/출력 패브릭은, 복구 가능 및 복구 불가능 말단 입/출력 자원 모두를 지원하도록 동적으로 구성된다. 특히, 입/출력 패브릭 내의 입/출력 패브릭 요소는, 말단 입/출력 자원이 본래 복구 불가능이라는 검출에 응답하여, 그러한 입/출력 패브릭 요소 내에서 머신 체크 시그널링을 인에이블하도록 동적으로 구성된다. 그렇게 동적으로 구성된 입/출력 패브릭 요소는, 복구 불가능 자원과 복구 불가능 자원에 액세스하는 하나의 프로세서 사이에서 정의된 하드웨어 경로 내에 배치되도록 동적으로 구성된다.

Claims (41)

  1. 복수의 프로세서들과,
    복수의 입/출력(IO) 어댑터 슬롯들과;
    상기 복수의 프로세서들에 결합되고, 상기 복수의 입/출력 어댑터 슬롯들로의 프로세서 액세스를 제공하도록 구성되고, 각 입/출력 어댑터 슬롯과 상기 복수의 프로세서들 사이의 복수의 하드웨어 경로들을 규정하는 복수의 입/출력 패브릭 요소들을 포함하는 입/출력(IO) 패브릭으로서, 상기 복수의 입/출력 패브릭 요소들은 상기 복수의 입/출력 어댑터 슬롯들의 서브세트로의 액세스를 제공하도록 구성된 제1 입/출력 패브릭 요소를 포함하는 것인, 상기 입/출력(IO) 패브릭과;
    상기 복수의 프로세서들 중 적어도 하나에서 실행되는 복수의 논리적 파티션들과;
    상기 복수의 논리적 파티션들 중 하나에 상주하고, 상기 복수의 입/출력 어댑터 슬롯들 중 제1 입/출력 어댑터 슬롯에 액세스하도록 구성된 장치 드라이버와;
    상기 복수의 프로세서들 중 적어도 하나에서 실행되고, 상기 복수의 논리적 파티션들을 관리하도록 구성된 파티션 관리자와;
    상기 파티션 관리자 내에 상주하고, 상기 제1 입/출력 패브릭 요소 내에서 검출된 에러에 응답하여, 입/출력 어댑터 슬롯들의 각 서브세트에 대한 에러 상태를 확립하고, 상기 에러 상태가 상기 복수의 입/출력 어댑터 슬롯들의 각각에 대해 확립된 후에 상기 제1 입/출력 패브릭 요소 내의 상기 에러로부터 복구하도록 구성된 제1 프로그램 코드와;
    상기 파티션 관리자 내에 상주하고, 상기 장치 드라이버가 복구 불가능 장치 드라이버임을 검출하고, 상기 검출에 응답하여, 상기 제1 입/출력 어댑터 슬롯과 상기 복수의 프로세서들 사이의 상기 하드웨어 경로 내에서 규정된 각 입/출력 패브릭 요소 내에서 머신 체크 시그널링(machine check signaling)을 동적으로 인에이블하도록 구성된 제2 프로그램 코드
    를 포함하는 논리적으로 파티션된 컴퓨터.
  2. 복수의 말단(endpoint) 입/출력(IO) 자원들로의 액세스를 제공하는 적어도 하나의 입/출력(IO) 패브릭 요소를 포함하는 입/출력(IO) 패브릭 내의 에러를 처리하는 방법에 있어서, 상기 입/출력 패브릭 요소 내의 검출된 에러에 응답하여,
    상기 복수의 말단 입/출력 자원들의 각각에 대한 에러 상태를 확립하는 단계와;
    상기 입/출력 패브릭 요소 내의 에러로부터 복구하는 단계
    를 포함하는 에러 처리 방법.
  3. 제2항에 있어서, 상기 입/출력 패브릭 요소 내의 상기 에러로부터 복구하는 단계 후에, 상기 복수의 말단 입/출력 자원들 중에서 제1 말단 입/출력 자원에 액세스하는 운영 시스템에서,
    상기 제1 말단 입/출력 자원의 상기 에러 상태를 검출하는 단계와, 상기 제1 말단 입/출력 자원 상의 에러 복구를 수행하는 단계와;
    상기 제1 말단 입/출력 자원에 대한 상기 에러 상태를 재설정(resetting)하는 단계
    를 더 포함하는 에러 처리 방법.
  4. 제2항에 있어서, 상기 입/출력 패브릭 요소 내의 상기 에러로부터 복구하는 단계 후에, 상기 복수의 말단 입/출력 자원들의 각각에 대한 상기 에러 상태를 비동기적으로 재설정하는 단계를 더 포함하는 에러 처리 방법.
  5. 제4항에 있어서, 상기 비동기적으로 상기 복수의 말단 입/출력 자원들의 각각에 대한 상기 에러 상태를 재설정하는 단계는, 상기 복수의 말단 입/출력 자원들의 각각으로 향하는 액세스 요청들에 응답하여 수행되는 것인 에러 처리 방법.
  6. 제4항에 있어서, 상기 입/출력 패브릭 요소 내의 상기 에러로부터 복구하는 단계 후에, 상기 복수의 말단 입/출력 자원들 중의 제1 말단 입/출력 자원 내의 상기 에러 상태의 통보(notification)를 발생하는 단계를 더 포함하고, 상기 비동기적으로 상기 제1 말단 입/출력 자원에 대한 상기 에러 상태를 재설정하는 단계는 상기 통보에 응답하여 수행되는 것인 에러 처리 방법.
  7. 제2항에 있어서, 상기 입/출력 패브릭 요소는, PCI(Peripheral Component Interconnect) 호스트 브릿지, 다기능 PCI-PCI 브릿지 장치(multifunction PCI-PCI bridge device), 원격 입/출력(Remote Input/Output) 브릿지, 원격 입/출력 허브 및 스위치 장치로 구성된 그룹으로부터 선택되는 것인 에러 처리 방법.
  8. 제2항에 있어서, 상기 복수의 말단 입/출력 자원들은 입/출력 어댑터 슬롯을 포함하는 것인 에러 처리 방법.
  9. 제2항에 있어서, 상기 입/출력 패브릭은 메모리 맵핑된 입/출력(Memory Mapped Input/Output, MMIO) 패브릭인 것인 에러 처리 방법.
  10. 제2항에 있어서, 상기 입/출력 패브릭은 파티션 관리자에 의해 관리되는 복수의 논리적 파티션들을 포함하는 논리적으로 파티션된 컴퓨터(logically-partitioned computer)에 결합되는 것이고, 상기 말단 입/출력 자원 각각은 상기 복수의 논리적 파티션들 중의 논리적 파티션에 할당되는 것이고, 상기 말단 입/출력 자원 각각에 대한 상기 에러 상태를 확립하는 단계와 상기 입/출력 패브릭 요소 내의 상기 에러로부터 복구하는 단계는 상기 파티션 관리자에 의해 초기화되는 것이고,
    상기 입/출력 패브릭 요소 내의 상기 에러로부터 복구하는 단계 후에 장치 드라이버에 의해 발생된 액세스 요청에 응답하여, 말단 입/출력 자원이 할당되는 상기 논리적 파티션 내의 상기 장치 드라이버에, 상기 말단 입/출력 자원의 상기 에러 상태를 반환하는 단계와,
    상기 에러 상태를 반환하는 단계에 응답하여, 상기 말단 입/출력 자원 내의 상기 에러 상태로부터 복구하는 상기 장치 드라이버를 사용하는 단계
    를 더 포함하는 에러 처리 방법.
  11. 제2항에 있어서, 상기 복수의 말단 입/출력 자원들에 대한 로드 조작의 결과로부터 상기 입/출력 패브릭 요소 내의 상기 에러를 검출하는 단계를 더 포함하는 에러 처리 방법.
  12. 제2항에 있어서, 에러 상태에 진입하는 상기 입/출력 패브릭 요소에 응답하여 발생된 인터럽트로부터 상기 입/출력 패브릭 요소 내의 상기 에러를 검출하는 단계를 더 포함하는 에러 처리 방법.
  13. 적어도 하나의 프로세서와;
    상기 적어도 하나의 프로세서에 결합되고, 복수의 말단 입/출력 자원들로의 프로세서 액세스를 제공하는 적어도 하나의 입/출력 패브릭 요소를 포함하는 입/출력 패브릭과;
    제2항 내지 제7항 및 제10항 중 어느 한 항에 따른 방법을 실행시키기 위한 프로그램 코드
    를 포함하는 장치.
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 입/출력 패브릭에 배치되고 복수의 말단 입/출력 자원들로의 액세스를 제공하도록 구성된 입/출력 패브릭 요소 내에서 검출된 에러에 응답하여, 상기 복수의 말단 입/출력 자원들의 각각에 대한 에러 상태를 확립하고, 상기 입/출력 패브릭 요소 내의 상기 에러로부터 복구하도록 구성된 프로그램 코드를 포함하는 컴퓨터 판독 가능 기록 매체.
  21. 삭제
  22. 복수의 말단 입/출력 자원들에 적어도 하나의 프로세서에 대한 액세스를 제공하는 복수의 입/출력 패브릭 요소들을 포함하는 입/출력 패브릭을 동적으로 구성하는 방법에 있어서,
    상기 복수의 말단 입/출력 자원들 중 제1 말단 입/출력 자원은 복구 불가능(non-recoverable) 자원임을 검출하는 단계와;
    상기 검출에 응답하여, 상기 프로세서와 상기 제1 말단 입/출력 자원 사이의 하드웨어 경로 내에 규정된 각 입/출력 패브릭 요소 내에서 머신 체크 시그널링을 동적으로 인에이블하는 단계
    를 포함하는 방법.
  23. 제22항에 있어서, 상기 제1 말단 입/출력 자원이 복구 불가능 자원임을 검출하는 단계는, 상기 제1 말단 입/출력 자원에 액세스를 시도하는 장치 드라이버에 의한 머신 체크 시그널링을 디스에이블하는 요청의 부재(absence)를 검출하는 단계를 포함하는 것인 방법.
  24. 제22항에 있어서, 머신 체크 시그널링이 상기 제1 말단 입/출력 자원에 대해 허용되는지 여부를 결정하는 단계를 더 포함하고, 상기 동적으로 머신 체크 시그널링을 인에이블하는 단계는 제1 말단 입/출력 자원에 대해 머신 체크 시그널링이 허용되는 경우에만 수행되는 것인 방법.
  25. 제24항에 있어서, 상기 적어도 하나의 프로세서는, 복수의 논리적 파티션들을 포함하는 논리적으로 파티션된 컴퓨터(logically partitioned computer) 내에 배치되는 것이고,
    상기 머신 체크 시그널링이 상기 제1 말단 입/출력 자원에 대해 허용되는지 여부를 결정하는 단계는, 상기 제1 말단 입/출력 자원이 상기 동일한 논리적 파티션으로 제한되는 상기 말단 입/출력 자원에만 액세스를 제공하는 패브릭 도메인(fabric domain)에 배치되어 있는지 여부를 결정하는 단계를 포함하는 것인 방법.
  26. 제25항에 있어서, 상기 패브릭 도메인은 복수의 PCI-PCI 브릿지를 통해 상기 복수의 말단 입/출력 자원들 중 하나의 세트에 결합된 PCI 호스트 브릿지를 포함하는 것인 방법.
  27. 제25항에 있어서, 패브릭 도메인에 의해 액세스가 제공되는 어떠한 말단 입/출력 자원도 복구 불가능이 아님을 결정하는 단계에 응답하여, 상기 패브릭 도메인의 각 입/출력 패브릭 요소 내의 머신 체크 시그널링을 동적으로 디스에이블하는 단계를 더 포함하는 방법.
  28. 제25항에 있어서, 또다른 논리적 파티션으로의, 상기 패브릭 도메인에 배치된 제2 말단 입/출력 자원의 할당을 금지하는 단계를 더 포함하는 방법.
  29. 제22항에 있어서, 상기 복수의 입/출력 패브릭 요소들은 적어도 하나의 원격 입/출력(Remote Input/Output, RIO) 허브, 적어도 하나의 원격 입/출력 브릿지, 적어도 하나의 PCI 호스트 브릿지 및 적어도 하나의 PCI-PCI 브릿지를 포함하는 것이고, 상기 프로세서와 상기 제1 말단 입/출력 자원 사이의 상기 하드웨어 경로는 상기 원격 입/출력 허브, 상기 원격 입/출력 브릿지, 상기 PCI 호스트 브릿지 및 상기 PCI-PCI 브릿지를 포함하는 것인 방법.
  30. 제22항에 있어서, 머신 체크 시그널링을 디스에이블하기 위해 상기 입/출력 패브릭을 초기화하는 단계를 더 포함하는 방법.
  31. 적어도 하나의 프로세서와;
    복수의 입/출력 패브릭 요소를 포함하고, 적어도 하나의 상기 프로세서를 복수의 말단 입/출력 자원들에 결합시키도록 구성된 입/출력 패브릭과;
    제22항 내지 제30항 중 어느 한 항에 따른 방법을 실행시키기 위한 프로그램 코드
    를 포함하는 장치.
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 입/출력 패브릭을 통해 적어도 하나의 프로세서에 결합된 복수의 말단 입/출력 자원들 중 제1 말단 입/출력 자원이 복구 불가능 자원임을 검출하도록 구성되고, 상기 검출에 응답하여, 상기 프로세서와 상기 제1 말단 입/출력 자원 사이의 하드웨어 경로 내에 한정된 상기 입/출력 패브릭의 복수의 입/출력 패브릭 요소 각각에서 머신 체크 시그널링을 동적으로 인에이블하도록 구성된 것인 프로그램 코드를 포함한 컴퓨터 판독 가능 기록 매체.
  41. 삭제
KR1020040025747A 2003-05-15 2004-04-14 입/출력 패브릭 내의 하드웨어 에러로부터의 자율 복구 KR100612715B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/438,392 US7134052B2 (en) 2003-05-15 2003-05-15 Autonomic recovery from hardware errors in an input/output fabric
US10/438,392 2003-05-15

Publications (2)

Publication Number Publication Date
KR20040098520A KR20040098520A (ko) 2004-11-20
KR100612715B1 true KR100612715B1 (ko) 2006-08-17

Family

ID=33417559

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040025747A KR100612715B1 (ko) 2003-05-15 2004-04-14 입/출력 패브릭 내의 하드웨어 에러로부터의 자율 복구

Country Status (3)

Country Link
US (2) US7134052B2 (ko)
JP (1) JP4001877B2 (ko)
KR (1) KR100612715B1 (ko)

Families Citing this family (105)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7934020B1 (en) * 2003-09-19 2011-04-26 Vmware, Inc. Managing network data transfers in a virtual computer system
US7430691B2 (en) * 2003-10-09 2008-09-30 International Business Machines Corporation Method, system, and product for providing extended error handling capability in host bridges
US7355358B2 (en) * 2003-10-23 2008-04-08 Hewlett-Packard Development Company, L.P. Configurable H-bridge circuit
US7130982B2 (en) * 2004-03-31 2006-10-31 International Business Machines Corporation Logical memory tags for redirected DMA operations
TW200537305A (en) * 2004-05-04 2005-11-16 Quanta Comp Inc Communication system, transmission device and the control method thereof
US7487403B2 (en) * 2004-11-12 2009-02-03 International Business Machines Corporation Method for handling a device failure
US20060143544A1 (en) * 2004-12-17 2006-06-29 Michael Ho Remote status forwarding in a distributed cross-connection system
TWI263143B (en) * 2004-12-31 2006-10-01 Inventec Corp World wide port name embedding method and interface for network transmission control chip
US7496790B2 (en) * 2005-02-25 2009-02-24 International Business Machines Corporation Method, apparatus, and computer program product for coordinating error reporting and reset utilizing an I/O adapter that supports virtualization
TWI277873B (en) * 2005-05-03 2007-04-01 Via Tech Inc IDE control system and redundant array of independent disks system with a hot plug function therein
US7496045B2 (en) * 2005-07-28 2009-02-24 International Business Machines Corporation Broadcast of shared I/O fabric error messages in a multi-host environment to all affected root nodes
JP2007058439A (ja) * 2005-08-23 2007-03-08 Sharp Corp 画像処理システム
JP2007094996A (ja) * 2005-09-30 2007-04-12 Fujitsu Ltd データストレージシステム、データストレージ制御装置及びその障害箇所診断方法
US7430630B2 (en) * 2005-10-27 2008-09-30 International Business Machines Corporation Routing mechanism in PCI multi-host topologies using destination ID field
US7395367B2 (en) * 2005-10-27 2008-07-01 International Business Machines Corporation Method using a master node to control I/O fabric configuration in a multi-host environment
US7474623B2 (en) * 2005-10-27 2009-01-06 International Business Machines Corporation Method of routing I/O adapter error messages in a multi-host environment
US7363404B2 (en) * 2005-10-27 2008-04-22 International Business Machines Corporation Creation and management of destination ID routing structures in multi-host PCI topologies
US7631050B2 (en) * 2005-10-27 2009-12-08 International Business Machines Corporation Method for confirming identity of a master node selected to control I/O fabric configuration in a multi-host environment
TWI291101B (en) * 2005-12-05 2007-12-11 Ibm Bus adapter, method thereof, and computer system thereof
US20070136458A1 (en) * 2005-12-12 2007-06-14 Boyd William T Creation and management of ATPT in switches of multi-host PCI topologies
US20070240018A1 (en) * 2005-12-29 2007-10-11 Intel Corporation Functional level reset on a per device/function basis
US20070165596A1 (en) * 2006-01-18 2007-07-19 Boyd William T Creation and management of routing table for PCI bus address based routing with integrated DID
US7707465B2 (en) * 2006-01-26 2010-04-27 International Business Machines Corporation Routing of shared I/O fabric error messages in a multi-host environment to a master control root node
US7380046B2 (en) * 2006-02-07 2008-05-27 International Business Machines Corporation Method, apparatus, and computer program product for routing packets utilizing a unique identifier, included within a standard address, that identifies the destination host computer system
US7484029B2 (en) * 2006-02-09 2009-01-27 International Business Machines Corporation Method, apparatus, and computer usable program code for migrating virtual adapters from source physical adapters to destination physical adapters
US7631206B2 (en) * 2006-02-10 2009-12-08 Intel Corporation Method and apparatus to support enhanced energy efficiency in a processing system
JP4728896B2 (ja) * 2006-07-13 2011-07-20 エヌイーシーコンピュータテクノ株式会社 コンピュータシステム
US20080133962A1 (en) * 2006-12-04 2008-06-05 Bofferding Nicholas E Method and system to handle hardware failures in critical system communication pathways via concurrent maintenance
US7571273B2 (en) * 2006-12-06 2009-08-04 International Business Machines Corporation Bus/device/function translation within and routing of communications packets in a PCI switched-fabric in a multi-host environment utilizing multiple root switches
WO2008099453A1 (ja) * 2007-02-09 2008-08-21 Fujitsu Limited 縮退方法および情報処理装置
US7926069B2 (en) * 2007-02-26 2011-04-12 International Business Machines Corporation Apparatus, system, and method for extending a device driver to facilitate a network connection to a remote event manager
JP4495248B2 (ja) * 2007-03-29 2010-06-30 富士通株式会社 情報処理装置、障害処理方法
US20080240134A1 (en) * 2007-03-30 2008-10-02 International Business Machines Corporation Multi-node, peripheral component switch for a computer system
US8141092B2 (en) * 2007-11-15 2012-03-20 International Business Machines Corporation Management of an IOV adapter through a virtual intermediary in a hypervisor with functional management in an IOV management partition
US8141093B2 (en) * 2007-11-15 2012-03-20 International Business Machines Corporation Management of an IOV adapter through a virtual intermediary in an IOV management partition
US8141094B2 (en) * 2007-12-03 2012-03-20 International Business Machines Corporation Distribution of resources for I/O virtualized (IOV) adapters and management of the adapters through an IOV management partition via user selection of compatible virtual functions
US9298568B2 (en) * 2008-02-07 2016-03-29 International Business Machines Corporation Method and apparatus for device driver state storage during diagnostic phase
US8359415B2 (en) * 2008-05-05 2013-01-22 International Business Machines Corporation Multi-root I/O virtualization using separate management facilities of multiple logical partitions
JP5161696B2 (ja) * 2008-08-07 2013-03-13 株式会社日立製作所 仮想計算機システムおよび仮想計算機システムにおけるエラー回復方法ならびに仮想計算機制御プログラム
US20100107148A1 (en) * 2008-10-28 2010-04-29 International Business Machines Corporation Check-stopping firmware implemented virtual communication channels without disabling all firmware functions
US8010838B2 (en) * 2008-11-20 2011-08-30 International Business Machines Corporation Hardware recovery responsive to concurrent maintenance
US8144582B2 (en) * 2008-12-30 2012-03-27 International Business Machines Corporation Differentiating blade destination and traffic types in a multi-root PCIe environment
JPWO2010084529A1 (ja) * 2009-01-23 2012-07-12 株式会社日立製作所 情報処理システム
US8112674B2 (en) * 2009-04-01 2012-02-07 International Business Machines Corporation Device activity triggered device diagnostics
TW201041336A (en) * 2009-05-07 2010-11-16 Jmicron Technology Corp Network control circuit having pseudo hot plug function and pseudo hot plug method for network control circuit
US8510592B1 (en) * 2009-09-15 2013-08-13 Netapp, Inc. PCI error resilience
JP4873073B2 (ja) * 2009-12-16 2012-02-08 日本電気株式会社 情報処理装置及び情報処理装置の障害復旧方法
US8151147B2 (en) * 2009-12-17 2012-04-03 Hewlett-Packard Development Company, L.P. Synchronize error handling for a plurality of partitions
US8234515B2 (en) * 2010-04-01 2012-07-31 Accenture Global Services Limited Repurposable recovery environment
US8504754B2 (en) 2010-06-23 2013-08-06 International Business Machines Corporation Identification of types of sources of adapter interruptions
US8918573B2 (en) 2010-06-23 2014-12-23 International Business Machines Corporation Input/output (I/O) expansion response processing in a peripheral component interconnect express (PCIe) environment
US8635430B2 (en) 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US8645767B2 (en) 2010-06-23 2014-02-04 International Business Machines Corporation Scalable I/O adapter function level error detection, isolation, and reporting
US8745292B2 (en) 2010-06-23 2014-06-03 International Business Machines Corporation System and method for routing I/O expansion requests and responses in a PCIE architecture
US8639858B2 (en) 2010-06-23 2014-01-28 International Business Machines Corporation Resizing address spaces concurrent to accessing the address spaces
US8572635B2 (en) 2010-06-23 2013-10-29 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification
US9213661B2 (en) * 2010-06-23 2015-12-15 International Business Machines Corporation Enable/disable adapters of a computing environment
US8615645B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Controlling the selectively setting of operational parameters for an adapter
US8683108B2 (en) 2010-06-23 2014-03-25 International Business Machines Corporation Connected input/output hub management
US8510599B2 (en) 2010-06-23 2013-08-13 International Business Machines Corporation Managing processing associated with hardware events
US8650337B2 (en) 2010-06-23 2014-02-11 International Business Machines Corporation Runtime determination of translation formats for adapter functions
US8566480B2 (en) 2010-06-23 2013-10-22 International Business Machines Corporation Load instruction for communicating with adapters
US8478922B2 (en) 2010-06-23 2013-07-02 International Business Machines Corporation Controlling a rate at which adapter interruption requests are processed
US8615622B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Non-standard I/O adapters in a standardized I/O architecture
US8650335B2 (en) 2010-06-23 2014-02-11 International Business Machines Corporation Measurement facility for adapter functions
US8505032B2 (en) 2010-06-23 2013-08-06 International Business Machines Corporation Operating system notification of actions to be taken responsive to adapter events
US8549182B2 (en) 2010-06-23 2013-10-01 International Business Machines Corporation Store/store block instructions for communicating with adapters
US9195623B2 (en) 2010-06-23 2015-11-24 International Business Machines Corporation Multiple address spaces per adapter with address translation
US9342352B2 (en) 2010-06-23 2016-05-17 International Business Machines Corporation Guest access to address spaces of adapter
US8468284B2 (en) 2010-06-23 2013-06-18 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification to a guest operating system
US8621112B2 (en) 2010-06-23 2013-12-31 International Business Machines Corporation Discovery by operating system of information relating to adapter functions accessible to the operating system
US8626970B2 (en) 2010-06-23 2014-01-07 International Business Machines Corporation Controlling access by a configuration to an adapter function
US8645606B2 (en) 2010-06-23 2014-02-04 International Business Machines Corporation Upbound input/output expansion request and response processing in a PCIe architecture
US8261128B2 (en) * 2010-08-04 2012-09-04 International Business Machines Corporation Selection of a domain of a configuration access
US20130254868A1 (en) * 2010-10-13 2013-09-26 Zte Usa Inc System and method for multimedia multi-party peering (m2p2)
US8645755B2 (en) * 2010-12-15 2014-02-04 International Business Machines Corporation Enhanced error handling for self-virtualizing input/output device in logically-partitioned data processing system
JP5548647B2 (ja) * 2011-04-25 2014-07-16 株式会社日立製作所 計算機システムでの部分障害処理方法
US8719626B2 (en) 2011-09-28 2014-05-06 International Business Machines Corporation Proactively removing channel paths in error from a variable scope of I/O devices
US9288161B2 (en) * 2011-12-05 2016-03-15 International Business Machines Corporation Verifying the functionality of an integrated circuit
JP6032510B2 (ja) * 2012-06-06 2016-11-30 インテル・コーポレーション 入出力エラー封じ込めイベント後のリカバリ
US9372786B1 (en) * 2012-06-13 2016-06-21 Amazon Technologies, Inc. Constructing state-transition functions for mobile devices
US9160472B2 (en) * 2012-09-07 2015-10-13 National Instruments Corporation Clock synchronization over a switched fabric
EP2869201B1 (en) * 2013-09-11 2017-12-06 Huawei Technologies Co., Ltd. Failure processing method, computer system, and apparatus
US9766916B2 (en) 2014-05-05 2017-09-19 International Business Machines Corporation Implementing coherent accelerator function isolation for virtualization
US9632854B2 (en) 2014-11-05 2017-04-25 International Business Machines Corporation Electronic system configuration management
US9792171B2 (en) 2015-10-26 2017-10-17 International Business Machines Corporation Multiple reset modes for a PCI host bridge
US10591977B2 (en) * 2015-12-10 2020-03-17 Arm Limited Segregated power state control in a distributed cache system
US10042720B2 (en) 2016-02-22 2018-08-07 International Business Machines Corporation Live partition mobility with I/O migration
US10042723B2 (en) 2016-02-23 2018-08-07 International Business Machines Corporation Failover of a virtual function exposed by an SR-IOV adapter
US10002018B2 (en) 2016-02-23 2018-06-19 International Business Machines Corporation Migrating single root I/O virtualization adapter configurations in a computing system
US10025584B2 (en) 2016-02-29 2018-07-17 International Business Machines Corporation Firmware management of SR-IOV adapters
US10990468B2 (en) * 2016-03-14 2021-04-27 Hitachi, Ltd. Computing system and error handling method for computing system
US9720863B1 (en) 2016-10-21 2017-08-01 International Business Machines Corporation Migrating MMIO from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system
US9720862B1 (en) 2016-10-21 2017-08-01 International Business Machines Corporation Migrating interrupts from a source I/O adapter of a computing system to a destination I/O adapter of the computing system
US9715469B1 (en) 2016-10-21 2017-07-25 International Business Machines Corporation Migrating interrupts from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system
US9785451B1 (en) * 2016-10-21 2017-10-10 International Business Machines Corporation Migrating MMIO from a source I/O adapter of a computing system to a destination I/O adapter of the computing system
US10235310B2 (en) 2016-11-29 2019-03-19 International Business Machines Corporation Deallocation of memory buffer in multiprocessor systems
US10248485B2 (en) 2016-12-16 2019-04-02 International Business Machines Corporation Dual physical-channel systems firmware initialization and recovery
US10929232B2 (en) 2017-05-31 2021-02-23 Intel Corporation Delayed error processing
CN109086081B (zh) * 2018-06-29 2020-11-03 深圳市同泰怡信息技术有限公司 一种即时提示SATA和NVMe设备在位变化的方法、系统及介质
US20200019412A1 (en) * 2018-07-12 2020-01-16 Dell Products L.P. Systems and methods for optimal configuration of information handling resources
EP3837608A2 (en) * 2018-08-13 2021-06-23 Stratus Technologies Ireland Limited High reliability fault tolerant computer architecture
US10922203B1 (en) * 2018-09-21 2021-02-16 Nvidia Corporation Fault injection architecture for resilient GPU computing
CN109933464B (zh) * 2019-02-28 2021-04-30 深圳市伟文无线通讯技术有限公司 mifi软件自我修复方法
US11249872B1 (en) * 2020-06-26 2022-02-15 Xilinx, Inc. Governor circuit for system-on-chip

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4228496A (en) * 1976-09-07 1980-10-14 Tandem Computers Incorporated Multiprocessor system
US5394542A (en) * 1992-03-30 1995-02-28 International Business Machines Corporation Clearing data objects used to maintain state information for shared data at a local complex when at least one message path to the local complex cannot be recovered
US6032271A (en) * 1996-06-05 2000-02-29 Compaq Computer Corporation Method and apparatus for identifying faulty devices in a computer system
US5978938A (en) * 1996-11-19 1999-11-02 International Business Machines Corporation Fault isolation feature for an I/O or system bus
US5991900A (en) * 1998-06-15 1999-11-23 Sun Microsystems, Inc. Bus controller
US6643727B1 (en) * 2000-06-08 2003-11-04 International Business Machines Corporation Isolation of I/O bus errors to a single partition in an LPAR environment
US20020184576A1 (en) * 2001-03-29 2002-12-05 International Business Machines Corporation Method and apparatus for isolating failing hardware in a PCI recoverable error
US6829729B2 (en) * 2001-03-29 2004-12-07 International Business Machines Corporation Method and system for fault isolation methodology for I/O unrecoverable, uncorrectable error
US6901537B2 (en) * 2002-02-27 2005-05-31 International Business Machines Corporation Method and apparatus for preventing the propagation of input/output errors in a logical partitioned data processing system
US6976191B2 (en) * 2002-03-07 2005-12-13 International Business Machines Corporation Method and apparatus for analyzing hardware errors in a logical partitioned data processing system
US6934888B2 (en) * 2002-03-07 2005-08-23 International Business Machines Corporation Method and apparatus for enhancing input/output error analysis in hardware sub-systems

Also Published As

Publication number Publication date
US7549090B2 (en) 2009-06-16
US7134052B2 (en) 2006-11-07
US20060281630A1 (en) 2006-12-14
JP2004342109A (ja) 2004-12-02
US20040230861A1 (en) 2004-11-18
JP4001877B2 (ja) 2007-10-31
KR20040098520A (ko) 2004-11-20

Similar Documents

Publication Publication Date Title
KR100612715B1 (ko) 입/출력 패브릭 내의 하드웨어 에러로부터의 자율 복구
JP3954088B2 (ja) 論理分割された(lpar)計算機でシステム・ファームウェア更新を安全に実行する機構
US9619308B2 (en) Executing a kernel device driver as a user space process
US7937518B2 (en) Method, apparatus, and computer usable program code for migrating virtual adapters from source physical adapters to destination physical adapters
US8195867B2 (en) Controlled shut-down of partitions within a shared memory partition data processing system
US6865688B2 (en) Logical partition management apparatus and method for handling system reset interrupts
US7657776B2 (en) Containing machine check events in a virtual partition
EP1083483A1 (en) Software migration on an active processing element
KR20040102074A (ko) 데이터 관리 방법, 데이터 처리 시스템 및 컴퓨터 프로그램
JP2012203636A (ja) 仮想計算機の制御方法及び計算機
JP2004240970A (ja) 無効な論理区画の資源を動的に割り振る装置および方法
US20140143372A1 (en) System and method of constructing a memory-based interconnect between multiple partitions
US7500051B2 (en) Migration of partitioned persistent disk cache from one host to another
US10768940B2 (en) Restoring a processing unit that has become hung during execution of an option ROM
CN114115703A (zh) 裸金属服务器在线迁移方法以及系统
EP0851352B1 (en) Input/output control device and method applied to fault-resilient computer system
US20220391254A1 (en) Information processing device, operation control method, and computer-readable recording medium storing operation control program
EP4195021A1 (en) Online migration method and system for bare metal server

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
FPAY Annual fee payment

Payment date: 20120725

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20130719

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140725

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150728

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee