[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] xen/pt: Avoid initializing BARs from the host ones


  • To: Roger Pau Monne <roger.pau@xxxxxxxxxx>
  • From: Ross Lagerwall <ross.lagerwall@xxxxxxxxxx>
  • Date: Fri, 13 May 2022 10:00:00 +0000
  • Accept-language: en-US
  • 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=fkCjiZO24llJScKgxNzCxomb9h7PP/a3xAvTwnw48Mg=; b=Sn2ymt0xOQXPCwSFFzUEz3oydEnAqCenSx0s/7bD1Y4r0vyDTejZMd88hhOt1CTc2fWfIJkN0XYguaub+OuXX+rA3g42XZ5g+c9ITD/SeeoVqJywMIzPTv6/LTJUKTAIYaxtak9msQ89tT67jstWmLRJLD90RzM7v4VTbuGd0FJeHjNcHrGy0dpREq3FTEC+2xxK5IoXC34u/Zn4fZOe8Nx5iuaTsan4sQHTlEE+8/ifCw1I7uTsEx1NHUrvI5+lBwdkSTRkS+aGRxRZVTPUjf0zetrURsf6Kk8YhcqLa5GBszYm/pgmpuvQ+115eXtTJPSFg22K29EpOY+Vn0XKVg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OUa30CsaKa5vz2UbeyxPjnO7xVugvRNJijn2WEZKej5y/mkuATXQh5nRvOe+dyKZs0FWWtveGO4j6zAtcuFe9VysJaQh71JzSn4AuSnYzqcHK8/L5FuLpOELhM5r/XqIAp14M0R20/yEvKSMVVgvCjbOvb95HxxaovxbjozMieKQmnE0CqK1sEUkE6Kt8rHKZYg7+nLrPBCJOytlQRqc6Qo+YWQsDJILY9SD8Yr7vF0ko4xjN395aFTovwqjWNITGcEkvmXBGIGkKmwlH69x74xF0qUZvfoLt2iiUlZnMcS0dEK1JvEHwN7MO92ADi0EFUou4ZBxxPdEesHrQmXzKQ==
  • 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>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Anthony Perard <anthony.perard@xxxxxxxxxx>, Paul Durrant <paul@xxxxxxx>, "qemu-devel@xxxxxxxxxx" <qemu-devel@xxxxxxxxxx>
  • Delivery-date: Fri, 13 May 2022 10:00:22 +0000
  • Ironport-data: A9a23:RDp8dqCWS9Cy0RVW/zjiw5YqxClBgxIJ4kV8jS/XYbTApGwr0TYBm DcfCG7VPvrYYGene4h+YN/j8x4GuMCBmoQyQQY4rX1jcSlH+JHPbTi7wuYcHM8wwunrFh8PA xA2M4GYRCwMZiaA4E/raNANlFEkvU2ybuOU5NXsZ2YgHGeIdA970Ug5w7Ng2dYx6TSEK1jlV e3a8pW31GCNg1aYAkpMg05UgEoy1BhakGpwUm0WPZinjneH/5UmJMt3yZWKB2n5WuFp8tuSH I4v+l0bElTxpH/BAvv9+lryn9ZjrrT6ZWBigVIOM0Sub4QrSoXfHc/XOdJFAXq7hQllkPhey 44cnq6UYj02FZTUiL1NAzYBSwFHaPguFL/veRBTsOS15mifKz7A5qsrC0s7e4oF5uxwHGdCs +QCLywAZQyCgOTwx6+nTu5rhYIoK8yD0IE34yk8i22GS6t2B8mbHs0m5vcBtNs0rtpJBu2YY 8MWZCBwZRDESxZOJk0WGNQ1m+LAanzXLGYH8wPI/PJfD2779hxbz4fxa4vvZoaWHZUOk2SUj Tme4DGsav0dHJnFodafyVq8i+mKkS7lVYY6ELyj6uUskFCV3nYUChAdSR28u/bRolWlR9tVJ kgQ+ywvhas/7kqmSp/6RRLQiGaNoxo0S9dWVeog52ml06fR/kOVC3YJShZHb9opstJwQiYlv mJlhPvsDD1r9bGQF3SU8+7MqSvoYHBIa2gfeSUDUA0JpcH5p50+hQ7OSdAlF7OpitryGnf7x DXiQDUCuoj/RPUjj82TlW0rSRr1znQVZmbZPjnqY18=
  • Ironport-hdrordr: A9a23:s5vfvaGOC1xGZk4IpLqFSpHXdLJyesId70hD6qkvc3Fom52j/f xGws5x6fatskdrZJkh8erwW5VoMkmsj6KdhrNhcYtKPTOW9VdASbsP0WKM+UyGJ8STzI9gPO JbAtBD4b7LfBdHZKTBkW+F+r8bqbHpnpxAx92utkuFJjsaCZ2Imj0JbjpzZXcGITWua6BYKL Osou584xawc3Ueacq2QlMfWfLYmtHNnJX6JTYbGh8O8mC1/HKVwY+/NyLd8gYVUjtJz7tn23 PCiRbF6qKqtOz+4gPA1lXU849dlLLau5t+7Y23+4sowwfX+0OVjbdaKvm/VfcO0aaSAWMR4Z vxStEbToJOAj3qDziISFDWqnTdOX4VmgPfIBmj8DXeSIXCNUwH48Ytv/MnTjLJr0Unp91yy6 RNwiaQsIdWFwrJmGDn68HPTAwCrDv9nZMOq59ks5Vka/pWVFaRl/1swGpFVJMbWC7q4oEuF+ djSMna+fZNaFufK3TUpHNmztCgVmk6Wk7ueDlJhuWFlzxN2HxpxUoRw8IS2n8G6ZImUpFBo+ DJKL5hmr1CRtIfKah9GOACS82qDXGle2OGDEuCZVD8UK0XMXPErJD6pL0z+eGxYZQNiIA/nZ zQOWkowlLau3ieffFm8Kc7giwlGl/NLAgF4vsulKRRq/n7WKfhNzGFRRQnj9agys9vd/HmZw ==
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Msip_labels:
  • Thread-index: AQHYWlVI6k4vzeGas0CbAgtnJ0rrZq0WWb2AgAAQ5LWAAA8wAIAGL25V
  • Thread-topic: [PATCH] xen/pt: Avoid initializing BARs from the host ones

