diff mbox

mm/ARM: fix ARMs __ffs() to conform to avoid warning with NO_BOOTMEM

Message ID 1386981486-3173-1-git-send-email-santosh.shilimkar@ti.com (mailing list archive)
State New, archived
Headers show

Commit Message

Santosh Shilimkar Dec. 14, 2013, 12:38 a.m. UTC
Building ARM with NO_BOOTMEM generates below warning.

mm/nobootmem.c: In function _____free_pages_memory___:
mm/nobootmem.c:88:11: warning: comparison of distinct pointer types lacks a cast

	order = min(MAX_ORDER - 1UL, __ffs(start));

ARM's __ffs() differs from other architectures in that it ends up being
an int, whereas almost everyone else is unsigned long.

So fix ARMs __ffs() to conform to other architectures. Suggested by
Russell King <linux@arm.linux.org.uk>

Some more details in below thread -
	https://lkml.org/lkml/2013/12/9/807

Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Russell King <linux@arm.linux.org.uk>
Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
---
 arch/arm/include/asm/bitops.h |   23 +++++++++++++++++++----
 1 file changed, 19 insertions(+), 4 deletions(-)

Comments

Santosh Shilimkar Dec. 20, 2013, 10:39 p.m. UTC | #1
Russell,

On Friday 13 December 2013 07:38 PM, Santosh Shilimkar wrote:
> Building ARM with NO_BOOTMEM generates below warning.
> 
> mm/nobootmem.c: In function _____free_pages_memory___:
> mm/nobootmem.c:88:11: warning: comparison of distinct pointer types lacks a cast
> 
> 	order = min(MAX_ORDER - 1UL, __ffs(start));
> 
> ARM's __ffs() differs from other architectures in that it ends up being
> an int, whereas almost everyone else is unsigned long.
> 
> So fix ARMs __ffs() to conform to other architectures. Suggested by
> Russell King <linux@arm.linux.org.uk>
> 
> Some more details in below thread -
> 	https://lkml.org/lkml/2013/12/9/807
> 
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Russell King <linux@arm.linux.org.uk>
> Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
> ---
Is this patch inline with what we discussed off-list ?
If you ack it, it can go into the Andrews tree to kill that one last
warning with the memblock series. Thanks


>  arch/arm/include/asm/bitops.h |   23 +++++++++++++++++++----
>  1 file changed, 19 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/arm/include/asm/bitops.h b/arch/arm/include/asm/bitops.h
> index e691ec9..5f41d81 100644
> --- a/arch/arm/include/asm/bitops.h
> +++ b/arch/arm/include/asm/bitops.h
> @@ -270,10 +270,25 @@ static inline int fls(int x)
>  	return ret;
>  }
>  
> -#define __fls(x) (fls(x) - 1)
> -#define ffs(x) ({ unsigned long __t = (x); fls(__t & -__t); })
> -#define __ffs(x) (ffs(x) - 1)
> -#define ffz(x) __ffs( ~(x) )
> +static inline unsigned long __fls(unsigned long x)
> +{
> +	return fls(x) - 1;
> +}
> +
> +static inline int ffs(int x)
> +{
> +	return fls(x & -x);
> +}
> +
> +static inline unsigned long __ffs(unsigned long x)
> +{
> +	return ffs(x) - 1;
> +}
> +
> +static inline unsigned long ffz(unsigned long x)
> +{
> +	return __ffs(~x);
> +}
>  
>  #endif
>  
>
Russell King - ARM Linux Dec. 20, 2013, 10:55 p.m. UTC | #2
On Fri, Dec 20, 2013 at 05:39:25PM -0500, Santosh Shilimkar wrote:
> Russell,
> 
> On Friday 13 December 2013 07:38 PM, Santosh Shilimkar wrote:
> > Building ARM with NO_BOOTMEM generates below warning.
> > 
> > mm/nobootmem.c: In function _____free_pages_memory___:
> > mm/nobootmem.c:88:11: warning: comparison of distinct pointer types lacks a cast
> > 
> > 	order = min(MAX_ORDER - 1UL, __ffs(start));
> > 
> > ARM's __ffs() differs from other architectures in that it ends up being
> > an int, whereas almost everyone else is unsigned long.
> > 
> > So fix ARMs __ffs() to conform to other architectures. Suggested by
> > Russell King <linux@arm.linux.org.uk>
> > 
> > Some more details in below thread -
> > 	https://lkml.org/lkml/2013/12/9/807
> > 
> > Cc: Andrew Morton <akpm@linux-foundation.org>
> > Cc: Russell King <linux@arm.linux.org.uk>
> > Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
> > ---
> Is this patch inline with what we discussed off-list ?

