Commit f989fa29 authored by Jonathan Gray's avatar Jonathan Gray Committed by Alex Deucher
Browse files

drm/amd/pm: avoid unaligned access warnings



When building on OpenBSD/arm64 with clang 15, unaligned access
warnings are seen when a union is embedded inside a packed struct.

drm/amd/pm/powerplay/hwmgr/vega20_pptable.h:136:17: error: field
  smcPPTable within 'struct _ATOM_VEGA20_POWERPLAYTABLE' is less aligned
  than 'PPTable_t' and is usually due to
  'struct _ATOM_VEGA20_POWERPLAYTABLE' being packed, which can lead to
   unaligned accesses [-Werror,-Wunaligned-access]
      PPTable_t smcPPTable;
                ^

Make PPTable_t packed to avoid this.

Signed-off-by: default avatarJonathan Gray <jsg@jsg.id.au>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 6e60cba6
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -358,6 +358,7 @@ typedef struct {
  QuadraticInt_t SsCurve;
} DpmDescriptor_t;

#pragma pack(push, 1)
typedef struct {
  uint32_t Version;

@@ -609,6 +610,7 @@ typedef struct {
  uint32_t     MmHubPadding[8];

} PPTable_t;
#pragma pack(pop)

typedef struct {

+2 −0
Original line number Diff line number Diff line
@@ -122,6 +122,7 @@ typedef struct {
  uint16_t Vid;  /* min voltage in SVI2 VID */
} DisplayClockTable_t;

#pragma pack(push, 1)
typedef struct {
  /* PowerTune */
  uint16_t SocketPowerLimit; /* Watts */
@@ -323,6 +324,7 @@ typedef struct {
  uint32_t     MmHubPadding[3]; /* SMU internal use */

} PPTable_t;
#pragma pack(pop)

typedef struct {
  uint16_t MinClock; // This is either DCEFCLK or SOCCLK (in MHz)
+2 −0
Original line number Diff line number Diff line
@@ -245,6 +245,7 @@ typedef struct {
  QuadraticInt_t SsCurve;
} DpmDescriptor_t;

#pragma pack(push, 1)
typedef struct {
  uint32_t Version;

@@ -508,6 +509,7 @@ typedef struct {
  uint32_t     MmHubPadding[7];

} PPTable_t;
#pragma pack(pop)

typedef struct {

+2 −0
Original line number Diff line number Diff line
@@ -464,6 +464,7 @@ typedef struct {
  uint16_t       Padding16;
} DpmDescriptor_t;

#pragma pack(push, 1)
typedef struct {
  uint32_t Version;

@@ -733,6 +734,7 @@ typedef struct {
  uint32_t     MmHubPadding[8]; // SMU internal use

} PPTable_t;
#pragma pack(pop)

typedef struct {
  // Time constant parameters for clock averages in ms
+2 −0
Original line number Diff line number Diff line
@@ -515,6 +515,7 @@ typedef struct {
  uint32_t BoardLevelEnergyAccumulator;  
} OutOfBandMonitor_t;

#pragma pack(push, 1)
typedef struct {
  uint32_t Version;

@@ -814,6 +815,7 @@ typedef struct {
  uint32_t     MmHubPadding[8]; // SMU internal use

} PPTable_t;
#pragma pack(pop)

typedef struct {
  // Time constant parameters for clock averages in ms
Loading