Commit ae5f531d authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'ntb-5.17-bugfixes' of git://github.com/jonmason/ntb

Pull NTB fixes from Jon Mason:
 "Bug fixes for sparse warning, intel port config offset, and a new
  mailing list"

* tag 'ntb-5.17-bugfixes' of git://github.com/jonmason/ntb:
  MAINTAINERS: update mailing list address for NTB subsystem
  ntb: intel: fix port config status offset for SPR
  NTB/msi: Use struct_size() helper in devm_kzalloc()
parents fb184c4a 9b818634
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -13699,7 +13699,7 @@ F: scripts/nsdeps
NTB AMD DRIVER
M:	Sanjay R Mehta <sanju.mehta@amd.com>
M:	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
L:	linux-ntb@googlegroups.com
L:	ntb@lists.linux.dev
S:	Supported
F:	drivers/ntb/hw/amd/
@@ -13707,7 +13707,7 @@ NTB DRIVER CORE
M:	Jon Mason <jdmason@kudzu.us>
M:	Dave Jiang <dave.jiang@intel.com>
M:	Allen Hubbe <allenbh@gmail.com>
L:	linux-ntb@googlegroups.com
L:	ntb@lists.linux.dev
S:	Supported
W:	https://github.com/jonmason/ntb/wiki
T:	git git://github.com/jonmason/ntb.git
@@ -13719,13 +13719,13 @@ F: tools/testing/selftests/ntb/
NTB IDT DRIVER
M:	Serge Semin <fancer.lancer@gmail.com>
L:	linux-ntb@googlegroups.com
L:	ntb@lists.linux.dev
S:	Supported
F:	drivers/ntb/hw/idt/
NTB INTEL DRIVER
M:	Dave Jiang <dave.jiang@intel.com>
L:	linux-ntb@googlegroups.com
L:	ntb@lists.linux.dev
S:	Supported
W:	https://github.com/davejiang/linux/wiki
T:	git https://github.com/davejiang/linux.git
+16 −1
Original line number Diff line number Diff line
@@ -168,6 +168,18 @@ static enum ntb_topo gen4_ppd_topo(struct intel_ntb_dev *ndev, u32 ppd)
	return NTB_TOPO_NONE;
}

static enum ntb_topo spr_ppd_topo(struct intel_ntb_dev *ndev, u32 ppd)
{
	switch (ppd & SPR_PPD_TOPO_MASK) {
	case SPR_PPD_TOPO_B2B_USD:
		return NTB_TOPO_B2B_USD;
	case SPR_PPD_TOPO_B2B_DSD:
		return NTB_TOPO_B2B_DSD;
	}

	return NTB_TOPO_NONE;
}

int gen4_init_dev(struct intel_ntb_dev *ndev)
{
	struct pci_dev *pdev = ndev->ntb.pdev;
@@ -183,7 +195,10 @@ int gen4_init_dev(struct intel_ntb_dev *ndev)
	}

	ppd1 = ioread32(ndev->self_mmio + GEN4_PPD1_OFFSET);
	if (pdev_is_ICX(pdev))
		ndev->ntb.topo = gen4_ppd_topo(ndev, ppd1);
	else if (pdev_is_SPR(pdev))
		ndev->ntb.topo = spr_ppd_topo(ndev, ppd1);
	dev_dbg(&pdev->dev, "ppd %#x topo %s\n", ppd1,
		ntb_topo_string(ndev->ntb.topo));
	if (ndev->ntb.topo == NTB_TOPO_NONE)
+16 −0
Original line number Diff line number Diff line
@@ -49,10 +49,14 @@
#define GEN4_PPD_CLEAR_TRN		0x0001
#define GEN4_PPD_LINKTRN		0x0008
#define GEN4_PPD_CONN_MASK		0x0300
#define SPR_PPD_CONN_MASK		0x0700
#define GEN4_PPD_CONN_B2B		0x0200
#define GEN4_PPD_DEV_MASK		0x1000
#define GEN4_PPD_DEV_DSD		0x1000
#define GEN4_PPD_DEV_USD		0x0000
#define SPR_PPD_DEV_MASK		0x4000
#define SPR_PPD_DEV_DSD 		0x4000
#define SPR_PPD_DEV_USD 		0x0000
#define GEN4_LINK_CTRL_LINK_DISABLE	0x0010

#define GEN4_SLOTSTS			0xb05a
@@ -62,6 +66,10 @@
#define GEN4_PPD_TOPO_B2B_USD	(GEN4_PPD_CONN_B2B | GEN4_PPD_DEV_USD)
#define GEN4_PPD_TOPO_B2B_DSD	(GEN4_PPD_CONN_B2B | GEN4_PPD_DEV_DSD)

#define SPR_PPD_TOPO_MASK	(SPR_PPD_CONN_MASK | SPR_PPD_DEV_MASK)
#define SPR_PPD_TOPO_B2B_USD	(GEN4_PPD_CONN_B2B | SPR_PPD_DEV_USD)
#define SPR_PPD_TOPO_B2B_DSD	(GEN4_PPD_CONN_B2B | SPR_PPD_DEV_DSD)

#define GEN4_DB_COUNT			32
#define GEN4_DB_LINK			32
#define GEN4_DB_LINK_BIT		BIT_ULL(GEN4_DB_LINK)
@@ -112,4 +120,12 @@ static inline int pdev_is_ICX(struct pci_dev *pdev)
	return 0;
}

static inline int pdev_is_SPR(struct pci_dev *pdev)
{
	if (pdev_is_gen4(pdev) &&
	    pdev->revision > PCI_DEVICE_REVISION_ICX_MAX)
		return 1;
	return 0;
}

#endif
+2 −4
Original line number Diff line number Diff line
@@ -33,7 +33,6 @@ int ntb_msi_init(struct ntb_dev *ntb,
{
	phys_addr_t mw_phys_addr;
	resource_size_t mw_size;
	size_t struct_size;
	int peer_widx;
	int peers;
	int ret;
@@ -43,9 +42,8 @@ int ntb_msi_init(struct ntb_dev *ntb,
	if (peers <= 0)
		return -EINVAL;

	struct_size = sizeof(*ntb->msi) + sizeof(*ntb->msi->peer_mws) * peers;

	ntb->msi = devm_kzalloc(&ntb->dev, struct_size, GFP_KERNEL);
	ntb->msi = devm_kzalloc(&ntb->dev, struct_size(ntb->msi, peer_mws, peers),
				GFP_KERNEL);
	if (!ntb->msi)
		return -ENOMEM;