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

Re: [ImageBuilder] Add support for omitting host paddr for static shmem regions



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

Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>


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



 


Rackspace

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