dma/idxd: add reset in the init routine
Checks
Commit Message
Fix for windows, no one reset the dev to a clear status. In Linux,
kernel driver will reset during the prob.
Signed-off-by: Frank Du <frank.du@intel.com>
---
drivers/dma/idxd/idxd_pci.c | 8 ++++++++
1 file changed, 8 insertions(+)
Comments
On Fri, Aug 11, 2023 at 10:10:54AM +0800, Frank Du wrote:
> Fix for windows, no one reset the dev to a clear status. In Linux,
> kernel driver will reset during the prob.
>
> Signed-off-by: Frank Du <frank.du@intel.com>
> ---
> drivers/dma/idxd/idxd_pci.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
Ran some sanity tests on Linux and saw no issues.
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
14/08/2023 17:37, Bruce Richardson:
> On Fri, Aug 11, 2023 at 10:10:54AM +0800, Frank Du wrote:
> > Fix for windows, no one reset the dev to a clear status. In Linux,
> > kernel driver will reset during the prob.
> >
> > Signed-off-by: Frank Du <frank.du@intel.com>
> > ---
> > drivers/dma/idxd/idxd_pci.c | 8 ++++++++
> > 1 file changed, 8 insertions(+)
> >
> Ran some sanity tests on Linux and saw no issues.
>
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Applied, thanks.
@@ -196,6 +196,14 @@ init_pci_device(struct rte_pci_device *dev, struct idxd_dmadev *idxd,
pci->portals = dev->mem_resource[2].addr;
pci->wq_cfg_sz = (pci->regs->wqcap >> 24) & 0x0F;
+ /* reset */
+ idxd->u.pci = pci;
+ err_code = idxd_pci_dev_command(idxd, idxd_reset_device);
+ if (err_code) {
+ IDXD_PMD_ERR("Error reset device: code %#x", err_code);
+ goto err;
+ }
+
/* sanity check device status */
if (pci->regs->gensts & GENSTS_DEV_STATE_MASK) {
/* need function-level-reset (FLR) or is enabled */