Commit Graph

1870 Commits

Author SHA1 Message Date
Linus Torvalds
ae814200e8 bitmap updates for v7.3
- bitmap_find_next_zero_area_off() optimization (Sunyi);
  - bitmap_find_next_zero_area_off(): return size when no zero area is
    found (Yury);
  - bitmap vs IDA vs Maple Tree performance test (Yury);
  - get rid of cpumap_print_to_pagebuf() (Yury);
  - use nr_node_ids in __nodemask_pr_numnodes() (Li RongQing);
  - bitops: make the *_bit_le functions use unsigned long (Benjamin);
  - bitmap scatter & gather test fix (Christophe);
  - use __ASSEMBLER__ in bitmap header files (Thomas);
 -----BEGIN PGP SIGNATURE-----
 
 iQGzBAABCgAdFiEEi8GdvG6xMhdgpu/4sUSA/TofvsgFAmqDX1YACgkQsUSA/Tof
 vsjcpwwAw7130xQPNFREr+ttdoUn3gN/aVUOl7K2Mi3kUOdlg8i9FEaQ/a07nE5L
 ozXRAWgSM7VxW1I7nkj5McsGRiRX0SRoXmTbjDfPugMiXbD1UBPqCz2n0rYHYR4P
 GfQ0RJK8LUN3Sq1eIu27HNirLG1HU1jCm3fsaTft2naaY6TnSPjklZdVE6Phz87E
 eblgm+AO8//EoKsggoMCnGVCVWKE3N1RrWzsaT4ltErGyHvIzvWEbCCk2cI764Qj
 orLLeefPf2xVDlbzywU7uUklNWYRe4miPxrbnT5TH2KmTipb3M62MkGjPa5dzYIq
 ssOvSnKoQEV9od9cNv1hPFGs5b+RO+kOolcrWKTqWeHFgVTv7dZZL0QvuGHeOfOa
 Fc5GPxE2SiXLPVuUEgMhlrg9DsXGf0d9u7JHTnJF+ZL/QhIE+4wOVnIYWUyBZiqx
 zF7Ic62xmeJOKz9kfYg9JQYPwUblhhyYtiWOmzLIisf8FXi5M3L9eH6rO6CEWcrk
 viEkTMbW
 =q8Lf
 -----END PGP SIGNATURE-----

Merge tag 'bitmap-for-7.3' of https://github.com/norov/linux

Pull bitmap updates from Yury Norov:
 "The usual set of fixes, cleanups and performance improvements together
  with a couple of new tests:

   - bitmap_find_next_zero_area_off() optimization (Sunyi)

   - bitmap_find_next_zero_area_off(): return size when no zero area is
     found (Yury)

   - bitmap vs IDA vs Maple Tree performance test (Yury)

   - get rid of cpumap_print_to_pagebuf() (Yury)

   - use nr_node_ids in __nodemask_pr_numnodes() (Li RongQing)

   - bitops: make the *_bit_le functions use unsigned long (Benjamin)

   - bitmap scatter & gather test fix (Christophe)

   - use __ASSEMBLER__ in bitmap header files (Thomas)"

* tag 'bitmap-for-7.3' of https://github.com/norov/linux: (25 commits)
  lib: test bitmap vs IDA vs Maple Tree performance for region allocations
  bitmap: Return size when no zero area is found
  media: s5p-mfc: Treat bitmap size as allocation failure
  crypto: ccp: Treat bitmap size as allocation failure
  powerpc/msi: Treat bitmap size as allocation failure
  ARM: dma-mapping: Treat bitmap size as allocation failure
  bitmap: drop bitmap_next_set_region()
  nodemask: reduce bitmap width to nr_node_ids in __nodemask_pr_numnodes()
  bitmap: Properly initialise destination bitmap for scatter & gather test
  lib/bitmap-str: get rid of cpumap_print_to_pagebuf()
  perf: Use sysfs_emit() for cpumask show callbacks
  PCI/sysfs: Use sysfs_emit() for cpumask show callbacks
  RDMA/hfi1: Use sysfs_emit() for cpumask show helper
  hwtracing: hisi_ptt: Use sysfs_emit() for cpumask show
  fpga: dfl-fme-perf: Use sysfs_emit() for cpumask show
  devfreq: Use sysfs_emit() for cpumask show callbacks
  cpu: Use sysfs_emit() for cpumask show callback
  x86/events: Use sysfs_emit() for cpumask show callbacks
  powerpc: Use sysfs_emit() for cpumask show callbacks
  arm: Use sysfs_emit() for cpumask show callbacks
  ...
2026-08-20 11:41:46 -07:00
Arnd Bergmann
7c8af4b5b6 i.MX SoC Changes for v7.3
- Fix OF/device_node reference count leaks in imx_src_init(),
   imx7_src_init(), and the AVIC interrupt controller driver
 - Drop obsolete/unused declarations from `arch/arm/mach-imx/common.h`
 - firmware: imx: scu: Refactor mailbox channel management to use a
   per-instance handle instead of a global one
 - firmware: imx: sm-misc: Add NULL check for `kmalloc` return value in
   syslog_show
 - soc: imx9: Add error handling for `devm_kasprintf` return value
 -----BEGIN PGP SIGNATURE-----
 
 iQHFBAABCgAvFiEEJS45w2QNr0ezLVaoNF3oRQ23YkwFAmpqVNkRHGZyYW5rLmxp
 QG54cC5jb20ACgkQNF3oRQ23Ykww1gv/e6t/433X0gei3wrBnqMGn+eGrW278YBK
 rFsTe8/UZgQpH689WHdsKRhgLPaAi9Tm2i8plyPfSZTNxiIvp564kBdpwi3BvpwI
 /83s0vRC+6tw4ngyR1awFfr8AP0F9KxSdk7KfWjDqGYXZ5pgIMXhch+196undVf+
 8wL5c2WWlBSkIaakQwhTEcmR43mkFHoKh9k3K/ub0PceqxdzodvlqcqaxqeVXLyC
 ZyQOR5mbVBTFLFtIj/JBKZQb6GsqsH41Yifk4udEtknx3mjoWMBhwqLiWvToJICo
 KkEyg7Dc5JlQ6CMp+uEjji5FpckRsYjMf/NfSYf7lDuUMJf+j7IHz14DnBh4b0g0
 gy6nq3vEBo/RpfaVe8v38j1IaA90gx7BJxLbh90+vJG4XvgP5tf5apTyyZ+9ecTZ
 Qd9Iz/TIbarD6sShBm0KIfsmS0Js+r/2yWt4rUDwDJZh/bYYMcbUJcfSM8Fd/RUV
 achgxY/zy88Vx65vrlOmL0CK8OoFcGra
 =uGEB
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmprEtoACgkQmmx57+YA
 GNma9A//ec/5uPQplFVfWrIMD1RwgpddbckUrvgulmPAsQ2rSnWma+rQdR/yXoZS
 sw5fP/0ebPpDMRojHcB7DGqEJ9f2IJJr+orpbBHGT4Cbznqq4+ZxyG7xvmrcojxW
 7rEHDSi0/qmYvxNhs3iXiWgUGXrpAMGBm/yw74I/6+zxAT10VtasLBXOlyPHagn0
 qxomPQKGSNlNhCdpJXaXu6fyNJohY5lwpxQLTEsYQPQksJQg9xe1DcIu5WOJHuVa
 Q2er7vzDf5ARChzGhJic0zxpnIX/UDRyGr6716Ay94DwELl6mdKCZvpBmdDpASPs
 P8BD9jVThVuH8bZonfhSlBIyhLNkF4aXKG/PG7nq4GMYrBmkzikSrBCY2kn4nKB5
 NVNpjAPTiabOw0oWtszk26Jnav6oMrw4RN4/oh3eKIEvoIfoMw9fKHrqLC9eXULo
 /joJQotoqmxm5U3mRY5K9n/FmUNPkbJwko9663ymk9vyLTkkwFnRV/zjeGXmNpda
 YxEH+9zCpUNK1nAvVtgIsiOJU+GXDiy0zJ8f7odk6uW2iQASpVEcBlf7m3+bM3rV
 +5y7elg/VUXqhYkGuIe9/fS0/jcW6Je2YD/U5czmJwfFURYuIzMJPbv1wf9Ato9R
 6UYGYnaE4DWaLzDNCGUXIG2GTtJLuZJhIZsULzg0CuoloJ7KEN0=
 =4zKa
 -----END PGP SIGNATURE-----

Merge tag 'imx-soc-7.3' of https://git.kernel.org/pub/scm/linux/kernel/git/frank.li/linux into soc/arm

i.MX SoC Changes for v7.3

- Fix OF/device_node reference count leaks in imx_src_init(),
  imx7_src_init(), and the AVIC interrupt controller driver
- Drop obsolete/unused declarations from `arch/arm/mach-imx/common.h`
- firmware: imx: scu: Refactor mailbox channel management to use a
  per-instance handle instead of a global one
- firmware: imx: sm-misc: Add NULL check for `kmalloc` return value in
  syslog_show
- soc: imx9: Add error handling for `devm_kasprintf` return value

