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

Re: [PATCH v3] vpci/msix: fix PBA accesses


  • To: Jan Beulich <jbeulich@xxxxxxxx>
  • From: Roger Pau Monné <roger.pau@xxxxxxxxxx>
  • Date: Mon, 7 Mar 2022 17:28:41 +0100
  • 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=nwmDFDYOQUrG51oIRCLnj5H/ptVgEgg2boLsbs0NflY=; b=dPazhiA4xMdb7BMy8CIK1p3XY5BS4pb91pzEcogfrztilo2ZvfiopxmoP6ZwlAL+YrN6jbGLecx5mzb9KRG34pNTntLCrzGqa5LxHaTKVFNiHoZXPjrOHoC36jsDHdY5043D2Jrs8gO83YysQFV1PTj92BB2DAdlpbSbTZNHFmtgcYiZYkZIuySHHPMZmAlQKVt7VKP7Jmj/rNXt58AkJHa5k+pafTu3VyW22KuadyIc82HzF9nQ8le1hqz4w+OHpRW4ALnK9++D8Q4inLpcytZMh+nKvt3oYVa919aMxQFFeG45EFimNnYJY4X6pwLUKd9YVeGPJucRlv68179Wwg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hXb+nLGunZYlEVpDWDl+LZtYJDanqQNN/EwOIRwXlJq1ZBkB3mLeN20XmDLbROna4oyvR3FlODoPZjV7t4FcrR20hXn35ZAUiPYi4FtoEaxrnUwdEzjqyyCnpFqYDu0Jl2yGrP2GBQcY1X5zzU1/GeGKlAckQzzULY0Aml4YhV2dyFRze7CbGdCBMar1IFnX6ooWBx7Ly1JH7I/7JjjNmD/TWW/OjSlYIKGJhKaIUFRYCE4Sm5yDTiouSYYXPjSziJ5G/mK39eYEnU+DwO22Pq7FYT3BSgZw0lNrhxIcSSd1Bzt2L1/nsHIurWbkIVNb+RjUwvYvxle9ww1UDbF1Lg==
  • Authentication-results: esa6.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com
  • Cc: Alex Olson <this.is.a0lson@xxxxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Mon, 07 Mar 2022 16:28:54 +0000
  • Ironport-data: A9a23:/u8oYaCpyYEz/xVW/zbjw5YqxClBgxIJ4kV8jS/XYbTApDkj0T0Cm mRLXW+Ea6zYMzGnKdt0a4zi90NXuMfVxtU1QQY4rX1jcSlH+JHPbTi7wuYcHM8wwunrFh8PA xA2M4GYRCwMZiaA4E/raNANlFEkvU2ybuOU5NXsZ2YgHWeIdA970Ug5w7Vh3dYy6TSEK1jlV e3a8pW31GCNg1aYAkpMg05UgEoy1BhakGpwUm0WPZinjneH/5UmJMt3yZWKB2n5WuFp8tuSH I4v+l0bElTxpH/BAvv9+lryn9ZjrrT6ZWBigVIOM0Sub4QrSoXfHc/XOdJFAXq7hQllkPgt8 oxXp8TvFD11YJPdyac4QzBkNSdxaPguFL/veRBTsOSWxkzCNXDt3+9vHAc9OohwFuRfWD8Us 6ZCcXZUM07F17neLLGTE4GAguw5K8bmJsUHs2xIxjDFF/c2B5vERs0m4PcGgWpu350SQZ4yY eIXUQhWPCv8ZCdwAU0tE6MPw8qJqXnwJmgwRFW9+vNsvjm7IBZK+KjgNp/Zd8KHQe1Rn12Ev STW8mLhGBYYOdeDjz2f/RqEmu/OhmX6Q8QbTLmj8fhCj1iax2hVAxoTPXO5q/Skjk+1W/pEN lcZvCEpqMAPGFeDF4enGUfi+Tjd40BaC4E4//AGBB+llpCN+RTBWTU+EmB/eY1lkd8feRos2 Qrc9z/2PgBHvLqQQHOb076bqzKuJCQYRVM/iT84oRgtuIe6/txq5v7bZpM6SfPu0IWpcd3l6 23S9EADa6MvYdnnPklR1XTOmHqSq5fAVWbZDS2HDzv+vmuViGNIDrFECGQ3D94ddu51rXHb5 RDofvRyC8hUUfmweNSlGrllIV1Qz6/t3MfgqVBuBYI90D+m5mSue4tdiBknehs3b5daIWCyM B+P0e+02HO0FCH2BZKbnqrrU5h6pUQePY6Nug/ogipmPcEqKV7vENBGbk+MxWH9+HXAYolkU ap3hf2EVC5AYYw+lWLeb75EjdcDn3lurUuOFcGT50n2itK2OS/KIYrpxXPTN4jVGovf+16Lm zueXuPXoyhivBrWOXGGodZOdglRdRDWx/ne8qRqSwJKGSI/cEkJAP7N27IxPYtjmqVejODT+ X+hHERfzTLCabfvcG1mtlgLhGvTYKtC
  • Ironport-hdrordr: A9a23:m9A6VqHi/35ycdVGpLqFfJHXdLJyesId70hD6qkvc3Fom52j/f xGws5x6fatskdoZJhSo6H6BEDgewKWyXcR2+Us1NiZLW3bUQeTTb2KqLGSugEIeBeOvNK1t5 0QFJSWYeeYZTcVsS+52njfLz9K+qjlzEncv5a6854bd3AJV0gP1WdEIzfeNnczaBhNBJI/Gp bZzNFAvSCcdXMeadn+LmUZXsDYzue72K7OUFojPVoK+QOOhTSn5PrRCB6DxCoTVDtJ3PML7X XFqQrk/a+u2svLhSM0llWjoai+quGRiuerN/b8yfT9Hw+cyzpAKr4RGYFq9wpF2t1HoGxa7e Uk5S1QcvibokmhAV1crXbWqnXd+Sdr5Hn4xVCCh3z/5cT/WTIhEsJEwZlUax3D9iMbzadBOY 9wrhakXqBsfGT9deXGlqv1fgAvklDxrWspkOYVgXAaWYwCaKVJpYha+E9OCp8PEC/z9YhiSY BVfYnhzecTdUnfY2HSv2FpztDpVnMvHg2eSkxHvsCOyTBZkH1w0kNdzs0CmXUL8o47VvB/lq 35G7UtkKsLQt4dbKp7CutEScyrCnbVSRaJK26WKUSPLtBzB5sMke+E3FwY3pDaRHVT9upNpH 3oaiIpiVIP
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On Mon, Mar 07, 2022 at 05:17:59PM +0100, Jan Beulich wrote:
> On 07.03.2022 17:15, Roger Pau Monné wrote:
> > On Mon, Mar 07, 2022 at 05:11:34PM +0100, Jan Beulich wrote:
> >> On 07.03.2022 17:06, Roger Pau Monné wrote:
> >>> On Mon, Mar 07, 2022 at 03:12:32PM +0100, Jan Beulich wrote:
> >>>> On 07.03.2022 13:53, Roger Pau Monne wrote:
> >>>>> --- a/xen/drivers/vpci/msix.c
> >>>>> +++ b/xen/drivers/vpci/msix.c
> >>>>> @@ -182,6 +182,33 @@ static struct vpci_msix_entry *get_entry(struct 
> >>>>> vpci_msix *msix,
> >>>>>      return &msix->entries[(addr - start) / PCI_MSIX_ENTRY_SIZE];
> >>>>>  }
> >>>>>  
> >>>>> +static void __iomem *get_pba(struct vpci *vpci)
> >>>>> +{
> >>>>> +    struct vpci_msix *msix = vpci->msix;
> >>>>> +    void __iomem *pba;
> >>>>> +
> >>>>> +    /*
> >>>>> +     * PBA will only be unmapped when the device is deassigned, so 
> >>>>> access it
> >>>>> +     * without holding the vpci lock.
> >>>>> +     */
> >>>>> +    if ( likely(msix->pba) )
> >>>>> +        return msix->pba;
> >>>>> +
> >>>>> +    pba = ioremap(vmsix_table_addr(vpci, VPCI_MSIX_PBA),
> >>>>> +                  vmsix_table_size(vpci, VPCI_MSIX_PBA));
> >>>>> +    if ( !pba )
> >>>>> +        return msix->pba;
> >>>>
> >>>> For this particular purpose may want to consider using ACCESS_ONCE() for
> >>>> all accesses to this field.
> >>>
> >>> Hm, I think I've asked before, but we do assume that ACCESS_ONCE will
> >>> generate a single instruction, or else we would have to use
> >>> read_atomic.
> >>
> >> Yeah, that looks to be the assumption. It has become my understanding
> >> that ACCESS_ONCE() is generally favored over {read,write}_atomic().
> >> Personally I prefer the latter when the goal is to have single insns.
> > 
> > Oh, OK, so I should use 'ACCESS_ONCE(msix->pba) = pba;' rather than
> > write_atomic then.
> 
> To please others, perhaps. As said, I'd be fine with you using
> {read,write}_atomic().

Well, given that you are the only one that has provided review I'm
fine with using {read,write}_atomic if that's also your preference.

Thanks, Roger.



 


Rackspace

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