mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-01 10:42:11 +00:00
New AMD PCI ID for NTB, and a number of bug fixes for ntb_hw_switchtec
for Linux v5.17 -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEoE9b9c3U2JxX98mqbmZLrHqL0iMFAmHd/AYACgkQbmZLrHqL 0iMyRA/+KnlvCJMxDdeZ7dcK2s86BuvWESfkRbJYAMBNX6HiuH3SHll/UNF8UvLU CIl12cqALKwu618J37gbF9HHuVu+VVk1Dl9ib+mdoqGL/kPqX0SqtyP4lCyKg6HK POnOgjZWd0YR9tNjBukRx5JnLH1KtjaLVLWPxTmb0WgwQjcNqXWtRIWjHovLRThJ 938P02JQQv4TUcFuazXmdgiF0vUm+KPLpBP4urgPSSTPmdKLHvQY5ScJr+Do7OS5 51mxPkgF1JBnvJiuCWdZOXFpoA/o8UG3REVoGPMzIBStc+1vnFWu1eo80DIfXbz/ zYPYj+Foq4/ZsAJU5j4FHzVs9SkP8VKClENa8BNDoUiSEyYbDMFbmw4D+VOV0Z/n CmQiOQqZh5cshQL7V0v+6pNYYyQBGK2JpCC8EvTWIlYWohmYvu/WLCpVwk4PCjBX caM0l9f99dTdzgPcRMC2CnKiqrAutIcCoaefyqVNIyMLiI0SyoYaBcbDeXNmujLV w5JGjaeCiv8AJYo6/XvqCrizYC5ETwNy+Rt4nyXH5gTGSGFH0hJ+Ip/8DPVQ1e/K DEEVZACh6uPP/ySSjZZEGagqI7YetSu3TEU1+8n1j4IA/ugP7XBwG1ZZQ9rEMcfw kG+VJwOil8VeRaL+osXsfU8xxRNIB6zuBajT0FG0eCpkAAIZWqw= =TMHM -----END PGP SIGNATURE----- Merge tag 'ntb-5.17' of git://github.com/jonmason/ntb Pull NTB updates from Jon Mason: "New AMD PCI ID for NTB, and a number of bug fixes for ntb_hw_switchtec for Linux v5.17" * tag 'ntb-5.17' of git://github.com/jonmason/ntb: ntb_hw_switchtec: Fix a minor issue in config_req_id_table() ntb_hw_switchtec: Remove code for disabling ID protection ntb_hw_switchtec: Update the way of getting VEP instance ID ntb_hw_switchtec: AND with the part_map for a valid tpart_vec ntb_hw_switchtec: Fix bug with more than 32 partitions ntb_hw_switchtec: Fix pff ioread to read into mmio_part_cfg_all ntb_hw_switchtec: fix the spelling of "its" NTB/msi: Fix ntbm_msi_request_threaded_irq() kernel-doc comment ntb_hw_amd: Add NTB PCI ID for new gen CPU
This commit is contained in:
commit
96000bc956
@ -1321,6 +1321,8 @@ static const struct ntb_dev_data dev_data[] = {
|
||||
static const struct pci_device_id amd_ntb_pci_tbl[] = {
|
||||
{ PCI_VDEVICE(AMD, 0x145b), (kernel_ulong_t)&dev_data[0] },
|
||||
{ PCI_VDEVICE(AMD, 0x148b), (kernel_ulong_t)&dev_data[1] },
|
||||
{ PCI_VDEVICE(AMD, 0x14c0), (kernel_ulong_t)&dev_data[1] },
|
||||
{ PCI_VDEVICE(AMD, 0x14c3), (kernel_ulong_t)&dev_data[1] },
|
||||
{ PCI_VDEVICE(HYGON, 0x145b), (kernel_ulong_t)&dev_data[0] },
|
||||
{ 0, }
|
||||
};
|
||||
|
@ -297,7 +297,7 @@ static int switchtec_ntb_mw_set_trans(struct ntb_dev *ntb, int pidx, int widx,
|
||||
* (see CMA_CONFIG_ALIGNMENT)
|
||||
*/
|
||||
dev_err(&sndev->stdev->dev,
|
||||
"ERROR: Memory window address is not aligned to it's size!\n");
|
||||
"ERROR: Memory window address is not aligned to its size!\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@ -419,8 +419,10 @@ static void switchtec_ntb_part_link_speed(struct switchtec_ntb *sndev,
|
||||
enum ntb_width *width)
|
||||
{
|
||||
struct switchtec_dev *stdev = sndev->stdev;
|
||||
struct part_cfg_regs __iomem *part_cfg =
|
||||
&stdev->mmio_part_cfg_all[partition];
|
||||
|
||||
u32 pff = ioread32(&stdev->mmio_part_cfg[partition].vep_pff_inst_id);
|
||||
u32 pff = ioread32(&part_cfg->vep_pff_inst_id) & 0xFF;
|
||||
u32 linksta = ioread32(&stdev->mmio_pff_csr[pff].pci_cap_region[13]);
|
||||
|
||||
if (speed)
|
||||
@ -840,7 +842,6 @@ static int switchtec_ntb_init_sndev(struct switchtec_ntb *sndev)
|
||||
u64 tpart_vec;
|
||||
int self;
|
||||
u64 part_map;
|
||||
int bit;
|
||||
|
||||
sndev->ntb.pdev = sndev->stdev->pdev;
|
||||
sndev->ntb.topo = NTB_TOPO_SWITCH;
|
||||
@ -859,31 +860,31 @@ static int switchtec_ntb_init_sndev(struct switchtec_ntb *sndev)
|
||||
tpart_vec |= ioread32(&sndev->mmio_ntb->ntp_info[self].target_part_low);
|
||||
|
||||
part_map = ioread64(&sndev->mmio_ntb->ep_map);
|
||||
tpart_vec &= part_map;
|
||||
part_map &= ~(1 << sndev->self_partition);
|
||||
|
||||
if (!ffs(tpart_vec)) {
|
||||
if (!tpart_vec) {
|
||||
if (sndev->stdev->partition_count != 2) {
|
||||
dev_err(&sndev->stdev->dev,
|
||||
"ntb target partition not defined\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
bit = ffs(part_map);
|
||||
if (!bit) {
|
||||
if (!part_map) {
|
||||
dev_err(&sndev->stdev->dev,
|
||||
"peer partition is not NT partition\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
sndev->peer_partition = bit - 1;
|
||||
sndev->peer_partition = __ffs64(part_map);
|
||||
} else {
|
||||
if (ffs(tpart_vec) != fls(tpart_vec)) {
|
||||
if (__ffs64(tpart_vec) != (fls64(tpart_vec) - 1)) {
|
||||
dev_err(&sndev->stdev->dev,
|
||||
"ntb driver only supports 1 pair of 1-1 ntb mapping\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
sndev->peer_partition = ffs(tpart_vec) - 1;
|
||||
sndev->peer_partition = __ffs64(tpart_vec);
|
||||
if (!(part_map & (1ULL << sndev->peer_partition))) {
|
||||
dev_err(&sndev->stdev->dev,
|
||||
"ntb target partition is not NT partition\n");
|
||||
@ -954,7 +955,7 @@ static int config_req_id_table(struct switchtec_ntb *sndev,
|
||||
u32 error;
|
||||
u32 proxy_id;
|
||||
|
||||
if (ioread32(&mmio_ctrl->req_id_table_size) < count) {
|
||||
if (ioread16(&mmio_ctrl->req_id_table_size) < count) {
|
||||
dev_err(&sndev->stdev->dev,
|
||||
"Not enough requester IDs available.\n");
|
||||
return -EFAULT;
|
||||
@ -966,9 +967,6 @@ static int config_req_id_table(struct switchtec_ntb *sndev,
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
iowrite32(NTB_PART_CTRL_ID_PROT_DIS,
|
||||
&mmio_ctrl->partition_ctrl);
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
iowrite32(req_ids[i] << 16 | NTB_CTRL_REQ_ID_EN,
|
||||
&mmio_ctrl->req_id_table[i]);
|
||||
@ -1090,7 +1088,7 @@ static int crosslink_enum_partition(struct switchtec_ntb *sndev,
|
||||
{
|
||||
struct part_cfg_regs __iomem *part_cfg =
|
||||
&sndev->stdev->mmio_part_cfg_all[sndev->peer_partition];
|
||||
u32 pff = ioread32(&part_cfg->vep_pff_inst_id);
|
||||
u32 pff = ioread32(&part_cfg->vep_pff_inst_id) & 0xFF;
|
||||
struct pff_csr_regs __iomem *mmio_pff =
|
||||
&sndev->stdev->mmio_pff_csr[pff];
|
||||
const u64 bar_space = 0x1000000000LL;
|
||||
|
@ -262,8 +262,9 @@ static int ntbm_msi_setup_callback(struct ntb_dev *ntb, struct msi_desc *entry,
|
||||
* @handler: Function to be called when the IRQ occurs
|
||||
* @thread_fn: Function to be called in a threaded interrupt context. NULL
|
||||
* for clients which handle everything in @handler
|
||||
* @devname: An ascii name for the claiming device, dev_name(dev) if NULL
|
||||
* @name: An ascii name for the claiming device, dev_name(dev) if NULL
|
||||
* @dev_id: A cookie passed back to the handler function
|
||||
* @msi_desc: MSI descriptor data which triggers the interrupt
|
||||
*
|
||||
* This function assigns an interrupt handler to an unused
|
||||
* MSI interrupt and returns the descriptor used to trigger
|
||||
|
@ -337,8 +337,6 @@ enum {
|
||||
NTB_CTRL_REQ_ID_EN = 1 << 0,
|
||||
|
||||
NTB_CTRL_LUT_EN = 1 << 0,
|
||||
|
||||
NTB_PART_CTRL_ID_PROT_DIS = 1 << 0,
|
||||
};
|
||||
|
||||
struct ntb_ctrl_regs {
|
||||
|
Loading…
Reference in New Issue
Block a user