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:
pgpU0D_P1UWux.pgp
Description: PGP signature