* tag 'imx-soc-7.3' of https://git.kernel.org/pub/scm/linux/kernel/git/frank.li/linux:
  firmware: imx: scu: manage mailbox channels and global handle
  soc: imx9: devm_kasprintf error handling
  ARM: imx: Drop obsolete stuff from common.h
  firmware: imx: sm-misc: Add NULL check for kmalloc in syslog_show
  ARM: imx: fix device_node refcount leaks in imx7_src_init()
  ARM: imx: fix device_node refcount leak in imx_src_init()
  ARM: imx: avic: Fix OF node reference leaks

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-07-30 11:01:06 +02:00
Yury Norov
1a9adacbbb arm: Use sysfs_emit() for cpumask show callbacks
These callbacks are sysfs show paths.

Use sysfs_emit() and cpumask_pr_args() to emit the masks.

This prepares for removing cpumap_print_to_pagebuf().

Signed-off-by: Yury Norov <ynorov@nvidia.com>
2026-07-22 15:38:37 -04:00
Arnd Bergmann
f70425ca42 ARM: mark Cortex-M3/M4/M7 based boards as deprecated
The Cortex-M3/M4/M7 cores were designed as a replacement for the earlier
ARM7TDMI and ARM9TDMI microarchitectures used in older microcontrollers.

At the moment, Linux can run these cores either when they are integrated
into a larger SoC, or as standalone microcontrollers. While there was
a lot of development work going into Cortex-M support from 2011 to 2016,
this largely stopped when it became clear that Zephyr and other RTOS
had taken over that market. To date, the only Cortex-M based based
microcontroller boards supported upstream are reference implementations.

Schedule these for removal after the next LTS kernel, so if any users
remain that want to update their kernels, they can stay on that
version for a few years before having to maintain the platform support
out of tree.

Acked-by: Vladimir Zapolskiy <vz@mleia.com> # NXP LPC18xx/LPC43xx
Acked-by: Vladimir Murzin <vladimir.murzin@arm.com> # MPS2
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Acked-by: Frank Li <Frank.Li@nxp.com> # i.MX
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-07-10 23:21:50 +02:00
Arnd Bergmann
b5fdfa2081 ARM: deprecate support for ARM1136r0
This CPU revision remains a special case as it is now incompatible
with CONFIG_SMP. Only the Nokia N8x0 is used in practice, and even
that one is fairly rare these days, so let's plan to remove all of
them after the 2026 LTS kernel release.

Acked-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Vladimir Zapolskiy <vz@mleia.com> # Freescale i.MX31
Acked-by: Aaro Koskinen <aaro.koskinen@iki.fi> # OMAP
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-07-03 20:36:07 +02:00
Arnd Bergmann
d702424271 ARM: rework ARM11 CPU selection logic
Support for SMP on ARM1136r0 has been broken for a while, and nobody
is working on fixing it. I had a plan to change ARMv6 support to no
longer coexist in a common kernel with ARMv7 CPUs but instead ARMv5 and
below. This would have addressed the problem, but after a recent mailing
list discussion, we concluded that an easier approach is to just forbid
ARM1136r0 CPU support on SMP-enabled kernels.

This mainly affects users of the Nokia N800/N810 tablets using an
OMAP2420 SoC, which is the only commercial product with an ARM1136r0
that is still supported by the kernel.

The other machines that are still in the same hardware catogory are:

 - TI OMAP2420 H4 reference board
 - TI OMAP2430 SDP software development platform
 - Freescale/NXP i.MX31 Lite Development Kit
 - Buglabs i.MX31 Bug 1.x prototype
 - Arm Integrator/AP with CM1136JF-S core module

To my knowledge, none of these have any actual users aside from
reference boards being used to more easily test the platforms.

There are also a few ARM1136r1 machines, which implement the
ARMv6K SMP support (barriers, atomics and TLS):

 - Eukrea CPUIMX35 reference platform
 - Freescale/NXP i.MX35 Product Development Kit
 - ARM Integrator/CP/IM-LT3 with ARM1136J Core Tile
 - ARM Realview/EB with ARM1136J Core Tile

Again, these are mainly reference implementations rather than
actual products, but since they support ARMv6K, they should
continue to work correctly in SMP-enabled kernels. For the
ARM Core Tile, I have not found a datasheet but instead use
the revision based on what the respective virtual models
report.

All the other ARMv6 platforms use an ARM1176 with ARMv6K,
VMSAv7 and Trustzone support.

To avoid the broken configuration, annotate the ARM1136 based
machines with specific CPU_ARM1136R0 or CPU_ARM1136R2 symbols
in Kconfig and make the r0 variants depend on !SMP.

Link: https://lore.kernel.org/linux-arm-kernel/2831c5a6-cfbf-4fe0-b51c-0396e5b0aeb7@app.fastmail.com/T/
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Aaro Koskinen <aaro.koskinen@iki.fi> # OMAP
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-07-03 20:36:07 +02:00
Uwe Kleine-König (The Capable Hub)
9818b99c12 ARM: imx: Drop obsolete stuff from common.h
i.MX21 (and thus imx21_init_early()) is gone since v5.10-rc1 (commit
4b563a0666 ("ARM: imx: Remove imx21 support")).

The init_irq() functions are gone since v5.12-rc5 (commit e2c1b0ff38
("ARM: imx: avic: Convert to using IRQCHIP_DECLARE")).

And mxc_device_init() was removed for v5.10-rc1 (in commit 8485adf17a
("ARM: imx: Remove imx device directory")).

The last user of imx1_reset_init() is gone since v4.9-rc1 (commit
e1291cffcc ("ARM: i.MX: Remove i.MX1 non-DT support")).

Drop declaration of enum mxc_cpu_pwr_mode, the actual definition follows
later in common.h without a usage in-between.

All users of of_device_id also include <linux/of.h>,
<linux/of_address.h> or <linux/of_platform.h> which is enough to not
need the forward declaration.

Signed-off-by: Uwe Kleine-König (The Capable Hub) <u.kleine-koenig@baylibre.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
2026-06-29 18:22:55 -04:00
Weigang He
3de939b2ac ARM: imx: fix device_node refcount leaks in imx7_src_init()
imx7_src_init() obtains two device_node references via
of_find_compatible_node() - one for "fsl,imx7d-src" and one for
"fsl,imx7d-gpc" - reusing the same np variable, but never calls
of_node_put() on either. On every i.MX7D boot up to two device_node
refcounts are leaked:

  - The "fsl,imx7d-src" node is leaked both when of_iomap() fails (the
    early return after the mapping) and when it succeeds, because np is
    then overwritten by the second of_find_compatible_node() call
    without releasing the prior reference.
  - The "fsl,imx7d-gpc" node is leaked on every path leaving the
    function after it is acquired.

Release each reference immediately after of_iomap() consumes the node.
of_iomap() maps the node's registers but does not retain a reference to
the device_node, so it is safe to put the node once mapped; this also
drops the first reference before np is reused for the second lookup.

Found by static analysis tool CodeQL.

Fixes: e34645f458 ("ARM: imx: add smp support for imx7d")
Signed-off-by: Weigang He <geoffreyhe2@gmail.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
2026-06-29 15:57:18 -04:00
Weigang He
936407c356 ARM: imx: fix device_node refcount leak in imx_src_init()
imx_src_init() obtains a device_node reference via
of_find_compatible_node() matching "fsl,imx51-src" and uses it only to
call of_iomap(). It never releases that reference: on the success path
the function returns at the end without of_node_put(np), leaking one
device_node refcount on every boot of an i.MX5/6 platform.

Release the reference right after of_iomap(). of_iomap() maps the
node's registers but does not retain a reference to the device_node, so
the node can be put once the mapping is done. The early return on a NULL
np needs no put.

Found by static analysis tool CodeQL.

Fixes: bd3d924d71 ("ARM i.MX5: Add System Reset Controller (SRC) support for i.MX51 and i.MX53")
Signed-off-by: Weigang He <geoffreyhe2@gmail.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
2026-06-29 15:57:17 -04:00
Yuho Choi
b24c12e1ba ARM: imx: avic: Fix OF node reference leaks
of_find_compatible_node() returns a device node with its reference count
incremented. mxc_init_irq() looks up the i.MX25 CCM node for of_iomap()
and the AVIC node for irq_domain_create_legacy(), but does not release
either temporary reference.

of_iomap() does not consume the node reference, and
irq_domain_create_legacy() takes its own fwnode reference for the domain.
Drop the temporary OF node references after each use.

