Commit Graph

207432 Commits

Author SHA1 Message Date
Michael Ellerman
111bcb3738 powerpc/64s/radix: Fix RWX mapping with relocated kernel
If a relocatable kernel is loaded at a non-zero address and told not to
relocate to zero (kdump or RELOCATABLE_TEST), the mapping of the
interrupt code at zero is left with RWX permissions.

That is a security weakness, and leads to a warning at boot if
CONFIG_DEBUG_WX is enabled:

  powerpc/mm: Found insecure W+X mapping at address 00000000056435bc/0xc000000000000000
  WARNING: CPU: 1 PID: 1 at arch/powerpc/mm/ptdump/ptdump.c:193 note_page+0x484/0x4c0
  CPU: 1 PID: 1 Comm: swapper/0 Not tainted 6.2.0-rc1-00001-g8ae8e98aea82-dirty #175
  Hardware name: IBM pSeries (emulated by qemu) POWER9 (raw) 0x4e1202 0xf000005 of:SLOF,git-dd0dca hv:linux,kvm pSeries
  NIP:  c0000000004a1c34 LR: c0000000004a1c30 CTR: 0000000000000000
  REGS: c000000003503770 TRAP: 0700   Not tainted  (6.2.0-rc1-00001-g8ae8e98aea82-dirty)
  MSR:  8000000002029033 <SF,VEC,EE,ME,IR,DR,RI,LE>  CR: 24000220  XER: 00000000
  CFAR: c000000000545a58 IRQMASK: 0
  ...
  NIP note_page+0x484/0x4c0
  LR  note_page+0x480/0x4c0
  Call Trace:
    note_page+0x480/0x4c0 (unreliable)
    ptdump_pmd_entry+0xc8/0x100
    walk_pgd_range+0x618/0xab0
    walk_page_range_novma+0x74/0xc0
    ptdump_walk_pgd+0x98/0x170
    ptdump_check_wx+0x94/0x100
    mark_rodata_ro+0x30/0x70
    kernel_init+0x78/0x1a0
    ret_from_kernel_thread+0x5c/0x64

The fix has two parts. Firstly the pages from zero up to the end of
interrupts need to be marked read-only, so that they are left with R-X
permissions. Secondly the mapping logic needs to be taught to ensure
there is a page boundary at the end of the interrupt region, so that the
permission change only applies to the interrupt text, and not the region
following it.

Fixes: c55d7b5e64 ("powerpc: Remove STRICT_KERNEL_RWX incompatibility with RELOCATABLE")
Reported-by: Sachin Sant <sachinp@linux.ibm.com>
Tested-by: Sachin Sant <sachinp@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20230110124753.1325426-2-mpe@ellerman.id.au
2023-01-31 21:37:39 +11:00
Michael Ellerman
98d0219e04 powerpc/64s/radix: Fix crash with unaligned relocated kernel
If a relocatable kernel is loaded at an address that is not 2MB aligned
and told not to relocate to zero, the kernel can crash due to
mark_rodata_ro() incorrectly changing some read-write data to read-only.

Scenarios where the misalignment can occur are when the kernel is
loaded by kdump or using the RELOCATABLE_TEST config option.

