bus/pci/windows: guard against sdk/dpdk guid collision
Checks
Commit Message
DEVCLASS and DEVINTERFACE guids are defined/managed by the windows
platform sdk headers.
* hide dpdk defined GUID_DEVCLASS_NETUIO and GUID_DEVINTERFACE_NETUIO if
the NTDDI_VERSION >= 0x0A00000A
* include <ndisguid.h> for windows sdk defined GUID_DEVINTERFACE_NETUIO
Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
---
drivers/bus/pci/windows/pci_netuio.c | 2 ++
drivers/bus/pci/windows/pci_netuio.h | 2 ++
2 files changed, 4 insertions(+)
Comments
On Tue, 12 Jan 2021 14:33:41 -0800, Tyler Retzlaff wrote:
> DEVCLASS and DEVINTERFACE guids are defined/managed by the windows
> platform sdk headers.
Please write names and acronyms in proper case in all human-readable text
(commit subject except topic, commit message, log messages).
> * hide dpdk defined GUID_DEVCLASS_NETUIO and GUID_DEVINTERFACE_NETUIO if
> the NTDDI_VERSION >= 0x0A00000A
> * include <ndisguid.h> for windows sdk defined GUID_DEVINTERFACE_NETUIO
This translates the code almost verbatim, not needed. Instead you could state
which SDK versions are affected. Suggested wording:
pci/windows: fix build with SDK 10.0.xxxxx
NetUIO device class and interface GUIDs are defined in system
headers starting from platform SDK v10.0.xxxxx. Inspect SDK version
to avoid redefinition.
Fixes: hhhhhhhhhhhh ("...")
Cc: stable@dpdk.org
Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
I can't find which "xxxxx" corresponds to NTDDI_WIN10_FE.
"hhhhhhhhhhhh" are 12 chars of the hash of the commit which introduced the
code you fixed. "..." is said commit subject. This info is needed to backport
your fix to stable branch, so that it can also be built with newer SDK. May
not be very important until Windows port gets its users, I mostly tell it to
illustrate the process.
> +#if (! defined(NTDDI_WIN10_FE) || NTDDI_VERSION < NTDDI_WIN10_FE)
Braces are redundant here and DPDK style is to avoid them (see rte_common.h).
On Wed, Jan 13, 2021 at 08:20:34PM +0300, Dmitry Kozlyuk wrote:
> pci/windows: fix build with SDK 10.0.xxxxx
>
> NetUIO device class and interface GUIDs are defined in system
> headers starting from platform SDK v10.0.xxxxx. Inspect SDK version
> to avoid redefinition.
>
> Fixes: hhhhhhhhhhhh ("...")
> Cc: stable@dpdk.org
>
> Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
>
> I can't find which "xxxxx" corresponds to NTDDI_WIN10_FE.
there won't be a specific sdk/kit that corresponds. the best i can offer
is to include in the message the latest sdk/kit version for that platform
version.
also be aware since there is no 1:1 alignment between NTDDI_VERSION and
the sdk/kit build where the conflicting GUID definitions were introduced
there will still be a subset of eal/pre-release kits if installed that will
lead to compilation failure of dpdk even with this change. i'll also add
a note in the commit message about this limitation.
windows doesn't promise api compatibility for pre-release kits and there is
no approved mechanism / versioning to provide such compatibility.
> "hhhhhhhhhhhh" are 12 chars of the hash of the commit which introduced the
> code you fixed. "..." is said commit subject. This info is needed to backport
> your fix to stable branch, so that it can also be built with newer SDK. May
> not be very important until Windows port gets its users, I mostly tell it to
> illustrate the process.
yes, understood this one is definitely appropriate for backport
> > +#if (! defined(NTDDI_WIN10_FE) || NTDDI_VERSION < NTDDI_WIN10_FE)
>
> Braces are redundant here and DPDK style is to avoid them (see rte_common.h).
yes, sorry will fix. best part is i don't like redundant braces i just added
them because i encounter so many people who do. (can't win really)
@@ -7,6 +7,8 @@
#include <rte_log.h>
#include <rte_eal.h>
+#include <ndisguid.h>
+
#include "private.h"
#include "pci_netuio.h"
@@ -5,6 +5,7 @@
#ifndef _PCI_NETUIO_H_
#define _PCI_NETUIO_H_
+#if (! defined(NTDDI_WIN10_FE) || NTDDI_VERSION < NTDDI_WIN10_FE)
/* GUID definition for device class netUIO */
DEFINE_GUID(GUID_DEVCLASS_NETUIO, 0x78912bc1, 0xcb8e, 0x4b28,
0xa3, 0x29, 0xf3, 0x22, 0xeb, 0xad, 0xbe, 0x0f);
@@ -12,6 +13,7 @@ DEFINE_GUID(GUID_DEVCLASS_NETUIO, 0x78912bc1, 0xcb8e, 0x4b28,
/* GUID definition for the netuio device interface */
DEFINE_GUID(GUID_DEVINTERFACE_NETUIO, 0x08336f60, 0x0679, 0x4c6c,
0x85, 0xd2, 0xae, 0x7c, 0xed, 0x65, 0xff, 0xf7);
+#endif
/* IOCTL code definitions */
#define IOCTL_NETUIO_MAP_HW_INTO_USERSPACE \