|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v3 06/13] xen/arm: implement arch_vmap_virt_end
Move virt_start out of ioremap and rename it to early_vmap_start.
Implement arch_vmap_virt_end by returning early_vmap_start.
Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
---
xen/arch/arm/mm.c | 24 +++++++++++++++---------
1 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
index bd7baaf..4d4556b 100644
--- a/xen/arch/arm/mm.c
+++ b/xen/arch/arm/mm.c
@@ -431,34 +431,40 @@ void __init setup_frametable_mappings(paddr_t ps, paddr_t
pe)
* start has to be 2MB aligned.
* len has to be < EARLY_VMAP_VIRT_END - EARLY_VMAP_VIRT_START.
*/
+static unsigned long early_vmap_start = EARLY_VMAP_VIRT_END;
void* __init early_ioremap(paddr_t start, size_t len, unsigned attributes)
{
- static unsigned long virt_start = EARLY_VMAP_VIRT_END;
paddr_t end = start + len;
+ unsigned long map_start;
len = ((len + SECOND_SIZE - 1) >> SECOND_SHIFT) << SECOND_SHIFT;
- virt_start -= len;
+ early_vmap_start -= len;
ASSERT(!(start & (~SECOND_MASK)));
- ASSERT(!(virt_start & (~SECOND_MASK)));
+ ASSERT(!(early_vmap_start & (~SECOND_MASK)));
/* The range we need to map is too big */
- if ( virt_start >= EARLY_VMAP_VIRT_START )
+ if ( early_vmap_start >= EARLY_VMAP_VIRT_START )
return NULL;
+ map_start = early_vmap_start;
while ( start < end )
{
lpae_t e = mfn_to_xen_entry(start >> PAGE_SHIFT);
e.pt.ai = attributes;
- write_pte(xen_second + second_table_offset(virt_start), e);
+ write_pte(xen_second + second_table_offset(map_start), e);
start += SECOND_SIZE;
- virt_start += SECOND_SIZE;
+ map_start += SECOND_SIZE;
}
- virt_start -= len;
- flush_xen_data_tlb_range_va(virt_start, len);
+ flush_xen_data_tlb_range_va(early_vmap_start, len);
- return (void*)virt_start;
+ return (void*)early_vmap_start;
+}
+
+void *__init arch_vmap_virt_end(void)
+{
+ return (void *)early_vmap_start;
}
enum mg { mg_clear, mg_ro, mg_rw, mg_rx };
--
1.7.2.5
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |