From: Kelvin Cao <kelvin.cao@microchip.com> To: Kurt Schwemmer <kurt.schwemmer@microsemi.com>, Logan Gunthorpe <logang@deltatee.com>, Jon Mason <jdmason@kudzu.us>, Dave Jiang <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>, linux-pci@vger.kernel.org, linux-ntb@googlegroups.com, linux-kernel@vger.kernel.org Cc: Kelvin Cao <kelvin.cao@microchip.com>, kelvincao@outlook.com, Jeremy Pallotta <jmpallotta@gmail.com> Subject: [PATCH 2/6] ntb_hw_switchtec: Fix bug with more than 32 partitions Date: Thu, 23 Dec 2021 17:23:30 -0800 [thread overview] Message-ID: <20211224012334.89173-3-kelvin.cao@microchip.com> (raw) In-Reply-To: <20211224012334.89173-1-kelvin.cao@microchip.com> From: Wesley Sheng <wesley.sheng@microchip.com> Switchtec could support as mush as 48 partitions, but ffs & fls are for 32 bit argument, in case of partition index larger than 31, the current code could not parse the peer partition index correctly. Change to the 64 bit version __ffs64 & fls64 accordingly to fix this bug. Fixes: 3df54c870f52 ("ntb_hw_switchtec: Allow using Switchtec NTB in multi-partition setups") Signed-off-by: Wesley Sheng <wesley.sheng@microchip.com> Signed-off-by: Kelvin Cao <kelvin.cao@microchip.com> --- drivers/ntb/hw/mscc/ntb_hw_switchtec.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/drivers/ntb/hw/mscc/ntb_hw_switchtec.c b/drivers/ntb/hw/mscc/ntb_hw_switchtec.c index 6603c77c0a84..ec9cb6c81eda 100644 --- a/drivers/ntb/hw/mscc/ntb_hw_switchtec.c +++ b/drivers/ntb/hw/mscc/ntb_hw_switchtec.c @@ -840,7 +840,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; @@ -861,29 +860,28 @@ static int switchtec_ntb_init_sndev(struct switchtec_ntb *sndev) part_map = ioread64(&sndev->mmio_ntb->ep_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"); -- 2.25.1
next prev parent reply other threads:[~2021-12-24 1:25 UTC|newest] Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-12-24 1:23 [PATCH 0/6] Switchtec NTB Fixes and Improvements Kelvin Cao 2021-12-24 1:23 ` [PATCH 1/6] ntb_hw_switchtec: Fix pff ioread to read into mmio_part_cfg_all Kelvin Cao 2021-12-24 1:23 ` Kelvin Cao [this message] 2021-12-24 1:23 ` [PATCH 3/6] ntb_hw_switchtec: AND with the part_map for a valid tpart_vec Kelvin Cao 2021-12-24 1:23 ` [PATCH 4/6] ntb_hw_switchtec: Update the way of getting VEP instance ID Kelvin Cao 2021-12-24 1:23 ` [PATCH 5/6] ntb_hw_switchtec: Remove code for disabling ID protection Kelvin Cao 2021-12-24 1:23 ` [PATCH 6/6] ntb_hw_switchtec: Fix a minor issue in config_req_id_table() Kelvin Cao 2022-01-04 16:55 ` [PATCH 0/6] Switchtec NTB Fixes and Improvements Logan Gunthorpe 2022-01-04 21:28 ` Kelvin.Cao
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20211224012334.89173-3-kelvin.cao@microchip.com \ --to=kelvin.cao@microchip.com \ --cc=allenbh@gmail.com \ --cc=dave.jiang@intel.com \ --cc=jdmason@kudzu.us \ --cc=jmpallotta@gmail.com \ --cc=kelvincao@outlook.com \ --cc=kurt.schwemmer@microsemi.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-ntb@googlegroups.com \ --cc=linux-pci@vger.kernel.org \ --cc=logang@deltatee.com \ --subject='Re: [PATCH 2/6] ntb_hw_switchtec: Fix bug with more than 32 partitions' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).