[XEN PATCH] ioreq: include arch-specific ioreq header in <xen/ioreq.h>

Nicola Vetrini posted 1 patch 8 months, 2 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://gitlab.com/xen-project/patchew/xen tags/patchew/e5f13920dfcb9f828abb4a36dd410d342f4c0939.1692974235.git.nicola.vetrini@bugseng.com
xen/arch/arm/io.c       | 1 -
xen/common/ioreq.c      | 1 -
xen/include/xen/ioreq.h | 1 +
3 files changed, 1 insertion(+), 2 deletions(-)
[XEN PATCH] ioreq: include arch-specific ioreq header in <xen/ioreq.h>
Posted by Nicola Vetrini 8 months, 2 weeks ago
The common header file for ioreq should include the arch-specific one.
This also addresses violations of MISRA C:2012 Rule 8.4 caused by the missing
inclusion of <asm/ioreq.h> in the arm implementation file.

Signed-off-by: Nicola Vetrini <nicola.vetrini@bugseng.com>
---
- The deleted includes are therefore no longer necessary, since
 <xen/ioreq.h> is sufficient.
- The functions (possibly) missing a visible declaration prior to their definition
  currently are 'handle_ioserv' and 'try_fwd_ioserv'
---
 xen/arch/arm/io.c       | 1 -
 xen/common/ioreq.c      | 1 -
 xen/include/xen/ioreq.h | 1 +
 3 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/xen/arch/arm/io.c b/xen/arch/arm/io.c
index 96c740d5636c..13ae1fed5718 100644
--- a/xen/arch/arm/io.c
+++ b/xen/arch/arm/io.c
@@ -14,7 +14,6 @@
 #include <xen/sort.h>
 #include <asm/cpuerrata.h>
 #include <asm/current.h>
-#include <asm/ioreq.h>
 #include <asm/mmio.h>
 #include <asm/traps.h>

diff --git a/xen/common/ioreq.c b/xen/common/ioreq.c
index 7cb717f7a2a4..bde1a1f4eaa1 100644
--- a/xen/common/ioreq.c
+++ b/xen/common/ioreq.c
@@ -28,7 +28,6 @@
 #include <xen/trace.h>

 #include <asm/guest_atomics.h>
-#include <asm/ioreq.h>

 #include <public/hvm/ioreq.h>
 #include <public/hvm/params.h>
diff --git a/xen/include/xen/ioreq.h b/xen/include/xen/ioreq.h
index a26614d331e3..d85477c665e9 100644
--- a/xen/include/xen/ioreq.h
+++ b/xen/include/xen/ioreq.h
@@ -20,6 +20,7 @@
 #define __XEN_IOREQ_H__

 #include <xen/sched.h>
+#include <asm/ioreq.h>

 #include <public/hvm/dm_op.h>

--
2.34.1
Re: [XEN PATCH] ioreq: include arch-specific ioreq header in <xen/ioreq.h>
Posted by Jan Beulich 8 months, 1 week ago
On 25.08.2023 17:02, Nicola Vetrini wrote:
> The common header file for ioreq should include the arch-specific one.

To be honest I'm not convinced of "should" here. There are two aspects
to consider: On one hand it is good practice to do what you say. Otoh it
introduces a needless dependency, and it'll require new arch-es (RISC-V,
PPC at present) to introduce another dummy header just to satisfy the
xen/ioreq.h use in common/memory.c. Therefore, _if_ we want to go this
route, besides a wording change here I think ...

> --- a/xen/include/xen/ioreq.h
> +++ b/xen/include/xen/ioreq.h
> @@ -20,6 +20,7 @@
>  #define __XEN_IOREQ_H__
> 
>  #include <xen/sched.h>
> +#include <asm/ioreq.h>

... this #include wants to be conditional upon CONFIG_IOREQ_SERVER being
defined. (I'm actually surprised that there's no respective #ifdef in
that header, meaning types defined there are available even when the
functionality was turned off.)

Jan
Re: [XEN PATCH] ioreq: include arch-specific ioreq header in <xen/ioreq.h>
Posted by Nicola Vetrini 8 months, 1 week ago
On 28/08/2023 09:59, Jan Beulich wrote:
> On 25.08.2023 17:02, Nicola Vetrini wrote:
>> The common header file for ioreq should include the arch-specific one.
> 
> To be honest I'm not convinced of "should" here. There are two aspects
> to consider: On one hand it is good practice to do what you say. Otoh 
> it
> introduces a needless dependency, and it'll require new arch-es 
> (RISC-V,
> PPC at present) to introduce another dummy header just to satisfy the
> xen/ioreq.h use in common/memory.c. Therefore, _if_ we want to go this
> route, besides a wording change here I think ...
> 

