Skip to content

Conversation

@ngalbo
Copy link

@ngalbo ngalbo commented Apr 18, 2017

No description provided.

Graham Moore and others added 30 commits February 25, 2014 10:06
Modify device tree for multiple interrupt parameters.
Add DMA files which combine multiple DMA irqs into one.
Add platform data structure.
Modify pl330 driver, less intrusive modifications for multiple IRQs.
Remove AMBA_NR_IRQS modification.
Document devicetree bindings.

Signed-off-by: Graham Moore <grmoore@altera.com>
Set 3-byte addressing mode upon shutdown.
Devicetree changes for n25q512 device.

Signed-off-by: Graham Moore <grmoore@altera.com>
Update the baudrate in the bootargs of the chosen node in the DTS entry.
Also modify the default bootargs to use SD for the rootfs.

Signed-off-by: Dinh Nguyen <dinguyen@altera.com>
---
v2:
- Add change for socfpga_arria5.dts
Change platform code so that emacs are left in reset until initialized.

Signed-off-by: Graham Moore <grmoore@altera.com>
Set chip select value before using it as index into array.

Signed-off-by: Graham Moore <grmoore@altera.com>
The community C_CAN/D_CAN driver works with the SoCFPGA CycloneV board
but requires a few changes to the Altera SoCFPGA device tree.
Add changes to socfpga.dtsi :
- Update of IRQs (needed to add the CAN Message Object IRQ.
- Define the CAN clocks
- Leave CAN0 and CAN1 disabled.
Add changes to socfpga_cyclone5.dts
- Turn on CAN0 on Cyclone5 boards.
CAN should be compiled into kernel for Altera SoCFPGA.
- Configure CAN by default in socfpga_defconfig

Signed-off-by: Thor Thayer <tthayer@altera.com>
We should backup SP register before SAVE_SWITCH_STACK macro in
sys_rt_sigreturn() because SP register is being modified in
SAVE_SWITCH_STACK macro.

Signed-off-by: Ley Foon Tan <lftan@altera.com>
For clocks with a fixed-divider, the "reg" parameter is not necessary.
The mpu_periph_clk does not have a gate, so change it to the type
"altr,socfpga-perip-clk".

Set the proper clock for the smp_twd timer in the device tree entry.
By doing this, revert the fix in kernel/smp_twd.c to match kernel.org.

Signed-off-by: Dinh Nguyen <dinguyen@altera.com>
udev is required by Angstrom, which is our target Linux distribution.

The relevant kernel config options, for udev versions later than 141,
are listed on kernel.org:

  CONFIG_DEVTMPFS=y
  CONFIG_HOTPLUG=y
  CONFIG_INOTIFY_USER=y
  CONFIG_NET=y
  CONFIG_PROC_FS=y
  CONFIG_SIGNALFD=y
  CONFIG_SYSFS=y
  CONFIG_SYSFS_DEPRECATED*=n
  CONFIG_UEVENT_HELPER_PATH=""

This patch was tested against the Angstrom and Yocto RFS'es

V2:
   removed CONFIG_SYSFS_DEPRECATED=n

Signed-off-by: Yves Vandervennet <yvanderv@altera.com>
The kernel build for SOCFPGA was broken when building CONFIG_SMP is disabled.
The error is in the Kconfig for SOCFPGA, as it should only build the ARM TWD
timer if CONFIG_SMP is enabled.

Signed-off-by: Dinh Nguyen <dinguyen@altera.com>
The register offsets for D_CAN1 were incorrect in the
socfpga.dtsi file.
- Change from incorrect offset 0xFFC10000 to 0xFFC01000.

Signed-off-by: Thor Thayer <tthayer@altera.com>
Revert FogBugz #155744 (commit d4db2a9db6).
Restore back to original code. This is because do_rt_sigreturn() takes
a struct switch_stack* as argument. So, we should load SP after
SAVE_SWITCH_STACK.
asmlinkage int do_rt_sigreturn(struct switch_stack *sw);

Signed-off-by: Ley Foon Tan <lftan@altera.com>
This change enables VLAN tagging to work with the vconfig utility. See
FogBugz #162656 for more details about adding vconfig to the default
file system.

Signed-off-by: Vince Bridgers <vbridger@altera.com>
…g of receive buffers

The root causes for the Jumbo frame problems seen were:

1) The driver was enabling Jumbo frames up to 9018 bytes in length (MTU = 9000)
   without allocating the correct amount of receive buffer space. When the
   controller received a packet larger than the smaller receive buffer,
   the controller's DMA overwrote kernel memory, causing code/data
   corruption eventually leading to a kernel crash.

2) The driver was not setting the correct DMA mapping length before
   mapping receive buffers. This led to a subsequent unmapping operation
   using an incorrect mapping length with respect to the one used for
   mapping. As long as the user did not bring down then up the driver, there
   was no problem. This problem only showed up as a result of testing
   MTU changes by cycling the interface up and down through different MTUs.

The fixes implemented for these problems were:

1) Add configuration parameter in the device tree for maximum Jumbo
   frame size. This is needed since the transmit and receive fifos
   sizes are configurable when the cores are created through Synopsys
   Core Consultant. Having this parameter allows DMA I/O memory to
   be conserved as much as possible by only allocating what's required
   for packet receives.

   Example: If the MTU was set to 9000 and the transmit and receive
   fifos were set to 4096 bytes, then a receive buffer size of 16K
   would be used when only 4096 is required.

   The valid range for the C5 SOC is 2000 through 4062, inclusive.

2) Update Documentation text file for stmmac parameters by adding
   "snps,max-mtu" See 1) above for details.

3) Changes to handle proper range checking of MTU in stmmac_change_mtu

4) Use correct DMA buffer length when allocating receive buffers

5) Default Configuration Register 0 settings were changed to
   not enable Jumbo frame by default. 802.3as frame size expansion
   is enabled by default, and Jumbo frame is enabled only if MTU
   size is set for Jumbo frames. This permits receive buffer
   size allocation per current MTU settings.

6) DMA buffer sizes are properly sized for the maximum MTU size configured.

Signed-off-by: Vince Bridgers <vbridger@altera.com>

Conflicts:

	arch/arm/boot/dts/socfpga_cyclone5.dts
Firmware to support the EDAC framework for the SDRAM ECC on the
Altera CycloneV board is added in this patch.
- The SDRAM Controller registers are used by the FPGA bridge so
  these are accessed through the syscon interface.
- The interrupts are included in the sdramedac device tree node
  and accessed with the platform functions.
- The configuration of the SDRAM memory size for the EDAC framework
  is discovered from the memory node of the device tree.
- Documentation of the bindings in devicetree/bindings/arm/altera

