Re: [PATCH] ata: libahci: Make host flags unsigned long

From: Thierry Reding
Date: Fri Aug 01 2014 - 10:01:34 EST


On Fri, Aug 01, 2014 at 08:52:06AM -0400, Tejun Heo wrote:
> On Fri, Aug 01, 2014 at 01:39:41PM +0200, Thierry Reding wrote:
> > From: Thierry Reding <treding@xxxxxxxxxx>
> >
> > Commit 725c7b570fda (ata: libahci_platform: move port_map parameters
> > into the AHCI structure) moves flags into the struct ahci_host_priv's
> > .flags field, which causes compiler warnings on 64-bit builds when that
> > value is cast to a void * pointer. Rather than adding additional casting
> > to silence the warning, turn the flags field into a unsigned long.
>
> Unless we're talking about a lot of places where such casting is
> necessary, I'd actually prefer to keep the flags uint and use explicit
> casting. How many are we talking about?

I think there's just one occurrence. Turning the flags into an unsigned
long seems like a much more natural thing to do, though Besides it being
what many other parts of the kernel use for flags it gives us natural
alignment within struct ahci_host_priv. The structure currently looks
like this:

struct ahci_host_priv {
unsigned int flags;
u32 force_port_map;
u32 mask_port_map;

void __iomem *mmio;
...
};

On 64-bit that unsigned int will be 32-bit and cause additional padding
to be inserted between mask_port_map and mmio to align the 64-bit
pointer.

It's not like the alignment is that *hugely* important, but it's still,
you know, pretty.

Thierry

Attachment: pgpgCJjbWdyBd.pgp
Description: PGP signature