RE: [PATCH 02/22] NTB: Add peer indexed ports NTB API
From: Allen Hubbe > From: Serge Semin > > Add new port-index NTB API. Additionally lets get rid of Primary and > > Secondary topologies, since port-number can be effectively used instead. > > Split into two patches please. > > I see no harm to the TOPO changes, though I wonder if they are necessary. > I am leaning more toward recommending that the topo api be left alone. The topo changes to the ntb api complicate the Intel driver: - The changes add second branches where there had been just one before (need to check topo AND port now). - The changes also cause some complicated merge conflicts with https://github.com/davejiang/linux.git ntb. See RE: [PATCH 10/22] NTB Intel: Add port-related NTB API callback methods If we leave the ntb topo api as it was, then on multiport devices, if the local port is not the primary port, let it be one of potentially many secondary ports. Or, if there is no distinction between primary/secondary on some hardware, let them all be primary. This topo api doesn't have much value for existing drivers (that I know of), except for informative purposes. So, my preference for changing it would be, only if necessary, and to minimize changes otherwise. Allen
RE: [PATCH 02/22] NTB: Add peer indexed ports NTB API
From: Allen Hubbe > From: Serge Semin > > Add new port-index NTB API. Additionally lets get rid of Primary and > > Secondary topologies, since port-number can be effectively used instead. > > Split into two patches please. > > I see no harm to the TOPO changes, though I wonder if they are necessary. > I am leaning more toward recommending that the topo api be left alone. The topo changes to the ntb api complicate the Intel driver: - The changes add second branches where there had been just one before (need to check topo AND port now). - The changes also cause some complicated merge conflicts with https://github.com/davejiang/linux.git ntb. See RE: [PATCH 10/22] NTB Intel: Add port-related NTB API callback methods If we leave the ntb topo api as it was, then on multiport devices, if the local port is not the primary port, let it be one of potentially many secondary ports. Or, if there is no distinction between primary/secondary on some hardware, let them all be primary. This topo api doesn't have much value for existing drivers (that I know of), except for informative purposes. So, my preference for changing it would be, only if necessary, and to minimize changes otherwise. Allen
RE: [PATCH 02/22] NTB: Add peer indexed ports NTB API
From: Serge Semin > Add new port-index NTB API. Additionally lets get rid of Primary and > Secondary topologies, since port-number can be effectively used instead. Split into two patches please. I see no harm to the TOPO changes, though I wonder if they are necessary. > Signed-off-by: Serge Semin> > --- > include/linux/ntb.h | 101 > > 1 file changed, 79 insertions(+), 22 deletions(-) > > diff --git a/include/linux/ntb.h b/include/linux/ntb.h > index 5d1f260..0941a43 100644 > --- a/include/linux/ntb.h > +++ b/include/linux/ntb.h > @@ -64,37 +64,21 @@ struct pci_dev; > /** > * enum ntb_topo - NTB connection topology > * @NTB_TOPO_NONE: Topology is unknown or invalid. > - * @NTB_TOPO_PRI:On primary side of local ntb. > - * @NTB_TOPO_SEC:On secondary side of remote ntb. > - * @NTB_TOPO_B2B_USD:On primary side of local ntb upstream of remote > ntb. > - * @NTB_TOPO_B2B_DSD:On primary side of local ntb downstream of > remote ntb. > + * @NTB_TOPO_P2P:Simple port-to-port NTB topology > + * @NTB_TOPO_B2B:Bridge-to-bridge NTB topology > */ > enum ntb_topo { > NTB_TOPO_NONE = -1, > - NTB_TOPO_PRI, > - NTB_TOPO_SEC, > - NTB_TOPO_B2B_USD, > - NTB_TOPO_B2B_DSD, > + NTB_TOPO_P2P, > + NTB_TOPO_B2B > }; > > -static inline int ntb_topo_is_b2b(enum ntb_topo topo) > -{ > - switch ((int)topo) { > - case NTB_TOPO_B2B_USD: > - case NTB_TOPO_B2B_DSD: > - return 1; > - } > - return 0; > -} > - > static inline char *ntb_topo_string(enum ntb_topo topo) > { > switch (topo) { > case NTB_TOPO_NONE: return "NTB_TOPO_NONE"; > - case NTB_TOPO_PRI: return "NTB_TOPO_PRI"; > - case NTB_TOPO_SEC: return "NTB_TOPO_SEC"; > - case NTB_TOPO_B2B_USD: return "NTB_TOPO_B2B_USD"; > - case NTB_TOPO_B2B_DSD: return "NTB_TOPO_B2B_DSD"; > + case NTB_TOPO_P2P: return "NTB_TOPO_P2P"; > + case NTB_TOPO_B2B: return "NTB_TOPO_B2B"; > } > return "NTB_TOPO_INVALID"; > } > @@ -179,6 +163,10 @@ static inline int ntb_ctx_ops_is_valid(const struct > ntb_ctx_ops *ops) > > /** > * struct ntb_ctx_ops - ntb device operations > + * @port_number: See ntb_port_number(). > + * @peer_port_count: See ntb_peer_port_count(). > + * @peer_port_number:See ntb_peer_port_number(). > + * @peer_port_idx: See ntb_peer_port_idx(). > * @link_is_up: See ntb_link_is_up(). > * @link_enable: See ntb_link_enable(). > * @link_disable:See ntb_link_disable(). > @@ -212,6 +200,11 @@ static inline int ntb_ctx_ops_is_valid(const struct > ntb_ctx_ops *ops) > * @peer_spad_write: See ntb_peer_spad_write(). > */ > struct ntb_dev_ops { > + int (*port_number)(struct ntb_dev *ntb); > + int (*peer_port_count)(struct ntb_dev *ntb); > + int (*peer_port_number)(struct ntb_dev *ntb, int pidx); > + int (*peer_port_idx)(struct ntb_dev *ntb, int port); > + > int (*link_is_up)(struct ntb_dev *ntb, > enum ntb_speed *speed, enum ntb_width *width); > int (*link_enable)(struct ntb_dev *ntb, > @@ -265,6 +258,10 @@ static inline int ntb_dev_ops_is_valid(const struct > ntb_dev_ops *ops) > { > /* commented callbacks are not required: */ > return > + ops->port_number&& > + ops->peer_port_count&& > + ops->peer_port_number && > + ops->peer_port_idx && > ops->link_is_up && > ops->link_enable&& > ops->link_disable && > @@ -319,6 +316,7 @@ struct ntb_client { > * @dev: Linux device object. > * @pdev:Pci device entry of the ntb. > * @topo:Detected topology of the ntb. > + * @port:Local port of the ntb. > * @ops: See _dev_ops. > * @ctx: See _ctx_ops. > * @ctx_ops: See _ctx_ops. > @@ -327,6 +325,7 @@ struct ntb_dev { > struct device dev; > struct pci_dev *pdev; > enum ntb_topo topo; > + int port; > const struct ntb_dev_ops*ops; > void*ctx; > const struct ntb_ctx_ops*ctx_ops; > @@ -442,6 +441,64 @@ void ntb_link_event(struct ntb_dev *ntb); > void ntb_db_event(struct ntb_dev *ntb, int vector); > > /** > + * ntb_port_number() - get the local port number > + * @ntb: NTB device context. > + * > + * Hardware must support at least simple two-ports topology > + * > + * Return: the local port number > + */ > +static inline int ntb_port_number(struct ntb_dev *ntb) > +{ > + return ntb->ops->port_number(ntb); > +} > + > +/** > + * ntb_peer_port_count() -
RE: [PATCH 02/22] NTB: Add peer indexed ports NTB API
From: Serge Semin > Add new port-index NTB API. Additionally lets get rid of Primary and > Secondary topologies, since port-number can be effectively used instead. Split into two patches please. I see no harm to the TOPO changes, though I wonder if they are necessary. > Signed-off-by: Serge Semin > > --- > include/linux/ntb.h | 101 > > 1 file changed, 79 insertions(+), 22 deletions(-) > > diff --git a/include/linux/ntb.h b/include/linux/ntb.h > index 5d1f260..0941a43 100644 > --- a/include/linux/ntb.h > +++ b/include/linux/ntb.h > @@ -64,37 +64,21 @@ struct pci_dev; > /** > * enum ntb_topo - NTB connection topology > * @NTB_TOPO_NONE: Topology is unknown or invalid. > - * @NTB_TOPO_PRI:On primary side of local ntb. > - * @NTB_TOPO_SEC:On secondary side of remote ntb. > - * @NTB_TOPO_B2B_USD:On primary side of local ntb upstream of remote > ntb. > - * @NTB_TOPO_B2B_DSD:On primary side of local ntb downstream of > remote ntb. > + * @NTB_TOPO_P2P:Simple port-to-port NTB topology > + * @NTB_TOPO_B2B:Bridge-to-bridge NTB topology > */ > enum ntb_topo { > NTB_TOPO_NONE = -1, > - NTB_TOPO_PRI, > - NTB_TOPO_SEC, > - NTB_TOPO_B2B_USD, > - NTB_TOPO_B2B_DSD, > + NTB_TOPO_P2P, > + NTB_TOPO_B2B > }; > > -static inline int ntb_topo_is_b2b(enum ntb_topo topo) > -{ > - switch ((int)topo) { > - case NTB_TOPO_B2B_USD: > - case NTB_TOPO_B2B_DSD: > - return 1; > - } > - return 0; > -} > - > static inline char *ntb_topo_string(enum ntb_topo topo) > { > switch (topo) { > case NTB_TOPO_NONE: return "NTB_TOPO_NONE"; > - case NTB_TOPO_PRI: return "NTB_TOPO_PRI"; > - case NTB_TOPO_SEC: return "NTB_TOPO_SEC"; > - case NTB_TOPO_B2B_USD: return "NTB_TOPO_B2B_USD"; > - case NTB_TOPO_B2B_DSD: return "NTB_TOPO_B2B_DSD"; > + case NTB_TOPO_P2P: return "NTB_TOPO_P2P"; > + case NTB_TOPO_B2B: return "NTB_TOPO_B2B"; > } > return "NTB_TOPO_INVALID"; > } > @@ -179,6 +163,10 @@ static inline int ntb_ctx_ops_is_valid(const struct > ntb_ctx_ops *ops) > > /** > * struct ntb_ctx_ops - ntb device operations > + * @port_number: See ntb_port_number(). > + * @peer_port_count: See ntb_peer_port_count(). > + * @peer_port_number:See ntb_peer_port_number(). > + * @peer_port_idx: See ntb_peer_port_idx(). > * @link_is_up: See ntb_link_is_up(). > * @link_enable: See ntb_link_enable(). > * @link_disable:See ntb_link_disable(). > @@ -212,6 +200,11 @@ static inline int ntb_ctx_ops_is_valid(const struct > ntb_ctx_ops *ops) > * @peer_spad_write: See ntb_peer_spad_write(). > */ > struct ntb_dev_ops { > + int (*port_number)(struct ntb_dev *ntb); > + int (*peer_port_count)(struct ntb_dev *ntb); > + int (*peer_port_number)(struct ntb_dev *ntb, int pidx); > + int (*peer_port_idx)(struct ntb_dev *ntb, int port); > + > int (*link_is_up)(struct ntb_dev *ntb, > enum ntb_speed *speed, enum ntb_width *width); > int (*link_enable)(struct ntb_dev *ntb, > @@ -265,6 +258,10 @@ static inline int ntb_dev_ops_is_valid(const struct > ntb_dev_ops *ops) > { > /* commented callbacks are not required: */ > return > + ops->port_number&& > + ops->peer_port_count&& > + ops->peer_port_number && > + ops->peer_port_idx && > ops->link_is_up && > ops->link_enable&& > ops->link_disable && > @@ -319,6 +316,7 @@ struct ntb_client { > * @dev: Linux device object. > * @pdev:Pci device entry of the ntb. > * @topo:Detected topology of the ntb. > + * @port:Local port of the ntb. > * @ops: See _dev_ops. > * @ctx: See _ctx_ops. > * @ctx_ops: See _ctx_ops. > @@ -327,6 +325,7 @@ struct ntb_dev { > struct device dev; > struct pci_dev *pdev; > enum ntb_topo topo; > + int port; > const struct ntb_dev_ops*ops; > void*ctx; > const struct ntb_ctx_ops*ctx_ops; > @@ -442,6 +441,64 @@ void ntb_link_event(struct ntb_dev *ntb); > void ntb_db_event(struct ntb_dev *ntb, int vector); > > /** > + * ntb_port_number() - get the local port number > + * @ntb: NTB device context. > + * > + * Hardware must support at least simple two-ports topology > + * > + * Return: the local port number > + */ > +static inline int ntb_port_number(struct ntb_dev *ntb) > +{ > + return ntb->ops->port_number(ntb); > +} > + > +/** > + * ntb_peer_port_count() - get the number of peer
Re: [PATCH 02/22] NTB: Add peer indexed ports NTB API
Hi Serge, [auto build test WARNING on ntb/ntb-next] [also build test WARNING on v4.9-rc7 next-20161130] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Serge-Semin/NTB-Alter-kernel-API-to-support-multi-port-devices/20161201-014939 base: https://github.com/jonmason/ntb ntb-next reproduce: # apt-get install sparse make ARCH=x86_64 allmodconfig make C=1 CF=-D__CHECK_ENDIAN__ sparse warnings: (new ones prefixed by >>) include/linux/compiler.h:253:8: sparse: attribute 'no_sanitize_address': unknown attribute drivers/ntb/hw/intel/ntb_hw_intel.c:664:13: sparse: undefined identifier 'ntb_topo_is_b2b' drivers/ntb/hw/intel/ntb_hw_intel.c:895:21: sparse: undefined identifier 'ntb_topo_is_b2b' drivers/ntb/hw/intel/ntb_hw_intel.c:1206:31: sparse: undefined identifier 'NTB_TOPO_SEC' drivers/ntb/hw/intel/ntb_hw_intel.c:1235:31: sparse: undefined identifier 'NTB_TOPO_SEC' drivers/ntb/hw/intel/ntb_hw_intel.c:1572:14: sparse: undefined identifier 'NTB_TOPO_B2B_USD' drivers/ntb/hw/intel/ntb_hw_intel.c:1573:14: sparse: undefined identifier 'NTB_TOPO_B2B_DSD' >> drivers/ntb/hw/intel/ntb_hw_intel.c:1572:14: sparse: incompatible types for >> 'case' statement drivers/ntb/hw/intel/ntb_hw_intel.c:1573:14: sparse: incompatible types for 'case' statement drivers/ntb/hw/intel/ntb_hw_intel.c:1448:24: sparse: undefined identifier 'NTB_TOPO_B2B_USD' drivers/ntb/hw/intel/ntb_hw_intel.c:1452:24: sparse: undefined identifier 'NTB_TOPO_B2B_DSD' drivers/ntb/hw/intel/ntb_hw_intel.c:1614:31: sparse: undefined identifier 'NTB_TOPO_SEC' drivers/ntb/hw/intel/ntb_hw_intel.c:1789:14: sparse: undefined identifier 'NTB_TOPO_B2B_USD' drivers/ntb/hw/intel/ntb_hw_intel.c:1790:14: sparse: undefined identifier 'NTB_TOPO_B2B_DSD' drivers/ntb/hw/intel/ntb_hw_intel.c:1795:39: sparse: undefined identifier 'NTB_TOPO_B2B_USD' drivers/ntb/hw/intel/ntb_hw_intel.c:1789:14: sparse: incompatible types for 'case' statement drivers/ntb/hw/intel/ntb_hw_intel.c:1790:14: sparse: incompatible types for 'case' statement drivers/ntb/hw/intel/ntb_hw_intel.c:2053:24: sparse: undefined identifier 'NTB_TOPO_B2B_USD' drivers/ntb/hw/intel/ntb_hw_intel.c:2056:24: sparse: undefined identifier 'NTB_TOPO_B2B_DSD' drivers/ntb/hw/intel/ntb_hw_intel.c:2060:24: sparse: undefined identifier 'NTB_TOPO_PRI' drivers/ntb/hw/intel/ntb_hw_intel.c:2064:24: sparse: undefined identifier 'NTB_TOPO_SEC' drivers/ntb/hw/intel/ntb_hw_intel.c:2043:31: sparse: undefined identifier 'NTB_TOPO_SEC' drivers/ntb/hw/intel/ntb_hw_intel.c:2356:14: sparse: undefined identifier 'NTB_TOPO_PRI' drivers/ntb/hw/intel/ntb_hw_intel.c:2374:14: sparse: undefined identifier 'NTB_TOPO_SEC' drivers/ntb/hw/intel/ntb_hw_intel.c:2386:14: sparse: undefined identifier 'NTB_TOPO_B2B_USD' drivers/ntb/hw/intel/ntb_hw_intel.c:2387:14: sparse: undefined identifier 'NTB_TOPO_B2B_DSD' drivers/ntb/hw/intel/ntb_hw_intel.c:2416:39: sparse: undefined identifier 'NTB_TOPO_B2B_USD' drivers/ntb/hw/intel/ntb_hw_intel.c:2356:14: sparse: incompatible types for 'case' statement drivers/ntb/hw/intel/ntb_hw_intel.c:2374:14: sparse: incompatible types for 'case' statement drivers/ntb/hw/intel/ntb_hw_intel.c:2386:14: sparse: incompatible types for 'case' statement drivers/ntb/hw/intel/ntb_hw_intel.c:2387:14: sparse: incompatible types for 'case' statement drivers/ntb/hw/intel/ntb_hw_intel.c:2534:31: sparse: undefined identifier 'NTB_TOPO_SEC' drivers/ntb/hw/intel/ntb_hw_intel.c:232:22: sparse: undefined identifier 'ntb_topo_is_b2b' drivers/ntb/hw/intel/ntb_hw_intel.c:1572:14: sparse: Expected constant expression in case statement drivers/ntb/hw/intel/ntb_hw_intel.c:1573:14: sparse: Expected constant expression in case statement drivers/ntb/hw/intel/ntb_hw_intel.c:1789:14: sparse: Expected constant expression in case statement drivers/ntb/hw/intel/ntb_hw_intel.c:1790:14: sparse: Expected constant expression in case statement drivers/ntb/hw/intel/ntb_hw_intel.c:2356:14: sparse: Expected constant expression in case statement drivers/ntb/hw/intel/ntb_hw_intel.c:2374:14: sparse: Expected constant expression in case statement drivers/ntb/hw/intel/ntb_hw_intel.c:2386:14: sparse: Expected constant expression in case statement drivers/ntb/hw/intel/ntb_hw_intel.c:2387:14: sparse: Expected constant expression in case statement drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'ndev_reset_unsafe_flags': drivers/ntb/hw/intel/ntb_hw_intel.c:232:8: error: implicit declaration of function 'ntb_topo_is_b2b' [-Werror=implicit-function-declaration] if (!ntb_topo_is_b2b(ndev->ntb.topo)) ^~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'intel_ntb_link_enable': drivers/ntb/hw/intel/ntb_hw_intel.c:1206:24: error: 'NTB_TOPO_SEC' undeclared
Re: [PATCH 02/22] NTB: Add peer indexed ports NTB API
Hi Serge, [auto build test WARNING on ntb/ntb-next] [also build test WARNING on v4.9-rc7 next-20161130] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Serge-Semin/NTB-Alter-kernel-API-to-support-multi-port-devices/20161201-014939 base: https://github.com/jonmason/ntb ntb-next reproduce: # apt-get install sparse make ARCH=x86_64 allmodconfig make C=1 CF=-D__CHECK_ENDIAN__ sparse warnings: (new ones prefixed by >>) include/linux/compiler.h:253:8: sparse: attribute 'no_sanitize_address': unknown attribute drivers/ntb/hw/intel/ntb_hw_intel.c:664:13: sparse: undefined identifier 'ntb_topo_is_b2b' drivers/ntb/hw/intel/ntb_hw_intel.c:895:21: sparse: undefined identifier 'ntb_topo_is_b2b' drivers/ntb/hw/intel/ntb_hw_intel.c:1206:31: sparse: undefined identifier 'NTB_TOPO_SEC' drivers/ntb/hw/intel/ntb_hw_intel.c:1235:31: sparse: undefined identifier 'NTB_TOPO_SEC' drivers/ntb/hw/intel/ntb_hw_intel.c:1572:14: sparse: undefined identifier 'NTB_TOPO_B2B_USD' drivers/ntb/hw/intel/ntb_hw_intel.c:1573:14: sparse: undefined identifier 'NTB_TOPO_B2B_DSD' >> drivers/ntb/hw/intel/ntb_hw_intel.c:1572:14: sparse: incompatible types for >> 'case' statement drivers/ntb/hw/intel/ntb_hw_intel.c:1573:14: sparse: incompatible types for 'case' statement drivers/ntb/hw/intel/ntb_hw_intel.c:1448:24: sparse: undefined identifier 'NTB_TOPO_B2B_USD' drivers/ntb/hw/intel/ntb_hw_intel.c:1452:24: sparse: undefined identifier 'NTB_TOPO_B2B_DSD' drivers/ntb/hw/intel/ntb_hw_intel.c:1614:31: sparse: undefined identifier 'NTB_TOPO_SEC' drivers/ntb/hw/intel/ntb_hw_intel.c:1789:14: sparse: undefined identifier 'NTB_TOPO_B2B_USD' drivers/ntb/hw/intel/ntb_hw_intel.c:1790:14: sparse: undefined identifier 'NTB_TOPO_B2B_DSD' drivers/ntb/hw/intel/ntb_hw_intel.c:1795:39: sparse: undefined identifier 'NTB_TOPO_B2B_USD' drivers/ntb/hw/intel/ntb_hw_intel.c:1789:14: sparse: incompatible types for 'case' statement drivers/ntb/hw/intel/ntb_hw_intel.c:1790:14: sparse: incompatible types for 'case' statement drivers/ntb/hw/intel/ntb_hw_intel.c:2053:24: sparse: undefined identifier 'NTB_TOPO_B2B_USD' drivers/ntb/hw/intel/ntb_hw_intel.c:2056:24: sparse: undefined identifier 'NTB_TOPO_B2B_DSD' drivers/ntb/hw/intel/ntb_hw_intel.c:2060:24: sparse: undefined identifier 'NTB_TOPO_PRI' drivers/ntb/hw/intel/ntb_hw_intel.c:2064:24: sparse: undefined identifier 'NTB_TOPO_SEC' drivers/ntb/hw/intel/ntb_hw_intel.c:2043:31: sparse: undefined identifier 'NTB_TOPO_SEC' drivers/ntb/hw/intel/ntb_hw_intel.c:2356:14: sparse: undefined identifier 'NTB_TOPO_PRI' drivers/ntb/hw/intel/ntb_hw_intel.c:2374:14: sparse: undefined identifier 'NTB_TOPO_SEC' drivers/ntb/hw/intel/ntb_hw_intel.c:2386:14: sparse: undefined identifier 'NTB_TOPO_B2B_USD' drivers/ntb/hw/intel/ntb_hw_intel.c:2387:14: sparse: undefined identifier 'NTB_TOPO_B2B_DSD' drivers/ntb/hw/intel/ntb_hw_intel.c:2416:39: sparse: undefined identifier 'NTB_TOPO_B2B_USD' drivers/ntb/hw/intel/ntb_hw_intel.c:2356:14: sparse: incompatible types for 'case' statement drivers/ntb/hw/intel/ntb_hw_intel.c:2374:14: sparse: incompatible types for 'case' statement drivers/ntb/hw/intel/ntb_hw_intel.c:2386:14: sparse: incompatible types for 'case' statement drivers/ntb/hw/intel/ntb_hw_intel.c:2387:14: sparse: incompatible types for 'case' statement drivers/ntb/hw/intel/ntb_hw_intel.c:2534:31: sparse: undefined identifier 'NTB_TOPO_SEC' drivers/ntb/hw/intel/ntb_hw_intel.c:232:22: sparse: undefined identifier 'ntb_topo_is_b2b' drivers/ntb/hw/intel/ntb_hw_intel.c:1572:14: sparse: Expected constant expression in case statement drivers/ntb/hw/intel/ntb_hw_intel.c:1573:14: sparse: Expected constant expression in case statement drivers/ntb/hw/intel/ntb_hw_intel.c:1789:14: sparse: Expected constant expression in case statement drivers/ntb/hw/intel/ntb_hw_intel.c:1790:14: sparse: Expected constant expression in case statement drivers/ntb/hw/intel/ntb_hw_intel.c:2356:14: sparse: Expected constant expression in case statement drivers/ntb/hw/intel/ntb_hw_intel.c:2374:14: sparse: Expected constant expression in case statement drivers/ntb/hw/intel/ntb_hw_intel.c:2386:14: sparse: Expected constant expression in case statement drivers/ntb/hw/intel/ntb_hw_intel.c:2387:14: sparse: Expected constant expression in case statement drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'ndev_reset_unsafe_flags': drivers/ntb/hw/intel/ntb_hw_intel.c:232:8: error: implicit declaration of function 'ntb_topo_is_b2b' [-Werror=implicit-function-declaration] if (!ntb_topo_is_b2b(ndev->ntb.topo)) ^~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'intel_ntb_link_enable': drivers/ntb/hw/intel/ntb_hw_intel.c:1206:24: error: 'NTB_TOPO_SEC' undeclared
Re: [PATCH 02/22] NTB: Add peer indexed ports NTB API
Hi Serge, [auto build test ERROR on ntb/ntb-next] [also build test ERROR on v4.9-rc7 next-20161130] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Serge-Semin/NTB-Alter-kernel-API-to-support-multi-port-devices/20161201-014939 base: https://github.com/jonmason/ntb ntb-next config: x86_64-randconfig-s5-12010242 (attached as .config) compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 Note: the linux-review/Serge-Semin/NTB-Alter-kernel-API-to-support-multi-port-devices/20161201-014939 HEAD ced946cf007084caf9a2ec237c898bbf1940b440 builds fine. It only hurts bisectibility. All error/warnings (new ones prefixed by >>): drivers/ntb/hw/amd/ntb_hw_amd.c: In function 'amd_ntb_link_enable': >> drivers/ntb/hw/amd/ntb_hw_amd.c:256:24: error: 'NTB_TOPO_SEC' undeclared >> (first use in this function) if (ndev->ntb.topo == NTB_TOPO_SEC) ^~~~ drivers/ntb/hw/amd/ntb_hw_amd.c:256:24: note: each undeclared identifier is reported only once for each function it appears in drivers/ntb/hw/amd/ntb_hw_amd.c: In function 'amd_ntb_link_disable': drivers/ntb/hw/amd/ntb_hw_amd.c:277:24: error: 'NTB_TOPO_SEC' undeclared (first use in this function) if (ndev->ntb.topo == NTB_TOPO_SEC) ^~~~ drivers/ntb/hw/amd/ntb_hw_amd.c: In function 'amd_init_ntb': >> drivers/ntb/hw/amd/ntb_hw_amd.c:880:7: error: 'NTB_TOPO_PRI' undeclared >> (first use in this function) case NTB_TOPO_PRI: ^~~~ drivers/ntb/hw/amd/ntb_hw_amd.c:881:7: error: 'NTB_TOPO_SEC' undeclared (first use in this function) case NTB_TOPO_SEC: ^~~~ drivers/ntb/hw/amd/ntb_hw_amd.c: In function 'amd_get_topo': drivers/ntb/hw/amd/ntb_hw_amd.c:915:10: error: 'NTB_TOPO_SEC' undeclared (first use in this function) return NTB_TOPO_SEC; ^~~~ drivers/ntb/hw/amd/ntb_hw_amd.c:917:10: error: 'NTB_TOPO_PRI' undeclared (first use in this function) return NTB_TOPO_PRI; ^~~~ >> drivers/ntb/hw/amd/ntb_hw_amd.c:918:1: warning: control reaches end of >> non-void function [-Wreturn-type] } ^ -- drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'ndev_reset_unsafe_flags': drivers/ntb/hw/intel/ntb_hw_intel.c:232:8: error: implicit declaration of function 'ntb_topo_is_b2b' [-Werror=implicit-function-declaration] if (!ntb_topo_is_b2b(ndev->ntb.topo)) ^~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'intel_ntb_link_enable': >> drivers/ntb/hw/intel/ntb_hw_intel.c:1206:24: error: 'NTB_TOPO_SEC' >> undeclared (first use in this function) if (ndev->ntb.topo == NTB_TOPO_SEC) ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c:1206:24: note: each undeclared identifier is reported only once for each function it appears in drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'intel_ntb_link_disable': drivers/ntb/hw/intel/ntb_hw_intel.c:1235:24: error: 'NTB_TOPO_SEC' undeclared (first use in this function) if (ndev->ntb.topo == NTB_TOPO_SEC) ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'atom_ppd_topo': drivers/ntb/hw/intel/ntb_hw_intel.c:1448:10: error: 'NTB_TOPO_B2B_USD' undeclared (first use in this function) return NTB_TOPO_B2B_USD; ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c:1452:10: error: 'NTB_TOPO_B2B_DSD' undeclared (first use in this function) return NTB_TOPO_B2B_DSD; ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'atom_init_ntb': drivers/ntb/hw/intel/ntb_hw_intel.c:1572:7: error: 'NTB_TOPO_B2B_USD' undeclared (first use in this function) case NTB_TOPO_B2B_USD: ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c:1573:7: error: 'NTB_TOPO_B2B_DSD' undeclared (first use in this function) case NTB_TOPO_B2B_DSD: ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'atom_init_dev': drivers/ntb/hw/intel/ntb_hw_intel.c:1614:24: error: 'NTB_TOPO_SEC' undeclared (first use in this function) if (ndev->ntb.topo != NTB_TOPO_SEC) { ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'skx_init_ntb': drivers/ntb/hw/intel/ntb_hw_intel.c:1789:7: error: 'NTB_TOPO_B2B_USD' undeclared (first use in this function) case NTB_TOPO_B2B_USD: ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c:1790:7: error: 'NTB_TOPO_B2B_DSD' undeclared (first use in this function) case NTB_TOPO_B2B_DSD: ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'xeon_link_is_up': drivers/ntb/hw/intel/ntb_hw_intel.c:2043:24: error: 'NTB_TOPO_SEC' undeclared (first use in
Re: [PATCH 02/22] NTB: Add peer indexed ports NTB API
Hi Serge, [auto build test ERROR on ntb/ntb-next] [also build test ERROR on v4.9-rc7 next-20161130] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Serge-Semin/NTB-Alter-kernel-API-to-support-multi-port-devices/20161201-014939 base: https://github.com/jonmason/ntb ntb-next config: x86_64-randconfig-s5-12010242 (attached as .config) compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 Note: the linux-review/Serge-Semin/NTB-Alter-kernel-API-to-support-multi-port-devices/20161201-014939 HEAD ced946cf007084caf9a2ec237c898bbf1940b440 builds fine. It only hurts bisectibility. All error/warnings (new ones prefixed by >>): drivers/ntb/hw/amd/ntb_hw_amd.c: In function 'amd_ntb_link_enable': >> drivers/ntb/hw/amd/ntb_hw_amd.c:256:24: error: 'NTB_TOPO_SEC' undeclared >> (first use in this function) if (ndev->ntb.topo == NTB_TOPO_SEC) ^~~~ drivers/ntb/hw/amd/ntb_hw_amd.c:256:24: note: each undeclared identifier is reported only once for each function it appears in drivers/ntb/hw/amd/ntb_hw_amd.c: In function 'amd_ntb_link_disable': drivers/ntb/hw/amd/ntb_hw_amd.c:277:24: error: 'NTB_TOPO_SEC' undeclared (first use in this function) if (ndev->ntb.topo == NTB_TOPO_SEC) ^~~~ drivers/ntb/hw/amd/ntb_hw_amd.c: In function 'amd_init_ntb': >> drivers/ntb/hw/amd/ntb_hw_amd.c:880:7: error: 'NTB_TOPO_PRI' undeclared >> (first use in this function) case NTB_TOPO_PRI: ^~~~ drivers/ntb/hw/amd/ntb_hw_amd.c:881:7: error: 'NTB_TOPO_SEC' undeclared (first use in this function) case NTB_TOPO_SEC: ^~~~ drivers/ntb/hw/amd/ntb_hw_amd.c: In function 'amd_get_topo': drivers/ntb/hw/amd/ntb_hw_amd.c:915:10: error: 'NTB_TOPO_SEC' undeclared (first use in this function) return NTB_TOPO_SEC; ^~~~ drivers/ntb/hw/amd/ntb_hw_amd.c:917:10: error: 'NTB_TOPO_PRI' undeclared (first use in this function) return NTB_TOPO_PRI; ^~~~ >> drivers/ntb/hw/amd/ntb_hw_amd.c:918:1: warning: control reaches end of >> non-void function [-Wreturn-type] } ^ -- drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'ndev_reset_unsafe_flags': drivers/ntb/hw/intel/ntb_hw_intel.c:232:8: error: implicit declaration of function 'ntb_topo_is_b2b' [-Werror=implicit-function-declaration] if (!ntb_topo_is_b2b(ndev->ntb.topo)) ^~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'intel_ntb_link_enable': >> drivers/ntb/hw/intel/ntb_hw_intel.c:1206:24: error: 'NTB_TOPO_SEC' >> undeclared (first use in this function) if (ndev->ntb.topo == NTB_TOPO_SEC) ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c:1206:24: note: each undeclared identifier is reported only once for each function it appears in drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'intel_ntb_link_disable': drivers/ntb/hw/intel/ntb_hw_intel.c:1235:24: error: 'NTB_TOPO_SEC' undeclared (first use in this function) if (ndev->ntb.topo == NTB_TOPO_SEC) ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'atom_ppd_topo': drivers/ntb/hw/intel/ntb_hw_intel.c:1448:10: error: 'NTB_TOPO_B2B_USD' undeclared (first use in this function) return NTB_TOPO_B2B_USD; ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c:1452:10: error: 'NTB_TOPO_B2B_DSD' undeclared (first use in this function) return NTB_TOPO_B2B_DSD; ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'atom_init_ntb': drivers/ntb/hw/intel/ntb_hw_intel.c:1572:7: error: 'NTB_TOPO_B2B_USD' undeclared (first use in this function) case NTB_TOPO_B2B_USD: ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c:1573:7: error: 'NTB_TOPO_B2B_DSD' undeclared (first use in this function) case NTB_TOPO_B2B_DSD: ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'atom_init_dev': drivers/ntb/hw/intel/ntb_hw_intel.c:1614:24: error: 'NTB_TOPO_SEC' undeclared (first use in this function) if (ndev->ntb.topo != NTB_TOPO_SEC) { ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'skx_init_ntb': drivers/ntb/hw/intel/ntb_hw_intel.c:1789:7: error: 'NTB_TOPO_B2B_USD' undeclared (first use in this function) case NTB_TOPO_B2B_USD: ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c:1790:7: error: 'NTB_TOPO_B2B_DSD' undeclared (first use in this function) case NTB_TOPO_B2B_DSD: ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'xeon_link_is_up': drivers/ntb/hw/intel/ntb_hw_intel.c:2043:24: error: 'NTB_TOPO_SEC' undeclared (first use in
Re: [PATCH 02/22] NTB: Add peer indexed ports NTB API
Hi Serge, [auto build test ERROR on ntb/ntb-next] [also build test ERROR on v4.9-rc7 next-20161130] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Serge-Semin/NTB-Alter-kernel-API-to-support-multi-port-devices/20161201-014939 base: https://github.com/jonmason/ntb ntb-next config: x86_64-allmodconfig (attached as .config) compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All errors (new ones prefixed by >>): drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'ndev_reset_unsafe_flags': >> drivers/ntb/hw/intel/ntb_hw_intel.c:232:8: error: implicit declaration of >> function 'ntb_topo_is_b2b' [-Werror=implicit-function-declaration] if (!ntb_topo_is_b2b(ndev->ntb.topo)) ^~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'intel_ntb_link_enable': drivers/ntb/hw/intel/ntb_hw_intel.c:1206:24: error: 'NTB_TOPO_SEC' undeclared (first use in this function) if (ndev->ntb.topo == NTB_TOPO_SEC) ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c:1206:24: note: each undeclared identifier is reported only once for each function it appears in drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'intel_ntb_link_disable': drivers/ntb/hw/intel/ntb_hw_intel.c:1235:24: error: 'NTB_TOPO_SEC' undeclared (first use in this function) if (ndev->ntb.topo == NTB_TOPO_SEC) ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'atom_ppd_topo': >> drivers/ntb/hw/intel/ntb_hw_intel.c:1448:10: error: 'NTB_TOPO_B2B_USD' >> undeclared (first use in this function) return NTB_TOPO_B2B_USD; ^~~~ >> drivers/ntb/hw/intel/ntb_hw_intel.c:1452:10: error: 'NTB_TOPO_B2B_DSD' >> undeclared (first use in this function) return NTB_TOPO_B2B_DSD; ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'atom_init_ntb': drivers/ntb/hw/intel/ntb_hw_intel.c:1572:7: error: 'NTB_TOPO_B2B_USD' undeclared (first use in this function) case NTB_TOPO_B2B_USD: ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c:1573:7: error: 'NTB_TOPO_B2B_DSD' undeclared (first use in this function) case NTB_TOPO_B2B_DSD: ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'atom_init_dev': drivers/ntb/hw/intel/ntb_hw_intel.c:1614:24: error: 'NTB_TOPO_SEC' undeclared (first use in this function) if (ndev->ntb.topo != NTB_TOPO_SEC) { ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'skx_init_ntb': drivers/ntb/hw/intel/ntb_hw_intel.c:1789:7: error: 'NTB_TOPO_B2B_USD' undeclared (first use in this function) case NTB_TOPO_B2B_USD: ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c:1790:7: error: 'NTB_TOPO_B2B_DSD' undeclared (first use in this function) case NTB_TOPO_B2B_DSD: ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'xeon_link_is_up': drivers/ntb/hw/intel/ntb_hw_intel.c:2043:24: error: 'NTB_TOPO_SEC' undeclared (first use in this function) if (ndev->ntb.topo == NTB_TOPO_SEC) ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'xeon_ppd_topo': drivers/ntb/hw/intel/ntb_hw_intel.c:2053:10: error: 'NTB_TOPO_B2B_USD' undeclared (first use in this function) return NTB_TOPO_B2B_USD; ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c:2056:10: error: 'NTB_TOPO_B2B_DSD' undeclared (first use in this function) return NTB_TOPO_B2B_DSD; ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c:2060:10: error: 'NTB_TOPO_PRI' undeclared (first use in this function) return NTB_TOPO_PRI; ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c:2064:10: error: 'NTB_TOPO_SEC' undeclared (first use in this function) return NTB_TOPO_SEC; ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'xeon_init_ntb': drivers/ntb/hw/intel/ntb_hw_intel.c:2356:7: error: 'NTB_TOPO_PRI' undeclared (first use in this function) case NTB_TOPO_PRI: ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c:2374:7: error: 'NTB_TOPO_SEC' undeclared (first use in this function) case NTB_TOPO_SEC: ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c:2386:7: error: 'NTB_TOPO_B2B_USD' undeclared (first use in this function) case NTB_TOPO_B2B_USD: ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c:2387:7: error: 'NTB_TOPO_B2B_DSD' undeclared (first use in this function) case NTB_TOPO_B2B_DSD: ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'xeon_init_dev': drivers/ntb/hw/intel/ntb_hw_intel.c:2534:24: error: 'NTB_TOPO_SEC' undeclared (first use in this
Re: [PATCH 02/22] NTB: Add peer indexed ports NTB API
Hi Serge, [auto build test ERROR on ntb/ntb-next] [also build test ERROR on v4.9-rc7 next-20161130] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Serge-Semin/NTB-Alter-kernel-API-to-support-multi-port-devices/20161201-014939 base: https://github.com/jonmason/ntb ntb-next config: x86_64-allmodconfig (attached as .config) compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All errors (new ones prefixed by >>): drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'ndev_reset_unsafe_flags': >> drivers/ntb/hw/intel/ntb_hw_intel.c:232:8: error: implicit declaration of >> function 'ntb_topo_is_b2b' [-Werror=implicit-function-declaration] if (!ntb_topo_is_b2b(ndev->ntb.topo)) ^~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'intel_ntb_link_enable': drivers/ntb/hw/intel/ntb_hw_intel.c:1206:24: error: 'NTB_TOPO_SEC' undeclared (first use in this function) if (ndev->ntb.topo == NTB_TOPO_SEC) ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c:1206:24: note: each undeclared identifier is reported only once for each function it appears in drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'intel_ntb_link_disable': drivers/ntb/hw/intel/ntb_hw_intel.c:1235:24: error: 'NTB_TOPO_SEC' undeclared (first use in this function) if (ndev->ntb.topo == NTB_TOPO_SEC) ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'atom_ppd_topo': >> drivers/ntb/hw/intel/ntb_hw_intel.c:1448:10: error: 'NTB_TOPO_B2B_USD' >> undeclared (first use in this function) return NTB_TOPO_B2B_USD; ^~~~ >> drivers/ntb/hw/intel/ntb_hw_intel.c:1452:10: error: 'NTB_TOPO_B2B_DSD' >> undeclared (first use in this function) return NTB_TOPO_B2B_DSD; ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'atom_init_ntb': drivers/ntb/hw/intel/ntb_hw_intel.c:1572:7: error: 'NTB_TOPO_B2B_USD' undeclared (first use in this function) case NTB_TOPO_B2B_USD: ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c:1573:7: error: 'NTB_TOPO_B2B_DSD' undeclared (first use in this function) case NTB_TOPO_B2B_DSD: ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'atom_init_dev': drivers/ntb/hw/intel/ntb_hw_intel.c:1614:24: error: 'NTB_TOPO_SEC' undeclared (first use in this function) if (ndev->ntb.topo != NTB_TOPO_SEC) { ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'skx_init_ntb': drivers/ntb/hw/intel/ntb_hw_intel.c:1789:7: error: 'NTB_TOPO_B2B_USD' undeclared (first use in this function) case NTB_TOPO_B2B_USD: ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c:1790:7: error: 'NTB_TOPO_B2B_DSD' undeclared (first use in this function) case NTB_TOPO_B2B_DSD: ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'xeon_link_is_up': drivers/ntb/hw/intel/ntb_hw_intel.c:2043:24: error: 'NTB_TOPO_SEC' undeclared (first use in this function) if (ndev->ntb.topo == NTB_TOPO_SEC) ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'xeon_ppd_topo': drivers/ntb/hw/intel/ntb_hw_intel.c:2053:10: error: 'NTB_TOPO_B2B_USD' undeclared (first use in this function) return NTB_TOPO_B2B_USD; ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c:2056:10: error: 'NTB_TOPO_B2B_DSD' undeclared (first use in this function) return NTB_TOPO_B2B_DSD; ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c:2060:10: error: 'NTB_TOPO_PRI' undeclared (first use in this function) return NTB_TOPO_PRI; ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c:2064:10: error: 'NTB_TOPO_SEC' undeclared (first use in this function) return NTB_TOPO_SEC; ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'xeon_init_ntb': drivers/ntb/hw/intel/ntb_hw_intel.c:2356:7: error: 'NTB_TOPO_PRI' undeclared (first use in this function) case NTB_TOPO_PRI: ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c:2374:7: error: 'NTB_TOPO_SEC' undeclared (first use in this function) case NTB_TOPO_SEC: ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c:2386:7: error: 'NTB_TOPO_B2B_USD' undeclared (first use in this function) case NTB_TOPO_B2B_USD: ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c:2387:7: error: 'NTB_TOPO_B2B_DSD' undeclared (first use in this function) case NTB_TOPO_B2B_DSD: ^~~~ drivers/ntb/hw/intel/ntb_hw_intel.c: In function 'xeon_init_dev': drivers/ntb/hw/intel/ntb_hw_intel.c:2534:24: error: 'NTB_TOPO_SEC' undeclared (first use in this
[PATCH 02/22] NTB: Add peer indexed ports NTB API
Add new port-index NTB API. Additionally lets get rid of Primary and Secondary topologies, since port-number can be effectively used instead. Signed-off-by: Serge Semin--- include/linux/ntb.h | 101 1 file changed, 79 insertions(+), 22 deletions(-) diff --git a/include/linux/ntb.h b/include/linux/ntb.h index 5d1f260..0941a43 100644 --- a/include/linux/ntb.h +++ b/include/linux/ntb.h @@ -64,37 +64,21 @@ struct pci_dev; /** * enum ntb_topo - NTB connection topology * @NTB_TOPO_NONE: Topology is unknown or invalid. - * @NTB_TOPO_PRI: On primary side of local ntb. - * @NTB_TOPO_SEC: On secondary side of remote ntb. - * @NTB_TOPO_B2B_USD: On primary side of local ntb upstream of remote ntb. - * @NTB_TOPO_B2B_DSD: On primary side of local ntb downstream of remote ntb. + * @NTB_TOPO_P2P: Simple port-to-port NTB topology + * @NTB_TOPO_B2B: Bridge-to-bridge NTB topology */ enum ntb_topo { NTB_TOPO_NONE = -1, - NTB_TOPO_PRI, - NTB_TOPO_SEC, - NTB_TOPO_B2B_USD, - NTB_TOPO_B2B_DSD, + NTB_TOPO_P2P, + NTB_TOPO_B2B }; -static inline int ntb_topo_is_b2b(enum ntb_topo topo) -{ - switch ((int)topo) { - case NTB_TOPO_B2B_USD: - case NTB_TOPO_B2B_DSD: - return 1; - } - return 0; -} - static inline char *ntb_topo_string(enum ntb_topo topo) { switch (topo) { case NTB_TOPO_NONE: return "NTB_TOPO_NONE"; - case NTB_TOPO_PRI: return "NTB_TOPO_PRI"; - case NTB_TOPO_SEC: return "NTB_TOPO_SEC"; - case NTB_TOPO_B2B_USD: return "NTB_TOPO_B2B_USD"; - case NTB_TOPO_B2B_DSD: return "NTB_TOPO_B2B_DSD"; + case NTB_TOPO_P2P: return "NTB_TOPO_P2P"; + case NTB_TOPO_B2B: return "NTB_TOPO_B2B"; } return "NTB_TOPO_INVALID"; } @@ -179,6 +163,10 @@ static inline int ntb_ctx_ops_is_valid(const struct ntb_ctx_ops *ops) /** * struct ntb_ctx_ops - ntb device operations + * @port_number: See ntb_port_number(). + * @peer_port_count: See ntb_peer_port_count(). + * @peer_port_number: See ntb_peer_port_number(). + * @peer_port_idx: See ntb_peer_port_idx(). * @link_is_up:See ntb_link_is_up(). * @link_enable: See ntb_link_enable(). * @link_disable: See ntb_link_disable(). @@ -212,6 +200,11 @@ static inline int ntb_ctx_ops_is_valid(const struct ntb_ctx_ops *ops) * @peer_spad_write: See ntb_peer_spad_write(). */ struct ntb_dev_ops { + int (*port_number)(struct ntb_dev *ntb); + int (*peer_port_count)(struct ntb_dev *ntb); + int (*peer_port_number)(struct ntb_dev *ntb, int pidx); + int (*peer_port_idx)(struct ntb_dev *ntb, int port); + int (*link_is_up)(struct ntb_dev *ntb, enum ntb_speed *speed, enum ntb_width *width); int (*link_enable)(struct ntb_dev *ntb, @@ -265,6 +258,10 @@ static inline int ntb_dev_ops_is_valid(const struct ntb_dev_ops *ops) { /* commented callbacks are not required: */ return + ops->port_number&& + ops->peer_port_count&& + ops->peer_port_number && + ops->peer_port_idx && ops->link_is_up && ops->link_enable&& ops->link_disable && @@ -319,6 +316,7 @@ struct ntb_client { * @dev: Linux device object. * @pdev: Pci device entry of the ntb. * @topo: Detected topology of the ntb. + * @port: Local port of the ntb. * @ops: See _dev_ops. * @ctx: See _ctx_ops. * @ctx_ops: See _ctx_ops. @@ -327,6 +325,7 @@ struct ntb_dev { struct device dev; struct pci_dev *pdev; enum ntb_topo topo; + int port; const struct ntb_dev_ops*ops; void*ctx; const struct ntb_ctx_ops*ctx_ops; @@ -442,6 +441,64 @@ void ntb_link_event(struct ntb_dev *ntb); void ntb_db_event(struct ntb_dev *ntb, int vector); /** + * ntb_port_number() - get the local port number + * @ntb: NTB device context. + * + * Hardware must support at least simple two-ports topology + * + * Return: the local port number + */ +static inline int ntb_port_number(struct ntb_dev *ntb) +{ + return ntb->ops->port_number(ntb); +} + +/** + * ntb_peer_port_count() - get the number of peer device ports + * @ntb: NTB device context. + * + * Hardware may support an access to memory of several remote domains + * over multi-port NTB devices. This method returns the number of peers, + * local device can have shared memory with. + *
[PATCH 02/22] NTB: Add peer indexed ports NTB API
Add new port-index NTB API. Additionally lets get rid of Primary and Secondary topologies, since port-number can be effectively used instead. Signed-off-by: Serge Semin --- include/linux/ntb.h | 101 1 file changed, 79 insertions(+), 22 deletions(-) diff --git a/include/linux/ntb.h b/include/linux/ntb.h index 5d1f260..0941a43 100644 --- a/include/linux/ntb.h +++ b/include/linux/ntb.h @@ -64,37 +64,21 @@ struct pci_dev; /** * enum ntb_topo - NTB connection topology * @NTB_TOPO_NONE: Topology is unknown or invalid. - * @NTB_TOPO_PRI: On primary side of local ntb. - * @NTB_TOPO_SEC: On secondary side of remote ntb. - * @NTB_TOPO_B2B_USD: On primary side of local ntb upstream of remote ntb. - * @NTB_TOPO_B2B_DSD: On primary side of local ntb downstream of remote ntb. + * @NTB_TOPO_P2P: Simple port-to-port NTB topology + * @NTB_TOPO_B2B: Bridge-to-bridge NTB topology */ enum ntb_topo { NTB_TOPO_NONE = -1, - NTB_TOPO_PRI, - NTB_TOPO_SEC, - NTB_TOPO_B2B_USD, - NTB_TOPO_B2B_DSD, + NTB_TOPO_P2P, + NTB_TOPO_B2B }; -static inline int ntb_topo_is_b2b(enum ntb_topo topo) -{ - switch ((int)topo) { - case NTB_TOPO_B2B_USD: - case NTB_TOPO_B2B_DSD: - return 1; - } - return 0; -} - static inline char *ntb_topo_string(enum ntb_topo topo) { switch (topo) { case NTB_TOPO_NONE: return "NTB_TOPO_NONE"; - case NTB_TOPO_PRI: return "NTB_TOPO_PRI"; - case NTB_TOPO_SEC: return "NTB_TOPO_SEC"; - case NTB_TOPO_B2B_USD: return "NTB_TOPO_B2B_USD"; - case NTB_TOPO_B2B_DSD: return "NTB_TOPO_B2B_DSD"; + case NTB_TOPO_P2P: return "NTB_TOPO_P2P"; + case NTB_TOPO_B2B: return "NTB_TOPO_B2B"; } return "NTB_TOPO_INVALID"; } @@ -179,6 +163,10 @@ static inline int ntb_ctx_ops_is_valid(const struct ntb_ctx_ops *ops) /** * struct ntb_ctx_ops - ntb device operations + * @port_number: See ntb_port_number(). + * @peer_port_count: See ntb_peer_port_count(). + * @peer_port_number: See ntb_peer_port_number(). + * @peer_port_idx: See ntb_peer_port_idx(). * @link_is_up:See ntb_link_is_up(). * @link_enable: See ntb_link_enable(). * @link_disable: See ntb_link_disable(). @@ -212,6 +200,11 @@ static inline int ntb_ctx_ops_is_valid(const struct ntb_ctx_ops *ops) * @peer_spad_write: See ntb_peer_spad_write(). */ struct ntb_dev_ops { + int (*port_number)(struct ntb_dev *ntb); + int (*peer_port_count)(struct ntb_dev *ntb); + int (*peer_port_number)(struct ntb_dev *ntb, int pidx); + int (*peer_port_idx)(struct ntb_dev *ntb, int port); + int (*link_is_up)(struct ntb_dev *ntb, enum ntb_speed *speed, enum ntb_width *width); int (*link_enable)(struct ntb_dev *ntb, @@ -265,6 +258,10 @@ static inline int ntb_dev_ops_is_valid(const struct ntb_dev_ops *ops) { /* commented callbacks are not required: */ return + ops->port_number&& + ops->peer_port_count&& + ops->peer_port_number && + ops->peer_port_idx && ops->link_is_up && ops->link_enable&& ops->link_disable && @@ -319,6 +316,7 @@ struct ntb_client { * @dev: Linux device object. * @pdev: Pci device entry of the ntb. * @topo: Detected topology of the ntb. + * @port: Local port of the ntb. * @ops: See _dev_ops. * @ctx: See _ctx_ops. * @ctx_ops: See _ctx_ops. @@ -327,6 +325,7 @@ struct ntb_dev { struct device dev; struct pci_dev *pdev; enum ntb_topo topo; + int port; const struct ntb_dev_ops*ops; void*ctx; const struct ntb_ctx_ops*ctx_ops; @@ -442,6 +441,64 @@ void ntb_link_event(struct ntb_dev *ntb); void ntb_db_event(struct ntb_dev *ntb, int vector); /** + * ntb_port_number() - get the local port number + * @ntb: NTB device context. + * + * Hardware must support at least simple two-ports topology + * + * Return: the local port number + */ +static inline int ntb_port_number(struct ntb_dev *ntb) +{ + return ntb->ops->port_number(ntb); +} + +/** + * ntb_peer_port_count() - get the number of peer device ports + * @ntb: NTB device context. + * + * Hardware may support an access to memory of several remote domains + * over multi-port NTB devices. This method returns the number of peers, + * local device can have shared memory with. + * + * Return: the number of