Re: [Query] Unable to probe reserved-memory carveouts in DomU with Xen

"Padhi, Beleswar" <[email protected]>
Newsgroups org.xenproject.lists.xen-devel
Message-ID <[email protected]>
Hello,

Thanks for the response! I see, this would solve the cma problem. But 
there are usecases
when we want to use the reserved-memory node; one example is the 
firmware for
remote processors. In that case, how do we passthrough reserved-memory 
nodes to
DomUs?

Example:
  60
  61                 mcu_r52_0_fw_memory_region: memory@a1000000 {
  62                         compatible = "shared-dma-pool";
  63                         reg = <0x00 0xa1000000 0x00 0x100000>;
  64                         no-map;
  65                 };

Thanks,
Beleswar

On 7/24/2026 1:52 PM, Orzel, Michal wrote:
> Hi,
>
> I'm afraid this will not work. The reason is that Xen only copies nodes from the
> passthrough DTB to final DTB that are placed under `/passthrough` node and
> `/aliases`. /reserved-memory needs to be under root node `/`, therefore it will
> not be copied. However, it seems like you are not using CMA node specifying a
> fixed memory region (using `reg`) but size. In that case you should be able to
> achieve the same using `cma=128M` kernel cmdline parameter.
>
> ~Michal
>
> On 24-Jul-26 08:55, Beleswar Prasad Padhi wrote:
>> Hi all,
>>
>> I have been trying to use reserved-memory carveouts in DomU, but failing constantly.
>>
>> This is the log from Dom1 boot:
>>
>> [    0.000000] earlycon: uart8250 at MMIO32 0x0000000053914000 (options '115200n
>> 8')
>> [    0.000000] printk: legacy bootconsole [uart8250] enabled
>> [    0.000000] Xen 4.21 support found
>> [    0.000000] efi: UEFI not found.
>> *[    0.000000] OF: reserved mem: Reserved memory: No reserved-memory node in the DT*
>> [    0.000000] Zone ranges:
>> [    0.000000]   DMA      [mem 0x0000000040000000-0x0000000051ffffff]
>> [    0.000000]   DMA32    empty
>> [    0.000000]   Normal   empty
>> [    0.000000] Movable zone start for each node
>> [    0.000000] Early memory node ranges
>> [    0.000000]   node   0: [mem 0x0000000040000000-0x0000000051ffffff]
>> [    0.000000] Initmem setup node 0 [mem 0x0000000040000000-0x0000000051ffffff]
>> [    0.000000] On node 0, zone DMA: 24576 pages in unavailable ranges
>> [    0.000000] cma: Reserved 32 MiB at 0x000000004f800000
>>
>> This is my passthrough.dts:
>>
>>      1 /*
>>      2 * This is a partial DT for passthrough node to DomU.
>>      3 */
>>      4 #include <dt-bindings/interrupt-controller/irq.h>
>>      5 #include <dt-bindings/interrupt-controller/arm-gic.h>
>>      6
>>      7 /dts-v1/;
>>      8
>>      9 / {
>>     10         #address-cells = <2>;
>>     11         #size-cells = <1>;
>>     12
>> ~  13         reserved-memory {
>> ~  14                 #address-cells = <2>;
>> ~  15                 #size-cells = <2>;
>> +  16                 ranges;
>> +  17
>> +  18                 /* CMA region for framebuffer allocation */
>> +  19                 linux,cma {
>> +  20                         compatible = "shared-dma-pool";
>> +  21                         reusable;
>> +  22                         size = <0x00 0x08000000>; /* 128MB CMA pool */
>> +  23                         linux,cma-default;
>> +  24                 };
>>     25         };
>>     26
>>     27         passthrough {
>>     28                 compatible = "simple-bus";
>>     29                 ranges;
>>     30                 #address-cells = <2>;
>>     31                 #size-cells = <1>;
>>     32
>>     33                 misc_clk: misc_clk {
>>     34                         #clock-cells = <0>;
>>     35                         clock-frequency = <100000000>;
>>     36                         compatible = "fixed-clock";
>>     37                 };
>>
>>     73                 uart@53914000 {
>>     74                         compatible = "ns16550a";
>>     75                         reg = <0x00 0x53914000 0x1000>;
>> ~_ 76                         interrupts = <0 302 4>;
>>     77                         reg-shift = <2>;
>>     78                         reg-io-width = <4>;
>>     79                         clocks = <&misc_clk>;
>>     80                         oversampling-rate = <16>;
>>     81                         programmable-char-timeout = <4>;
>>     82                         status = "okay";
>>     83                         xen,path = "/bus@100000/bus@22000000/uart@53914000";
>>     84                         xen,reg = <0x0 0x53914000 0x1000 0x0 0x53914000>;
>>     85                         xen,force-assign-without-iommu;
>>     86                 };
>>     87          };
>>
>>     88    };
>>
>>
>> And this is my dom1.cfg file:
>>
>>   1 name = "dom1"
>>   2 memory = 256
>>   3 vcpus = 4
>>   4
>>   5 kernel = "/boot/xen-dom1/Image"
>>   6 extra = "console=ttyS0,115200n8 earlycon=uart8250,mmio32,0x53914000,115200n8 loglevel=8 root=/dev/xvda rw"
>>   7
>>   8 # UART1 (0x53914000) passthrough to Dom1 console
>>   9 iomem = ["0x53914,1"]
>> 11 irqs = [ 334 ]
>> 12 dtdev = [ "/bus@100000/bus@22000000/uart@53914000"]
>> 13 vif = ["script=vif-route"]
>> 14 device_tree = "/boot/xen-dom1/passthrough.dtb"
>> 15 #
>> 17 disk = ["phy:/dev/vda2,xvda,rw"]
>>
>>
>> Am I doing something wrong? Any help or debugging leads would be really appreciated...
>>
>> Thank you,
>> Beleswar
>>
>>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.