Binary files highmem-ref/ID and highmem/ID differ
diff -urN highmem-ref/include/asm-i386/kmap_types.h highmem/include/asm-i386/kmap_types.h
--- highmem-ref/include/asm-i386/kmap_types.h	Tue Jul 10 20:46:22 2001
+++ highmem/include/asm-i386/kmap_types.h	Tue Jul 10 19:12:14 2001
@@ -3,7 +3,6 @@
 
 enum km_type {
 	KM_BOUNCE_READ,
-	KM_BOUNCE_WRITE,
 	KM_SKB_DATA,
 	KM_SKB_DATA_SOFTIRQ,
 	KM_TYPE_NR
diff -urN highmem-ref/include/asm-ppc/kmap_types.h highmem/include/asm-ppc/kmap_types.h
--- highmem-ref/include/asm-ppc/kmap_types.h	Tue Jul 10 20:46:22 2001
+++ highmem/include/asm-ppc/kmap_types.h	Tue Jul 10 19:12:17 2001
@@ -7,7 +7,6 @@
 
 enum km_type {
 	KM_BOUNCE_READ,
-	KM_BOUNCE_WRITE,
 	KM_SKB_DATA,
 	KM_SKB_DATA_SOFTIRQ,
 	KM_TYPE_NR
diff -urN highmem-ref/include/asm-sparc/kmap_types.h highmem/include/asm-sparc/kmap_types.h
--- highmem-ref/include/asm-sparc/kmap_types.h	Tue Jul 10 20:46:22 2001
+++ highmem/include/asm-sparc/kmap_types.h	Tue Jul 10 19:12:20 2001
@@ -3,7 +3,6 @@
 
 enum km_type {
 	KM_BOUNCE_READ,
-	KM_BOUNCE_WRITE,
 	KM_SKB_DATA,
 	KM_SKB_DATA_SOFTIRQ,
 	KM_TYPE_NR
diff -urN highmem-ref/mm/highmem.c highmem/mm/highmem.c
--- highmem-ref/mm/highmem.c	Tue Jul 10 20:46:22 2001
+++ highmem/mm/highmem.c	Tue Jul 10 20:45:01 2001
@@ -182,20 +182,16 @@
 {
 	struct page *p_from;
 	char *vfrom;
-	unsigned long flags;
 
 	p_from = from->b_page;
 
 	/*
-	 * Since this can be executed from IRQ context, reentrance
-	 * on the same CPU must be avoided:
+	 * This cannot be executed from atomic context because
+	 * create_bounces can schedule.
 	 */
-	__save_flags(flags);
-	__cli();
-	vfrom = kmap_atomic(p_from, KM_BOUNCE_WRITE);
+	vfrom = kmap(p_from);
 	memcpy(to->b_data, vfrom + bh_offset(from), to->b_size);
-	kunmap_atomic(vfrom, KM_BOUNCE_WRITE);
-	__restore_flags(flags);
+	kunmap(p_from);
 }
 
 static inline void copy_to_high_bh_irq (struct buffer_head *to,