* [PATCH] nvmet: pci-epf: Move DMA initialization to EPC init callback
@ 2025-09-09 11:21 Niklas Cassel
2025-09-10 1:07 ` Damien Le Moal
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Niklas Cassel @ 2025-09-09 11:21 UTC (permalink / raw)
To: Christoph Hellwig, Sagi Grimberg, Chaitanya Kulkarni, Keith Busch,
Damien Le Moal, Manivannan Sadhasivam, Krzysztof Wilczyński
Cc: Shin'ichiro Kawasaki, stable, Niklas Cassel, linux-nvme
From: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
For DMA initialization to work across all EPC drivers, the DMA
initialization has to be done in the .init() callback.
This is because not all EPC drivers will have a refclock (which is often
needed to access registers of a DMA controller embedded in a PCIe
controller) at the time the .bind() callback is called.
However, all EPC drivers are guaranteed to have a refclock by the time
the .init() callback is called.
Thus, move the DMA initialization to the .init() callback.
This change was already done for other EPF drivers in
commit 60bd3e039aa2 ("PCI: endpoint: pci-epf-{mhi/test}: Move DMA
initialization to EPC init callback").
Cc: stable@vger.kernel.org
Fixes: 0faa0fe6f90e ("nvmet: New NVMe PCI endpoint function target driver")
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Signed-off-by: Niklas Cassel <cassel@kernel.org>
---
drivers/nvme/target/pci-epf.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/nvme/target/pci-epf.c b/drivers/nvme/target/pci-epf.c
index 2e78397a7373a..9c5b0f78ce8df 100644
--- a/drivers/nvme/target/pci-epf.c
+++ b/drivers/nvme/target/pci-epf.c
@@ -2325,6 +2325,8 @@ static int nvmet_pci_epf_epc_init(struct pci_epf *epf)
return ret;
}
+ nvmet_pci_epf_init_dma(nvme_epf);
+
/* Set device ID, class, etc. */
epf->header->vendorid = ctrl->tctrl->subsys->vendor_id;
epf->header->subsys_vendor_id = ctrl->tctrl->subsys->subsys_vendor_id;
@@ -2422,8 +2424,6 @@ static int nvmet_pci_epf_bind(struct pci_epf *epf)
if (ret)
return ret;
- nvmet_pci_epf_init_dma(nvme_epf);
-
return 0;
}
--
2.51.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] nvmet: pci-epf: Move DMA initialization to EPC init callback
2025-09-09 11:21 [PATCH] nvmet: pci-epf: Move DMA initialization to EPC init callback Niklas Cassel
@ 2025-09-10 1:07 ` Damien Le Moal
2025-10-09 12:46 ` Niklas Cassel
2025-10-09 15:05 ` Keith Busch
2 siblings, 0 replies; 4+ messages in thread
From: Damien Le Moal @ 2025-09-10 1:07 UTC (permalink / raw)
To: Niklas Cassel, Christoph Hellwig, Sagi Grimberg,
Chaitanya Kulkarni, Keith Busch, Manivannan Sadhasivam,
Krzysztof Wilczyński
Cc: Shin'ichiro Kawasaki, stable, linux-nvme
On 9/9/25 8:21 PM, Niklas Cassel wrote:
> From: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
>
> For DMA initialization to work across all EPC drivers, the DMA
> initialization has to be done in the .init() callback.
>
> This is because not all EPC drivers will have a refclock (which is often
> needed to access registers of a DMA controller embedded in a PCIe
> controller) at the time the .bind() callback is called.
>
> However, all EPC drivers are guaranteed to have a refclock by the time
> the .init() callback is called.
>
> Thus, move the DMA initialization to the .init() callback.
>
> This change was already done for other EPF drivers in
> commit 60bd3e039aa2 ("PCI: endpoint: pci-epf-{mhi/test}: Move DMA
> initialization to EPC init callback").
>
> Cc: stable@vger.kernel.org
> Fixes: 0faa0fe6f90e ("nvmet: New NVMe PCI endpoint function target driver")
> Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
> Signed-off-by: Niklas Cassel <cassel@kernel.org>
Looks good.
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
--
Damien Le Moal
Western Digital Research
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] nvmet: pci-epf: Move DMA initialization to EPC init callback
2025-09-09 11:21 [PATCH] nvmet: pci-epf: Move DMA initialization to EPC init callback Niklas Cassel
2025-09-10 1:07 ` Damien Le Moal
@ 2025-10-09 12:46 ` Niklas Cassel
2025-10-09 15:05 ` Keith Busch
2 siblings, 0 replies; 4+ messages in thread
From: Niklas Cassel @ 2025-10-09 12:46 UTC (permalink / raw)
To: Christoph Hellwig, Sagi Grimberg, Chaitanya Kulkarni, Keith Busch,
Damien Le Moal, Manivannan Sadhasivam, Krzysztof Wilczyński
Cc: Shin'ichiro Kawasaki, stable, linux-nvme
On Tue, Sep 09, 2025 at 01:21:22PM +0200, Niklas Cassel wrote:
> From: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
>
> For DMA initialization to work across all EPC drivers, the DMA
> initialization has to be done in the .init() callback.
>
> This is because not all EPC drivers will have a refclock (which is often
> needed to access registers of a DMA controller embedded in a PCIe
> controller) at the time the .bind() callback is called.
>
> However, all EPC drivers are guaranteed to have a refclock by the time
> the .init() callback is called.
>
> Thus, move the DMA initialization to the .init() callback.
>
> This change was already done for other EPF drivers in
> commit 60bd3e039aa2 ("PCI: endpoint: pci-epf-{mhi/test}: Move DMA
> initialization to EPC init callback").
>
> Cc: stable@vger.kernel.org
> Fixes: 0faa0fe6f90e ("nvmet: New NVMe PCI endpoint function target driver")
> Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
> Signed-off-by: Niklas Cassel <cassel@kernel.org>
> ---
> drivers/nvme/target/pci-epf.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/nvme/target/pci-epf.c b/drivers/nvme/target/pci-epf.c
> index 2e78397a7373a..9c5b0f78ce8df 100644
> --- a/drivers/nvme/target/pci-epf.c
> +++ b/drivers/nvme/target/pci-epf.c
> @@ -2325,6 +2325,8 @@ static int nvmet_pci_epf_epc_init(struct pci_epf *epf)
> return ret;
> }
>
> + nvmet_pci_epf_init_dma(nvme_epf);
> +
> /* Set device ID, class, etc. */
> epf->header->vendorid = ctrl->tctrl->subsys->vendor_id;
> epf->header->subsys_vendor_id = ctrl->tctrl->subsys->subsys_vendor_id;
> @@ -2422,8 +2424,6 @@ static int nvmet_pci_epf_bind(struct pci_epf *epf)
> if (ret)
> return ret;
>
> - nvmet_pci_epf_init_dma(nvme_epf);
> -
> return 0;
> }
>
> --
> 2.51.0
>
>
Gentle ping
Kind regards,
Niklas
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] nvmet: pci-epf: Move DMA initialization to EPC init callback
2025-09-09 11:21 [PATCH] nvmet: pci-epf: Move DMA initialization to EPC init callback Niklas Cassel
2025-09-10 1:07 ` Damien Le Moal
2025-10-09 12:46 ` Niklas Cassel
@ 2025-10-09 15:05 ` Keith Busch
2 siblings, 0 replies; 4+ messages in thread
From: Keith Busch @ 2025-10-09 15:05 UTC (permalink / raw)
To: Niklas Cassel
Cc: Christoph Hellwig, Sagi Grimberg, Chaitanya Kulkarni,
Damien Le Moal, Manivannan Sadhasivam, Krzysztof Wilczy´nski,
Shin'ichiro Kawasaki, stable, linux-nvme
On Tue, Sep 09, 2025 at 01:21:22PM +0200, Niklas Cassel wrote:
> From: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
>
> For DMA initialization to work across all EPC drivers, the DMA
> initialization has to be done in the .init() callback.
>
> This is because not all EPC drivers will have a refclock (which is often
> needed to access registers of a DMA controller embedded in a PCIe
> controller) at the time the .bind() callback is called.
>
> However, all EPC drivers are guaranteed to have a refclock by the time
> the .init() callback is called.
>
> Thus, move the DMA initialization to the .init() callback.
>
> This change was already done for other EPF drivers in
> commit 60bd3e039aa2 ("PCI: endpoint: pci-epf-{mhi/test}: Move DMA
> initialization to EPC init callback").
Thanks, applied to nvme-6.19.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-10-09 15:05 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-09 11:21 [PATCH] nvmet: pci-epf: Move DMA initialization to EPC init callback Niklas Cassel
2025-09-10 1:07 ` Damien Le Moal
2025-10-09 12:46 ` Niklas Cassel
2025-10-09 15:05 ` Keith Busch
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox