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

Re: [PATCH v2 02/18] VT-d: have callers specify the target level for page table walks


  • To: Jan Beulich <jbeulich@xxxxxxxx>
  • From: Roger Pau Monné <roger.pau@xxxxxxxxxx>
  • Date: Tue, 30 Nov 2021 12:56:05 +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=aXa2V7OYMORL6Y9ATroOqrd/1u8shJLABkuhdPtbERI=; b=SlfmeIXkE1sGLODS6jb4C84zkVeISKL75KUYqDNDfDs5zfgs0rCSH86UGUxrxYmjyNJepZPZOTbzZhyc4ChrsInTOTb/VDI+l8HaVknd4czEeqiW3FUxt98HfaddUTjM29VsVDtvjCBTDHueWvzuw0Gocoo2afLre8OayrEY59fay1pKxAiDsRyEXCA4zUFunLxIkQ6r1UQjjibEm61sE4yXvFO2mE/ZoO76hjHTSeYQax7nsNNiJdklNu/YO2O4TGxYsEczh7LjmJIVBXjDBvrQCj9TFyj1xkuNmu27IkT5fiOGXqHT7+24NAOCS52fD6euvaIsgUrGlz1GW9ekyw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GQ5zozlQd0HSQ2FGdXcEKsHiGvWvI3I4lXmdIKO+kYQ8sTyrlMCICW3K3iCfGHDwfK9Dy7r5589uQKdHu70/DoQut9WzmZUZwUR7ahiOFv+5JxNxIR6SVermdBpwiPi40OwcIPIGbAO3ZmkKJ7jD1X/sQt4WRusDXU9ZAuMAAoSPfODienoaQ0crwwkJQRVOxdxOrVq9Iy9+NwAPOpkg9D0+3dbz+GKwhTpa+BWlHm7hfa1HR/zMX2A05hjik6KtmL27UeR+E/AMeYZJ95sR5RpPwlqwEPevgT/cr3/fcCH2EU2511ZEDmLTIDvPB1ZrfNins9UoSatgPP78VbP0cw==
  • Authentication-results: esa5.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com
  • Cc: Kevin Tian <kevin.tian@xxxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Paul Durrant <paul@xxxxxxx>
  • Delivery-date: Tue, 30 Nov 2021 11:56:29 +0000
  • Ironport-data: A9a23:LxpCdazOGvuGc+iOaOl6t+fAwSrEfRIJ4+MujC+fZmUNrF6WrkVTn TQXCmjTO/iCazP2e491a4q/9h5QsJaGnNc3GQRsrCAxQypGp/SeCIXCJC8cHc8zwu4v7q5Dx 59DAjUVBJlsFhcwnvopW1TYhSEUOZugH9IQM8aZfHAuLeNYYH1500s6wrVh2tcAbeWRWGthh /uj+6UzB3f9s9JEGjp8B3Wr8U4HUFza4Vv0j3RmDRx5lAa2e0o9VfrzEZqZPXrgKrS4K8bhL wr1IBNVyUuCl/slIovNfr8W6STmSJaKVeSFoiI+t6RPHnGuD8H9u0o2HKN0VKtZt9mGt+J77 PtM7ZqQdVY4IZ/MmfomcTp2Di4raMWq+JefSZS+mcmazkmAeHrw2fR+SkoxOOX0+M4uXzsIr 6ZBbmlQMFbT3Ipaw5riIgVort4kI8TxepsWp1lrzC3DDOZgSpfGK0nPzYIIgG5r3ZEUdRrYT /EjRnlJNQzAXwFGHnE4JI5ivue6qUCqJlW0r3rK/PFqsgA/1jdZwLXrddbYZNGObcFUhVqD4 HLL+XzjBRMXP8DZziCKmlq0j/LLtTP2XsQVDrLQ3vxgjUCXx2cTIAYLTlb9qv684ma9VsxeL QoI+yMohak06EGvCNL6WnWFTGWs50BGHYAKSqtjtV/LmvG8Dxul6nYsfDRlRt1+su8KFC015 F+IgejLJhJyv+jAIZ6CzYu8oTS3MCkTCGYNYy4YUAcIi+XeTJEPYgHnFYg6TvPs5jHhMXSpm m3R8nBi71kGpZdTj/3TwLzRv967SnElpCYR7x6fYG+q5xgRiGWNN93xsgizARqtwe+kori9U Josx5j2AAMmV8jleMmxrAMlR+rBCxGtamC0vLKXN8N9nwlBAlb6FWyq3BlwJV1yLuEPciLzb UnYtGt5vcEIbCHzNPQsPdjtUazGKJQM8/y+DZg4ifIUP/BMmPKvpnkyNSZ8IUiz+KTTrU3PE cjCKpv9ZZrrIa9m0CC3V48gPUwDnUgDKZfobcmjlXyPiOPGDFbMEOttGAbeP4gRsfLfyC2Io ok3Cid/40gGOAEISnKMqtB7wJFjBSVTOK0aXOQLLLPeeVQ/Rzl6YxITqJt4E7FYc21uvr6g1 lm2W1NCyUq5gnvCKA6QbWtkZq+pVpF6xU/X9wRwVbpx83R8M4up8okFcJ47Iesu+OB5lKYmR PgZYcSQRP9IT22fqTgaaJD8qq1kdQiq2l3Sb3b0PmBncs4yXRHN9//lYhDrqHsEAB2ouJZsu LanzA7aH8YOHlwwEMbMZfuz5FqtpnxByvlqVk7FL4ALKkXh+YRnMQLrifozL51eIBnP3GLCh Q2XHQ0Zta/GpIpsqIvFgqWNroGIFepiHxUFQzmHvOjubSSDpzit245NVuqMbAvxbmKs9fXwf /hRwtH9LOYDwARAvb1jHus51qk5/dbu+eNXl1w2AHXRYl23Ibp8OX3aj9JXv6hAy7IF6wu7X kWDpotTNbmTYZ63FVcQIEwub/iZ1OFSkT7XtKxnLEL/7S5x3byGTUQNYEXc1H0DdON4YNE/3 OMsmM8K8Aju2BMlP+GPgj1Q62nRfGcLVL8qt81CDYLm4ubxJoquvXAI5vfK3ayy
  • Ironport-hdrordr: A9a23:dBJdwqEcWagMf/oepLqE7MeALOsnbusQ8zAXPidKOHtom62j5q STdZEgviMc5wx8ZJhNo7+90cq7IU80l6Qa3WB5B97LNmTbUQCTTb1K3M/PxCDhBj271sM179 YET0GmMqySMbGtt7eZ3DWF
  • Ironport-sdr: /45WaKRDXd/aCgeynsrEYPDhSJeYjEw80w6JSW9dFVkXqQSX1l4HsJkhldcS4xbapg+PGTlTOW yoSHVbXZRMx+pyaW77bg1N/CXT+MjwT+q7mEWS6YH2RNh/KTd7VOTBPnoyKcPeS4Q36fiKoja+ mpD7Tl5ewQjDjX7FfQDQ8+OW6zOX60UsWaBlz9RmOPS6zbuiKHuHGBWmVSAdkDNOtW1vPSzKyL LSMFMee8GiMAZYBwAq1OiTZhJG8HjgY2m/IumTLBQHOcciauP77Wux5abnbnzr4rW6KUlSBnp/ 0OJYzDKBR7caHuWolztB5uBJ
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On Mon, Sep 27, 2021 at 11:04:26AM +0200, Jan Beulich wrote:
> On 24.09.2021 16:45, Roger Pau Monné wrote:
> > On Fri, Sep 24, 2021 at 11:42:13AM +0200, Jan Beulich wrote:
> >> -    parent = (struct dma_pte 
> >> *)map_vtd_domain_page(hd->arch.vtd.pgd_maddr);
> >> -    while ( level > 1 )
> >> +    pte_maddr = hd->arch.vtd.pgd_maddr;
> >> +    parent = map_vtd_domain_page(pte_maddr);
> >> +    while ( level > target )
> >>      {
> >>          offset = address_level_offset(addr, level);
> >>          pte = &parent[offset];
> >>  
> >>          pte_maddr = dma_pte_addr(*pte);
> >> -        if ( !pte_maddr )
> >> +        if ( !dma_pte_present(*pte) || (level > 1 && 
> >> dma_pte_superpage(*pte)) )
> >>          {
> >>              struct page_info *pg;
> >> +            /*
> >> +             * Higher level tables always set r/w, last level page table
> >> +             * controls read/write.
> >> +             */
> >> +            struct dma_pte new_pte = { DMA_PTE_PROT };
> >>  
> >>              if ( !alloc )
> >> -                break;
> >> +            {
> >> +                pte_maddr = 0;
> >> +                if ( !dma_pte_present(*pte) )
> >> +                    break;
> >> +
> >> +                /*
> >> +                 * When the leaf entry was requested, pass back the full 
> >> PTE,
> >> +                 * with the address adjusted to account for the residual 
> >> of
> >> +                 * the walk.
> >> +                 */
> >> +                pte_maddr = pte->val +
> > 
> > Wouldn't it be better to use dma_pte_addr(*pte) rather than accessing
> > pte->val, and then you could drop the PAGE_MASK?
> > 
> > Or is the addr parameter not guaranteed to be page aligned?
> 
> addr is page aligned, but may not be superpage aligned. Yet that's not
> the point here. As per the comment at the top of the function (and as
> per the needs of intel_iommu_lookup_page()) we want to return a proper
> (even if fake) PTE here, i.e. in particular including the access
> control bits. Is "full" in the comment not sufficient to express this?

I see. I guess I got confused by the function name. It would be better
called addr_to_dma_pte?

Thanks, Roger.



 


Rackspace

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