mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-11-01 00:48:50 +00:00
54bb4a91b2
Xen on Arm has gained new support recently to calculate and report extended regions (unused address space) safe to use for external mappings. These regions are reported via "reg" property under "hypervisor" node in the guest device-tree. As region 0 is reserved for grant table space (always present), the indexes for extended regions are 1...N. No device-tree bindings update is needed (except clarifying the text) as guest infers the presence of extended regions from the number of regions in "reg" property. While at it, remove the following sentence: "This property is unnecessary when booting Dom0 using ACPI." for "reg" and "interrupts" properties as the initialization is not done via device-tree "hypervisor" node in that case anyway. Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org> Acked-by: Rob Herring <robh@kernel.org> Link: https://lore.kernel.org/r/1639080336-26573-7-git-send-email-olekstysh@gmail.com Signed-off-by: Juergen Gross <jgross@suse.com>
62 lines
2.9 KiB
Text
62 lines
2.9 KiB
Text
* Xen hypervisor device tree bindings
|
|
|
|
Xen ARM virtual platforms shall have a top-level "hypervisor" node with
|
|
the following properties:
|
|
|
|
- compatible:
|
|
compatible = "xen,xen-<version>", "xen,xen";
|
|
where <version> is the version of the Xen ABI of the platform.
|
|
|
|
- reg: specifies the base physical address and size of the regions in memory
|
|
where the special resources should be mapped to, using an HYPERVISOR_memory_op
|
|
hypercall.
|
|
Region 0 is reserved for mapping grant table, it must be always present.
|
|
The memory region is large enough to map the whole grant table (it is larger
|
|
or equal to gnttab_max_grant_frames()).
|
|
Regions 1...N are extended regions (unused address space) for mapping foreign
|
|
GFNs and grants, they might be absent if there is nothing to expose.
|
|
|
|
- interrupts: the interrupt used by Xen to inject event notifications.
|
|
A GIC node is also required.
|
|
|
|
To support UEFI on Xen ARM virtual platforms, Xen populates the FDT "uefi" node
|
|
under /hypervisor with following parameters:
|
|
|
|
________________________________________________________________________________
|
|
Name | Size | Description
|
|
================================================================================
|
|
xen,uefi-system-table | 64-bit | Guest physical address of the UEFI System
|
|
| | Table.
|
|
--------------------------------------------------------------------------------
|
|
xen,uefi-mmap-start | 64-bit | Guest physical address of the UEFI memory
|
|
| | map.
|
|
--------------------------------------------------------------------------------
|
|
xen,uefi-mmap-size | 32-bit | Size in bytes of the UEFI memory map
|
|
| | pointed to in previous entry.
|
|
--------------------------------------------------------------------------------
|
|
xen,uefi-mmap-desc-size | 32-bit | Size in bytes of each entry in the UEFI
|
|
| | memory map.
|
|
--------------------------------------------------------------------------------
|
|
xen,uefi-mmap-desc-ver | 32-bit | Version of the mmap descriptor format.
|
|
--------------------------------------------------------------------------------
|
|
|
|
Example (assuming #address-cells = <2> and #size-cells = <2>):
|
|
|
|
hypervisor {
|
|
compatible = "xen,xen-4.3", "xen,xen";
|
|
reg = <0 0xb0000000 0 0x20000>;
|
|
interrupts = <1 15 0xf08>;
|
|
uefi {
|
|
xen,uefi-system-table = <0xXXXXXXXX>;
|
|
xen,uefi-mmap-start = <0xXXXXXXXX>;
|
|
xen,uefi-mmap-size = <0xXXXXXXXX>;
|
|
xen,uefi-mmap-desc-size = <0xXXXXXXXX>;
|
|
xen,uefi-mmap-desc-ver = <0xXXXXXXXX>;
|
|
};
|
|
};
|
|
|
|
The format and meaning of the "xen,uefi-*" parameters are similar to those in
|
|
Documentation/arm/uefi.rst, which are provided by the regular UEFI stub. However
|
|
they differ because they are provided by the Xen hypervisor, together with a set
|
|
of UEFI runtime services implemented via hypercalls, see
|
|
http://xenbits.xen.org/docs/unstable/hypercall/x86_64/include,public,platform.h.html.
|