cpu_ops接口
驅(qū)動初始化完成后,cpu的cpu_ops就可以調(diào)用這些回調(diào)實現(xiàn)psci功能的調(diào)用。如下所示,當(dāng)devicetree中cpu的enable-method設(shè)置為psci時,該cpu的cpu_ops將指向cpu_psci_ops。
cpu0: cpu@0 {
...
enable-method = "psci";
…
}
其中cpu_psci_ops的定義如下:
const struct cpu_operations cpu_psci_ops = {
.name = "psci",
.cpu_init = cpu_psci_cpu_init,
.cpu_prepare = cpu_psci_cpu_prepare,
.cpu_boot = cpu_psci_cpu_boot,
#ifdef CONFIG_HOTPLUG_CPU
.cpu_can_disable = cpu_psci_cpu_can_disable,
.cpu_disable = cpu_psci_cpu_disable,
.cpu_die = cpu_psci_cpu_die,
.cpu_kill = cpu_psci_cpu_kill,
#endif
}
如啟動cpu的接口為cpu_psci_cpu_boot,它會通過以下流程最終調(diào)用psci驅(qū)動中的psci_ops函數(shù):
static int cpu_psci_cpu_boot(unsigned int cpu)
{
phys_addr_t pa_secondary_entry = __pa_symbol(function_nocfi(secondary_entry));
int err = psci_ops.cpu_on(cpu_logical_map(cpu), pa_secondary_entry);
if (err)
pr_err("failed to boot CPU%d (%d)n", cpu, err);
return err;
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
內(nèi)核
+關(guān)注
關(guān)注
3文章
1405瀏覽量
40974 -
cpu
+關(guān)注
關(guān)注
68文章
11013瀏覽量
215303 -
驅(qū)動
+關(guān)注
關(guān)注
12文章
1882瀏覽量
86374 -
SMP
+關(guān)注
關(guān)注
0文章
76瀏覽量
20109
發(fā)布評論請先 登錄
相關(guān)推薦
熱點推薦
ARM電源管理中的PSCI是什么意思呢
今天來看一個電源功耗相關(guān)的東西,PSCI(Power State Coordination Interface),翻譯一下就是“電源狀態(tài)協(xié)作接口”。從名字就能直觀看出來,PSCI是一套電源管理
發(fā)表于 04-02 09:45
請教大神qemu模擬cortex-A53運行rt-thread出錯怎么解決呢?
出現(xiàn)了No cpu_ops was probed for CPU 1,請問是什么原因,我該怎么配置?感謝各位大佬
發(fā)表于 02-15 10:51
OPS常見問題的故障定位思路
,應(yīng)用編程接口)來開放系統(tǒng),在基于OPS開發(fā)的過程中,可能出現(xiàn)OPS功能配置不生效的現(xiàn)象,本文介紹了OPS常見問題的故障定位思路及基本解決方
CPU 拓撲中的SMP架構(gòu)
CPU 拓撲用來表示 CPU 在硬件層面的組合方式,本文主要講解 CPU 拓撲中的 SMP(Symmetric Multi-Processor,對稱多處理器系統(tǒng))
基于ARM架構(gòu)的PSCI接口規(guī)范
本文主要是在ARM架構(gòu)的不同異常等級上工作的軟件之間,提供一個標(biāo)準的電源管理接口。這些軟件,比如Linux、Hypervisor、安全Firmware和可信OS之間必須能夠?qū)崿F(xiàn)互相操作。而這些軟件可能由不同廠商提供,本標(biāo)準就是為這些軟件的集成提供便利。
如何在內(nèi)核中啟動secondary cpu
啟動secondary cpu 內(nèi)核在啟動secondary cpu之前當(dāng)然需要為其準備好執(zhí)行環(huán)境,因為內(nèi)核中

SMP多核啟動cpu操作函數(shù)
cpu操作函數(shù) cpu_ops函數(shù)由bringup_cpu調(diào)用,以觸發(fā)secondary cpu啟動。它是根據(jù)設(shè)備樹中解析出的enable-

psci電源管理接口可以用于什么場景
psci是arm提供的一套電源管理接口,當(dāng)前一共包含0.1、0.2和1.0三個版本。它可被用于以下場景:(1)cpu的idle管理 (2)cpu hotplug以及secondary
psci接口規(guī)范介紹
由于psci是由linux內(nèi)核調(diào)用bl31中的安全服務(wù),實現(xiàn)cpu電源管理功能的。因此其軟件架構(gòu)包含三個部分: (1)
bl31中的psci架構(gòu)介紹
bl31中的psci架構(gòu) bl31為內(nèi)核提供了一系列運行時服務(wù),psci作為其標(biāo)準運行時服務(wù)的一部分,通過宏DECLARE_RT_SVC注冊

SMP多核secondary cpu啟動流程
secondary cpu啟動 由于psci方式啟動secondary cpu的流程,除了其所執(zhí)行的cpu_ops不同之外,其它流程與spin-table方式是相同的,因此我們這里只給

SMP多核啟動PSCI代碼示例
:qemu平臺 - >*psci_ops = 208 static const plat_psci_ops_t plat_qemu_psci_pm_ops = { 209 .cpu
PSCI處理函數(shù)代碼分析
處理函數(shù)根據(jù)funid來決定服務(wù),可以看到PSCI_CPU_ON_AARCH64為0xc4000003,這正是設(shè)備樹中填寫的cpu_on屬性的id,會委托psci_cpu_on來執(zhí)行核
開核返回:EL1啟動從處理器
許使用psci情況 - > rest_init - > kernel_init - > kernel_init_freeable - > smp_prepare_cpus //準備cpu 對于每個可能的cpu 1.
評論