arm64: zynqmp: Add CMA reserved-memory for runtime FPGA loading

Add CMA (Contiguous Memory Allocator) reserved-memory regions to all
Xilinx arm64 board device trees to support runtime FPGA programming.

The CMA pool uses dynamic allocation constrained to the low 2 GB DDR region
via alloc-ranges so that the kernel places it within the 32-bit addressable
space.

CMA sizes are chosen per silicon family to accommodate the maximum PL
bitstream/PDI size:
  - Kria K24 SOM:                           64 MB
  - ZynqMP boards:                         128 MB

For Kria K24 SOM the CMA inherited from K26 is overridden to 64 MB.
For Kria SOMs, the CMA node is added to the SOM DTS only, not to
carrier board overlays.

Signed-off-by: Michal Simek <michal.simek@amd.com>
Link: https://lore.kernel.org/r/837e21582e886f1be9f95901109745ac5a8b2a25.1780991287.git.michal.simek@amd.com
This commit is contained in:
Michal Simek
2026-07-08 08:55:50 +02:00
parent d110d58867
commit 085a5acd9d
22 changed files with 326 additions and 12 deletions
+6 -1
View File
@@ -3,7 +3,7 @@
* dts file for Xilinx ZynqMP SM-K24 RevA
*
* (C) Copyright 2020 - 2021, Xilinx, Inc.
* (C) Copyright 2022, Advanced Micro Devices, Inc.
* (C) Copyright 2022-2026, Advanced Micro Devices, Inc.
*
* Michal Simek <michal.simek@amd.com>
*/
@@ -21,3 +21,8 @@
reg = <0 0 0 0x80000000>;
};
};
&cma {
size = <0x0 0x4000000>;
alignment = <0x0 0x4000000>;
};
+10 -1
View File
@@ -3,7 +3,7 @@
* dts file for Xilinx ZynqMP SM-K26 rev2/1/B/A
*
* (C) Copyright 2020 - 2021, Xilinx, Inc.
* (C) Copyright 2023 - 2024, Advanced Micro Devices, Inc.
* (C) Copyright 2023 - 2026, Advanced Micro Devices, Inc.
*
* Michal Simek <michal.simek@amd.com>
*/
@@ -61,6 +61,15 @@
reg = <0x0 0x7ff00000 0x0 0x100000>;
no-map;
};
cma: linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0x0 0x8000000>;
alignment = <0x0 0x8000000>;
alloc-ranges = <0x0 0x0 0x0 0x80000000>;
linux,cma-default;
};
};
gpio-keys {
+15
View File
@@ -31,6 +31,21 @@
device_type = "memory";
reg = <0x0 0x0 0x0 0x80000000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
cma: linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0x0 0x8000000>;
alignment = <0x0 0x8000000>;
alloc-ranges = <0x0 0x0 0x0 0x80000000>;
linux,cma-default;
};
};
};
&dcc {
+15
View File
@@ -32,6 +32,21 @@
device_type = "memory";
reg = <0x0 0x0 0x0 0x80000000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
cma: linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0x0 0x8000000>;
alignment = <0x0 0x8000000>;
alloc-ranges = <0x0 0x0 0x0 0x80000000>;
linux,cma-default;
};
};
};
&dcc {
+16 -1
View File
@@ -3,7 +3,7 @@
* dts file for Xilinx ZynqMP zc1751-xm015-dc1
*
* (C) Copyright 2015 - 2022, Xilinx, Inc.
* (C) Copyright 2022 - 2023, Advanced Micro Devices, Inc.
* (C) Copyright 2022 - 2026, Advanced Micro Devices, Inc.
*
* Michal Simek <michal.simek@amd.com>
*/
@@ -41,6 +41,21 @@
reg = <0x0 0x0 0x0 0x80000000>, <0x8 0x00000000 0x0 0x80000000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
cma: linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0x0 0x8000000>;
alignment = <0x0 0x8000000>;
alloc-ranges = <0x0 0x0 0x0 0x80000000>;
linux,cma-default;
};
};
clock_si5338_0: clk27 { /* u55 SI5338-GM */
compatible = "fixed-clock";
#clock-cells = <0>;
+16 -1
View File
@@ -3,7 +3,7 @@
* dts file for Xilinx ZynqMP zc1751-xm016-dc2
*
* (C) Copyright 2015 - 2022, Xilinx, Inc.
* (C) Copyright 2022 - 2023, Advanced Micro Devices, Inc.
* (C) Copyright 2022 - 2026, Advanced Micro Devices, Inc.
*
* Michal Simek <michal.simek@amd.com>
*/
@@ -39,6 +39,21 @@
device_type = "memory";
reg = <0x0 0x0 0x0 0x80000000>, <0x8 0x00000000 0x0 0x80000000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
cma: linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0x0 0x8000000>;
alignment = <0x0 0x8000000>;
alloc-ranges = <0x0 0x0 0x0 0x80000000>;
linux,cma-default;
};
};
};
&can0 {
+15
View File
@@ -39,6 +39,21 @@
reg = <0x0 0x0 0x0 0x80000000>, <0x8 0x00000000 0x0 0x80000000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
cma: linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0x0 0x8000000>;
alignment = <0x0 0x8000000>;
alloc-ranges = <0x0 0x0 0x0 0x80000000>;
linux,cma-default;
};
};
clock_si5338_2: clk26 {
compatible = "fixed-clock";
#clock-cells = <0>;
+15
View File
@@ -38,6 +38,21 @@
device_type = "memory";
reg = <0x0 0x0 0x0 0x80000000>, <0x8 0x00000000 0x0 0x80000000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
cma: linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0x0 0x8000000>;
alignment = <0x0 0x8000000>;
alloc-ranges = <0x0 0x0 0x0 0x80000000>;
linux,cma-default;
};
};
};
&can0 {
+15
View File
@@ -37,6 +37,21 @@
device_type = "memory";
reg = <0x0 0x0 0x0 0x80000000>, <0x8 0x00000000 0x0 0x80000000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
cma: linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0x0 0x8000000>;
alignment = <0x0 0x8000000>;
alloc-ranges = <0x0 0x0 0x0 0x80000000>;
linux,cma-default;
};
};
};
&fpd_dma_chan1 {
+16 -1
View File
@@ -3,7 +3,7 @@
* dts file for Xilinx ZynqMP ZCU100 revC
*
* (C) Copyright 2016 - 2022, Xilinx, Inc.
* (C) Copyright 2022 - 2023, Advanced Micro Devices, Inc.
* (C) Copyright 2022 - 2026, Advanced Micro Devices, Inc.
*
* Michal Simek <michal.simek@amd.com>
* Nathalie Chan King Choy
@@ -47,6 +47,21 @@
reg = <0x0 0x0 0x0 0x80000000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
cma: linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0x0 0x8000000>;
alignment = <0x0 0x8000000>;
alloc-ranges = <0x0 0x0 0x0 0x80000000>;
linux,cma-default;
};
};
gpio-keys {
compatible = "gpio-keys";
autorepeat;
+16 -1
View File
@@ -3,7 +3,7 @@
* dts file for Xilinx ZynqMP ZCU102 RevA
*
* (C) Copyright 2015 - 2022, Xilinx, Inc.
* (C) Copyright 2022 - 2023, Advanced Micro Devices, Inc.
* (C) Copyright 2022 - 2026, Advanced Micro Devices, Inc.
*
* Michal Simek <michal.simek@amd.com>
*/
@@ -45,6 +45,21 @@
reg = <0x0 0x0 0x0 0x80000000>, <0x8 0x00000000 0x0 0x80000000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
cma: linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0x0 0x8000000>;
alignment = <0x0 0x8000000>;
alloc-ranges = <0x0 0x0 0x0 0x80000000>;
linux,cma-default;
};
};
gpio-keys {
compatible = "gpio-keys";
autorepeat;
+16 -1
View File
@@ -3,7 +3,7 @@
* dts file for Xilinx ZynqMP ZCU104
*
* (C) Copyright 2017 - 2022, Xilinx, Inc.
* (C) Copyright 2022 - 2023, Advanced Micro Devices, Inc.
* (C) Copyright 2022 - 2026, Advanced Micro Devices, Inc.
*
* Michal Simek <michal.simek@amd.com>
*/
@@ -43,6 +43,21 @@
reg = <0x0 0x0 0x0 0x80000000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
cma: linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0x0 0x8000000>;
alignment = <0x0 0x8000000>;
alloc-ranges = <0x0 0x0 0x0 0x80000000>;
linux,cma-default;
};
};
clock_8t49n287_5: clk125 {
compatible = "fixed-clock";
#clock-cells = <0>;
+16 -1
View File
@@ -3,7 +3,7 @@
* dts file for Xilinx ZynqMP ZCU104
*
* (C) Copyright 2017 - 2022, Xilinx, Inc.
* (C) Copyright 2022 - 2023, Advanced Micro Devices, Inc.
* (C) Copyright 2022 - 2026, Advanced Micro Devices, Inc.
*
* Michal Simek <michal.simek@amd.com>
*/
@@ -43,6 +43,21 @@
reg = <0x0 0x0 0x0 0x80000000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
cma: linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0x0 0x8000000>;
alignment = <0x0 0x8000000>;
alloc-ranges = <0x0 0x0 0x0 0x80000000>;
linux,cma-default;
};
};
ina226 {
compatible = "iio-hwmon";
io-channels = <&u183 0>, <&u183 1>, <&u183 2>, <&u183 3>;
+16 -1
View File
@@ -3,7 +3,7 @@
* dts file for Xilinx ZynqMP ZCU106
*
* (C) Copyright 2016 - 2022, Xilinx, Inc.
* (C) Copyright 2022 - 2023, Advanced Micro Devices, Inc.
* (C) Copyright 2022 - 2026, Advanced Micro Devices, Inc.
*
* Michal Simek <michal.simek@amd.com>
*/
@@ -45,6 +45,21 @@
reg = <0x0 0x0 0x0 0x80000000>, <0x8 0x00000000 0x0 0x80000000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
cma: linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0x0 0x8000000>;
alignment = <0x0 0x8000000>;
alloc-ranges = <0x0 0x0 0x0 0x80000000>;
linux,cma-default;
};
};
gpio-keys {
compatible = "gpio-keys";
autorepeat;
+16 -1
View File
@@ -3,7 +3,7 @@
* dts file for Xilinx ZynqMP ZCU111
*
* (C) Copyright 2017 - 2022, Xilinx, Inc.
* (C) Copyright 2022 - 2023, Advanced Micro Devices, Inc.
* (C) Copyright 2022 - 2026, Advanced Micro Devices, Inc.
*
* Michal Simek <michal.simek@amd.com>
*/
@@ -45,6 +45,21 @@
/* Another 4GB connected to PL */
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
cma: linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0x0 0x8000000>;
alignment = <0x0 0x8000000>;
alloc-ranges = <0x0 0x0 0x0 0x80000000>;
linux,cma-default;
};
};
gpio-keys {
compatible = "gpio-keys";
autorepeat;
+15
View File
@@ -32,6 +32,21 @@
device_type = "memory";
reg = <0x0 0x0 0x0 0x80000000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
cma: linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0x0 0x8000000>;
alignment = <0x0 0x8000000>;
alloc-ranges = <0x0 0x0 0x0 0x80000000>;
linux,cma-default;
};
};
};
&dcc {
+15
View File
@@ -35,6 +35,21 @@
device_type = "memory";
reg = <0x0 0x0 0x0 0x80000000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
cma: linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0x0 0x8000000>;
alignment = <0x0 0x8000000>;
alloc-ranges = <0x0 0x0 0x0 0x80000000>;
linux,cma-default;
};
};
};
&dcc {
+15
View File
@@ -36,6 +36,21 @@
device_type = "memory";
reg = <0x0 0x0 0x0 0x80000000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
cma: linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0x0 0x8000000>;
alignment = <0x0 0x8000000>;
alloc-ranges = <0x0 0x0 0x0 0x80000000>;
linux,cma-default;
};
};
};
&dcc {
+15
View File
@@ -43,6 +43,21 @@
reg = <0x0 0x0 0x0 0x80000000>, <0x8 0x00000000 0x0 0x80000000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
cma: linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0x0 0x8000000>;
alignment = <0x0 0x8000000>;
alloc-ranges = <0x0 0x0 0x0 0x80000000>;
linux,cma-default;
};
};
gpio-keys {
compatible = "gpio-keys";
autorepeat;
+15
View File
@@ -43,6 +43,21 @@
reg = <0x0 0x0 0x0 0x80000000>, <0x8 0x00000000 0x0 0x80000000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
cma: linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0x0 0x8000000>;
alignment = <0x0 0x8000000>;
alloc-ranges = <0x0 0x0 0x0 0x80000000>;
linux,cma-default;
};
};
gpio-keys {
compatible = "gpio-keys";
autorepeat;
+16 -1
View File
@@ -3,7 +3,7 @@
* dts file for Xilinx ZynqMP ZCU670 (67DR)
*
* (C) Copyright 2017 - 2022, Xilinx, Inc.
* (C) Copyright 2022 - 2023, Advanced Micro Devices, Inc.
* (C) Copyright 2022 - 2026, Advanced Micro Devices, Inc.
*
* Michal Simek <michal.simek@amd.com>
*/
@@ -46,6 +46,21 @@
/* Another 4GB connected to PL */
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
cma: linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0x0 0x8000000>;
alignment = <0x0 0x8000000>;
alloc-ranges = <0x0 0x0 0x0 0x80000000>;
linux,cma-default;
};
};
gpio-keys {
compatible = "gpio-keys";
autorepeat;
+16 -1
View File
@@ -3,7 +3,7 @@
* dts file for Xilinx ZynqMP ZCU670 (67DR) revB
*
* (C) Copyright 2017 - 2022, Xilinx, Inc.
* (C) Copyright 2022 - 2023, Advanced Micro Devices, Inc.
* (C) Copyright 2022 - 2026, Advanced Micro Devices, Inc.
*
* Michal Simek <michal.simek@amd.com>
*/
@@ -46,6 +46,21 @@
/* Another 4GB connected to PL */
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
cma: linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0x0 0x8000000>;
alignment = <0x0 0x8000000>;
alloc-ranges = <0x0 0x0 0x0 0x80000000>;
linux,cma-default;
};
};
gpio-keys {
compatible = "gpio-keys";
autorepeat;