Since including both <xen/ioreq.h> and the arch-specific one was 
requested to be changed
in previous series, I was trying to apply the same pattern here.
If you prefer not to change the current layout then the fix is even 
simpler: I'll just
include <asm/ioreq.h> in xen/arch/arm/ioreq.c, which is where it's 
missing.

>> --- a/xen/include/xen/ioreq.h
>> +++ b/xen/include/xen/ioreq.h
>> @@ -20,6 +20,7 @@
>>  #define __XEN_IOREQ_H__
>> 
>>  #include <xen/sched.h>
>> +#include <asm/ioreq.h>
> 
> ... this #include wants to be conditional upon CONFIG_IOREQ_SERVER 
> being
> defined. (I'm actually surprised that there's no respective #ifdef in
> that header, meaning types defined there are available even when the
> functionality was turned off.)
> 
> Jan

The two functions in question are actually guarded by an #ifdef 
CONFIG_IOREQ_SERVER
in arch/arm/include/asm/ioreq.h (in the #else branch some stubs are 
defined)


-- 
Nicola Vetrini, BSc
Software Engineer, BUGSENG srl (https://bugseng.com)
Re: [XEN PATCH] ioreq: include arch-specific ioreq header in <xen/ioreq.h>
Posted by Jan Beulich 8 months, 1 week ago
On 01.09.2023 09:13, Nicola Vetrini wrote:
> On 28/08/2023 09:59, Jan Beulich wrote:
>> On 25.08.2023 17:02, Nicola Vetrini wrote:
>>> The common header file for ioreq should include the arch-specific one.
>>
>> To be honest I'm not convinced of "should" here. There are two aspects
>> to consider: On one hand it is good practice to do what you say. Otoh 
>> it
>> introduces a needless dependency, and it'll require new arch-es 
>> (RISC-V,
>> PPC at present) to introduce another dummy header just to satisfy the
>> xen/ioreq.h use in common/memory.c. Therefore, _if_ we want to go this
>> route, besides a wording change here I think ...
>>
> 
> Since including both <xen/ioreq.h> and the arch-specific one was 
> requested to be changed
> in previous series, I was trying to apply the same pattern here.
> If you prefer not to change the current layout then the fix is even 
> simpler: I'll just
> include <asm/ioreq.h> in xen/arch/arm/ioreq.c, which is where it's 
> missing.
> 
>>> --- a/xen/include/xen/ioreq.h
>>> +++ b/xen/include/xen/ioreq.h
>>> @@ -20,6 +20,7 @@
>>>  #define __XEN_IOREQ_H__
>>>
>>>  #include <xen/sched.h>
>>> +#include <asm/ioreq.h>
>>
>> ... this #include wants to be conditional upon CONFIG_IOREQ_SERVER 
>> being
>> defined. (I'm actually surprised that there's no respective #ifdef in
>> that header, meaning types defined there are available even when the
>> functionality was turned off.)
> 
> The two functions in question are actually guarded by an #ifdef 
> CONFIG_IOREQ_SERVER
> in arch/arm/include/asm/ioreq.h (in the #else branch some stubs are 
> defined)

Well, I don't see how an #ifdef there helps with the aspect mentioned
earlier (new arch-es needing to needlessly provide such a header as long
as the #include here is unconditional).

Jan
Re: [XEN PATCH] ioreq: include arch-specific ioreq header in <xen/ioreq.h>
Posted by Nicola Vetrini 8 months, 1 week ago
On 01/09/2023 09:36, Jan Beulich wrote:
> On 01.09.2023 09:13, Nicola Vetrini wrote:
>> On 28/08/2023 09:59, Jan Beulich wrote:
>>> On 25.08.2023 17:02, Nicola Vetrini wrote:
>>>> The common header file for ioreq should include the arch-specific 
>>>> one.
>>> 
>>> To be honest I'm not convinced of "should" here. There are two 
>>> aspects
>>> to consider: On one hand it is good practice to do what you say. Otoh
>>> it
>>> introduces a needless dependency, and it'll require new arch-es
>>> (RISC-V,
>>> PPC at present) to introduce another dummy header just to satisfy the
>>> xen/ioreq.h use in common/memory.c. Therefore, _if_ we want to go 
>>> this
>>> route, besides a wording change here I think ...
>>> 
>> 
>> Since including both <xen/ioreq.h> and the arch-specific one was
>> requested to be changed
>> in previous series, I was trying to apply the same pattern here.
>> If you prefer not to change the current layout then the fix is even
>> simpler: I'll just
>> include <asm/ioreq.h> in xen/arch/arm/ioreq.c, which is where it's
>> missing.
>> 
>>>> --- a/xen/include/xen/ioreq.h
>>>> +++ b/xen/include/xen/ioreq.h
>>>> @@ -20,6 +20,7 @@
>>>>  #define __XEN_IOREQ_H__
>>>> 
>>>>  #include <xen/sched.h>
>>>> +#include <asm/ioreq.h>
>>> 
>>> ... this #include wants to be conditional upon CONFIG_IOREQ_SERVER
>>> being
>>> defined. (I'm actually surprised that there's no respective #ifdef in
>>> that header, meaning types defined there are available even when the
>>> functionality was turned off.)
>> 
>> The two functions in question are actually guarded by an #ifdef
>> CONFIG_IOREQ_SERVER
>> in arch/arm/include/asm/ioreq.h (in the #else branch some stubs are
>> defined)
> 
> Well, I don't see how an #ifdef there helps with the aspect mentioned
> earlier (new arch-es needing to needlessly provide such a header as 
> long
> as the #include here is unconditional).
> 

As far as I can tell, including the asm header in the arm implementation 
file does not imply
that new archs will need such an header. Of course, if the solution 
proposed in the patch is
chosen then I agree with you.

-- 
Nicola Vetrini, BSc
Software Engineer, BUGSENG srl (https://bugseng.com)
Re: [XEN PATCH] ioreq: include arch-specific ioreq header in <xen/ioreq.h>
Posted by Jan Beulich 8 months, 1 week ago
On 01.09.2023 11:13, Nicola Vetrini wrote:
> On 01/09/2023 09:36, Jan Beulich wrote:
>> On 01.09.2023 09:13, Nicola Vetrini wrote:
>>> On 28/08/2023 09:59, Jan Beulich wrote:
>>>> On 25.08.2023 17:02, Nicola Vetrini wrote:
>>>>> The common header file for ioreq should include the arch-specific 
>>>>> one.
>>>>
>>>> To be honest I'm not convinced of "should" here. There are two 
>>>> aspects
>>>> to consider: On one hand it is good practice to do what you say. Otoh
>>>> it
>>>> introduces a needless dependency, and it'll require new arch-es
>>>> (RISC-V,
>>>> PPC at present) to introduce another dummy header just to satisfy the
>>>> xen/ioreq.h use in common/memory.c. Therefore, _if_ we want to go 
>>>> this
>>>> route, besides a wording change here I think ...
>>>>
>>>
>>> Since including both <xen/ioreq.h> and the arch-specific one was
>>> requested to be changed
>>> in previous series, I was trying to apply the same pattern here.
>>> If you prefer not to change the current layout then the fix is even
>>> simpler: I'll just
>>> include <asm/ioreq.h> in xen/arch/arm/ioreq.c, which is where it's
>>> missing.
>>>
>>>>> --- a/xen/include/xen/ioreq.h
>>>>> +++ b/xen/include/xen/ioreq.h
>>>>> @@ -20,6 +20,7 @@
>>>>>  #define __XEN_IOREQ_H__
>>>>>
>>>>>  #include <xen/sched.h>
>>>>> +#include <asm/ioreq.h>
>>>>
>>>> ... this #include wants to be conditional upon CONFIG_IOREQ_SERVER
>>>> being
>>>> defined. (I'm actually surprised that there's no respective #ifdef in
>>>> that header, meaning types defined there are available even when the
>>>> functionality was turned off.)
>>>
>>> The two functions in question are actually guarded by an #ifdef
>>> CONFIG_IOREQ_SERVER
>>> in arch/arm/include/asm/ioreq.h (in the #else branch some stubs are
>>> defined)
>>
>> Well, I don't see how an #ifdef there helps with the aspect mentioned
>> earlier (new arch-es needing to needlessly provide such a header as 
>> long
>> as the #include here is unconditional).
> 
> As far as I can tell, including the asm header in the arm implementation 
> file does not imply
> that new archs will need such an header. Of course, if the solution 
> proposed in the patch is
> chosen then I agree with you.

Hmm, maybe then I misunderstood your earlier reply: I thought you were
arguing against the change I had suggested.

Jan
Re: [XEN PATCH] ioreq: include arch-specific ioreq header in <xen/ioreq.h>
Posted by Nicola Vetrini 8 months, 1 week ago
On 01/09/2023 11:44, Jan Beulich wrote:
> On 01.09.2023 11:13, Nicola Vetrini wrote:
>> On 01/09/2023 09:36, Jan Beulich wrote:
>>> On 01.09.2023 09:13, Nicola Vetrini wrote:
>>>> On 28/08/2023 09:59, Jan Beulich wrote:
>>>>> On 25.08.2023 17:02, Nicola Vetrini wrote:
>>>>>> The common header file for ioreq should include the arch-specific
>>>>>> one.
>>>>> 
>>>>> To be honest I'm not convinced of "should" here. There are two
>>>>> aspects
>>>>> to consider: On one hand it is good practice to do what you say. 
>>>>> Otoh
>>>>> it
>>>>> introduces a needless dependency, and it'll require new arch-es
>>>>> (RISC-V,
>>>>> PPC at present) to introduce another dummy header just to satisfy 
>>>>> the
>>>>> xen/ioreq.h use in common/memory.c. Therefore, _if_ we want to go
>>>>> this
>>>>> route, besides a wording change here I think ...
>>>>> 
>>>> 
>>>> Since including both <xen/ioreq.h> and the arch-specific one was
>>>> requested to be changed
>>>> in previous series, I was trying to apply the same pattern here.
>>>> If you prefer not to change the current layout then the fix is even
>>>> simpler: I'll just
>>>> include <asm/ioreq.h> in xen/arch/arm/ioreq.c, which is where it's
>>>> missing.
>>>> 
>>>>>> --- a/xen/include/xen/ioreq.h
>>>>>> +++ b/xen/include/xen/ioreq.h
>>>>>> @@ -20,6 +20,7 @@
>>>>>>  #define __XEN_IOREQ_H__
>>>>>> 
>>>>>>  #include <xen/sched.h>
>>>>>> +#include <asm/ioreq.h>
>>>>> 
>>>>> ... this #include wants to be conditional upon CONFIG_IOREQ_SERVER
>>>>> being
>>>>> defined. (I'm actually surprised that there's no respective #ifdef 
>>>>> in
>>>>> that header, meaning types defined there are available even when 
>>>>> the
>>>>> functionality was turned off.)
>>>> 
>>>> The two functions in question are actually guarded by an #ifdef
>>>> CONFIG_IOREQ_SERVER
>>>> in arch/arm/include/asm/ioreq.h (in the #else branch some stubs are
>>>> defined)
>>> 
>>> Well, I don't see how an #ifdef there helps with the aspect mentioned
>>> earlier (new arch-es needing to needlessly provide such a header as
>>> long
>>> as the #include here is unconditional).
>> 
>> As far as I can tell, including the asm header in the arm 
>> implementation
>> file does not imply
>> that new archs will need such an header. Of course, if the solution
>> proposed in the patch is
>> chosen then I agree with you.
> 
> Hmm, maybe then I misunderstood your earlier reply: I thought you were
> arguing against the change I had suggested.
> 

I'm fine with either way, but since the one proposed in the patch may 
result in an inconvenience
for other architectures, then perhaps the other is better.

-- 
Nicola Vetrini, BSc
Software Engineer, BUGSENG srl (https://bugseng.com)
Re: [XEN PATCH] ioreq: include arch-specific ioreq header in <xen/ioreq.h>
Posted by Stefano Stabellini 8 months, 2 weeks ago
On Fri, 25 Aug 2023, Nicola Vetrini wrote:
> The common header file for ioreq should include the arch-specific one.
> This also addresses violations of MISRA C:2012 Rule 8.4 caused by the missing
> inclusion of <asm/ioreq.h> in the arm implementation file.
> 
> Signed-off-by: Nicola Vetrini <nicola.vetrini@bugseng.com>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>


> ---
> - The deleted includes are therefore no longer necessary, since
>  <xen/ioreq.h> is sufficient.
> - The functions (possibly) missing a visible declaration prior to their definition
>   currently are 'handle_ioserv' and 'try_fwd_ioserv'
> ---
>  xen/arch/arm/io.c       | 1 -
>  xen/common/ioreq.c      | 1 -
>  xen/include/xen/ioreq.h | 1 +
>  3 files changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/xen/arch/arm/io.c b/xen/arch/arm/io.c
> index 96c740d5636c..13ae1fed5718 100644
> --- a/xen/arch/arm/io.c
> +++ b/xen/arch/arm/io.c
> @@ -14,7 +14,6 @@
>  #include <xen/sort.h>
>  #include <asm/cpuerrata.h>
>  #include <asm/current.h>
> -#include <asm/ioreq.h>
>  #include <asm/mmio.h>
>  #include <asm/traps.h>
> 
> diff --git a/xen/common/ioreq.c b/xen/common/ioreq.c
> index 7cb717f7a2a4..bde1a1f4eaa1 100644
> --- a/xen/common/ioreq.c
> +++ b/xen/common/ioreq.c
> @@ -28,7 +28,6 @@
>  #include <xen/trace.h>
> 
>  #include <asm/guest_atomics.h>
> -#include <asm/ioreq.h>
> 
>  #include <public/hvm/ioreq.h>
>  #include <public/hvm/params.h>
> diff --git a/xen/include/xen/ioreq.h b/xen/include/xen/ioreq.h
> index a26614d331e3..d85477c665e9 100644
> --- a/xen/include/xen/ioreq.h
> +++ b/xen/include/xen/ioreq.h
> @@ -20,6 +20,7 @@
>  #define __XEN_IOREQ_H__
> 
>  #include <xen/sched.h>
> +#include <asm/ioreq.h>
> 
>  #include <public/hvm/dm_op.h>
> 
> --
> 2.34.1
>