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

Re: [PATCH v6 03/13] vpci: move lock outside of struct vpci


  • To: Oleksandr Andrushchenko <Oleksandr_Andrushchenko@xxxxxxxx>
  • From: Roger Pau Monné <roger.pau@xxxxxxxxxx>
  • Date: Tue, 8 Feb 2022 14:38:42 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; 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=MXIVqAJvO8QmSJQwwKXoLxAPzz8IG3cA/GAg6WI+9jA=; b=oNHck7LcZnwQYDTiuguejl8ZdhWZ5iX/W8UuZ2sA69kE+cPobk1MlJpwHQnfoJvaaqyScb2LEPWtMjCmuLp+5y+ty53I9Ct9V7+Tcr8I0EieR1J/m522Vtw6hYIT69eb8VouFopzpMVCX0fd7a5Lp1RsEqg4FcYLoouUrDwdD7oesXp/1WQjvbEygqrDfsAJrj272Zp5tofvfC5z2OsZuxEADmxwDAgekPIdNYtFFR1pHbxkntPb1E8K6D1i4ZThL0XYyS8BV4N+a34I+5BtLqh8/wFT5WfEoO8wVPtEbDVbRILlYH0hLPtaSXp204WBTovbr1Es0ha3OOl+odBwvg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=H0e3nBd2PKXPrIsXxh4TKxpi8nN5JnK4cQNkE4wGXi5TKSKJnnWNOAqca9cPA/sn0IvZDqRw5QJLQDq1tHXq8OxQ3g+6ERU/3kA7FAL4utNe15WhqFM04Q3dBwgOfgCK5z660Rad32u6y7qF7sY/XsEaqcfM5/VIEziUu3FAN8vORbOQCphH3L29srvETXvm0SxI1XIduWxWv4pbdC3XIAgC3BnKIpNfePqFBgBNRMgl+T1TDK9KQR/bFx5WsCiETY1DFsEtStXuGePnMyX3doioagXCEFGwwKZYnyxxBL2ZV3nwSudT8kU8o6ye7NwLVbJvAN8RdPindsPm2L5c2A==
  • Authentication-results: esa4.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com
  • Cc: Jan Beulich <jbeulich@xxxxxxxx>, "julien@xxxxxxx" <julien@xxxxxxx>, "sstabellini@xxxxxxxxxx" <sstabellini@xxxxxxxxxx>, Oleksandr Tyshchenko <Oleksandr_Tyshchenko@xxxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>, Artem Mygaiev <Artem_Mygaiev@xxxxxxxx>, "andrew.cooper3@xxxxxxxxxx" <andrew.cooper3@xxxxxxxxxx>, "george.dunlap@xxxxxxxxxx" <george.dunlap@xxxxxxxxxx>, "paul@xxxxxxx" <paul@xxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, Rahul Singh <rahul.singh@xxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Tue, 08 Feb 2022 13:39:02 +0000
  • Ironport-data: A9a23:rF0nQ6LEMOVulcpIFE+R8ZMlxSXFcZb7ZxGr2PjKsXjdYENS1zFVn zEXCmzQPayKNjanct9+Od/j9hxT6MTVm9dlQQdlqX01Q3x08seUXt7xwmUcns+xwm8vaGo9s q3yv/GZdJhcokcxIn5BC5C5xZVG/fjgqoHUVaiUakideSc+EH170Ug7y7Zg6mJVqYPR7z2l6 IuaT/L3YDdJ6xYsWo7Dw/vewP/HlK2aVAIw5jTSV9gS1LPtvyB94KYkDbOwNxPFrrx8RYZWc QphIIaRpQs19z91Yj+sfy2SnkciGtY+NiDW4pZatjTLbrGvaUXe345iXMfwZ3u7hB2Gn89fx /AU7aWgREAYEPXP38ocQ15XRnQW0a1uoNcrIFC6uM2XiUbHb2Ht07NlC0Re0Y8wo7gtRzsUr LpBdW5LPkvra+GemdpXTsF2gcsuNo/zNZ43sXB81zDJS/0hRPgvRo2UuI4EgGZp16iiG97Eb Og5QztoQi/jQCxhGk0PCpU+jeS30yyXnzpw9wvO+PtfD3Lo5BR4zbzFINfTPNuQSq19t1yEq 2fx2nX2CxAXKvSS0TOAtHmrg4fnly7hRJgbErH+8/dwmUCS3UQaEhhQXly+ydGph0j7V99BJ kg8/is1sbN05EGtVsP6XRCzvDiDpBF0c8BZE/A+rhqMzKXUyw+DAy4PSTspQOIhsMg6VDk7z GijltniBSFsmLCNQHfb/bCRxRuwMyUIKW4JZQcfUBAIpdLkpekbqRbCTc1qFqKvufTzFSvt2 DCBrCU4hLI7gNYC0uOw+lWvqzCxopnESCYl6wORWXiqhiteYIOmfIWu5ULs0edbLI2ZQ1+Cu 1AJg8GbqusJCPmljzeRSe8AGLWo4fetMzDGh1NrWZ47+FyQF2WLJN4KpmskfQEwb5hCKWSBj FLvVR15659MEnSPNPdOc4/2Oupyzu/OFMSiWaWBBjZRWaRZeAiC9SBoQEef2WHxjUQh+Z0C1 YenndWEVihDV/k+pNaib6JEiOJwmHhirY/Gbc2jl3yaPayiiGl5oFvvGH+HdagH4ayNu205G P4PZpLRm32zvAATCxQ7ELL/z3hXdxDX5ris8qS7k9JvxSI8SQkc5wf5m+9JRmCct/09eh301 n+8QFRE71H0mGfKLw6HAlg6Nu+zBMcm9CxqZ3V3VbpN55TESdz+hJrzirNtJeV3nACd5aIco wY5lzWoXa0UF2WvF8U1Zpjhto1yHClHdirVVxdJlAMXJsY6LySQo4eMVlK2qEEmU3rm3eNj8 ubI/l6KHvIrGV84ZO6IM63H8r9ElSVE8A6EdxCTeYc7lYSF2NUCFhEdeddte55VckiYlmLBv +tUaD9BzdTwT0YO2IChrYiPrpuzEvs4GUxfHmLB6q2xOzWc9W2mqbKsms7TFdwEfG+rqqike 8tPyPTwbK8OkFpQ6tIuGLd316MuodDoouYCnAhjGXzKaXWtC69hfSbajZUe6PUVy+8LoxayV 2KO5sJeZeeDNvT6HQNDPwEidOmCi60Zw2GA8fQvLUzmzyZr577bA15KNhyBhXUFfrt4OY8o2 8k7v8sS51DtgxYmKI/e3CtV636NPjoLVKB+7sMWB4riiwwKzFBeYMODVn+qsc/XM9gVaxskO D6ZgqbGlo9w/EuafiphD2XJ0MpcmY8K5EJAwmgdKgnbgdHCnPI2gkFcqGxlUgRPwxxb+OtvI Ww3ZVZtLKCD8jo01shOW2egR1NICBGDoxGjzlIIkCvSTlWyV3yLJ2o4YL7f8Ecc+mNaXz5a4 LDHlzq1DWe0JJn8jnkoREpoi/3/VtggpATNlfeuE9mBA5RnMyHuhbWjZDZQphbqaS/raJYre QW+ED5MVJDG
  • Ironport-hdrordr: A9a23:AysADqvSdx8Llp+MU+9wjEpJ7skC7IMji2hC6mlwRA09TyXGra 6TdaUguiMc1gx8ZJhBo7C90KnpewK7yXdQ2/htAV7EZnibhILIFvAZ0WKG+Vzd8kLFh4tgPM tbAsxD4ZjLfCdHZKXBkXmF+rQbsaG6GcmT7I+0pRodLnAJV0gj1XYDNu/yKDwGeOAsP+tBKH Pz3Lshm9L2Ek5nEPhTS0N1FdTrlpnurtbLcBQGDxko5E2nii6p0qfzF1y90g0FWz1C7L8++S yd+jaJqpmLgrWe8FvxxmXT55NZlJ/IzcZCPtWFjowwJi/3ggilSYx9U/mpvSwzosuo9FE2+e O87isIDoBW0Tf8b2u1qRzi103J1ysv0WbrzRuijX7qsaXCNXsHIvsEobgcXgrS6kImst05+r lMxXilu51eCg6FtDjh5vDTPisa13ackD4Hq6o+nnZfWYwRZPt6tooE5n5YF58GAWbT9J0nKu 9zF8vRjcwmP29yV0qp/VWH/ebcHEjaRny9Mw0/U42uondrdUlCvgslLJd1pAZFyHo/I6M0kd gsfJ4Y042mdfVmH56VMt1xNvdfOla9Mi4kD1jiVGgPNJt3c04l+KSHq4nc2omRCeg1Jd0J6d L8bG8=
  • Ironport-sdr: ZcvmdNvItn8WS3dvwscPkMMlaCZaz2xOdAQo38F5mGcTeR+hE72Yi7irtrAGTuPoGax1PUxPKb xZNzZoWEaXProAKGX961NfpJZpDyuubyHr0ybZjrR7vxJCTLcOUu75tnIOQmAyjVfUr+SKBMOr 2WNVL+av/2zIpzgNzWYd1P+cDDqLS8A/cexSUzgA8B0xGYFxYJWBQJ+h+kpcm9JbwEpCW0YheW OcVDWRZEmAHBu8p+AboJL690IfO++/2uBQ7sToEogPYYc4eaEtCkm798aYjcfjYM7CXLtDYH6w 8QbTyRpAGJpVlLscrVZ5mZD6
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On Tue, Feb 08, 2022 at 11:13:41AM +0000, Oleksandr Andrushchenko wrote:
> 
> 
> On 08.02.22 12:50, Roger Pau Monné wrote:
> > On Tue, Feb 08, 2022 at 07:35:34AM +0000, Oleksandr Andrushchenko wrote:
> >> 5. You name it
> >> ==============================================================
> >>
> >>   From all the above I would recommend we go with option 2 which seems to 
> >> reliably
> >> solve ABBA and does not bring cons of the other approaches.
> > 6. per-domain rwlock + per-device vpci lock
> >
> > Introduce vpci_header_write_lock(start, {end, size}) helper: return
> > whether a range requires the per-domain lock in write mode. This will
> > only return true if the range overlaps with the BAR ROM or the command
> > register.
> >
> > In vpci_{read,write}:
> >
> > if ( vpci_header_write_lock(...) )
> >      /* Gain exclusive access to all of the domain pdevs vpci. */
> >      write_lock(d->vpci);
> > else
> > {
> >      read_lock(d->vpci);
> >      spin_lock(vpci->lock);
> > }
> > ...
> >
> > The vpci assign/deassign functions would need to be modified to write
> > lock the per-domain rwlock. The MSI-X table MMIO handler will also
> > need to read lock the per domain vpci lock.
> Ok, so it seems you are in favor of this implementation and I have
> no objection as well. The only limitation we should be aware of is
> that once a path has acquired the read lock it is not possible to do
> any write path operations in there.
> vpci_process_pending will acquire write lock though as it can
> lead to vpci_remove_device on its error path.
> 
> So, I am going to implement pdev->vpci->lock + d->vpci_lock

I think it's the less uncertain option.

As said, if you want to investigate whether you can successfully move
the checking into vpci_process_pending that would also be fine with
me, but I cannot assert it's going to be successful. OTOH I think the
per-domain rwlock + per-device spinlock seems quite likely to solve
our issues.

Thanks, Roger.



 


Rackspace

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