[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


  • To: Beleswar Prasad Padhi <b-padhi@xxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: "Orzel, Michal" <michal.orzel@xxxxxxx>
  • Date: Fri, 24 Jul 2026 12:23:39 +0200
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=ti.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0)
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=9eyWDh2YvX/UVIJ9wBzJzTacSY8Z7ghhw0icosbHuqg=; b=p6zQNJ42uZztVyCW5yIiEUglZLn72iGvat/uDeRwJz9mdnpRJFkKb3JfasDI844V47P1bQVweK2RcY6JYjWJ7vmlcK6H/3nU1cpHErP+ylm1rmHSrsrRrE7tc4YWBrn2kf0pQEI8P1D7CdVU8Ma1KC9eyBjqP+a2TueOGnVuF+c4az6INY7qR9WqwCNWl15YBk87KpUvD8lBcCHy2bko+mSGMCISOOY6UMXSUGZwNEfbrVgkHEZp/igTRKzfF5D6YVHhMxNPsfPbdFP4cNtNEHKtoIZ9U3pQmOkTIOpYx7zdwxfcxCW1eMN2H9D65GMvE/FmTI/eKKMzq3YPQLEH7Q==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=o+Kg9HZIvkLNVJBkF3UHp/MI+JDV5przUQEFchYa4mTW5XY050OirP8Cdm1aAHjp9L9RAMvl5GtoDcpT0WU9aH2tPbWdBkyoP40yoQyHXulPFwxPmdDEzHnddKXAGAPk7gdeXkLAT8Pk+SJcR9F3mDp74PXH1UBLmjM8TFlHFtxM//9y+u62JFLlCI9VEkma4HCSzp7Km/uoEUgsns/jfKhVtepz/0sDQM+r7OQo8jgPocw+XSPjxh5qnEA9scwPDEWOovfxhyx/4JfFAMWE7sH2zhFirSf7ZbDoBINQoTcY9Ie35kmdI+HSiUsuUa8S+MjAMWlitxdEk8+ji0FkTw==
  • Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
  • Delivery-date: Fri, 24 Jul 2026 10:24:00 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>


On 24-Jul-26 11:26, Beleswar Prasad Padhi wrote:
> 
> 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?
This is a dom0less feature (for boot time predefined domains) documented here:
https://xenbits.xenproject.org/gitweb/?p=xen.git;a=blob;f=docs/misc/arm/device-tree/booting.txt

For libxl, we don't have a nice way to do that in upstream but you can check our
Xilinx docs:
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/1718583312/Xen+on+ARM+Share+memory+between+guests

~Michal

> 
> 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
>>>>>
>>>>>




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.