五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

簡(jiǎn)單講解Linux PSCI框架

2022-12-09 15:22 作者:補(bǔ)給站Linux內(nèi)核  | 我要投稿

說明:

  1. Kernel版本:4.14

  2. ARM64處理器

  3. 使用工具:Source Insight 3.5, Visio

1. 介紹

PSCI, Power State Coordination Interface,由ARM定義的電源管理接口規(guī)范,通常由Firmware來(lái)實(shí)現(xiàn),而Linux系統(tǒng)可以通過smc/hvc指令來(lái)進(jìn)入不同的Exception Level,進(jìn)而調(diào)用對(duì)應(yīng)的實(shí)現(xiàn)。

那問題來(lái)了?為什么要把這個(gè)放到Firmware中去實(shí)現(xiàn)呢?原因是ARMv8架構(gòu),引入了Virtualization,Security等概念,CPU boot、shutdown、suspend/resumen等操作不再如傳統(tǒng)那樣單純了。我們不再是我們,我們依然是我們。

2. 分析

代碼路徑:arch/arm64/kernel/psci.c drivers/firmware/psci.c

2.1 總體框架

Linux對(duì)CPU core的操作抽象出了結(jié)構(gòu)struct cpu_operations,開放給上層軟件調(diào)用,struct cpu_operations統(tǒng)一對(duì)底層的CPU及power等資源進(jìn)行統(tǒng)一操作,完美。今天我們的故事就從struct cpu_operations開始。

話不多說,直接上圖分析

圖片
  • CPU Operation有兩種方式:spin-tablepsci,這個(gè)由Device Tree來(lái)指定,顯然我們今天說的是psci,以cpu_psci_ops為核心;

  • cpu_psci_ops中的函數(shù)指針在arch/arm64/kernel/psci.c中進(jìn)行賦值,而實(shí)際的實(shí)現(xiàn)中去調(diào)用了psci_ops中的實(shí)現(xiàn);

  • psci_ops中會(huì)根據(jù)實(shí)際的Function ID找到對(duì)應(yīng)的函數(shù),從而通過hvc/smc指令調(diào)用Firmware接口;說一個(gè)實(shí)際的用例吧:比如你現(xiàn)在需要把系統(tǒng)Suspend,在用戶輸入echo mem > /sys/power/state時(shí),最終會(huì)調(diào)用到cpu_suspend函數(shù),由上圖可知,最終也能調(diào)用到底層的Firmware,當(dāng)然,前提是Firmware中已經(jīng)實(shí)現(xiàn)了該接口。

所以,現(xiàn)在看起來(lái)PSCI其實(shí)就是去實(shí)現(xiàn)調(diào)用底層Firmware的接口,并且填充到對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)中就行了。

目前在內(nèi)核中有三個(gè)版本的PSCI,分別是:PSCI V0.1/, PSCI V0.2/, PSCI V1.0,對(duì)應(yīng)的psci_of_match[]一目了然:


【文章福利】小編推薦自己的Linux內(nèi)核技術(shù)交流群:【749907784】整理了一些個(gè)人覺得比較好的學(xué)習(xí)書籍、視頻資料共享在群文件里面,有需要的可以自行添加哦?。。。ê曨l教程、電子書、實(shí)戰(zhàn)項(xiàng)目及代碼)? ?

2.1 PSCI v0.1分析

下邊分析下PSCI v0.1吧

我們從哪里來(lái)?要到哪里去?老規(guī)矩,直接上圖

圖片
  • setup_arch開始跟蹤,能看到入口為psci_dt_init(),從而跳轉(zhuǎn)到driver/firmware/psci.c中的函數(shù)中;

  • psci_dt_init()會(huì)去讀取并解析Device Tree中的內(nèi)容,從而選擇版本(psci_0_1_init/psci_0_2_init),選擇指令(hvc/smc)等;

  • psci_0_1_init()函數(shù)完成的主要內(nèi)容其實(shí)是填充對(duì)應(yīng)的函數(shù)指針,以及psci_function_id[]數(shù)組;

那么如何從Device Tree到實(shí)際的解析和配置中來(lái)的呢?下面以arch/arm/boot/dts/xenvm-4.2.dts為例:

  • 設(shè)備樹是這樣子的

圖片

解析的框架是這樣子的

圖片

2.2 PSCI v0.2及以上與PSCI v0.1的區(qū)別

  • 代碼區(qū)別:PSCI v0.2支持 CPU Suspend,CPU Migrate等操作,也就是功能更全,顯然我說的這個(gè)是廢話,代碼說明一切;

  • DeviceTree的區(qū)別:


原文作者:LoyenWang



簡(jiǎn)單講解Linux PSCI框架的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
平阳县| 岑巩县| 和静县| 嘉荫县| 新民市| 丁青县| 久治县| 山东省| 杨浦区| 铜川市| 威宁| 山西省| 裕民县| 繁峙县| 秦安县| 鄂托克旗| 咸阳市| 平南县| 临城县| 曲沃县| 昌吉市| 盐山县| 田阳县| 阜新市| 昌平区| 普陀区| 白银市| 二连浩特市| 汉沽区| 友谊县| 澄迈县| 安达市| 锡林浩特市| 都江堰市| 榆树市| 洪江市| 额敏县| 陕西省| 沙坪坝区| 社会| 牙克石市|