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