Message ID | b95777174dca3eec45804195628edfc97aa8ecba.1570034362.git.hongyax@amazon.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add alternative API for Xen PTEs | expand |
On 02.10.2019 19:16, Hongyan Xia wrote: > We will soon need to clean up mappings whenever the out most loop is > ended. Add a new label and turn relevant continue's into goto's. I think already when this still was RFC I did indicate that I'm not happy about the introduction of these labels (including also patch 8). I realize it's quite a lot to ask, but both functions would benefit from splitting up into per-level helper functions, which - afaict - would avoid the need for such labels, and which would at the same time likely make it quite a bit easier to extend these to the 5-level page tables case down the road. Thoughts? Jan
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 26fcb2709b..5a5f0685cc 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -5102,7 +5102,7 @@ int map_pages_to_xen( if ( !mfn_eq(mfn, INVALID_MFN) ) mfn = mfn_add(mfn, 1UL << (L3_PAGETABLE_SHIFT - PAGE_SHIFT)); nr_mfns -= 1UL << (L3_PAGETABLE_SHIFT - PAGE_SHIFT); - continue; + goto end_of_loop; } if ( (l3e_get_flags(ol3e) & _PAGE_PRESENT) && @@ -5129,7 +5129,7 @@ int map_pages_to_xen( if ( !mfn_eq(mfn, INVALID_MFN) ) mfn = mfn_add(mfn, i); nr_mfns -= i; - continue; + goto end_of_loop; } l2t = alloc_xen_pagetable(); @@ -5310,7 +5310,7 @@ int map_pages_to_xen( { if ( locking ) spin_unlock(&map_pgdir_lock); - continue; + goto end_of_loop; } if ( l2e_get_flags(ol2e) & _PAGE_PSE ) @@ -5365,7 +5365,7 @@ int map_pages_to_xen( { if ( locking ) spin_unlock(&map_pgdir_lock); - continue; + goto end_of_loop; } l2t = l3e_to_l2e(ol3e); @@ -5390,6 +5390,7 @@ int map_pages_to_xen( else if ( locking ) spin_unlock(&map_pgdir_lock); } + end_of_loop:; } #undef flush_flags