[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Changeset 20209 causes an issue in xen_in_range()
Currently PERCPU_SIZE is 2 4K-pages and only 1 page is used actually. >From xen 20209 on, the second unused page is freed and returned to domheap in >debug=n build (MEMORY_GUARD is not defined): percpu_free_unused_areas() -> free_xen_data() -> init_xenheap_pages(). Later the returned pages could be allocated to dom0 and dom0 could use them as DMA buffer. However, in iommu_set_dom0_mapping(), xen_in_range() is still True for the freed pages above, so devices in Dom0 can meet with DMA fault. We may have 2 options: 1) enhance xen_in_range() and check the freed pages. This means we should refer to the logic of percpu_free_unused_areas(). 2) don't free the unused per_cpu pages: we will waste NR_CPUS pages. e.g., if NR_CPUS is 256, we'll waste 1M memory. Looks this is not a big issue? I personally perfer option 2 as it's simple :-) And actually long ago we also had frame_table checked in xen_in_range(), but gave up the checking later as it's not easy to implement the exact checking. Any suggestions? PS, in percpu_free_unused_areas(): data_size = (data_size + PAGE_SIZE + 1) & PAGE_MASK; here "PAGE_SIZE + 1" should be "PAGE_SIZE - 1"? Thanks, -- Dexuan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |