0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

內(nèi)核中的psci驅(qū)動(dòng)是什么

麥辣雞腿堡 ? 來(lái)源:TrustZone ? 作者:Hcoco ? 2023-12-05 16:58 ? 次閱讀

內(nèi)核中的psci架構(gòu)

內(nèi)核psci軟件架構(gòu)包含psci驅(qū)動(dòng)和每個(gè)cpu的cpu_ops回調(diào)函數(shù)實(shí)現(xiàn)兩部分。

其中psci驅(qū)動(dòng)實(shí)現(xiàn)了驅(qū)動(dòng)初始化和psci相關(guān)接口實(shí)現(xiàn)功能,而cpu_ops回調(diào)函數(shù)最終也會(huì)調(diào)用psci驅(qū)動(dòng)的接口。

psci驅(qū)動(dòng)

首先我們看一下devicetree中的配置:

psci {
		compatible = "arm,psci-0.2";  (1method = "smc";               (2)
     }

(1)用于指定psci版本

(2)根據(jù)該psci由bl31處理還是hypervisor處理,可以指定其對(duì)應(yīng)的陷入方式。若由bl31處理為smc,若由hypervisor處理則為hvc

驅(qū)動(dòng)流程主要是與bl31通信,以確認(rèn)其是否支持給定的psci版本,以及相關(guān)psci操作函數(shù)的實(shí)現(xiàn),其流程如下:圖片其主要工作即為psci設(shè)置相關(guān)的回調(diào)函數(shù),該函數(shù)定義如下:

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設(shè)置相應(yīng)的回調(diào)函數(shù)

(2)為psci模塊設(shè)置系統(tǒng)重啟時(shí)的通知函數(shù)

(3)將系統(tǒng)的power_off函數(shù)指向相應(yīng)的psci接口

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1336

    瀏覽量

    40083
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10698

    瀏覽量

    209330
  • 驅(qū)動(dòng)
    +關(guān)注

    關(guān)注

    12

    文章

    1788

    瀏覽量

    84896
  • SMP
    SMP
    +關(guān)注

    關(guān)注

    0

    文章

    70

    瀏覽量

    19554
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux內(nèi)核container_of原理詳解

    Linux內(nèi)核中經(jīng)??梢?jiàn)container_of的身影,它在實(shí)際驅(qū)動(dòng)的編寫(xiě)也是廣泛應(yīng)用。
    發(fā)表于 07-14 15:19 ?255次閱讀
    Linux<b class='flag-5'>內(nèi)核</b><b class='flag-5'>中</b>container_of原理詳解

    在Linux內(nèi)核添加wifi驅(qū)動(dòng)

    在Linux內(nèi)核添加wifi驅(qū)動(dòng)Linux WIFI驅(qū)動(dòng)實(shí)驗(yàn)rtl8723 Wifi聯(lián)網(wǎng)測(cè)試
    發(fā)表于 02-05 07:59

    ARM電源管理PSCI是什么意思呢

    今天來(lái)看一個(gè)電源功耗相關(guān)的東西,PSCI(Power State Coordination Interface),翻譯一下就是“電源狀態(tài)協(xié)作接口”。從名字就能直觀看出來(lái),PSCI是一套電源管理
    發(fā)表于 04-02 09:45

    Linux內(nèi)核輸入子系統(tǒng)的驅(qū)動(dòng)研究

    Linux內(nèi)核輸入子系統(tǒng)的驅(qū)動(dòng)研究
    發(fā)表于 10-31 14:41 ?14次下載
    Linux<b class='flag-5'>內(nèi)核</b>輸入子系統(tǒng)的<b class='flag-5'>驅(qū)動(dòng)</b>研究

    如何配置WindowsCE內(nèi)核及加載自己的驅(qū)動(dòng)

    如何配置WindowsCE內(nèi)核及加載自己的驅(qū)動(dòng)。
    發(fā)表于 04-10 10:10 ?10次下載

    內(nèi)核驅(qū)動(dòng)架構(gòu)圖及程序

    內(nèi)核驅(qū)動(dòng)是軟件與硬件交互的橋梁,通過(guò)文件系統(tǒng)接口訪問(wèn)OpenHarmony內(nèi)核的硬件資源,是用戶與內(nèi)核之間、進(jìn)程與進(jìn)程之間通信的一種方式。每類驅(qū)動(dòng)
    發(fā)表于 04-13 11:18 ?2次下載
    <b class='flag-5'>內(nèi)核</b><b class='flag-5'>驅(qū)動(dòng)</b>架構(gòu)圖及程序

    Linux內(nèi)核代碼60%都是驅(qū)動(dòng)

    為什么Linux內(nèi)核代碼60%都是驅(qū)動(dòng)? 如果每支持新的設(shè)備就加入驅(qū)動(dòng),內(nèi)核會(huì)不會(huì)變得越來(lái)越臃腫?
    的頭像 發(fā)表于 07-11 11:48 ?728次閱讀
    Linux<b class='flag-5'>內(nèi)核</b>代碼60%都是<b class='flag-5'>驅(qū)動(dòng)</b>?

    linux內(nèi)核的driver_register介紹

    向linux內(nèi)核注冊(cè)驅(qū)動(dòng)由driver_register()完成。它將驅(qū)動(dòng)程序的信息添加到內(nèi)核驅(qū)動(dòng)程序列表
    的頭像 發(fā)表于 07-14 09:17 ?2291次閱讀
    linux<b class='flag-5'>內(nèi)核</b><b class='flag-5'>中</b>的driver_register介紹

    psci電源管理接口可以用于什么場(chǎng)景

    psci是arm提供的一套電源管理接口,當(dāng)前一共包含0.1、0.2和1.0三個(gè)版本。它可被用于以下場(chǎng)景:(1)cpu的idle管理 (2)cpu hotplug以及secondary cpu啟動(dòng)
    的頭像 發(fā)表于 12-05 16:28 ?417次閱讀

    psci接口規(guī)范介紹

    由于psci是由linux內(nèi)核調(diào)用bl31的安全服務(wù),實(shí)現(xiàn)cpu電源管理功能的。因此其軟件架構(gòu)包含三個(gè)部分: (1)內(nèi)核與bl31之間的調(diào)用接口規(guī)范 (2)
    的頭像 發(fā)表于 12-05 16:53 ?716次閱讀

    內(nèi)核psci架構(gòu)cpu_ops接口

    cpu_ops接口 驅(qū)動(dòng)初始化完成后,cpu的cpu_ops就可以調(diào)用這些回調(diào)實(shí)現(xiàn)psci功能的調(diào)用。如下所示,當(dāng)devicetreecpu的enable-method設(shè)置為psci
    的頭像 發(fā)表于 12-05 17:25 ?506次閱讀

    bl31psci架構(gòu)介紹

    bl31psci架構(gòu) bl31為內(nèi)核提供了一系列運(yùn)行時(shí)服務(wù),psci作為其標(biāo)準(zhǔn)運(yùn)行時(shí)服務(wù)的一部分,通過(guò)宏DECLARE_RT_SVC注冊(cè)到系統(tǒng)
    的頭像 發(fā)表于 12-05 17:33 ?776次閱讀
    bl31<b class='flag-5'>中</b>的<b class='flag-5'>psci</b>架構(gòu)介紹

    SMP多核啟動(dòng)PSCI代碼示例

    1、std_svc_setup (主要關(guān)注設(shè)置psci操作集)--有服務(wù) std_svc_setup //services/std_svc/std_svc_setup.c - >psci
    的頭像 發(fā)表于 12-05 17:45 ?506次閱讀

    PSCI處理函數(shù)代碼分析

    處理函數(shù)根據(jù)funid來(lái)決定服務(wù),可以看到PSCI_CPU_ON_AARCH64為0xc4000003,這正是設(shè)備樹(shù)填寫(xiě)的cpu_on屬性的id,會(huì)委托psci_cpu_on來(lái)執(zhí)行核上電任務(wù)。下面
    的頭像 發(fā)表于 12-05 18:08 ?729次閱讀

    linux驅(qū)動(dòng)程序如何加載進(jìn)內(nèi)核

    在Linux系統(tǒng)驅(qū)動(dòng)程序是內(nèi)核與硬件設(shè)備之間的橋梁。它們?cè)试S內(nèi)核與硬件設(shè)備進(jìn)行通信,從而實(shí)現(xiàn)對(duì)硬件設(shè)備的控制和管理。 驅(qū)動(dòng)程序的編寫(xiě)
    的頭像 發(fā)表于 08-30 15:02 ?189次閱讀