dma/idxd: fix build on Windows

Message ID 20211023065558.818-1-david.marchand@redhat.com (mailing list archive)
State Accepted, archived
Delegated to: David Marchand
Headers
Series dma/idxd: fix build on Windows |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/iol-broadcom-Functional success Functional Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/github-robot: build success github build: passed
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-aarch64-compile-testing success Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-x86_64-unit-testing success Testing PASS
ci/iol-x86_64-compile-testing success Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS

Commit Message

David Marchand Oct. 23, 2021, 6:55 a.m. UTC
  Windows compilation gives us a splat:
In file included from ../drivers/dma/idxd/idxd_pci.c:10:
In file included from ..\drivers\dma\idxd/idxd_internal.h:11:
..\drivers\dma\idxd/idxd_hw_defs.h:46:21: error: expected member name or
 ';' after declaration specifiers
        uint16_t __reserved[13];
        ~~~~~~~~           ^
1 error generated.

Ironically, __reserved is probably a reserved token.
Some drivers that build fine on Windows have structs with a "reserved"
field, let's go with this.

Fixes: 82147042d062 ("dma/idxd: add datapath structures")

Signed-off-by: David Marchand <david.marchand@redhat.com>
---
 drivers/dma/idxd/idxd_hw_defs.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Dmitry Kozlyuk Oct. 23, 2021, 8:37 a.m. UTC | #1
2021-10-23 08:55 (UTC+0200), David Marchand:
> Windows compilation gives us a splat:
> In file included from ../drivers/dma/idxd/idxd_pci.c:10:
> In file included from ..\drivers\dma\idxd/idxd_internal.h:11:
> ..\drivers\dma\idxd/idxd_hw_defs.h:46:21: error: expected member name or
>  ';' after declaration specifiers
>         uint16_t __reserved[13];
>         ~~~~~~~~           ^
> 1 error generated.
> 
> Ironically, __reserved is probably a reserved token.

Yes, and it's used in system headers for static analyzer annotations:
https://docs.microsoft.com/en-us/windows/win32/winprog/header-annotations#advanced-annotations

> Some drivers that build fine on Windows have structs with a "reserved"
> field, let's go with this.
> 
> Fixes: 82147042d062 ("dma/idxd: add datapath structures")
> 
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> ---
>  drivers/dma/idxd/idxd_hw_defs.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/dma/idxd/idxd_hw_defs.h b/drivers/dma/idxd/idxd_hw_defs.h
> index 55ca9f7f52..2a219c1312 100644
> --- a/drivers/dma/idxd/idxd_hw_defs.h
> +++ b/drivers/dma/idxd/idxd_hw_defs.h
> @@ -43,7 +43,7 @@ struct idxd_hw_desc {
>  	uint16_t intr_handle; /* completion interrupt handle */
>  
>  	/* remaining 26 bytes are reserved */
> -	uint16_t __reserved[13];
> +	uint16_t reserved[13];
>  } __rte_aligned(64);
>  
>  #define IDXD_COMP_STATUS_INCOMPLETE        0
  
David Marchand Oct. 23, 2021, 10:18 a.m. UTC | #2
On Sat, Oct 23, 2021 at 8:56 AM David Marchand
<david.marchand@redhat.com> wrote:
>
> Windows compilation gives us a splat:
> In file included from ../drivers/dma/idxd/idxd_pci.c:10:
> In file included from ..\drivers\dma\idxd/idxd_internal.h:11:
> ..\drivers\dma\idxd/idxd_hw_defs.h:46:21: error: expected member name or
>  ';' after declaration specifiers
>         uint16_t __reserved[13];
>         ~~~~~~~~           ^
> 1 error generated.
>
> Ironically, __reserved is probably a reserved token.
> Some drivers that build fine on Windows have structs with a "reserved"
> field, let's go with this.
>
> Fixes: 82147042d062 ("dma/idxd: add datapath structures")
>
> Signed-off-by: David Marchand <david.marchand@redhat.com>

Tested via CI@UNH.

Applied.
  
David Marchand Oct. 23, 2021, 10:20 a.m. UTC | #3
On Sat, Oct 23, 2021 at 10:38 AM Dmitry Kozlyuk
<dmitry.kozliuk@gmail.com> wrote:
>
> 2021-10-23 08:55 (UTC+0200), David Marchand:
> > Windows compilation gives us a splat:
> > In file included from ../drivers/dma/idxd/idxd_pci.c:10:
> > In file included from ..\drivers\dma\idxd/idxd_internal.h:11:
> > ..\drivers\dma\idxd/idxd_hw_defs.h:46:21: error: expected member name or
> >  ';' after declaration specifiers
> >         uint16_t __reserved[13];
> >         ~~~~~~~~           ^
> > 1 error generated.
> >
> > Ironically, __reserved is probably a reserved token.
>
> Yes, and it's used in system headers for static analyzer annotations:
> https://docs.microsoft.com/en-us/windows/win32/winprog/header-annotations#advanced-annotations

Thanks for confirming.
  
Kevin Laatz Oct. 25, 2021, 8 p.m. UTC | #4
On 23/10/2021 11:18, David Marchand wrote:
> On Sat, Oct 23, 2021 at 8:56 AM David Marchand
> <david.marchand@redhat.com> wrote:
>> Windows compilation gives us a splat:
>> In file included from ../drivers/dma/idxd/idxd_pci.c:10:
>> In file included from ..\drivers\dma\idxd/idxd_internal.h:11:
>> ..\drivers\dma\idxd/idxd_hw_defs.h:46:21: error: expected member name or
>>   ';' after declaration specifiers
>>          uint16_t __reserved[13];
>>          ~~~~~~~~           ^
>> 1 error generated.
>>
>> Ironically, __reserved is probably a reserved token.
>> Some drivers that build fine on Windows have structs with a "reserved"
>> field, let's go with this.
>>
>> Fixes: 82147042d062 ("dma/idxd: add datapath structures")
>>
>> Signed-off-by: David Marchand <david.marchand@redhat.com>
> Tested via CI@UNH.
>
> Applied.


Thanks for investigating and sending the fix for this, David.

/Kevin
  

Patch

diff --git a/drivers/dma/idxd/idxd_hw_defs.h b/drivers/dma/idxd/idxd_hw_defs.h
index 55ca9f7f52..2a219c1312 100644
--- a/drivers/dma/idxd/idxd_hw_defs.h
+++ b/drivers/dma/idxd/idxd_hw_defs.h
@@ -43,7 +43,7 @@  struct idxd_hw_desc {
 	uint16_t intr_handle; /* completion interrupt handle */
 
 	/* remaining 26 bytes are reserved */
-	uint16_t __reserved[13];
+	uint16_t reserved[13];
 } __rte_aligned(64);
 
 #define IDXD_COMP_STATUS_INCOMPLETE        0