cpu_ops接口
驅動初始化完成后,cpu的cpu_ops就可以調用這些回調實現psci功能的調用。如下所示,當devicetree中cpu的enable-method設置為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,它會通過以下流程最終調用psci驅動中的psci_ops函數:
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;
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
內核
+關注
關注
3文章
1383瀏覽量
40442 -
cpu
+關注
關注
68文章
10909瀏覽量
213139 -
驅動
+關注
關注
12文章
1852瀏覽量
85685 -
SMP
+關注
關注
0文章
76瀏覽量
19758
發布評論請先 登錄
相關推薦
ARM電源管理中的PSCI是什么意思呢
今天來看一個電源功耗相關的東西,PSCI(Power State Coordination Interface),翻譯一下就是“電源狀態協作接口”。從名字就能直觀看出來,PSCI是一套電源管理
發表于 04-02 09:45
請教大神qemu模擬cortex-A53運行rt-thread出錯怎么解決呢?
出現了No cpu_ops was probed for CPU 1,請問是什么原因,我該怎么配置?感謝各位大佬
發表于 02-15 10:51
OPS常見問題的故障定位思路
,應用編程接口)來開放系統,在基于OPS開發的過程中,可能出現OPS功能配置不生效的現象,本文介紹了OPS常見問題的故障定位思路及基本解決方
CPU 拓撲中的SMP架構
CPU 拓撲用來表示 CPU 在硬件層面的組合方式,本文主要講解 CPU 拓撲中的 SMP(Symmetric Multi-Processor,對稱多處理器系統)
基于ARM架構的PSCI接口規范
本文主要是在ARM架構的不同異常等級上工作的軟件之間,提供一個標準的電源管理接口。這些軟件,比如Linux、Hypervisor、安全Firmware和可信OS之間必須能夠實現互相操作。而這些軟件可能由不同廠商提供,本標準就是為這些軟件的集成提供便利。
psci電源管理接口可以用于什么場景
psci是arm提供的一套電源管理接口,當前一共包含0.1、0.2和1.0三個版本。它可被用于以下場景:(1)cpu的idle管理 (2)cpu hotplug以及secondary
SMP多核secondary cpu啟動流程
secondary cpu啟動 由于psci方式啟動secondary cpu的流程,除了其所執行的cpu_ops不同之外,其它流程與spin-table方式是相同的,因此我們這里只給
![SMP多核secondary <b class='flag-5'>cpu</b>啟動流程](https://file1.elecfans.com/web2/M00/B2/B1/wKgaomVu7qGADZyPAAFcIeh24do321.jpg)
SMP多核啟動PSCI代碼示例
:qemu平臺 - >*psci_ops = 208 static const plat_psci_ops_t plat_qemu_psci_pm_ops = { 209 .cpu
PSCI處理函數代碼分析
處理函數根據funid來決定服務,可以看到PSCI_CPU_ON_AARCH64為0xc4000003,這正是設備樹中填寫的cpu_on屬性的id,會委托psci_cpu_on來執行核
開核返回:EL1啟動從處理器
許使用psci情況 - > rest_init - > kernel_init - > kernel_init_freeable - > smp_prepare_cpus //準備cpu 對于每個可能的cpu 1.
評論