[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 1/2] docs: fusa: Define the requirements for XEN_VERSION hypercall.
- To: Bertrand Marquis <Bertrand.Marquis@xxxxxxx>
- From: Ayan Kumar Halder <ayankuma@xxxxxxx>
- Date: Fri, 28 Feb 2025 11:07:30 +0000
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=xXXpqbtWnqJgjmrJ8SvofLRIAr6xWDu4kC+Azn4AFBA=; b=FBCtDAgfxJfl1xOaNjkJErgjv2FpETlhnDyqzquG6cbk0yB5orUmdEpyq8Lnv6F2BXvXc4Q448MSrAywQYLjIAFjVq+kkELHHrCvCLeJAHfU3hDgBcWMRjga7TBqAw9/ze64AQ5FXsB9wm7reZmsqABB4MmWiQQeo3At4yrYo9j+bAaUwB8BVlQIZHgwTnM44IIi66zMUmgc5O2VJMl1XqN3qWVMkAkKw5is2xBZd7LdyZtsk70v9BgqOAwdx9bDaxVpA8tSoc03LW+v1AucP4c+mVhiSwcjIj+Dg04biYtRkSkOgoa9tC/E9vwiVVpu8A7EKviYAEoMP4kBJiKRsg==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=RNf1qP+TDerBsKCq8p9KHIfpfQUWagC42hp92jHl3U4R3E8jek9Orvbptd9osU2KerC9YzwjHFUZGc7s1IVA3mLW+gxTPaXmkLZONBqbXoeDWApx5kUmW65vrhw2c/ZHhaGt5ss4Yo3trVarzFMIgEzpNIo2gZPiiI/+RvNno9Nb+aqXeIBWIkMXmVS/6d4IZ0VPyeCbcTFL+58BedNCROq0AqXMr5wTvB41v9kt+qlw9//lvKBFoWX0RTYVjKgFU8waCM+hp7CUSZdYWABvNVDDJt3+f58jGV6X9gm5fBEhmI3qmtpl5htKHi8FMb0vCJFhs0k2kkf4addGBum/Cw==
- Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com;
- Cc: Ayan Kumar Halder <ayan.kumar.halder@xxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Artem Mygaiev <artem_mygaiev@xxxxxxxx>
- Delivery-date: Fri, 28 Feb 2025 11:07:55 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
On 28/02/2025 07:54, Bertrand Marquis wrote:
Hi Ayan,
Hi Bertrand,
On 27 Feb 2025, at 20:29, Ayan Kumar Halder <ayankuma@xxxxxxx> wrote:
On 27/02/2025 17:15, Bertrand Marquis wrote:
Hi Ayan,
Hi Bertrand,
I have just some clarifications.
On 27 Feb 2025, at 16:09, Ayan Kumar Halder <ayan.kumar.halder@xxxxxxx> wrote:
In the current patch, we have defined the requirements which are common for
all the commands.
Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@xxxxxxx>
---
Changes from -
v1 - 1. Fixed `XenProd~version_hyp_ret_val~1` requirement as Xen does not return
0 for success in all the cases.
2. Reworded the requirements so as to write them from Xen's perspective (not
domain's perspective).
.../fusa/reqs/design-reqs/arm64/hypercall.rst | 55 +++++++++++++++++
docs/fusa/reqs/index.rst | 2 +
docs/fusa/reqs/market-reqs/reqs.rst | 16 +++++
.../reqs/product-reqs/version_hypercall.rst | 61 +++++++++++++++++++
4 files changed, 134 insertions(+)
create mode 100644 docs/fusa/reqs/design-reqs/arm64/hypercall.rst
create mode 100644 docs/fusa/reqs/product-reqs/version_hypercall.rst
diff --git a/docs/fusa/reqs/design-reqs/arm64/hypercall.rst
b/docs/fusa/reqs/design-reqs/arm64/hypercall.rst
new file mode 100644
index 0000000000..ffd883260c
--- /dev/null
+++ b/docs/fusa/reqs/design-reqs/arm64/hypercall.rst
@@ -0,0 +1,55 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+Hypercall
+=========
+
+Instruction
+-----------
+
+`XenSwdgn~arm64_hyp_instr~1`
+
+Description:
+Xen shall treat domain hypercall exception as hypercall requests.
+
+Rationale:
+
+Comments:
+Hypercall is one of the communication mechanism between Xen and domains.
+Domains use hypercalls for various requests to Xen.
+Domains use 'hvc' instruction to invoke hypercalls.
+
+Covers:
+ - `XenProd~version_hyp_first_param~1`
+ - `XenProd~version_hyp_second_param~1`
+
+Parameters
+----------
+
+`XenSwdgn~arm64_hyp_param~1`
+
+Description:
+Xen shall use x0 to read the first parameter, x1 for second parameter and so
+on, for domain hypercall requests.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~version_hyp_first_param~1`
+ - `XenProd~version_hyp_second_param~1`
+
+Return value
+------------
+
+`XenSwdgn~arm64_ret_val~1`
+
+Description:
+Xen shall store the return value in x0 register.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~version_hyp_ret_val~1`
diff --git a/docs/fusa/reqs/index.rst b/docs/fusa/reqs/index.rst
index 1088a51d52..d8683edce7 100644
--- a/docs/fusa/reqs/index.rst
+++ b/docs/fusa/reqs/index.rst
@@ -10,5 +10,7 @@ Requirements documentation
market-reqs/reqs
product-reqs/reqs
product-reqs/arm64/reqs
+ product-reqs/version_hypercall
design-reqs/arm64/generic-timer
design-reqs/arm64/sbsa-uart
+ design-reqs/arm64/hypercall
diff --git a/docs/fusa/reqs/market-reqs/reqs.rst
b/docs/fusa/reqs/market-reqs/reqs.rst
index 2d297ecc13..0e29fe5362 100644
--- a/docs/fusa/reqs/market-reqs/reqs.rst
+++ b/docs/fusa/reqs/market-reqs/reqs.rst
@@ -79,3 +79,19 @@ Comments:
Needs:
- XenProd
+
+Version hypercall
+-----------------
+
+`XenMkt~version_hypercall~1`
+
+Description:
+Xen shall provide an interface for the domains to retrieve Xen's version, type
+and compilation information.
+
+Rationale:
+
+Comments:
+
+Needs:
+ - XenProd
diff --git a/docs/fusa/reqs/product-reqs/version_hypercall.rst
b/docs/fusa/reqs/product-reqs/version_hypercall.rst
new file mode 100644
index 0000000000..03221f70c3
--- /dev/null
+++ b/docs/fusa/reqs/product-reqs/version_hypercall.rst
@@ -0,0 +1,61 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+Version hypercall
+=================
+
+First Parameter
+---------------
+
+`XenProd~version_hyp_first_param~1`
+
+Description:
+Xen shall treat the first argument (as an integer) to denote the command number
+for the hypercall.
You speak of argument here and parameter earlier.
I would rephrase to: the first argument of an hypercall exception as the
command number for the hypercall.
Ack
Should I do this everywhere ?
s/parameter/argument
That would make it consistent.
Yes definitely
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenMkt~version_hypercall~1`
+
+Needs:
+ - XenSwdgn
+
+Second Parameter
+----------------
+
+`XenProd~version_hyp_second_param~1`
+
+Description:
+Xen shall treat the second argument as a virtual address to buffer in domain's
+memory.
+
Same here on argument vs parameter.
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenMkt~version_hypercall~1`
+
+Needs:
+ - XenSwdgn
+
+Return Value
+------------
+
+`XenProd~version_hyp_ret_val~1`
+
+Description:
+In case the hypercall fails, Xen shall return one of the error codes defined
+in
http://xenbits.xen.org/gitweb/?p=xen.git;a=blob;f=xen/include/public/errno.h.
This is a very imprecise req as it does not states what can fail and what
should be returned exactly.
Do we want to be that generic ? if yes then this might be a requirement valid
for any hypercall.
Yes, you are correct.
I am thinking of pushing this further up ie have this requirement at market
level and leave it **unlinked** to any product requirement.
IOW, we don't need to validate each and every error code returned by the
hypercall.
Or should we just drop this requirement ?
I think you should move this requirement and make it a generic one valid for
all hypercalls.
Yes, I will place it under hypercall.rst.
Now at some point you might have to describe which error is caused by what
problem as part of your hypercall interface definition.
ie: one generic product req and per hypercall design req describing the error
cases.
Agreed.
And an example design requirement which will be linked is :-
Xen shall return -EFAULT if it encounters an error while copying the
extraversion string to domain's buffer.
Is this what you have in mind ?
At the end you should have a test to trigger each error condition and that test
will be linked to the design req corresponding.
Ack.
- Ayan
Cheers
Bertrand
- Ayan
Cheers
Bertrand
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenMkt~version_hypercall~1`
+
+Needs:
+ - XenSwdgn
\ No newline at end of file
--
2.25.1
|