From: "Michael S. Tsirkin" <mst@redhat.com>
To: Philipp Stanner <pstanner@redhat.com>
Cc: "Stefano Garzarella" <sgarzare@redhat.com>,
"Philipp Stanner" <phasta@kernel.org>,
"Alvaro Karsz" <alvaro.karsz@solid-run.com>,
"Jason Wang" <jasowang@redhat.com>,
"Xuan Zhuo" <xuanzhuo@linux.alibaba.com>,
"Eugenio Pérez" <eperezma@redhat.com>,
virtualization@lists.linux.dev, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4] vdpa: solidrun: Replace deprecated PCI functions
Date: Mon, 20 Jan 2025 06:21:53 -0500 [thread overview]
Message-ID: <20250120062144-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <e28c7cb2437d2dee73447db2db1d80646803e63a.camel@redhat.com>
On Mon, Jan 20, 2025 at 10:13:03AM +0100, Philipp Stanner wrote:
> On Thu, 2024-12-19 at 10:51 +0100, Stefano Garzarella wrote:
> > On Thu, Dec 19, 2024 at 10:44:29AM +0100, Philipp Stanner wrote:
> > > From: Philipp Stanner <pstanner@redhat.com>
> > >
> > > The PCI functions
> > >
> > > pcim_iomap_regions()
> > > pcim_iounmap_regions()
> > > pcim_iomap_table()
> > >
> > > have been deprecated by the PCI subsystem.
> > >
> > > Replace these functions with their successors pcim_iomap_region()
> > > and
> > > pcim_iounmap_region().
> > >
> > > Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> > > ---
> > > Changes in v4:
> > > - snet_open_vf_bar(): use distinct temporary variable to ensure
> > > snet->bar is never an ERR_PTR. (Stefano)
> >
> > Thanks for that!
> >
> > I don't have a device to test, but it LGTM:
> >
> > Acked-by: Stefano Garzarella <sgarzare@redhat.com>
>
> Hi all,
>
> can someone please finally merge this?
>
> Thanks,
> Philipp
>
>
> >
> >
> > >
> > > Changes in v3:
> > > - Move __iomem *io declaration into the loop. (Stefano)
> > >
> > > Changes in v2:
> > > - Fix build warning because of dead variable.
> > > - Make "bars_found" a boolean, since only true or false are
> > > relevant.
> > > ---
> > > drivers/vdpa/solidrun/snet_main.c | 57 +++++++++++++++-------------
> > > ---
> > > 1 file changed, 28 insertions(+), 29 deletions(-)
> > >
> > > diff --git a/drivers/vdpa/solidrun/snet_main.c
> > > b/drivers/vdpa/solidrun/snet_main.c
> > > index c8b74980dbd1..55ec51c17ab3 100644
> > > --- a/drivers/vdpa/solidrun/snet_main.c
> > > +++ b/drivers/vdpa/solidrun/snet_main.c
> > > @@ -556,58 +556,60 @@ static const struct vdpa_config_ops
> > > snet_config_ops = {
> > > static int psnet_open_pf_bar(struct pci_dev *pdev, struct psnet
> > > *psnet)
> > > {
> > > char *name;
> > > - int ret, i, mask = 0;
> > > + unsigned short i;
> > > + bool bars_found = false;
> > > +
> > > + name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "psnet[%s]-
> > > bars", pci_name(pdev));
> > > + if (!name)
> > > + return -ENOMEM;
> > > +
> > > /* We don't know which BAR will be used to communicate..
> > > * We will map every bar with len > 0.
> > > *
> > > * Later, we will discover the BAR and unmap all other
> > > BARs.
> > > */
> > > for (i = 0; i < PCI_STD_NUM_BARS; i++) {
> > > - if (pci_resource_len(pdev, i))
> > > - mask |= (1 << i);
> > > + void __iomem *io;
> > > +
> > > + if (pci_resource_len(pdev, i) == 0)
> > > + continue;
> > > +
> > > + io = pcim_iomap_region(pdev, i, name);
> > > + if (IS_ERR(io)) {
> > > + SNET_ERR(pdev, "Failed to request and map
> > > PCI BARs\n");
> > > + return PTR_ERR(io);
> > > + }
> > > +
> > > + psnet->bars[i] = io;
> > > + bars_found = true;
> > > }
> > >
> > > /* No BAR can be used.. */
> > > - if (!mask) {
> > > + if (!bars_found) {
> > > SNET_ERR(pdev, "Failed to find a PCI BAR\n");
> > > return -ENODEV;
> > > }
> > >
> > > - name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "psnet[%s]-
> > > bars", pci_name(pdev));
> > > - if (!name)
> > > - return -ENOMEM;
> > > -
> > > - ret = pcim_iomap_regions(pdev, mask, name);
> > > - if (ret) {
> > > - SNET_ERR(pdev, "Failed to request and map PCI
> > > BARs\n");
> > > - return ret;
> > > - }
> > > -
> > > - for (i = 0; i < PCI_STD_NUM_BARS; i++) {
> > > - if (mask & (1 << i))
> > > - psnet->bars[i] =
> > > pcim_iomap_table(pdev)[i];
> > > - }
> > > -
> > > return 0;
> > > }
> > >
> > > static int snet_open_vf_bar(struct pci_dev *pdev, struct snet
> > > *snet)
> > > {
> > > char *name;
> > > - int ret;
> > > + void __iomem *io;
> > >
> > > name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "snet[%s]-
> > > bars", pci_name(pdev));
> > > if (!name)
> > > return -ENOMEM;
> > >
> > > /* Request and map BAR */
> > > - ret = pcim_iomap_regions(pdev, BIT(snet->psnet-
> > > >cfg.vf_bar), name);
> > > - if (ret) {
> > > + io = pcim_iomap_region(pdev, snet->psnet->cfg.vf_bar,
> > > name);
> > > + if (IS_ERR(io)) {
> > > SNET_ERR(pdev, "Failed to request and map PCI BAR
> > > for a VF\n");
> > > - return ret;
> > > + return PTR_ERR(io);
> > > }
> > >
> > > - snet->bar = pcim_iomap_table(pdev)[snet->psnet-
> > > >cfg.vf_bar];
> > > + snet->bar = io;
> > >
> > > return 0;
> > > }
> > > @@ -656,15 +658,12 @@ static int psnet_detect_bar(struct psnet
> > > *psnet, u32 off)
> > >
> > > static void psnet_unmap_unused_bars(struct pci_dev *pdev, struct
> > > psnet *psnet)
> > > {
> > > - int i, mask = 0;
> > > + unsigned short i;
> > >
> > > for (i = 0; i < PCI_STD_NUM_BARS; i++) {
> > > if (psnet->bars[i] && i != psnet->barno)
> > > - mask |= (1 << i);
> > > + pcim_iounmap_region(pdev, i);
> > > }
> > > -
> > > - if (mask)
> > > - pcim_iounmap_regions(pdev, mask);
> > > }
> > >
> > > /* Read SNET config from PCI BAR */
> > > --
> > > 2.47.1
> > >
> > >
> >
it's in my tree and linux-next
prev parent reply other threads:[~2025-01-20 11:22 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-19 9:44 [PATCH v4] vdpa: solidrun: Replace deprecated PCI functions Philipp Stanner
2024-12-19 9:51 ` Stefano Garzarella
2025-01-20 9:13 ` Philipp Stanner
2025-01-20 11:21 ` Michael S. Tsirkin [this message]
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=20250120062144-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=alvaro.karsz@solid-run.com \
--cc=eperezma@redhat.com \
--cc=jasowang@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=phasta@kernel.org \
--cc=pstanner@redhat.com \
--cc=sgarzare@redhat.com \
--cc=virtualization@lists.linux.dev \
--cc=xuanzhuo@linux.alibaba.com \
/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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.