[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:15:18 +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=5a+UhMJ/OFCFj36MDwfJR7NkceoAv1d/Lp9Zg/v2CUk=; b=MX4f9Fp1iF5hfGhaakr0lQj6U7FCQ+KprG5YDzriE6SBy/sMszn9hlZEPL1FAjkll8+eeW5FrUAYAtkWZdXVrJv73PjXAmFTXkVfj1sPDQBYsnTouqWQAwj2Hkg4A/Z6o3Xetn2Fl984u9q1Ioujq/WEaB2iLyTtpIOwPbXCcsnJL53JL9kJ2/nzdOeDCDk+1vvcKHSXoZ7P9adbMEqIeeaztNfSf4KJ+H33aml45+fCt1J6jFjRnzHfOIx6t5gmaMBKSbFQJJ8ZOzXnksD8wPRYc6MFyKefhQyFIPSkdClGuD+RfV27c4z/nlkLf3L08/HRFUFK/b/EpPY+efGfVg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Vhlu8zUNwSvb06bdZTw/OGmWPJ+llISCLJMp00gPdET3BZ7MAmSxw1Fn0xBRZoFFmenzkoFd8XRM4zD6lzs4xlyN8aTwFvCKgEf7+sunfdyv1x3oabKUT97f1/FkTSAkSFMnaSuC8faS+HYtXUqq3ICsnieHOKEcc7kl/FLNEmPIQx73jM9Y18uT7eED30C5KLjVa8qmaPnRGQOqGguFcbjVDSehzUY0IHqvHA53VPKvdIOlkLlAPJZOlhTNNx8phLRP0uLi6p+BI4ccuw+mI20ROeINmEg2kn0xtonTZB22LJprmGYFsXoLXZMHV/VCFk/ptcbRO/u+ikZicFkF5g==
  • 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:15:35 +0000
  • Ironport-data: A9a23:4GpiEq9V7S+OIkJVIrzWDrUDn36TJUtcMsCJ2f8bNWPcYEJGY0x3y mVOUTuDbvaPa2akKdl2b9nk/EJQu5XTm9BhSgtspCo8E34SpcT7XtnIdU2Y0wF+jyHgoOCLy +1EN7Es+ehtFie0Si+Fa+Sn9T8mvU2xbuKU5NTsY0idfic5DnZ54f5fs7Rh2NQw2oDmW1nlV e7a+KUzBnf0g1aYDUpMg06zgEsHUCPa4W5wUvQWPJinjXeG/5UnJMt3yZKZdhMUdrJ8DO+iL 9sv+Znilo/vE7XBPfv++lrzWhVirrc/pmFigFIOM0SpqkAqSiDfTs/XnRfTAKtao2zhojx/9 DlCnZuZDlk0G4nJof4QeT52NXBsLKZo3JaSdBBTseTLp6HHW37lwvEoB0AqJ4wIvO1wBAmi9 9RBdmpLNErawbvrnvTrEYGAhex6RCXvFJkYtXx6iynQEN4tQIzZQrWM7thdtNs1rp4TQKiGP pFAAdZpRFPjUgNoEVQSM7lgrt6BrFalLwxSlU3A8MLb5ECMlVcsgdABKuH9atGMAMlYgEucj mbH5HjiRAEXMsSFzjiI+W7qgfXA9QvnWIMJUryjsPcyhEaUwEQcDRQXUR2wpvzRoky0Vs9bK kcU0jEztqV0/0uuJuQRRDXh/iTC5ERFHYMNTatqs2lh15Y4/S6eLy9aUxtlbeU8ueURaxp7x E6CsffAUGkHXKKudVqR8bKdrDWXMCcTLHMfaSJscTbp8+UPs6lo0EuRE48L/Lqdy4SsRGqum 2ziQD0W2u1L5fPnwZlX6rwub9iEgpHSBjA46QzMNo5OxlMoPdX1D2BEBLWy0BqhEGp7ZgTb1 JTns5LHhAzrMX1qvHbRKNjh5Jnzu5643MT02DaD5aUJ+TW34GKEdotN+jx4L0oBGp9aJWG0M RGL5lgBtMM70J6WgUhfOd7ZNijX5fK4SYSNug78NLKinaSdhCfYpXozNCZ8LkjmkVQ2kLFXB HtoWZ3EMJruMow+lGDeb75EidcDn3lirUuKHMCT50n3gNK2OS/OIZ9YYQTmUwzMxP7dyOkj2 40EbJXiJtQ2eLCWXxQ7BqZIdQFadSVgXMuuwyGVH8baSjdb9KgaI6a56ZsqepB/nrQTkeHN/ 3qnXVRfxka5jnrCQThmoFg6AF8zdf6TdU4GABE=
  • Ironport-hdrordr: A9a23:ObI5cK3uEwK7z6crx8DUowqjBVByeYIsimQD101hICG9Lfb2qy n+ppgmPEHP5Qr5OEtApTiBUJPwJk800aQFm7X5Wo3SITUO2VHYV72KiLGN/9SOIVydygcw79 YET0E6MqyNMbEYt7eK3ODbKadY/DDvysnB7o2/vhRQpENRGtldBm9Ce3im+yZNNW977PQCZf 6hDp0tnUveRZ1bVLXyOlA1G8z44/HbnpPvZhALQzYh9Qm1lDutrJr3CQKR0BsyWy5Ghe5Kyx mOryXJooGY992rwB7V0GHeq7xQhdva09NGQOiBkNIcJDnAghuhIK5hR7qBljYop/zH0idgrP D85zMbe+hj4XLYeW+45TPrxgnbyT4rr0TvzFeJ6EGT1vDRdXYfMY5slIhZehzW5w4Lp9dnyp 9G2Gqfqt5+EQ7AtD6V3amGazha0m6P5VYym+8aiHJSFaEEbqVKkIAZ9ERJVL8dASPB7pw9Gu UGNrCR2B9vSyLaU5nlhBgu/DT1NU5DXStuA3Jy9/B96gIm0kyQlCAjtY4idnRpzuNId3AL3Z WADk1SrsA8ciYnV9MMOA4/e7rENoXse2O7DIvAGyWvKEk4U0i93qIfpo9FoN2XRA==
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

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.

Thanks, Roger.



 


Rackspace

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