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

Re: Linux pin_user_pages_fast fails on Xen


  • To: <JESHWANTHKUMAR.NK@xxxxxxx>
  • From: Stefano Stabellini <stefano.stabellini@xxxxxxx>
  • Date: Mon, 12 Sep 2022 18:26:14 -0700
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=oracle.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=DGw8WgM1pmYZjd/VUQ46RxQx+DVsuLSMgpygrSdoM7Y=; b=Wz/AdboP+cU0ZEbmfqMq4+uhHPsfgZLNin0U21yjqD1YsST+f0CMO4wSg8shXX/dlr8shUCNXtwKJZrLzXT7y5IInWj9Xn0vXyxjU7rog46Oi4ipentrYH0UGX4TDn1AFGuJdsjo+z7N8pTxIY30CwiB0K6oyGEmc2gFbk268sd4eRJy+znjeJuhIbB4XikDNpONzaMkSxTEkfdXY6YuaAMoCA6t2OagDLV1tnENzC6ZlQqiPNm3pdzueOQLcclfoKQuVlR6wxGjYKd3fMoSAPh3wCbA08FhFA8tVrTxo6S8dz5dyIOJwiOcBjGgt4DRAXb70EK6C6+EKkQ5hMUg8w==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=K3Hy4Ko6T+sV51jcS4v/HeaqSI05oke5o+S47xXef7lC8Whze5L4sI3CCriQlbDuQEMbHBQ748Z3NKLdBN0iiwnPR4MN5rbmrSnhCsnRZP5FaBtgfrO1DQt7NAcJbDJwJc6kB0mJhr0Z/BU/yo+z4DIT3IlmctNm8Q55aUMYbG0RHtocOCdvFWuaTBax8N8lOqxXZG2cR0Yc1cmziPz332y8J6X1su9Z2fL459KRg9VMDxt3fRQ0QGdFJ8JEFTOweY+2q24JJlMZM9ElNQPa9Mg+CjAr52Vr/59y2K0Uwn96QoRthPHirgmCiD5T0WsuvQZG4ldl57hb2bZVfB2ciQ==
  • Cc: Stefano Stabellini <stefano.stabellini@xxxxxxx>, <boris.ostrovsky@xxxxxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxxx>, <JESHWANTHKUMAR.NK@xxxxxxx>, <Devaraj.Rangasamy@xxxxxxx>, <Mythri.Pandeshwarakrishna@xxxxxxx>, <SivaSangeetha.SK@xxxxxxx>, <Rijo-john.Thomas@xxxxxxx>, <jgross@xxxxxxxx>
  • Delivery-date: Tue, 13 Sep 2022 01:26:37 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On Sat, 10 Sep 2022, Juergen Gross wrote:
> On 09.09.22 22:25, Stefano Stabellini wrote:
> > On Fri, 9 Sep 2022, Juergen Gross wrote:
> > > On 09.09.22 04:11, Stefano Stabellini wrote:
> > > > Adding more people in CC
> > > > 
> > > > On Thu, 8 Sep 2022, Stefano Stabellini wrote:
> > > > > Hi Juergen,
> > > > > 
> > > > > A colleague is seeing a failure on x86 in Linux Dom0. The failure is
> > > > > pin_user_pages_fast with addresses that correspond to foreign memory
> > > > > pages:
> > > > > 
> > > > > - QEMU maps a domU address using dma_memory_map (xen_map_cache)
> > > > > - QEMU calls an IOCTL to the TEE subsystem with the Virtual Address
> > > > >     returned by dma_memory_map
> > > > > - Linux tee_shm_register->pin_user_pages_fast Returns -14 -
> > > > > drivers/tee/tee_shm.c
> > > > > 
> > > > > Once upon a time it used to be the case that get_user_pages_fast would
> > > > > fail on Xen because we didn't have a struct page corresponding to
> > > > > foreign memory mappings. But that hasn't been the case for years now.
> > > > > 
> > > > > Any other ideas why it would fail?
> > > 
> > > I think we can expect that access_ok() isn't failing.
> > > 
> > > I assume the mapping was done allowing writes (sorry for paranoia mode)?
> >   I was told it was verified: QEMU could read and write to the VA returned
> > by dma_memory_map. From /proc/<qemu-pid>/maps, the VA assigned after the
> > mapping is pointing to /dev/xen/privcmd.
> > 
> > 
> > > Other than that I'm not having enough memory management skills. It might
> > > be
> > > related to mmap()-ed foreign pages having _PAGE_SPECIAL set, though.
> > 
> > Do we still set PAGE_SPECIAL for foreign mapped pages? It looks like it
> > is not there anymore? If PAGE_SPECIAL is not there, then they really
> > should look like regular pages?
> 
> See the call of pte_mkspecial() in remap_area_pfn_pte_fn() (mmu_pv.c).

The kernel version is 5.16 and the return code is -EFAULT. Is it
the following -EFAULT the one that triggers?

mm/gup.c:internal_get_user_pages_fast:

        if (unlikely(!access_ok((void __user *)start, len)))
                return -EFAULT;



 


Rackspace

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