Patchwork IDE: Save a call to PageHighMem()

login
register
mail settings
Submitter Jean Delvare
Date June 23, 2009, 8:12 a.m.
Message ID <20090623101239.2f510604@hyperion.delvare>
Download mbox | patch
Permalink /patch/29032/
State Accepted
Delegated to: David Miller
Headers show

Comments

Jean Delvare - June 23, 2009, 8:12 a.m.
PageHighMem() isn't cheap so avoid calling it twice on the same page.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Cc: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
---
 drivers/ide/ide-taskfile.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
Bartlomiej Zolnierkiewicz - June 23, 2009, 9:48 a.m.
On Tuesday 23 June 2009 10:12:39 Jean Delvare wrote:
> PageHighMem() isn't cheap so avoid calling it twice on the same page.
> 
> Signed-off-by: Jean Delvare <khali@linux-fr.org>
> Cc: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>

Acked-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>

PS Please send IDE patches to Dave in the future, thanks.
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jean Delvare - June 23, 2009, 10 a.m.
Hi Bartlomiej,

On Tue, 23 Jun 2009 11:48:31 +0200, Bartlomiej Zolnierkiewicz wrote:
> On Tuesday 23 June 2009 10:12:39 Jean Delvare wrote:
> > PageHighMem() isn't cheap so avoid calling it twice on the same page.
> > 
> > Signed-off-by: Jean Delvare <khali@linux-fr.org>
> > Cc: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
> 
> Acked-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>

Thanks.

> PS Please send IDE patches to Dave in the future, thanks.

I followed what MAINTAINERS says, and will keep doing so in the future.
If the information stored there is outdated, please update it.
David Miller - June 23, 2009, 10:06 a.m.
From: Jean Delvare <khali@linux-fr.org>
Date: Tue, 23 Jun 2009 12:00:18 +0200

> Hi Bartlomiej,
> 
> On Tue, 23 Jun 2009 11:48:31 +0200, Bartlomiej Zolnierkiewicz wrote:
>> PS Please send IDE patches to Dave in the future, thanks.
> 
> I followed what MAINTAINERS says, and will keep doing so in the future.
> If the information stored there is outdated, please update it.

We did, just Linus hasn't taken my pull yet.  Will poke him about
it.
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Bartlomiej Zolnierkiewicz - June 23, 2009, 10:11 a.m.
On Tuesday 23 June 2009 12:00:18 Jean Delvare wrote:
> Hi Bartlomiej,
> 
> On Tue, 23 Jun 2009 11:48:31 +0200, Bartlomiej Zolnierkiewicz wrote:
> > On Tuesday 23 June 2009 10:12:39 Jean Delvare wrote:
> > > PageHighMem() isn't cheap so avoid calling it twice on the same page.
> > > 
> > > Signed-off-by: Jean Delvare <khali@linux-fr.org>
> > > Cc: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
> > 
> > Acked-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
> 
> Thanks.
> 
> > PS Please send IDE patches to Dave in the future, thanks.
>
> I followed what MAINTAINERS says, and will keep doing so in the future.

Yeah, I know.. ;)

> If the information stored there is outdated, please update it.

Dave has already sent a patch to update it but it is not applied yet.
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

--- linux-2.6.31-pre.orig/drivers/ide/ide-taskfile.c	2009-06-23 09:01:10.000000000 +0200
+++ linux-2.6.31-pre/drivers/ide/ide-taskfile.c	2009-06-23 09:50:33.000000000 +0200
@@ -236,6 +236,7 @@  void ide_pio_bytes(ide_drive_t *drive, s
 
 	while (len) {
 		unsigned nr_bytes = min(len, cursg->length - cmd->cursg_ofs);
+		int page_is_high;
 
 		if (nr_bytes > PAGE_SIZE)
 			nr_bytes = PAGE_SIZE;
@@ -247,7 +248,8 @@  void ide_pio_bytes(ide_drive_t *drive, s
 		page = nth_page(page, (offset >> PAGE_SHIFT));
 		offset %= PAGE_SIZE;
 
-		if (PageHighMem(page))
+		page_is_high = PageHighMem(page);
+		if (page_is_high)
 			local_irq_save(flags);
 
 		buf = kmap_atomic(page, KM_BIO_SRC_IRQ) + offset;
@@ -268,7 +270,7 @@  void ide_pio_bytes(ide_drive_t *drive, s
 
 		kunmap_atomic(buf, KM_BIO_SRC_IRQ);
 
-		if (PageHighMem(page))
+		if (page_is_high)
 			local_irq_restore(flags);
 
 		len -= nr_bytes;