V2: Implement review changes.
- Fix copyright.
- Call edac_mc_free() if error on devres_open_group().
- Remove pr_debugs.
- Fix spacing in calculation for readability.
- Add platform_set_drvdata() in alt_sdram_mc_remove().
- Add of_match_ptr() around .of_match_table element.

V3:
- Replace pr_debug() with dev_dbg().
- Remove /r line endings.

V4:
- Check return code of regmap_read() in probe.

V5:
- Clear regmap_read() variables before use.
- Check return code when looking for memory size.
- Include attribution in copyright.
- Enable IRQ after successfully adding memory controller.

V6:
- Rename functions and macros from ALT to ALTR
- Cleanup of code to reflect Linux conventions.
- Replace MODULE_ALIAS with MODULE_AUTHOR("Altera Corporation");

Signed-off-by: Thor Thayer <tthayer@altera.com>
The community Memory Mapped Designware SPI driver is not
currently documented so it is added here.

V2:
  Use generic interrupt description instead of GIC specific.

V3:
  Cleanup of extra lines & compatible description.

V4:
  Addition of clock source.

Signed-off-by: Thor Thayer <tthayer@altera.com>
This patch addresses a few bugs and features in the Denali NAND driver on the socfpga platform.

First the bugs:

- Reading ONFI parameters would cause a timeout, because the code sent the wrong
commands to the controller/device.  That was fixed, and in the process, code was
added to wait for the appropriate interrupt.

- When using the JFFS2 file system, a bug was discovered in the write OOB
data function, whereby the controller was left in SPARE mode causing
subsequent page reads to fail.  The write OOB function was modified
so that the controller is left in MAIN access mode.

Now the features:

- The Denali NAND controller in the socfpga platform has hardware ECC, and several
status bits are different because of that.  A patch from Jamie Iles <jamie at jamieiles.com>
was used as the basis for supporting hardware ECC in the code.

- The device tree and documentation were modified to support hardware ECC.

- One of our test socfpga boards had a NAND chip which was locked by default.  To support
writing to the chip, the UNLOCK1 and UNLOCK2 commands were implemented.  The nand_unlock
calls were added as well.  (Note, the mtd layer has _lock, _unlock, and is probably a
better place to implement this functionality than the nand driver).

- The mtd_device_register call was replaced with mtd_device_parse_register so that
device tree partitions are setup by the mtd layer.  Example partitions were added
to the device tree.

- In the process of supporting our specific controller configuration, duplicate
definitions of bad block table descriptions were removed from the denali code.  They
also exist in the nand driver code.

Signed-off-by: Graham Moore <grmoore@altera.com>
If the supplied DTB is builtin into kernel, it is in __init memory and
will eventually be destroyed after bootup. But if drivers are loaded as
modules, they still need to access the DTB entries after the kernel has
started. Therefore, the DTB is moved to a new allocated area.
Thanks Jeroen Van den Keybus for the fix.

Signed-off-by: Ley Foon Tan <lftan@altera.com>
The read, write, and command ports on the fpga2sdram
bridge can only be reconfigured if there are no
transactions to the sdram during the reconfiguration.
Currently, this guarantee can only be made by code
running out of onchip ram before Linux is started.  Therefore,
this driver only supports enabling and disabling of the
ports that have already been configured.  Since the
driver cannot determine the port configuration in all
cases, the device tree must be populated with masks for
all of the ports.

Signed-off-by: Matthew Gerlach <mgerlach@altera.com>
The current SDRAM ECC testing was performed by shorting an address
line to ground. In the case of an uncorrectable error (2 bit error)
2 address lines had to be shorted to ground.
The Altera SDRAM controller has the ability to inject ECC errors
(single or double bit) during write operations. This change
implements the injection of SDRAM ECC errors in software.
- Requires that EDAC debugging (CONFIG_EDAC_DEBUG) is defined.
- Single or double bit errors are generated depending upon
  string size sent (1 character = 1 bit error/2 char=2bit)
- To inject a single bit error (correctable)
       echo "1" > /sys/kernel/debug/edac/mc0/inject_ctl
- To inject a double bit error (uncorrectable - panic)
       echo "12" > /sys/kernel/debug/edac/mc0/inject_ctl

V2:
- Make double bit error case very restrictive

Signed-off-by: Thor Thayer <tthayer@altera.com>
The fpga bridge framework needs be started before the
individual bridge drivers, and the individual bridge
drivers need to be started before any other driver
for components on the FPGA.  The earliest the bridge
drivers successfully start is during arch_init().

Signed-off-by: Matthew Gerlach <mgerlach@altera.com>
The IPv6 option needs to be specific in socfpga_defconfig for
IPv6 networking to be available in the Linux networking stack.

Signed-off-by: Vince Bridgers <vbridger@altera.com>
Enable DEVTMFS as default and removed non-exist configs.
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y

Note, need to compile rootfs with BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS
enabled.

Signed-off-by: Ley Foon Tan <lftan@altera.com>
Fix boot from flash issue.
.GOT section needs to be after .text section because
arch/nios2/boot/compressed/misc.c:decompress_kernel() assumes kernel is
at top of the memory region.

Signed-off-by: Ley Foon Tan <lftan@altera.com>
Updated calls to device_prep_slave_sg() because the parameter list
had changed since the last time spi-dw-pl330.c was compiled.

Signed-off-by: Graham Moore <grmoore@altera.com>
Support for DMA transfers was added to the Cadence QSPI driver.
There is a fair amount of new code, but the flow of the driver
was minimally changed.
If the code is unable to initialize DMA channels, it falls
back to non-DMA operation.
Enabling of the DMA transfers is done through the device tree.
Peripheral Request IDs for the QSPI are specified in the device tree.
Device tree documentation was updated.

V2:
Check error return from device_prep_slave_sg
Use #defines for request byte counts
Replaced pr_debug/pr_err with dev_dbg/dev_err

Signed-off-by: Graham Moore <grmoore@altera.com>
The merge to version 3.12 duplicated device flags 0x08 and 0x10, resulting in
incorrect behavior on CycloneV.  The fix was to change the definitions of
USE_FSR and SHUTDOWN_3BYTE flags to 0x20 and 0x40.

Signed-off-by: Graham Moore <grmoore@altera.com>

Conflicts:

	drivers/mtd/devices/m25p80.c
Remove unused Samsung-specific machine include and Kconfig
dependency on S3C.

Signed-off-by: Matt Porter <matt.porter@linaro.org>
Reviewed-by: Markus Mayer <markus.mayer@linaro.org>
Reviewed-by: Tim Kryger <tim.kryger@linaro.org>
Signed-off-by: Dinh Nguyen <dinguyen@altera.com>
Enable support for the dwc2 binding.

Signed-off-by: Matt Porter <matt.porter@linaro.org>
Signed-off-by: Dinh Nguyen <dinguyen@altera.com>

Conflicts:

	drivers/usb/gadget/s3c-hsotg.c
