From: "Roger Pau Monné" <roger.pau@citrix.com>
To: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
Jan Beulich <jbeulich@suse.com>
Subject: Re: [PATCH v3 5/6] vpci: use reference counter to protect vpci state
Date: Fri, 17 Mar 2023 09:43:24 +0100 [thread overview]
Message-ID: <ZBQoLFz5T0G7p9Dm@Air-de-Roger> (raw)
In-Reply-To: <20230314205612.3703668-6-volodymyr_babchuk@epam.com>
On Tue, Mar 14, 2023 at 08:56:30PM +0000, Volodymyr Babchuk wrote:
> vPCI MMIO handlers are accessing pdevs without protecting this
> access with pcidevs_{lock|unlock}. This is not a problem as of now
> as these are only used by Dom0. But, towards vPCI is used also for
> guests, we need to properly protect pdev and pdev->vpci from being
> removed while still in use.
>
> For that use pdev reference counting.
I wonder whether vPCI does need to take another reference to the
device. This all stems from me not having it fully clear how the
reference counting is supposed to be used for pdevs.
As mentioned in a previous patch, I would expect device assignation to
take a reference, and hence vPCI won't need to take an extra refcount
since vPCI can only be used once the device has been assigned to a
domain, and hence already has at least an extra reference taken from
the fact it's assigned to a domain.
If anything I would add an ASSERT(pdev->refcount > 1) or equivalent.
>
> Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
> Suggested-by: Jan Beulich <jbeulich@suse.com>
>
> ---
>
> v3:
> - Moved from another patch series
> ---
> xen/drivers/vpci/vpci.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c
> index 199ff55672..005f38dc77 100644
> --- a/xen/drivers/vpci/vpci.c
> +++ b/xen/drivers/vpci/vpci.c
> @@ -62,6 +62,7 @@ void vpci_remove_device(struct pci_dev *pdev)
> xfree(pdev->vpci->msi);
> xfree(pdev->vpci);
> pdev->vpci = NULL;
> + pcidev_put(pdev);
> }
>
> int vpci_add_handlers(struct pci_dev *pdev)
> @@ -72,6 +73,8 @@ int vpci_add_handlers(struct pci_dev *pdev)
> if ( !has_vpci(pdev->domain) )
> return 0;
>
> + pcidev_get(pdev);
> +
> /* We should not get here twice for the same device. */
> ASSERT(!pdev->vpci);
You are missing a pcidev_put() in case allocation of pdev->vpci fails.
Thanks, Roger.
next prev parent reply other threads:[~2023-03-17 8:43 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-14 20:56 [PATCH v3 0/6] vpci: first series in preparation for vpci on ARM Volodymyr Babchuk
2023-03-14 20:56 ` [PATCH v3 2/6] xen: pci: introduce reference counting for pdev Volodymyr Babchuk
2023-03-16 16:16 ` Roger Pau Monné
2023-03-29 9:55 ` Jan Beulich
2023-03-29 10:48 ` Roger Pau Monné
2023-03-29 11:58 ` Jan Beulich
2023-04-11 23:41 ` Volodymyr Babchuk
2023-04-12 9:13 ` Roger Pau Monné
2023-04-12 21:54 ` Volodymyr Babchuk
2023-04-13 15:00 ` Roger Pau Monné
2023-04-14 1:30 ` Volodymyr Babchuk
2023-04-17 10:17 ` Roger Pau Monné
2023-04-17 10:34 ` Jan Beulich
2023-04-17 10:51 ` Roger Pau Monné
2023-04-17 11:02 ` Jan Beulich
2023-04-21 11:00 ` Volodymyr Babchuk
2023-04-21 12:24 ` Jan Beulich
2023-04-21 13:02 ` Volodymyr Babchuk
2023-04-21 13:10 ` Roger Pau Monné
2023-04-21 14:13 ` Volodymyr Babchuk
2023-04-24 7:46 ` Jan Beulich
2023-04-24 14:15 ` Volodymyr Babchuk
2023-04-24 14:27 ` Jan Beulich
2023-03-29 10:04 ` Jan Beulich
2023-03-14 20:56 ` [PATCH v3 1/6] xen: add reference counter support Volodymyr Babchuk
2023-03-16 13:54 ` Roger Pau Monné
2023-03-16 14:03 ` Jan Beulich
2023-03-16 16:21 ` Roger Pau Monné
2023-04-11 22:27 ` Volodymyr Babchuk
2023-04-12 10:12 ` Roger Pau Monné
2023-03-16 16:19 ` Roger Pau Monné
2023-03-16 16:32 ` Jan Beulich
2023-03-16 16:39 ` Roger Pau Monné
2023-03-16 16:43 ` Jan Beulich
2023-03-16 16:48 ` Roger Pau Monné
2023-03-16 16:56 ` Jan Beulich
2023-03-17 10:05 ` Roger Pau Monné
2023-03-17 14:46 ` Jan Beulich
2023-03-16 17:01 ` Jan Beulich
2023-04-11 22:38 ` Volodymyr Babchuk
2023-04-17 6:47 ` Jan Beulich
2023-03-14 20:56 ` [PATCH v3 6/6] xen: pci: print reference counter when dumping pci_devs Volodymyr Babchuk
2023-03-17 8:46 ` Roger Pau Monné
2023-03-14 20:56 ` [PATCH v3 3/6] vpci: crash domain if we wasn't able to (un) map vPCI regions Volodymyr Babchuk
2023-03-16 16:32 ` Roger Pau Monné
2023-03-14 20:56 ` [PATCH v3 5/6] vpci: use reference counter to protect vpci state Volodymyr Babchuk
2023-03-17 8:43 ` Roger Pau Monné [this message]
2023-03-29 9:31 ` Jan Beulich
2023-03-14 20:56 ` [PATCH v3 4/6] vpci: restrict unhandled read/write operations for guests Volodymyr Babchuk
2023-03-17 8:37 ` Roger Pau Monné
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=ZBQoLFz5T0G7p9Dm@Air-de-Roger \
--to=roger.pau@citrix.com \
--cc=Volodymyr_Babchuk@epam.com \
--cc=jbeulich@suse.com \
--cc=xen-devel@lists.xenproject.org \
/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.