內核中的psci架構
內核psci軟件架構包含psci驅動和每個cpu的cpu_ops回調函數實現兩部分。
其中psci驅動實現了驅動初始化和psci相關接口實現功能,而cpu_ops回調函數最終也會調用psci驅動的接口。
psci驅動
首先我們看一下devicetree中的配置:
psci {
compatible = "arm,psci-0.2"; (1)
method = "smc"; (2)
}
(1)用于指定psci版本
(2)根據該psci由bl31處理還是hypervisor處理,可以指定其對應的陷入方式。若由bl31處理為smc,若由hypervisor處理則為hvc
驅動流程主要是與bl31通信,以確認其是否支持給定的psci版本,以及相關psci操作函數的實現,其流程如下:其主要工作即為psci設置相關的回調函數,該函數定義如下:
static void __init psci_0_2_set_functions(void)
{
…
psci_ops = (struct psci_operations){
.get_version = psci_0_2_get_version,
.cpu_suspend = psci_0_2_cpu_suspend,
.cpu_off = psci_0_2_cpu_off,
.cpu_on = psci_0_2_cpu_on,
.migrate = psci_0_2_migrate,
.affinity_info = psci_affinity_info,
.migrate_info_type = psci_migrate_info_type,
}; (1)
register_restart_handler(&psci_sys_reset_nb); (2)
pm_power_off = psci_sys_poweroff; (3)
}
(1)為psci_ops設置相應的回調函數
(2)為psci模塊設置系統重啟時的通知函數
(3)將系統的power_off函數指向相應的psci接口
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
內核
+關注
關注
3文章
1372瀏覽量
40282 -
cpu
+關注
關注
68文章
10855瀏覽量
211605 -
驅動
+關注
關注
12文章
1839瀏覽量
85267 -
SMP
+關注
關注
0文章
74瀏覽量
19654
發布評論請先 登錄
相關推薦
ARM電源管理中的PSCI是什么意思呢
今天來看一個電源功耗相關的東西,PSCI(Power State Coordination Interface),翻譯一下就是“電源狀態協作接口”。從名字就能直觀看出來,PSCI是一套電源管理
發表于 04-02 09:45
內核驅動架構圖及程序
內核驅動是軟件與硬件交互的橋梁,通過文件系統接口訪問OpenHarmony內核的硬件資源,是用戶與內核之間、進程與進程之間通信的一種方式。每類驅動
發表于 04-13 11:18
?2次下載
psci電源管理接口可以用于什么場景
psci是arm提供的一套電源管理接口,當前一共包含0.1、0.2和1.0三個版本。它可被用于以下場景:(1)cpu的idle管理 (2)cpu hotplug以及secondary cpu啟動
psci接口規范介紹
由于psci是由linux內核調用bl31中的安全服務,實現cpu電源管理功能的。因此其軟件架構包含三個部分: (1)內核與bl31之間的調用接口規范 (2)
內核中的psci架構cpu_ops接口
cpu_ops接口 驅動初始化完成后,cpu的cpu_ops就可以調用這些回調實現psci功能的調用。如下所示,當devicetree中cpu的enable-method設置為psci
SMP多核啟動PSCI代碼示例
1、std_svc_setup (主要關注設置psci操作集)--有服務 std_svc_setup //services/std_svc/std_svc_setup.c - >psci
PSCI處理函數代碼分析
處理函數根據funid來決定服務,可以看到PSCI_CPU_ON_AARCH64為0xc4000003,這正是設備樹中填寫的cpu_on屬性的id,會委托psci_cpu_on來執行核上電任務。下面
linux驅動程序如何加載進內核
在Linux系統中,驅動程序是內核與硬件設備之間的橋梁。它們允許內核與硬件設備進行通信,從而實現對硬件設備的控制和管理。 驅動程序的編寫
評論