[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v4 10/21] AMD/IOMMU: allow use of superpage mappings
On 05.05.2022 15:19, Roger Pau Monné wrote: > On Mon, Apr 25, 2022 at 10:38:06AM +0200, Jan Beulich wrote: >> No separate feature flags exist which would control availability of >> these; the only restriction is HATS (establishing the maximum number of >> page table levels in general), and even that has a lower bound of 4. >> Thus we can unconditionally announce 2M, 1G, and 512G mappings. (Via >> non-default page sizes the implementation in principle permits arbitrary >> size mappings, but these require multiple identical leaf PTEs to be >> written, which isn't all that different from having to write multiple >> consecutive PTEs with increasing frame numbers. IMO that's therefore >> beneficial only on hardware where suitable TLBs exist; I'm unaware of >> such hardware.) >> >> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> > > Reviewed-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> Thanks. >> --- >> I'm not fully sure about allowing 512G mappings: The scheduling-for- >> freeing of intermediate page tables would take quite a while when >> replacing a tree of 4k mappings by a single 512G one. Yet then again >> there's no present code path via which 512G chunks of memory could be >> allocated (and hence mapped) anyway, so this would only benefit huge >> systems where 512 1G mappings could be re-coalesced (once suitable code >> is in place) into a single L4 entry. And re-coalescing wouldn't result >> in scheduling-for-freeing of full trees of lower level pagetables. > > I would think part of this should go into the commit message, as to > why enabling 512G superpages is fine. Together with what you say at the bottom I wonder whether, rather than moving this into the description in a slightly edited form, I shouldn't drop the PAGE_SIZE_512G there. I don't think that would invalidate your R-b. >> @@ -384,7 +406,7 @@ int cf_check amd_iommu_map_page( >> return rc; >> } >> > > I think it might be helpful to assert or otherwise check that the > input order is supported by the IOMMU, just to be on the safe side. Well, yes, I can certainly do so. Given how the code was developed it didn't seem very likely that such a fundamental assumption could be violated, but I guess I see your point. Jan >> --- a/xen/drivers/passthrough/amd/pci_amd_iommu.c >> +++ b/xen/drivers/passthrough/amd/pci_amd_iommu.c >> @@ -747,7 +747,7 @@ static void cf_check amd_dump_page_table >> } >> >> static const struct iommu_ops __initconst_cf_clobber _iommu_ops = { >> - .page_sizes = PAGE_SIZE_4K, >> + .page_sizes = PAGE_SIZE_4K | PAGE_SIZE_2M | PAGE_SIZE_1G | >> PAGE_SIZE_512G, > > As mentioned on a previous email, I'm worried if we ever get to > replace an entry populated with 4K pages with a 512G superpage, as the > freeing cost of the associated pagetables would be quite high. > > I guess we will have to implement a more preemptive freeing behavior > if issues arise. > > Thanks, Roger. >
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |