驅(qū)動初始化完成后,cpu的cpu_ops就可以調(diào)用這些回調(diào)實(shí)現(xiàn)psci功能的調(diào)用。如下所示,當(dāng)devicetree中cpu的enable-method設(shè)置為psci時(shí),該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)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報(bào)投訴
相關(guān)推薦
今天來看一個(gè)電源功耗相關(guān)的東西,PSCI(Power State Coordination Interface),翻譯一下就是“電源狀態(tài)協(xié)作接口”。從名字就能直觀看出來,PSCI是一套電源管理
發(fā)表于 04-02 09:45
出現(xiàn)了No cpu_ops was probed for CPU 1,請問是什么原因,我該怎么配置?感謝各位大佬
發(fā)表于 02-15 10:51
,應(yīng)用編程接口)來開放系統(tǒng),在基于OPS開發(fā)的過程中,可能出現(xiàn)OPS功能配置不生效的現(xiàn)象,本文介紹了OPS常見問題的故障定位思路及基本解決方
發(fā)表于 12-22 10:04
?2766次閱讀
CPU 拓?fù)溆脕肀硎?CPU 在硬件層面的組合方式,本文主要講解 CPU 拓?fù)?b class='flag-5'>中的 SMP(Symmetric Multi-Processor,對稱多處理器系統(tǒng))
發(fā)表于 08-29 11:02
?4491次閱讀
本文主要是在ARM架構(gòu)的不同異常等級上工作的軟件之間,提供一個(gè)標(biāo)準(zhǔn)的電源管理接口。這些軟件,比如Linux、Hypervisor、安全Firmware和可信OS之間必須能夠?qū)崿F(xiàn)互相操作。而這些軟件可能由不同廠商提供,本標(biāo)準(zhǔn)就是為這些軟件的集成提供便利。
發(fā)表于 11-07 10:48
?4271次閱讀
啟動secondary cpu 內(nèi)核在啟動secondary cpu之前當(dāng)然需要為其準(zhǔn)備好執(zhí)行環(huán)境,因?yàn)?b class='flag-5'>內(nèi)核中
發(fā)表于 12-05 15:46
?612次閱讀
cpu操作函數(shù) cpu_ops函數(shù)由bringup_cpu調(diào)用,以觸發(fā)secondary cpu啟動。它是根據(jù)設(shè)備樹中解析出的enable-
發(fā)表于 12-05 16:04
?793次閱讀
psci是arm提供的一套電源管理接口,當(dāng)前一共包含0.1、0.2和1.0三個(gè)版本。它可被用于以下場景:(1)cpu的idle管理 (2)cpu hotplug以及secondary
發(fā)表于 12-05 16:28
?569次閱讀
由于psci是由linux內(nèi)核調(diào)用bl31中的安全服務(wù),實(shí)現(xiàn)cpu電源管理功能的。因此其軟件架構(gòu)包含三個(gè)部分: (1)
發(fā)表于 12-05 16:53
?958次閱讀
內(nèi)核中的psci架構(gòu) 內(nèi)核psci軟件架構(gòu)包含
發(fā)表于 12-05 16:58
?744次閱讀
bl31中的psci架構(gòu) bl31為內(nèi)核提供了一系列運(yùn)行時(shí)服務(wù),psci作為其標(biāo)準(zhǔn)運(yùn)行時(shí)服務(wù)的一部分,通過宏DECLARE_RT_SVC注冊
發(fā)表于 12-05 17:33
?1079次閱讀
secondary cpu啟動 由于psci方式啟動secondary cpu的流程,除了其所執(zhí)行的cpu_ops不同之外,其它流程與spin-table方式是相同的,因此我們這里只給
發(fā)表于 12-05 17:41
?885次閱讀
:qemu平臺 - >*psci_ops = 208 static const plat_psci_ops_t plat_qemu_psci_pm_ops = { 209 .cpu
發(fā)表于 12-05 17:45
?717次閱讀
處理函數(shù)根據(jù)funid來決定服務(wù),可以看到PSCI_CPU_ON_AARCH64為0xc4000003,這正是設(shè)備樹中填寫的cpu_on屬性的id,會委托psci_cpu_on來執(zhí)行核
發(fā)表于 12-05 18:08
?939次閱讀
許使用psci情況 - > rest_init - > kernel_init - > kernel_init_freeable - > smp_prepare_cpus //準(zhǔn)備cpu 對于每個(gè)可能的cpu 1.
發(fā)表于 12-05 18:11
?592次閱讀
評論