Fixes: 9b454d16e5 ("ARM: imx: avic: set low-power interrupt mask for imx25")
Fixes: 544496ab5c ("ARM: imx: move irq_domain_add_legacy call into avic driver")
Signed-off-by: Yuho Choi <dbgh9129@gmail.com>
Reviewed-by: Martin Kaiser <martin@kaiser.cx>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
2026-06-29 13:04:01 -04:00
Linus Torvalds
6505114e82 soc: arm code changes for 7.2
The largest addition here is the revived support for the ZTE ZX
 SoC platform, though this mostly documentation.
 
 The other changes are code cleanups that deal with continued
 conversion of the GPIO library away from GPIO numbers to
 descriptors and a few minor bugfixes.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmovyncACgkQmmx57+YA
 GNmY/RAAlinPvdbpf4z7D+nlEIiDSEqM437qycXXb1sTE43p5au6qejwkh9UQ+IA
 Z3yRP5eXHVrwYcXBTqswvxNaBPMob1F/Lcr0anLrIxx4rMY91EA2wz1oLelWUVDR
 INRTnzbJSVGPpDrheDYgioL2gJpOzLAvQMUNAUiXy46nteko5RQjNdQwzz2g/syu
 z8MQKNwsKYO3wPqMvjHuZTc5veHmoW8jYfxd36K8k+3qyRyrftHI/v1opTR6dVhn
 Ib0PLnsRAQRGGnHF1xbsXDTM4YIxk7+R074KchuIz7l8XTziNjzHrgeGAkGLyjz/
 3jxqzT+tzr7wKJnM34onfbbRymW0TUD+yWvI0DRI5kTJ9az18WMS+MHpBc8wW0fL
 klyyaqkIlfgnT5nEEym31LzUZvP0O92DUKSBYnsdEiFQFIU0el4Lu6dmfh900fp/
 KrZRSr9fsY1pnZB/DQXaoA0/FJcngw4lAUeRwdwQ8j4sbh/3rX6MX5JHrg0AxOI4
 IuMGwC+b0etjxNk8V0wCdjRdxqUMMxLxtdktbbmFregjgJ6GKuNVBjCgajQYG6JX
 p4sjFRY7aLEHCZ/sjV/lnmrFmvYxm4nRBM5po1SvpmJuOGntTrmvczzzTMFJLWFZ
 6SeAYp+ugvBXWrU873vwVeyRvr3SPxwsh4SPF4MeHFnixcO3DgA=
 =QOYC
 -----END PGP SIGNATURE-----

Merge tag 'soc-arm-7.2' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc

Pull arm SoC code updates from Arnd Bergmann:
 "The largest addition here is the revived support for the ZTE ZX SoC
  platform, though this mostly documentation.

  The other changes are code cleanups that deal with continued
  conversion of the GPIO library away from GPIO numbers to descriptors
  and a few minor bugfixes"

* tag 'soc-arm-7.2' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc:
  MAINTAINERS: Add Axiado reviewer and Maintainers
  ARM: remove the last few uses of do_bad_IRQ()
  ARM: imx31: Fix IIM mapping leak in revision check
  ARM: imx3: Fix CCM node reference leak
  ARM: orion5x: update board check in mss2_pci_init() to use the DT
  arm: mvebu_v5_defconfig: remove stale MACH_LINKSTATION_LSCHL reference
  ARM: mvebu: simplify of_node_put calls
  ARM: mvebu: drop unnecessary NULL check
  arm: boot: ep93xx: don't rely on machine_is_*() for removed board files
  ARM: zte: clean up zx297520v3 doc. warnings
  arm64: Kconfig: drop unneeded dependency on OF_GPIO for ARCH_MVEBU
  firmware: imx: sm-misc: Make scmi_imx_misc_ctrl_nb variable static
  ARM: zte: Add zx297520v3 platform support
  ARM: pxa: pxa27x: attach software node to its target GPIO controller
  ARM: pxa: pxa25x: attach software node to its target GPIO controller
  ARM: pxa: spitz: attach software nodes to their target GPIO controllers
  ARM: pxa: statify platform device definitions in spitz board file
  ARM: omap2: simplify allocation for omap_device
  ARM: select legacy gpiolib interfaces where used
  ARM: s3c: use gpio lookup table for LEDs
2026-06-17 11:28:10 -07:00
Enric Balletbo i Serra
a9ac745bc3
clocksource: move NXP timer selection to drivers/clocksource
The Kconfig logic for selecting the scheduler clocksource on
NXP Vybrid (VF610) uses a `choice` block restricted to 32-bit ARM. This
prevents 64-bit architectures, such as the NXP S32 family, from enabling
the NXP Periodic Interrupt Timer (PIT) driver (CONFIG_NXP_PIT_TIMER).

Relocate the NXP clocksource selection from arch/arm/mach-imx/Kconfig to
drivers/clocksource/Kconfig. This allows the configuration to be shared
across different architectures.

Update the selection to include support for ARCH_S32 and add a "None"
option restricted to ARCH_S32, since Vybrid lacks the ARM Architected
Timer. The Vybrid Global Timer option is restricted to ARCH_MULTI_V7
SOC_VF610 platforms to prevent it from being visible on Cortex-M4 builds,
which lack the ARM Global Timer hardware.

Fixes: bee33f22d7 ("clocksource/drivers/nxp-pit: Add NXP Automotive s32g2 / s32g3 support")
Signed-off-by: Enric Balletbo i Serra <eballetb@redhat.com>
Signed-off-by: Daniel Lezcano <daniel.lezcano@kernel.org>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Link: https://patch.msgid.link/20260514-fix-nxp-timer-v3-1-a3e68fdb505e@redhat.com
2026-06-10 07:26:07 +02:00
Yuho Choi
ccb4b54b8e ARM: imx31: Fix IIM mapping leak in revision check
mx31_read_cpu_rev() maps the IIM registers with of_iomap() to read the
silicon revision, but returns without unmapping the MMIO mapping.

Keep the normalized revision value in a local variable and route the
return path through iounmap() after the revision register has been read.

Fixes: 3172225d45 ("ARM: imx31: Retrieve the IIM base address from devicetree")
Signed-off-by: Yuho Choi <dbgh9129@gmail.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
2026-06-01 15:58:13 -04:00
Yuho Choi
36d46348eb ARM: imx3: Fix CCM node reference leak
of_find_compatible_node() returns a referenced device node. The i.MX31
and i.MX35 early init paths use the node to map the CCM registers with
of_iomap(), but never drop the node reference.

Release the node after the mapping is created.

Fixes: 2cf98d1295 ("ARM: imx3: Retrieve the CCM base address from devicetree")
Signed-off-by: Yuho Choi <dbgh9129@gmail.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
2026-06-01 12:17:07 -04:00
Linus Torvalds
bf4afc53b7 Convert 'alloc_obj' family to use the new default GFP_KERNEL argument
This was done entirely with mindless brute force, using

    git grep -l '\<k[vmz]*alloc_objs*(.*, GFP_KERNEL)' |
        xargs sed -i 's/\(alloc_objs*(.*\), GFP_KERNEL)/\1)/'

to convert the new alloc_obj() users that had a simple GFP_KERNEL
argument to just drop that argument.

Note that due to the extreme simplicity of the scripting, any slightly
more complex cases spread over multiple lines would not be triggered:
they definitely exist, but this covers the vast bulk of the cases, and
the resulting diff is also then easier to check automatically.

For the same reason the 'flex' versions will be done as a separate
conversion.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2026-02-21 17:09:51 -08:00
Kees Cook
69050f8d6d treewide: Replace kmalloc with kmalloc_obj for non-scalar types
This is the result of running the Coccinelle script from
scripts/coccinelle/api/kmalloc_objs.cocci. The script is designed to
avoid scalar types (which need careful case-by-case checking), and
instead replace kmalloc-family calls that allocate struct or union
object instances:

Single allocations:	kmalloc(sizeof(TYPE), ...)
are replaced with:	kmalloc_obj(TYPE, ...)

Array allocations:	kmalloc_array(COUNT, sizeof(TYPE), ...)
are replaced with:	kmalloc_objs(TYPE, COUNT, ...)

Flex array allocations:	kmalloc(struct_size(PTR, FAM, COUNT), ...)
are replaced with:	kmalloc_flex(*PTR, FAM, COUNT, ...)

(where TYPE may also be *VAR)

The resulting allocations no longer return "void *", instead returning
"TYPE *".