> From: Roger Pau Monne <roger.pau@xxxxxxxxxx>
> Sent: Monday, May 9, 2022 12:23 PM
> To: Ross Lagerwall <ross.lagerwall@xxxxxxxxxx>
> Cc: xen-devel@xxxxxxxxxxxxxxxxxxxx <xen-devel@xxxxxxxxxxxxxxxxxxxx>; Stefano 
> Stabellini <sstabellini@xxxxxxxxxx>; Anthony Perard 
> <anthony.perard@xxxxxxxxxx>; Paul Durrant <paul@xxxxxxx>; 
> qemu-devel@xxxxxxxxxx <qemu-devel@xxxxxxxxxx>
> Subject: Re: [PATCH] xen/pt: Avoid initializing BARs from the host ones 
>  
> On Mon, May 09, 2022 at 10:39:32AM +0000, Ross Lagerwall wrote:
> > > From: Roger Pau Monne <roger.pau@xxxxxxxxxx>
> > > Sent: Monday, May 9, 2022 10:28 AM
> > > To: Ross Lagerwall <ross.lagerwall@xxxxxxxxxx>
> > > Cc: xen-devel@xxxxxxxxxxxxxxxxxxxx <xen-devel@xxxxxxxxxxxxxxxxxxxx>; 
> > > Stefano Stabellini <sstabellini@xxxxxxxxxx>; Anthony Perard 
> > > <anthony.perard@xxxxxxxxxx>; Paul Durrant <paul@xxxxxxx>; 
> > > qemu-devel@xxxxxxxxxx <qemu-devel@xxxxxxxxxx>
> > > Subject: Re: [PATCH] xen/pt: Avoid initializing BARs from the host ones 
> > >  
> > > On Wed, Apr 27, 2022 at 05:38:12PM +0100, Ross Lagerwall via wrote:
> > > > The BAR emulated register definition does not set emu_mask because it
> > > > varies depending on bar_flag.  If emu_mask is not set, then the BAR is
> > > > initialized based on the host value which causes the BAR to be initially
> > > > mapped at whatever value the host device was using. Although it does
> > > > eventually get mapped at the correct location, it causes unnecessary
> > > > mapping/unmappings.
> > > 
> > > Would it be possible to just unset the memory decoding bit in the
> > > command register if it's set?
> > 
> > I don't think that would be sufficient since AFAICT qemu does not read that
> > bit so will still call into Xen to update memory mappings, etc.
> 
> Hm, but this seems wrong?  QEMU should not set memory mappings if the
> memory decoding bit is unset.  While the bit will be set for the
> underlying physical device, it shouldn't be set in the emulated
> command register provided to the guest, and hence no mappings should
> be established until that bit is set by the guest.
> 
> In the description you mention not using the host BAR positions, which
> is fine, but you also need to prevent mappings from being created
> until the guest has positioned the BARs and enabled the memory
> decoding bit, or else you end up positioning the BARs wrongly has QEMU
> has no knowledge of where should BARs reside.
> 

I was wrong - I missed the point where QEMU checked the memory decoding bit
since it is in the core PCI code.

This patch was originally for some older combination of Xen/QEMU. I
rechecked now and I'm no longer able to reproduce the symptom in the
description (unnecessary incorrect mapping/unmappings) so I guess
something else changed in the meantime. The BAR register being
temporarily populated with host values before being programmed
is therefore not a big issue so I think this patch can just be
dropped.

Thanks,
Ross


 


Rackspace

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