Applied. Thanks! Alex On Tue, Feb 14, 2023 at 1:58 AM Jonathan Gray <jsg@xxxxxxxxx> wrote: > > 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: Jonathan Gray <jsg@xxxxxxxxx> > --- > drivers/gpu/drm/amd/pm/powerplay/inc/smu11_driver_if.h | 2 ++ > drivers/gpu/drm/amd/pm/powerplay/inc/smu9_driver_if.h | 2 ++ > drivers/gpu/drm/amd/pm/powerplay/inc/vega12/smu9_driver_if.h | 2 ++ > .../gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu11_driver_if_arcturus.h | 2 ++ > .../gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu11_driver_if_navi10.h | 2 ++ > .../amd/pm/swsmu/inc/pmfw_if/smu11_driver_if_sienna_cichlid.h | 2 ++ > .../drm/amd/pm/swsmu/inc/pmfw_if/smu13_driver_if_aldebaran.h | 2 ++ > .../gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu13_driver_if_v13_0_0.h | 2 ++ > .../gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu13_driver_if_v13_0_7.h | 2 ++ > 9 files changed, 18 insertions(+) > > diff --git a/drivers/gpu/drm/amd/pm/powerplay/inc/smu11_driver_if.h b/drivers/gpu/drm/amd/pm/powerplay/inc/smu11_driver_if.h > index fdc6b7a57bc9..c2efc70ef288 100644 > --- a/drivers/gpu/drm/amd/pm/powerplay/inc/smu11_driver_if.h > +++ b/drivers/gpu/drm/amd/pm/powerplay/inc/smu11_driver_if.h > @@ -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 { > > diff --git a/drivers/gpu/drm/amd/pm/powerplay/inc/smu9_driver_if.h b/drivers/gpu/drm/amd/pm/powerplay/inc/smu9_driver_if.h > index 2818c98ff5ca..faae4b918d90 100644 > --- a/drivers/gpu/drm/amd/pm/powerplay/inc/smu9_driver_if.h > +++ b/drivers/gpu/drm/amd/pm/powerplay/inc/smu9_driver_if.h > @@ -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) > diff --git a/drivers/gpu/drm/amd/pm/powerplay/inc/vega12/smu9_driver_if.h b/drivers/gpu/drm/amd/pm/powerplay/inc/vega12/smu9_driver_if.h > index b6ffd08784e7..6456bea5d2d5 100644 > --- a/drivers/gpu/drm/amd/pm/powerplay/inc/vega12/smu9_driver_if.h > +++ b/drivers/gpu/drm/amd/pm/powerplay/inc/vega12/smu9_driver_if.h > @@ -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 { > > diff --git a/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu11_driver_if_arcturus.h b/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu11_driver_if_arcturus.h > index 43d43d6addc0..d518dee18e1b 100644 > --- a/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu11_driver_if_arcturus.h > +++ b/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu11_driver_if_arcturus.h > @@ -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 > diff --git a/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu11_driver_if_navi10.h b/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu11_driver_if_navi10.h > index 04752ade1016..c5c1943fb6a1 100644 > --- a/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu11_driver_if_navi10.h > +++ b/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu11_driver_if_navi10.h > @@ -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 > diff --git a/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu11_driver_if_sienna_cichlid.h b/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu11_driver_if_sienna_cichlid.h > index 351a4af429b3..aa6d29de4002 100644 > --- a/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu11_driver_if_sienna_cichlid.h > +++ b/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu11_driver_if_sienna_cichlid.h > @@ -599,6 +599,7 @@ typedef struct { > uint16_t Fmax; > } UclkDpmChangeRange_t; > > +#pragma pack(push, 1) > typedef struct { > // MAJOR SECTION: SKU PARAMETERS > > @@ -957,6 +958,7 @@ typedef struct { > uint32_t MmHubPadding[8]; // SMU internal use > > } PPTable_t; > +#pragma pack(pop) > > typedef struct { > // MAJOR SECTION: SKU PARAMETERS > diff --git a/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu13_driver_if_aldebaran.h b/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu13_driver_if_aldebaran.h > index 7a6075daa7b2..90200f31ff52 100644 > --- a/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu13_driver_if_aldebaran.h > +++ b/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu13_driver_if_aldebaran.h > @@ -267,6 +267,7 @@ typedef struct { > QuadraticInt_t SsCurve; // Slow-slow curve (GHz->V) > } DpmDescriptor_t; > > +#pragma pack(push, 1) > typedef struct { > uint32_t Version; > > @@ -448,6 +449,7 @@ typedef struct { > uint32_t reserved[14]; > > } PPTable_t; > +#pragma pack(pop) > > typedef struct { > // Time constant parameters for clock averages in ms > diff --git a/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu13_driver_if_v13_0_0.h b/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu13_driver_if_v13_0_0.h > index 4bc7aee4d44f..b686fb68a6e7 100644 > --- a/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu13_driver_if_v13_0_0.h > +++ b/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu13_driver_if_v13_0_0.h > @@ -1347,10 +1347,12 @@ typedef struct { > uint32_t MmHubPadding[8]; > } BoardTable_t; > > +#pragma pack(push, 1) > typedef struct { > SkuTable_t SkuTable; > BoardTable_t BoardTable; > } PPTable_t; > +#pragma pack(pop) > > typedef struct { > // Time constant parameters for clock averages in ms > diff --git a/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu13_driver_if_v13_0_7.h b/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu13_driver_if_v13_0_7.h > index 48a3a3952ceb..4c46a0392451 100644 > --- a/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu13_driver_if_v13_0_7.h > +++ b/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu13_driver_if_v13_0_7.h > @@ -1380,10 +1380,12 @@ typedef struct { > uint32_t MmHubPadding[8]; > } BoardTable_t; > > +#pragma pack(push, 1) > typedef struct { > SkuTable_t SkuTable; > BoardTable_t BoardTable; > } PPTable_t; > +#pragma pack(pop) > > typedef struct { > // Time constant parameters for clock averages in ms > -- > 2.39.1 >