專利名稱:用于在經(jīng)過邏輯分區(qū)的計算機系統(tǒng)中控制資源轉(zhuǎn)移的裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及數(shù)據(jù)處理,更具體地涉及在計算機系統(tǒng)中的共享資源的分配。
背景技術(shù):
自從計算機時代的開始,計算機系統(tǒng)已經(jīng)發(fā)展成可以在許多不同場景中找到的非常高級的設(shè)備。計算機系統(tǒng)典型地包括硬件(例如,半導(dǎo)體、電路板等)和軟件(例如,計算機程序)的組合。由于半導(dǎo)體處理和計算機體系結(jié)構(gòu)的進(jìn)步將計算機硬件的性能推向更高,所以已經(jīng)發(fā)展更高級的計算機軟件來利用硬件的更高性能,這導(dǎo)致了比僅幾年前更加強大的今天的計算機系統(tǒng)。
在特定計算機系統(tǒng)中的硬件和軟件的組合定義了計算環(huán)境。這樣,不同的硬件平臺和不同的操作系統(tǒng)提供不同的計算環(huán)境。在最近幾年,工程師已經(jīng)認(rèn)識到有可能通過將計算機系統(tǒng)資源邏輯分區(qū)為不同的計算機系統(tǒng)來在相同的物理計算機系統(tǒng)上提供不同的計算環(huán)境。IBM開發(fā)的iSeries計算機系統(tǒng)是支持邏輯分區(qū)的計算機系統(tǒng)的例子。如果需要在iSeries計算機系統(tǒng)上的邏輯分區(qū),則安裝允許在相同的平臺上定義不同的計算環(huán)境的資源和分區(qū)管理器代碼(在iSeries術(shù)語中稱作“管理程序(hypervisor)”)。一旦安裝了資源和分區(qū)管理器,則可以創(chuàng)建定義不同計算環(huán)境的邏輯分區(qū)。資源和分區(qū)管理器管理邏輯分區(qū),以確保這些邏輯分區(qū)可以共享在計算機系統(tǒng)中需要的資源,同時保持由邏輯分區(qū)定義的單獨計算環(huán)境。
包括多個邏輯分區(qū)的計算機系統(tǒng)典型地在在邏輯分區(qū)之間共享資源。例如,可以定義具有兩個邏輯分區(qū)的計算機系統(tǒng),其中將CPU的50%分配給每個分區(qū)、將存儲器的33%分配給第一分區(qū)并將存儲器的67%分配給第二分區(qū)、以及以每個分區(qū)各一個的方式將兩個不同的I/O槽分配給兩個邏輯分區(qū)。一旦定義了邏輯分區(qū)且將共享資源分配給邏輯分區(qū),則每個邏輯分區(qū)充當(dāng)單獨的計算機系統(tǒng)。這樣,在上面的具有兩個邏輯分區(qū)的單個計算機系統(tǒng)的例子中,該兩個邏輯分區(qū)實際上看來似乎是兩個單獨且不同的計算機系統(tǒng)。
當(dāng)硬件資源需要在邏輯分區(qū)間轉(zhuǎn)移時,發(fā)生公知的經(jīng)過邏輯分區(qū)的計算機系統(tǒng)的一個問題。例如,如果需要將在第一邏輯分區(qū)中的PCI槽轉(zhuǎn)移到第二邏輯分區(qū),則必須首先將PCI槽從第一邏輯分區(qū)移除,然后可以將該PCI槽分配給第二邏輯分區(qū)。然而,應(yīng)當(dāng)注意,在現(xiàn)有技術(shù)中,一旦已經(jīng)將PCI槽從第一邏輯分區(qū)移除,兩個邏輯分區(qū)可能會同時競爭對PCI槽的控制。另外,當(dāng)將PCI槽分配給不同的邏輯分區(qū)時,它可能包含在特定情況下可能被泄露的來自先前邏輯分區(qū)的數(shù)據(jù)。此外,可能在適合于第一邏輯分區(qū)的特定狀態(tài)下配置PCI槽,但是該特定狀態(tài)不一定適合于第二邏輯分區(qū)。沒有在經(jīng)過邏輯分區(qū)的計算機系統(tǒng)中動態(tài)地轉(zhuǎn)移I/O資源的方法,其中該計算機系統(tǒng)沒有在本技術(shù)領(lǐng)域內(nèi)公知的缺點,計算機工業(yè)將繼續(xù)遭受潛在的不安全和效率低的機制和方法,其用于在經(jīng)過邏輯分區(qū)的計算機系統(tǒng)中執(zhí)行I/O資源轉(zhuǎn)移。
發(fā)明內(nèi)容
一種資源和分區(qū)管理器包括通電/斷電機制,其中當(dāng)從邏輯分區(qū)移除資源的控制時,該機制用于確保硬件資源被掉電,并且當(dāng)將硬件資源的控制轉(zhuǎn)移到邏輯分區(qū)時確保該硬件資源被加電。可替換地,當(dāng)將硬件資源轉(zhuǎn)移到邏輯分區(qū)時,資源和分區(qū)管理器可以簡單地將硬件資源置于通電復(fù)位狀態(tài)。以這種方式,當(dāng)變得可用于分區(qū)時,硬件資源處于通電復(fù)位狀態(tài),其中該通電復(fù)位狀態(tài)典型地是邏輯分區(qū)所期望的狀態(tài)。
本優(yōu)選實施例非常適合于在經(jīng)過邏輯分區(qū)的計算機系統(tǒng)中控制對I/O槽的訪問。然而,應(yīng)當(dāng)注意,也可能使用在這里公開的優(yōu)選實施例來控制對其它硬件資源的訪問,例如I/O總線、I/O通信通道、虛擬I/O槽或設(shè)備、CPU、以及存儲器。
根據(jù)下面對本發(fā)明的優(yōu)選實施例的更具體描述,本發(fā)明的前述和其它特征和優(yōu)點將會變得清楚,其中附圖示出了本發(fā)明的這些優(yōu)選實施例圖1是根據(jù)優(yōu)選實施例的支持邏輯分區(qū)和I/O資源分配的計算機裝置的方框圖;圖2是示出根據(jù)優(yōu)選實施例的可以在經(jīng)過邏輯分區(qū)的計算機系統(tǒng)中使用的一個特定硬件實現(xiàn)的更詳細(xì)方框圖;圖3是根據(jù)優(yōu)選實施例的可以在圖2所示的硬件系統(tǒng)上實現(xiàn)的特定的經(jīng)過邏輯分區(qū)的軟件實現(xiàn)的方框圖;圖4是根據(jù)優(yōu)選實施例的用于重新啟動邏輯分區(qū)的方法的流程圖;圖5是根據(jù)優(yōu)選實施例的用于關(guān)閉邏輯分區(qū)的方法的流程圖;圖6是根據(jù)優(yōu)選實施例的用于對邏輯分區(qū)加電的方法的流程圖;圖7是根據(jù)優(yōu)選實施例的用于使邏輯分區(qū)放棄對它所擁有的槽的控制的的方法的流程圖;以及圖8是根據(jù)優(yōu)選實施例的用于使邏輯分區(qū)重新得到對它所擁有的槽的控制的方法的流程圖。
具體實施例方式
根據(jù)本發(fā)明的優(yōu)選實施例,當(dāng)將硬件資源分配給邏輯分區(qū)時,通電/斷電機制確保使硬件資源處于通電復(fù)位狀態(tài)??梢酝ㄟ^下述途徑來實現(xiàn)這一點通過向硬件資源上的一個或多個存儲器位置寫入在對硬件資源加電時將期望的值,或者通過當(dāng)將硬件資源從邏輯分區(qū)移除時使硬件資源斷電并且當(dāng)將硬件資源分配給邏輯分區(qū)時使硬件資源通電。以這種方式,確保了每個邏輯分區(qū)在它的通電復(fù)位狀態(tài)都看到硬件資源。對于I/O槽的具體例子,通過將I/O槽中的適配器置于通電復(fù)位狀態(tài)(或者通過將適當(dāng)?shù)闹祵懙竭m配器,或者通過對包含適配器的I/O槽進(jìn)行通電/斷電循環(huán)),通電/斷電機制確保當(dāng)將I/O槽分配給不同的邏輯分區(qū)時來自插入到槽中的I/O適配器的數(shù)據(jù)和配置信息都被清除。另外,可以將硬件資源暫時地從它們的邏輯分區(qū)轉(zhuǎn)移到資源和分區(qū)管理器,以便在硬件資源或者包含該硬件資源的物理封裝組件上執(zhí)行硬件服務(wù)操作。當(dāng)硬件服務(wù)完成時,將硬件資源轉(zhuǎn)移到它們的邏輯分區(qū)。
應(yīng)當(dāng)注意,在說明書和權(quán)利要求書中使用的術(shù)語“硬件資源”在這里表示可以被獨立地分配給邏輯分區(qū)的在計算機系統(tǒng)中的任何整體或者部分硬件。硬件資源的例子包括物理I/O槽、物理封裝中的一組I/O槽、部分處理器、以及部分存儲器。這里給出的優(yōu)選實施例使用I/O槽的具體例子,作為可以獨立分配給邏輯分區(qū)的硬件資源。然而,應(yīng)當(dāng)注意的是,可以獨立分配給邏輯分區(qū)的任何硬件或硬件部分都落入到在這里使用的術(shù)語“硬件資源”的范圍內(nèi)。
參考圖1,計算機系統(tǒng)100是增強的IBM eServer iSeries計算機系統(tǒng),并表示根據(jù)優(yōu)選實施例的一種合適類型的支持邏輯分區(qū)和資源分配的計算機系統(tǒng)。本領(lǐng)域的技術(shù)人員應(yīng)該理解,本發(fā)明的機制和裝置可以同樣地應(yīng)用到支持邏輯分區(qū)的任何計算機系統(tǒng)。如圖1所示,計算機系統(tǒng)100包括一個或多個連接到主存儲器120的處理器110、大容量存儲裝置接口130、顯示器接口140、網(wǎng)絡(luò)接口150、以及多個I/O槽180。這些系統(tǒng)組件通過使用系統(tǒng)總線160而相互連接。大容量存儲裝置接口130用于將大容量存儲設(shè)備(諸如直接訪問存儲設(shè)備155)連接到計算機系統(tǒng)100。直接訪問存儲設(shè)備的一個特定類型是可從CD RW 195讀取數(shù)據(jù)的CD RW驅(qū)動器。注意,實際上可以在連接到I/O槽180的適配器中實現(xiàn)大容量存儲裝置接口130、顯示器接口140、以及網(wǎng)絡(luò)接口150。
主存儲器120包含資源和分區(qū)管理器121、I/O槽鎖機制122、通電/斷電槽機制124、以及在圖1中以邏輯分區(qū)125A至125N示出的N個邏輯分區(qū)125。資源和分區(qū)管理器121優(yōu)選地創(chuàng)建這些N個邏輯分區(qū)125。每個邏輯分區(qū)優(yōu)選地包括在圖1中以操作系統(tǒng)126A至126N示出的對應(yīng)操作系統(tǒng)126。
I/O槽鎖機制122通過定義多個槽鎖123來管理對I/O槽180的訪問,其中一個槽鎖123優(yōu)選地對應(yīng)于每個I/O槽180。當(dāng)需要將I/O槽分配給邏輯分區(qū)時,資源和分區(qū)管理器檢查對應(yīng)的槽鎖以查看I/O槽是否可用。如果對應(yīng)的槽鎖由不同的邏輯分區(qū)擁有,則該I/O槽處于那個邏輯分區(qū)的控制之下。如果對應(yīng)的槽鎖由資源和分區(qū)管理器擁有或者未被分配,則通過資源和分區(qū)管理器設(shè)置對應(yīng)的槽鎖并將I/O槽分配給發(fā)出請求的邏輯分區(qū),可以控制該I/O槽。以這種方式,槽鎖123有效地用作指示對應(yīng)的I/O槽是否可用的信號燈。
通電/斷電槽機制124用于確保在將I/O槽從邏輯分區(qū)移除之前使該槽掉電,并用于確保當(dāng)將槽分配給邏輯分區(qū)時對槽加電。在現(xiàn)有技術(shù)中,可以將I/O槽從一個邏輯分區(qū)移除并將其分配給不同的邏輯分區(qū)。然而,執(zhí)行這一重新分配導(dǎo)致兩個可能問題。第一個問題是數(shù)據(jù)完整性的問題。當(dāng)I/O槽被重新分配給不同的邏輯分區(qū)時,來自在第一邏輯分區(qū)中運行的進(jìn)程的數(shù)據(jù)可能保留在插入到I/O槽的I/O適配器中。在理論上,具有足夠技術(shù)的人有可能可以破解(hack into)來自第二邏輯分區(qū)的該數(shù)據(jù),這將泄露來自第一邏輯分區(qū)的數(shù)據(jù)。第二個問題是接收I/O槽的新邏輯分區(qū)不知道I/O槽的當(dāng)前配置。事實上,因為邏輯分區(qū)像不同的計算機系統(tǒng)一樣工作,所以邏輯分區(qū)自動地假設(shè)當(dāng)將I/O適配器分配給邏輯分區(qū)時該I/O適配器處于通電復(fù)位狀態(tài)。這在沒有經(jīng)過邏輯分區(qū)的計算機系統(tǒng)中當(dāng)然是合理的假設(shè)。如果I/O適配器將在兩個不同的計算機系統(tǒng)之間進(jìn)行物理轉(zhuǎn)移,則將該I/O適配器從第一計算機系統(tǒng)拔出并插入到第二計算機系統(tǒng)中。其結(jié)果是在計算機系統(tǒng)之間轉(zhuǎn)移的期間在I/O適配器上進(jìn)行通電/斷電循環(huán),從而清除其數(shù)據(jù)并使該I/O適配器處于通電復(fù)位狀態(tài)。當(dāng)計算機系統(tǒng)第一次啟動時,接收到I/O適配器的第二計算機系統(tǒng)知道I/O適配器處于通電復(fù)位狀態(tài)。然而,該假設(shè)在經(jīng)過邏輯分區(qū)的計算機系統(tǒng)的情況下并不成立。相反,現(xiàn)有技術(shù)允許在分區(qū)之間轉(zhuǎn)移I/O資源,而不執(zhí)行任何斷電或通電循環(huán),從而導(dǎo)致上述兩個問題。通電/斷電槽機制124通過當(dāng)將槽分配給邏輯分區(qū)時確保將I/O槽置于通電復(fù)位狀態(tài)來解決這個問題。在第一個特定實施例中,通過將適當(dāng)?shù)闹祵懙絀/O槽的適配器上的一個或多個存儲器位置來使適配器處于通電狀態(tài),將I/O槽置于通電復(fù)位狀態(tài)。在第二個特定實施例中,當(dāng)將I/O槽從一個邏輯分區(qū)移除并將其分配給不同的邏輯分區(qū)時,在I/O槽上一直進(jìn)行通電/斷電循環(huán),這有可能中斷(disrupt)只影響該I/O槽而不影響可以共享相同物理封裝的其它槽的操作。以這種方式,每個邏輯分區(qū)都可以正確地假設(shè)當(dāng)邏輯分區(qū)第一次啟動時或者當(dāng)激活的邏輯分區(qū)接收到I/O適配器的控制時I/O適配器是處于它的通電復(fù)位狀態(tài)。
操作系統(tǒng)126是多任務(wù)操作系統(tǒng),諸如OS/400、AIX、或者Linux;然而,本領(lǐng)域的技術(shù)人員將理解,本發(fā)明的精神和范圍不限于任何一個操作系統(tǒng)??梢允褂萌魏魏线m的操作系統(tǒng)。操作系統(tǒng)126是包含低級代碼來管理計算機系統(tǒng)100的資源的成熟程序。部分這些資源是處理器110、主存儲器120、大容量存儲裝置接口130、顯示器接口140、網(wǎng)絡(luò)接口150、系統(tǒng)總線160、以及I/O槽180。每個分區(qū)中的操作系統(tǒng)126可以與其它分區(qū)中的操作系統(tǒng)一樣,或者可以是完全不同的操作系統(tǒng)。這樣,一個分區(qū)可以運行OS/400操作系統(tǒng),同時不同的分區(qū)可以運行OS/400的另一個實例,其有可能是不同的發(fā)布版本,或者具有不同的環(huán)境設(shè)置(例如,時區(qū))。邏輯分區(qū)中的操作系統(tǒng)甚至可以與OS/400不同,只要該操作系統(tǒng)與硬件兼容即可(諸如AIX或者Linux)。以這種方式,邏輯分區(qū)可以在相同的物理計算機系統(tǒng)上提供完全不同的計算環(huán)境。
在圖1中示出了分區(qū)125A-125N,其駐留在主存儲器120內(nèi)。然而,本領(lǐng)域的技術(shù)人員將認(rèn)識到分區(qū)是包括不同于存儲器的資源的邏輯構(gòu)造。邏輯分區(qū)典型地隨同處理器容量和其它系統(tǒng)資源如I/O槽180的分配一起指定部分存儲器。因此,可以將一個分區(qū)定義為包括與一個或多個I/O處理器一起的兩個處理器和部分存儲器120,其中該I/O處理器可以提供大容量存儲裝置接口130、顯示器接口140、網(wǎng)絡(luò)接口150、或者與插入到I/O槽180中的I/O設(shè)備的接口的功能。然后,可以將另一個分區(qū)定義為包括三個其它處理器、存儲器120的不同部分、以及一個或多個I/O處理器。圖1所示的分區(qū)象征性地表示將包括計算機系統(tǒng)100內(nèi)的存儲器120之外的系統(tǒng)資源。也應(yīng)當(dāng)注意,資源和分區(qū)管理器121、I/O槽鎖機制122、以及通電/斷電槽機制124優(yōu)選地駐留在與分區(qū)分開的存儲器和硬件中,并且是對分區(qū)不是直接可用的設(shè)施和機制??商鎿Q地,I/O槽鎖機制122和通電/斷電槽機制124可以駐留于在計算機系統(tǒng)100中定義的分區(qū)的任一個中、或者甚至駐留于經(jīng)由網(wǎng)絡(luò)170連接到計算機系統(tǒng)100的計算機系統(tǒng)175上。
計算機系統(tǒng)100利用公知的虛擬尋址機制,其中該虛擬尋址機制允許計算機系統(tǒng)100的程序表現(xiàn)得就像是它們僅有對單個大型存儲實體的訪問,而非對諸如主存儲器120和DASD設(shè)備155的多個較小存儲實體的訪問。因此,盡管將資源和分區(qū)管理器121和分區(qū)125A-125N示出為駐留于主存儲器120內(nèi),但是本領(lǐng)域的技術(shù)人員將認(rèn)識到這些項目不一定全都同時包含在主存儲器120中。還應(yīng)該注意,這里使用的術(shù)語“存儲器”通常指的是計算機系統(tǒng)100的整個虛擬存儲器。
可以從一個或多個微處理器和/或集成電路構(gòu)造處理器110。處理器110執(zhí)行存儲在主存儲器120中的程序指令。主存儲器120存儲處理器110可以訪問的程序和數(shù)據(jù)。當(dāng)計算機系統(tǒng)100啟動時,處理器100開始執(zhí)行構(gòu)成資源和分區(qū)管理器121的程序指令,其中資源和分區(qū)管理器121初始化邏輯分區(qū)中的操作系統(tǒng)。
盡管將計算機系統(tǒng)100示出為僅包含單個系統(tǒng)總線,但是本領(lǐng)域的技術(shù)人員將理解,可以用具有多條總線的計算機系統(tǒng)來實施本發(fā)明。另外,在優(yōu)選實施例中使用的I/O接口每一個都可能包括用于從處理器110卸載計算密集處理的單獨、完全編程的微處理器(如iSeries輸入/輸出處理器),或者可以是簡單工業(yè)標(biāo)準(zhǔn)I/O適配器(IOA)。
顯示器接口140用于直接將一個或多個顯示器165連接到計算機系統(tǒng)100。可以是非智能(例如,啞)終端或者完全可編程工作站的這些顯示器165用于允許系統(tǒng)管理員和用戶與計算機系統(tǒng)100通信。然而,應(yīng)當(dāng)注意,盡管提供了顯示器接口140來支持與一個或多個顯示器165的通信,但是計算機系統(tǒng)100不一定需要顯示器165,因為可以通過網(wǎng)絡(luò)接口150發(fā)生所有需要的與用戶和其它進(jìn)程的交互。
網(wǎng)絡(luò)接口150用于跨越網(wǎng)絡(luò)170將其它計算機系統(tǒng)和/或工作站(例如,圖1中的175)連接到計算機系統(tǒng)100。不管是使用現(xiàn)在的模擬和/或數(shù)字技術(shù)還是經(jīng)由將來的某網(wǎng)絡(luò)化機制來進(jìn)行網(wǎng)絡(luò)連接170,無論計算機系統(tǒng)100如何連接到其它計算機系統(tǒng)和/或工作站,本發(fā)明都同樣適用。另外,許多不同的網(wǎng)絡(luò)協(xié)議可以用于實現(xiàn)網(wǎng)絡(luò)。這些協(xié)議是允許計算機跨越網(wǎng)絡(luò)170通信的專用計算機程序。TCP/IP(傳輸控制協(xié)議/因特網(wǎng)協(xié)議)是適合的網(wǎng)絡(luò)協(xié)議的一個例子。
在這點上,值得注意的是,盡管已經(jīng)并將繼續(xù)在全功能計算機系統(tǒng)的上下文中描述本發(fā)明,但是本領(lǐng)域的技術(shù)人員將理解,本發(fā)明能夠作為程序產(chǎn)品以各種形式分發(fā),并且不管用于事實上執(zhí)行該分發(fā)的計算機可讀信號承載介質(zhì)的具體類型,本發(fā)明都同樣適用。合適的信號承載介質(zhì)的例子包括諸如軟盤和CD RW(例如,圖1的195)的可記錄型介質(zhì)、以及諸如數(shù)字和模擬通信鏈路的傳輸型介質(zhì)。
圖1示出根據(jù)優(yōu)選實施例的硬件和軟件二者的一些顯著特征的樣例計算機系統(tǒng)?,F(xiàn)在,我們提供圖2和3中的更詳細(xì)實現(xiàn)。圖2是根據(jù)優(yōu)選實施例的支持邏輯分區(qū)和I/O資源分配的計算機系統(tǒng)的硬件圖。一個物理封裝210包含經(jīng)由系統(tǒng)總線160連接到一起的一個或多個CPU 110和存儲器120。第二封裝220是容納了連接到總線212的I/O組件的封裝,其中總線212連接到系統(tǒng)總線160。我們對這個具體例子假設(shè)PCI組件是包含在封裝220內(nèi)的I/O組件。PCI主機橋230連接到總線212,并提供與多個PCI至PCI橋240的接口。在圖2中,存在兩個PCI主機橋230A和230B。PCI主機橋230A提供與四個PCI至PCI橋240A-240D的接口,同時PCI主機橋230B提供與四個PCI至PCI橋240E-240H的接口。每個PCI至PCI橋240連接到單個PCI適配器槽250。這樣,PCI至PCI橋240A連接到對應(yīng)的PCI適配器槽250A;PCI至PCI橋240B連接到對應(yīng)的PCI適配器槽250B,如此下去直到PCI至PCI橋240H連接到對應(yīng)的PCI適配器槽250H。
每個PCI主機橋230經(jīng)由主PCI總線260連接到PCI至PCI橋240。圖2示出兩個主PCI總線260A和260B。PCI至PCI橋240經(jīng)由從PCI總線270又連接到PCI適配器槽250。圖2示出八個從PCI總線270,即連接到它們對應(yīng)的PCI適配器槽250A-250H的270A-270H。PCI適配器槽250可以是接收PCI適配器卡的連接器,或者是直接嵌入到包含對應(yīng)的PCI至PCI橋240或者PCI主機橋230的電子襯底上的PCI適配器芯片。邏輯分區(qū)操作系統(tǒng)將CPU地址“綁定”到用于從CPU到適配器的存儲器映射I/O的PCI適配器存儲器,并將存儲器地址綁定到適配器,以使適配器能夠執(zhí)行到和從經(jīng)過映射的存儲器地址的直接存儲器訪問(DMA)操作。
在優(yōu)選實施例中,在PCI主機橋230和PCI適配器槽250之間PCI至PCI橋240的存在提供了PCI適配器槽250的各個PCI適配器和PCI主機橋230、CPU 110以及存儲器120之間的信令和適配器綁定隔離。該隔離有助于向不同邏輯分區(qū)分配各個PCI適配器槽,使得這些分區(qū)可以共享共同連接到PCI至PCI橋240的平臺硬件,但是分配給其它分區(qū)的適配器的操作不中斷分配給特定分區(qū)的適配器的操作,并且強制(enforce)適配器地址綁定,使得沒有分區(qū)或適配器可以使用另一個分區(qū)-適配器綁定。應(yīng)當(dāng)注意,允許槽級分配和綁定的其它隔離方法也在優(yōu)選實施例的范圍之內(nèi),例如將每個槽與單個PCI主機橋相關(guān)聯(lián)。
在圖1中所示的通電/斷電槽機制124優(yōu)選地控制每個PCI主機橋230中或者每個PCI至PCI橋240中的槽功率控制硬件。如上面參考圖1所討論的那樣,通電/斷電槽機制124可以對特定槽250施加到或移除電功率,而與平臺的其它I/O組件包括其它槽的功率狀態(tài)無關(guān)。在最優(yōu)選的實施例中,每個PCI至PCI橋240中存在受控于通電/斷電槽機制124的通電/斷電控制硬件,該通電/斷電控制硬件控制其對應(yīng)槽250的功率。這樣,對于圖2所示的配置,PCI至PCI橋240A包括控制槽250A的功率的通電/斷電硬件;PCI至PCI橋240B包括控制槽250B的功率的通電/斷電硬件;對每一個PCI至PCI橋240都如此等等。這樣,對于圖2中的系統(tǒng),PCI至PCI橋240A到240H中的每一個將具有控制它們各自的槽250A-250H的通電/斷電硬件,并且它們由通電/斷電槽機制124控制。應(yīng)當(dāng)注意,通電/斷電硬件可能不一定物理地使槽掉電。優(yōu)選實施例顯然地擴展到用于將槽及其相關(guān)的適配器置于通電復(fù)位狀態(tài)的任何方法。例如,可以將一些適配器嵌入到印刷電路板上,而沒有單獨地控制適配器的功率的組件。在這種情況下,通電/斷電硬件可以通過刷新所有適配器數(shù)據(jù)來將適配器置于通電復(fù)位狀態(tài),并且通過將適當(dāng)?shù)闹祵懙竭m配器上的一個或多個存儲器位置來將適配器置于與它初始加電時相同的狀態(tài),而無需物理地對適配器進(jìn)行通電/斷電循環(huán)。
圖2所示的配置將平臺電子裝置分離到一個包含CPU 110和存儲器120的封裝210中,并且將PCI I/O硬件組件(例如,230、240、250、260、以及270)分離到單獨的封裝220中。這是在本技術(shù)領(lǐng)域內(nèi)公知的常見類型的分離。然而,應(yīng)當(dāng)注意,在小型計算機系統(tǒng)中,普遍具有包含在單個封裝中的圖2中的所有組件。在較大的系統(tǒng)中,可能有許多CPU和存儲器卡、以及需要更多PCI主機橋230和PCI至PCI橋240的許多PCI適配器槽,從而電子封裝技術(shù)需要多個包含這些硬件元件的電子封裝。該優(yōu)選實施例顯然地擴展到任何合適的硬件配置,而不管是全都包含在單個封裝中還是分布在多個封裝之間。
在優(yōu)選實施例中,可能期望在封裝220的組件例如電源、I/O槽、或者可能需要將電功率從該封裝的所有元件上移除的其它封裝組件上執(zhí)行硬件服務(wù)。在優(yōu)選實施例中,這是通過以下操作來完成的,即首先將該封裝內(nèi)的I/O槽的控制從它們的所分配邏輯分區(qū)轉(zhuǎn)移到資源和分區(qū)管理器,然后對該封裝斷電并執(zhí)行硬件服務(wù)、對該封裝通電、然后將I/O槽轉(zhuǎn)移回到它們的所分配邏輯分區(qū)。I/O槽鎖和用于在邏輯分區(qū)與資源和分區(qū)管理器之間轉(zhuǎn)移鎖的相關(guān)機制有助于該操作序列,同時邏輯分區(qū)繼續(xù)工作。應(yīng)當(dāng)注意,資源和分區(qū)管理器可以與硬件管理器協(xié)作,以執(zhí)行這些硬件管理功能。
圖3是示出可以在優(yōu)選實施例的范圍內(nèi)實現(xiàn)本發(fā)明的特定軟件組件的方框圖。應(yīng)當(dāng)注意,圖3所示的軟件組件將優(yōu)選地在諸如圖2所示的計算機系統(tǒng)200的硬件平臺上執(zhí)行。N個邏輯分區(qū)125A-125N被示出為執(zhí)行它們各自的操作系統(tǒng)126A-126N。管理程序300被示出為圖1中的資源和分區(qū)管理器121的一個具體實現(xiàn)。管理程序300包括運行操作系統(tǒng)內(nèi)核312的管理程序分區(qū)310。操作系統(tǒng)內(nèi)核312是可調(diào)度的且可重定位的,并提供操作系統(tǒng)內(nèi)核的典型功能,例如多任務(wù)處理和存儲器管理。管理程序分區(qū)310與其它邏輯分區(qū)幾乎一樣地執(zhí)行,但是不同于其它邏輯分區(qū)之處在于,它是多少有些私有或隱藏的分區(qū),該分區(qū)不支持用戶應(yīng)用,并且具有對控制平臺資源的特殊授權(quán)并且是被授權(quán)經(jīng)由HvPrimaryCall(管理程序主調(diào)用)接口330與不可調(diào)度的管理程序320通信的唯一分區(qū)。圖3中的管理程序分區(qū)310可以對應(yīng)于圖1中的分區(qū)125,這意味著操作系統(tǒng)內(nèi)核312也對應(yīng)于圖1中的操作系統(tǒng)126。在當(dāng)前的iSeries實現(xiàn)中,管理程序分區(qū)310可以被稱為“主分區(qū)”。管理程序分區(qū)310使用HvPrimaryCall接口330在有特權(quán)的、不可調(diào)度的管理程序模式中調(diào)用采用處理器執(zhí)行的管理程序功能。
邏輯分區(qū)經(jīng)由HvCall(管理程序調(diào)用)接口340與管理程序通信,邏輯分區(qū)使用該HvCall接口340來調(diào)用有特權(quán)的、不可調(diào)度的管理程序320。不可調(diào)度的管理程序320是不可調(diào)度的且不可重定位的監(jiān)督代理;它通過訪問物理地址起作用。不可調(diào)度的管理程序320提供通過下面任一種方式調(diào)用的特權(quán)模式功能1)當(dāng)管理程序分區(qū)正在計劃或調(diào)度邏輯分區(qū)執(zhí)行時通過HvPrimaryCall接口330;2)通過平臺硬件中斷;以及3)使用由HvCall接口340定義的處理器監(jiān)督調(diào)用指令從邏輯分區(qū)調(diào)用,其中處理器監(jiān)督調(diào)用指令將邏輯分區(qū)執(zhí)行線程置于管理程序執(zhí)行(即,有特權(quán)的)模式。
如圖3所示,管理程序硬件管理器350和I/O槽鎖123優(yōu)選地是不可調(diào)度的管理程序320內(nèi)的封裝功能,但是也可以在不同的位置實現(xiàn)。管理程序硬件管理器350封裝以下管理程序功能,即訪問和控制圖2中的PCI主機橋230和PCI至PCI橋240硬件,以及跟蹤和強制PCI適配器槽250的硬件狀態(tài)。槽鎖123封裝以下功能,即設(shè)置鎖的所有權(quán)以及序列化管理程序和邏輯分區(qū)之間的槽鎖轉(zhuǎn)移。
管理程序分區(qū)310與不可調(diào)度的管理程序320交互,以實現(xiàn)槽狀態(tài)和槽鎖轉(zhuǎn)變。管理程序分區(qū)310是系統(tǒng)管理員接口360的代理,并通過該接口執(zhí)行系統(tǒng)管理員370所請求的邏輯分區(qū)配置和平臺服務(wù)操作。應(yīng)當(dāng)注意,系統(tǒng)管理員370優(yōu)選地包括管理控制臺372和硬件管理控制臺374。
為了使不可調(diào)度的管理程序320啟動與管理程序分區(qū)310中的功能通信,不可調(diào)度的管理程序320將消息排入由管理程序分區(qū)310監(jiān)視的事件消息隊列314。一般而言,使用從不可調(diào)度的管理程序320到可調(diào)度的管理程序310的事件消息執(zhí)行復(fù)雜的硬件控制序列,諸如復(fù)位和初始化橋硬件、掃描虛擬地址翻譯表、以及執(zhí)行與硬件安置時間(hardware settle times)相關(guān)的實時延遲。管理程序分區(qū)310中的功能調(diào)用HvPrimaryCall接口330,以通知完成了不可調(diào)度的管理程序320已經(jīng)請求的操作,從而使這些硬件狀態(tài)與不可調(diào)度的管理程序功能同步。
作為配置邏輯分區(qū)所要使用的平臺資源的一部分,典型地將I/O槽分配給邏輯分區(qū)。然而,在任何給定的時間,系統(tǒng)管理員功能可以在邏輯分區(qū)是激活的時候啟動將I/O槽從使用該槽的邏輯分區(qū)轉(zhuǎn)移到另一個邏輯分區(qū),或者簡單地將該槽從邏輯分區(qū)的配置中移除。類似地,系統(tǒng)服務(wù)功能可以要求將槽控制從激活的邏輯分區(qū)轉(zhuǎn)移到管理程序或服務(wù)代理,以便執(zhí)行服務(wù)功能,例如單獨地服務(wù)那個槽或者服務(wù)相同封裝內(nèi)的其它硬件,其中該服務(wù)在不中斷那個封裝中的那個或其它槽的情況下不能被執(zhí)行。
優(yōu)選實施例的槽鎖幫助I/O槽控制在邏輯分區(qū)操作系統(tǒng)和管理程序之間或者在受控和未受控或未被分配的狀態(tài)之間的動態(tài)轉(zhuǎn)移,而不將I/O槽從用于邏輯分區(qū)的配置數(shù)據(jù)庫移除??梢詫⒉坻i分配給邏輯分區(qū)、管理程序,或者可以將其不分配給任何實體(包括邏輯分區(qū)和管理程序)。槽鎖不但提供管理程序和邏輯分區(qū)之間的互斥,它還提供了同步點以強制槽的功率和復(fù)位狀態(tài),并且移除OS虛擬地址空間與適配器PCI存儲器或I/O空間之間(存儲器映射綁定)以及OS存儲與到該存儲的適配器DMA映射之間的OS綁定(例如,翻譯成邏輯分區(qū)存儲器中的存儲地址的PCI存儲器空間中的間接地址)。
邏輯分區(qū)操作系統(tǒng)可以使用在這里稱為邏輯關(guān)閉(Vary off)的功能,以將槽的控制釋放給管理程序或者釋放到未分配狀態(tài),并且可以使用在這里稱為邏輯激活(Vary on)的功能,以從管理程序接收槽的控制。在提供邏輯分區(qū)化的AS/400和eServer(iSeries和pSeries)計算機系統(tǒng)中實現(xiàn)了邏輯分區(qū)操作系統(tǒng)與管理程序交互以便邏輯關(guān)閉和邏輯激活PCI適配器槽的一般概念和方法。優(yōu)選實施例使用槽鎖的以下新特性,即控制邏輯激活和邏輯關(guān)閉處理,以及提供用于強制槽功率、復(fù)位、以及操作系統(tǒng)綁定狀態(tài)的同步點。另外,優(yōu)選實施例還提供一種用于準(zhǔn)備I/O槽以便使用、以及用于與邏輯分區(qū)通電操作、邏輯分區(qū)斷電操作、以及邏輯分區(qū)重新啟動操作相關(guān)地使用槽鎖在管理程序和邏輯分區(qū)之間轉(zhuǎn)移I/O槽的裝置和方法。
在圖4-8的流程圖中更詳細(xì)地示出了管理程序300的功能。圖4示出用于重新啟動邏輯分區(qū)的方法400的流程圖。應(yīng)當(dāng)注意,管理程序300可以決定重新啟動邏輯分區(qū)或者邏輯分區(qū)本身可以通知管理程序300它正在關(guān)閉且應(yīng)該被重新啟動。當(dāng)圖3的管理程序300需要重新啟動邏輯分區(qū)時,管理程序分區(qū)310向邏輯分區(qū)中的操作系統(tǒng)126通知重新啟動(步驟1a)。這樣,如果管理程序300想要重新啟動圖3中的邏輯分區(qū)125A,則管理程序(HV)分區(qū)310向邏輯分區(qū)操作系統(tǒng)126A通知關(guān)閉以便重新啟動。邏輯分區(qū)操作系統(tǒng)126A執(zhí)行內(nèi)務(wù)工作(housekeeping chores)以準(zhǔn)備它的I/O適配器并清理以便關(guān)閉,然后向HV分區(qū)310通知開始重新啟動(步驟1b)。如果該分區(qū)確定它需要重新啟動,則該分區(qū)執(zhí)行其內(nèi)務(wù)工作以準(zhǔn)備它的I/O適配器并清理以便關(guān)閉,然后向HV分區(qū)310通知開始重新啟動(步驟1b),而沒有管理程序在步驟1a請求重新啟動。然后,HV分區(qū)310停止邏輯分區(qū)CPU的執(zhí)行(步驟2),終止邏輯分區(qū)操作系統(tǒng)。在正常的關(guān)閉中,LP OS 126在關(guān)閉之前完成它的內(nèi)務(wù)工作。然而,如果邏輯分區(qū)已經(jīng)崩潰,則該邏輯分區(qū)可能不能夠在關(guān)閉之前完成任何內(nèi)務(wù)工作。
然后,HV分區(qū)310向HvPrimaryCall接口330調(diào)用setSlotLock(設(shè)置槽鎖)函數(shù)。這將當(dāng)前在正被重新啟動的分區(qū)的控制之下的槽的控制轉(zhuǎn)移到管理程序。向setSlotLock調(diào)用傳遞三個參數(shù),即slot、from_LP、to_HV。參數(shù)slot指定感興趣的槽。參數(shù)from_LP指定正被重新啟動的邏輯分區(qū)(其當(dāng)前正在控制該槽),以及參數(shù)to_HV指定槽鎖正被轉(zhuǎn)移給誰以便由管理程序300控制。在執(zhí)行setSlotLock調(diào)用時,管理程序執(zhí)行步驟4,這獲得槽鎖存儲裝置上的多處理器線程鎖。在這個特定實現(xiàn)中,這意味著,在槽鎖存儲裝置被鎖定時沒有其它多處理器CPU線程可以訪問任何槽鎖。然而,提供可被單獨鎖定的槽鎖而不是鎖定整個槽鎖存儲裝置同樣也在優(yōu)選實施例的范圍內(nèi)。然后,檢查槽鎖的狀態(tài),以查看正被重新啟動的邏輯分區(qū)是否當(dāng)前擁有該槽鎖(如果lock[slot]=LP)。如果正被重新啟動的邏輯分區(qū)當(dāng)前擁有該槽鎖,則將該槽鎖的所有權(quán)轉(zhuǎn)移到管理程序(lock[slot]=HV),并將返回狀態(tài)設(shè)置為SUCCESS(成功)。如果正被重新啟動的邏輯分區(qū)不擁有該槽鎖,則將返回狀態(tài)設(shè)置為FAIL(失敗)。然后,在槽鎖存儲裝置上釋放多處理器(MP)線程鎖。接下來,管理程序與管理程序硬件管理器(HV HW MGR)350交互(步驟5)。如果來自步驟4的槽鎖狀態(tài)是SUCCESS,則將槽I/O和控制權(quán)傳遞到管理程序,并且移除并禁用與槽的邏輯分區(qū)綁定,使得這個或其它邏輯分區(qū)或者I/O槽中的I/O適配器建立或利用這些綁定的隨后嘗試將失敗。
然后,HV分區(qū)310在步驟6-9中調(diào)用HvPrimaryCall接口330。在步驟6,進(jìn)行調(diào)用以復(fù)位用于槽的PCI至PCI橋,并向該槽置(assert)復(fù)位信號PCI RST。在步驟7,進(jìn)行調(diào)用以重新初始化PCI至PCI橋。在步驟8,進(jìn)行調(diào)用以對該槽通電。應(yīng)當(dāng)注意,因為在步驟6復(fù)位了該槽而不是使其掉電,所以可以省略步驟8。步驟8典型地在管理程序分區(qū)執(zhí)行了不涉及I/O槽的重新啟動處理之后執(zhí)行。在步驟9,進(jìn)行指定了感興趣的槽的setSlotLock調(diào)用,這將所有權(quán)從管理程序(from_HV)轉(zhuǎn)移到邏輯分區(qū)(to_LP)。接下來,管理程序嘗試將槽鎖分配給正被重新啟動的邏輯分區(qū)(步驟10)。首先,在槽鎖上設(shè)置多處理器線程鎖,以防止其它線程嘗試同時獲得該槽鎖。如果管理程序擁有該槽鎖,則將該槽鎖設(shè)置到正被重新啟動的邏輯分區(qū),并將狀態(tài)設(shè)置為SUCCESS。如果該邏輯分區(qū)不擁有該槽鎖,則將狀態(tài)設(shè)置為FAIL。然后,釋放該多處理器線程鎖。接下來,在步驟11,HvPrimaryCall 330確定該槽鎖的狀態(tài)。如果槽鎖狀態(tài)是SUCCESS,則調(diào)用管理程序硬件管理器350,將槽I/O和控制權(quán)設(shè)置到邏輯分區(qū)、重新初始化槽控制硬件、并且啟用與槽的邏輯分區(qū)綁定。
應(yīng)當(dāng)注意,步驟3-11是針對分配給邏輯分區(qū)的每一個槽執(zhí)行的。一旦已經(jīng)為所有I/O槽執(zhí)行了步驟3-11,則可以開始邏輯分區(qū)操作系統(tǒng)126的執(zhí)行(步驟12)。在優(yōu)選實施例中,這些步驟中的一部分可以是串行的,同時可以針對不同的槽并行執(zhí)行其它步驟。例如,可以每次一個地將槽轉(zhuǎn)移到管理程序。然后,可以以批量并行方式復(fù)位和初始化所有槽。一旦完成了分區(qū)重新啟用處理,則以批量并行方式對該槽通電。最后,一次一個地將這些槽分配回到分區(qū)。
圖5示出了優(yōu)選實施例的范圍內(nèi)的用于使邏輯分區(qū)斷電的方法500。響應(yīng)于來自系統(tǒng)管理員510的請求(步驟1a)或者響應(yīng)于定期(scheduled)的掉電(步驟1b),可以發(fā)生使邏輯分區(qū)斷電。向邏輯分區(qū)操作系統(tǒng)126通知掉電(步驟2a),接著是,當(dāng)準(zhǔn)備好邏輯分區(qū)時向管理程序通知(步驟2b)。如同在重新啟動的情況下,邏輯分區(qū)在向管理程序通知準(zhǔn)備好被關(guān)閉之前執(zhí)行內(nèi)務(wù)工作和I/O適配器準(zhǔn)備。然后,在步驟2b之后,管理程序停止邏輯分區(qū)CPU的執(zhí)行(步驟3),終止邏輯分區(qū)操作系統(tǒng)以建立它的邏輯斷電狀態(tài)。然后,在HvPrimaryCall接口330上調(diào)用setSlotLock函數(shù)(步驟4),該函數(shù)指定三個參數(shù)slot,其指定感興趣的槽;from_LP,其指定槽鎖所有權(quán)正被從其轉(zhuǎn)移出去的邏輯分區(qū);以及to_HV,其指定槽鎖所有權(quán)正被轉(zhuǎn)移到管理程序。作為響應(yīng),如步驟5所示,HvPrimaryCall接口330與槽鎖123交互。首先,其獲得槽鎖上的多處理器線程鎖。如果槽鎖當(dāng)前由正被掉電的邏輯分區(qū)擁有(lock[slot]=LP),則將槽鎖重新分配給管理程序(lock[slot]=HV),并且將返回狀態(tài)設(shè)置為SUCCESS。如果槽鎖當(dāng)前不是由正被掉電的邏輯分區(qū)擁有,則將返回狀態(tài)設(shè)置為FAIL。在將返回狀態(tài)設(shè)置為其適當(dāng)值之后,釋放多處理器線程鎖。
如果槽鎖狀態(tài)是SUCCESS,則接下來在步驟6調(diào)用管理程序硬件管理器350。復(fù)位槽控制硬件和與槽的邏輯分區(qū)綁定,并將槽I/O和控制權(quán)轉(zhuǎn)移到管理程序。一旦完成了步驟6,則步驟7復(fù)位用于該槽的橋硬件,并向該槽置復(fù)位信號PCIRST,并且步驟8設(shè)置槽斷電。步驟9是從管理程序轉(zhuǎn)移槽鎖以使該槽鎖未被分配的調(diào)用,這在步驟10中實現(xiàn)。應(yīng)當(dāng)注意,為分配給正被掉電的邏輯分區(qū)的每一個槽執(zhí)行步驟4-10。
圖6示出了根據(jù)優(yōu)選實施例的用于對邏輯分區(qū)通電的方法600。當(dāng)系統(tǒng)管理員510請求對邏輯分區(qū)通電時,開始該處理(步驟1)。邏輯分區(qū)通電也可以是HV分區(qū)310的定期任務(wù)。HV分區(qū)310發(fā)出setSlotLock調(diào)用,以將槽從未分配轉(zhuǎn)移到管理程序(步驟2)。作為響應(yīng),執(zhí)行步驟3,這獲得多處理器線程鎖,并且如果該槽鎖是未分配的,則將該槽鎖分配給管理程序。只有在步驟3將槽鎖成功地轉(zhuǎn)移到管理程序,才執(zhí)行圖6中的其余步驟。
初始化用于所選槽的橋槽硬件(步驟4),然后對該槽通電(步驟5)。然后,撤消(deassert)槽復(fù)位信號PCIRST(步驟6),這使槽脫離它的復(fù)位狀態(tài),并允許它起作用。然后,進(jìn)行setSlotLock調(diào)用(步驟7),其指定了感興趣的槽(slot),感興趣的槽當(dāng)前屬于管理程序(from_HV),以及將感興趣的槽鎖的所有權(quán)轉(zhuǎn)移到正被加電的邏輯分區(qū)(to_LP)。
接下來,執(zhí)行步驟8,這獲得槽鎖上的多處理器線程鎖、確定管理程序當(dāng)前是否擁有該槽鎖,并且如果擁有,將該槽鎖分配給該邏輯分區(qū)。然后,將返回狀態(tài)設(shè)置為SUCCESS。如果已經(jīng)由不同的分區(qū)擁有該槽鎖,則將返回狀態(tài)設(shè)置為FAIL。一旦將返回狀態(tài)設(shè)置為其適當(dāng)值,則釋放多處理器線程鎖。
然后,執(zhí)行步驟9,其檢查槽鎖狀態(tài),并且如果它指示SUCCESS,則將槽I/O和控制權(quán)設(shè)置到邏輯分區(qū),初始化槽控制硬件,并啟用從槽到邏輯分區(qū)的綁定。應(yīng)當(dāng)注意,為分配給正被加電的目標(biāo)邏輯分區(qū)的每一個槽執(zhí)行步驟2-9。一旦為分配給目標(biāo)邏輯分區(qū)的每一個槽執(zhí)行了步驟2-9,則開始邏輯分區(qū)操作系統(tǒng)126的執(zhí)行(步驟10)。
如上所述,存在可以將I/O槽的控制從一個邏輯分區(qū)轉(zhuǎn)移到另一個邏輯分區(qū)而不斷電或者重新啟動任一分區(qū)的時候。類似地,存在可以將I/O槽的控制從一個邏輯分區(qū)轉(zhuǎn)移到管理程序以便維護(hù)同時也不斷電或者重新啟動該邏輯分區(qū)的時候。功能“邏輯關(guān)閉”允許激活的分區(qū)動態(tài)地放棄槽的控制而不放棄平臺分區(qū)配置數(shù)據(jù)庫中槽的所有權(quán)。以類似的方式,功能“邏輯激活”允許激活的分區(qū)根據(jù)平臺分區(qū)配置數(shù)據(jù)庫動態(tài)地獲取它擁有的槽的控制。圖7和8分別示出了邏輯關(guān)閉和邏輯激活功能的詳細(xì)流程圖。
現(xiàn)在參考圖7,當(dāng)系統(tǒng)管理員510或者其它系統(tǒng)管理器(諸如工作負(fù)載管理器應(yīng)用)將邏輯關(guān)閉消息發(fā)送到邏輯分區(qū)操作系統(tǒng)126時,開始根據(jù)優(yōu)選實施例的用于實現(xiàn)邏輯關(guān)閉功能的方法700(步驟1)。作為答復(fù),邏輯分區(qū)操作系統(tǒng)調(diào)用HvCall接口340以向該槽置槽復(fù)位信號PCI RST(步驟2)。然后,調(diào)用管理程序硬件管理器350,以置PCI RST信號(步驟3)。作為響應(yīng),管理程序硬件管理器350將消息置于允許不可調(diào)度的管理程序與管理程序分區(qū)通信的事件隊列(步驟4)。HV分區(qū)310在事件隊列中監(jiān)視消息,并且當(dāng)HV分區(qū)310在步驟4看到排入隊列的消息時,它調(diào)用HvPrimaryCall接口330以置PCIRST信號(步驟5)。然后,調(diào)用管理程序硬件管理器350以置PCI RST信號(步驟6)。HV分區(qū)310延遲一段時間,以使硬件的狀態(tài)安定。在等待適當(dāng)?shù)难舆t之后,HV分區(qū)310然后向不可調(diào)度的管理程序通知完成了PCI RST處理(步驟7)。然后,向管理程序硬件管理器通知完成了PCI RST處理(步驟8)。
接下來,邏輯分區(qū)操作系統(tǒng)126調(diào)用HvPrimaryCall接口330來請求槽的斷電(步驟9)。這調(diào)用管理程序硬件管理器(步驟10),其向HV分區(qū)310在事件隊列中產(chǎn)生對槽斷電事件(步驟11)。一旦HV分區(qū)310在步驟11看到事件隊列上的邏輯分區(qū)事件“對槽斷電”,它就調(diào)用HvPrimaryCall接口330來將槽斷電并復(fù)位橋硬件(步驟12)。然后,將其傳遞到管理程序硬件管理器(步驟13)。HV分區(qū)310再次等待預(yù)定的延遲,以允許硬件安定,然后調(diào)用HvPrimaryCall接口330來向不可調(diào)度的管理程序通知完成了槽斷電處理(步驟14)。然后,將其轉(zhuǎn)送到管理程序硬件管理器(步驟15)。在這個詳細(xì)實現(xiàn)中,首先置PCI RST信號,以復(fù)位對應(yīng)于槽的PCI至PCI橋之下的從總線,然后復(fù)位橋本身,這隔離了橋下的任何事物。在此時,將槽掉電。
LP OS 126還調(diào)用HvCall接口340,以釋放與適配器的OS綁定(步驟16)。作為響應(yīng),HvCall接口340調(diào)用管理程序硬件管理器350,以解綁適配器映射(步驟17)。然后,將解綁槽的映射的事件消息排入事件隊列(步驟18)。然后,HV分區(qū)310去映射頁表和該槽中的適配器的DMA綁定(步驟19)。然后,HV分區(qū)310通知存儲器映射已被解綁(步驟20)。HvPrimaryCall330將其中轉(zhuǎn)送到管理程序硬件管理器(步驟21)。
LP OS 126調(diào)用HvCall接口340來釋放對槽的控制權(quán)(步驟22)。作為響應(yīng),執(zhí)行步驟23。如果該槽被斷電并綁定被去映射,則將槽I/O和控制權(quán)設(shè)置到管理程序,并返回SUCCESS。否則,返回FAIL。然后,執(zhí)行步驟24。首先,獲得多處理器線程鎖。如果邏輯分區(qū)當(dāng)前擁有該槽鎖(lock[slot]=LP)且步驟23指示SUCCESS,則放棄槽鎖的所有權(quán)(lock[slot]=unassigned(未被分配)),并將返回狀態(tài)設(shè)置為SUCCESS。否則,將返回狀態(tài)設(shè)置為FAIL。然后,釋放多處理器線程鎖。然后,在步驟1請求邏輯關(guān)閉功能的系統(tǒng)管理員510或者其它代理將使用從步驟1至23的序列返回的狀態(tài),以確定邏輯關(guān)閉功能是否成功。在此時,該槽已被放棄,并且現(xiàn)在可被轉(zhuǎn)移到不同的分區(qū)或者由硬件服務(wù)工具接管。
圖8的方法800示出了在優(yōu)選實施例的范圍內(nèi)實現(xiàn)邏輯激活消息時所執(zhí)行的步驟。首先,系統(tǒng)管理員或者其它系統(tǒng)管理器發(fā)送邏輯激活消息到邏輯分區(qū)操作系統(tǒng)126(步驟1)。接下來,LP OS 126調(diào)用HvCall接口340,以獲取該槽上的控制權(quán)(步驟2)。作為響應(yīng),執(zhí)行步驟3,這獲得槽鎖上的多處理器線程鎖。如果該槽鎖當(dāng)前由請求分區(qū)擁有或者未被分配,則將該槽鎖分配給該邏輯分區(qū),并且將返回狀態(tài)設(shè)置為SUCCESS。如果該槽鎖不是由該邏輯分區(qū)擁有,則將返回狀態(tài)設(shè)置為FAIL。然后,釋放多處理器線程鎖。
假設(shè)對于步驟3狀態(tài)是SUCCESS,則可以執(zhí)行步驟4-20。在步驟4,將槽I/O和該槽的控制權(quán)設(shè)置到邏輯分區(qū)(步驟4)。LP OS 126調(diào)用HvCall接口340來啟用DMA和虛擬地址(VA)綁定(步驟5)。這調(diào)用管理程序硬件管理器(步驟6)。作為響應(yīng),管理程序硬件管理器350啟用用于槽中的適配器的DMA和VA綁定。LP OS 126還調(diào)用HvCall接口340來對槽通電(步驟7)。這調(diào)用管理程序硬件管理器(步驟8)。作為響應(yīng),將請求對槽通電的事件置于事件隊列中(步驟9)。作為響應(yīng),HV分區(qū)310調(diào)用HvPrimaryCall接口330來初始化橋并對槽通電(步驟10)。這調(diào)用管理程序硬件管理器(步驟11)。在等候適當(dāng)?shù)难舆t以確保槽被通電并穩(wěn)定之后,發(fā)送指示完成了通電處理的消息(步驟12)。然后,向管理程序硬件管理器通知通電處理的完成(步驟13)。
LP OS 126調(diào)用HvCall接口340,以向該槽撤消PCI RST信號(步驟14)。這調(diào)用管理程序硬件管理器(步驟15)。作為響應(yīng),將請求撤消PCI RST信號的事件消息寫到事件隊列(步驟16)。然后,作出HvPrimaryCall來撤消PCIRST信號(步驟17),其中HvPrimaryCall被傳遞到管理程序硬件管理器(步驟18)。作為響應(yīng),不可調(diào)度的管理程序向槽撤消PCI RST信號。在等候適當(dāng)?shù)难舆t以確保槽脫離復(fù)位且穩(wěn)定之后,HV分區(qū)310調(diào)用HvPrimaryCall接口330來指示完成了PCI RST處理(步驟19)。還將PCI RST處理的完成傳達(dá)給管理程序硬件管理器(步驟20)。在此時,邏輯分區(qū)已經(jīng)獲取槽的控制并可以使用該槽恢復(fù)操作。
通過提供必須在可以執(zhí)行對槽的操作之前獲得的槽鎖,以及通過確保在可以在實體之間轉(zhuǎn)移槽的控制之前對槽斷電然后再次通電,這些優(yōu)選實施例提供了相對于現(xiàn)有技術(shù)的顯著進(jìn)步。槽可以由邏輯分區(qū)、管理程序控制,或者也可以是未被分配的。應(yīng)當(dāng)注意,管理程序的控制之下的各種代理例如硬件管理器也可以控制槽?;コ獾牟坻i確保了競爭實體對槽的非沖突訪問。當(dāng)將槽從邏輯分區(qū)移除時將該槽掉電消除了適配器中的數(shù)據(jù)的數(shù)據(jù)完整性問題,并確保了當(dāng)將適配器分配給邏輯分區(qū)時該適配器總是處于通電復(fù)位狀態(tài)。
本領(lǐng)域的技術(shù)人員將理解,在本發(fā)明的范圍內(nèi)許多變化是可能的。這樣,盡管已經(jīng)參考本發(fā)明的優(yōu)選實施例具體示出和描述了本發(fā)明,但是本領(lǐng)域的技術(shù)人員將理解,不脫離本發(fā)明的精神和范圍的情況下,可以對其進(jìn)行形式和細(xì)節(jié)上的這些和其它改變。例如,盡管將PCI槽示出為特定類型的可被獨立控制的資源的例子,但是在優(yōu)選實施例的范圍內(nèi)也可以控制除PCI槽之外的其它類型的資源。例如,可以利用優(yōu)選實施例的教導(dǎo)來控制各種不同類型的I/O槽或者適配器,例如PCMCIA槽、S390通道或者控制單元等。根據(jù)優(yōu)選實施例可以控制的其它類型的相似資源包括I/O總線、I/O通信通道(例如Infiniband隊列對)、虛擬槽或設(shè)備、CPU、以及存儲器塊。
權(quán)利要求
1.一種裝置,包括至少一個處理器;連接到所述至少一個處理器的存儲器;連接到所述至少一個處理器的多個硬件資源;在所述裝置上定義的多個邏輯分區(qū);以及駐留在所述存儲器中并由所述至少一個處理器執(zhí)行的通電/斷電機制,當(dāng)將選定硬件資源的控制轉(zhuǎn)移到所述多個邏輯分區(qū)之一時,所述通電/斷電機制將所述選定硬件資源置于通電復(fù)位狀態(tài)。
2.根據(jù)權(quán)利要求1所述的裝置,其中,所述多個硬件資源包括多個I/O槽。
3.根據(jù)權(quán)利要求1或權(quán)利要求2所述的裝置,其中,通過當(dāng)將所述選定硬件資源的控制從所述多個邏輯分區(qū)之一移除時對所述選定硬件資源斷電以及當(dāng)將所述選定硬件資源的控制轉(zhuǎn)移到所述多個邏輯分區(qū)之一時對所述選定硬件資源通電,所述通電/斷電機制將所述選定硬件資源置于通電復(fù)位狀態(tài)。
4.根據(jù)權(quán)利要求1所述的裝置,其中,通過將所述選定硬件資源上的至少一個存儲器位置初始化為加電時的預(yù)期值,所述通電/斷電機制將所述選定硬件資源置于通電復(fù)位狀態(tài)。
5.根據(jù)權(quán)利要求1或者權(quán)利要求3所述的裝置,還包括駐留在所述存儲器中的多個鎖,其中所述多個硬件資源的每一個都具有對應(yīng)的鎖;以及鎖機制,在將對應(yīng)硬件資源的控制轉(zhuǎn)移到所述多個邏輯分區(qū)之一之前以及在允許所述多個邏輯分區(qū)之一訪問對應(yīng)的硬件資源之前,所述鎖機制通過要求對應(yīng)鎖的排它所有權(quán)來控制所述多個邏輯分區(qū)對每個硬件資源的訪問。
6.根據(jù)權(quán)利要求2所述的裝置,還包括用于當(dāng)將選定I/O槽的控制從所述多個邏輯分區(qū)之一移除時,如果存儲器和虛擬地址綁定先前未被解綁,則解綁所有存儲器和虛擬地址綁定并且防止與所述選定I/O槽中的適配器建立新綁定的機制。
7.根據(jù)權(quán)利要求2所述的裝置,還包括用于當(dāng)將選定I/O槽的控制轉(zhuǎn)移到所述多個邏輯分區(qū)之一時啟用與所述選定I/O槽中的適配器的存儲器和虛擬地址綁定的機制。
8.根據(jù)權(quán)利要求3所述的裝置,還包括用于當(dāng)將選定硬件資源的控制從所述多個邏輯分區(qū)之一移除時將所述選定硬件資源的控制轉(zhuǎn)移到資源和分區(qū)管理器的機制。
9.根據(jù)權(quán)利要求3所述的裝置,還包括用于當(dāng)將選定硬件資源的控制轉(zhuǎn)移到一個邏輯分區(qū)時將所述選定硬件資源的控制轉(zhuǎn)移到所述多個邏輯分區(qū)之一的機制。
10.根據(jù)權(quán)利要求3所述的裝置,還包括用于讓所述多個邏輯分區(qū)之一放棄這個邏輯分區(qū)所擁有的硬件資源的控制的機制。
11.根據(jù)權(quán)利要求10所述的裝置,還包括用于讓所述多個邏輯分區(qū)之一重新獲得邏輯分區(qū)所擁有但是這個邏輯分區(qū)先前對其放棄了控制的硬件資源的控制的機制。
12.根據(jù)前面權(quán)利要求中的任一項所述的裝置,其中所述多個硬件資源包括多個PCI適配器槽,所述裝置還包括連接到所述至少一個處理器的至少一個PCI主機橋;將所述至少一個PCI主機橋連接到至少一個PCI至PCI橋的至少一個主PCI總線;多個從PCI總線,其中每一個從PCI總線將所述PCI至PCI橋之一連接到對應(yīng)的PCI適配器槽;以及其中在每一個PCI至PCI橋中提供所述通電/斷電槽機制。
13.根據(jù)權(quán)利要求12所述的裝置,還包括用于當(dāng)將選定PCI適配器槽的控制從所述多個邏輯分區(qū)之一移除時復(fù)位對應(yīng)于所述選定PCI適配器槽的PCI至PCI橋的機制。
14.根據(jù)權(quán)利要求12所述的裝置,還包括用于當(dāng)將選定PCI適配器槽的控制轉(zhuǎn)移到所述多個邏輯分區(qū)之一時初始化對應(yīng)于所述選定PCI適配器槽的PCI至PCI橋的機制。
15.一種計算機實現(xiàn)的方法,用于管理包括多個邏輯分區(qū)的計算機系統(tǒng)中的多個硬件資源,所述方法包括以下步驟(A)將選定硬件資源從所述多個邏輯分區(qū)之一移除;(B)當(dāng)將所述選定硬件資源的控制轉(zhuǎn)移到所述多個邏輯分區(qū)之一時,將所述選定硬件資源置于通電復(fù)位狀態(tài)。
16.根據(jù)權(quán)利要求15所述的方法,其中,步驟(B)包括以下步驟將所述選定硬件資源上的至少一個存儲器位置初始化為加電時的預(yù)期值。
17.一種計算機實現(xiàn)的方法,用于管理包括多個邏輯分區(qū)的計算機系統(tǒng)中的多個硬件資源,所述方法包括以下步驟當(dāng)將選定硬件資源的控制從所述多個邏輯分區(qū)之一移除時,對所述選定硬件資源斷電;以及當(dāng)將所述選定硬件資源的控制轉(zhuǎn)移到所述多個邏輯分區(qū)之一時,對所述選定硬件資源通電。
18.根據(jù)權(quán)利要求15或者權(quán)利要求17所述的方法,其中,所述多個硬件資源包括多個I/O槽。
19.根據(jù)權(quán)利要求18所述的方法,還包括以下步驟當(dāng)將選定I/O槽的控制從所述多個邏輯分區(qū)之一移除時,如果存儲器和虛擬地址綁定先前未被解綁,則解綁所有存儲器和虛擬地址綁定并且防止與所述選定I/O槽中的適配器建立新綁定。
20.根據(jù)權(quán)利要求18所述的方法,還包括以下步驟當(dāng)將選定I/O槽的控制轉(zhuǎn)移到所述多個邏輯分區(qū)之一時,啟用與所述選定I/O槽中的適配器的存儲器和虛擬地址綁定。
21.根據(jù)權(quán)利要求15或者權(quán)利要求17所述的方法,還包括以下步驟定義多個鎖,其中所述多個硬件資源的每一個都具有對應(yīng)的鎖;以及在將對應(yīng)硬件資源的控制轉(zhuǎn)移到所述多個邏輯分區(qū)之一之前,通過要求對應(yīng)鎖的排它所有權(quán)來控制多個邏輯分區(qū)對每個硬件資源的訪問。
22.根據(jù)權(quán)利要求17所述的方法,還包括以下步驟當(dāng)將選定硬件資源的控制從所述多個邏輯分區(qū)之一移除時,將所述選定硬件資源的控制轉(zhuǎn)移到資源和分區(qū)管理器。
23.根據(jù)權(quán)利要求17所述的方法,還包括以下步驟當(dāng)將選定硬件資源的控制轉(zhuǎn)移到一個邏輯分區(qū)時,將所述選定硬件資源的控制轉(zhuǎn)移到所述多個邏輯分區(qū)之一。
24.根據(jù)權(quán)利要求17所述的方法,還包括以下步驟多個邏輯分區(qū)之一放棄這個邏輯分區(qū)所擁有的硬件資源的控制。
25.根據(jù)權(quán)利要求24所述的方法,還包括以下步驟所述多個邏輯分區(qū)之一重新獲得邏輯分區(qū)所擁有但是這個邏輯分區(qū)先前對其放棄了控制的硬件資源的控制。
26.根據(jù)權(quán)利要求15到25中的任一項所述的計算機實現(xiàn)的方法,所述方法包括以下步驟當(dāng)將選定PCI適配器槽的控制從所述多個邏輯分區(qū)之一移除時,對所述選定PCI適配器槽斷電,并且當(dāng)將所述選定PCI適配器槽的控制轉(zhuǎn)移到所述多個邏輯分區(qū)之一時,對所述選定PCI適配器槽通電;當(dāng)將選定PCI適配器槽的控制從所述多個邏輯分區(qū)之一移除時,如果存儲器和虛擬地址綁定先前未被解綁,則解綁所有存儲器和虛擬地址綁定并防止與所述選定PCI適配器槽中的適配器建立新綁定;當(dāng)將選定PCI適配器槽的控制從所述多個邏輯分區(qū)之一移除時,對與所述選定PCI適配器槽對應(yīng)的PCI至PCI橋復(fù)位;當(dāng)將選定PCI適配器槽的控制轉(zhuǎn)移到所述多個邏輯分區(qū)之一時,啟用與所述選定PCI適配器槽中的適配器的存儲器和虛擬地址綁定;當(dāng)將選定PCI適配器槽的控制轉(zhuǎn)移到一個邏輯分區(qū)時,將所述選定PCI適配器槽的控制轉(zhuǎn)移到所述多個邏輯分區(qū)之一;以及當(dāng)將選定PCI適配器槽的控制轉(zhuǎn)移到所述多個邏輯分區(qū)之一時,對與所述選定PCI適配器槽對應(yīng)的PCI至PCI橋初始化。
27.一種程序產(chǎn)品,包括用于執(zhí)行如權(quán)利要求15至25中的任一項所述的方法步驟的程序代碼裝置。
全文摘要
一種資源和分區(qū)管理器包括通電/斷電機制,其中當(dāng)從邏輯分區(qū)移除資源的控制時,該機制用于確保硬件資源被掉電,并且當(dāng)將硬件資源的控制轉(zhuǎn)移到邏輯分區(qū)時確保該硬件資源被加電??商鎿Q地,當(dāng)將硬件資源轉(zhuǎn)移到邏輯分區(qū)時,資源和分區(qū)管理器可以簡單地將硬件資源置于通電復(fù)位狀態(tài)。以這種方式,當(dāng)變得可用于分區(qū)時,硬件資源處于通電復(fù)位狀態(tài),其中該通電復(fù)位狀態(tài)典型地是邏輯分區(qū)所期望的狀態(tài)。
文檔編號G06FGK1759378SQ200480006216
公開日2006年4月12日 申請日期2004年3月3日 優(yōu)先權(quán)日2003年3月13日
發(fā)明者特洛伊·D·阿姆斯特朗, 威廉·J·阿姆斯特朗, 柯蒂斯·S·艾德, 格雷戈里·M·諾德斯特龍 申請人:國際商業(yè)機器公司