補(bǔ)充一下一個(gè)使用自旋表作為啟動(dòng)方式的平臺(tái)設(shè)備樹cpu節(jié)點(diǎn):
arch/arm64/boot/dts/xxx.dtsi:
cpu@0 {
device_type = "cpu";
compatible = "arm,armv8";
reg = < 0x0 0x000 >;
enable-method = "spin-table";
cpu-release-addr = < 0x1 0x0000fff8 >;
};
spin-table方式的多核啟動(dòng)方式,顧名思義在于自旋,主處理器和從處理器上電都會(huì)啟動(dòng),主處理器執(zhí)行uboot暢通無阻,從處理器在spin_table_secondary_jump處wfe睡眠,主處理器通過修改設(shè)備樹的cpu節(jié)點(diǎn)的cpu-release-addr屬性為spin_table_cpu_release_addr,這是從處理器的釋放地址所在的地方。
主處理器進(jìn)入內(nèi)核后,會(huì)通過smp_prepare_cpus函數(shù)調(diào)用spin-table 對(duì)應(yīng)的cpu操作集的cpu_prepare方法從而在smp_spin_table_cpu_prepare函數(shù)中設(shè)置從處理器的釋放地址為secondary_holding_pen這個(gè)內(nèi)核函數(shù),然后通過sev指令喚醒從處理器,從處理器繼續(xù)從secondary_holding_pen開始執(zhí)行(從處理器來到了內(nèi)核的世界),發(fā)現(xiàn)secondary_holding_pen_release不是自己的處理編號(hào),然后通過wfe繼續(xù)睡眠。
當(dāng)主處理器完成了大多數(shù)的內(nèi)核組件的初始化之后,調(diào)用smp_init來來開始真正的啟動(dòng)從處理器,最終調(diào)用spin-table 對(duì)應(yīng)的cpu操作集的cpu_boot方法從而在smp_spin_table_cpu_boot將需要啟動(dòng)的處理器的編號(hào)寫入secondary_holding_pen_release中,然后再次sev指令喚醒從處理器,從處理器得以繼續(xù)執(zhí)行(設(shè)置自己異常向量表,初始化mmu等)。
最終在idle線程中執(zhí)行wfi睡眠。其他從處理器也是同樣的方式啟動(dòng)起來,同樣最后進(jìn)入各種idle進(jìn)程執(zhí)行wfi睡眠,主處理器繼續(xù)往下進(jìn)行內(nèi)核初始化,直到啟動(dòng)init進(jìn)程,后面多個(gè)處理器都被啟動(dòng)起來,都可以調(diào)度進(jìn)程,多進(jìn)程還會(huì)被均衡到多核。
問題
- 1、 而啟動(dòng)流程中哪個(gè)cpu作為primary cpu可以任意指定?primary cpu如何任意指定的?
啟動(dòng)的匯編代碼中會(huì)通過cpu的affinity值獲取當(dāng)前cpu的id,然后將自身cpu id與指定cpu id進(jìn)行比較,以確定當(dāng)前cpu是否是primary cpu
- 2、cpu hotplug對(duì)于spintable是必須的嗎?
spintable啟動(dòng)方式不支持cpu hotplug,只是在secondary 啟動(dòng)時(shí)復(fù)用了hotplug相同的流程,這部分代碼默認(rèn)是會(huì)被編譯到內(nèi)核中的
但是spin-table方式非常簡(jiǎn)單,但其只能被用于secondary cpu啟動(dòng),功能比較單一。
隨著aarch64架構(gòu)電源管理需求的增加(如cpu熱插拔、cpu idle等),arm設(shè)計(jì)了一套標(biāo)準(zhǔn)的電源管理接口協(xié)議psci。
該協(xié)議可以支持所有cpu相關(guān)的電源管理接口,而且由于電源相關(guān)操作是系統(tǒng)的關(guān)鍵功能,為了防止其被攻擊,該協(xié)議將底層相關(guān)的實(shí)現(xiàn)都放到了secure空間,從而可提高系統(tǒng)的安全性。
-
處理器
+關(guān)注
關(guān)注
68文章
19286瀏覽量
229873 -
cpu
+關(guān)注
關(guān)注
68文章
10863瀏覽量
211799 -
SMP
+關(guān)注
關(guān)注
0文章
74瀏覽量
19669 -
設(shè)備樹
+關(guān)注
關(guān)注
0文章
38瀏覽量
3126
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論