diff options
author | Timothy Pearson <tpearson@raptorengineeringinc.com> | 2016-04-09 19:19:01 -0500 |
---|---|---|
committer | Timothy Pearson <tpearson@raptorengineeringinc.com> | 2016-04-11 18:19:13 +0200 |
commit | 186b9de95d8dfd6a944879915729ea75b7f3448a (patch) | |
tree | 9b76da06f823fa8aa00c4746a51d6d8bb5da859f /src/northbridge/amd/amdmct/mct_ddr3/mwlc_d.h | |
parent | 4fa154e87ccc12bea0b5096fb46afd0d23f9db75 (diff) |
and/nb/mct_ddr3: Pack all structures passed to ramstage and set alignment
Two of the MCT data structures passed as substructures to ramstage were
not packed, and additionally no alignment was specified. On at least
SP5100-based platforms, specifying packed with no alignment caused boot
failure dependent on the exact compiled binary layout (LPC hang).
Specifying the alignment and packing the remaining structures appears to
have resolved the remaining LPC hang issues on the KGPE-D16. Note that
packing the remaining structures alone was not sufficient to eliminate
the hang, however removing the packed attribute entirely (during debugging)
did resolve the hang at the expense of potential problems in ramstage.
Change-Id: If3a7509ed438870d4d05caaaaa091e1c47bf9b97
Signed-off-by: Timothy Pearson <tpearson@raptorengineeringinc.com>
Reviewed-on: https://review.coreboot.org/14303
Reviewed-by: Martin Roth <martinroth@google.com>
Tested-by: build bot (Jenkins)
Tested-by: Raptor Engineering Automated Test Stand <noreply@raptorengineeringinc.com>
Diffstat (limited to 'src/northbridge/amd/amdmct/mct_ddr3/mwlc_d.h')
-rw-r--r-- | src/northbridge/amd/amdmct/mct_ddr3/mwlc_d.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/northbridge/amd/amdmct/mct_ddr3/mwlc_d.h b/src/northbridge/amd/amdmct/mct_ddr3/mwlc_d.h index 2bd39f9f4d..28359a13c0 100644 --- a/src/northbridge/amd/amdmct/mct_ddr3/mwlc_d.h +++ b/src/northbridge/amd/amdmct/mct_ddr3/mwlc_d.h @@ -106,7 +106,7 @@ typedef struct _sMCTStruct { void (*AgesaDelay)(u32 delayval); /* IBV defined Delay Function */ -} sMCTStruct; +} __attribute__((packed, aligned(4))) sMCTStruct; /* DCT 0 and DCT 1 Data structure */ typedef struct _sDCTStruct @@ -161,6 +161,6 @@ typedef struct _sDCTStruct u8 DimmRanks[MAX_TOTAL_DIMMS]; /* Total Number of Ranks(per Dimm) */ uint64_t LogicalCPUID; u8 WLPass; -} sDCTStruct; +} __attribute__((packed, aligned(4))) sDCTStruct; #endif |