RE: [IA64] Set default page size to 64k

From: Christoph Lameter <clameter_at_sgi.com>
Date: 2007-06-13 04:05:13
On Tue, 12 Jun 2007, Luck, Tony wrote:

> Raising the PAGE_SIZE to 64k does generate a couple of
> new warnings in the build:
> 
> drivers/usb/core/devio.c:632: warning: comparison is always false due to limited range of data type
> fs/fat/inode.c:1227: warning: comparison is always false due to limited range of data type
> 
> Both of these are due to range comparisons of u16 data types
> with PAGE_SIZE.  They both look harmless ... we'll get an
> infinitessimal performance boost from the compiler dropping
> the code, but it is annoying to add these to the (already
> large) list of warnings to ignore.
> 
> Anyone got any cute ideas on how to make these warnings
> go away?

Talk to the powerpc guys? They also support 64k page size.

The obvious solution is to put an (ugly) #ifdef around it:

Index: linux-2.6/drivers/usb/core/devio.c
===================================================================
--- linux-2.6.orig/drivers/usb/core/devio.c	2007-06-12 10:58:57.000000000 -0700
+++ linux-2.6/drivers/usb/core/devio.c	2007-06-12 11:02:19.000000000 -0700
@@ -629,8 +629,14 @@ static int proc_control(struct dev_state
 		return -EFAULT;
 	if ((ret = check_ctrlrecip(ps, ctrl.bRequestType, ctrl.wIndex)))
 		return ret;
+#if PAGE_SIZE < 65536
+	/*
+	 * ctrl.wLength is a 16 bit value that cannot be greater
+	 * than page size if PAGE_SIZE >= 64k.
+	 */
 	if (ctrl.wLength > PAGE_SIZE)
 		return -EINVAL;
+#endif
 	if (!(tbuf = (unsigned char *)__get_free_page(GFP_KERNEL)))
 		return -ENOMEM;
 	tmo = ctrl.timeout;
Index: linux-2.6/fs/fat/inode.c
===================================================================
--- linux-2.6.orig/fs/fat/inode.c	2007-06-12 10:59:53.000000000 -0700
+++ linux-2.6/fs/fat/inode.c	2007-06-12 11:01:17.000000000 -0700
@@ -1223,8 +1223,15 @@ int fat_fill_super(struct super_block *s
 	logical_sector_size =
 		le16_to_cpu(get_unaligned((__le16 *)&b->sector_size));
 	if (!is_power_of_2(logical_sector_size)
-	    || (logical_sector_size < 512)
-	    || (PAGE_CACHE_SIZE < logical_sector_size)) {
+#if PAGE_SIZE < 65536
+	/*
+	 * Logical sector size is a 16 bit value.
+	 * If the page size is 64k or higher then the comparison
+	 * is always true.
+	 */
+	    || (PAGE_CACHE_SIZE < logical_sector_size)
+#endif
+	    || (logical_sector_size < 512)) {
 		if (!silent)
 			printk(KERN_ERR "FAT: bogus logical sector size %u\n",
 			       logical_sector_size);

-
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Received on Wed Jun 13 04:05:37 2007

This archive was generated by hypermail 2.1.8 : 2007-06-13 04:05:56 EST