Re: [Xen-devel] [PATCH 18/27] xen/arm: page: Prefix memory types with MT_
On 08/23/2017 12:41 PM, Andre Przywara wrote: Hi, Hi Andre, On 14/08/17 15:24, Julien Grall wrote: >> diff --git a/xen/include/asm-arm/page.h b/xen/include/asm-arm/page.h index 660e1779c5..d7a048b64d 100644 --- a/xen/include/asm-arm/page.h +++ b/xen/include/asm-arm/page.h @@ -25,17 +25,17 @@ * LPAE Memory region attributes. Indexed by the AttrIndex bits of a * LPAE entry; the 8-bit fields are packed little-endian into MAIR0 and MAIR1. * - * aiencoding - * UNCACHED 000 -- Strongly Ordered - * BUFFERABLE001 0100 0100 -- Non-Cacheable - * WRITETHROUGH 010 1010 1010 -- Write-through - * WRITEBACK 011 1110 1110 -- Write-back - * DEV_SHARED100 0100 -- Device - * ??101 - * reserved 110 - * WRITEALLOC111 -- Write-back write-allocate + *aiencoding + * MT_UNCACHED 000 -- Strongly Ordered + * MT_BUFFERABLE001 0100 0100 -- Non-Cacheable + * MT_WRITETHROUGH 010 1010 1010 -- Write-through + * MT_WRITEBACK 011 1110 1110 -- Write-back + * MT_DEV_SHARED100 0100 -- Device + * ?? 101 + * reserved 110 + * MT_WRITEALLOC111 -- Write-back write-allocate * - * DEV_WC001 (== BUFFERABLE) + * MT_DEV_WC001 (== BUFFERABLE) It's just a comment, but for consistency this should be MT_BUFFERABLE here as well, I guess. Apart from that nit the rest looks correct. Hmm, I dropped DEV_WC in patch #17 but forgot to remove it from the comment. I will drop it in that patch and ... Reviewed-by: Andre Przywara ... keep you reviewed-by here and the #17 if you are happy with it. Cheers, -- Julien Grall ___ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel
Re: [Xen-devel] [PATCH 18/27] xen/arm: page: Prefix memory types with MT_
Hi, On 14/08/17 15:24, Julien Grall wrote: > This will avoid confusion in the code when using them. > > Signed-off-by: Julien Grall > --- > xen/arch/arm/kernel.c | 2 +- > xen/arch/arm/mm.c | 28 +-- > xen/arch/arm/platforms/vexpress.c | 2 +- > xen/drivers/video/arm_hdlcd.c | 2 +- > xen/include/asm-arm/page.h| 40 > +++ > 5 files changed, 37 insertions(+), 37 deletions(-) > > diff --git a/xen/arch/arm/kernel.c b/xen/arch/arm/kernel.c > index 7403ec0c0e..9c183f96da 100644 > --- a/xen/arch/arm/kernel.c > +++ b/xen/arch/arm/kernel.c > @@ -54,7 +54,7 @@ void copy_from_paddr(void *dst, paddr_t paddr, unsigned > long len) > s = paddr & (PAGE_SIZE-1); > l = min(PAGE_SIZE - s, len); > > -set_fixmap(FIXMAP_MISC, maddr_to_mfn(paddr), BUFFERABLE); > +set_fixmap(FIXMAP_MISC, maddr_to_mfn(paddr), MT_BUFFERABLE); > memcpy(dst, src + s, l); > clean_dcache_va_range(dst, l); > > diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c > index 349ac58ffe..45974846a9 100644 > --- a/xen/arch/arm/mm.c > +++ b/xen/arch/arm/mm.c > @@ -290,7 +290,7 @@ static inline lpae_t mfn_to_xen_entry(mfn_t mfn, unsigned > attr) > > switch ( attr ) > { > -case BUFFERABLE: > +case MT_BUFFERABLE: > /* > * ARM ARM: Overlaying the shareability attribute (DDI > * 0406C.b B3-1376 to 1377) > @@ -305,8 +305,8 @@ static inline lpae_t mfn_to_xen_entry(mfn_t mfn, unsigned > attr) > */ > e.pt.sh = LPAE_SH_OUTER; > break; > -case UNCACHED: > -case DEV_SHARED: > +case MT_UNCACHED: > +case MT_DEV_SHARED: > /* > * Shareability is ignored for non-Normal memory, Outer is as > * good as anything. > @@ -369,7 +369,7 @@ static void __init create_mappings(lpae_t *second, > > count = nr_mfns / LPAE_ENTRIES; > p = second + second_linear_offset(virt_offset); > -pte = mfn_to_xen_entry(_mfn(base_mfn), WRITEALLOC); > +pte = mfn_to_xen_entry(_mfn(base_mfn), MT_WRITEALLOC); > if ( granularity == 16 * LPAE_ENTRIES ) > pte.pt.contig = 1; /* These maps are in 16-entry contiguous chunks. > */ > for ( i = 0; i < count; i++ ) > @@ -422,7 +422,7 @@ void *map_domain_page(mfn_t mfn) > else if ( map[slot].pt.avail == 0 ) > { > /* Commandeer this 2MB slot */ > -pte = mfn_to_xen_entry(_mfn(slot_mfn), WRITEALLOC); > +pte = mfn_to_xen_entry(_mfn(slot_mfn), MT_WRITEALLOC); > pte.pt.avail = 1; > write_pte(map + slot, pte); > break; > @@ -543,7 +543,7 @@ static inline lpae_t pte_of_xenaddr(vaddr_t va) > { > paddr_t ma = va + phys_offset; > > -return mfn_to_xen_entry(maddr_to_mfn(ma), WRITEALLOC); > +return mfn_to_xen_entry(maddr_to_mfn(ma), MT_WRITEALLOC); > } > > /* Map the FDT in the early boot page table */ > @@ -652,7 +652,7 @@ void __init setup_pagetables(unsigned long > boot_phys_offset, paddr_t xen_paddr) > /* Initialise xen second level entries ... */ > /* ... Xen's text etc */ > > -pte = mfn_to_xen_entry(maddr_to_mfn(xen_paddr), WRITEALLOC); > +pte = mfn_to_xen_entry(maddr_to_mfn(xen_paddr), MT_WRITEALLOC); > pte.pt.xn = 0;/* Contains our text mapping! */ > xen_second[second_table_offset(XEN_VIRT_START)] = pte; > > @@ -669,7 +669,7 @@ void __init setup_pagetables(unsigned long > boot_phys_offset, paddr_t xen_paddr) > > /* ... Boot Misc area for xen relocation */ > dest_va = BOOT_RELOC_VIRT_START; > -pte = mfn_to_xen_entry(maddr_to_mfn(xen_paddr), WRITEALLOC); > +pte = mfn_to_xen_entry(maddr_to_mfn(xen_paddr), MT_WRITEALLOC); > /* Map the destination in xen_second. */ > xen_second[second_table_offset(dest_va)] = pte; > /* Map the destination in boot_second. */ > @@ -700,7 +700,7 @@ void __init setup_pagetables(unsigned long > boot_phys_offset, paddr_t xen_paddr) > unsigned long va = XEN_VIRT_START + (i << PAGE_SHIFT); > if ( !is_kernel(va) ) > break; > -pte = mfn_to_xen_entry(mfn, WRITEALLOC); > +pte = mfn_to_xen_entry(mfn, MT_WRITEALLOC); > pte.pt.table = 1; /* 4k mappings always have this bit set */ > if ( is_kernel_text(va) || is_kernel_inittext(va) ) > { > @@ -771,7 +771,7 @@ int init_secondary_pagetables(int cpu) > for ( i = 0; i < DOMHEAP_SECOND_PAGES; i++ ) > { > pte = mfn_to_xen_entry(virt_to_mfn(domheap+i*LPAE_ENTRIES), > - WRITEALLOC); > + MT_WRITEALLOC); > pte.pt.table = 1; > > write_pte(&first[first_table_offset(DOMHEAP_VIRT_START+i*FIRST_SIZE)], pte); > } > @@ -869,13 +869,13 @@ void __init setup_xenheap_mappings(unsigned long > base_mfn, > mfn_t first_mfn = alloc_boot_pages(1, 1
[Xen-devel] [PATCH 18/27] xen/arm: page: Prefix memory types with MT_
This will avoid confusion in the code when using them. Signed-off-by: Julien Grall --- xen/arch/arm/kernel.c | 2 +- xen/arch/arm/mm.c | 28 +-- xen/arch/arm/platforms/vexpress.c | 2 +- xen/drivers/video/arm_hdlcd.c | 2 +- xen/include/asm-arm/page.h| 40 +++ 5 files changed, 37 insertions(+), 37 deletions(-) diff --git a/xen/arch/arm/kernel.c b/xen/arch/arm/kernel.c index 7403ec0c0e..9c183f96da 100644 --- a/xen/arch/arm/kernel.c +++ b/xen/arch/arm/kernel.c @@ -54,7 +54,7 @@ void copy_from_paddr(void *dst, paddr_t paddr, unsigned long len) s = paddr & (PAGE_SIZE-1); l = min(PAGE_SIZE - s, len); -set_fixmap(FIXMAP_MISC, maddr_to_mfn(paddr), BUFFERABLE); +set_fixmap(FIXMAP_MISC, maddr_to_mfn(paddr), MT_BUFFERABLE); memcpy(dst, src + s, l); clean_dcache_va_range(dst, l); diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c index 349ac58ffe..45974846a9 100644 --- a/xen/arch/arm/mm.c +++ b/xen/arch/arm/mm.c @@ -290,7 +290,7 @@ static inline lpae_t mfn_to_xen_entry(mfn_t mfn, unsigned attr) switch ( attr ) { -case BUFFERABLE: +case MT_BUFFERABLE: /* * ARM ARM: Overlaying the shareability attribute (DDI * 0406C.b B3-1376 to 1377) @@ -305,8 +305,8 @@ static inline lpae_t mfn_to_xen_entry(mfn_t mfn, unsigned attr) */ e.pt.sh = LPAE_SH_OUTER; break; -case UNCACHED: -case DEV_SHARED: +case MT_UNCACHED: +case MT_DEV_SHARED: /* * Shareability is ignored for non-Normal memory, Outer is as * good as anything. @@ -369,7 +369,7 @@ static void __init create_mappings(lpae_t *second, count = nr_mfns / LPAE_ENTRIES; p = second + second_linear_offset(virt_offset); -pte = mfn_to_xen_entry(_mfn(base_mfn), WRITEALLOC); +pte = mfn_to_xen_entry(_mfn(base_mfn), MT_WRITEALLOC); if ( granularity == 16 * LPAE_ENTRIES ) pte.pt.contig = 1; /* These maps are in 16-entry contiguous chunks. */ for ( i = 0; i < count; i++ ) @@ -422,7 +422,7 @@ void *map_domain_page(mfn_t mfn) else if ( map[slot].pt.avail == 0 ) { /* Commandeer this 2MB slot */ -pte = mfn_to_xen_entry(_mfn(slot_mfn), WRITEALLOC); +pte = mfn_to_xen_entry(_mfn(slot_mfn), MT_WRITEALLOC); pte.pt.avail = 1; write_pte(map + slot, pte); break; @@ -543,7 +543,7 @@ static inline lpae_t pte_of_xenaddr(vaddr_t va) { paddr_t ma = va + phys_offset; -return mfn_to_xen_entry(maddr_to_mfn(ma), WRITEALLOC); +return mfn_to_xen_entry(maddr_to_mfn(ma), MT_WRITEALLOC); } /* Map the FDT in the early boot page table */ @@ -652,7 +652,7 @@ void __init setup_pagetables(unsigned long boot_phys_offset, paddr_t xen_paddr) /* Initialise xen second level entries ... */ /* ... Xen's text etc */ -pte = mfn_to_xen_entry(maddr_to_mfn(xen_paddr), WRITEALLOC); +pte = mfn_to_xen_entry(maddr_to_mfn(xen_paddr), MT_WRITEALLOC); pte.pt.xn = 0;/* Contains our text mapping! */ xen_second[second_table_offset(XEN_VIRT_START)] = pte; @@ -669,7 +669,7 @@ void __init setup_pagetables(unsigned long boot_phys_offset, paddr_t xen_paddr) /* ... Boot Misc area for xen relocation */ dest_va = BOOT_RELOC_VIRT_START; -pte = mfn_to_xen_entry(maddr_to_mfn(xen_paddr), WRITEALLOC); +pte = mfn_to_xen_entry(maddr_to_mfn(xen_paddr), MT_WRITEALLOC); /* Map the destination in xen_second. */ xen_second[second_table_offset(dest_va)] = pte; /* Map the destination in boot_second. */ @@ -700,7 +700,7 @@ void __init setup_pagetables(unsigned long boot_phys_offset, paddr_t xen_paddr) unsigned long va = XEN_VIRT_START + (i << PAGE_SHIFT); if ( !is_kernel(va) ) break; -pte = mfn_to_xen_entry(mfn, WRITEALLOC); +pte = mfn_to_xen_entry(mfn, MT_WRITEALLOC); pte.pt.table = 1; /* 4k mappings always have this bit set */ if ( is_kernel_text(va) || is_kernel_inittext(va) ) { @@ -771,7 +771,7 @@ int init_secondary_pagetables(int cpu) for ( i = 0; i < DOMHEAP_SECOND_PAGES; i++ ) { pte = mfn_to_xen_entry(virt_to_mfn(domheap+i*LPAE_ENTRIES), - WRITEALLOC); + MT_WRITEALLOC); pte.pt.table = 1; write_pte(&first[first_table_offset(DOMHEAP_VIRT_START+i*FIRST_SIZE)], pte); } @@ -869,13 +869,13 @@ void __init setup_xenheap_mappings(unsigned long base_mfn, mfn_t first_mfn = alloc_boot_pages(1, 1); clear_page(mfn_to_virt(first_mfn)); -pte = mfn_to_xen_entry(first_mfn, WRITEALLOC); +pte = mfn_to_xen_entry(first_mfn, MT_WRITEALLOC); pte.pt.table = 1; write_pte(p, pte); first = mfn_to_virt(first_mfn);