|
|
|
|
|
|
|
|
|
|
xen-devel
[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
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-devel] Changeset 20209 causes an issue in xen_in_range(),
Cui, Dexuan <=
|
|
|
|
|