Message ID | 20240624075559.15484-1-michal.orzel@amd.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [ImageBuilder] Add support for omitting host paddr for static shmem regions | expand |
On Mon, 24 Jun 2024, Michal Orzel wrote: > Reflect the latest Xen support to be able to omit the host physical > address for static shared memory regions, in which case the address will > come from the Xen heap. > > Signed-off-by: Michal Orzel <michal.orzel@amd.com> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org> > --- > README.md | 7 ++++--- > scripts/uboot-script-gen | 19 +++++++++++++------ > 2 files changed, 17 insertions(+), 9 deletions(-) > > diff --git a/README.md b/README.md > index 7683492a6f7f..4fcd908c2c2f 100644 > --- a/README.md > +++ b/README.md > @@ -199,9 +199,10 @@ Where: > > - DOMU_SHARED_MEM[number]="SHM-ID HPA GPA size" > if specified, indicate SHM-ID represents the unique identifier of the shared > - memory region, the host physical address HPA will get mapped at guest > - address GPA in domU and the memory of size will be reserved to be shared > - memory. The shared memory is used between two dom0less domUs. > + memory region. The host physical address HPA is optional, if specified, will > + get mapped at guest address GPA in domU (otherwise it will come from Xen heap) > + and the memory of size will be reserved to be shared memory. The shared memory > + is used between two dom0less domUs. > > Below is an example: > NUM_DOMUS=2 > diff --git a/scripts/uboot-script-gen b/scripts/uboot-script-gen > index 20cc6ef7f892..8b664e711b10 100755 > --- a/scripts/uboot-script-gen > +++ b/scripts/uboot-script-gen > @@ -211,18 +211,25 @@ function add_device_tree_static_shared_mem() > local shared_mem_id=${shared_mem%% *} > local regions="${shared_mem#* }" > local cells=() > - local shared_mem_host=${regions%% *} > - > - dt_mknode "${path}" "shared-mem@${shared_mem_host}" > + local node_name= > > for val in ${regions[@]} > do > cells+=("$(split_value $val)") > done > > - dt_set "${path}/shared-mem@${shared_mem_host}" "compatible" "str" "xen,domain-shared-memory-v1" > - dt_set "${path}/shared-mem@${shared_mem_host}" "xen,shm-id" "str" "${shared_mem_id}" > - dt_set "${path}/shared-mem@${shared_mem_host}" "xen,shared-mem" "hex" "${cells[*]}" > + # Less than 3 cells means host address not provided > + if [ ${#cells[@]} -lt 3 ]; then > + node_name="shared-mem-${shared_mem_id}" > + else > + node_name="shared-mem@${regions%% *}" > + fi > + > + dt_mknode "${path}" "${node_name}" > + > + dt_set "${path}/${node_name}" "compatible" "str" "xen,domain-shared-memory-v1" > + dt_set "${path}/${node_name}" "xen,shm-id" "str" "${shared_mem_id}" > + dt_set "${path}/${node_name}" "xen,shared-mem" "hex" "${cells[*]}" > } > > function add_device_tree_cpupools() > -- > 2.25.1 >
diff --git a/README.md b/README.md index 7683492a6f7f..4fcd908c2c2f 100644 --- a/README.md +++ b/README.md @@ -199,9 +199,10 @@ Where: - DOMU_SHARED_MEM[number]="SHM-ID HPA GPA size" if specified, indicate SHM-ID represents the unique identifier of the shared - memory region, the host physical address HPA will get mapped at guest - address GPA in domU and the memory of size will be reserved to be shared - memory. The shared memory is used between two dom0less domUs. + memory region. The host physical address HPA is optional, if specified, will + get mapped at guest address GPA in domU (otherwise it will come from Xen heap) + and the memory of size will be reserved to be shared memory. The shared memory + is used between two dom0less domUs. Below is an example: NUM_DOMUS=2 diff --git a/scripts/uboot-script-gen b/scripts/uboot-script-gen index 20cc6ef7f892..8b664e711b10 100755 --- a/scripts/uboot-script-gen +++ b/scripts/uboot-script-gen @@ -211,18 +211,25 @@ function add_device_tree_static_shared_mem() local shared_mem_id=${shared_mem%% *} local regions="${shared_mem#* }" local cells=() - local shared_mem_host=${regions%% *} - - dt_mknode "${path}" "shared-mem@${shared_mem_host}" + local node_name= for val in ${regions[@]} do cells+=("$(split_value $val)") done - dt_set "${path}/shared-mem@${shared_mem_host}" "compatible" "str" "xen,domain-shared-memory-v1" - dt_set "${path}/shared-mem@${shared_mem_host}" "xen,shm-id" "str" "${shared_mem_id}" - dt_set "${path}/shared-mem@${shared_mem_host}" "xen,shared-mem" "hex" "${cells[*]}" + # Less than 3 cells means host address not provided + if [ ${#cells[@]} -lt 3 ]; then + node_name="shared-mem-${shared_mem_id}" + else + node_name="shared-mem@${regions%% *}" + fi + + dt_mknode "${path}" "${node_name}" + + dt_set "${path}/${node_name}" "compatible" "str" "xen,domain-shared-memory-v1" + dt_set "${path}/${node_name}" "xen,shm-id" "str" "${shared_mem_id}" + dt_set "${path}/${node_name}" "xen,shared-mem" "hex" "${cells[*]}" } function add_device_tree_cpupools()
Reflect the latest Xen support to be able to omit the host physical address for static shared memory regions, in which case the address will come from the Xen heap. Signed-off-by: Michal Orzel <michal.orzel@amd.com> --- README.md | 7 ++++--- scripts/uboot-script-gen | 19 +++++++++++++------ 2 files changed, 17 insertions(+), 9 deletions(-)