首页 > 系统相关 >Linux Hibernate配置以及流程简单分析(@STM32MP157D)

Linux Hibernate配置以及流程简单分析(@STM32MP157D)

时间:2022-12-10 09:55:39浏览次数:42  
标签:INFO Hibernate saving STM32MP157D Image loading Linux progress PM

关键词:

1. Hibernate介绍

2. Linux下Hibernate配置及操作

在内核中使能Hibernation功能:

由于Hibernate镜像需要保存在swap文件中,所以在内核中使能swap功能:

 

由于在hibernate过程中backlight pwm和panel rgb阻碍suspend流程,在dts和defconfig中关闭:

CONFIG_PWM_STM32=n

CONFIG_PWM_STM32_LP=n

修改cmdline,增加hiernate相关内容:

resume=/dev/mmcblk2p3 hibernate=nocompress

创建并挂载swap分区:

mkswap /dev/mmcblk2p3
swapon /dev/mmcblk2p3

触发系统进入hibernate:

echo disk > /sys/power/state

对设备重启或者重新上电后,会进入hibernate的resume流程。

3. Linux Hibernate简单分析

hibernate suspend流程log:

[   52.887333] PM: hibernation entry
[   52.929313] Filesystems sync: 0.035 seconds
[   52.932150] Freezing user space processes ... (elapsed 0.001 seconds) done.
[   52.939024] OOM killer disabled.
[   52.942457] PM: Preallocating image memory... done (allocated 16233 pages)
[   53.248077] PM: Allocated 64932 kbytes in 0.30 seconds (216.44 MB/s)
[   53.254523] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
[   53.384540] PM: Creating hibernation image:
[   53.384540] PM: Need to copy 16078 pages
[   53.384540] PM: Hibernation image created (16078 pages copied)
[   53.554738] mmc2: switch to bus width 8 failed
[   53.560104] PM: Saving image data pages (16094 pages)...
[   53.564545] PM: Image saving progress:   0%
[   53.601408] PM: Image saving progress:  10%
[   53.629244] PM: Image saving progress:  20%
[   53.656327] PM: Image saving progress:  30%
[   53.685321] PM: Image saving progress:  40%
[   53.712630] PM: Image saving progress:  50%
[   53.740625] PM: Image saving progress:  60%
[   53.768257] PM: Image saving progress:  70%
[   53.797453] PM: Image saving progress:  80%
[   53.825003] PM: Image saving progress:  90%
[   53.859307] PM: Image saving progress: 100%
[   56.790787] PM: Image saving done
[   56.792765] PM: Wrote 64376 kbytes in 3.22 seconds (19.99 MB/s)
[   56.799714] PM: S|
[   56.858127] reboot: Power down
INFO:    arnoldlu psci_smc_handler smc_fid=0x84000008 [r1:r3]=0x00000000 0x00000000 0x00000000
INFO:    arnoldlu psci_system_off
INFO:    PSCI Power Domain Map:
INFO:      Domain Node : Level 1, parent_node -1, State ON (0x0)
INFO:      Domain Node : Level 0, parent_node 0, State ON (0x0)
INFO:      CPU Node : MPID 0x0, parent_node 0, State ON (0x0)
INFO:      CPU Node : MPID 0xffffffff, parent_node 0, State OFF (0x2)
INFO:    arnoldlu stm32_system_off
INFO:    arnoldlu stm32_enter_low_power, mode=0x00000005, nsec_addr=0x00000000
INFO:    arnoldlu enter_cstop-133
INFO:    arnoldlu stm32_pwr_down_wfi-338
INFO:    arnoldlu stm32_pwr_down_wfi-343

hibernate resume流程log:

[    3.500455] PM: resume from hibernation
[    3.504076] Freezing user space processes ... (elapsed 0.000 seconds) done.
[    3.509839] OOM killer disabled.
[    3.536106] PM: Loading image data pages (16094 pages)...
[    3.540530] PM: Image loading progress:   0%
[    3.637384] PM: Image loading progress:  10%
[    3.652342] PM: Image loading progress:  20%
[    3.666588] PM: Image loading progress:  30%
[    3.681412] PM: Image loading progress:  40%
[    3.695582] PM: Image loading progress:  50%
[    3.709767] PM: Image loading progress:  60%
[    3.726351] PM: Image loading progress:  70%
[    3.740577] PM: Image loading progress:  80%
[    6.184681] PM: Image loading progress:  90%
[    6.992923] PM: Image loading progress: 100%
[    6.997255] PM: Image loading done
[    6.999253] PM: Read 64376 kbytes in 3.45 seconds (18.65 MB/s)
[   53.546686] OOM killer enabled.
[   53.548373] Restarting tasks ... done.
[   53.554439] PM: hibernation exit
# [   53.608205] mmc1: Problem switching card into high-speed mode!