intel-lab-lkp pushed a commit to intel-lab-lkp/linux that referenced this pull request Jul 24, 2025
Use BPF_TRAMP_F_INDIRECT flag to detect struct ops and emit proper
prologue and epilogue for this case.

With this patch, all of the struct_ops related testcases (except
struct_ops_multi_pages) passed on LoongArch.

The testcase struct_ops_multi_pages failed is because the actual
image_pages_cnt is 40 which is bigger than MAX_TRAMP_IMAGE_PAGES.

Before:

  $ sudo ./test_progs -t struct_ops -d struct_ops_multi_pages
  ...
  WATCHDOG: test case struct_ops_module/struct_ops_load executes for 10 seconds...

After:

  $ sudo ./test_progs -t struct_ops -d struct_ops_multi_pages
  ...
  torvalds#15      bad_struct_ops:OK
  ...
  torvalds#399     struct_ops_autocreate:OK
  ...
  torvalds#400     struct_ops_kptr_return:OK
  ...
  torvalds#401     struct_ops_maybe_null:OK
  ...
  torvalds#402     struct_ops_module:OK
  ...
  torvalds#404     struct_ops_no_cfi:OK
  ...
  torvalds#405     struct_ops_private_stack:SKIP
  ...
  torvalds#406     struct_ops_refcounted:OK
  Summary: 8/25 PASSED, 3 SKIPPED, 0 FAILED

Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
intel-lab-lkp pushed a commit to intel-lab-lkp/linux that referenced this pull request Jul 30, 2025
Use BPF_TRAMP_F_INDIRECT flag to detect struct ops and emit proper
prologue and epilogue for this case.

With this patch, all of the struct_ops related testcases (except
struct_ops_multi_pages) passed on LoongArch.

The testcase struct_ops_multi_pages failed is because the actual
image_pages_cnt is 40 which is bigger than MAX_TRAMP_IMAGE_PAGES.

Before:

  $ sudo ./test_progs -t struct_ops -d struct_ops_multi_pages
  ...
  WATCHDOG: test case struct_ops_module/struct_ops_load executes for 10 seconds...

After:

  $ sudo ./test_progs -t struct_ops -d struct_ops_multi_pages
  ...
  torvalds#15      bad_struct_ops:OK
  ...
  torvalds#399     struct_ops_autocreate:OK
  ...
  torvalds#400     struct_ops_kptr_return:OK
  ...
  torvalds#401     struct_ops_maybe_null:OK
  ...
  torvalds#402     struct_ops_module:OK
  ...
  torvalds#404     struct_ops_no_cfi:OK
  ...
  torvalds#405     struct_ops_private_stack:SKIP
  ...
  torvalds#406     struct_ops_refcounted:OK
  Summary: 8/25 PASSED, 3 SKIPPED, 0 FAILED

Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
1054009064 pushed a commit to 1054009064/linux that referenced this pull request Aug 4, 2025
Use BPF_TRAMP_F_INDIRECT flag to detect struct ops and emit proper
prologue and epilogue for this case.

With this patch, all of the struct_ops related testcases (except
struct_ops_multi_pages) passed on LoongArch.

The testcase struct_ops_multi_pages failed is because the actual
image_pages_cnt is 40 which is bigger than MAX_TRAMP_IMAGE_PAGES.

Before:

  $ sudo ./test_progs -t struct_ops -d struct_ops_multi_pages
  ...
  WATCHDOG: test case struct_ops_module/struct_ops_load executes for 10 seconds...

After:

  $ sudo ./test_progs -t struct_ops -d struct_ops_multi_pages
  ...
  torvalds#15      bad_struct_ops:OK
  ...
  torvalds#399     struct_ops_autocreate:OK
  ...
  torvalds#400     struct_ops_kptr_return:OK
  ...
  torvalds#401     struct_ops_maybe_null:OK
  ...
  torvalds#402     struct_ops_module:OK
  ...
  torvalds#404     struct_ops_no_cfi:OK
  ...
  torvalds#405     struct_ops_private_stack:SKIP
  ...
  torvalds#406     struct_ops_refcounted:OK
  Summary: 8/25 PASSED, 3 SKIPPED, 0 FAILED

Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
staging-kernelci-org pushed a commit to kernelci/linux that referenced this pull request Aug 6, 2025
Use BPF_TRAMP_F_INDIRECT flag to detect struct ops and emit proper
prologue and epilogue for this case.

With this patch, all of the struct_ops related testcases (except
struct_ops_multi_pages) passed on LoongArch.

The testcase struct_ops_multi_pages failed is because the actual
image_pages_cnt is 40 which is bigger than MAX_TRAMP_IMAGE_PAGES.

Before:

  $ sudo ./test_progs -t struct_ops -d struct_ops_multi_pages
  ...
  WATCHDOG: test case struct_ops_module/struct_ops_load executes for 10 seconds...

After:

  $ sudo ./test_progs -t struct_ops -d struct_ops_multi_pages
  ...
  torvalds#15      bad_struct_ops:OK
  ...
  torvalds#399     struct_ops_autocreate:OK
  ...
  torvalds#400     struct_ops_kptr_return:OK
  ...
  torvalds#401     struct_ops_maybe_null:OK
  ...
  torvalds#402     struct_ops_module:OK
  ...
  torvalds#404     struct_ops_no_cfi:OK
  ...
  torvalds#405     struct_ops_private_stack:SKIP
  ...
  torvalds#406     struct_ops_refcounted:OK
  Summary: 8/25 PASSED, 3 SKIPPED, 0 FAILED

Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
AirFortressIlikara pushed a commit to AOSC-Tracking/linux that referenced this pull request Sep 15, 2025
Use BPF_TRAMP_F_INDIRECT flag to detect struct ops and emit proper
prologue and epilogue for this case.

With this patch, all of the struct_ops related testcases (except
struct_ops_multi_pages) passed on LoongArch.

The testcase struct_ops_multi_pages failed is because the actual
image_pages_cnt is 40 which is bigger than MAX_TRAMP_IMAGE_PAGES.

Before:

  $ sudo ./test_progs -t struct_ops -d struct_ops_multi_pages
  ...
  WATCHDOG: test case struct_ops_module/struct_ops_load executes for 10 seconds...

After:

  $ sudo ./test_progs -t struct_ops -d struct_ops_multi_pages
  ...
  #15      bad_struct_ops:OK
  ...
  torvalds#399     struct_ops_autocreate:OK
  ...
  torvalds#400     struct_ops_kptr_return:OK
  ...
  torvalds#401     struct_ops_maybe_null:OK
  ...
  torvalds#402     struct_ops_module:OK
  ...
  torvalds#404     struct_ops_no_cfi:OK
  ...
  torvalds#405     struct_ops_private_stack:SKIP
  ...
  torvalds#406     struct_ops_refcounted:OK
  Summary: 8/25 PASSED, 3 SKIPPED, 0 FAILED

Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Signed-off-by: maoxiaochuan <maoxiaochuan@loongson.cn>
@torvalds torvalds closed this Sep 22, 2025
mj22226 pushed a commit to mj22226/linux that referenced this pull request Oct 23, 2025
If of_genpd_add_provider_onecell() fails during probe, the previously
created generic power domains are not removed, leading to a memory leak
and potential kernel crash later in genpd_debug_add().

