Message ID | 20220619124316.378365-2-burzalodowa@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [ImageBuilder,1/2] uboot-script-gen: Skip dom0 instead of exiting if DOM0_KERNEL is not set | expand |
On Sun, 19 Jun 2022, Xenia Ragiadakou wrote: > Direct mapping for dom0less VMs is disabled by default in XEN and can be > enabled through the 'direct-map' property. > Add a new config parameter DOMU_DIRECT_MAP to be able to enable or disable > direct mapping, i.e set to 1 for enabling and to 0 for disabling. > This parameter is optional. Direct mapping is enabled by default for all > dom0less VMs with static allocation. > > The property 'direct-map' is a boolean property. Boolean properties are true > if present and false if missing. > Add a new data_type 'bool' in function dt_set() to setup a boolean property. > > Signed-off-by: Xenia Ragiadakou <burzalodowa@gmail.com> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org> > --- > README.md | 4 ++++ > scripts/uboot-script-gen | 18 ++++++++++++++++++ > 2 files changed, 22 insertions(+) > > diff --git a/README.md b/README.md > index c52e4b9..17ff206 100644 > --- a/README.md > +++ b/README.md > @@ -168,6 +168,10 @@ Where: > if specified, indicates the host physical address regions > [baseaddr, baseaddr + size) to be reserved to the VM for static allocation. > > +- DOMU_DIRECT_MAP[number] can be set to 1 or 0. > + If set to 1, the VM is direct mapped. The default is 1. > + This is only applicable when DOMU_STATIC_MEM is specified. > + > - LINUX is optional but specifies the Linux kernel for when Xen is NOT > used. To enable this set any LINUX\_\* variables and do NOT set the > XEN variable. > diff --git a/scripts/uboot-script-gen b/scripts/uboot-script-gen > index bdc8a6b..e85c6ec 100755 > --- a/scripts/uboot-script-gen > +++ b/scripts/uboot-script-gen > @@ -27,6 +27,7 @@ function dt_mknode() > # hex > # str > # str_a > +# bool > function dt_set() > { > local path=$1 > @@ -49,6 +50,12 @@ function dt_set() > array+=" \"$element\"" > done > echo "fdt set $path $var $array" >> $UBOOT_SOURCE > + elif test $data_type = "bool" > + then > + if test "$data" -eq 1 > + then > + echo "fdt set $path $var" >> $UBOOT_SOURCE > + fi > else > echo "fdt set $path $var \"$data\"" >> $UBOOT_SOURCE > fi > @@ -65,6 +72,12 @@ function dt_set() > elif test $data_type = "str_a" > then > fdtput $FDTEDIT -p -t s $path $var $data > + elif test $data_type = "bool" > + then > + if test "$data" -eq 1 > + then > + fdtput $FDTEDIT -p $path $var > + fi > else > fdtput $FDTEDIT -p -t s $path $var "$data" > fi > @@ -206,6 +219,7 @@ function xen_device_tree_editing() > if test "${DOMU_STATIC_MEM[$i]}" > then > add_device_tree_static_mem "/chosen/domU$i" "${DOMU_STATIC_MEM[$i]}" > + dt_set "/chosen/domU$i" "direct-map" "bool" "${DOMU_DIRECT_MAP[$i]}" > fi > dt_set "/chosen/domU$i" "vpl011" "hex" "0x1" > if test "$DOM0_KERNEL" > @@ -470,6 +484,10 @@ function xen_config() > then > DOMU_CMD[$i]="console=ttyAMA0" > fi > + if test -z "${DOMU_DIRECT_MAP[$i]}" > + then > + DOMU_DIRECT_MAP[$i]=1 > + fi > i=$(( $i + 1 )) > done > } > -- > 2.34.1 >
(Resending mail, as the previous delivery failed) On 21/06/2022 12:34, Ayan Kumar Halder wrote: > Hi, > > On 19/06/2022 13:43, Xenia Ragiadakou wrote: >> Direct mapping for dom0less VMs is disabled by default in XEN and can be >> enabled through the 'direct-map' property. >> Add a new config parameter DOMU_DIRECT_MAP to be able to enable or >> disable >> direct mapping, i.e set to 1 for enabling and to 0 for disabling. >> This parameter is optional. Direct mapping is enabled by default for all >> dom0less VMs with static allocation. >> >> The property 'direct-map' is a boolean property. Boolean properties >> are true >> if present and false if missing. >> Add a new data_type 'bool' in function dt_set() to setup a boolean >> property. >> >> Signed-off-by: Xenia Ragiadakou <burzalodowa@gmail.com> >> --- >> README.md | 4 ++++ >> scripts/uboot-script-gen | 18 ++++++++++++++++++ >> 2 files changed, 22 insertions(+) >> >> diff --git a/README.md b/README.md >> index c52e4b9..17ff206 100644 >> --- a/README.md >> +++ b/README.md >> @@ -168,6 +168,10 @@ Where: >> if specified, indicates the host physical address regions >> [baseaddr, baseaddr + size) to be reserved to the VM for static >> allocation. >> +- DOMU_DIRECT_MAP[number] can be set to 1 or 0. >> + If set to 1, the VM is direct mapped. The default is 1. >> + This is only applicable when DOMU_STATIC_MEM is specified. > > Can't we just use $DOMU_STATIC_MEM to set "direct-map" in dts ? > > Is there a valid use-case for static allocation without direct mapping > ? Sorry, it is not very clear to me. > > - Ayan > >> + >> - LINUX is optional but specifies the Linux kernel for when Xen is NOT >> used. To enable this set any LINUX\_\* variables and do NOT set the >> XEN variable. >> diff --git a/scripts/uboot-script-gen b/scripts/uboot-script-gen >> index bdc8a6b..e85c6ec 100755 >> --- a/scripts/uboot-script-gen >> +++ b/scripts/uboot-script-gen >> @@ -27,6 +27,7 @@ function dt_mknode() >> # hex >> # str >> # str_a >> +# bool >> function dt_set() >> { >> local path=$1 >> @@ -49,6 +50,12 @@ function dt_set() >> array+=" \"$element\"" >> done >> echo "fdt set $path $var $array" >> $UBOOT_SOURCE >> + elif test $data_type = "bool" >> + then >> + if test "$data" -eq 1 >> + then >> + echo "fdt set $path $var" >> $UBOOT_SOURCE >> + fi >> else >> echo "fdt set $path $var \"$data\"" >> $UBOOT_SOURCE >> fi >> @@ -65,6 +72,12 @@ function dt_set() >> elif test $data_type = "str_a" >> then >> fdtput $FDTEDIT -p -t s $path $var $data >> + elif test $data_type = "bool" >> + then >> + if test "$data" -eq 1 >> + then >> + fdtput $FDTEDIT -p $path $var >> + fi >> else >> fdtput $FDTEDIT -p -t s $path $var "$data" >> fi >> @@ -206,6 +219,7 @@ function xen_device_tree_editing() >> if test "${DOMU_STATIC_MEM[$i]}" >> then >> add_device_tree_static_mem "/chosen/domU$i" >> "${DOMU_STATIC_MEM[$i]}" >> + dt_set "/chosen/domU$i" "direct-map" "bool" >> "${DOMU_DIRECT_MAP[$i]}" >> fi >> dt_set "/chosen/domU$i" "vpl011" "hex" "0x1" >> if test "$DOM0_KERNEL" >> @@ -470,6 +484,10 @@ function xen_config() >> then >> DOMU_CMD[$i]="console=ttyAMA0" >> fi >> + if test -z "${DOMU_DIRECT_MAP[$i]}" >> + then >> + DOMU_DIRECT_MAP[$i]=1 >> + fi >> i=$(( $i + 1 )) >> done >> }
Hi Ayan! On 6/23/22 13:02, Ayan Kumar Halder wrote: > (Resending mail, as the previous delivery failed) > > On 21/06/2022 12:34, Ayan Kumar Halder wrote: >> Hi, >> >> On 19/06/2022 13:43, Xenia Ragiadakou wrote: >>> Direct mapping for dom0less VMs is disabled by default in XEN and >>> can be >>> enabled through the 'direct-map' property. >>> Add a new config parameter DOMU_DIRECT_MAP to be able to enable or >>> disable >>> direct mapping, i.e set to 1 for enabling and to 0 for disabling. >>> This parameter is optional. Direct mapping is enabled by default for >>> all >>> dom0less VMs with static allocation. >>> >>> The property 'direct-map' is a boolean property. Boolean properties >>> are true >>> if present and false if missing. >>> Add a new data_type 'bool' in function dt_set() to setup a boolean >>> property. >>> >>> Signed-off-by: Xenia Ragiadakou <burzalodowa@gmail.com> >>> --- >>> README.md | 4 ++++ >>> scripts/uboot-script-gen | 18 ++++++++++++++++++ >>> 2 files changed, 22 insertions(+) >>> >>> diff --git a/README.md b/README.md >>> index c52e4b9..17ff206 100644 >>> --- a/README.md >>> +++ b/README.md >>> @@ -168,6 +168,10 @@ Where: >>> if specified, indicates the host physical address regions >>> [baseaddr, baseaddr + size) to be reserved to the VM for static >>> allocation. >>> +- DOMU_DIRECT_MAP[number] can be set to 1 or 0. >>> + If set to 1, the VM is direct mapped. The default is 1. >>> + This is only applicable when DOMU_STATIC_MEM is specified. >> >> Can't we just use $DOMU_STATIC_MEM to set "direct-map" in dts ? >> >> Is there a valid use-case for static allocation without direct >> mapping ? Sorry, it is not very clear to me. >> Thank you for taking the time to review the patch! I agree with you that static allocation without direct mapping is not a common configuration, that's why, in the script, direct mapping is enabled by default. My reasoning was that, since direct mapping is not enabled by default in XEN for all domUs with static allocation but instead requires the 'direct-map' property to be present in the domU dt node, then such a configuration is still valid. I thought that with this parameter it is much easier to setup (and test) both configurations. Xenia
On 23/06/2022 13:05, xenia wrote: > Hi Ayan! Hi Xenia, > > On 6/23/22 13:02, Ayan Kumar Halder wrote: >> (Resending mail, as the previous delivery failed) >> >> On 21/06/2022 12:34, Ayan Kumar Halder wrote: >>> Hi, >>> >>> On 19/06/2022 13:43, Xenia Ragiadakou wrote: >>>> Direct mapping for dom0less VMs is disabled by default in XEN and >>>> can be >>>> enabled through the 'direct-map' property. >>>> Add a new config parameter DOMU_DIRECT_MAP to be able to enable or >>>> disable >>>> direct mapping, i.e set to 1 for enabling and to 0 for disabling. >>>> This parameter is optional. Direct mapping is enabled by default >>>> for all >>>> dom0less VMs with static allocation. >>>> >>>> The property 'direct-map' is a boolean property. Boolean properties >>>> are true >>>> if present and false if missing. >>>> Add a new data_type 'bool' in function dt_set() to setup a boolean >>>> property. >>>> >>>> Signed-off-by: Xenia Ragiadakou <burzalodowa@gmail.com> >>>> --- >>>> README.md | 4 ++++ >>>> scripts/uboot-script-gen | 18 ++++++++++++++++++ >>>> 2 files changed, 22 insertions(+) >>>> >>>> diff --git a/README.md b/README.md >>>> index c52e4b9..17ff206 100644 >>>> --- a/README.md >>>> +++ b/README.md >>>> @@ -168,6 +168,10 @@ Where: >>>> if specified, indicates the host physical address regions >>>> [baseaddr, baseaddr + size) to be reserved to the VM for static >>>> allocation. >>>> +- DOMU_DIRECT_MAP[number] can be set to 1 or 0. >>>> + If set to 1, the VM is direct mapped. The default is 1. >>>> + This is only applicable when DOMU_STATIC_MEM is specified. >>> >>> Can't we just use $DOMU_STATIC_MEM to set "direct-map" in dts ? >>> >>> Is there a valid use-case for static allocation without direct >>> mapping ? Sorry, it is not very clear to me. >>> > Thank you for taking the time to review the patch! > > I agree with you that static allocation without direct mapping is not > a common configuration, that's why, in the script, direct mapping is > enabled by default. > > My reasoning was that, since direct mapping is not enabled by default > in XEN for all domUs with static allocation but instead requires the > 'direct-map' property to be present in the domU dt node, then such a > configuration is still valid. > I thought that with this parameter it is much easier to setup (and > test) both configurations. Thanks for the explanation. This makes sense to me. :) In this case, can we remove the below snippet from your patch. + if test -z "${DOMU_DIRECT_MAP[$i]}" + then + DOMU_DIRECT_MAP[$i]=1 + fi The reason being if the user wants to set 'direct-map' prop in dts, then the user can specify it in the config. Else, (by default) the direct-map will be set to false. This is inline with XEN's behavior as you described above. - Ayan - Ayan > > > Xenia >
diff --git a/README.md b/README.md index c52e4b9..17ff206 100644 --- a/README.md +++ b/README.md @@ -168,6 +168,10 @@ Where: if specified, indicates the host physical address regions [baseaddr, baseaddr + size) to be reserved to the VM for static allocation. +- DOMU_DIRECT_MAP[number] can be set to 1 or 0. + If set to 1, the VM is direct mapped. The default is 1. + This is only applicable when DOMU_STATIC_MEM is specified. + - LINUX is optional but specifies the Linux kernel for when Xen is NOT used. To enable this set any LINUX\_\* variables and do NOT set the XEN variable. diff --git a/scripts/uboot-script-gen b/scripts/uboot-script-gen index bdc8a6b..e85c6ec 100755 --- a/scripts/uboot-script-gen +++ b/scripts/uboot-script-gen @@ -27,6 +27,7 @@ function dt_mknode() # hex # str # str_a +# bool function dt_set() { local path=$1 @@ -49,6 +50,12 @@ function dt_set() array+=" \"$element\"" done echo "fdt set $path $var $array" >> $UBOOT_SOURCE + elif test $data_type = "bool" + then + if test "$data" -eq 1 + then + echo "fdt set $path $var" >> $UBOOT_SOURCE + fi else echo "fdt set $path $var \"$data\"" >> $UBOOT_SOURCE fi @@ -65,6 +72,12 @@ function dt_set() elif test $data_type = "str_a" then fdtput $FDTEDIT -p -t s $path $var $data + elif test $data_type = "bool" + then + if test "$data" -eq 1 + then + fdtput $FDTEDIT -p $path $var + fi else fdtput $FDTEDIT -p -t s $path $var "$data" fi @@ -206,6 +219,7 @@ function xen_device_tree_editing() if test "${DOMU_STATIC_MEM[$i]}" then add_device_tree_static_mem "/chosen/domU$i" "${DOMU_STATIC_MEM[$i]}" + dt_set "/chosen/domU$i" "direct-map" "bool" "${DOMU_DIRECT_MAP[$i]}" fi dt_set "/chosen/domU$i" "vpl011" "hex" "0x1" if test "$DOM0_KERNEL" @@ -470,6 +484,10 @@ function xen_config() then DOMU_CMD[$i]="console=ttyAMA0" fi + if test -z "${DOMU_DIRECT_MAP[$i]}" + then + DOMU_DIRECT_MAP[$i]=1 + fi i=$(( $i + 1 )) done }
Direct mapping for dom0less VMs is disabled by default in XEN and can be enabled through the 'direct-map' property. Add a new config parameter DOMU_DIRECT_MAP to be able to enable or disable direct mapping, i.e set to 1 for enabling and to 0 for disabling. This parameter is optional. Direct mapping is enabled by default for all dom0less VMs with static allocation. The property 'direct-map' is a boolean property. Boolean properties are true if present and false if missing. Add a new data_type 'bool' in function dt_set() to setup a boolean property. Signed-off-by: Xenia Ragiadakou <burzalodowa@gmail.com> --- README.md | 4 ++++ scripts/uboot-script-gen | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+)