Signed-off-by: Kees Cook <kees@kernel.org>
2026-02-21 01:02:28 -08:00
Lukas Bulwahn
d79c3eb597 ARM: imx: Kconfig: Adjust select after renamed config option
Commit 3f490a74a8a1 ("clocksource/drivers/vf-pit: Rename the VF PIT to NXP
PIT") renames the config VF_PIT_TIMER to NXP_PIT_TIMER, but it misses
adjusting a reference to VF_PIT_TIMER in arch/arm/mach-imx/Kconfig.

Adjust the config reference to the new name.

Fixes: 3f490a74a8a1 ("clocksource/drivers/vf-pit: Rename the VF PIT to NXP PIT")
Signed-off-by: Lukas Bulwahn <lukas.bulwahn@redhat.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
2025-09-11 10:14:21 +08:00
Jiri Slaby (SUSE)
4dcb0045a3 ARM: Switch to irq_domain_create_*()
irq_domain_add_*() interfaces are going away as being obsolete now.
Switch to the preferred irq_domain_create_*() ones. Those differ in the
node parameter: They take more generic struct fwnode_handle instead of
struct device_node. Therefore, of_fwnode_handle() is added around the
original parameter.

Note some of the users can likely use dev->fwnode directly instead of
indirect of_fwnode_handle(dev->of_node). But dev->fwnode is not
guaranteed to be set for all, so this has to be investigated on case to
case basis (by people who can actually test with the HW).

[ tglx: Fix up subject prefix ]

Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/all/20250319092951.37667-15-jirislaby@kernel.org
2025-05-16 21:06:08 +02:00
Linus Torvalds
3536cb1e57 soc: arm platform changes for 6.15
The at91 platform gains support for SAMA7D65, a new variant of the
 Cortex-A7 based SAMA7G5 with a graphics output.
 
 The i.MX, Renesas and davinci platforms each get one minor bugfix.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmfj27kACgkQYKtH/8kJ
 UidpiA//a3/wHEUWmGzHUVDiCmUWU1iHaZbvucTcVBynYzya87bEQNc6h5gHFC2Y
 QlEN1p/j03hVtCiO/OOBdpt9Dcx8FOFhgRS7RIH4sR8tRykDd8nKuoOzKeT4E+Gu
 FksvnLUSmnJDzYNMBW8isB8v+bpKiwR18jmehWvhXJF+AFtC+ChuTMjrcwqPgScA
 tdfaRGC/JhgNtPANBnJuubiND+Luem8wT27SlL1UJsSFf0JYhADVnlqwbPhmVlrv
 R10C8j/TIZ+1glNQ4/wWab6CFjJ3RnRwsAGoARYVJq33d0/1vcOfUTKjv7XyLznD
 xjojwpc6bCeCb0mNz0Yf8rWyjpwYWOLEgIka3RsHbI2zerEgNXAZqeLh4KFinFQ9
 WZrFXAbBkit6IqWKZECbTK6kyWh5I/rUEWbdEf8kBeT2+hEYBq5bq9AEBzSe9PH6
 JGaOFRAWIutNMlfeULAXm4FsgTujbkSN/x8Vi3aBuFx06Y6AzW/I3fpB5w84AUml
 RcazYQGCXO8TjPUxrqplS6CQtOlTl4db90OI0vt965VreV1NK1cV55ODw/Vu1c3P
 OKy4PK86cAj5UdsniMnXqc7vZaqqKLoQN1XJ8OQVkyAAI55QALvu1zcSA/yurZi2
 kb1DZoJ31dAcprE+YkP6PnI+cEGqU8OXrYriziMGF6nmRYtgvaA=
 =0NHR
 -----END PGP SIGNATURE-----

Merge tag 'soc-arm-6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc

Pull SoC arm platform updates from Arnd Bergmann:
 "The at91 platform gains support for SAMA7D65, a new variant of the
  Cortex-A7 based SAMA7G5 with a graphics output.

  The i.MX, Renesas and davinci platforms each get one minor bugfix"

* tag 'soc-arm-6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc:
  ARM: davinci: always enable CONFIG_ARCH_DAVINCI_DA850
  ARM: imx: mark imx53_suspend_sz as unused
  ARM: at91: pm: Enable ULP0/ULP1 for SAMA7D65
  ARM: at91: pm: Add Backup mode for SAMA7D65
  ARM: at91: pm: add DT compatible support for sama7d65
  ARM: at91: pm: fix at91_suspend_finish for ZQ calibration
  dt-bindings: ARM: at91: add Calao USB boards
  dt-bindings: ARM: at91: make separate entry for Olimex board
  ARM: at91: Add Support in SoC driver for SAMA7D65
  dt-bindings: atmel-sysreg: Add SAMA7D65 Chip ID
  ARM: shmobile: rcar-gen2: Remove CMA reservation code
2025-03-27 09:37:18 -07:00
Arnd Bergmann
4f8ec94af3 ARM: imx: mark imx53_suspend_sz as unused
Unused 'static const' variables cause a warning when building with
W=1, and imx53_suspend_sz has a definition for this as an
alternative when CONFIG_SUSPEND is disabled:

    In file included from arch/arm/mach-imx/cpu.c:9:
    arch/arm/mach-imx/common.h:101:18: error: 'imx53_suspend_sz' defined but not used [-Werror=unused-const-variable=]

It's still referenced though, so mark it as __maybe_unused, so
the one user can address the dummy copy and other files that include
the header don't produce a warning.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
2025-03-11 10:57:51 +08:00
Nam Cao
2f33de8364 ARM: imx: Switch to use hrtimer_setup()
hrtimer_setup() takes the callback function pointer as argument and
initializes the timer completely.

Replace hrtimer_init() and the open coded initialization of
hrtimer::function with the new setup mechanism.

Signed-off-by: Nam Cao <namcao@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/all/aff915511ee629b461fee98688b8e859075386ac.1738746821.git.namcao@linutronix.de
2025-02-18 10:32:31 +01:00
Linus Torvalds
f274fffbc2 Pin control fixes for the v6.13 series:
- A small Kconfig fixup for the i.MX, in principle this
   could come in from the SoC tree but the bug was introduced
   from the pin control tree so let's fix it from here.
 
 - Fix a sleep in atomic context in the MCP23xxx GPIO expander
   by disabling the regmap locking and using explicit
   mutex locks.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEElDRnuGcz/wPCXQWMQRCzN7AZXXMFAmd3nJcACgkQQRCzN7AZ
 XXOhNg/8C5lXyL8M8LEiCL7qatG9fBlFCIsCs6/bprYUT5tQksMpBlJUtYmyKEf4
 nw1UWOrwPz6RFC5UnK0PnDg3wC2y8sElWab5FUMsqZaBdCeDnCQXsbnJ7iiow/pN
 +BigELRBgHJtfyMBp8WymS1w+2IarlBuh3JPTVFTZO/uZFCiM4C9QLFg3oPaUMhq
 ZaVMYldRIIbM0QVs2JjYas317dmH290qOIQu7tTNVsiVDIias0Z3gv4ejKTe+QAt
 qAgHrK5xMBcTu07Dx/DVg8+X1YN+LCqk1CkZuCk6kYoUv4pAARGAWwO2JtbeHldI
 9iuBBDOmaqVS+GKxrXgga7nu4mcsQqanXGmu12+YibkuMt56iGCp0LVLVWe8/CAN
 aNg5/5fDrfKWssAOrMVupGJkaqR5uVkZ8v9oPDq1fSh2jAATzOa/l8OiaonIfkJ9
 2UG0jr23LtrsAsfcObRR2xbvK6BwtFONFnk51ivzM+tLyXBl1DkXiUBakrrYpYKN
 eTF2+5Att/XKu8yghTqtl6XPLPb9DLjWCzFh7Y7z8hylHoIOUHNUpS4sMZ/gveTq
 yBCLpo7tSYZfIvhrIRkPlNciyCQJDoLOxb2OJT/6WcomW561RSEhOjTFObSsn634
 YjJ3bSobGLMq4bT3p6iCylXc5KTGhvf54hp/bLj4HMekM7daSyY=
 =+Eo1
 -----END PGP SIGNATURE-----

Merge tag 'pinctrl-v6.13-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl

Pull pin control fixes from Linus Walleij:

 - A small Kconfig fixup for the i.MX.

   In principle this could come in from the SoC tree but the bug was
   introduced from the pin control tree so let's fix it from here.

 - Fix a sleep in atomic context in the MCP23xxx GPIO expander by
   disabling the regmap locking and using explicit mutex locks.

* tag 'pinctrl-v6.13-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
  pinctrl: mcp23s08: Fix sleeping in atomic context due to regmap locking
  ARM: imx: Re-introduce the PINCTRL selection
2025-01-03 10:57:57 -08:00
Fabio Estevam
b77bd3ba76 ARM: imx: Re-introduce the PINCTRL selection
Since commit 17d2100189 ("ARM: imx: Allow user to disable pinctrl"),
the CONFIG_PINCTRL option is no longer implicitly selected, causing
several i.MX SoC pinctrl drivers no longer getting selected by default.

This causes boot regressions on the ARMv4, ARMv5, ARMv6 and ARMv7
i.MX SoCs.

Fix it by selecting CONFIG_PINCTRL as before.

This defeats the purpose of 7d210018914 ("ARM: imx: Allow user to disable
pinctrl"), but it is the less invasive fix for the boot regressions.

The attempt to build Layerscape without pinctrl can still be explored
later as suggested by Arnd:

"Overall, my best advice here is still to not change the way
i.MX pinctrl works at all, but just fix Layerscape to not depend
on i.MX. The reason for the 'select' here is clearly that the
i.MX machines would fail to boot without pinctrl, and changing
that because of Layerscape seems backwards."

Fixes: 17d2100189 ("ARM: imx: Allow user to disable pinctrl")
Reported-by: Guenter Roeck <linux@roeck-us.net>
Closes: https://lore.kernel.org/linux-arm-kernel/49ff070a-ce67-42d7-84ec-8b54fd7e9742@roeck-us.net/
Signed-off-by: Fabio Estevam <festevam@denx.de>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/20241127190605.1367157-1-festevam@gmail.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2024-12-03 10:58:42 +01:00
Linus Torvalds
e70140ba0d Get rid of 'remove_new' relic from platform driver struct
The continual trickle of small conversion patches is grating on me, and
is really not helping.  Just get rid of the 'remove_new' member
function, which is just an alias for the plain 'remove', and had a
comment to that effect:

  /*
   * .remove_new() is a relic from a prototype conversion of .remove().
   * New drivers are supposed to implement .remove(). Once all drivers are
   * converted to not use .remove_new any more, it will be dropped.
   */

This was just a tree-wide 'sed' script that replaced '.remove_new' with
'.remove', with some care taken to turn a subsequent tab into two tabs
to make things line up.

I did do some minimal manual whitespace adjustment for places that used
spaces to line things up.

Then I just removed the old (sic) .remove_new member function, and this
is the end result.  No more unnecessary conversion noise.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2024-12-01 15:12:43 -08:00
Linus Torvalds
2d32fba02e This is the bulk of the pin control changes for v6.13:
No core changes this time.
 
 New drivers:
 
 - Xlinix Versal pin control driver.
 
 - Ocelot LAN969x pin control driver.
 
 - T-Head TH1520 RISC-V SoC pin control driver.
 
 - Qualcomm SM8750, IPQ5424, QCS8300, SAR2130P and QCS615 SoC
   pin control drivers.
 
 - Qualcomm SM8750 LPASS (low power audio subsystem)
   pin control driver.
 
 - Qualcomm PM8937 mixsig IC pin control support, GPIO and
   MPP (multi-purpose-pin).
 
 - Samsung Exynos8895 and Exynos9810 SoC pin control driver.
 
 - SpacemiT K1 SoC pin control driver.
 
 - Airhoa EN7581 IC pin control driver.
 
 Improvements:
 
 - The Renesas subdriver now supports schmitt-trigger and
   open drain pin configurations if the hardware supports it.
 
 - Support GPIOF and GPIOG banks in the Aspeed G6 SoC.
 
 - Support the DSW community in the Intel Elkhartlake SoC.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEElDRnuGcz/wPCXQWMQRCzN7AZXXMFAmdAhqsACgkQQRCzN7AZ
 XXOX/BAAkTh2Xwh4t9u9p0wjvXcY9bu+O204vUaQNJr3zphqLegJihChriU8LiQN
 7BTQcYMHMsoVXRzFsoRBSocfJmcFE6amoHemSkCaYDCrr0fchk61AzkivUMvMHBi
 8qBFB1kYbk/Cmk2JwOEpf16gT45wTdIIOfqB6X9ikRdIUwCgjMH77OYHilXF0zPO
 vmikY8fnIj/0r9hdVqD5bcpeHo8XHZpHBMvr1NfMUehfhGoJNLZF+xyg+fosnoDH
 om92ugKC856jVP0Hl9kfL58ggKuBI2YPlm2OW9VxAQZu7EMvlCeUjv8R+sNpXrpI
 rod84A62/K8OYcQLW+UIA2ykty3LFfh90wKtpkKV0z/7jtEfBBzCMsln/mCUVHEl
 3zoo0n6n68r0i1zKAFf45JGJExeJv5U0lBfFGm8PnOOouZW3IYJcgHQfBswaPzRD
 lEsT37jUEF+qE0VWqBx3xTz/w2Kxs5XHoF4P5UwE5TCAA90hjMLPdXXzn6bNiuww
 4T8iOT5NFwHqlIKJxRBYJDDuc+EtQksmKhbDXilKgg0h+n/YmQN12CFKy5d+Ch57
 mT/M6bP4FCsTOioUEALUVLMzUN7FJjPHN7GO1nwpA6Rmb8yMaYZJHxglfjduo83y
 PNOsaLRY3BhukBh74B6OTq7SKgvH1Bj1VwEY87JhYZLmDE49xjw=
 =F7bj
 -----END PGP SIGNATURE-----

Merge tag 'pinctrl-v6.13-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl

Pull pin control updates from Linus Walleij:
 "No core changes this time.

  New drivers:

   - Xlinix Versal pin control driver

   - Ocelot LAN969x pin control driver

   - T-Head TH1520 RISC-V SoC pin control driver

   - Qualcomm SM8750, IPQ5424, QCS8300, SAR2130P and QCS615 SoC pin
     control drivers

   - Qualcomm SM8750 LPASS (low power audio subsystem) pin control
     driver

   - Qualcomm PM8937 mixsig IC pin control support, GPIO and MPP
     (multi-purpose-pin)

   - Samsung Exynos8895 and Exynos9810 SoC pin control driver

   - SpacemiT K1 SoC pin control driver

   - Airhoa EN7581 IC pin control driver

  Improvements:

   - The Renesas subdriver now supports schmitt-trigger and open drain
     pin configurations if the hardware supports it

   - Support GPIOF and GPIOG banks in the Aspeed G6 SoC

   - Support the DSW community in the Intel Elkhartlake SoC"

* tag 'pinctrl-v6.13-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: (105 commits)
  pinctrl: airoha: Use unsigned long for bit search
  pinctrl: k210: Undef K210_PC_DEFAULT
  pinctrl: qcom: spmi: fix debugfs drive strength
  pinctrl: qcom: Add sm8750 pinctrl driver
  dt-bindings: pinctrl: qcom: Add sm8750 pinctrl
  pinctrl: cy8c95x0: remove unneeded goto labels
  pinctrl: cy8c95x0: embed iterator to the for-loop
  pinctrl: cy8c95x0: Use temporary variable for struct device
  pinctrl: cy8c95x0: use flexible sleeping in reset function
  pinctrl: cy8c95x0: switch to using devm_regulator_get_enable()
  pinctrl: cy8c95x0: Use 2-argument strscpy()
  dt-bindings: pinctrl: sx150xq: allow gpio line naming
  pinctrl: single: add marvell,pxa1908-padconf compatible
  dt-bindings: pinctrl: pinctrl-single: add marvell,pxa1908-padconf compatible
  dt-bindings: pinctrl: correct typo of description for cv1800
  pinctrl: qcom: spmi-mpp: Add PM8937 compatible
  dt-bindings: pinctrl: qcom,pmic-mpp: Document PM8937 compatible
  pinctrl: qcom-pmic-gpio: add support for PM8937
  dt-bindings: pinctrl: qcom,pmic-gpio: add PM8937
  pinctrl: Use of_property_present() for non-boolean properties
  ...
2024-11-25 17:24:51 -08:00
Andrew Davis
2f76989999 ARM: imx: Switch to new sys-off handler API
Kernel now supports chained power-off handlers. Use
register_platform_power_off() that registers a platform level power-off
handler. Legacy pm_power_off() will be removed once all drivers and archs
are converted to the new sys-off API.

Signed-off-by: Andrew Davis <afd@ti.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
2024-10-22 09:25:30 +08:00
Esben Haabendal
17d2100189 ARM: imx: Allow user to disable pinctrl
Making pinctrl drivers and subsequently the pinctrl framework
user-controllable, allows building a kernel without this.
While in many (most) cases, this could make the system unbootable, it
does allow building smaller kernels for those situations where picntrl
is not needed.

One such situation is when building a kernel for NXP LS1021A systems,
which does not have run-time controllable pinctrl, so pinctrl framework
and drivers are 100% dead-weight.

Signed-off-by: Esben Haabendal <esben@geanix.com>
Acked-by: Shawn Guo <shawnguo@kernel.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/20240506-imx-pinctrl-optional-v2-1-bdff75085156@geanix.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2024-10-01 14:03:41 +02:00
Nathan Chancellor
1ec2362084 ARM: imx: Annotate imx7d_enet_init() as __init
After a recent LLVM change [1] that deduces __cold on functions that
only call cold code (such as __init functions), there is a section
mismatch warning from imx7d_enet_init(), which got moved to
.text.unlikely. as a result of that optimization:

  WARNING: modpost: vmlinux: section mismatch in reference: imx7d_enet_init+0x20 (section: .text.unlikely.) -> imx7d_enet_clk_sel (section: .init.text)

Drop the inline keyword (which does not guarantee inlining) and replace
it with __init, as imx7d_enet_init() is only called from __init code,
which clears up the warning.

Link: 6b11573b8c [1]
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
2024-09-01 15:36:35 +08:00
Fabio Estevam
9c26327ee7 ARM: mach-imx: imx6sx: Remove Ethernet refclock setting
The Ethernet refclock configuration is board specific and should
not be harcoded in machine code.

Remove it to align with the imx6ul commit e87f3be1c7 ("ARM: mach-imx:
imx6ul: remove not optional ethernet refclock overwrite").

Clearing bits 13 and 17 of GPR1 is the POR values, so this change
does not affect existing boards in mainline.

Tested on imx6sx-udoo-neo and imx6sx-sdb boards.

Signed-off-by: Fabio Estevam <festevam@denx.de>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
2024-08-05 15:26:30 +08:00
Jonathan Cameron
6eaa8431b3 ARM: imx: Assign parents for mmdc event_source devices
Currently the PMU device appears directly under /sys/devices/
Only root busses should appear there, so instead assign the pmu->dev
parent to be the platform device.

Link: https://lore.kernel.org/linux-cxl/ZCLI9A40PJsyqAmq@kroah.com/
Cc: Shawn Guo <shawnguo@kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
2024-04-22 13:41:58 +08:00
Christophe JAILLET
0d04e84db7 ARM: imx: Remove usage of the deprecated ida_simple_xx() API
ida_alloc() and ida_free() should be preferred to the deprecated
ida_simple_get() and ida_simple_remove().

This is less verbose.

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
2024-02-05 17:23:28 +08:00
Linus Torvalds
fb249b275c ARM: SoC code changes for 6.8
There are two notable changes this time:
 
 - Andrew Davis adds a arch/arm/Kconfig.platforms file to simplify
   the platforms that have no code except their Kconfig file
 
 - Linux Walleij removes support for the ARM11MPCore CPU in
   the versatile/realview platform. Since this is the last
   remaining one after removing ox820, some core code can go
   as well.
 
 The other changes are minor cleanups and bugfixes.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmWeu8YACgkQYKtH/8kJ
 Uic8sBAA0hVnAUKaD9gAQaXCnKTuIRn4dRbklbbr3JLkvUQwBYI369edwhORHJ+R
 6IWgezQO8fEmALNXB3AwJS4kO4U7hOzHKUMOdFLePrK3FKVw56VCwZQ+4UMNRMe1
 wZSWT56AzL30TASl3aI4Zbf+dIRqhJcOLYysIZcEIWvTZQE4p0FQShZDpPdlDS40
 lTaA5Jd/G7C2yyYJs60SpMR4YrwaVZ6AfrTDYGalXBFhu4L6oU2I7nVWWUN0JEzf
 ngzSiGLRbqp9Ovt9oi0TxtzxOKdoPyz/nPpwBHFmjy2rrRmnNwC5rPR8KYzCu9wD
 RNlumShPNznW/7cykKiQ/SpeJwHkZ912D3a2ijrv/zmyyGIRK9j5wsyzbaElYag9
 U2VuexzeBjeoBth8Dd3WUR75EFuQTjhajqnfO4Xaa196VzIDo7yy06u4/SIcnRWK
 YJgiixl5Pt9MCfiugACZQjknla4GkedfDP/XARtWPuedTx2y2QC74cbRl+3yNtWc
 KXmQPki6zGrrcYxPJV4uDybhkX0eDI1A3Q7CanBbIIe6fyFbbdKA05SsfErDgqHu
 WGVMlS1+cB+kuylmVmo6GNwY4J/08es7bWB7Xwoubc7mzgU4/XSyPVGvu9yQVEc4
 q+DKaFDFIahgNXttbZw5X2kOSRkZ790kS4NDsKkDVCKOpa2iUEg=
 =9EN/
 -----END PGP SIGNATURE-----

Merge tag 'soc-arm-6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc

Pull ARM SoC code updates from Arnd Bergmann:
 "There are two notable changes this time:

   - add a arch/arm/Kconfig.platforms file to simplify the platforms
     that have no code except their Kconfig file (Andrew Davis)

   - remove support for the ARM11MPCore CPU in the versatile/realview
     platform. Since this is the last remaining one after removing
     ox820, some core code can go as well (Linus Walleij)

  The other changes are minor cleanups and bugfixes"

* tag 'soc-arm-6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc:
  ARM: davinci: always select CONFIG_CPU_ARM926T
  soc: pxa: ssp: fix casts
  ARM: debug: fix DEBUG_UNCOMPRESS help for !MULTIPLATFORM
  ARM: MAINTAINERS: drop empty entries for removed boards
  ARM: Delete ARM11MPCore perf leftovers
  ARM: mach-nspire: Rework support and directory structure
  ARM: mach-sunplus: Rework support and directory structure
  ARM: mach-airoha: Rework support and directory structure
  ARM: mach-moxart: Move MOXA ART support into Kconfig.platforms
  ARM: mach-uniphier: Move Socionext UniPhier support into Kconfig.platforms
  ARM: mach-rda: Move RDA Micro support into Kconfig.platforms
  ARM: mach-asm9260: Move ASM9260 support into Kconfig.platforms
  ARM: Kconfig: move platform selection into its own Kconfig file
  ARM: Delete ARM11MPCore (ARM11 ARMv6K SMP) support
  MAINTAINERS: add Marvell MBus driver to Marvell EBU SoCs support
  ARM: mxs: Do not search for "fsl,clkctrl"
  ARM: imx: Use device_get_match_data()
  MAINTAINERS: add omap bus drivers to OMAP2+ SUPPORT
  ARM: at91: pm: set soc_pm.data.mode in at91_pm_secure_init()
2024-01-11 11:42:53 -08:00
Kunwu Chan
1c2b1049af ARM: imx: Check return value of devm_kasprintf in imx_mmdc_perf_init
devm_kasprintf() returns a pointer to dynamically allocated memory
which can be NULL upon failure. Ensure the allocation was successful
by checking the pointer validity.

Release the id allocated in 'mmdc_pmu_init' when 'devm_kasprintf'
return NULL

Suggested-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
Fixes: e76bdfd740 ("ARM: imx: Added perf functionality to mmdc driver")
Signed-off-by: Kunwu Chan <chentao@kylinos.cn>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
2023-12-06 13:24:26 +08:00
Rob Herring
d99cfab43c ARM: imx: Use device_get_match_data()
Use preferred device_get_match_data() instead of of_match_device() to
get the driver match data. With this, adjust the includes to explicitly
include the correct headers.

Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
2023-12-06 09:22:14 +08:00
Rob Herring
66ba9c05fc ARM: imx: Drop unused includes
Several includes are not needed, so drop them.

of_platform.h (for now) implicitly includes platform_device.h and of.h, so
add explicit includes of those as needed.

Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
2023-07-19 15:28:44 +08:00
Arnd Bergmann
5692520a04
ARM: imx: add missing include
imx25_pm_init() is declared in common.h but this is not included
before its definition:

arch/arm/mach-imx/pm-imx25.c:31:13: error: no previous prototype for 'imx25_pm_init'

Link: https://lore.kernel.org/r/20230516153109.514251-5-arnd@kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-05-26 13:31:37 +02:00
Arnd Bergmann
a8739ac163 i.MX SoC changes for 6.4:
- A couple of changes from Oleksij Rempel which make it possible
   to configure Ethernet refclock from device tree.
 - Use common DT helpers to test DT property presence and read boolean
   properties.
 -----BEGIN PGP SIGNATURE-----
 
 iQFIBAABCgAyFiEEFmJXigPl4LoGSz08UFdYWoewfM4FAmQxHpoUHHNoYXduZ3Vv
 QGtlcm5lbC5vcmcACgkQUFdYWoewfM7V+AgArHo+ztgKv4vCde0GanzBpRmxdJRd
 oE/DJzIXgbWM4yajJm25x7LQV02atxU2+ssw17/x/Ac2xMXg6NPkBrqXlyylbJQG
 +a8k/qX7pBipM3vjlIxJGBf3+BNCYDP/QPRemSQzmOY8kydGfympT0Ck/kuWsEca
 FsAe77W4WpcEBQcB/dj5D33K+kr6bkkEwm1Ip07taR1KFUpFNB3FV7CD8rXa1LHn
 SyFxk5SfdQZhuCArwZwUQjc6ZxJInECG8PBqfMSGOX/ueoByAY5I4GHB4GWRv0BD
 j7N2C/Eg9hvbKWJ+ErlPuqB/H2gVhncAYIwHzdlKyZTN3jN/ztuQ7JQhTg==
 =MjV8
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmQ5QTMACgkQYKtH/8kJ
 UidRzQ//d5rDB1e9SnXYHaStyDeJh/41nGL6PvAZYEWeejpnwT64Yu9UC0dNeU9g
 95LMsXYXwacxOeWby42u7e30Gt3KmPWWSNHGEczTceZjgcN8rAx6sbPSBWZJ+5k5
 wpyZBL/P2pNSEqZqLkg31UPIfWo/XZ0PIG1iZdjj1UCgeFkUb8dTXO3jMbKka4x0
 TNdof1aqLzGvtMcyiwY8BprW//NwDLo9wXWbhQOv00n5EhL2gBDnqrHYPm58H5AS
 uMMIYnu0+4VdH93ZHFQW5uL4aiKaaPA1yWHrnZ4H5oEMBAmqkyb/5VKfH56X7UaP
 XOG2dX5bL3CxQ4/DHTt58mjimDDfB9tMoCDyeRUHl+BZQ7QwAZaq9kCgK7smdhK0
 aEcSXw/yUXZFBU3gOqVdJFq++zpUR7ntnzgXABUAhYWch1dKWwW/uuCQ3YhDsB6U
 WO8nhDeeSl91/vnKCPGPIIZ3uF7FEHpAgK9Ork8lOmROHQtt33kDpaVemp9Ujxg2
 slEzaU9RYL07AJRlsWUrE5glCxixPyDyRS0URc5bh+dWG+X9m+HyUc7sPR57ESnS
 J62yEbk/3ZpH/O4op5GgciCIijqt5ZtAdmHA/UgNXFDMhrIU/8u982GwgPjvrLnR
 y5dwH1T9HYkqDpg3MpcQzCg+otHTeo8jxmLYwCAjRafFfBq0CZM=
 =G9TP
 -----END PGP SIGNATURE-----

Merge tag 'imx-soc-6.4' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into soc/arm

i.MX SoC changes for 6.4:

- A couple of changes from Oleksij Rempel which make it possible
  to configure Ethernet refclock from device tree.
- Use common DT helpers to test DT property presence and read boolean
  properties.

* tag 'imx-soc-6.4' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux:
  ARM: imx: Use of_property_read_bool() for boolean properties
  ARM: mxs: Use of_property_present() for testing DT property presence
  ARM: mach-imx: imx6ul: remove not optional ethernet refclock overwrite
  ARM: imx6q: skip ethernet refclock reconfiguration if enet_clk_ref is present

Link: https://lore.kernel.org/r/20230408101928.280271-2-shawnguo@kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-04-14 14:04:03 +02:00
Uwe Kleine-König
74a5b94b62
ARM: Convert to platform remove callback returning void
The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is (mostly) ignored
and this typically results in resource leaks. To improve here there is a
quest to make the remove callback return void. In the first step of this
quest all drivers are converted to .remove_new() which already returns
void.

Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.

Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Shawn Guo <shawnguo@kernel.org> # for imx/mmdc
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Link: https://lore.kernel.org/r/20230314103225.2787101-1-u.kleine-koenig@pengutronix.de
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-03-17 16:03:57 +01:00
Rob Herring
614bef7e27 ARM: imx: Use of_property_read_bool() for boolean properties
It is preferred to use typed property access functions (i.e.
of_property_read_<type> functions) rather than low-level
of_get_property/of_find_property functions for reading properties.
Convert reading boolean properties to to of_property_read_bool().

Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
2023-03-14 15:06:00 +08:00
Oleksij Rempel
e87f3be1c7 ARM: mach-imx: imx6ul: remove not optional ethernet refclock overwrite
Ethernet refclock direction is board specific and should be configurable
by devicetree. In fact there are board not working with this defaults,
which will be fixed by separate patch.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
2023-03-06 09:59:19 +08:00
Oleksij Rempel
5e16360a01 ARM: imx6q: skip ethernet refclock reconfiguration if enet_clk_ref is present
Current mach-imx6q code has following logic:
- if ptp clock of the ethernet controller node is attached to the SoC
  internal enet_ref clock, then we configure RMII reference clock pin as
  output by setting IOMUXC_GPR1 BIT(21).
  In this case - MAC (SoC) is the clock provider, PHY is the clock consumer.
- if ptp clock of the ethernet controller node is not attached to the
  enet_ref clock, then we configure RMII reference clock pin as input by
  clearing IOMUXC_GPR1 BIT(21).
  In this case - PHY is the clock provider, MAC is the clock consumer.

According to the Freescale MX6SDL ReferenceManual v4, IOMUXC_GPR1 BIT(21)
(page 2033) this configuration bit is not related to the PTP (IEEE1588)
clock:
21 ENET_CLK_SEL - choose enet reference clk mode:
   0 - get enet tx reference clk from pad (external OSC for both external
       PHY and Internal Controller)
   1 - get enet tx reference clk from internal clock from anatop (loopback
       through pad), this clock also sent out to external PHY.

According to the Documentation/devicetree/bindings/net/fsl,fec.yaml:
      The "ptp"(option), for IEEE1588 timer clock that requires the clock.
      The "enet_clk_ref"(option), for MAC transmit/receiver reference clock
      like RGMII TXC clock or RMII reference clock. It depends on board
      design, the clock is required if RGMII TXC and RMII reference clock
      source from SOC internal PLL.
      The "enet_out"(option), output clock for external device, like supply
      clock for PHY. The clock is required if PHY clock source from SOC.

We can see, that "enet_clk_ref" clock is the best fit for this purpose.
Other properties like "ptp" is designed for IEEE1588 and "enet_out" do
not have real functionality within imx related clock infrastructure.

Since the "enet_clk_ref" is not used by the imx6qdl devicetrees, we can
use it as indicator of potentially properly configured DT. At same time
we can keep ptp clock based logic as the fallback for old DTs.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
2023-03-06 09:57:02 +08:00
Linus Torvalds
1f2d9ffc7a Scheduler updates in this cycle are:
- Improve the scalability of the CFS bandwidth unthrottling logic
    with large number of CPUs.
 
  - Fix & rework various cpuidle routines, simplify interaction with
    the generic scheduler code. Add __cpuidle methods as noinstr to
    objtool's noinstr detection and fix boatloads of cpuidle bugs & quirks.
 
  - Add new ABI: introduce MEMBARRIER_CMD_GET_REGISTRATIONS,
    to query previously issued registrations.
 
  - Limit scheduler slice duration to the sysctl_sched_latency period,
    to improve scheduling granularity with a large number of SCHED_IDLE
    tasks.
 
  - Debuggability enhancement on sys_exit(): warn about disabled IRQs,
    but also enable them to prevent a cascade of followup problems and
    repeat warnings.
 
  - Fix the rescheduling logic in prio_changed_dl().
 
  - Micro-optimize cpufreq and sched-util methods.
 
  - Micro-optimize ttwu_runnable()
 
  - Micro-optimize the idle-scanning in update_numa_stats(),
    select_idle_capacity() and steal_cookie_task().
 
  - Update the RSEQ code & self-tests
 
  - Constify various scheduler methods
 
  - Remove unused methods
 
  - Refine __init tags
 
  - Documentation updates
 
  - ... Misc other cleanups, fixes
 
 Signed-off-by: Ingo Molnar <mingo@kernel.org>
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCgAvFiEEBpT5eoXrXCwVQwEKEnMQ0APhK1gFAmPzbJwRHG1pbmdvQGtl
 cm5lbC5vcmcACgkQEnMQ0APhK1iIvA//ZcEaB8Z6ChLRQjM+bsaudKJu3pdLQbPK
 iYbP8Da+LsAfxbEfYuGV3m+jIp0LlBOtsI/EezxQrXV+V7FvNyAX9Y00eEu/zlj8
 7Jn3LMy/DBYTwH7LwVdcU0MyIVI8ZPc6WNnkx0LOtGZn8n+qfHPSDzcP3CW+a5AV
 UvllPYpYyEmsX0Eby7CF4Ue8mSmbViw/xR3rNr8ZSve0c25XzKabw8O9kE3jiHxP
 d/zERJoAYeDyYUEuZqhfn5dTlB4an4IjNEkAfRE5SQ09RA8Gkxsa5Ar8gob9e9M1
 eQsdd4/bdhnrkM8L5qDZczqmgCTZ2bukQrxkBXhRDhLgoFxwAn77b+2ZjmIW3Lae
 AyGqRcDSg1q2oxaYm5ZiuO/t26aDOZu9vPHyHRDGt95EGbZlrp+GgeePyfCigJYz
 UmPdZAAcHdSymnnnlcvdG37WVvaVkpgWZzd8LbtBi23QR+Zc4WQ2IlgnUS5WKNNf
 VOBcAcP6E1IslDotZDQCc2dPFFQoQQEssVooyUc5oMytm7BsvxXLOeHG+Ncu/8uc
 H+U8Qn8jnqTxJbC5hkWQIJlhVKCq2FJrHxxySYTKROfUNcDgCmxboFeAcXTCIU1K
 T0S+sdoTS/CvtLklRkG0j6B8N4N98mOd9cFwUV3tX+/gMLMep3hCQs5L76JagvC5
 skkQXoONNaM=
 =l1nN
 -----END PGP SIGNATURE-----

Merge tag 'sched-core-2023-02-20' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull scheduler updates from Ingo Molnar:

 - Improve the scalability of the CFS bandwidth unthrottling logic with
   large number of CPUs.

 - Fix & rework various cpuidle routines, simplify interaction with the
   generic scheduler code. Add __cpuidle methods as noinstr to objtool's
   noinstr detection and fix boatloads of cpuidle bugs & quirks.

 - Add new ABI: introduce MEMBARRIER_CMD_GET_REGISTRATIONS, to query
   previously issued registrations.

 - Limit scheduler slice duration to the sysctl_sched_latency period, to
   improve scheduling granularity with a large number of SCHED_IDLE
   tasks.

 - Debuggability enhancement on sys_exit(): warn about disabled IRQs,
   but also enable them to prevent a cascade of followup problems and
   repeat warnings.

 - Fix the rescheduling logic in prio_changed_dl().

 - Micro-optimize cpufreq and sched-util methods.

 - Micro-optimize ttwu_runnable()

 - Micro-optimize the idle-scanning in update_numa_stats(),
   select_idle_capacity() and steal_cookie_task().

 - Update the RSEQ code & self-tests

 - Constify various scheduler methods

 - Remove unused methods

 - Refine __init tags

 - Documentation updates

 - Misc other cleanups, fixes

* tag 'sched-core-2023-02-20' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (110 commits)
  sched/rt: pick_next_rt_entity(): check list_entry
  sched/deadline: Add more reschedule cases to prio_changed_dl()
  sched/fair: sanitize vruntime of entity being placed
  sched/fair: Remove capacity inversion detection
  sched/fair: unlink misfit task from cpu overutilized
  objtool: mem*() are not uaccess safe
  cpuidle: Fix poll_idle() noinstr annotation
  sched/clock: Make local_clock() noinstr
  sched/clock/x86: Mark sched_clock() noinstr
  x86/pvclock: Improve atomic update of last_value in pvclock_clocksource_read()
  x86/atomics: Always inline arch_atomic64*()
  cpuidle: tracing, preempt: Squash _rcuidle tracing
  cpuidle: tracing: Warn about !rcu_is_watching()
  cpuidle: lib/bug: Disable rcu_is_watching() during WARN/BUG
  cpuidle: drivers: firmware: psci: Dont instrument suspend code
  KVM: selftests: Fix build of rseq test
  exit: Detect and fix irq disabled state in oops
  cpuidle, arm64: Fix the ARM64 cpuidle logic
  cpuidle: mvebu: Fix duplicate flags assignment
  sched/fair: Limit sched slice duration
  ...
2023-02-20 17:41:08 -08:00
Linus Torvalds
b32c6e029c ARM: SoC updates for 6.3
The majority of the changes are for the OMAP2 platform, mostly
 removing some dead code that got left behind from previous cleanups.
 
 Aside from that, there are very minor updates and correctness fixes for
 Zynq, i.MX, Samsung, Broadcom, AT91, ep93xx, and OMAP1.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmPtUJwACgkQmmx57+YA
 GNkkqhAAqKN4MyRJgMesZD0SbXrmPCJC7FwLAfr47GdhhanR0sEjLeqtjug4mi1C
 E24ivgegIpVuywOtzMUgGrX37J+mNNrHz5oxF4GORlPPIn4zHwYgaOdftllxkFis
 K1Jk/bZp8PyAJcWDzPJ0Cy29uNypO8lUmZgcyAPBH66O2nSi94IMvjzmEz+uwaI/
 QdQyCo4xY88SW0Zht48PmqwLDTNmJ/mC8IwI4Km92SEn2qO/gn9D1dVKY2sVAFZh
 LaU2v0znYDlQ6rrdkBby3cBj25Q9KzOr62wQ18/AAwDcHuLtVf2aXa94pByB5vDl
 JH2fFQf/eCt/5IXfFrB+iOXGleX2LA0FlMwMuZzvwV0obJPkhia3ismLds1c39uO
 dcaC3mU5D7VSEuq+q4eSL87aCHxIH/BO9m9DJycNG6n+Bk46eWKne2gMIBfbunf3
 gwtJlrWl7FzpJdvc/xbdbILlUaBvSUsZorRcVraQbK554zOVTJRXmQpz4Nz8nfSP
 olNmeqNg8jRK9rDHWUYJxPgp4kJ/bHXIdacinVYkkXZwqmd26yDNkUSkmBGvUDvP
 UghiV1R4snjHRG9syxZexyHO9Tz/7zNxOwXGcl5Z8KNg6b9xi8kKLRkd4oIAHSjs
 /x5OBPkwSdauzqFJV71qns3HnEazAksUe7fxc1DPCPNI1kpfQtY=
 =4Xcx
 -----END PGP SIGNATURE-----

Merge tag 'arm-soc-6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc

Pull ARM SoC updates from Arnd Bergmann:
 "The majority of the changes are for the OMAP2 platform, mostly
  removing some dead code that got left behind from previous cleanups.

  Aside from that, there are very minor updates and correctness fixes
  for Zynq, i.MX, Samsung, Broadcom, AT91, ep93xx, and OMAP1"

* tag 'arm-soc-6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (26 commits)
  dt-bindings: soc: samsung: exynos-pmu: allow phys as child
  ARM: imx: mach-imx6ul: add imx6ulz support
  ARM: imx: Call ida_simple_remove() for ida_simple_get
  arm64: drop redundant "ARMv8" from Kconfig option title
  ARM: ep93xx: Convert to use descriptors for GPIO LEDs
  ARM: s3c: fix s3c64xx_set_timer_source prototype
  ARM: OMAP2+: Fix spelling typos in comment
  ARM: OMAP2+: Remove unneeded #include <linux/pinctrl/machine.h>
  ARM: OMAP2+: Remove unneeded #include <linux/pinctrl/pinmux.h>
  ARM: OMAP1: call platform_device_put() in error case in omap1_dm_timer_init()
  ARM: BCM63xx: remove useless goto statement
  ARM: omap2: make functions static
  ARM: omap2: remove unused omap2_pm_init
  ARM: omap2: remove unused declarations
  ARM: omap2: remove unused functions
  ARM: omap2: smartreflex: remove on_init control
  ARM: omap2: remove APLL control
  ARM: omap2: simplify clock2xxx header
  ARM: omap2: remove unused omap_hwmod_reset.c
  ARM: omap2: remove unused headers
  ...
2023-02-20 15:36:37 -08:00
Ingo Molnar
57a30218fa Linux 6.2-rc6
-----BEGIN PGP SIGNATURE-----
 
 iQFSBAABCAA8FiEEq68RxlopcLEwq+PEeb4+QwBBGIYFAmPW7E8eHHRvcnZhbGRz
 QGxpbnV4LWZvdW5kYXRpb24ub3JnAAoJEHm+PkMAQRiGf7MIAI0JnHN9WvtEukSZ
 E6j6+cEGWxsvD6q0g3GPolaKOCw7hlv0pWcFJFcUAt0jebspMdxV2oUGJ8RYW7Lg
 nCcHvEVswGKLAQtQSWw52qotW6fUfMPsNYYB5l31sm1sKH4Cgss0W7l2HxO/1LvG
 TSeNHX53vNAZ8pVnFYEWCSXC9bzrmU/VALF2EV00cdICmfvjlgkELGXoLKJJWzUp
 s63fBHYGGURSgwIWOKStoO6HNo0j/F/wcSMx8leY8qDUtVKHj4v24EvSgxUSDBER
 ch3LiSQ6qf4sw/z7pqruKFthKOrlNmcc0phjiES0xwwGiNhLv0z3rAhc4OM2cgYh
 SDc/Y/c=
 =zpaD
 -----END PGP SIGNATURE-----

Merge tag 'v6.2-rc6' into sched/core, to pick up fixes

Pick up fixes before merging another batch of cpuidle updates.

Signed-off-by: Ingo Molnar <mingo@kernel.org>
2023-01-31 15:01:20 +01:00
Pierluigi Passaro
7c355b572e ARM: imx: mach-imx6ul: add imx6ulz support
imx6ulz is derived SoC from imx6ull.
Currently, the boards based on imx6ulz are correctly recognized only if
the compatible includes "fsl,imx6ull", while "fsl,imx6ulz" is ignored.

Signed-off-by: Pierluigi Passaro <pierluigi.p@variscite.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
2023-01-26 19:25:34 +08:00
Angus Chen
ebeb49f43c ARM: imx: Call ida_simple_remove() for ida_simple_get
The function call ida_simple_get maybe fail,we should deal with it.
And if ida_simple_get success ,it need to call ida_simple_remove also.
BTW,devm_kasprintf can handle id is zero for consistency.

Fixes: e76bdfd740 ("ARM: imx: Added perf functionality to mmdc driver")
Signed-off-by: Angus Chen <angus.chen@jaguarmicro.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
2023-01-26 07:55:53 +08:00
Peter Zijlstra
26388a7c35 cpuidle,arch: Mark all regular cpuidle_state:: Enter methods __cpuidle
For all cpuidle drivers that do not use CPUIDLE_FLAG_RCU_IDLE (iow,
the simple ones) make sure all the functions are marked __cpuidle.

( due to lack of noinstr validation on these platforms it is entirely
  possible this isn't complete )

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lore.kernel.org/r/20230112195542.335211484@infradead.org
2023-01-13 11:48:18 +01:00
Peter Zijlstra
69e26b4f43 cpuidle, arch: Mark all ct_cpuidle_enter() callers __cpuidle
For all cpuidle drivers that use CPUIDLE_FLAG_RCU_IDLE, ensure that
all functions that call ct_cpuidle_enter() are marked __cpuidle.

( due to lack of noinstr validation on these platforms it is entirely
  possible this isn't complete )

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lore.kernel.org/r/20230112195542.274096325@infradead.org
2023-01-13 11:48:17 +01:00
Peter Zijlstra
a01353cf18 cpuidle: Fix ct_idle_*() usage
The whole disable-RCU, enable-IRQS dance is very intricate since
changing IRQ state is traced, which depends on RCU.

Add two helpers for the cpuidle case that mirror the entry code:

  ct_cpuidle_enter()
  ct_cpuidle_exit()

And fix all the cases where the enter/exit dance was buggy.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Tested-by: Tony Lindgren <tony@atomide.com>
Tested-by: Ulf Hansson <ulf.hansson@linaro.org>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Frederic Weisbecker <frederic@kernel.org>
Link: https://lore.kernel.org/r/20230112195540.130014793@infradead.org
2023-01-13 11:48:15 +01:00
Peter Zijlstra
b3f46658ce cpuidle, ARM/imx6: Push RCU-idle into driver
Doing RCU-idle outside the driver, only to then temporarily enable it
again, at least twice, before going idle is suboptimal.

Notably both cpu_pm_enter() and cpu_cluster_pm_enter() implicity
re-enable RCU.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Tested-by: Tony Lindgren <tony@atomide.com>
Tested-by: Ulf Hansson <ulf.hansson@linaro.org>
Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Link: https://lore.kernel.org/r/20230112195539.821714572@infradead.org
2023-01-13 11:46:40 +01:00