Eliminating bounce buffers

Larry Woodman (woodman@missioncriticallinux.com)
Fri, 28 Jan 2000 11:29:29 -0500


This is a multi-part message in MIME format.
--------------2A4674C3BC7BC017DE815626
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

I have a patch for 2.3.40 which eliminates the whole idea of bounce
buffers
and prepare_highmem_swapout()/replace_with_highmem() for big memory
Intel systems. The way it works is rather than copying high memory
pages to and
from low memory pages before scheduling IO, I map highmem pages into
virtual
addresses up in the vmalloc address space (via get_vm_area) and put this
virtual
address in the b_data field of the buffer_head for the duration of the
IO operation.
Once the IO operation completes I unmap the highmem physical address
from
the virtual address so that it can be used by any other IO operation for
a highmem page.
I also changed virt_to_phys() and phys_to_virt() to that it properly
deals with mapped
highmem pages. This all seems to work OK on my 4GB Intel box as long
as the
b_data field of the buffer_head contains a valid address. I notice
there is no more copying
between low and hignmem pages, although I am still testing everything.

This seems to be cleaner than doing IO to lower physical address pages
and copying
to and from highmem pages, or am I missing something here??? There is
still a fair amount of work and cleanup for SMP and non-intel
architectures,
is this worth doing???

Larry Woodman

--------------2A4674C3BC7BC017DE815626
Content-Type: text/x-vcard; charset=us-ascii;
name="woodman.vcf"
Content-Transfer-Encoding: 7bit
Content-Description: Card for Larry Woodman
Content-Disposition: attachment;
filename="woodman.vcf"

begin:vcard
n:Woodman;Larry
x-mozilla-html:TRUE
org:Mission Critical Linux;Kernel
adr:;;;;;;
version:2.1
email;internet:woodman@missioncriticallinux.com
title:Operating System Development Engineer
x-mozilla-cpt:;0
fn:Larry Woodman
end:vcard

--------------2A4674C3BC7BC017DE815626--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/