* [PATCH] nvme: Use pci_iomap instead of ioremap [not found] <CGME20220121143539eucas1p20202376f83b0b499143c18b1434ff000@eucas1p2.samsung.com> @ 2022-01-21 14:35 ` Pankaj Raghav 2022-01-26 16:33 ` Christoph Hellwig 0 siblings, 1 reply; 9+ messages in thread From: Pankaj Raghav @ 2022-01-21 14:35 UTC (permalink / raw) To: Keith Busch, Christoph Hellwig; +Cc: Pankaj Raghav, linux-nvme, Pankaj Raghav Use the better checked pci_iomap instead of ioremap. Signed-off-by: Pankaj Raghav <p.raghav@samsung.com> --- drivers/nvme/host/pci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c index d8585df2c2fd..6c8aad9ff7db 100644 --- a/drivers/nvme/host/pci.c +++ b/drivers/nvme/host/pci.c @@ -1800,7 +1800,7 @@ static int nvme_remap_bar(struct nvme_dev *dev, unsigned long size) return -ENOMEM; if (dev->bar) iounmap(dev->bar); - dev->bar = ioremap(pci_resource_start(pdev, 0), size); + dev->bar = pci_iomap(pdev, 0, size); if (!dev->bar) { dev->bar_mapped_size = 0; return -ENOMEM; -- 2.25.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH] nvme: Use pci_iomap instead of ioremap 2022-01-21 14:35 ` [PATCH] nvme: Use pci_iomap instead of ioremap Pankaj Raghav @ 2022-01-26 16:33 ` Christoph Hellwig 2022-01-26 17:22 ` Keith Busch 2022-01-27 13:05 ` Pankaj Raghav 0 siblings, 2 replies; 9+ messages in thread From: Christoph Hellwig @ 2022-01-26 16:33 UTC (permalink / raw) To: Pankaj Raghav; +Cc: Keith Busch, Christoph Hellwig, Pankaj Raghav, linux-nvme pci_iomap goes with the ioread/iowrite accessors which we absolutely do not want in nvme. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] nvme: Use pci_iomap instead of ioremap 2022-01-26 16:33 ` Christoph Hellwig @ 2022-01-26 17:22 ` Keith Busch 2022-01-26 17:26 ` Christoph Hellwig 2022-01-27 13:16 ` Pankaj Raghav 2022-01-27 13:05 ` Pankaj Raghav 1 sibling, 2 replies; 9+ messages in thread From: Keith Busch @ 2022-01-26 17:22 UTC (permalink / raw) To: Christoph Hellwig; +Cc: Pankaj Raghav, Pankaj Raghav, linux-nvme On Wed, Jan 26, 2022 at 05:33:06PM +0100, Christoph Hellwig wrote: > pci_iomap goes with the ioread/iowrite accessors which we absolutely > do not want in nvme. It looks like the action pci_iomap() uses is based on the pci_resource_flags(), and should call the same "ioremap()" function we currently use. The one problem I see with this, though, is that pci_iomap() will automatically clamp the mapped length to the resource's length, which may be shorter than the potential doorbell registers that the driver thinks it's getting. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] nvme: Use pci_iomap instead of ioremap 2022-01-26 17:22 ` Keith Busch @ 2022-01-26 17:26 ` Christoph Hellwig 2022-01-27 13:16 ` Pankaj Raghav 1 sibling, 0 replies; 9+ messages in thread From: Christoph Hellwig @ 2022-01-26 17:26 UTC (permalink / raw) To: Keith Busch; +Cc: Christoph Hellwig, Pankaj Raghav, Pankaj Raghav, linux-nvme On Wed, Jan 26, 2022 at 09:22:04AM -0800, Keith Busch wrote: > On Wed, Jan 26, 2022 at 05:33:06PM +0100, Christoph Hellwig wrote: > > pci_iomap goes with the ioread/iowrite accessors which we absolutely > > do not want in nvme. > > It looks like the action pci_iomap() uses is based on the > pci_resource_flags(), and should call the same "ioremap()" function we > currently use. Yes. But the rule is: use ioremap when you use read*/write*, and use pci_iomap when using ioread/iowrite. But they should never be mixed. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] nvme: Use pci_iomap instead of ioremap 2022-01-26 17:22 ` Keith Busch 2022-01-26 17:26 ` Christoph Hellwig @ 2022-01-27 13:16 ` Pankaj Raghav 1 sibling, 0 replies; 9+ messages in thread From: Pankaj Raghav @ 2022-01-27 13:16 UTC (permalink / raw) To: Keith Busch, Christoph Hellwig; +Cc: Pankaj Raghav, linux-nvme On 2022-01-26 22:52, Keith Busch wrote: > On Wed, Jan 26, 2022 at 05:33:06PM +0100, Christoph Hellwig wrote: > The one problem I see with this, though, is that pci_iomap() will > automatically clamp the mapped length to the resource's length, which > may be shorter than the potential doorbell registers that the driver > thinks it's getting. The current implementation disallow the size to be greater than the pci_resource_len(pdev, 0). if (size > pci_resource_len(pdev, 0)) return -ENOMEM; So, clamping shouldn't be an issue when we use pci_iomap. -- Regards, Pankaj ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] nvme: Use pci_iomap instead of ioremap 2022-01-26 16:33 ` Christoph Hellwig 2022-01-26 17:22 ` Keith Busch @ 2022-01-27 13:05 ` Pankaj Raghav 2022-01-27 14:45 ` Christoph Hellwig 1 sibling, 1 reply; 9+ messages in thread From: Pankaj Raghav @ 2022-01-27 13:05 UTC (permalink / raw) To: Christoph Hellwig; +Cc: Pankaj Raghav, Keith Busch, linux-nvme On Wed, Jan 26, 2022 at 05:33:06PM +0100, Christoph Hellwig wrote: > pci_iomap goes with the ioread/iowrite accessors which we absolutely > do not want in nvme. Is it because of ioread/iowrite has a conditional check everytime we do a read/write with IO_COND? Or is there any other reason? -- Pankaj ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] nvme: Use pci_iomap instead of ioremap 2022-01-27 13:05 ` Pankaj Raghav @ 2022-01-27 14:45 ` Christoph Hellwig 2022-01-27 15:56 ` Pankaj Raghav 0 siblings, 1 reply; 9+ messages in thread From: Christoph Hellwig @ 2022-01-27 14:45 UTC (permalink / raw) To: Pankaj Raghav; +Cc: Christoph Hellwig, Pankaj Raghav, Keith Busch, linux-nvme On Thu, Jan 27, 2022 at 06:35:41PM +0530, Pankaj Raghav wrote: > On Wed, Jan 26, 2022 at 05:33:06PM +0100, Christoph Hellwig wrote: > > pci_iomap goes with the ioread/iowrite accessors which we absolutely > > do not want in nvme. > Is it because of ioread/iowrite has a conditional check everytime we do > a read/write with IO_COND? Or is there any other reason? Yes, ioread* and iowrite* are more expensive. And nvme doesn't support port I/O anyway so there is no point. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] nvme: Use pci_iomap instead of ioremap 2022-01-27 14:45 ` Christoph Hellwig @ 2022-01-27 15:56 ` Pankaj Raghav 2022-01-27 16:01 ` Christoph Hellwig 0 siblings, 1 reply; 9+ messages in thread From: Pankaj Raghav @ 2022-01-27 15:56 UTC (permalink / raw) To: Christoph Hellwig, Pankaj Raghav; +Cc: Keith Busch, linux-nvme On 2022-01-27 20:15, Christoph Hellwig wrote: > On Thu, Jan 27, 2022 at 06:35:41PM +0530, Pankaj Raghav wrote: >> On Wed, Jan 26, 2022 at 05:33:06PM +0100, Christoph Hellwig wrote: >>> pci_iomap goes with the ioread/iowrite accessors which we absolutely >>> do not want in nvme. >> Is it because of ioread/iowrite has a conditional check everytime we do >> a read/write with IO_COND? Or is there any other reason? > > Yes, ioread* and iowrite* are more expensive. And nvme doesn't support > port I/O anyway so there is no point. Ok. `ioremap` has a comment to prefer pci_iomap if the area we are trying to map is a PCI BAR. Does it makes sense then to have a comment in the nvme pci driver as to why ioremap is preferred over pci_iomap? -- Regards, Pankaj ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] nvme: Use pci_iomap instead of ioremap 2022-01-27 15:56 ` Pankaj Raghav @ 2022-01-27 16:01 ` Christoph Hellwig 0 siblings, 0 replies; 9+ messages in thread From: Christoph Hellwig @ 2022-01-27 16:01 UTC (permalink / raw) To: Pankaj Raghav; +Cc: Christoph Hellwig, Pankaj Raghav, Keith Busch, linux-nvme On Thu, Jan 27, 2022 at 09:26:28PM +0530, Pankaj Raghav wrote: > `ioremap` has a comment to prefer pci_iomap if the area we are trying > to map is a PCI BAR. Does it makes sense then to have a comment in > the nvme pci driver as to why ioremap is preferred over pci_iomap? I don't think that comment is correct. pci_iomap is not a replacement for ioremap, but an interface that helps drivers that need to transparently deal with MMIO and Port I/O - something that is mostly of historic interest these days. ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2022-01-27 16:01 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <CGME20220121143539eucas1p20202376f83b0b499143c18b1434ff000@eucas1p2.samsung.com>
2022-01-21 14:35 ` [PATCH] nvme: Use pci_iomap instead of ioremap Pankaj Raghav
2022-01-26 16:33 ` Christoph Hellwig
2022-01-26 17:22 ` Keith Busch
2022-01-26 17:26 ` Christoph Hellwig
2022-01-27 13:16 ` Pankaj Raghav
2022-01-27 13:05 ` Pankaj Raghav
2022-01-27 14:45 ` Christoph Hellwig
2022-01-27 15:56 ` Pankaj Raghav
2022-01-27 16:01 ` Christoph Hellwig
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).