|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v10 03/17] vpci: use per-domain PCI lock to protect vpci structure
On 10/12/23 18:09, Volodymyr Babchuk wrote:
> 6. We are removing multiple ASSERT(pcidevs_locked()) instances because
> they are too strict now: they should be corrected to
> ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock)), but problem is
> that mentioned instances does not have access to the domain
> pointer and it is not feasible to pass a domain pointer to a function
> just for debugging purposes.
...
> diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c
> index 20275260b3..466725d8ca 100644
> --- a/xen/arch/x86/msi.c
> +++ b/xen/arch/x86/msi.c
> @@ -988,8 +988,6 @@ static int __pci_enable_msi(struct msi_info *msi, struct
> msi_desc **desc,
> {
> struct msi_desc *old_desc;
>
> - ASSERT(pcidevs_locked());
> -
> if ( !pdev )
> return -ENODEV;
I know it is mentioned in the commit message, so the ASSERT removal above may
be okay. However, just to mention it: as we are passing pdev to this function
now, we can access the domain pointer here. So the ASSERT can be turned into
(after the !pdev check):
ASSERT(pcidevs_locked() || rw_is_locked(&pdev->domain->pci_lock));
In which case pdev->domain != NULL might also want to be checked.
>
> @@ -1043,8 +1041,6 @@ static int __pci_enable_msix(struct msi_info *msi,
> struct msi_desc **desc,
> {
> struct msi_desc *old_desc;
>
> - ASSERT(pcidevs_locked());
> -
> if ( !pdev || !pdev->msix )
> return -ENODEV;
Same here.
>
> @@ -1154,8 +1150,6 @@ int pci_prepare_msix(u16 seg, u8 bus, u8 devfn, bool
> off)
> int pci_enable_msi(struct msi_info *msi, struct msi_desc **desc,
> struct pci_dev *pdev)
> {
> - ASSERT(pcidevs_locked());
> -
> if ( !use_msi )
> return -EPERM;
>
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |