2016-02-02 21 views
0

我想了解如何使用U啓動PSCI接口啓動內核進入HYP模式。如何使用PSCI接口在Hyp/EL2模式下啓動內核?

通過u-boot源代碼,我看到有一個通用的psci.S和其他psci.S這是板特定的,並有以下懷疑。

1)。 psci.S如何適用於正常的u-boot流程(在引導u-boot時調用cci_on和cpu_off時,何時以及如何使用psci服務)。

2)。如何使用u-boot的psci接口在HYP模式下啓動內核(psci接口中的什麼功能可以讓Linux內核在HYP模式下啓動)?

+0

沒有答案,因爲這個問題是無效的。 U-boot也僞裝成固件,是PSCI的實現。這類似於詢問「內核的系統調用接口如何在EL0啓動init進程?」。就電源狀態協調而言,負責以任何啓動方式啓動Linux的事情最初都是**向系統供電** - 內核本身在啓動PSCI調用時已經啓動很久。 – Notlikethat

+0

感謝您的回覆。其實我已經通過HYP模式這個補丁集http://lists.denx.de/pipermail/u-boot/2013-December/168655.html它說,它(在u-boot的PSCI接口)幫助引導內核了。希望你現在看到我的觀點? –

回答

2

1)。如何以及在哪裏psci.S在正常的u-boot適合流動

的U-boot留出一些安全的世界的記憶並複製安全監控代碼存在,所以它可以駐留的U-Boot退出後,提供一些PSCI SMC調用的最小處理。

他們不是(何時以及如何PSCI像cpu_on和cpu_off服務,同時啓動的u-boot被調用)。 U-Boot只運行並切換到主CPU上的Linux。 Linux可能會在其自己的引導過程中引入輔助核心,但除了前面提到的安全監視器代碼之外,U-Boot早已消失。

2)。如何使用u-boot的psci界面在HYP模式下啓動內核

不是這樣。

(它在psci接口中允許Linux內核在HYP模式下啓動)?

什麼都沒有。


你指的是貼片系列背後的一點是,它是(不幸的是現在仍然是)非常普遍的32位ARM平臺具有的TrustZone感知的硬件設計,但垃圾軟件支持。供應商BSP只實現了足夠的引導加載程序來啓動它,並且從不從引導切換到安全的SVC模式,因此整個Linux運行在安全的世界中,並且它們的內核充滿了高度平臺特定的代碼,像電源控制器直接硬件。如果你想使用虛擬化技術,這會帶來一個問題(如果你是KVM/ARM的共同維護者,並且最近給自己買了一臺CubieTruck,顯然是一個緊迫的問題......) - 很容易就能把U-啓動代碼,然後在啓動Linux之前將它切換到NS-HYP,從而啓用KVM(上游U-boot在此時已經有一些基本的支持),但是一旦你退出了安全的世界,之後不能再使用原來的smp_operations來啓動輔助CPU,這些接口依賴於只接觸安全硬件。

通過實施掛載引導加載程序背後的一些簡單的運行時「固件」,您可以根據需要以最簡單的方式回撥到安全的世界,並且最有意義的是移動必需的特定於平臺的代碼有抽象出一個簡單的固件調用接口後面的操作,尤其是如果已經有Linux支持一個合適的。

但絕對沒有什麼特別的PSCI本身 - 有大量的具有適當的安全固件與它們實現電源管理和SMP操作的ARM平臺,而是通過自己的專有協議。只有依稀的相關方面是符合PSCI規範保證了所有CPU都將拿出相同模式,因此,如果你沒有在最初進入HYP的Linux,你不會看到不匹配的次級即將在其他一些不兼容模式或安全狀態。

+0

感謝您的詳細解答。它確實有幫助。我沒有幾個後續查詢1)。 「那麼你有最簡單的方式根據需要回撥到安全的世界中」,「固件」是指「PSCI」?我知道它已經使用「smc,0#」完成了,但我們爲什麼要這樣做,PSCI服務僅在EL3中運行(我懷疑它)? 2)。有了這個補丁系列,主CPU會通過PSCI服務發生嗎? –

+0

PSCI是[只是一個_protocol_](http://infocenter.arm.com/help/topic/com.arm.doc.den0022c/index.html),該固件代碼可以實現。在這種情況下,「固件」也可以包含管理程序(通常通過捕獲客戶操作系統的smc,但規範中規定通過'hvc'進行PSCI調用,其中EL3未實現)。正如我之前所說的那樣,主CPU啓動發生在**打開系統** - 您如何確切地認爲CPU可以運行代碼來安裝某些異常向量,發出軟件調用並運行進一步的代碼以自動啓動? – Notlikethat

相關問題