Re: [PATCH 2/2] ata: ahci (gcc13): use U suffix for enum definitions

From: Damien Le Moal
Date: Tue Nov 08 2022 - 00:02:15 EST


On 10/31/22 20:43, Jiri Slaby (SUSE) wrote:
> gcc13 now uses the type of the enum for all its members [1]. Given the
> ata enum defines its members using both unsigned and signed ints, the
> type of the enum is promoted to long.
>
> Make sure the rest of the members are unsigned ints using U suffix.
>
> The error in question is for example this:
> drivers/block/mtip32xx/mtip32xx.c:722:25: error: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'long in'
>
> [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36113
>
> Cc: Martin Liska <mliska@xxxxxxx>
> Cc: Damien Le Moal <damien.lemoal@xxxxxxxxxxxxxxxxxx>
> Cc: linux-ide@xxxxxxxxxxxxxxx
> Signed-off-by: Jiri Slaby (SUSE) <jirislaby@xxxxxxxxxx>
> ---
> drivers/ata/ahci.h | 14 +++++++-------
> 1 file changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/ata/ahci.h b/drivers/ata/ahci.h
> index 94b5c81f08dd..14eb6e97f6f7 100644
> --- a/drivers/ata/ahci.h
> +++ b/drivers/ata/ahci.h
> @@ -39,7 +39,7 @@
> enum {
> AHCI_MAX_PORTS = 32,
> AHCI_MAX_SG = 168, /* hardware max is 64K */
> - AHCI_DMA_BOUNDARY = 0xffffffff,
> + AHCI_DMA_BOUNDARY = ~0U,

UINT_MAX ?

> AHCI_MAX_CMDS = 32,
> AHCI_CMD_SZ = 32,
> AHCI_CMD_SLOT_SZ = AHCI_MAX_CMDS * AHCI_CMD_SZ,
> @@ -178,10 +178,10 @@ enum {
> PORT_CMD_SPIN_UP = BIT(1), /* Spin up device */
> PORT_CMD_START = BIT(0), /* Enable port DMA engine */
>
> - PORT_CMD_ICC_MASK = (0xf << 28), /* i/f ICC state mask */
> - PORT_CMD_ICC_ACTIVE = (0x1 << 28), /* Put i/f in active state */
> - PORT_CMD_ICC_PARTIAL = (0x2 << 28), /* Put i/f in partial state */
> - PORT_CMD_ICC_SLUMBER = (0x6 << 28), /* Put i/f in slumber state */
> + PORT_CMD_ICC_MASK = (0xfU << 28), /* i/f ICC state mask */
> + PORT_CMD_ICC_ACTIVE = (0x1U << 28), /* Put i/f in active state */
> + PORT_CMD_ICC_PARTIAL = (0x2U << 28), /* Put i/f in partial state */
> + PORT_CMD_ICC_SLUMBER = (0x6U << 28), /* Put i/f in slumber state */
>
> /* PORT_CMD capabilities mask */
> PORT_CMD_CAP = PORT_CMD_HPCP | PORT_CMD_MPSP |
> @@ -191,14 +191,14 @@ enum {
> PORT_FBS_DWE_OFFSET = 16, /* FBS device with error offset */
> PORT_FBS_ADO_OFFSET = 12, /* FBS active dev optimization offset */
> PORT_FBS_DEV_OFFSET = 8, /* FBS device to issue offset */
> - PORT_FBS_DEV_MASK = (0xf << PORT_FBS_DEV_OFFSET), /* FBS.DEV */
> + PORT_FBS_DEV_MASK = (0xfU << PORT_FBS_DEV_OFFSET), /* FBS.DEV */
> PORT_FBS_SDE = BIT(2), /* FBS single device error */
> PORT_FBS_DEC = BIT(1), /* FBS device error clear */
> PORT_FBS_EN = BIT(0), /* Enable FBS */
>
> /* PORT_DEVSLP bits */
> PORT_DEVSLP_DM_OFFSET = 25, /* DITO multiplier offset */
> - PORT_DEVSLP_DM_MASK = (0xf << 25), /* DITO multiplier mask */
> + PORT_DEVSLP_DM_MASK = (0xfU << 25), /* DITO multiplier mask */
> PORT_DEVSLP_DITO_OFFSET = 15, /* DITO offset */
> PORT_DEVSLP_MDAT_OFFSET = 10, /* Minimum assertion time */
> PORT_DEVSLP_DETO_OFFSET = 2, /* DevSlp exit timeout */

--
Damien Le Moal
Western Digital Research