It is.

> If you ack it, it can go into the Andrews tree to kill that one last
> warning with the memblock series. Thanks

Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>

Please note that I'm rather busy at the moment dealing with a complete
change in networking here (I've not read much in the way of email over
the last couple of days).  Also note that my Internet connection is
highly unstable and experiencing a large amount of packet loss due to
this wonderful thing called "FTTC"... which when working properly only
gives me around 5Mbps.
Santosh Shilimkar Dec. 20, 2013, 11:05 p.m. UTC | #3
On Friday 20 December 2013 05:55 PM, Russell King - ARM Linux wrote:
> On Fri, Dec 20, 2013 at 05:39:25PM -0500, Santosh Shilimkar wrote:
>> Russell,
>>
>> On Friday 13 December 2013 07:38 PM, Santosh Shilimkar wrote:
>>> Building ARM with NO_BOOTMEM generates below warning.
>>>
>>> mm/nobootmem.c: In function _____free_pages_memory___:
>>> mm/nobootmem.c:88:11: warning: comparison of distinct pointer types lacks a cast
>>>
>>> 	order = min(MAX_ORDER - 1UL, __ffs(start));
>>>
>>> ARM's __ffs() differs from other architectures in that it ends up being
>>> an int, whereas almost everyone else is unsigned long.
>>>
>>> So fix ARMs __ffs() to conform to other architectures. Suggested by
>>> Russell King <linux@arm.linux.org.uk>
>>>
>>> Some more details in below thread -
>>> 	https://lkml.org/lkml/2013/12/9/807
>>>
>>> Cc: Andrew Morton <akpm@linux-foundation.org>
>>> Cc: Russell King <linux@arm.linux.org.uk>
>>> Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
>>> ---
>> Is this patch inline with what we discussed off-list ?
> 
> It is.
> 
>> If you ack it, it can go into the Andrews tree to kill that one last
>> warning with the memblock series. Thanks
> 
> Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
>
Great !!
 
Andrew,
Can you please pick the $subject patch as well in your
mm tree ? Thanks

regards,
Santosh
diff mbox

Patch

diff --git a/arch/arm/include/asm/bitops.h b/arch/arm/include/asm/bitops.h
index e691ec9..5f41d81 100644
--- a/arch/arm/include/asm/bitops.h
+++ b/arch/arm/include/asm/bitops.h
@@ -270,10 +270,25 @@  static inline int fls(int x)
 	return ret;
 }
 
-#define __fls(x) (fls(x) - 1)
-#define ffs(x) ({ unsigned long __t = (x); fls(__t & -__t); })
-#define __ffs(x) (ffs(x) - 1)
-#define ffz(x) __ffs( ~(x) )
+static inline unsigned long __fls(unsigned long x)
+{
+	return fls(x) - 1;
+}
+
+static inline int ffs(int x)
+{
+	return fls(x & -x);
+}
+
+static inline unsigned long __ffs(unsigned long x)
+{
+	return ffs(x) - 1;
+}
+
+static inline unsigned long ffz(unsigned long x)
+{
+	return __ffs(~x);
+}
 
 #endif