Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6

* 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6:
[S390] net: provide architecture specific NET_SKB_PAD
[S390] atomic: use inline asm
[S390] correct ipl parameter block safe guard
[S390] atomic: use ACCESS_ONCE() for atomic_read()
[S390] dasd: correct device table

+23 -11
+3 -2
arch/s390/boot/compressed/misc.c
··· 133 133 unsigned long output_addr; 134 134 unsigned char *output; 135 135 136 - check_ipl_parmblock((void *) 0, (unsigned long) output + SZ__bss_start); 136 + output_addr = ((unsigned long) &_end + HEAP_SIZE + 4095UL) & -4096UL; 137 + check_ipl_parmblock((void *) 0, output_addr + SZ__bss_start); 137 138 memset(&_bss, 0, &_ebss - &_bss); 138 139 free_mem_ptr = (unsigned long)&_end; 139 140 free_mem_end_ptr = free_mem_ptr + HEAP_SIZE; 140 - output = (unsigned char *) ((free_mem_end_ptr + 4095UL) & -4096UL); 141 + output = (unsigned char *) output_addr; 141 142 142 143 #ifdef CONFIG_BLK_DEV_INITRD 143 144 /*
+18 -8
arch/s390/include/asm/atomic.h
··· 36 36 37 37 static inline int atomic_read(const atomic_t *v) 38 38 { 39 - barrier(); 40 - return v->counter; 39 + int c; 40 + 41 + asm volatile( 42 + " l %0,%1\n" 43 + : "=d" (c) : "Q" (v->counter)); 44 + return c; 41 45 } 42 46 43 47 static inline void atomic_set(atomic_t *v, int i) 44 48 { 45 - v->counter = i; 46 - barrier(); 49 + asm volatile( 50 + " st %1,%0\n" 51 + : "=Q" (v->counter) : "d" (i)); 47 52 } 48 53 49 54 static inline int atomic_add_return(int i, atomic_t *v) ··· 133 128 134 129 static inline long long atomic64_read(const atomic64_t *v) 135 130 { 136 - barrier(); 137 - return v->counter; 131 + long long c; 132 + 133 + asm volatile( 134 + " lg %0,%1\n" 135 + : "=d" (c) : "Q" (v->counter)); 136 + return c; 138 137 } 139 138 140 139 static inline void atomic64_set(atomic64_t *v, long long i) 141 140 { 142 - v->counter = i; 143 - barrier(); 141 + asm volatile( 142 + " stg %1,%0\n" 143 + : "=Q" (v->counter) : "d" (i)); 144 144 } 145 145 146 146 static inline long long atomic64_add_return(long long i, atomic64_t *v)
+1
arch/s390/include/asm/cache.h
··· 13 13 14 14 #define L1_CACHE_BYTES 256 15 15 #define L1_CACHE_SHIFT 8 16 + #define NET_SKB_PAD 32 16 17 17 18 #define __read_mostly __attribute__((__section__(".data..read_mostly"))) 18 19
+1 -1
drivers/s390/block/dasd_eckd.c
··· 72 72 static struct ccw_device_id dasd_eckd_ids[] = { 73 73 { CCW_DEVICE_DEVTYPE (0x3990, 0, 0x3390, 0), .driver_info = 0x1}, 74 74 { CCW_DEVICE_DEVTYPE (0x2105, 0, 0x3390, 0), .driver_info = 0x2}, 75 - { CCW_DEVICE_DEVTYPE (0x3880, 0, 0x3390, 0), .driver_info = 0x3}, 75 + { CCW_DEVICE_DEVTYPE (0x3880, 0, 0x3380, 0), .driver_info = 0x3}, 76 76 { CCW_DEVICE_DEVTYPE (0x3990, 0, 0x3380, 0), .driver_info = 0x4}, 77 77 { CCW_DEVICE_DEVTYPE (0x2105, 0, 0x3380, 0), .driver_info = 0x5}, 78 78 { CCW_DEVICE_DEVTYPE (0x9343, 0, 0x9345, 0), .driver_info = 0x6},