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

Beleswar Prasad Padhi <[email protected]>
Newsgroups org.xenproject.lists.xen-devel
Message-ID <[email protected]>
On 24/07/26 14:28, Orzel, Michal wrote:
>
> On 24-Jul-26 10:32, Padhi, Beleswar wrote:
>> 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?
> I'm afraid we don't have a solution for that at the moment but this is a
> limitation we are aware of.


No problem, I can look into implementing it. Thanks for the
heads up!

>  So far, when it comes to /reserved-memory we only
> have a static shared memory feature allowing to set up a shmem communication
> region between domUs, where the range is exposed to domains in DT following this
> spec:
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/reserved-memory/xen,shared-memory.txt


I see, is there any working example or documentation on
how to use these regions? DT/dom1.cfg configuration?

Thanks a lot,
Beleswar

>
> Cheers,
> Michal
>
>> 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.