|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Query] Unable to probe reserved-memory carveouts in DomU with Xen
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 >>>>> >>>>>
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |