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,