Hi Ayan,

> On 28 Feb 2025, at 12:07, Ayan Kumar Halder <ayank...@amd.com> wrote:
> 
> 
> On 28/02/2025 07:54, Bertrand Marquis wrote:
>> Hi Ayan,
> Hi Bertrand,
>> 
>>> On 27 Feb 2025, at 20:29, Ayan Kumar Halder <ayank...@amd.com> 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.hal...@amd.com> 
>>>>> 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.hal...@amd.com>
>>>>> ---
>>>>> 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 ?

Yes it is.
But is it the only error that can be return by the hypercall ?

Bertrand

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



Reply via email to