原有行為

在更新BMC程序後的首次開機,會透過 CRPS 電源的Present 功能管腳,來判別並記錄是單電源還是雙電源模式,一旦記錄後,後續不管插入一個電源,還是兩個電源,都不重新識別。

產測問題

在產測過程中發現,如果為雙電源模式,但只插一顆 PSU,則會認為異常 (怎麼顯示這個異常,SEL 嗎?)。而在單電源模式下,插兩個或插在第二個電源槽位,web 不顯示PSU2的信息。

需求調整

雖然可透過,IPMI 指令,讓 BMC 重新判別電源模式。然而單雙電源模式,其對應的設備型號不同,所以客戶想透過該資訊來決定應為何種模式。具體來說,在捨棄原有判別機制的基礎上(GPIO_C2/C3),僅透過 FRU 中,Product Part Number 的值來決定。如果是 S 則為單電源,R 則為雙電源。其他值則一律認定為單電源。

例外處理

如果出現FRU信息異常丟失,屬於設備故障會走售後維修流程,重新刷新FRU和BMC配置

副作用

去掉電源的Present管腳檢測,可能會導致無法區分:PSU不在位PSU在位但電源線未插入

疑問

  • Fru 存放在哪? 怎麼寫入與讀取?
  • 怎麼透過 Present 功能管腳來識別?
  • 為何再不重刷的情況下,即使 PSU 數量有所變化,但模式不會因此而改變?
  • 因為不走原有流程,所以才不會去檢測電源的Present 管腳嗎? 所以也就會遺失部份 PSU 的狀態資訊嗎?

研讀

configs/build-options.ini

; FW_PRODUCT_ID = FEFE is for multi platform ; Please don't use this value for your platform. [MultiPlatform] FW_PRODUCT_ID = FEFE FW_PRODUCT_NM = MultiPlatform FW_PRODUCT_DEF = EPLAT_MULT
  • PlatformInitHandle (在 PlatformInitMinimal 階段)

  • OSGetProductId (fwproductid=)

  • PlatformGetPlatDataPath
    (/usr/share/ipmid/platform/)

  • link_to_file (link_to_default_fct_sdr)
    (/var/run/Default.bin -> /usr/share/ipmid/platform/Default_EVB.bin)

  • ProcessConfigFile (ConfigXML)

  • /nv/platform.conf

ENABLE_PLATFORM_ID_BY_GPIO=1 OVERRIDE_PLATFORM_ID=0 PLATFORM_ID=0x0 ENABLE_SLOT_ID=0 SLOT_ID=-1