[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[xen staging-4.15] x86: deal with gcc12 release build issues



commit a095c6cde8a717325cc31bb393c547cad5e16e35
Author:     Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Wed Jul 27 09:30:24 2022 +0200
Commit:     Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Wed Jul 27 09:30:24 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>
    master commit: 9723507daf2120131410c91980d4e4d9b0d0aa90
    master date: 2022-07-19 08:37:29 +0200
---
 xen/arch/x86/efi/efi-boot.h | 6 +++---
 xen/include/asm-x86/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 2541ba1f32..84fd779314 100644
--- a/xen/arch/x86/efi/efi-boot.h
+++ b/xen/arch/x86/efi/efi-boot.h
@@ -624,10 +624,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/include/asm-x86/mm.h b/xen/include/asm-x86/mm.h
index 5c19b71eca..71dd28f126 100644
--- a/xen/include/asm-x86/mm.h
+++ b/xen/include/asm-x86/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-4.15



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.