On 24/05/2023 11:05, Bertrand Marquis wrote:
Hi Luca,
Hi,
On 23 May 2023, at 09:43, Luca Fancellu <luca.fance...@arm.com> wrote:
Add a command line parameter to allow Dom0 the use of SVE resources,
the command line parameter sve=<integer>, sub argument of dom0=,
controls the feature on this domain and sets the maximum SVE vector
length for Dom0.
Add a new function, parse_signed_integer(), to parse an integer
command line argument.
Signed-off-by: Luca Fancellu <luca.fance...@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marq...@arm.com>
with ...
---
Changes from v6:
- Fixed case for e==NULL in parse_signed_integer, drop parenthesis
from if conditions, delete inline sve_domctl_vl_param and rely on
DCE from the compiler (Jan)
- Drop parenthesis from opt_dom0_sve (Julien)
- Do not continue if 'sve' is in command line args but
CONFIG_ARM64_SVE is not selected:
https://lore.kernel.org/all/7614ae25-f59d-430a-9c3e-30b1ce0e1...@arm.com/
Changes from v5:
- stop the domain if VL error occurs (Julien, Bertrand)
- update the documentation
- Rename sve_sanitize_vl_param to sve_domctl_vl_param to
mark the fact that we are sanitizing a parameter coming from
the user before encoding it into sve_vl in domctl structure.
(suggestion from Bertrand in a separate discussion)
- update comment in parse_signed_integer, return boolean in
sve_domctl_vl_param (Jan).
Changes from v4:
- Negative values as user param means max supported HW VL (Jan)
- update documentation, make use of no_config_param(), rename
parse_integer into parse_signed_integer and take long long *,
also put a comment on the -2 return condition, update
declaration comment to reflect the modifications (Jan)
Changes from v3:
- Don't use fixed len types when not needed (Jan)
- renamed domainconfig_encode_vl to sve_encode_vl
- Use a sub argument of dom0= to enable the feature (Jan)
- Add parse_integer() function
Changes from v2:
- xen_domctl_createdomain field has changed into sve_vl and its
value now is the VL / 128, create an helper function for that.
Changes from v1:
- No changes
Changes from RFC:
- Changed docs to explain that the domain won't be created if the
requested vector length is above the supported one from the
platform.
---
docs/misc/xen-command-line.pandoc | 20 ++++++++++++++++++--
xen/arch/arm/arm64/sve.c | 20 ++++++++++++++++++++
xen/arch/arm/domain_build.c | 26 ++++++++++++++++++++++++++
xen/arch/arm/include/asm/arm64/sve.h | 10 ++++++++++
xen/common/kernel.c | 28 ++++++++++++++++++++++++++++
xen/include/xen/lib.h | 10 ++++++++++
6 files changed, 112 insertions(+), 2 deletions(-)
diff --git a/docs/misc/xen-command-line.pandoc
b/docs/misc/xen-command-line.pandoc
index e0b89b7d3319..47e5b4eb6199 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -777,9 +777,9 @@ Specify the bit width of the DMA heap.
### dom0
= List of [ pv | pvh, shadow=<bool>, verbose=<bool>,
- cpuid-faulting=<bool>, msr-relaxed=<bool> ]
+ cpuid-faulting=<bool>, msr-relaxed=<bool> ] (x86)
- Applicability: x86
+ = List of [ sve=<integer> ] (Arm)
Controls for how dom0 is constructed on x86 systems.
@@ -838,6 +838,22 @@ Controls for how dom0 is constructed on x86 systems.
If using this option is necessary to fix an issue, please report a bug.
+Enables features on dom0 on Arm systems.
+
+* The `sve` integer parameter enables Arm SVE usage for Dom0 domain and sets
NIT: "Domain" is bit redundant here.
+ the maximum SVE vector length, the option is applicable only to AArch64
+ guests.
Here i would just remove "guests", just AArch64 is enough.
I am ok if you choose to use "AArch64 Dom0 kernels"
So far we have no use of AArch64 in our documentation. We have a few use
of Arm64 (with various uppercase).
In the code base, we seem to have a mix of AArch64 and Arm64. At the
moment, I am not going to ask for consistency in the code. But we should
aim to not introduce inconsistency in the documentation.
I don't have a strong opinion whether we should use aarch64 or arm64. My
only request is to be consistent.
Cheers,
--
Julien Grall