[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] x86: deal with gcc12 release build issues
commit 9723507daf2120131410c91980d4e4d9b0d0aa90 Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Tue Jul 19 08:37:29 2022 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Tue Jul 19 08:37:29 2022 +0200 x86: deal with gcc12 release build issues While a number of issues we previously had with pre-release gcc12 were fixed in the final release, we continue to have one issue (with multiple instances) when doing release builds (i.e. at higher optimization levels): The compiler takes issue with subtracting (always 1 in our case) from artifical labels (expressed as array) marking the end of certain regions. This isn't an unreasonable position to take. Simply hide the "array-ness" by casting to an integer type. To keep things looking consistently, apply the same cast also on the respective expressions dealing with the starting addresses. (Note how efi_arch_memory_setup()'s l2_table_offset() invocations avoid a similar issue by already having the necessary casts.) In is_xen_fixed_mfn() further switch from __pa() to virt_to_maddr() to better match the left sides of the <= operators. Reported-by: Charles Arnold <carnold@xxxxxxxx> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- xen/arch/x86/efi/efi-boot.h | 6 +++--- xen/arch/x86/include/asm/mm.h | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h index 6e65b569b0..836e8c2ba1 100644 --- a/xen/arch/x86/efi/efi-boot.h +++ b/xen/arch/x86/efi/efi-boot.h @@ -677,10 +677,10 @@ static void __init efi_arch_memory_setup(void) * appropriate l2 slots to map. */ #define l2_4G_offset(a) \ - (((UINTN)(a) >> L2_PAGETABLE_SHIFT) & (4 * L2_PAGETABLE_ENTRIES - 1)) + (((a) >> L2_PAGETABLE_SHIFT) & (4 * L2_PAGETABLE_ENTRIES - 1)) - for ( i = l2_4G_offset(_start); - i <= l2_4G_offset(_end - 1); ++i ) + for ( i = l2_4G_offset((UINTN)_start); + i <= l2_4G_offset((UINTN)_end - 1); ++i ) { l2_pgentry_t pte = l2e_from_paddr(i << L2_PAGETABLE_SHIFT, __PAGE_HYPERVISOR | _PAGE_PSE); diff --git a/xen/arch/x86/include/asm/mm.h b/xen/arch/x86/include/asm/mm.h index 07b59c982b..0fc826de46 100644 --- a/xen/arch/x86/include/asm/mm.h +++ b/xen/arch/x86/include/asm/mm.h @@ -309,8 +309,8 @@ struct page_info #define is_xen_heap_mfn(mfn) \ (mfn_valid(mfn) && is_xen_heap_page(mfn_to_page(mfn))) #define is_xen_fixed_mfn(mfn) \ - (((mfn_to_maddr(mfn)) >= __pa(_stext)) && \ - ((mfn_to_maddr(mfn)) <= __pa(__2M_rwdata_end - 1))) + (((mfn_to_maddr(mfn)) >= virt_to_maddr((unsigned long)_stext)) && \ + ((mfn_to_maddr(mfn)) <= virt_to_maddr((unsigned long)__2M_rwdata_end - 1))) #define PRtype_info "016lx"/* should only be used for printk's */ -- generated by git-patchbot for /home/xen/git/xen.git#staging
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |