[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] PCI: don't allow "pci-phantom=" to mark real devices as phantom functions
- To: Jan Beulich <jbeulich@xxxxxxxx>
- From: Roger Pau Monné <roger.pau@xxxxxxxxxx>
- Date: Thu, 5 May 2022 17:36:02 +0200
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
- 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=sXa0/MB+g4pt58q5OHvQmFFGrsxQEvV+ZbgK9Q/Cl7k=; b=UwWkvIF/8P+qYMaEIL4oq//OysB51TOKUV5kDsm2dL2RlZsAPmjJgwnx0A2em+h9JtnJGUyUpPvM9woX+SvAV7ixrMsbNmj3T6NsMnKl0mLVj9yb7zDqJkITPbQEj0S1vB4Gf7AjuPf+dTjPjOwaOHSolHItUDq7tHW9qiT+4aG0VLQIc+s23Z7LUOPBmwYsY+FfnfHbK2NDvkkEcIsos4L+L4e5iiLD2h4ITqXsIML7iqk56IpMtHJiZfeFAhN+Bb/z5KCgOz0/lB+YY/wYGmEZWyp+Qw7bAxpQFtffbicK5i4vbF9YBcY4PPIN1uUjESfal/8BcbpJlwJ2nn8Now==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LovIObcxhGQwiPyOcOg/vQczF1LeucDu7g+k02KSIjUqxUyCBWidZhsiNKh4o/xt4ocC8Ra76dXygcIh/neX9nzq8xnmxJJmH2L88enJ+d73bg8/zfPD3ZQFyLmyLmfUyrOTt6ycLfaeD+imo1xYlwn9uRf98DEZtxpwhotOwSLPnuUDX3XBuEF4togEQpsrjyh5qaB1c9AIVIttSClw0wpK8eCH4hlE9Sqhyo56+LKZd1Mv76rBgTJhlQbm/3x0kEpFnsgzIZuacPKiWbC+DiRo+R5KVTyevSXeWj5uJZJxZaCxFHLZqUQeHq5oWgb0QU0mkstN+q0UPo5fK1K5Qg==
- Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com;
- Cc: "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Paul Durrant <paul@xxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
- Delivery-date: Thu, 05 May 2022 15:36:20 +0000
- Ironport-data: A9a23:loTgLKBiSNei/xVW/1/iw5YqxClBgxIJ4kV8jS/XYbTApD8mgjMOy TNLWz+Gb/6DNjP2e4oibN+3oUlUsZXSx9JhQQY4rX1jcSlH+JHPbTi7wuYcHM8wwunrFh8PA xA2M4GYRCwMZiaA4E/raNANlFEkvU2ybuOU5NXsZ2YgHGeIdA970Ug5w7Nh39Yy6TSEK1jlV e3a8pW31GCNg1aYAkpMg05UgEoy1BhakGpwUm0WPZinjneH/5UmJMt3yZWKB2n5WuFp8tuSH I4v+l0bElTxpH/BAvv9+lryn9ZjrrT6ZWBigVIOM0Sub4QrSoXfHc/XOdJFAXq7hQllkPhb4 o5Nj8KqZDwMM/yWp+EYXEZRSztxaPguFL/veRBTsOS15mifKj7A5qsrC0s7e4oF5uxwHGdCs +QCLywAZQyCgOTwx6+nTu5rhYIoK8yD0IE34yk8i22GS6t5B8mcHc0m5vcBtNs0rtpJEvvEI dIQdBJkbQjaYg0JMVASYH47tLjw3iSgK20JwL6TjfNovzOJ0zFb67azAYvOVsGyHM5cnW/N8 woq+Ey8WHn2Lue3yzCI73atje/nhj7gVcQZE7jQ3u5nhhify3IeDDUSVECnur+ph0imQdVdJ kcIvC00osAa7EW2SvHtUhv+p2SL1iPwQPJVGuw+rQ2IlKzd5l/AAnBeF2EfLts7qMUxWDomk EeTmM/kDiBut7vTTm+B8rCTrnW5Pi19wXI+WBLohDAtu7HLyLzfRDqWJjq/OMZZVuHIJAw=
- Ironport-hdrordr: A9a23:g+qPL6BkKjwG763lHeglsceALOsnbusQ8zAXPh9KJCC9I/bzqy nxpp8mPH/P5wr5lktQ/OxoHJPwOU80kqQFmrX5XI3SJTUO3VHFEGgM1+vfKlHbak7DH6tmpN 1dmstFeaLN5DpB/KHHCWCDer5PoeVvsprY49s2p00dMT2CAJsQizuRZDzrcHGfE2J9dOcE/d enl4J6jgvlXU5SQtWwB3EDUeSGj9rXlKj+aRpDIxI88gGBgR6h9ba/SnGjr10jegIK5Y1n3X nOkgT/6Knmm/anyiXE32uWy5hNgtPuxvZKGcTJoMkILTfHjBquee1aKva/lQFwhNvqxEchkd HKrRtlF8Nv60nJdmXwmhfp0xmI6kdY15dPoWXo8kfLkIjcfnYXGsBBjYVWfl/y8Ew7puxx16 pNwiawq4dXJQmoplWy2/H4EzVR0makq3srluAey1ZFV5EFVbNXpYsDuGtIDZY7Gj7g4oxPKp ggMCjl3ocXTbqmVQGbgoE2q+bcHEjbXy32DnTqg/blkgS/xxtCvg4lLM92pAZ1yHtycegB2w 3+CNUYqFh/dL5pUUtDPpZwfSKWMB26ffueChPaHbzYfJt3SU7lmtrQ3Igfwt2MVdgh8KYS8a 6xJW+w81RCNn7TNQ==
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
On Thu, May 05, 2022 at 05:14:14PM +0200, Jan Beulich wrote:
> On 05.05.2022 17:00, Roger Pau Monné wrote:
> > On Fri, Apr 29, 2022 at 03:05:32PM +0200, Jan Beulich wrote:
> >> [CAUTION - EXTERNAL EMAIL] DO NOT reply, click links, or open attachments
> >> unless you have verified the sender and know the content is safe.
> >>
> >> IOMMU code mapping / unmapping devices and interrupts will misbehave if
> >> a wrong command line option declared a function "phantom" when there's a
> >> real device at that position. Warn about this and adjust the specified
> >> stride (in the worst case ignoring the option altogether).
> >>
> >> Requested-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> >> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
> >
> > Reviewed-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
>
> Thanks.
>
> > FWIW, I would be fine with just discarding the stride option if one of
> > the phantom devices happen to report vendor/device IDs on the config
> > space.
>
> Well, I thought I'd try a best-effort adjustment rather than simply
> ignoring an option.
>
> >> --- a/xen/drivers/passthrough/pci.c
> >> +++ b/xen/drivers/passthrough/pci.c
> >> @@ -451,7 +451,24 @@ static struct pci_dev *alloc_pdev(struct
> >> phantom_devs[i].slot == PCI_SLOT(devfn) &&
> >> phantom_devs[i].stride > PCI_FUNC(devfn) )
> >> {
> >> - pdev->phantom_stride = phantom_devs[i].stride;
> >> + pci_sbdf_t sbdf = pdev->sbdf;
> >> + unsigned int stride = phantom_devs[i].stride;
> >> +
> >> + while ( (sbdf.fn += stride) > PCI_FUNC(devfn) )
> >> + {
> >> + if ( pci_conf_read16(sbdf, PCI_VENDOR_ID) ==
> >> 0xffff &&
> >> + pci_conf_read16(sbdf, PCI_DEVICE_ID) ==
> >> 0xffff )
> >> + continue;
> >> + stride <<= 1;
> >> + printk(XENLOG_WARNING
> >> + "%pp looks to be a real device;
> >> bumping %04x:%02x:%02x stride to %u\n",
> >> + &sbdf, phantom_devs[i].seg,
> >> + phantom_devs[i].bus,
> >> phantom_devs[i].slot,
> >
> > Can't you use pdev->sbdf here?
>
> No - sbdf was altered from pdev->sbdf (and is also shorter to use),
> and for the 2nd item I'm intentionally omitting the function part
> (to match the command line option).
Sorry, should have been clearer. My question was to use pdev->sbdf for
the second instance. I see now that you don't print the function, so
that's fine.
Thanks, Roger.
|