From: Ofir Bitton <[email protected]>

Because the device CPU compiler aligns structures to 8 bytes,
struct cpucp_info has an alignment issue as some parts
in the structure are not aligned to 8 bytes.
It is preferred that we explicitly insert placeholders inside
the structure to avoid confusion

in order to validate this scenario, we printed both pointers:

__u8 cpucp_version[VERSION_MAX_LEN]; (0xffff899c67ed4cbc)
__le64 dram_size;                    (0xffff899c67ed4d40)

we see difference of 132 bytes although the first array
is only 128 bytes long, Meaning compiler added a 4 byte padding.

Signed-off-by: Ofir Bitton <[email protected]>
Reviewed-by: Oded Gabbay <[email protected]>
Signed-off-by: Oded Gabbay <[email protected]>
---
 drivers/misc/habanalabs/include/common/cpucp_if.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/misc/habanalabs/include/common/cpucp_if.h 
b/drivers/misc/habanalabs/include/common/cpucp_if.h
index 1e8480e978e2..dcde440427b4 100644
--- a/drivers/misc/habanalabs/include/common/cpucp_if.h
+++ b/drivers/misc/habanalabs/include/common/cpucp_if.h
@@ -410,6 +410,7 @@ struct cpucp_info {
        __u8 fuse_version[VERSION_MAX_LEN];
        __u8 thermal_version[VERSION_MAX_LEN];
        __u8 cpucp_version[VERSION_MAX_LEN];
+       __le32 reserved2;
        __le64 dram_size;
        char card_name[CARD_NAME_MAX_LEN];
 };
-- 
2.17.1

Reply via email to