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