Example crash with the kernel loaded at 5MB:

  Run /sbin/init as init process
  BUG: Unable to handle kernel data access on write at 0xc000000000452000
  Faulting instruction address: 0xc0000000005b6730
  Oops: Kernel access of bad area, sig: 11 [#1]
  LE PAGE_SIZE=64K MMU=Radix SMP NR_CPUS=2048 NUMA pSeries
  CPU: 1 PID: 1 Comm: init Not tainted 6.2.0-rc1-00011-g349188be4841 #166
  Hardware name: IBM pSeries (emulated by qemu) POWER9 (raw) 0x4e1202 0xf000005 of:SLOF,git-5b4c5a hv:linux,kvm pSeries
  NIP:  c0000000005b6730 LR: c000000000ae9ab8 CTR: 0000000000000380
  REGS: c000000004503250 TRAP: 0300   Not tainted  (6.2.0-rc1-00011-g349188be4841)
  MSR:  8000000000009033 <SF,EE,ME,IR,DR,RI,LE>  CR: 44288480  XER: 00000000
  CFAR: c0000000005b66ec DAR: c000000000452000 DSISR: 0a000000 IRQMASK: 0
  ...
  NIP memset+0x68/0x104
  LR  zero_user_segments.constprop.0+0xa8/0xf0
  Call Trace:
    ext4_mpage_readpages+0x7f8/0x830
    ext4_readahead+0x48/0x60
    read_pages+0xb8/0x380
    page_cache_ra_unbounded+0x19c/0x250
    filemap_fault+0x58c/0xae0
    __do_fault+0x60/0x100
    __handle_mm_fault+0x1230/0x1a40
    handle_mm_fault+0x120/0x300
    ___do_page_fault+0x20c/0xa80
    do_page_fault+0x30/0xc0
    data_access_common_virt+0x210/0x220

This happens because mark_rodata_ro() tries to change permissions on the
range _stext..__end_rodata, but _stext sits in the middle of the 2MB
page from 4MB to 6MB:

  radix-mmu: Mapped 0x0000000000000000-0x0000000000200000 with 2.00 MiB pages (exec)
  radix-mmu: Mapped 0x0000000000200000-0x0000000000400000 with 2.00 MiB pages
  radix-mmu: Mapped 0x0000000000400000-0x0000000002400000 with 2.00 MiB pages (exec)

The logic that changes the permissions assumes the linear mapping was
split correctly at boot, so it marks the entire 2MB page read-only. That
leads to the write fault above.

To fix it, the boot time mapping logic needs to consider that if the
kernel is running at a non-zero address then _stext is a boundary where
it must split the mapping.

That leads to the mapping being split correctly, allowing the rodata
permission change to take happen correctly, with no spillover:

  radix-mmu: Mapped 0x0000000000000000-0x0000000000200000 with 2.00 MiB pages (exec)
  radix-mmu: Mapped 0x0000000000200000-0x0000000000400000 with 2.00 MiB pages
  radix-mmu: Mapped 0x0000000000400000-0x0000000000500000 with 64.0 KiB pages
  radix-mmu: Mapped 0x0000000000500000-0x0000000000600000 with 64.0 KiB pages (exec)
  radix-mmu: Mapped 0x0000000000600000-0x0000000002400000 with 2.00 MiB pages (exec)

If the kernel is loaded at a 2MB aligned address, the mapping continues
to use 2MB pages as before:

  radix-mmu: Mapped 0x0000000000000000-0x0000000000200000 with 2.00 MiB pages (exec)
  radix-mmu: Mapped 0x0000000000200000-0x0000000000400000 with 2.00 MiB pages
  radix-mmu: Mapped 0x0000000000400000-0x0000000002c00000 with 2.00 MiB pages (exec)
  radix-mmu: Mapped 0x0000000002c00000-0x0000000100000000 with 2.00 MiB pages

Fixes: c55d7b5e64 ("powerpc: Remove STRICT_KERNEL_RWX incompatibility with RELOCATABLE")
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20230110124753.1325426-1-mpe@ellerman.id.au
2023-01-31 21:37:39 +11:00
Michael Ellerman
7294194b47 powerpc/kexec_file: Fix division by zero in extra size estimation
In kexec_extra_fdt_size_ppc64() there's logic to estimate how much
extra space will be needed in the device tree for some memory related
properties.

That logic uses the size of RAM divided by drmem_lmb_size() to do the
estimation. However drmem_lmb_size() can be zero if the machine has no
hotpluggable memory configured, which is the case when booting with qemu
and no maxmem=x parameter is passed (the default).

The division by zero is reported by UBSAN, and can also lead to an
overflow and a warning from kvmalloc, and kdump kernel loading fails:

  WARNING: CPU: 0 PID: 133 at mm/util.c:596 kvmalloc_node+0x15c/0x160
  Modules linked in:
  CPU: 0 PID: 133 Comm: kexec Not tainted 6.2.0-rc5-03455-g07358bd97810 #223
  Hardware name: IBM pSeries (emulated by qemu) POWER9 (raw) 0x4e1200 0xf000005 of:SLOF,git-dd0dca pSeries
  NIP:  c00000000041ff4c LR: c00000000041fe58 CTR: 0000000000000000
  REGS: c0000000096ef750 TRAP: 0700   Not tainted  (6.2.0-rc5-03455-g07358bd97810)
  MSR:  800000000282b033 <SF,VEC,VSX,EE,FP,ME,IR,DR,RI,LE>  CR: 24248242  XER: 2004011e
  CFAR: c00000000041fed0 IRQMASK: 0
  ...
  NIP kvmalloc_node+0x15c/0x160
  LR  kvmalloc_node+0x68/0x160
  Call Trace:
    kvmalloc_node+0x68/0x160 (unreliable)
    of_kexec_alloc_and_setup_fdt+0xb8/0x7d0
    elf64_load+0x25c/0x4a0
    kexec_image_load_default+0x58/0x80
    sys_kexec_file_load+0x5c0/0x920
    system_call_exception+0x128/0x330
    system_call_vectored_common+0x15c/0x2ec

To fix it, skip the calculation if drmem_lmb_size() is zero.

Fixes: 2377c92e37 ("powerpc/kexec_file: fix FDT size estimation for kdump kernel")
Cc: stable@vger.kernel.org # v5.12+
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20230130014707.541110-1-mpe@ellerman.id.au
2023-01-31 21:37:36 +11:00
Nathan Chancellor
5eb6e28043 ARM: 9289/1: Allow pre-ARMv5 builds with ld.lld 16.0.0 and newer
Commit 6a7ee50f8f ("ARM: disallow pre-ARMv5 builds with ld.lld")
prevented v4 or v4t kernels when ld.lld will link the kernel due to
inserting unsupported blx instructions.

ld.lld has been fixed in current main (16.0.0) to avoid inserting these
instructions by inserting position independent thunks instead. Allow
these configurations to be enabled when ld.lld 16.0.0 is used to link
the kernel.

Additionally, add a link to the upstream LLVM issue so that the reason
for this dependency is clearly documented.

Link: https://github.com/ClangBuiltLinux/linux/issues/964
Link: 6f9ff1beee

Suggested-by: Nick Desaulniers <ndesaulniers@google.com>
Tested-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
2023-01-31 10:18:54 +00:00
Randy Dunlap
cfb1076d15 ARM: 9288/1: Kconfigs: fix spelling & grammar
Fix spelling (reported by codespell) and grammar in Arm Kconfig files.

Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: patches@armlinux.org.uk
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
2023-01-31 10:18:54 +00:00
Arnd Bergmann
ae3147bb30 Merge tag 'imx-soc-6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into arm/soc
i.MX SoC update for 6.3:

- Call ida_simple_remove() to free up ID allocated by ida_simple_get()
  for MMDC driver.
- Add i.MX6ULZ compatible string to match table.

* tag 'imx-soc-6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux:
  ARM: imx: mach-imx6ul: add imx6ulz support
  ARM: imx: Call ida_simple_remove() for ida_simple_get

Link: https://lore.kernel.org/r/20230130023947.11780-2-shawnguo@kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-01-31 09:15:16 +01:00
Arnd Bergmann
3f0f5d224c Merge tag 'samsung-soc-6.3' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into arm/soc
Samsung mach/soc changes for v6.3

1. Correct s3c64xx_set_timer_source() prototype.
2. Re-work MIPI and DP phys as children of Exynos PMU system controller.
   This both better reflects actual device hierarchy and allows to
   remove later few warnings from dtc W=1 and dtbs_check.

* tag 'samsung-soc-6.3' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux:
  dt-bindings: soc: samsung: exynos-pmu: allow phys as child
  ARM: s3c: fix s3c64xx_set_timer_source prototype

Link: https://lore.kernel.org/r/20230129143944.5104-3-krzysztof.kozlowski@linaro.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-01-31 09:14:15 +01:00
Arnd Bergmann
521d844dc8 Merge tag 'arm-soc/for-6.3/soc' of https://github.com/Broadcom/stblinux into arm/soc
This pull request contains Broadcom ARM SoCs machine updates for 6.3,
please pull the following:

- Dario removes an useless goto in the BCM63xx SMP bring up code

* tag 'arm-soc/for-6.3/soc' of https://github.com/Broadcom/stblinux:
  ARM: BCM63xx: remove useless goto statement

Link: https://lore.kernel.org/r/20230128193849.1628945-1-f.fainelli@gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-01-31 09:13:31 +01:00
Arnd Bergmann
f6fae7ab6d Merge tag 'imx-defconfig-6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into soc/defconfig
i.MX defconfig change for 6.3:

- Drop PROVE_LOCKING option from imx_v6_v7_defconfig.
- Enable i.MX ICC and DEVFREQ driver as they are required by i.MX8MP
  boot.

* tag 'imx-defconfig-6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux:
  ARM: imx_v6_v7_defconfig: Don't enable PROVE_LOCKING
  arm64: defconfig: select i.MX ICC and DEVFREQ

Link: https://lore.kernel.org/r/20230130023947.11780-6-shawnguo@kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-01-31 09:08:26 +01:00
Arnd Bergmann
7d576289b2 Merge tag 'arm-soc/for-6.3/defconfig' of https://github.com/Broadcom/stblinux into soc/defconfig
This pull request contains Broadcom ARM SoCs defconfig updates for 6.3,
please pull the following:

- Stefan enables the necessary configuration options to make use of the
  framebuffer on Raspberry Pi devices

* tag 'arm-soc/for-6.3/defconfig' of https://github.com/Broadcom/stblinux:
  ARM: bcm2835_defconfig: Switch to SimpleDRM
  ARM: bcm2835_defconfig: Enable the framebuffer

Link: https://lore.kernel.org/r/20230128193823.1628716-1-f.fainelli@gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-01-31 09:07:50 +01:00
Arnd Bergmann
7ba26a7201 Merge tag 'sunxi-config-for-6.3-1' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux into soc/defconfig
- Enable Allwinner D1 platform and drivers

* tag 'sunxi-config-for-6.3-1' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux:
  riscv: defconfig: Enable the Allwinner D1 platform and drivers

Link: https://lore.kernel.org/r/Y9Ra7dxkfMI9Xp3F@jernej-laptop
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-01-31 09:07:19 +01:00
Jakub Kicinski
2083656bb3 sh: checksum: add missing linux/uaccess.h include
SuperH does not include uaccess.h, even tho it calls access_ok().

Fixes: 68f4eae781 ("net: checksum: drop the linux/uaccess.h include")
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Tested-by: Simon Horman <simon.horman@corigine.com>
Link: https://lore.kernel.org/r/20230128073108.1603095-1-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2023-01-30 21:04:21 -08:00
Michael Ellerman
ad53db4acb powerpc/imc-pmu: Revert nest_init_lock to being a mutex
The recent commit 76d588dddc ("powerpc/imc-pmu: Fix use of mutex in
IRQs disabled section") fixed warnings (and possible deadlocks) in the
IMC PMU driver by converting the locking to use spinlocks.

It also converted the init-time nest_init_lock to a spinlock, even
though it's not used at runtime in IRQ disabled sections or while
holding other spinlocks.

This leads to warnings such as:

  BUG: sleeping function called from invalid context at include/linux/percpu-rwsem.h:49
  in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 1, name: swapper/0
  preempt_count: 1, expected: 0
  CPU: 7 PID: 1 Comm: swapper/0 Not tainted 6.2.0-rc2-14719-gf12cd06109f4-dirty #1
  Hardware name: Mambo,Simulated-System POWER9 0x4e1203 opal:v6.6.6 PowerNV
  Call Trace:
    dump_stack_lvl+0x74/0xa8 (unreliable)
    __might_resched+0x178/0x1a0
    __cpuhp_setup_state+0x64/0x1e0
    init_imc_pmu+0xe48/0x1250
    opal_imc_counters_probe+0x30c/0x6a0
    platform_probe+0x78/0x110
    really_probe+0x104/0x420
    __driver_probe_device+0xb0/0x170
    driver_probe_device+0x58/0x180
    __driver_attach+0xd8/0x250
    bus_for_each_dev+0xb4/0x140
    driver_attach+0x34/0x50
    bus_add_driver+0x1e8/0x2d0
    driver_register+0xb4/0x1c0
    __platform_driver_register+0x38/0x50
    opal_imc_driver_init+0x2c/0x40
    do_one_initcall+0x80/0x360
    kernel_init_freeable+0x310/0x3b8
    kernel_init+0x30/0x1a0
    ret_from_kernel_thread+0x5c/0x64

Fix it by converting nest_init_lock back to a mutex, so that we can call
sleeping functions while holding it. There is no interaction between
nest_init_lock and the runtime spinlocks used by the actual PMU routines.

Fixes: 76d588dddc ("powerpc/imc-pmu: Fix use of mutex in IRQs disabled section")
Tested-by: Kajol Jain<kjain@linux.ibm.com>
Reviewed-by: Kajol Jain<kjain@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20230130014401.540543-1-mpe@ellerman.id.au
2023-01-31 11:24:17 +11:00
Arnd Bergmann
551413fe93 Merge tag 'amlogic-arm-dt-for-v6.3' of https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux into arm/dt
Amlogic ARM mach-meson changes for v6.3:
- align OPP table names with DT schema
- meson8/8b: Add more L2 (PL310) cache properties
- align LED node names with dtschema

* tag 'amlogic-arm-dt-for-v6.3' of https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux:
  ARM: dts: meson8: align OPP table names with DT schema
  ARM: dts: meson8b: Add more L2 (PL310) cache properties
  ARM: dts: meson8: Add more L2 (PL310) cache properties
  ARM: dts: meson: align LED node names with dtschema

Link: https://lore.kernel.org/r/61700737-c226-1c07-fba7-6dca896fdab4@linaro.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-01-30 23:10:36 +01:00
Arnd Bergmann
d70eec528e Merge tag 'amlogic-arm64-dt-for-v6.3' of https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux into arm/dt
Amlogic ARM64 DT changes for v6.3:
- Merge of immutable bindings branch with Reset & power domain binding
- New boards:
 - Odroid-N2L (Smaller version of Odroid-N2+)
 - BananaPi M2-Pro (Variant of BPI=M5 with on-board wifi)
 - Radxa Zero2 (New version of Radza Zero with A311D SoC)
- Add DT node for the VIPNano-QI on the A311D
- DT bindings fixups covering all SoC families
 - MAC address nodes
 - ethernet PHY node name
 - scpi & child node names
 - SD/SDIO node name
 - USB supply name
 - invalid clock-names
 - rng node name
 - rtc node name
 - ETH phy mux node name
 - button & adc keys node name
 - leds node names
 - RK818 pmic properties
- remove CPU opps below 1GHz for G12A boards, like it was done for G12B/SM1
- Fix WiFi/Bt definition around P212 & Khadas VIM1
- Add audio node to P212
- Fix FAN trip definition to Odroid-HC4
- Fix gpio-fan gpios definition
- Permit Radxa Zero OTG on USB1
- Fix VDDIO_C enable gpio by using OPEN DRAIN flag

* tag 'amlogic-arm64-dt-for-v6.3' of https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux: (43 commits)
  arm64: dts: meson: add support for Radxa Zero2
  dt-bindings: arm: amlogic: add support for Radxa Zero2
  arm64: dts: meson: add support for BananaPi M2-Pro
  dt-bindings: arm: amlogic: add support for BananaPi M2-Pro
  arm64: dts: meson: bananapi-m5: convert dts to dtsi
  arm64: dts: meson: bananapi-m5: remove redundant status from sound node
  arm64: dts: meson: bananapi-m5: switch VDDIO_C pin to OPEN_DRAIN
  arm64: dts: meson: radxa-zero: allow usb otg mode
  arm64: dts: meson-gxm-khadas-vim2: use gpio-fan matrix instead of an array
  arm64: dts: meson-g12b-odroid: Add initial support for Hardkernel ODROID-N2L
  arm64: dts: meson-g12b: move common node into new odroid.dtsi
  dt-bindings: arm: amlogic: document Odroid-N2L
  arm64: dts: amlogic: meson-sm1-odroid-hc4: fix active fan thermal trip
  arm64: dts: meson: add audio playback to S905X-P212 dts
  arm64: dts: meson: remove WiFi/BT nodes from Khadas VIM1
  arm64: dts: meson: move pwm_ef node in P212 dtsi
  arm64: dts: meson: add Broadcom WiFi to P212 dtsi
  arm64: dts: amlogic: meson-g12b-odroid-go-ultra: fix rk818 pmic properties
  arm64: dts: amlogic: meson-gxbb-kii-pro: fix led node name
  arm64: dts: amlogic: meson-gxl-s905d-phicomm-n1: fix led node name
  ...

Link: https://lore.kernel.org/r/c1641ffd-71c9-9ac9-89d9-c22da4acea10@linaro.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-01-30 23:08:40 +01:00
Arnd Bergmann
4503fc6ea3 Merge tag 'imx-dt64-6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into arm/dt
i.MX arm64 device tree change for 6.3:

- New board support: i.MX8MP Beacon Kit, Debix Model A Board,
  Verdin Yavia boards.
- Add Flexcan and ADC support for i.MX93.
- A series from Krzysztof Kozlowski to align LED node names with
  dtschema and use generic node name for rave-sp.
- Move PCIe controller clock setup from board dts to SoC dtsi.
- Add clock-cells to i.MX8MP hsio-blk-ctrl device.
- Add TMU phandle to calibration data in OCOTP for i.MX8M.
- Improve bluetooth UART on DH electronics i.MX8M Plus DHCOM.
- Drop sd-vsel-gpios from i.MX8M Verdin SoM and DHCOM SoM.
- A series from Peng Fan to improve iomuxc-gpr device for i.MX8M.
- Declare IOMMU cache-coherent page table walk feature for LS1028A and
  LS1088A.
- A few small corrections and random updates.

* tag 'imx-dt64-6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux: (50 commits)
  arm64: ls1046ardb: Use in-band-status for SFP module
  arm64: dts: imx8mp-verdin: Add yavia carrier board
  arm64: dts: imx8mm-verdin: Add yavia carrier board
  arm64: dts: imx8q: use generic node name for rave-sp
  arm64: dts: imx8mp-verdin-dev: Do not include dahlia dtsi
  arm64: dts: imx8mm-verdin-dev: Do not include dahlia dtsi
  arm64: dts: imx8mp: Drop sd-vsel-gpios from i.MX8M Plus DHCOM SoM
  arm64: dts: imx8mp: Drop sd-vsel-gpios from i.MX8M Plus Verdin SoM
  arm64: dts: imx8mm: Drop sd-vsel-gpios from i.MX8M Mini Verdin SoM
  arm64: dts: imx8mp: Improve bluetooth UART on DH electronics i.MX8M Plus DHCOM
  arm64: dts: freescale: Introduce imx8mp-beacon-kit
  arm64: dts: imx8mm-evk: use correct gpio-expander compatible
  arm64: dts: imx93: add ADC support
  arm64: dts: imx8mp: Reorder clock to match fsl,imx6q-pcie.yaml
  arm64: dts: imx8mq: Deduplicate PCIe clock-names property
  arm64: dts: imx8mm: Deduplicate PCIe clock-names property
  arm64: dts: verdin-imx8mp: unify gpio-key node name
  arm64: dts: ls1028a: sl28: get MAC addresses from VPD
  arm64: dts: freescale: Add LVDS overlay for TQMa8MPxL
  arm64: dts: imx8mp: Add LCDIF2 & LDB nodes
  ...

Link: https://lore.kernel.org/r/20230130023947.11780-5-shawnguo@kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-01-30 23:05:14 +01:00
Arnd Bergmann
739a7c29a7 Merge tag 'imx-dt-6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into arm/dt
i.MX arm device tree change for 6.3:

- New board support: SK-iMX53, DHCOM i.MX6ULL based boards.
- Increase MMC maximum frequency for i.MXRT1050.
- A series from Krzysztof Kozlowski to align LED node names with
  dtschema, and use use generic node name for rave-sp device.
- Use new media bus type macros for i.MX device trees.
- A series from Marcel Ziswiler to improve gpio-key for Colibri and
  Apalis device trees.
- A series from Marek Vasut to drop interrupt-names from dma-apb device.
- A series from Philippe Schenker to disable USB over-current for
  Colibri and Apalis boards.
- A few other small corrections and random changes.

* tag 'imx-dt-6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux: (29 commits)
  ARM: dts: imx6ull-dhcom: Add DHSOM based DRC02 board
  ARM: dts: imx6ull-dhcom: Add DHCOM based PicoITX board
  ARM: dts: imx6ull-dhcom: Add DH electronics DHCOM i.MX6ULL SoM and PDK2 board
  ARM: dts: imx7s: correct iomuxc gpr mux controller cells
  ARM: dts: imx: use generic node name for rave-sp
  ARM: dts: ls1021a: Disable CAN nodes by default
  ARM: dts: apalis/colibri-imx6/6ull/7: proper gpio-key node names
  ARM: dts: colibri-imx6ull: improve wake-up with gpio key
  ARM: dts: colibri-imx6: improve wake-up with gpio key
  ARM: dts: imx: e70k02: Add touchscreen
  ARM: dts: vfxxx: Swap SAI DMA order
  ARM: dts: freescale: Use new media bus type macros
  ARM: dts: tqma6ul + mba6ulx: Fix temperature sensor compatible
  ARM: dts: imx: Add support for SK-iMX53 board
  ARM: dts: imx7s: Drop dma-apb interrupt-names
  ARM: dts: imx6ul: Drop dma-apb interrupt-names
  ARM: dts: imx6sx: Drop dma-apb interrupt-names
  ARM: dts: imx6qdl: Drop dma-apb interrupt-names
  ARM: dts: mxs: Drop dma-apb interrupt-names
  ARM: dts: imx6qdl: use MAC-address from nvmem
  ...

Link: https://lore.kernel.org/r/20230130023947.11780-4-shawnguo@kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-01-30 23:03:26 +01:00
Arnd Bergmann
f0f4c73ac0 Merge tag 'dt-cleanup-6.3-2' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-dt into arm/dt
Minor improvements in ARM DTS for v6.3, part two

Align UART node names and OPP table names with bindings (alpine, arm
boards, axm55xx, berlin, cx92755, dm814x, moxart, mstar, stih418).

* tag 'dt-cleanup-6.3-2' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-dt:
  ARM: dts: berlin: align UART node name with bindings
  ARM: dts: stih418: align OPP table names with DT schema
  ARM: dts: dm814x: align UART node name with bindings
  ARM: dts: moxart: align UART node name with bindings
  ARM: dts: axm55xx: align UART node name with bindings
  ARM: dts: alpine: align UART node name with bindings
  ARM: dts: arm: align UART node name with bindings
  ARM: dts: cx92755: align UART node name with bindings
  ARM: dts: mstar: align UART node name with bindings

Link: https://lore.kernel.org/r/20230129144525.5802-2-krzysztof.kozlowski@linaro.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-01-30 23:01:12 +01:00
Arnd Bergmann
54a39a28ae Merge tag 'dt64-cleanup-6.3-2' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-dt into arm/dt
Minor improvements in ARM64 DTS for v6.3, part two

1. Drop deprecated "device_type" property from serial nodes (apm,
   amazon).
2. Align UART node names and OPP table names with bindings (hisilicon,
   realtek, synaptics).
3. Use "okay" for status, as expected by Devicetree specification and
   dtschema.

* tag 'dt64-cleanup-6.3-2' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-dt:
  arm64: dts: amd: use "okay" for status
  arm64: dts: apm: use "okay" for status
  arm64: dts: microchip: use "okay" for status
  arm64: dts: synaptics: align UART node name with bindings
  arm64: dts: hisilicon: align UART node name with bindings
  arm64: dts: realtek: align UART node name with bindings
  arm64: dts: amazon: drop deprecated serial device_type
  arm64: dts: apm: drop deprecated serial device_type

Link: https://lore.kernel.org/r/20230129144525.5802-1-krzysztof.kozlowski@linaro.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-01-30 23:00:00 +01:00
Arnd Bergmann
5868fc77e2 Merge tag 'samsung-dt64-6.3-2' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into arm/dt
Samsung DTS ARM64 changes for v6.3, part two

Big cleanup and rework towards achieving zero-warning of dtbs_check and
dtc W=1:
 - drop or correct incorrect properties in several boards,
 - add dummy regulator supplies when necessary to fullfil bindings
   requirements,
 - use lowercase hex,
 - move non-MMIO exynos-bus nodes out of soc node,
 - add unit address to USB DWC3 nodes.

* tag 'samsung-dt64-6.3-2' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux:
  arm64: dts: exynos: add unit address to DWC3 node wrapper in Exynos7
  arm64: dts: exynos: add unit address to DWC3 node wrapper in Exynos5433
  arm64: dts: exynos: move exynos-bus nodes out of soc in Exynos5433
  arm64: dts: exynos: use lowercase hex addresses
  arm64: dts: exynos: correct wlf,micd-dbtime on TM2
  arm64: dts: exynos: add interrupt-controller to WM5110 on TM2
  arm64: dts: exynos: add VPH_PWR regulator on TM2
  arm64: dts: exynos: correct Bluetooth LED triger on E850-96
  arm64: dts: exynos: add ADC supply on Exynos7 Espresso
  arm64: dts: exynos: disable non-working GPU on Exynos7 Espresso
  arm64: dts: exynos: drop unsupported UFS properties in ExynosAutov9 SADK

Link: https://lore.kernel.org/r/20230129143944.5104-2-krzysztof.kozlowski@linaro.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-01-30 22:58:29 +01:00
Arnd Bergmann
00ef63ec1c Merge tag 'samsung-dt-6.3' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into arm/dt
Samsung DTS ARM changes for v6.3

1. Big cleanup and rework towards achieving zero-warning of dtbs_check
   and dtc W=1:
    - align node names with the bindings,
    - drop or correct incorrect properties in several boards,
    - correct HDMI bridge ports nodes on Exynos4412 Midas,
    - add dummy regulator supplies when necessary to fullfil bindings
      requirements,
    - use lowercase hex,
    - move non-MMIO exynos-bus nodes out of soc node,
    - add unit address to USB DWC3 nodes.

2. Correct Exynos5420 MIPI DSI and phy compatibles.
3. Correct Exynos4210 and Exynos4412 HDMI phy compatibles.
4. Add Samsung Galaxy S5 (SM-G900H) board.

* tag 'samsung-dt-6.3' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux: (27 commits)
  ARM: dts: exynos: add unit address to DWC3 node wrapper in Exynos54xx
  ARM: dts: exynos: add unit address to DWC3 node wrapper in Exynos5250
  ARM: dts: exynos: move exynos-bus nodes out of soc in Exynos4412
  ARM: dts: exynos: move exynos-bus nodes out of soc in Exynos4210
  ARM: dts: exynos: move exynos-bus nodes out of soc in Exynos3250
  ARM: dts: exynos: move exynos-bus nodes out of soc in Exynos5420
  ARM: dts: exynos: use lowercase hex addresses
  ARM: dts: exynos: use generic node names for phy
  ARM: dts: exynos: correct HDMI phy compatible in Exynos4
  ARM: dts: exynos: Add Samsung Galaxy S5 (SM-G900H) board
  dt-bindings: arm: samsung: Add compatible for Samsung Galaxy S5 (SM-G900H)
  ARM: dts: exynos: Use Exynos5422 compatible for the DSI controller
  ARM: dts: exynos: Use Exynos5420 compatible for the MIPI video phy
  ARM: dts: exynos: correct HSI2C properties in Exynos5410 Odroid XU
  ARM: dts: exynos: correct HS200 property in Exynos5260
  ARM: dts: exynos: correct SATA clocks in Exynos5250
  ARM: dts: exynos: align HSOTG/USB node names
  ARM: dts: exynos: add backlight supply in P4 Note
  ARM: dts: exynos: add panel supply in Tiny4412
  ARM: dts: exynos: add ports in HDMI bridge in Exynos4412 Midas
  ...

Link: https://lore.kernel.org/r/20230129143944.5104-1-krzysztof.kozlowski@linaro.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-01-30 22:56:55 +01:00
Arnd Bergmann
d18eff504d Merge tag 'arm-soc/for-6.3/devicetree-arm64' of https://github.com/Broadcom/stblinux into arm/dt
This pull request contains Broadcom ARM64 SoCs Device Tree updates for
6.3, please pull the following:

- Krzysztof aligns the SMMMU Device Tree nodes to use the desired
  regular expression matched by the dtschema and he also removes the
  deprecated "device_type" property for serial node(s)

* tag 'arm-soc/for-6.3/devicetree-arm64' of https://github.com/Broadcom/stblinux:
  arm64: dts: broadcom: drop deprecated serial device_type
  arm64: dts: broadcom: align SMMU node names with DT schema

Link: https://lore.kernel.org/r/20230128193834.1628831-1-f.fainelli@gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-01-30 22:56:00 +01:00
Arnd Bergmann
0c826ec36d Merge tag 'arm-soc/for-6.3/devicetree' of https://github.com/Broadcom/stblinux into arm/dt
This pull request contains Broadcom ARM SoCs Device Tree updates for
6.3, please pull the following:

- Krzysztof aligns the various Broadcom SoCs DTS UART nodes with the
  binding convention to use "serial"

* tag 'arm-soc/for-6.3/devicetree' of https://github.com/Broadcom/stblinux:
  ARM: dts: broadcom: align UART node name with bindings

Link: https://lore.kernel.org/r/20230128193829.1628773-1-f.fainelli@gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-01-30 22:55:11 +01:00
Arnd Bergmann
ffe4bd3db8 Merge tag 'sunxi-dt-for-6.3-1' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux into arm/dt
- introduce Allwinner D1 DTSI
- add boards: Dongshan Nezha STU, MangoPi MQ (Pro), Sipeed Lichee RV,
  Nezha
- add D1 power controller node
- Add SATA regulator to Bananapi M3
- fix regulator reference for nanopi-duo2
- fix GPIO node names
- align HDMI CEC node name for h3-beelink-x2
- add DPHY interrupt to A64 and A33

* tag 'sunxi-dt-for-6.3-1' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux:
  riscv: dts: allwinner: d1: Add power controller node
  riscv: Add the Allwinner SoC family Kconfig option
  riscv: dts: allwinner: Add Dongshan Nezha STU devicetree
  riscv: dts: allwinner: Add MangoPi MQ Pro devicetree
  riscv: dts: allwinner: Add Sipeed Lichee RV devicetrees
  riscv: dts: allwinner: Add Allwinner D1 Nezha devicetree
  riscv: dts: allwinner: Add MangoPi MQ devicetree
  riscv: dts: allwinner: Add the D1/D1s SoC devicetree
  dt-bindings: riscv: Add Allwinner D1/D1s board compatibles
  dt-bindings: vendor-prefixes: Add Allwinner D1/D1s board vendors
  MAINTAINERS: Match the sun20i family of Allwinner SoCs
  ARM: dts: sun8i: a83t: bananapi-m3: describe SATA disk regulator
  ARM: dts: sun8i: nanopi-duo2: Fix regulator GPIO reference
  ARM: dts: sunxi: Fix GPIO LED node names
  ARM: dts: sun8i: h3-beelink-x2: align HDMI CEC node names with dtschema
  arm64: dts: allwinner: a64: Add DPHY interrupt
  ARM: dts: sun8i: a33: Add DPHY interrupt

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-01-30 22:42:51 +01:00
Jason Gunthorpe
fd9f2a9122 Merge branch 'iommu-memory-accounting' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/joro/iommu intoiommufd/for-next
Jason Gunthorpe says:

====================
iommufd follows the same design as KVM and uses memory cgroups to limit
the amount of kernel memory a iommufd file descriptor can pin down. The
various internal data structures already use GFP_KERNEL_ACCOUNT to charge
its own memory.

However, one of the biggest consumers of kernel memory is the IOPTEs
stored under the iommu_domain and these allocations are not tracked.

This series is the first step in fixing it.

The iommu driver contract already includes a 'gfp' argument to the
map_pages op, allowing iommufd to specify GFP_KERNEL_ACCOUNT and then
having the driver allocate the IOPTE tables with that flag will capture a
significant amount of the allocations.

Update the iommu_map() API to pass in the GFP argument, and fix all call
sites. Replace iommu_map_atomic().

Audit the "enterprise" iommu drivers to make sure they do the right thing.
Intel and S390 ignore the GFP argument and always use GFP_ATOMIC. This is
problematic for iommufd anyhow, so fix it. AMD and ARM SMMUv2/3 are
already correct.

A follow up series will be needed to capture the allocations made when the
iommu_domain itself is allocated, which will complete the job.
====================

* 'iommu-memory-accounting' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/joro/iommu:
  iommu/s390: Use GFP_KERNEL in sleepable contexts
  iommu/s390: Push the gfp parameter to the kmem_cache_alloc()'s
  iommu/intel: Use GFP_KERNEL in sleepable contexts
  iommu/intel: Support the gfp argument to the map_pages op
  iommu/intel: Add a gfp parameter to alloc_pgtable_page()
  iommufd: Use GFP_KERNEL_ACCOUNT for iommu_map()
  iommu/dma: Use the gfp parameter in __iommu_dma_alloc_noncontiguous()
  iommu: Add a gfp parameter to iommu_map_sg()
  iommu: Remove iommu_map_atomic()
  iommu: Add a gfp parameter to iommu_map()

Link: https://lore.kernel.org/linux-iommu/0-v3-76b587fe28df+6e3-iommu_map_gfp_jgg@nvidia.com
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
2023-01-30 13:54:35 -04:00
Arnd Bergmann
248c07f92c Merge tag 'tegra-for-6.3-arm64-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into arm/dt
arm64: tegra: Device tree changes for v6.3-rc1

There are two big changes in this: one is to bump the #address-cells and
the #size-cells properties to 2 so that bus address translations work
correctly and another to sort nodes according to a scheme that we've
been trying to follow, but where some inconsistencies have accumulated
over the years.

As for the rest, this adds mostly new things on Tegra234, such as USB
host and device support and identification EEPROMs found on Jetson AGX
Orin.

Some cleanups are also included, such as the removal of unneeded
properties or duplicated nodes.

* tag 'tegra-for-6.3-arm64-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
  arm64: tegra: Drop I2C iommus and dma-coherent properties
  arm64: tegra: Mark host1x as dma-coherent on Tegra194/234
  arm64: tegra: Populate the XUDC node for Tegra234
  arm64: tegra: Add dma-coherent property for Tegra194 XUDC
  arm64: tegra: Populate Jetson AGX Orin EEPROMs
  arm64: tegra: Populate address/size cells for Tegra234 I2C
  arm64: tegra: Enable XUSB host function on Jetson AGX Orin
  arm64: tegra: Sort nodes by unit-address, then alphabetically
  arm64: tegra: Bump #address-cells and #size-cells
  arm64: tegra: Sort includes
  arm64: tegra: Fix duplicate regulator on Jetson TX1
  arm64: tegra: Fix typo in gpio-ranges property

Link: https://lore.kernel.org/r/20230127163719.460954-3-thierry.reding@gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-01-30 18:16:35 +01:00
Arnd Bergmann
cdd070a4e1 Merge tag 'tegra-for-6.3-arm-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into arm/dt
ARM: tegra: Device tree changes for v6.3-rc1

Just a single patch to properly sort nodes and make the DTS files easier
to read.

* tag 'tegra-for-6.3-arm-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
  ARM: tegra: Sort nodes by unit-address, then alphabetically

Link: https://lore.kernel.org/r/20230127163719.460954-2-thierry.reding@gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-01-30 18:15:49 +01:00
Arnd Bergmann
ad3c046a26 Merge tag 'renesas-dts-for-v6.3-tag2' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel into arm/dt
Renesas DT updates for v6.3 (take two)

  - High Performance mode (1.8 GHz) support for the Cortex-A76 CPU cores
    on R-Car V4H,
  - GPIO interrupt support for the RZ/G2UL SoC and the RZ/G2UL SMARC EVK
    development board,
  - USB Function support for the RZ/N1D SoC,
  - Generic Sound Card driver examples for the Renesas R-Car Starter Kit
    Premier/Pro and Shimafugi Kingfisher development board stack,
  - Universal Flash Storage support for the Renesas Spider development
    board,
  - External Power Sequence Controller (PWC) support for the RZ/V2M SoC
    and the RZ/V2M Evaluation Kit 2.0,
  - IOMMU support for MMC on the R-Car S4-8 SoC,
  - Miscellaneous fixes and improvements.

* tag 'renesas-dts-for-v6.3-tag2' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel: (25 commits)
  arm64: dts: renesas: r8a779f0: Add iommus to MMC node
  arm64: dts: renesas: v2mevk2: Add PWC support
  arm64: dts: renesas: r9a09g011: Add PWC support
  arm64: dts: renesas: r9a09g011: Reword ethernet status
  arm64: dts: renesas: r8a774[be]1-beacon: Sync aliases with RZ/G2M
  arm64: dts: renesas: beacon-renesom: Fix audio clock rate
  arm64: dts: renesas: beacon-renesom: Update Ethernet PHY ID
  arm64: dts: renesas: beacon-renesom: Fix gpio expander reference
  arm64: dts: renesas: spider-cpu: Enable UFS device
  arm64: dts: renesas: Add ulcb{-kf} Simple Audio Card MIX + TDM Split dtsi
  arm64: dts: renesas: Add ulcb{-kf} Audio Graph Card MIX + TDM Split dtsi
  arm64: dts: renesas: Add ulcb{-kf} Audio Graph Card2 MIX + TDM Split dtsi
  arm64: dts: renesas: Add ulcb{-kf} Simple Audio Card dtsi
  arm64: dts: renesas: Add ulcb{-kf} Audio Graph Card2 dtsi
  arm64: dts: renesas: Add ulcb{-kf} Audio Graph Card dtsi
  arm64: dts: renesas: #sound-dai-cells is used when simple-card
  ARM: dts: renesas: #sound-dai-cells is used when simple-card
  arm64: dts: renesas: eagle: Add SCIF_CLK support
  ARM: dts: r9a06g032: Add the USBF controller node
  arm64: dts: renesas: rzg2ul-smarc-som: Add PHY interrupt support for ETH{0/1}
  ...

Link: https://lore.kernel.org/r/cover.1674815099.git.geert+renesas@glider.be
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-01-30 18:14:24 +01:00
Arnd Bergmann
2e0f3acb90 Merge tag 'qcom-arm64-for-6.3' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into arm/dt
Qualcomm ARM64 Devicetree updates for v6.3

This introduces support for the new Snapdragon 8 Gen 2 (SM8550)
platform.  In addition to the adding support for the MTP on this
platform, support the following devices is introduced:
 - GPLUS FL8005A
 - Google Zombie with LTE and NVMe
 - Google Zombie with NVMe
 - Lenovo Tab P11
 - Motorola G5 Plus
 - Motorola G7 Power
 - Motorola Moto G6
 - Samsung Galaxy J5 (2016)
 - Samsung Galaxy Tab A 8.0
 - Samsung Galaxy Tab A 9.7
 - Xiaomi Mi A1
 - Xiaomi Mi A2 Lite
 - Xiaomi Redmi 5 Plus
 - Xiaomi Redmi Note 4X

On IPQ8074 the PCIe PHY register regions and PHY clock names are
corrected.

On MSM8916 DMA for the I2C controllers are introduced and blsp_dma is
unconditionally enabled. Per-sensor calibration data is provided for the
thermal sensor (tsens) block. The GPLUS FL8005A device is introduced and
gains support for touchscreen and flash LED. An additional Samsung
Galaxy J5 variant is added, and support is added for hall sensor and
MUIC.

Per-sensor calibration information is introduced for the thermal sensor
on MSM8956 as well.

On MSM8996, GPLL0 is added as a possible Kryo clock controller input, a
carveout is added to get modem metadata out of System RAM. Missing bus
clocks are added for agnoc2.
SDHCI1 is enabled on the Sony Xperia Tone platform and USB is limited to
high-speed, to make USB work.

MSM8998 gains the same modem carveout as other platforms, and the
description of the clock hierarchy is improved.

On QCS404 the clock hierarchy description is improved, the CDSP PAS node
is adjusted to match the binding and the thermal sensor (tsens) gains
per-sensor calibration information.

On SC7180 the Data Capture and Compare block is intorduced, and a
carveout for the modem metadata is introduced, to get this out of System
RAM. Pazquel360 gains touchscreen support, the regulator off-on-time is
adjusted for the Trogdor eDP and touchscreen.
Data lane and frequency properties are introduced for the DisplayPort
links.

SC7280 also gets Data Capture and Compare support, as well as the
dedicated modem metadata region. Herobrine gains DP audio support.
IPA description is updated so that it's only active on boards with a
modem.

On SC8280XP the display subsystem is introduced, currently with support
for most of the DisplayPort controllers. GPR, SoundWire and LPASS is
introduced, for audio support. Missing I2C and SPI controllers are
introduced.
Support for EDP is introduced for the CRD, the Lenovo ThinkPad X13s and
the SA8295P ADP automotive board. The SA8540P Ride platform enables one
i2c and pcie controllers.
A CMA region is defined for the CRD and X13s, to avoid allocation issues
from the NVMe support.

Fairphone FP3 gains NFC support and the Sony Xperia Nile platform gains
a description of simplefb.
SDM670 gains QFPROM definition.

SDM845 gains a carveout for the modem metadata and support for the Data
Capture and Compare block is introduced.  Lenovo Yoga C630 firmware
paths are aligned with all other Qualcomm platforms.

On SM6125 apss SMMU is introduced and streams are defined for USB and
SDHCI controllers. GPI DMA description is introduced, as well as missing
SPI and I2C serial engines.
On Sony Xperia 10 IIa regulator definitions are improved, SDHCI2 is
introduced, and I2C and related GPI DMA blocks are enabled.

On SM6350 IPA is introduced. DDR and L3 scaling is introduced based on
CPUfreq.

Fairphone FP4, on SM7225 also has IPA enabled, and the Flash LED is
enabled as well.

On SM8150 the display subsystem is introduced, with clock controller,
DPU and two DSI controllers. The Data Capture and Compare block is
introduced.
For the Sony Xperia Kumano platform, GPIO keys and NFC support is
introduced.

For SM8350 PCIe is introduced, as is the display subsystem with display
clock controller, DPU and two DSI controllers. #interconnect-cells is
changed to 2, to align with other platforms and allow for active-only
votes. The display is enabled and the LT9611uxc found on the SM8350
Hardware Development Kit board is described, to provide HDMI output.

On SM8450 the display subsystem is introduced, with DPU and two DSI
controllers.  GIC-ITS support is introduced for both PCIe0 and PCIe1.
SPMI bus support is introduced and pmics are wired up across the various
devices.
The display subsystem is enabled and the LT9611uxc is described to
provide HDMI output on the SM8450 Hardware Development Kit.
On Sony Xperia Nagara platform, GPIO keys and GPIO line names are
introduced. As is the SLG51000 PMIC and camera regulators are defined.

Support for SM8550 is introduced, with support for storage, USB,
remoteprocs, PCIe, low-speed buses, crypto and display subsystem. These
blocks are enabled on the MTP.

Lastly, the work continue to align Devicetree source with bindings
across all platforms.

* tag 'qcom-arm64-for-6.3' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux: (320 commits)
  arm64: dts: qcom: sc7280: Add a carveout for modem metadata
  arm64: dts: qcom: sc7180: Add a carveout for modem metadata
  arm64: dts: qcom: sdm845: Add a carveout for modem metadata
  arm64: dts: qcom: msm8998: Add a carveout for modem metadata
  arm64: dts: qcom: msm8996: Add a carveout for modem metadata
  arm64: dts: qcom: ipq8074: correct PCIe QMP PHY output clock names
  arm64: dts: qcom: ipq8074: fix Gen3 PCIe node
  arm64: dts: qcom: ipq8074: set Gen2 PCIe pcie max-link-speed
  arm64: dts: qcom: ipq8074: correct Gen2 PCIe ranges
  arm64: dts: qcom: ipq8074: fix Gen3 PCIe QMP PHY
  arm64: dts: qcom: ipq8074: fix Gen2 PCIe QMP PHY
  arm64: dts: qcom: sdm845-db845c: drop label from I2C controllers
  arm64: dts: qcom: msm8996: support using GPLL0 as kryocc input
  arm64: dts: qcom: sm8450: Allow both GIC-ITS and internal MSI controller
  arm64: dts: qcom: sm8550-mtp: Add USB PHYs and HC nodes
  arm64: dts: qcom: sm8550: Add USB PHYs and controller nodes
  arm64: dts: qcom: sm8250: drop unused properties from tx-macro
  arm64: dts: qcom: sm8250: drop unused clock-frequency from wsa-macro
  arm64: dts: qcom: align OPP table node name with DT schema
  arm64: dts: qcom: rename mdp nodes to display-controller
  ...

Link: https://lore.kernel.org/r/20230126202528.3691539-1-andersson@kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-01-30 17:53:03 +01:00
Arnd Bergmann
de858a05c9 vfio-mdev: add back CONFIG_VFIO dependency
CONFIG_VFIO_MDEV cannot be selected when VFIO itself is
disabled, otherwise we get a link failure:

WARNING: unmet direct dependencies detected for VFIO_MDEV
  Depends on [n]: VFIO [=n]
  Selected by [y]:
  - SAMPLE_VFIO_MDEV_MTTY [=y] && SAMPLES [=y]
  - SAMPLE_VFIO_MDEV_MDPY [=y] && SAMPLES [=y]
  - SAMPLE_VFIO_MDEV_MBOCHS [=y] && SAMPLES [=y]
/home/arnd/cross/arm64/gcc-13.0.1-nolibc/x86_64-linux/bin/x86_64-linux-ld: samples/vfio-mdev/mdpy.o: in function `mdpy_remove':
mdpy.c:(.text+0x1e1): undefined reference to `vfio_unregister_group_dev'
/home/arnd/cross/arm64/gcc-13.0.1-nolibc/x86_64-linux/bin/x86_64-linux-ld: samples/vfio-mdev/mdpy.o: in function `mdpy_probe':
mdpy.c:(.text+0x149e): undefined reference to `_vfio_alloc_device'

Fixes: 8bf8c5ee1f ("vfio-mdev: turn VFIO_MDEV into a selectable symbol")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Link: https://lore.kernel.org/r/20230126211211.1762319-1-arnd@kernel.org
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
2023-01-30 09:49:39 -07:00
Arnd Bergmann
b453988c59 Merge tag 'riscv-dt-for-v6.3-mw0' of https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux into arm/dt
RISC-V Devicetrees for v6.3-mw0

Microchip:
A vendor prefix for Aldec and both a binding and Devicetree for the
Aldec TySoM devkit for PolarFire SoC. This Devicetree corresponds to
what they are shipping in the SDK for rev2 boards.

StarFive:
Just the binding for the new StarFive JH7110 SoC and its first-party
SDC the VisionFive 2.

Other:
I was expecting the Devicetree for the aforementioned board to be ready
for this window, as the pinctrl driver had seem some review prior to
v6.2 and both it & the base clock drivers are heavily based on the
existing drivers for the JH7110.
That didn't come to be.. Christmas, the RISC-V Summit in December and
the Lunar New Year all playing a part perhaps.
Because of that, both Palmer and I have the Kconfig.socs work in our
branches, although in hindsight it probably wasn't needed here as I
only added the TySoM Devicetree & the conflict would've been trivial.

Signed-off-by: Conor Dooley <conor.dooley@microchip.com>

* tag 'riscv-dt-for-v6.3-mw0' of https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux:
  riscv: dts: microchip: add the Aldec TySoM's devicetree
  dt-bindings: riscv: microchip: document the Aldec TySoM
  dt-bindings: vendor-prefixes: Add entry for Aldec
  RISC-V: stop directly selecting drivers for SOC_CANAAN
  RISC-V: stop selecting SiFive clock and serial drivers directly
  RISC-V: stop selecting the PolarFire SoC clock driver
  RISC-V: kbuild: convert all use of SOC_FOO to ARCH_FOO
  RISC-V: kconfig.socs: convert usage of SOC_CANAAN to ARCH_CANAAN
  RISC-V: introduce ARCH_FOO kconfig aliases for SOC_FOO symbols
  dt-bindings: riscv: Add StarFive JH7110 SoC and VisionFive 2 board

Link: https://lore.kernel.org/r/Y9LP+Za1h0fkBa58@spud
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-01-30 17:48:55 +01:00
Arnd Bergmann
be836a16f4 Merge tag 'qcom-dts-for-6.3' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into arm/dt
Qualcomm ARM DT updates for v6.3

This introduces support for Acer Iconia Talk S A1-724

The Samsung Galaxy Tab 4 10.1 gains ADSP and backlight support.

The Xperia Z2 Tablet gets charging enabled and the touchscreen is given
a little bit more time to start up.

APQ8064 and MSM8974 gains improvements in clock hierarchy. APQ8064
thermal sensor (tsens) driver gains per-censor calibration data.

Lastly a set of patches that improves DT binding compliance.

* tag 'qcom-dts-for-6.3' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux: (50 commits)
  ARM: dts: qcom: msm8226: add RPMCC node
  ARM: dts: qcom: apq8084: add clocks and clock-names to gcc device
  ARM: dts: qcom: align OPP table node name with DT schema
  ARM: dts: qcom: rename mdp nodes to display-controller
  ARM: dts: qcom-msm8974: rename mdss node to display-subsystem
  ARM: dts: qcom-msm8974: add SoC specific compat string to mdp5 node
  dt-bindings: qcom: Document samsung,gt58 and gt510
  dt-bindings: qcom: Document bindings for msm8916-samsung-j5x
  ARM: dts: qcom: use qcom,gsi-loader for IPA
  ARM: dts: qcom-apq8084: specify per-sensor calibration cells
  ARM: dts: qcom-msm8974: specify per-sensor calibration cells
  dt-bindings: arm: qcom: Document MSM8939 SoC binding
  ARM: dts: qcom: msm8974: add xo clock to rpm clock controller
  dt-bindings: qcom: Document msm8916-gplus-fl8005a
  dt-bindings: vendor-prefixes: Add GPLUS
  ARM: dts: qcom: apq8026-samsung-matisse-wifi: Add display backlight
  dt-bindings: arm: qcom: Add SM6115(P) and Lenovo Tab P11
  ARM: dts: qcom: add missing space before {
  dt-bindings: arm: qcom: add board-id/msm-id for MSM8956, SDM636 and SM4250
  dt-bindings: arm: qcom: Add zombie with NVMe
  ...

Link: https://lore.kernel.org/r/20230126174725.3681745-1-andersson@kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-01-30 17:47:00 +01:00
Arnd Bergmann
8a74191c89 Merge tag 'imx-fixes-6.2-2' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into arm/fixes
i.MX fixes for 6.2, round 2:

- Update MAINTAINERS i.MX entry to match arm64 freescale DTS.
- Drop misused 'uart-has-rtscts' from imx8m-venice boards.
- Fix USB host over-current polarity for imx7d-smegw01 board.
- Fix a typo in i.MX8DXL sc_pwrkey property name.
- Fix GPIO watchdog property for i.MX8MM eDM SBC board.
- Keep Ethernet PHY powered on imx8mm-verdin to avoid kernel crash.
- Fix configuration of i.MX8MM pad UART1_DTE_RX.

* tag 'imx-fixes-6.2-2' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux:
  ARM: dts: imx7d-smegw01: Fix USB host over-current polarity
  arm64: dts: imx8mm-verdin: Do not power down eth-phy
  MAINTAINERS: match freescale ARM64 DT directory in i.MX entry
  arm64: dts: imx8mm: Fix pad control for UART1_DTE_RX
  arm64: dts: freescale: imx8dxl: fix sc_pwrkey's property name linux,keycode
  arm64: dts: imx8m-venice: Remove incorrect 'uart-has-rtscts'
  arm64: dts: imx8mm: Reinstate GPIO watchdog always-running property on eDM SBC

Link: https://lore.kernel.org/r/20230130003614.GP20713@T480
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2023-01-30 17:44:27 +01:00
Stephen Rothwell
b7810ea80f driver core: fixup for "driver core: make struct bus_type.uevent() take a const *"
After merging the driver-core tree, today's linux-next build (powerpc
ppc64_defconfig) failed like this:

arch/powerpc/platforms/ps3/system-bus.c:472:19: error: initialization of 'int (*)(const struct device *, struct kobj_uevent_env *)' from incompatible pointer type 'int (*)(struct device *, struct kobj_uevent_env *)' [-Werror=incompatible-pointer-types]
  472 |         .uevent = ps3_system_bus_uevent,
      |                   ^~~~~~~~~~~~~~~~~~~~~
arch/powerpc/platforms/ps3/system-bus.c:472:19: note: (near initialization for 'ps3_system_bus_type.uevent')
arch/powerpc/platforms/pseries/ibmebus.c:436:22: error: initialization of 'int (*)(const struct device *, struct kobj_uevent_env *)' from incompatible pointer type 'int (*)(struct device *, struct kobj_uevent_env *)' [-Werror=incompatible-pointer-types]
  436 |         .uevent    = ibmebus_bus_modalias,
      |                      ^~~~~~~~~~~~~~~~~~~~
arch/powerpc/platforms/pseries/ibmebus.c:436:22: note: (near initialization for 'ibmebus_bus_type.uevent')

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Fixes: 2a81ada32f ("driver core: make struct bus_type.uevent() take a const *")
Link: https://lore.kernel.org/r/20230130152818.03c00ea3@canb.auug.org.au
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-01-30 17:02:03 +01:00
Michael Schmitz
6baaade155 m68k: Add kernel seccomp support
Add secure_computing() call to syscall_trace_enter to actually
filter system calls.

Add necessary arch Kconfig options, define TIF_SECCOMP trace
flag and provide basic seccomp filter support in asm/syscall.h

syscall_get_nr currently uses the syscall nr stored in orig_d0
because we change d0 to a default return code before starting a
syscall trace. This may be inconsistent with syscall_rollback
copying orig_d0 to d0 (which we never check upon return from
trace). We use d0 for the return code from syscall_trace_enter
in entry.S currently, and could perhaps expand that to store
a new syscall number returned by the seccomp filter before
executing the syscall. This clearly needs some discussion.

seccomp_bpf self test on ARAnyM passes 81 out of 94 tests.

Signed-off-by: Michael Schmitz <schmitzmic@gmail.com>
Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
Link: https://lore.kernel.org/r/20230112035529.13521-3-schmitzmic@gmail.com
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2023-01-30 16:40:15 +01:00
Michael Schmitz
2ca8a1de44 m68k: Check syscall_trace_enter() return code
Check return code of syscall_trace_enter(), and skip syscall
if -1. Return code will be left at what had been set by
ptrace or seccomp (in regs->d0).

No regression seen in testing with strace on ARAnyM.

Signed-off-by: Michael Schmitz <schmitzmic@gmail.com>
Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
Link: https://lore.kernel.org/r/20230112035529.13521-2-schmitzmic@gmail.com
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2023-01-30 16:40:15 +01:00
Geert Uytterhoeven
65a1601609 m68k: defconfig: Update defconfigs for v6.2-rc3
- Drop CONFIG_NFT_OBJREF=m (removed in commit d037abc241
    ("netfilter: nft_objref: make it builtin")),
  - Drop CONFIG_TEST_STRSCPY=m (replaced by auto-modular
    CONFIG_STRSCPY_KUNIT_TEST in commit 41eefc46a3 ("string:
    Convert strscpy() self-test to KUnit")),
  - Drop CONFIG_TEST_SIPHASH=m (replaced by auto-modular
    CONFIG_SIPHASH_KUNIT_TEST in commit fb3d88ab35 ("siphash:
    Convert selftest to KUnit")).

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Link: https://lore.kernel.org/r/fdd3b827ebc5abea6c295df4121048a6a03b698a.1672654705.git.geert@linux-m68k.org
Link: https://lore.kernel.org/r/6c4589bc56ffba0f923a7361262397f6c32a3dc1.1673255008.git.geert@linux-m68k.org
2023-01-30 16:40:15 +01:00
Xin Gao
40202cca4b m68k: q40: Do not initialise statics to 0
Remove initialization to zero of static variables.

Signed-off-by: Xin Gao <gaoxin@cdjrlc.com>
Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
Link: https://lore.kernel.org/r/20220718105553.6529-1-gaoxin@cdjrlc.com
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2023-01-30 16:39:43 +01:00
Andy Shevchenko
a5ec171efd gpio: Remove unused and obsoleted irq_to_gpio()
irq_to_gpio() is legacy and unused API, remove it for good.

This leaves gpio_to_irq() as it's used yet in many places.
Nevertheless, removal of its counterpart is a good signal
to whoever even trying to consider using them that do not.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
2023-01-30 15:55:29 +01:00
Evgeniy Baskov
79729f26b0 efi/libstub: Add memory attribute protocol definitions
EFI_MEMORY_ATTRIBUTE_PROTOCOL servers as a better alternative to
DXE services for setting memory attributes in EFI Boot Services
environment. This protocol is better since it is a part of UEFI
specification itself and not UEFI PI specification like DXE
services.

Add EFI_MEMORY_ATTRIBUTE_PROTOCOL definitions.
Support mixed mode properly for its calls.

Tested-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Evgeniy Baskov <baskov@ispras.ru>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
2023-01-30 13:11:34 +01:00
Nicholas Piggin
c28548012e powerpc/64: Fix perf profiling asynchronous interrupt handlers
Interrupt entry sets the soft mask to IRQS_ALL_DISABLED to match the
hard irq disabled state. So when should_hard_irq_enable() returns true
because we want PMI interrupts in irq handlers, MSR[EE] is enabled but
PMIs just get soft-masked. Fix this by clearing IRQS_PMI_DISABLED before
enabling MSR[EE].

This also tidies some of the warnings, no need to duplicate them in
both should_hard_irq_enable() and do_hard_irq_enable().

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20230121100156.2824054-1-npiggin@gmail.com
2023-01-30 20:07:42 +11:00
Nicholas Piggin
bc88ef6632 powerpc/64s: Fix local irq disable when PMIs are disabled
When PMI interrupts are soft-masked, local_irq_save() will clear the PMI
mask bit, allowing PMIs in and causing a race condition. This causes a
deadlock in native_hpte_insert via hash_preload, which depends on PMIs
being disabled since commit 8b91cee5ea ("powerpc/64s/hash: Make hash
faults work in NMI context"). native_hpte_insert calls local_irq_save().
It's possible the lpar hash code is also affected when tracing is
enabled because __trace_hcall_entry() calls local_irq_save().

Fix this by making arch_local_irq_save() _or_ the IRQS_DISABLED bit into
the mask.

This was found with the stress_hpt option with a kbuild workload running
together with `perf record -g`.

Fixes: f442d00480 ("powerpc/64s: Add support to mask perf interrupts and replay them")
Fixes: 8b91cee5ea ("powerpc/64s/hash: Make hash faults work in NMI context")
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
[mpe: Just take the fix without the new warning]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20230121095352.2823517-1-npiggin@gmail.com
2023-01-30 20:07:18 +11:00
Pali Rohár
34557b7504 powerpc/pci: Enable PPC_PCI_BUS_NUM_DOMAIN_DEPENDENT by default
It makes sense to enable CONFIG_PPC_PCI_BUS_NUM_DOMAIN_DEPENDENT by default
(when possible by dependencies) to take advantages of all 256 PCI buses on
each PCI domain, like it is already on all other kernel architectures.

Fixes: 5663568130 ("powerpc/pci: Add config option for using all 256 PCI buses")
Signed-off-by: Pali Rohár <pali@kernel.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20230128133459.32123-1-pali@kernel.org
2023-01-30 19:34:08 +11:00
Nicholas Piggin
5746ca131e powerpc/64: Don't recurse irq replay
Interrupt handlers called by soft-pending irq replay code can run
softirqs, softirq replay enables and disables local irqs, which allows
interrupts to come in including soft-masked interrupts, and it can
cause pending irqs to be replayed again. That makes the soft irq replay
state machine and possible races more complicated and fragile than it
needs to be.

Use irq_enter/irq_exit around irq replay to prevent softirqs running
while interrupts are being replayed. Softirqs will now be run at the
irq_exit() call after all the irq replaying is done. This prevents irqs
being replayed while irqs are being replayed, and should hopefully make
things simpler and easier to think about and debug.

A new PACA_IRQ_REPLAYING is added to prevent asynchronous interrupt
handlers hard-enabling EE while pending irqs are being replayed, because
that causes new pending irqs to arrive which is also a complexity. This
means pending irqs won't be profiled quite so well because perf irqs
can't be taken.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20230121102618.2824429-1-npiggin@gmail.com
2023-01-30 18:21:41 +11:00
Christophe Leroy
bab537805a powerpc: Check !irq instead of irq == NO_IRQ and remove NO_IRQ
NO_IRQ is a relic from the old days. It is not used anymore in core
functions. By the way, function irq_of_parse_and_map() returns value 0
on error.

In some drivers, NO_IRQ is erroneously used to check the return of
irq_of_parse_and_map().

It is not a real bug today because the only architectures using the
drivers being fixed by this patch define NO_IRQ as 0, but there are
architectures which define NO_IRQ as -1. If one day those
architectures start using the non fixed drivers, there will be a
problem.

Long time ago Linus advocated for not using NO_IRQ, see
https://lore.kernel.org/all/Pine.LNX.4.64.0511211150040.13959@g5.osdl.org

He re-iterated the same view recently in
https://lore.kernel.org/all/CAHk-=wg2Pkb9kbfbstbB91AJA2SF6cySbsgHG-iQMq56j3VTcA@mail.gmail.com

So test !irq instead of tesing irq == NO_IRQ.

All other usage of NO_IRQ for powerpc were removed in previous cycles so
the time has come to remove NO_IRQ completely for powerpc.

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/4b8d4f96140af01dec3a3330924dda8b2451c316.1674476798.git.christophe.leroy@csgroup.eu
2023-01-30 17:53:05 +11:00
Nathan Lynch
12fd66651d powerpc/rtas: upgrade internal arch spinlocks
At the time commit f97bb36f70 ("powerpc/rtas: Turn rtas lock into a
raw spinlock") was written, the spinlock lockup detection code called
__delay(), which will not make progress if the timebase is not
advancing. Since the interprocessor timebase synchronization sequence
for chrp, cell, and some now-unsupported Power models can temporarily
freeze the timebase through an RTAS function (freeze-time-base), the
lock that serializes most RTAS calls was converted to arch_spinlock_t
to prevent kernel hangs in the lockup detection code.

However, commit bc88c10d7e ("locking/spinlock/debug: Remove spinlock
lockup detection code") removed that inconvenient property from the
lock debug code several years ago. So now it should be safe to
reintroduce generic locks into the RTAS support code, primarily to
increase lockdep coverage.

Making rtas_lock a spinlock_t would violate lock type nesting rules
because it can be acquired while holding raw locks, e.g. pci_lock and
irq_desc->lock. So convert it to raw_spinlock_t. There's no apparent
reason not to upgrade timebase_lock as well.

Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20230124140448.45938-5-nathanl@linux.ibm.com
2023-01-30 17:53:05 +11:00
Nathan Lynch
599af49155 powerpc/rtas: remove lock and args fields from global rtas struct
Only code internal to the RTAS subsystem needs access to the central
lock and parameter block. Remove these from the globally visible
'rtas' struct and make them file-static in rtas.c.

Some changed lines in rtas_call() lack appropriate spacing around
operators and cause checkpatch errors; fix these as well.

Suggested-by: Laurent Dufour <ldufour@linux.ibm.com>
Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com>
Reviewed-by: Laurent Dufour <laurent.dufour@fr.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20230124140448.45938-4-nathanl@linux.ibm.com
2023-01-30 17:53:05 +11:00
Nathan Lynch
9bce624384 powerpc/rtas: make all exports GPL
The first symbol exports of RTAS functions and data came with the (now
removed) scanlog driver in 2003:

https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git/commit/?id=f92e361842d5251e50562b09664082dcbd0548bb

At the time this was applied, EXPORT_SYMBOL_GPL() was very new, and
the exports of rtas_call() etc have remained non-GPL. As new APIs have
been added to the RTAS subsystem, their symbol exports have followed
the convention set by existing code.

However, the historical evidence is that RTAS function exports have been
added over time only to satisfy the needs of in-kernel users, and these
clients must have fairly intimate knowledge of how the APIs work to use
them safely. No out of tree users are known, and future ones seem
unlikely.

Arguably the default for RTAS symbols should have become
EXPORT_SYMBOL_GPL once it was available. Let's make it so now, and
exceptions can be evaluated as needed.

Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com>
Reviewed-by: Laurent Dufour <laurent.dufour@fr.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20230124140448.45938-3-nathanl@linux.ibm.com
2023-01-30 17:53:05 +11:00
Michael Ellerman
0d7e812fd2 powerpc/rtas: Drop unused export symbols
Some RTAS symbols are never used by modular code, drop their exports.

Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Reviewed-by: Nathan Lynch <nathanl@linux.ibm.com>
Link: https://lore.kernel.org/r/20230127111231.84294-1-mpe@ellerman.id.au
2023-01-30 17:52:57 +11:00
Nathan Lynch
5ff92e2f27 powerpc/rtas: unexport 'rtas' symbol
No modular code needs access to the 'rtas' struct, so remove the
symbol export.

Suggested-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20230124140448.45938-2-nathanl@linux.ibm.com
2023-01-30 17:42:52 +11:00