Linux下hibernate suspend流程:

sate_store
  hibernate
    hibernation_available
    lock_system_sleep
    pm_prepare_console
    __pm_notifier_call_chain
    ksys_sync_helper
    freeze_processes
    lock_device_hotplug
    create_basic_memory_bitmaps
    hibernation_snapshot
    swsusp_write
    swsusp_free
    power_down--根据hibernate模式不同执行不同流程,通过/sys/power/state设置。
      suspend_devices_and_enter--suspend模式。
      kernel_restart--reboot模式。
      hiberrnation_platform_enter--platform模式。
      kernel_power_off--shutdown模式。

 

在Linux启动时,调用software_resume检查是否上次为hibernate关闭:

late_initcall_sync(software_resume)
  pm_prepare_console
  __pm_notifier_call_chain
  freeze_processes
  load_image_and_restore
    lock_device_hotplug
    create_basic_memory_bitmaps
    swsusp_read
    swsusp_close
    hibernation_restore
    swsusp_free
    free_basic_memory_bitmaps
    unlock_device_hotplug
  thaw_processes
  __pm_notifier_call_chain
  pm_restore_console
  swsusp_close

 

 

标签:INFO,Hibernate,saving,STM32MP157D,Image,loading,Linux,progress,PM
From: https://www.cnblogs.com/arnoldlu/p/16970810.html

相关文章

  • Linux/Windows双系统时间同步
    Windows和Linux分别用的是RTC和UTC而导致产生8小时的时间差方案1:linux改为RTC时间(systemd默认硬件时钟为协调世界时(UTC))sudotimedatectlset-local-rtc1orsudotimedate......
  • Linux环境搭建与基本命令
    Linux基本使用与基本命令一:搭建Linux环境1:使用vaware安装Linux(1):安装vaware下载地址:http://www.vmware.com/注意:vaware是一个收费软件,可以在网上搜一下15以前版本,密钥......
  • Linux系统调用实现简析
    1.前言限于作者能力水平,本文可能存在的谬误,因此而给读者带来的损失,作者不做任何承诺。2.背景本篇基于Linux4.14+ARM32+glibc-2.31进行分析。3.系统调用的实......
  • linux shell
    frrinit.shif[-r"/lib/lsb/init-functions"];then./lib/lsb/init-functionselselog_success_msg(){echo"$@"}log_warning_msg()......
  • linux 安装 nginx,并且注册成一个服务
    * 一键安装四个依赖yum-yinstallgcczlibzlib-develpcre-developensslopenssl-devel* 安装nginx【如果报:-bash:wget:commandnotfound,先安装wget:yum-yinsta......
  • 聊聊我学linux的历程
    今天给大家分享一下我学习linux的历程,我喜欢上linux系统完全就是机缘巧合,大学时上的是网络工程专业,说来惭愧一直到大二上学期我还不知linux为何物,唯一接触过的就是电影里面......
  • linux mailx&dingding机器人报警
    前言:采用devops的思想来确认做本文内容目的作为<用户角色>我想要<结果>以便于<目的>作为运维人员,我想要服务器故障时候能够进行报警,以便于即使处理服务器故障、保障服......
  • linux代码相关的工具
    函数调用关系codevizcalltreegprof,kprofhttp://blog.chinaunix.net/uid-20749137-id-718762.htmlgraphvizgdb&backtracestracediagramdesigner可以画代码的关系图 应......
  • Linux 资料大全
    Helloall,给大家分享一些​​Linux学习资料​​,包含:社区网站、在线教程、命令大全、在线模拟器、经典书籍、镜像站点等...从入门到进阶,应有尽有。无论你是小白,还是Linux......
  • LINUX下EPOLL等不错的文章收藏
    1通俗讲解异步,非阻塞和IO复用​​​https://www.zybuluo.com/phper/note/595507​​​2知乎问答https://www.zhihu.com/question/20122137/......