adjust the alignment in struct sal_processor_static_info
PATCH 1/1 adjust the alignment in struct sal_processor_static_info
Hi all,
Struct ia64_fpreg(asm-ia64/fpu.h) is forced to align 16-byte. An array of this struct is in struct sal_processor_static_info (asm-ia64/sal.h), however, we can't touch the array correctly because of the forced alignment.
Usually, SAL log record contains:
Record Header
- sizeof(sal_log_record_header_t) = 40
Section Header
- sizeof(sal_log_sec_hdr_t) = 24
Section Body(Processor Error Section)
- sizeof(before mod_error_info) = 32
- sizeof(sal_log_mod_error_info_t) = 48
- sizeof(sal_cpuid_info) = 48
- sizeof(sal_log_mod_error_info_t) = 48
- sizeof(sal_processor_static_info_t) = 5256
(offset of struct ia64_fpreg fr[0]
in sal_processor_static_info_t) = 3208
So, the total offset of fr[0] from beginning of the record is:
40 + 24 + 32 + 48*n + 48 + 3208
This number can't be divided by 16. fr[0] never fit to the 16-byte boundary because of the remainder.
This trivial patch will fix this issue.
Thanks,
H.Seto
include/asm-ia64/sal.h +1 -1
@@ -364,7 +364,7 @@u64 cr[128 ];u64 ar[128 ];u64 rr[8 ]; -struct ia64_fpreg fr[128 ]; +struct ia64_fpreg __attribute__ ((packed)) fr[128 ]; } sal_processor_static_info_t;struct sal_cpuid_info {