Add proper error handling to unwind the initialized domains before
returning from probe to ensure all resources are correctly released on
failure.

Example crash trace observed without this fix:

  | Unable to handle kernel paging request at virtual address fffffffffffffc70
  | CPU: 1 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.18.0-rc1 torvalds#405 PREEMPT
  | Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno Development Platform
  | pstate: 00000005 (nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
  | pc : genpd_debug_add+0x2c/0x160
  | lr : genpd_debug_init+0x74/0x98
  | Call trace:
  |  genpd_debug_add+0x2c/0x160 (P)
  |  genpd_debug_init+0x74/0x98
  |  do_one_initcall+0xd0/0x2d8
  |  do_initcall_level+0xa0/0x140
  |  do_initcalls+0x60/0xa8
  |  do_basic_setup+0x28/0x40
  |  kernel_init_freeable+0xe8/0x170
  |  kernel_init+0x2c/0x140
  |  ret_from_fork+0x10/0x20

Fixes: 898216c ("firmware: arm_scmi: add device power domain support using genpd")
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
AirFortressIlikara pushed a commit to AOSC-Tracking/linux that referenced this pull request Nov 16, 2025
Use BPF_TRAMP_F_INDIRECT flag to detect struct ops and emit proper
prologue and epilogue for this case.

With this patch, all of the struct_ops related testcases (except
struct_ops_multi_pages) passed on LoongArch.

The testcase struct_ops_multi_pages failed is because the actual
image_pages_cnt is 40 which is bigger than MAX_TRAMP_IMAGE_PAGES.

Before:

  $ sudo ./test_progs -t struct_ops -d struct_ops_multi_pages
  ...
  WATCHDOG: test case struct_ops_module/struct_ops_load executes for 10 seconds...

After:

  $ sudo ./test_progs -t struct_ops -d struct_ops_multi_pages
  ...
  #15      bad_struct_ops:OK
  ...
  torvalds#399     struct_ops_autocreate:OK
  ...
  torvalds#400     struct_ops_kptr_return:OK
  ...
  torvalds#401     struct_ops_maybe_null:OK
  ...
  torvalds#402     struct_ops_module:OK
  ...
  torvalds#404     struct_ops_no_cfi:OK
  ...
  torvalds#405     struct_ops_private_stack:SKIP
  ...
  torvalds#406     struct_ops_refcounted:OK
  Summary: 8/25 PASSED, 3 SKIPPED, 0 FAILED

Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Signed-off-by: maoxiaochuan <maoxiaochuan@loongson.cn>
bsach64 pushed a commit to bsach64/linux that referenced this pull request Nov 18, 2025
If of_genpd_add_provider_onecell() fails during probe, the previously
created generic power domains are not removed, leading to a memory leak
and potential kernel crash later in genpd_debug_add().

Add proper error handling to unwind the initialized domains before
returning from probe to ensure all resources are correctly released on
failure.

Example crash trace observed without this fix:

  | Unable to handle kernel paging request at virtual address fffffffffffffc70
  | CPU: 1 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.18.0-rc1 torvalds#405 PREEMPT
  | Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno Development Platform
  | pstate: 00000005 (nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
  | pc : genpd_debug_add+0x2c/0x160
  | lr : genpd_debug_init+0x74/0x98
  | Call trace:
  |  genpd_debug_add+0x2c/0x160 (P)
  |  genpd_debug_init+0x74/0x98
  |  do_one_initcall+0xd0/0x2d8
  |  do_initcall_level+0xa0/0x140
  |  do_initcalls+0x60/0xa8
  |  do_basic_setup+0x28/0x40
  |  kernel_init_freeable+0xe8/0x170
  |  kernel_init+0x2c/0x140
  |  ret_from_fork+0x10/0x20

Fixes: 898216c ("firmware: arm_scmi: add device power domain support using genpd")
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
mj22226 pushed a commit to mj22226/linux that referenced this pull request Nov 20, 2025
commit 7458f72 upstream.

If of_genpd_add_provider_onecell() fails during probe, the previously
created generic power domains are not removed, leading to a memory leak
and potential kernel crash later in genpd_debug_add().

Add proper error handling to unwind the initialized domains before
returning from probe to ensure all resources are correctly released on
failure.

Example crash trace observed without this fix:

  | Unable to handle kernel paging request at virtual address fffffffffffffc70
  | CPU: 1 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.18.0-rc1 torvalds#405 PREEMPT
  | Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno Development Platform
  | pstate: 00000005 (nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
  | pc : genpd_debug_add+0x2c/0x160
  | lr : genpd_debug_init+0x74/0x98
  | Call trace:
  |  genpd_debug_add+0x2c/0x160 (P)
  |  genpd_debug_init+0x74/0x98
  |  do_one_initcall+0xd0/0x2d8
  |  do_initcall_level+0xa0/0x140
  |  do_initcalls+0x60/0xa8
  |  do_basic_setup+0x28/0x40
  |  kernel_init_freeable+0xe8/0x170
  |  kernel_init+0x2c/0x140
  |  ret_from_fork+0x10/0x20

Fixes: 898216c ("firmware: arm_scmi: add device power domain support using genpd")
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
mj22226 pushed a commit to mj22226/linux that referenced this pull request Nov 20, 2025
commit 7458f72 upstream.

If of_genpd_add_provider_onecell() fails during probe, the previously
created generic power domains are not removed, leading to a memory leak
and potential kernel crash later in genpd_debug_add().

Add proper error handling to unwind the initialized domains before
returning from probe to ensure all resources are correctly released on
failure.

Example crash trace observed without this fix:

  | Unable to handle kernel paging request at virtual address fffffffffffffc70
  | CPU: 1 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.18.0-rc1 torvalds#405 PREEMPT
  | Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno Development Platform
  | pstate: 00000005 (nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
  | pc : genpd_debug_add+0x2c/0x160
  | lr : genpd_debug_init+0x74/0x98
  | Call trace:
  |  genpd_debug_add+0x2c/0x160 (P)
  |  genpd_debug_init+0x74/0x98
  |  do_one_initcall+0xd0/0x2d8
  |  do_initcall_level+0xa0/0x140
  |  do_initcalls+0x60/0xa8
  |  do_basic_setup+0x28/0x40
  |  kernel_init_freeable+0xe8/0x170
  |  kernel_init+0x2c/0x140
  |  ret_from_fork+0x10/0x20

Fixes: 898216c ("firmware: arm_scmi: add device power domain support using genpd")
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
mj22226 pushed a commit to mj22226/linux that referenced this pull request Nov 21, 2025
commit 7458f72 upstream.

If of_genpd_add_provider_onecell() fails during probe, the previously
created generic power domains are not removed, leading to a memory leak
and potential kernel crash later in genpd_debug_add().

Add proper error handling to unwind the initialized domains before
returning from probe to ensure all resources are correctly released on
failure.

Example crash trace observed without this fix:

  | Unable to handle kernel paging request at virtual address fffffffffffffc70
  | CPU: 1 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.18.0-rc1 torvalds#405 PREEMPT
  | Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno Development Platform
  | pstate: 00000005 (nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
  | pc : genpd_debug_add+0x2c/0x160
  | lr : genpd_debug_init+0x74/0x98
  | Call trace:
  |  genpd_debug_add+0x2c/0x160 (P)
  |  genpd_debug_init+0x74/0x98
  |  do_one_initcall+0xd0/0x2d8
  |  do_initcall_level+0xa0/0x140
  |  do_initcalls+0x60/0xa8
  |  do_basic_setup+0x28/0x40
  |  kernel_init_freeable+0xe8/0x170
  |  kernel_init+0x2c/0x140
  |  ret_from_fork+0x10/0x20

Fixes: 898216c ("firmware: arm_scmi: add device power domain support using genpd")
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
mj22226 pushed a commit to mj22226/linux that referenced this pull request Nov 21, 2025
commit 7458f72 upstream.

If of_genpd_add_provider_onecell() fails during probe, the previously
created generic power domains are not removed, leading to a memory leak
and potential kernel crash later in genpd_debug_add().

Add proper error handling to unwind the initialized domains before
returning from probe to ensure all resources are correctly released on
failure.

Example crash trace observed without this fix:

  | Unable to handle kernel paging request at virtual address fffffffffffffc70
  | CPU: 1 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.18.0-rc1 torvalds#405 PREEMPT
  | Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno Development Platform
  | pstate: 00000005 (nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
  | pc : genpd_debug_add+0x2c/0x160
  | lr : genpd_debug_init+0x74/0x98
  | Call trace:
  |  genpd_debug_add+0x2c/0x160 (P)
  |  genpd_debug_init+0x74/0x98
  |  do_one_initcall+0xd0/0x2d8
  |  do_initcall_level+0xa0/0x140
  |  do_initcalls+0x60/0xa8
  |  do_basic_setup+0x28/0x40
  |  kernel_init_freeable+0xe8/0x170
  |  kernel_init+0x2c/0x140
  |  ret_from_fork+0x10/0x20

Fixes: 898216c ("firmware: arm_scmi: add device power domain support using genpd")
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
mj22226 pushed a commit to mj22226/linux that referenced this pull request Nov 21, 2025
commit 7458f72 upstream.

If of_genpd_add_provider_onecell() fails during probe, the previously
created generic power domains are not removed, leading to a memory leak
and potential kernel crash later in genpd_debug_add().

Add proper error handling to unwind the initialized domains before
returning from probe to ensure all resources are correctly released on
failure.

Example crash trace observed without this fix:

  | Unable to handle kernel paging request at virtual address fffffffffffffc70
  | CPU: 1 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.18.0-rc1 torvalds#405 PREEMPT
  | Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno Development Platform
  | pstate: 00000005 (nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
  | pc : genpd_debug_add+0x2c/0x160
  | lr : genpd_debug_init+0x74/0x98
  | Call trace:
  |  genpd_debug_add+0x2c/0x160 (P)
  |  genpd_debug_init+0x74/0x98
  |  do_one_initcall+0xd0/0x2d8
  |  do_initcall_level+0xa0/0x140
  |  do_initcalls+0x60/0xa8
  |  do_basic_setup+0x28/0x40
  |  kernel_init_freeable+0xe8/0x170
  |  kernel_init+0x2c/0x140
  |  ret_from_fork+0x10/0x20

Fixes: 898216c ("firmware: arm_scmi: add device power domain support using genpd")
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1054009064 pushed a commit to 1054009064/linux that referenced this pull request Nov 24, 2025
commit 7458f72 upstream.

If of_genpd_add_provider_onecell() fails during probe, the previously
created generic power domains are not removed, leading to a memory leak
and potential kernel crash later in genpd_debug_add().

Add proper error handling to unwind the initialized domains before
returning from probe to ensure all resources are correctly released on
failure.

Example crash trace observed without this fix:

  | Unable to handle kernel paging request at virtual address fffffffffffffc70
  | CPU: 1 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.18.0-rc1 torvalds#405 PREEMPT
  | Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno Development Platform
  | pstate: 00000005 (nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
  | pc : genpd_debug_add+0x2c/0x160
  | lr : genpd_debug_init+0x74/0x98
  | Call trace:
  |  genpd_debug_add+0x2c/0x160 (P)
  |  genpd_debug_init+0x74/0x98
  |  do_one_initcall+0xd0/0x2d8
  |  do_initcall_level+0xa0/0x140
  |  do_initcalls+0x60/0xa8
  |  do_basic_setup+0x28/0x40
  |  kernel_init_freeable+0xe8/0x170
  |  kernel_init+0x2c/0x140
  |  ret_from_fork+0x10/0x20

Fixes: 898216c ("firmware: arm_scmi: add device power domain support using genpd")
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Kaz205 pushed a commit to Kaz205/linux that referenced this pull request Nov 24, 2025
commit 7458f72 upstream.

If of_genpd_add_provider_onecell() fails during probe, the previously
created generic power domains are not removed, leading to a memory leak
and potential kernel crash later in genpd_debug_add().

Add proper error handling to unwind the initialized domains before
returning from probe to ensure all resources are correctly released on
failure.

Example crash trace observed without this fix:

  | Unable to handle kernel paging request at virtual address fffffffffffffc70
  | CPU: 1 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.18.0-rc1 torvalds#405 PREEMPT
  | Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno Development Platform
  | pstate: 00000005 (nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
  | pc : genpd_debug_add+0x2c/0x160
  | lr : genpd_debug_init+0x74/0x98
  | Call trace:
  |  genpd_debug_add+0x2c/0x160 (P)
  |  genpd_debug_init+0x74/0x98
  |  do_one_initcall+0xd0/0x2d8
  |  do_initcall_level+0xa0/0x140
  |  do_initcalls+0x60/0xa8
  |  do_basic_setup+0x28/0x40
  |  kernel_init_freeable+0xe8/0x170
  |  kernel_init+0x2c/0x140
  |  ret_from_fork+0x10/0x20

Fixes: 898216c ("firmware: arm_scmi: add device power domain support using genpd")
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
AirFortressIlikara pushed a commit to AOSC-Tracking/linux that referenced this pull request Nov 24, 2025
Use BPF_TRAMP_F_INDIRECT flag to detect struct ops and emit proper
prologue and epilogue for this case.

With this patch, all of the struct_ops related testcases (except
struct_ops_multi_pages) passed on LoongArch.

The testcase struct_ops_multi_pages failed is because the actual
image_pages_cnt is 40 which is bigger than MAX_TRAMP_IMAGE_PAGES.

Before:

  $ sudo ./test_progs -t struct_ops -d struct_ops_multi_pages
  ...
  WATCHDOG: test case struct_ops_module/struct_ops_load executes for 10 seconds...

After:

  $ sudo ./test_progs -t struct_ops -d struct_ops_multi_pages
  ...
  #15      bad_struct_ops:OK
  ...
  torvalds#399     struct_ops_autocreate:OK
  ...
  torvalds#400     struct_ops_kptr_return:OK
  ...
  torvalds#401     struct_ops_maybe_null:OK
  ...
  torvalds#402     struct_ops_module:OK
  ...
  torvalds#404     struct_ops_no_cfi:OK
  ...
  torvalds#405     struct_ops_private_stack:SKIP
  ...
  torvalds#406     struct_ops_refcounted:OK
  Summary: 8/25 PASSED, 3 SKIPPED, 0 FAILED

Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Signed-off-by: maoxiaochuan <maoxiaochuan@loongson.cn>
AirFortressIlikara pushed a commit to AOSC-Tracking/linux that referenced this pull request Nov 24, 2025
Use BPF_TRAMP_F_INDIRECT flag to detect struct ops and emit proper
prologue and epilogue for this case.

With this patch, all of the struct_ops related testcases (except
struct_ops_multi_pages) passed on LoongArch.

The testcase struct_ops_multi_pages failed is because the actual
image_pages_cnt is 40 which is bigger than MAX_TRAMP_IMAGE_PAGES.

Before:

  $ sudo ./test_progs -t struct_ops -d struct_ops_multi_pages
  ...
  WATCHDOG: test case struct_ops_module/struct_ops_load executes for 10 seconds...

After:

  $ sudo ./test_progs -t struct_ops -d struct_ops_multi_pages
  ...
  #15      bad_struct_ops:OK
  ...
  torvalds#399     struct_ops_autocreate:OK
  ...
  torvalds#400     struct_ops_kptr_return:OK
  ...
  torvalds#401     struct_ops_maybe_null:OK
  ...
  torvalds#402     struct_ops_module:OK
  ...
  torvalds#404     struct_ops_no_cfi:OK
  ...
  torvalds#405     struct_ops_private_stack:SKIP
  ...
  torvalds#406     struct_ops_refcounted:OK
  Summary: 8/25 PASSED, 3 SKIPPED, 0 FAILED

Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Signed-off-by: maoxiaochuan <maoxiaochuan@loongson.cn>
AirFortressIlikara pushed a commit to AOSC-Tracking/linux that referenced this pull request Nov 26, 2025
Use BPF_TRAMP_F_INDIRECT flag to detect struct ops and emit proper
prologue and epilogue for this case.

With this patch, all of the struct_ops related testcases (except
struct_ops_multi_pages) passed on LoongArch.

The testcase struct_ops_multi_pages failed is because the actual
image_pages_cnt is 40 which is bigger than MAX_TRAMP_IMAGE_PAGES.

Before:

  $ sudo ./test_progs -t struct_ops -d struct_ops_multi_pages
  ...
  WATCHDOG: test case struct_ops_module/struct_ops_load executes for 10 seconds...

After:

  $ sudo ./test_progs -t struct_ops -d struct_ops_multi_pages
  ...
  #15      bad_struct_ops:OK
  ...
  torvalds#399     struct_ops_autocreate:OK
  ...
  torvalds#400     struct_ops_kptr_return:OK
  ...
  torvalds#401     struct_ops_maybe_null:OK
  ...
  torvalds#402     struct_ops_module:OK
  ...
  torvalds#404     struct_ops_no_cfi:OK
  ...
  torvalds#405     struct_ops_private_stack:SKIP
  ...
  torvalds#406     struct_ops_refcounted:OK
  Summary: 8/25 PASSED, 3 SKIPPED, 0 FAILED

Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Signed-off-by: maoxiaochuan <maoxiaochuan@loongson.cn>
mj22226 pushed a commit to mj22226/linux that referenced this pull request Nov 27, 2025
[ Upstream commit 7458f72 ]

If of_genpd_add_provider_onecell() fails during probe, the previously
created generic power domains are not removed, leading to a memory leak
and potential kernel crash later in genpd_debug_add().

Add proper error handling to unwind the initialized domains before
returning from probe to ensure all resources are correctly released on
failure.

Example crash trace observed without this fix:

  | Unable to handle kernel paging request at virtual address fffffffffffffc70
  | CPU: 1 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.18.0-rc1 torvalds#405 PREEMPT
  | Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno Development Platform
  | pstate: 00000005 (nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
  | pc : genpd_debug_add+0x2c/0x160
  | lr : genpd_debug_init+0x74/0x98
  | Call trace:
  |  genpd_debug_add+0x2c/0x160 (P)
  |  genpd_debug_init+0x74/0x98
  |  do_one_initcall+0xd0/0x2d8
  |  do_initcall_level+0xa0/0x140
  |  do_initcalls+0x60/0xa8
  |  do_basic_setup+0x28/0x40
  |  kernel_init_freeable+0xe8/0x170
  |  kernel_init+0x2c/0x140
  |  ret_from_fork+0x10/0x20

Fixes: 898216c ("firmware: arm_scmi: add device power domain support using genpd")
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
[ drivers/pmdomain/arm/scmi_pm_domain.c -> drivers/firmware/arm_scmi/scmi_pm_domain.c ]
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
AirFortressIlikara pushed a commit to AOSC-Tracking/linux that referenced this pull request Nov 29, 2025
Use BPF_TRAMP_F_INDIRECT flag to detect struct ops and emit proper
prologue and epilogue for this case.

With this patch, all of the struct_ops related testcases (except
struct_ops_multi_pages) passed on LoongArch.

The testcase struct_ops_multi_pages failed is because the actual
image_pages_cnt is 40 which is bigger than MAX_TRAMP_IMAGE_PAGES.

Before:

  $ sudo ./test_progs -t struct_ops -d struct_ops_multi_pages
  ...
  WATCHDOG: test case struct_ops_module/struct_ops_load executes for 10 seconds...

After:

  $ sudo ./test_progs -t struct_ops -d struct_ops_multi_pages
  ...
  #15      bad_struct_ops:OK
  ...
  torvalds#399     struct_ops_autocreate:OK
  ...
  torvalds#400     struct_ops_kptr_return:OK
  ...
  torvalds#401     struct_ops_maybe_null:OK
  ...
  torvalds#402     struct_ops_module:OK
  ...
  torvalds#404     struct_ops_no_cfi:OK
  ...
  torvalds#405     struct_ops_private_stack:SKIP
  ...
  torvalds#406     struct_ops_refcounted:OK
  Summary: 8/25 PASSED, 3 SKIPPED, 0 FAILED

Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Signed-off-by: maoxiaochuan <maoxiaochuan@loongson.cn>
AirFortressIlikara pushed a commit to AOSC-Tracking/linux that referenced this pull request Nov 29, 2025
Use BPF_TRAMP_F_INDIRECT flag to detect struct ops and emit proper
prologue and epilogue for this case.

With this patch, all of the struct_ops related testcases (except
struct_ops_multi_pages) passed on LoongArch.

The testcase struct_ops_multi_pages failed is because the actual
image_pages_cnt is 40 which is bigger than MAX_TRAMP_IMAGE_PAGES.

Before:

  $ sudo ./test_progs -t struct_ops -d struct_ops_multi_pages
  ...
  WATCHDOG: test case struct_ops_module/struct_ops_load executes for 10 seconds...

After:

  $ sudo ./test_progs -t struct_ops -d struct_ops_multi_pages
  ...
  #15      bad_struct_ops:OK
  ...
  torvalds#399     struct_ops_autocreate:OK
  ...
  torvalds#400     struct_ops_kptr_return:OK
  ...
  torvalds#401     struct_ops_maybe_null:OK
  ...
  torvalds#402     struct_ops_module:OK
  ...
  torvalds#404     struct_ops_no_cfi:OK
  ...
  torvalds#405     struct_ops_private_stack:SKIP
  ...
  torvalds#406     struct_ops_refcounted:OK
  Summary: 8/25 PASSED, 3 SKIPPED, 0 FAILED

Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Signed-off-by: maoxiaochuan <maoxiaochuan@loongson.cn>
AirFortressIlikara pushed a commit to AOSC-Tracking/linux that referenced this pull request Nov 30, 2025
Use BPF_TRAMP_F_INDIRECT flag to detect struct ops and emit proper
prologue and epilogue for this case.

With this patch, all of the struct_ops related testcases (except
struct_ops_multi_pages) passed on LoongArch.

The testcase struct_ops_multi_pages failed is because the actual
image_pages_cnt is 40 which is bigger than MAX_TRAMP_IMAGE_PAGES.

Before:

  $ sudo ./test_progs -t struct_ops -d struct_ops_multi_pages
  ...
  WATCHDOG: test case struct_ops_module/struct_ops_load executes for 10 seconds...

After:

  $ sudo ./test_progs -t struct_ops -d struct_ops_multi_pages
  ...
  #15      bad_struct_ops:OK
  ...
  torvalds#399     struct_ops_autocreate:OK
  ...
  torvalds#400     struct_ops_kptr_return:OK
  ...
  torvalds#401     struct_ops_maybe_null:OK
  ...
  torvalds#402     struct_ops_module:OK
  ...
  torvalds#404     struct_ops_no_cfi:OK
  ...
  torvalds#405     struct_ops_private_stack:SKIP
  ...
  torvalds#406     struct_ops_refcounted:OK
  Summary: 8/25 PASSED, 3 SKIPPED, 0 FAILED

Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Signed-off-by: maoxiaochuan <maoxiaochuan@loongson.cn>
1054009064 pushed a commit to 1054009064/linux that referenced this pull request Dec 1, 2025
[ Upstream commit 7458f72 ]

If of_genpd_add_provider_onecell() fails during probe, the previously
created generic power domains are not removed, leading to a memory leak
and potential kernel crash later in genpd_debug_add().

Add proper error handling to unwind the initialized domains before
returning from probe to ensure all resources are correctly released on
failure.

Example crash trace observed without this fix:

  | Unable to handle kernel paging request at virtual address fffffffffffffc70
  | CPU: 1 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.18.0-rc1 torvalds#405 PREEMPT
  | Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno Development Platform
  | pstate: 00000005 (nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
  | pc : genpd_debug_add+0x2c/0x160
  | lr : genpd_debug_init+0x74/0x98
  | Call trace:
  |  genpd_debug_add+0x2c/0x160 (P)
  |  genpd_debug_init+0x74/0x98
  |  do_one_initcall+0xd0/0x2d8
  |  do_initcall_level+0xa0/0x140
  |  do_initcalls+0x60/0xa8
  |  do_basic_setup+0x28/0x40
  |  kernel_init_freeable+0xe8/0x170
  |  kernel_init+0x2c/0x140
  |  ret_from_fork+0x10/0x20

Fixes: 898216c ("firmware: arm_scmi: add device power domain support using genpd")
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
[ drivers/pmdomain/arm/scmi_pm_domain.c -> drivers/firmware/arm_scmi/scmi_pm_domain.c ]
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1054009064 pushed a commit to 1054009064/linux that referenced this pull request Dec 3, 2025
[ Upstream commit 7458f72 ]

If of_genpd_add_provider_onecell() fails during probe, the previously
created generic power domains are not removed, leading to a memory leak
and potential kernel crash later in genpd_debug_add().

Add proper error handling to unwind the initialized domains before
returning from probe to ensure all resources are correctly released on
failure.

Example crash trace observed without this fix:

  | Unable to handle kernel paging request at virtual address fffffffffffffc70
  | CPU: 1 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.18.0-rc1 torvalds#405 PREEMPT
  | Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno Development Platform
  | pstate: 00000005 (nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
  | pc : genpd_debug_add+0x2c/0x160
  | lr : genpd_debug_init+0x74/0x98
  | Call trace:
  |  genpd_debug_add+0x2c/0x160 (P)
  |  genpd_debug_init+0x74/0x98
  |  do_one_initcall+0xd0/0x2d8
  |  do_initcall_level+0xa0/0x140
  |  do_initcalls+0x60/0xa8
  |  do_basic_setup+0x28/0x40
  |  kernel_init_freeable+0xe8/0x170
  |  kernel_init+0x2c/0x140
  |  ret_from_fork+0x10/0x20

Fixes: 898216c ("firmware: arm_scmi: add device power domain support using genpd")
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
[ drivers/pmdomain/arm/scmi_pm_domain.c -> drivers/firmware/arm_scmi/scmi_pm_domain.c ]
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1054009064 pushed a commit to 1054009064/linux that referenced this pull request Dec 6, 2025
[ Upstream commit 7458f72 ]

If of_genpd_add_provider_onecell() fails during probe, the previously
created generic power domains are not removed, leading to a memory leak
and potential kernel crash later in genpd_debug_add().

Add proper error handling to unwind the initialized domains before
returning from probe to ensure all resources are correctly released on
failure.

Example crash trace observed without this fix:

  | Unable to handle kernel paging request at virtual address fffffffffffffc70
  | CPU: 1 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.18.0-rc1 torvalds#405 PREEMPT
  | Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno Development Platform
  | pstate: 00000005 (nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
  | pc : genpd_debug_add+0x2c/0x160
  | lr : genpd_debug_init+0x74/0x98
  | Call trace:
  |  genpd_debug_add+0x2c/0x160 (P)
  |  genpd_debug_init+0x74/0x98
  |  do_one_initcall+0xd0/0x2d8
  |  do_initcall_level+0xa0/0x140
  |  do_initcalls+0x60/0xa8
  |  do_basic_setup+0x28/0x40
  |  kernel_init_freeable+0xe8/0x170
  |  kernel_init+0x2c/0x140
  |  ret_from_fork+0x10/0x20

Fixes: 898216c ("firmware: arm_scmi: add device power domain support using genpd")
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
[ drivers/pmdomain/arm/scmi_pm_domain.c -> drivers/firmware/arm_scmi/scmi_pm_domain.c ]
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1054009064 pushed a commit to 1054009064/linux that referenced this pull request Dec 6, 2025
[ Upstream commit 7458f72 ]

If of_genpd_add_provider_onecell() fails during probe, the previously
created generic power domains are not removed, leading to a memory leak
and potential kernel crash later in genpd_debug_add().

Add proper error handling to unwind the initialized domains before
returning from probe to ensure all resources are correctly released on
failure.

Example crash trace observed without this fix:

  | Unable to handle kernel paging request at virtual address fffffffffffffc70
  | CPU: 1 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.18.0-rc1 torvalds#405 PREEMPT
  | Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno Development Platform
  | pstate: 00000005 (nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
  | pc : genpd_debug_add+0x2c/0x160
  | lr : genpd_debug_init+0x74/0x98
  | Call trace:
  |  genpd_debug_add+0x2c/0x160 (P)
  |  genpd_debug_init+0x74/0x98
  |  do_one_initcall+0xd0/0x2d8
  |  do_initcall_level+0xa0/0x140
  |  do_initcalls+0x60/0xa8
  |  do_basic_setup+0x28/0x40
  |  kernel_init_freeable+0xe8/0x170
  |  kernel_init+0x2c/0x140
  |  ret_from_fork+0x10/0x20

Fixes: 898216c ("firmware: arm_scmi: add device power domain support using genpd")
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
[ drivers/pmdomain/arm/scmi_pm_domain.c -> drivers/firmware/arm_scmi/scmi_pm_domain.c ]
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1054009064 pushed a commit to 1054009064/linux that referenced this pull request Dec 6, 2025
[ Upstream commit 7458f72 ]

If of_genpd_add_provider_onecell() fails during probe, the previously
created generic power domains are not removed, leading to a memory leak
and potential kernel crash later in genpd_debug_add().

Add proper error handling to unwind the initialized domains before
returning from probe to ensure all resources are correctly released on
failure.

Example crash trace observed without this fix:

  | Unable to handle kernel paging request at virtual address fffffffffffffc70
  | CPU: 1 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.18.0-rc1 torvalds#405 PREEMPT
  | Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno Development Platform
  | pstate: 00000005 (nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
  | pc : genpd_debug_add+0x2c/0x160
  | lr : genpd_debug_init+0x74/0x98
  | Call trace:
  |  genpd_debug_add+0x2c/0x160 (P)
  |  genpd_debug_init+0x74/0x98
  |  do_one_initcall+0xd0/0x2d8
  |  do_initcall_level+0xa0/0x140
  |  do_initcalls+0x60/0xa8
  |  do_basic_setup+0x28/0x40
  |  kernel_init_freeable+0xe8/0x170
  |  kernel_init+0x2c/0x140
  |  ret_from_fork+0x10/0x20

Fixes: 898216c ("firmware: arm_scmi: add device power domain support using genpd")
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
[ drivers/pmdomain/arm/scmi_pm_domain.c -> drivers/firmware/arm_scmi/scmi_pm_domain.c ]
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
rva3 pushed a commit to mt6768-mainline/linux that referenced this pull request Dec 7, 2025
If of_genpd_add_provider_onecell() fails during probe, the previously
created generic power domains are not removed, leading to a memory leak
and potential kernel crash later in genpd_debug_add().

Add proper error handling to unwind the initialized domains before
returning from probe to ensure all resources are correctly released on
failure.

Example crash trace observed without this fix:

  | Unable to handle kernel paging request at virtual address fffffffffffffc70
  | CPU: 1 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.18.0-rc1 torvalds#405 PREEMPT
  | Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno Development Platform
  | pstate: 00000005 (nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
  | pc : genpd_debug_add+0x2c/0x160
  | lr : genpd_debug_init+0x74/0x98
  | Call trace:
  |  genpd_debug_add+0x2c/0x160 (P)
  |  genpd_debug_init+0x74/0x98
  |  do_one_initcall+0xd0/0x2d8
  |  do_initcall_level+0xa0/0x140
  |  do_initcalls+0x60/0xa8
  |  do_basic_setup+0x28/0x40
  |  kernel_init_freeable+0xe8/0x170
  |  kernel_init+0x2c/0x140
  |  ret_from_fork+0x10/0x20

Fixes: 898216c ("firmware: arm_scmi: add device power domain support using genpd")
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Elchanz3 pushed a commit to Elchanz3/android_kernel_samsung_r11s that referenced this pull request Dec 14, 2025
[ Upstream commit 7458f72 ]

If of_genpd_add_provider_onecell() fails during probe, the previously
created generic power domains are not removed, leading to a memory leak
and potential kernel crash later in genpd_debug_add().

Add proper error handling to unwind the initialized domains before
returning from probe to ensure all resources are correctly released on
failure.

Example crash trace observed without this fix:

  | Unable to handle kernel paging request at virtual address fffffffffffffc70
  | CPU: 1 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.18.0-rc1 torvalds#405 PREEMPT
  | Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno Development Platform
  | pstate: 00000005 (nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
  | pc : genpd_debug_add+0x2c/0x160
  | lr : genpd_debug_init+0x74/0x98
  | Call trace:
  |  genpd_debug_add+0x2c/0x160 (P)
  |  genpd_debug_init+0x74/0x98
  |  do_one_initcall+0xd0/0x2d8
  |  do_initcall_level+0xa0/0x140
  |  do_initcalls+0x60/0xa8
  |  do_basic_setup+0x28/0x40
  |  kernel_init_freeable+0xe8/0x170
  |  kernel_init+0x2c/0x140
  |  ret_from_fork+0x10/0x20

Fixes: 898216c ("firmware: arm_scmi: add device power domain support using genpd")
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
[ drivers/pmdomain/arm/scmi_pm_domain.c -> drivers/firmware/arm_scmi/scmi_pm_domain.c ]
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.