>-----Original Message----- >From: Philipp Stanner <phasta@xxxxxxxxxx> >Sent: Thursday, April 24, 2025 5:19 PM >To: Srujana Challa <schalla@xxxxxxxxxxx>; Vamsi Krishna Attunuru ><vattunuru@xxxxxxxxxxx>; Michael S. Tsirkin <mst@xxxxxxxxxx>; Jason >Wang <jasowang@xxxxxxxxxx>; Xuan Zhuo <xuanzhuo@xxxxxxxxxxxxxxxxx>; >Eugenio Pérez <eperezma@xxxxxxxxxx>; Shijith Thotton ><sthotton@xxxxxxxxxxx>; Dan Carpenter <dan.carpenter@xxxxxxxxxx>; >Philipp Stanner <phasta@xxxxxxxxxx>; Satha Koteswara Rao Kottidi ><skoteshwar@xxxxxxxxxxx> >Cc: virtualization@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx >Subject: [EXTERNAL] [PATCH v3] vdpa/octeon_ep: Control PCI dev enabling >manually > >PCI region request functions such as pci_request_region() currently have the >problem of becoming sometimes managed functions, if >pcim_enable_device() instead of pci_enable_device() was called. The PCI >subsystem wants to remove this deprecated >PCI region request functions such as pci_request_region() currently have the >problem of becoming sometimes managed functions, if >pcim_enable_device() instead of pci_enable_device() was called. The PCI >subsystem wants to remove this deprecated behavior from its interfaces. > >octeopn_ep enables its device with pcim_enable_device() (for AF. PF uses >manual management), but does so only to get automatic disablement. The >driver wants to manage its PCI resources for AF manually, without devres. > >The easiest way not to use automatic resource management at all is by also >handling device enable- and disablement manually. > >Replace pcim_enable_device() with pci_enable_device(). Add the necessary >calls to pci_disable_device(). > >Signed-off-by: Philipp Stanner <phasta@xxxxxxxxxx> Thanks, Philipp, for the patch. Patch looks good, minor nit AF --> VF Acked-by: Vamsi Attunuru <vattunuru@xxxxxxxxxxx> >--- >Changes in v3: > - Only call pci_disable_device() for the PF version. For AF it would > cause a WARN_ON because pcim_enable_device()'s callback will also > try to disable. >--- > drivers/vdpa/octeon_ep/octep_vdpa_main.c | 17 ++++++++++++----- > 1 file changed, 12 insertions(+), 5 deletions(-) > >diff --git a/drivers/vdpa/octeon_ep/octep_vdpa_main.c >b/drivers/vdpa/octeon_ep/octep_vdpa_main.c >index f3d4dda4e04c..9b49efd24391 100644 >--- a/drivers/vdpa/octeon_ep/octep_vdpa_main.c >+++ b/drivers/vdpa/octeon_ep/octep_vdpa_main.c >@@ -454,6 +454,9 @@ static void octep_vdpa_remove_pf(struct pci_dev >*pdev) > octep_iounmap_region(pdev, octpf->base, >OCTEP_HW_MBOX_BAR); > > octep_vdpa_pf_bar_expand(octpf); >+ >+ /* The pf version does not use managed PCI. */ >+ pci_disable_device(pdev); > } > > static void octep_vdpa_vf_bar_shrink(struct pci_dev *pdev) @@ -825,7 >+828,7 @@ static int octep_vdpa_probe_pf(struct pci_dev *pdev) > struct octep_pf *octpf; > int ret; > >- ret = pcim_enable_device(pdev); >+ ret = pci_enable_device(pdev); > if (ret) { > dev_err(dev, "Failed to enable device\n"); > return ret; >@@ -834,15 +837,17 @@ static int octep_vdpa_probe_pf(struct pci_dev >*pdev) > ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(64)); > if (ret) { > dev_err(dev, "No usable DMA configuration\n"); >- return ret; >+ goto disable_pci; > } > octpf = devm_kzalloc(dev, sizeof(*octpf), GFP_KERNEL); >- if (!octpf) >- return -ENOMEM; >+ if (!octpf) { >+ ret = -ENOMEM; >+ goto disable_pci; >+ } > > ret = octep_iomap_region(pdev, octpf->base, >OCTEP_HW_MBOX_BAR); > if (ret) >- return ret; >+ goto disable_pci; > > pci_set_master(pdev); > pci_set_drvdata(pdev, octpf); >@@ -856,6 +861,8 @@ static int octep_vdpa_probe_pf(struct pci_dev *pdev) > > unmap_region: > octep_iounmap_region(pdev, octpf->base, OCTEP_HW_MBOX_BAR); >+disable_pci: >+ pci_disable_device(pdev); > return ret; > } > >-- >2.48.1