On 12/1/22 12:43, Arnd Bergmann wrote: > From: Arnd Bergmann <arnd@xxxxxxxx> > > gcc-13 slightly changes the type of constant expressions that are deifined defined > in an enum, which triggers a compile time sanity check in libata: > > linux/drivers/ata/libahci.c: In function 'ahci_led_store': > linux/include/linux/compiler_types.h:357:45: error: call to '__compiletime_assert_302' declared with attribute error: BUILD_BUG_ON failed: sizeof(_s) > sizeof(long) > 357 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) > > The new behavior is that sizeof() returns the same value for the > constant as it does for the enum type, which is generally more sensible > and consistent. > > The problem in libata is that it contains a single enum definition for > lots of unrelated constants, some of which are large positive (unsigned) > integers like 0xffffffff, while others like (1<<31) are interpreted as > negative integers, and this forces the enum type to become 64 bit wide > even though most constants would still fit into a signed 32-bit 'int'. > > Fix this by changing the entire enum definition to use BIT(x) in place > of (1<<x), which results in all values being seen as 'unsigned' and > fitting into an unsigned 32-bit type. > > Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107917 > Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107405 > Reported-by: Luis Machado <luis.machado@xxxxxxx> > Cc: linux-ide@xxxxxxxxxxxxxxx > Cc: Damien Le Moal <damien.lemoal@xxxxxxxxxxxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> > --- > Luis, I don't have gcc-13 installed on the machine I used for > creating this patch, can you give this a spin and see if it > addresses the build failure? > --- > drivers/ata/ahci.h | 234 ++++++++++++++++++++++----------------------- > 1 file changed, 117 insertions(+), 117 deletions(-) What #include <linux/bits.h> ? or is it just done indirectly? thanks. -- ~Randy