[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.



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.