[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v12 03/15] vpci: add hooks for PCI device assign/de-assign
- To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
- From: Stewart Hildebrand <stewart.hildebrand@xxxxxxx>
- Date: Tue, 30 Jan 2024 14:22:22 -0500
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0)
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ah8CIUwZJc7goXQMzhYwyrjTJbEHcnfYTGCSG2LcS4w=; b=AyyyRTriTHVIECumLN6PubOI9whhMJ5TA2mQcSJzBP44p1dftcra0HZ+yOx7+PIOTh3bWrm2Um3bAWGFROkCI/mQR/Qt+S5j4rMgxPic3YLJQuQbNPf6D3AXKsR1zJlHGsxDZYgMN8DzU8vWTjXQ/eUpUvYSPvzxzTJRpGVHP5ZbmI9WOi3iND0QI1dyexw246ossvVdlLadZdVuEQBUORk6Dk8RPTJ7k51bAqfo6nbDwtiX4hMlESIwxYscvuIeYoxkRD9xSxa5+8BaL/iK6jjSNJUP5t+D87cTNc6mRp6Qh8P+2GlmGpPA6MauzsmHWf5GCO9EIIE4BmZ7CiHKKA==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RlqDCtbbMtDYnC3SMvH2xIE0jl20RhGbxSLyTnnateyAbi/yGM/aMlcCGePZWVnjgsEWZERAXFm4ZRTL3Bxr5j+or7ALCmYcGZcWSUWWUY3bA0Ed3hzwH6SrbaQeSFTnVzoh/8aVNHsdVMKK2YjIyFp+mrYrfLZyZ6LQAquoj5LXpN0+5mswdyFHfUYFRnXA9YX4/81tIXP6WGzJJbOHSmxjmhY6wU0jdVKcB1WTpUY0+qqJRfuGVEurBT+Mxi9Ke11hX7U/ZMwdoIAJKGw72toOcy20xrRHblbiUfvn/GFnzi+3k4ZFtiVzyZYeDOBarNKhy3ZXorFKaVOGkYXaTQ==
- Cc: Oleksandr Andrushchenko <oleksandr_andrushchenko@xxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Paul Durrant <paul@xxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, Volodymyr Babchuk <volodymyr_babchuk@xxxxxxxx>
- Delivery-date: Tue, 30 Jan 2024 19:22:40 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
On 1/9/24 16:51, Stewart Hildebrand wrote:
> diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c
> index 3a973324bca1..a902de6a8693 100644
> --- a/xen/drivers/passthrough/pci.c
> +++ b/xen/drivers/passthrough/pci.c
> @@ -1476,6 +1485,10 @@ static int assign_device(struct domain *d, u16 seg, u8
> bus, u8 devfn, u32 flag)
> if ( pdev->broken && d != hardware_domain && d != dom_io )
> goto done;
>
> + write_lock(&pdev->domain->pci_lock);
> + vpci_deassign_device(pdev);
> + write_unlock(&pdev->domain->pci_lock);
> +
> rc = pdev_msix_assign(d, pdev);
> if ( rc )
> goto done;
> @@ -1502,6 +1515,10 @@ static int assign_device(struct domain *d, u16 seg, u8
> bus, u8 devfn, u32 flag)
> pci_to_dev(pdev), flag);
> }
>
After rebasing this on the following commit:
cb4ecb3cc17b ("pci: fail device assignment if phantom functions cannot be
assigned")
I'll add this here:
if ( rc )
goto done;
I'll plan on retaining Roger's R-b tag and and Jan's A-b tags for v13.
> + write_lock(&d->pci_lock);
> + rc = vpci_assign_device(pdev);
> + write_unlock(&d->pci_lock);
> +
> done:
> if ( rc )
> printk(XENLOG_G_WARNING "%pd: assign (%pp) failed (%d)\n",
|