200846901 iri^u / uv〇4TW 23603twf.doc/p 九、發明說明: 【發明所屬之技術領域】 本發明疋有關於一種系統診斷方法,且特別是有關於 S t % ( System Management Interrupt, SMI)之服務來診斷系統異樣的方法。 【先前技術】 系統管理模式(System Management Mode, SMM)為 • 現今一般個人電腦系統所用之中央處理單元的一種特別功 能。而基本輸入輸出系統(Basic Input 〇卿ut System, BIO/)可以在系統管理模式下執行許多處理程式,例如系 統官理中畊處理程式(SMI handler),以服務硬體裝置所 發出之中斷事件。另外,系統管理模式更支援主機板特殊 的功旎,而利用處理程式去完成特殊硬體動作。 在目前的電腦系統中,若在開機或安裝作業系統的過 程中,處理程序停留在某個關卡而無法執行後續動作時, 就使用者觀點而言,就像是系統掛掉(hang)。其中原因 可能疋因為系統對於所接收中斷事件沒有相對應之服務, 導致無法服務此中斷事件。例如,當通用串列匯流排 (Universal SerialBus,USB)裝置發出一個中斷事件,而 無相對應之服務時,將導致系統出現饑餓(starvati〇n)狀 態。也就是說中斷事件仍舊等待著被服務,在離開處理程 式之後,將立刻再進入處理程式,如此循環著。 另外,當中斷事件清除不掉而導致系統繼續嘗試服務 此中辦事件’亦將使知系統出現饑餓狀態,而其原因可能 5 200846901 invu/wu〇4TW 23603twf.doc/p 為處理程紅程式碼糾題。也妓說,處 斷事件相對應之服務,但是由於處理 ^ /、 因而始終無法呼叫對應之服務來 斷:二 呈現鎖住㈣。 丫畴件’使付糸統 所發體裝置之驅動程式時,硬體裝置 斷i件、,不桓二、驅動程式進行服務。此時,若中 如,當此硬體裝置之驅動程式有問題。例 務完畢,但I由於驅動程式’即使中斷事件已服 不掉。—疋動程式有錯如使得情事件清除 ,#發生上述系統掛掉之情 ==自身之經驗,而嘗試各種可能的情況以找 ===:作法常常需花費許多時間方能找 【發明内容】 本發明提供—種診斷系統異樣的方法,將系统發生里 錄1τ以供快速檢查異樣之原因:八 事件。^著,執^#斷系統異樣的方法,首先接收中斷 當中斷事件未被服務時,累計未執 之童彼十後’虽未執行次數達到臨界值時,將中斷事件 之事件來源的相關資料記錄至儲存單元。 時,明^*—實施例中,上述當中斷事件未被服務 仃人累计的步驟之後,更包括嘗試服務中斷 6 200846901 iruv /uu〇4TW 23603twf.doc/p 事件,並重複上述步驟。 在本發明之一實施例中,上述在執行處理程式以服務 中斷事件的步驟之前,更包括偵測事件來源之狀態位元及 致月位元,並對一者進4亍及(and )運算,以獲得第一運营 結果。 在本發明之一實施例中,上述在執行處理程式以服務 中斷事件的步驟包括當中斷事件服務完成時,將狀態位元 _ 清除。 在本發明之一實施例中,上述在執行處理程式以服務 中斷事件的步驟之後,更包括偵測事件來源之狀態位元及 致能位元,並對二者進行及運算,以獲得第二瞀紗 接著,比較第一運算結果及第二運算結果是否相同;若第 一運算結果與第二運算結果相同時,將未執行次數累加1。 在本發明之一實施例中,上述在將中斷事件之相關資 料記錄至儲存單元的步驟之後,更包括讀取儲存單元,以 _ 顯示中斷事件之事件來源的相關資料所對應之硬體裝置。 在本發明之一實施例中,上述將中斷事件之事件來源 的相關資料記錄至儲存單元的步驟,更包括傳送記錄指令 通知基板管理控制器(Baseboard Management Controller, BMC),以將事件來源之相關資料記錄至系統事件曰誌 (System Event Log,SEL),並儲存至儲存單元。 在本發明之一實施例中,上述之執行處理程式以服務 中斷事件的步驟包括接收系統管理中斷(Systenl Management Interrupt, SMI)訊號,以進入系統管理模式 200846901
〇4TW 23603twf.doc/p (System Management Mode,SMM),並在系統管理模 式下,執行處理程式以服務中斷事件。 、 在本發明之一實施例中,上述之系統管理中斷訊號為 藉由觸發系統管理中斷硬體介面而產生。 在本發明之一實施例中,上述之事件來源之相關資料 包括事件名稱以及來源路徑,事件名稱包括週期性事件 (periodic event)或通用事件(generalpurp〇seevent); 而來源路徑包括中斷事件所有通過之節點。 f本發明之一實施例中,上述之事件來源包括 件初始通過之節點。 ^發明於帽事件未被服務時計算其未執行次數,直 肤觫仃欠數達到臨界錢,關斷此巾斷事件處於異樣 可Ϊ由:而f其相關資料記錄之。如此一來,開發人員便 方^且_ 知發生異樣之相關資料,在除錯上將更 舉較概和優職更嶋賴,下文特 亚配合所附圖式,作詳細說明如下。 目前當系統發生異樣時, 的情形,必須耗費許多時間去系、錢掉(hang) 所在。因此,本發啊脉4 σ種可能性去找出問題 來,而從記錄中快逮得之;題=,相關資料記錄下 容更為明瞭,以下所在處。為了使本發明之内 施的範例。 、+Λ _作為本發财f麟據以實 8 200846901 iriyw /uv〇4TW 23603twf.doc/p 圖1是依照本發明一實施例所繪示之診斷系統異樣的 方法流程圖。請參照圖1,首先步驟S101為接收中斷事件, 此中斷事件係由硬體裝置或晶片組(chipset)所發出。舉 例來說,當系統開機時,硬體裝置或晶片組會藉由發出中 斷事件來通知處理單元(例如中央處理單元),使得處理 單元知知有哪些裝置需要去服務。中斷事件例如是系統管 理中斷(System Management Interrupt,SMI)事件
接著,步驟S102執行處理程式以服務中斷事件。處 理程式例如是系統管理中斷處理程式(SMIhandler)。詳 細地說,當中斷事件觸發系統管理中斷硬體介面時,則會 產生系統管理中斷訊號。而處理單元接收此系統管理中斷 訊號後,將進入系統管理模式(System Management M〇de, SMM) ’並在彡統官理模式下,執行由基本輸人輸出系統 (Basic Input Output System,BIOS)準備好之處理程式以 服務中斷事件。 從系統角度來看,BI0S會經由系統管理中斷訊號而 收到中斷事件的通知。在中斷事件發生時,BI〇s會與作業 系統溝通,以將控制權由作業系統轉交至BI〇s。接著, BIOS將會負責完成所請求的動作,即是B腦將執行 程式以服務中斷事件。 ,…〜、夕驟S103便去判斷中斷事件是否被服務。 中斷事件被服務完成時,便會將服務完㈣中斷事辦 除’=執行步驟S107結束服務此中斷事件。 若中斷事件未被服務,則執行步驟S1G4,累計未幸 200846901 iri^u /wu〇4TW 23603twfdoc/p :计异此中斷事件未被服務的次數。舉例來說,每 皆將此未執行次^加;。當此令斷事件未被服務時,每次 將變數,,,則 count[i]+1。 予 ^數咖刚,如 c〇um[i;h 判斷丁次數累加完成後,執行步驟S105以 複執行/ΠαΓ否翻臨界值。絲制臨界值,則重 以繼續嘗試服務中斷事件,並重複上述 =二再 Η 私式,以旨试服務此中斷事件。 戈在門二!疋’當同時接收多個中斷事件時,處理程 式在同内可能只處理—個中斷事件。 二 據中斷事件的優先縣決定 事 =;=。基於優先權之問題者= 低ίίίί=ΐ數小於臨界值時,可能其優先權較 - 良權車父咼者處理完畢後,才能對此中斷畜株 ==b:,可能在離開處理程式幾次後, 結束服務此Ϊ斷^可被服務完成而執行步驟8107 當未執行次數達到臨界值時,表示此中斷事件可能發 200846901 χχ w v^4TW 23603tw£doc/p ,而執行步驟S1G6’將中斷事件之事件來源的相關 二科s己錄至齡單元。事縣聽括情事件初始通過之 即點,而其相關資料包括事件名稱以及來源路徑。其中, 事件名稱包括㈣性事件(periGdie evem)或通用事件 (genei^l purpose event) ’來源路徑則包括中斷事件所有 通過之節點。而儲存單元例如是不變性隨機存取記憶體 (Nonvolatile Rand〇m Access Mem〇ry,取職)。 # 換έ之,若中斷事件的未執行次數達到臨界值,表示 此中斷事件無法被服務,因此便將其事件來源的相關資料 記錄下來,以供後續除錯參考。記錄之方式可直接存放至 儲存單元,若系統具有基板管理控制器(Baseboard Management Controller,BMC)時,亦可透過基板管理控 制器來記錄。 、透過基板管理控制器來記錄之方式為:傳送記錄指令 通知基板管理控制器,以將事件來源之相關資料記錄至系 統事件日誌(SystemEventLog,SEL),並儲存至儲存單 凡。而記錄指令例如是原始設備製造商(〇riginal Equipment Manufacturer,OEM)指令。由於基板管理控制 器會蒐集某些故障資訊並保存在特定的區域内,此區域内 的資訊便稱為系統事件日誌。因此,將無法被服務之中斷 事件e己錄至系統事件日遠中,通過分析系統事件日誌便可 以診斷異常所在。 另外,本實施例亦可自儲存單元中讀取無法被服務之 中斷事件之事件來源的相關資料,以顯示中斷事件所對應 11 200846901 xjl jl^v/v/v〇4TW 23 603twf.doc/p 之硬體裝置。如此一來,便可清楚得知為哪一個硬體裴置 所發出之中斷事件無法被服務,並且亦可獲得此中斷事件 所有經過之節點。 ^以了則根據上述實施例之診斷系統異樣的方法舉例 说明其系統執行之架構。圖2是依照本發明一實施例所繪 示之糸統架構方塊圖。請參照圖2,硬體裝置2〇1是用以 發出中斷事件至控制晶片202 (例如南橋晶片)。控制晶 ⑩ 片係用來產生系統管理中斷訊號至處理單元。 處理單元203則是用以執行處理程式2〇4。當產生系 統管理中斷訊號後,處理單元203便會進入系統管理模 式,以執行由BIOS所準備之處理程式2〇4。而處理程式 204是用來服務中斷事件。當中斷事件未被服務之未執行 次數達到臨界值時,處理程式204便下達原始設備製造商 指令至基板管理控制器206,以記錄異樣之中斷事件的相 關資料。 另外,儲存單元205是用來儲存無法被服務之中斷事 件的相關資料。基板管理控制器206是將無法被服務之中 斷事件的相關資料記錄至系統事件曰誌中,再將其寫入儲 存單元205。簡言之,當系統不包括基板管理控制器2〇6 則直接記錄至儲存單元205 ;當系統包括基板管理控制器 206便可藉由基板管理控制器2〇6來寫入至儲存單元2〇5。 值得一提的是,不一定要經過控制晶片2〇2才能產生 系統管理中斷訊號,只要能夠觸發處理單元2〇3之系統管 理中斷硬體介面即可產生。 12 200846901 ir^u/uu〇4TW 23603twf.d〇c/p 另 面’在上述實施例之步驟S102執行處理程式 則後^包括檢查巾斷事件之事件來源,町即對上述實施 斷土統異樣的方法做更詳細之說明。圖3是依照本 發月另-貝_断示之診斷紐異樣的方法流程圖。請 蒼照圖3,首先,步驟S3〇1係接收中斷事件,與步驟si〇i 相同’故在此不再詳述。
接著·’執行步驟S302,偵測事件來源之狀態位元 status bit)及致能位元(enable剛,並對二者進行及
Und)運算,以獲得第一運算結果。詳細地說,狀態位元 是由硬體裝置所反應,以決定中斷事件是否產 中斷訊號。糾,致能位元是由㈣s所決定,表示^個 中斷事件要不要發送出去,若決定致能則代表繼續往下一 個節點發送。 舉例來说,當一個中斷事件發送出來,若要產生系統 管理中斷IK糾,會將魏驗元設置為i。若要繼續往 下一個節點發送,便將其致能位元設置為i。而當狀態位 元與致此位元皆為1時,即表示有此一中斷事件存在。 另外,狀悲位元及致此位元分別包括輸入輸出琿位址 (10 port address)與位元偏移量(bit offset)。其中,輸 入輸出埠位址代表輸入輸出埠裡面的位元位置,位元偏移 量即表示此輸入輸出埠位址第幾個位元代表其狀態位元 (或致能位元)。事件來源之表示例如為((428h,16) (42Ch,16)),其中(42811,16)為狀態位元,即是在輸乂輸出 埠位址428h裡第16個位元;而(42Ch,16)則為致能位元, 13 200846901 ir^uu64TW 23603tw£doc/p 即疋在輪入輪出埠位址42Ch裡第16個位元。 源路ίίί源僅記錄了情事件第—個經過的節點,而來 斷事件所有經過的節點。以下則就中斷事 說明:Λ4是依照本發明-實施例所繪 牛之來源路從的示意圖。請參照圖4,錄辦财 …401〜404以及晶片组4〇5分別發出 曰^ 3'而由控制晶㈣產生系統管理中斷訊二么 裝置3之==,來源路徑為(節點,,硬體 403之來獅f 407 ’節點4〇8},硬體裝置 農置,節點411,節點叫,硬體 之來源鄭t禮為{卽點413,節點4叫,晶片組405 點術〜4心點4〇8}。上述每一個節點(節 將反應到是否產 _h,16M42Ch,16)), 斷事件經過之第L ^赴、中((428h,16),(42Ch,16))表示中 事件經過之第二個節=’((434h,9),(430h,9))表示中斷 服務=3著^驟S303為執行處理程式以 詳述。而當中斷事件辭^f漏相同,故在此不再 將被清除。舉例炎_ ^凡成袴,其事件來源之狀態位元 狀態位元為ΐί;二Ϊ執行處理程式前,若事件來源之 、在中斷事件服務完成後,便將狀態位元 200846901 iri^u/uu〇4TW 23603tw£doc/p 清除為0。 —在步驟S3〇3執行處理程式以服務中斷事件之後,執 灯步驟㈣4 ’彻j執彳了完之事縣狀狀態位元及致能位 兀,並對二者進行錢算,簡得f二運算絲。步驟S304 2步驟S?。2相似’朗在於步驟隨純行完處理程式 後再進t侧。由於t巾斷事件服務完成,會將其事件來
源之,緣%刪除,JU而,便可藉由此―變化來判斷中斷 事件疋否已被服務。 接下來,執行步驟S305,針對第一運算結果以及第二 運算結果進行_,靖輯之絲是否相同。紐對之 、、、口果不相同,即為中斷事件已服務完成,執行步驟s⑽ 結束服務帽事件;紐狀絲姻,喊*中斷事件 未被服務,喊行步驟謂6 f、計純行錄,將未執行 次數累加1。 一舉例來說,在步驟S303之前,若事件來源之狀態位 =與致能位元皆為i才表示有此中斷事件存在,經過及運 算後將得到丨,並將其存至變數x[i](即第一運算結果), 其中1代表第1個中斷事件。而在步驟S3〇3之後,將第二 運=結果存於變數Y[i]中。若狀態位元未被清除,則Y[i] 仍售為1 ;若狀態位元被清除,γ⑴即為〇。因此,當 x[i]-Y[i]=l時,代表中斷事件未被服務,·當邓]與Y[i]不 相同時,則中斷事件服務完成。 接著,步驟S306〜步驟S308與步驟S104〜步驟S106 相同,故不在此詳述。簡單來說,即是當判斷未執行次數 15 ^4TW 23603twfdoc/p 200846901 ,到臨界值,便將事件來源之相__錄下來。如此一 :之元内檢查是否有記錄存在,以根據記錄 内n件的相關資料,找出發生_所在處而解決之。 二例來况’·人員自記錄中檢查各筆異樣之中斷事 声^無相社服務或是無法清除事件來源之狀態位元, 之程式碼有問題,便更正其程式碼;若為硬 ftf ’即-直發出中斷事件,便維修硬體裝置; 右^片組之問題’則將問題回報給晶片組之供應商。 列優=所途,本發明之診斷祕異樣的方法至少具有下 ^將無法被服務之中斷事件的相關資料記錄下來,便 的^檢航_快速得知問題所在,縮短尋找異常原因 =根射斷事件的㈣·可獲得帽事件所有通過 且:t更 發生異常之硬體裝置’在除錯上更有條理 ρΓΐΐ發明已以較佳實施例揭露如上,然、其並非用以 因乾圍内’當可作些許之更動與潤飾, %明之保護範圍當視後附之中請專利範圍所界定者 〇 【圖式簡單說明】 方法】依照本發明一實施例所繪示之診斷系統異樣的 16 .4TW 23603twf.doc/p 200846901 圖2是依照本發明一實施例所繪示之系統架構方塊 圖。 圖3是依照本發明另一實施例所繪示之診斷系統異樣 的方法流程圖。 圖4是依照本發明一實施例所繪示之中斷事件之來源 路控的不意圖。 【主要元件符號說明】 201、401、402、403、404 :硬體裝置 • 202、414 ··控制晶片 203、415 ··處理單元 204 :處理程式 205:儲存單元 206 ··基板管理控制器 405 :晶片組 406〜413 :節點 S101〜S107 :本發明之診斷系統異樣的方法之各步驟 參 S301〜S309 :本發明之另一診斷系統異樣的方法之各 步驟 17