Commit ae5f531d authored by Linus Torvalds's avatar Linus Torvalds

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
...@@ -13699,7 +13699,7 @@ F: scripts/nsdeps ...@@ -13699,7 +13699,7 @@ F: scripts/nsdeps
NTB AMD DRIVER NTB AMD DRIVER
M: Sanjay R Mehta <sanju.mehta@amd.com> M: Sanjay R Mehta <sanju.mehta@amd.com>
M: Shyam Sundar S K <Shyam-sundar.S-k@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 S: Supported
F: drivers/ntb/hw/amd/ F: drivers/ntb/hw/amd/
...@@ -13707,7 +13707,7 @@ NTB DRIVER CORE ...@@ -13707,7 +13707,7 @@ NTB DRIVER CORE
M: Jon Mason <jdmason@kudzu.us> M: Jon Mason <jdmason@kudzu.us>
M: Dave Jiang <dave.jiang@intel.com> M: Dave Jiang <dave.jiang@intel.com>
M: Allen Hubbe <allenbh@gmail.com> M: Allen Hubbe <allenbh@gmail.com>
L: linux-ntb@googlegroups.com L: ntb@lists.linux.dev
S: Supported S: Supported
W: https://github.com/jonmason/ntb/wiki W: https://github.com/jonmason/ntb/wiki
T: git git://github.com/jonmason/ntb.git T: git git://github.com/jonmason/ntb.git
...@@ -13719,13 +13719,13 @@ F: tools/testing/selftests/ntb/ ...@@ -13719,13 +13719,13 @@ F: tools/testing/selftests/ntb/
NTB IDT DRIVER NTB IDT DRIVER
M: Serge Semin <fancer.lancer@gmail.com> M: Serge Semin <fancer.lancer@gmail.com>
L: linux-ntb@googlegroups.com L: ntb@lists.linux.dev
S: Supported S: Supported
F: drivers/ntb/hw/idt/ F: drivers/ntb/hw/idt/
NTB INTEL DRIVER NTB INTEL DRIVER
M: Dave Jiang <dave.jiang@intel.com> M: Dave Jiang <dave.jiang@intel.com>
L: linux-ntb@googlegroups.com L: ntb@lists.linux.dev
S: Supported S: Supported
W: https://github.com/davejiang/linux/wiki W: https://github.com/davejiang/linux/wiki
T: git https://github.com/davejiang/linux.git T: git https://github.com/davejiang/linux.git
......
...@@ -168,6 +168,18 @@ static enum ntb_topo gen4_ppd_topo(struct intel_ntb_dev *ndev, u32 ppd) ...@@ -168,6 +168,18 @@ static enum ntb_topo gen4_ppd_topo(struct intel_ntb_dev *ndev, u32 ppd)
return NTB_TOPO_NONE; 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) int gen4_init_dev(struct intel_ntb_dev *ndev)
{ {
struct pci_dev *pdev = ndev->ntb.pdev; struct pci_dev *pdev = ndev->ntb.pdev;
...@@ -183,7 +195,10 @@ int gen4_init_dev(struct intel_ntb_dev *ndev) ...@@ -183,7 +195,10 @@ int gen4_init_dev(struct intel_ntb_dev *ndev)
} }
ppd1 = ioread32(ndev->self_mmio + GEN4_PPD1_OFFSET); ppd1 = ioread32(ndev->self_mmio + GEN4_PPD1_OFFSET);
if (pdev_is_ICX(pdev))
ndev->ntb.topo = gen4_ppd_topo(ndev, ppd1); 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, dev_dbg(&pdev->dev, "ppd %#x topo %s\n", ppd1,
ntb_topo_string(ndev->ntb.topo)); ntb_topo_string(ndev->ntb.topo));
if (ndev->ntb.topo == NTB_TOPO_NONE) if (ndev->ntb.topo == NTB_TOPO_NONE)
......
...@@ -49,10 +49,14 @@ ...@@ -49,10 +49,14 @@
#define GEN4_PPD_CLEAR_TRN 0x0001 #define GEN4_PPD_CLEAR_TRN 0x0001
#define GEN4_PPD_LINKTRN 0x0008 #define GEN4_PPD_LINKTRN 0x0008
#define GEN4_PPD_CONN_MASK 0x0300 #define GEN4_PPD_CONN_MASK 0x0300
#define SPR_PPD_CONN_MASK 0x0700
#define GEN4_PPD_CONN_B2B 0x0200 #define GEN4_PPD_CONN_B2B 0x0200
#define GEN4_PPD_DEV_MASK 0x1000 #define GEN4_PPD_DEV_MASK 0x1000
#define GEN4_PPD_DEV_DSD 0x1000 #define GEN4_PPD_DEV_DSD 0x1000
#define GEN4_PPD_DEV_USD 0x0000 #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_LINK_CTRL_LINK_DISABLE 0x0010
#define GEN4_SLOTSTS 0xb05a #define GEN4_SLOTSTS 0xb05a
...@@ -62,6 +66,10 @@ ...@@ -62,6 +66,10 @@
#define GEN4_PPD_TOPO_B2B_USD (GEN4_PPD_CONN_B2B | GEN4_PPD_DEV_USD) #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 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_COUNT 32
#define GEN4_DB_LINK 32 #define GEN4_DB_LINK 32
#define GEN4_DB_LINK_BIT BIT_ULL(GEN4_DB_LINK) #define GEN4_DB_LINK_BIT BIT_ULL(GEN4_DB_LINK)
...@@ -112,4 +120,12 @@ static inline int pdev_is_ICX(struct pci_dev *pdev) ...@@ -112,4 +120,12 @@ static inline int pdev_is_ICX(struct pci_dev *pdev)
return 0; 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 #endif
...@@ -33,7 +33,6 @@ int ntb_msi_init(struct ntb_dev *ntb, ...@@ -33,7 +33,6 @@ int ntb_msi_init(struct ntb_dev *ntb,
{ {
phys_addr_t mw_phys_addr; phys_addr_t mw_phys_addr;
resource_size_t mw_size; resource_size_t mw_size;
size_t struct_size;
int peer_widx; int peer_widx;
int peers; int peers;
int ret; int ret;
...@@ -43,9 +42,8 @@ int ntb_msi_init(struct ntb_dev *ntb, ...@@ -43,9 +42,8 @@ int ntb_msi_init(struct ntb_dev *ntb,
if (peers <= 0) if (peers <= 0)
return -EINVAL; return -EINVAL;
struct_size = sizeof(*ntb->msi) + sizeof(*ntb->msi->peer_mws) * peers; ntb->msi = devm_kzalloc(&ntb->dev, struct_size(ntb->msi, peer_mws, peers),
GFP_KERNEL);
ntb->msi = devm_kzalloc(&ntb->dev, struct_size, GFP_KERNEL);
if (!ntb->msi) if (!ntb->msi)
return -ENOMEM; return -ENOMEM;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment