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

[xen staging] device-tree: bootfdt: Fix build issue when CONFIG_PHYS_ADDR_T_32=y



commit d59699e63d239ffde4fb9364b2e8dd20b7acd1ac
Author:     Michal Orzel <michal.orzel@xxxxxxx>
AuthorDate: Tue Jan 28 10:40:01 2025 +0100
Commit:     Michal Orzel <michal.orzel@xxxxxxx>
CommitDate: Wed Jan 29 08:34:33 2025 +0100

    device-tree: bootfdt: Fix build issue when CONFIG_PHYS_ADDR_T_32=y
    
    On Arm32, when CONFIG_PHYS_ADDR_T_32 is set, a build failure is observed:
    common/device-tree/bootfdt.c: In function 'build_assertions':
    ./include/xen/macros.h:47:31: error: static assertion failed: 
"!(alignof(struct membanks) != 8)"
       47 | #define BUILD_BUG_ON(cond) ({ _Static_assert(!(cond), "!(" #cond 
")"); })
          |                               ^~~~~~~~~~~~~~
    common/device-tree/bootfdt.c:31:5: note: in expansion of macro 
'BUILD_BUG_ON'
       31 |     BUILD_BUG_ON(alignof(struct membanks) != 8);
    
    When CONFIG_PHYS_ADDR_T_32 is set, paddr_t is defined as unsigned long,
    therefore the struct membanks alignment is 4B and not 8B. The check is
    there to ensure the struct membanks and struct membank, which is a
    member of the former, are equally aligned. Therefore modify the check to
    compare alignments obtained via alignof not to rely on hardcoded
    values.
    
    Fixes: 2209c1e35b47 ("xen/arm: Introduce a generic way to access memory 
bank structures")
    Signed-off-by: Michal Orzel <michal.orzel@xxxxxxx>
    Release-Acked-by: Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx>
    Tested-by: Luca Fancellu <luca.fancellu@xxxxxxx>
    Reviewed-by: Julien Grall <julien@xxxxxxx>
---
 xen/common/device-tree/bootfdt.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/common/device-tree/bootfdt.c b/xen/common/device-tree/bootfdt.c
index 47386d4fff..529c91e603 100644
--- a/xen/common/device-tree/bootfdt.c
+++ b/xen/common/device-tree/bootfdt.c
@@ -27,8 +27,8 @@ static void __init __maybe_unused build_assertions(void)
      */
     BUILD_BUG_ON((offsetof(struct membanks, bank) !=
                  offsetof(struct meminfo, bank)));
-    /* Ensure "struct membanks" is 8-byte aligned */
-    BUILD_BUG_ON(alignof(struct membanks) != 8);
+    /* Ensure "struct membanks" and "struct membank" are equally aligned */
+    BUILD_BUG_ON(alignof(struct membanks) != alignof(struct membank));
 }
 
 static bool __init device_tree_node_is_available(const void *fdt, int node)
--
generated by git-patchbot for /home/xen/git/xen.git#staging



 


Rackspace

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