This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Remove "PM: request_firmware failed" warning

I've been seeing this warning during the kernel boot:

    PM: request_firmware failed

I'd like to get the warning removed. Now we don't use any Power Management features in our product because we don't have a battery based system, it's always plugged into the wall so we're always running full out.

I've found this message shows up during the wkup_m3_probe() function of wkup_m3.c

Now there's a wkup_m3 node in the am33xx.dtsi device tree file, I thought perhaps I could disable this, since I don't care about PM, I added in my device tree:

wkup_m3: wkup_m3@44d00000 {
    status = "disabled";

};

However this just triggered a kernel panic upon power up:

[    1.601071] platform cpufreq-cpu0.0: Driver cpufreq-cpu0 requests probe deferral
[    1.609277] Unable to handle kernel NULL pointer dereference at virtual address 0000001c
[    1.617850] pgd = c0004000
[    1.620704] [0000001c] *pgd=00000000
[    1.624512] Internal error: Oops: 805 [#1] ARM
...
[    1.823097] Backtrace:
[    1.825693] [<c002df30>] (wkup_m3_set_ops+0x0/0x20) from [<c07a5100>] (am33xx_pm_init+0x3a8/0x438)
...

So my thought is I need to disable PM another way. I can probably find this by tracking am33xx_pm_init and figuring out what flags are set to enable PM support, but I thought someone might have an answer for this already.

So does anyone know a straightforward way to deal with the "PM: request_firmware failed" message?

  • Biser,

       Thanks for the link. I went to the menuconfig and disabled the power management "Suspend to RAM and standby" and the "Power Management Debug Support" features. It looks like both "Run-time PM core functionality" and "Operating Performance Point (OPP) Layer library" could not be disabled.  (see below screen shot)

    After rebuilding with this configuration there is another Power Management related kernel panic:

    [    1.594245] cpu cpu0: cpu0 regulator not ready, retry
    [    1.599598] platform cpufreq-cpu0.0: Driver cpufreq-cpu0 requests probe deferral
    [    1.607784] Unable to handle kernel NULL pointer dereference at virtual address 0000001c
    [    1.616354] pgd = c0004000
    [    1.619207] [0000001c] *pgd=00000000
    [    1.623012] Internal error: Oops: 805 [#1] ARM
    [    1.627697] Modules linked in:
    [    1.630928] CPU: 0 PID: 1 Comm: swapper Not tainted 3.12.10-ti2013.12.01 #1
    [    1.638271] task: cd07da40 ti: cd07e000 task.ti: cd07e000
    [    1.643981] PC is at wkup_m3_set_ops+0x14/0x20
    [    1.648683] LR is at am33xx_pm_init+0x374/0x45c
    [    1.653464] pc : [<c003457c>]    lr : [<c075d3f0>]    psr: 80000113
    [    1.653464] sp : cd07fe58  ip : cd07fe68  fp : cd07fe64
    [    1.665569] r10: c07892d8  r9 : cd07e000  r8 : 00000000
    [    1.671078] r7 : 000000c8  r6 : c0acc7c0  r5 : cd0c1610  r4 : 00000000
    [    1.677960] r3 : 00000000  r2 : 00000001  r1 : 00000000  r0 : c080db64
    [    1.684845] Flags: Nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
    [    1.692552] Control: 10c5387d  Table: 80004019  DAC: 00000017
    [    1.698610] Process swapper (pid: 1, stack limit = 0xcd07e240)
    [    1.704760] Stack: (0xcd07fe58 to 0xcd080000)
    [    1.709356] fe40:                                                       cd07fe9c cd07fe68
    [    1.717985] fe60: c075d3f0 c0034574 00000000 00000003 00000000 00030d40 00000000 c07fe704
    [    1.726614] fe80: 00000007 c088be80 c074d410 c07503fc cd07feac cd07fea0 c0755c00 c075d088
    [    1.735242] fea0: cd07febc cd07feb0 c0750420 c0755bf4 cd07ff4c cd07fec0 c00089ec c0750408
    [    1.743870] fec0: 00000000 cd07feec cd07fef0 00000000 c005dd18 c026aec8 cd07ff04 cd07fee8
    [    1.752499] fee0: cd07ff04 cd07fef0 c074d410 c0ad4ac9 c0597934 000000c2 cd07ff4c cd07ff08
    [    1.761127] ff00: c005df18 c074d41c 00000000 00000007 c0ad4ad1 00000007 c07495ac c0697510
    [    1.769756] ff20: cd07ff4c c07fe704 00000007 c088be80 c074d410 000000c2 c07892d0 c07892d8
    [    1.778385] ff40: cd07ff94 cd07ff50 c074db94 c0008904 00000007 00000007 c074d410 cd07ff94
    [    1.787013] ff60: cd07ff98 cd07ff78 c0067b48 00000000 c0566ed8 00000000 00000000 00000000
    [    1.795641] ff80: 00000000 00000000 cd07ffac cd07ff98 c0566ee8 c074dab0 00000000 00000000
    [    1.804269] ffa0: 00000000 cd07ffb0 c00146f8 c0566ee4 00000000 00000000 00000000 00000000
    [    1.812897] ffc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    [    1.821525] ffe0: 00000000 00000000 00000000 00000000 00000013 00000000 66153014 c346202c
    [    1.830144] Backtrace:
    [    1.832740] [<c0034568>] (wkup_m3_set_ops+0x0/0x20) from [<c075d3f0>] (am33xx_pm_init+0x374/0x45c)
    [    1.842200] [<c075d07c>] (am33xx_pm_init+0x0/0x45c) from [<c0755c00>] (am33xx_init_late+0x18/0x20)
    [    1.851646]  r8:c07503fc r7:c074d410 r6:c088be80 r5:00000007 r4:c07fe704
    [    1.858756] [<c0755be8>] (am33xx_init_late+0x0/0x20) from [<c0750420>] (init_machine_late+0x24/0x30)
    [    1.868398] [<c07503fc>] (init_machine_late+0x0/0x30) from [<c00089ec>] (do_one_initcall+0xf4/0x154)
    [    1.878039] [<c00088f8>] (do_one_initcall+0x0/0x154) from [<c074db94>] (kernel_init_freeable+0xf0/0x1bc)
    [    1.888047] [<c074daa4>] (kernel_init_freeable+0x0/0x1bc) from [<c0566ee8>] (kernel_init+0x10/0xec)
    [    1.897604] [<c0566ed8>] (kernel_init+0x0/0xec) from [<c00146f8>] (ret_from_fork+0x14/0x3c)
    [    1.906408]  r4:00000000 r3:00000000
    [    1.910191] Code: e92dd800 e24cb004 e59f3008 e5933000 (e583001c)
    [    1.916715] ---[ end trace eabd9696ebc88e1d ]---
    [    1.921682] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
    [    1.921682]
    

    So I'm guessing that everything related to PM must be disabled if these options are disabled. Since in the menu config I can't seem to fully disable PM (moving over this selected options and typing "N" has no effect) I guess I need to manually update some values in the config file.

    Can you confirm this and the full set of options to manually disable?

    Thanks.

    -Mike

  • Hello Mike,

    Manually editing the config file is strongly not recommended. Acording Makefile in the local directory wkup_m3 is part from core CONFIG_PM. You can disable it by hand but it might break the compilation or cause alot of bugs. You are facing these panics due to other modules which tries to call functions which are defined in the disabled wkup_m3 module.

    Best regards,
    Kemal

  • Hello Mike,

    Another solution is to comment CONFIG_CPU_PM and CONFIG_SUSPEND settings in .config file of AM335X kernel 3.12.10.
    Doing so, you insure that power management functions will not take effect, although the am335x-pm-firmware.bin is loaded.
    It can be verified in file
    arch/arm/mach-omap2/pm33xx.c

    After adding mentioned comments in .config, kernel makes without issues.
    Linux boot log contains messages:
    ...
    [ 0.194296] PM: Loading am335x-pm-firmware.bin
    ...
    [ 2.842705] PM: CM3 Firmware Version = 0x186
    ...
    No fail messages.

    Test suspend/resume as described in processors.wiki.ti.com/.../Linux_Core_Power_Management_User%27s_Guide
    trying to suspend the system with: $echo mem > /sys/power/state
    result is:
    root@am335x-evm:~# echo mem > /sys/power/state
    -sh: echo: write error: Function not implemented
    it means that suspend/resume is not available.

    BR,
    Georgi