From: Martin Schwidefsky s390 core changes: - Make use of the ipte instruction for ptep_set_access_flags - Fix atomic64_inc_and_test primitive as well. - Fix return type handler for __copy_in_user. - New default configuration. Signed-off-by: Andrew Morton --- 25-akpm/arch/s390/defconfig | 9 +++------ 25-akpm/include/asm-s390/atomic.h | 2 +- 25-akpm/include/asm-s390/pgtable.h | 4 ++++ 25-akpm/include/asm-s390/uaccess.h | 4 ++-- 4 files changed, 10 insertions(+), 9 deletions(-) diff -puN arch/s390/defconfig~s390-1-4-core-s390 arch/s390/defconfig --- 25/arch/s390/defconfig~s390-1-4-core-s390 Wed Jun 2 14:34:28 2004 +++ 25-akpm/arch/s390/defconfig Wed Jun 2 14:34:28 2004 @@ -28,6 +28,7 @@ CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set CONFIG_FUTEX=y CONFIG_EPOLL=y CONFIG_IOSCHED_NOOP=y @@ -112,7 +113,6 @@ CONFIG_CHR_DEV_SG=y # Some SCSI devices (e.g. CD jukebox) support multiple LUNs # CONFIG_SCSI_MULTI_LUN=y -# CONFIG_SCSI_REPORT_LUNS is not set CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_LOGGING=y @@ -126,6 +126,7 @@ CONFIG_SCSI_LOGGING=y # SCSI low-level drivers # # CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_DPT_I2O is not set # CONFIG_SCSI_SATA is not set # CONFIG_SCSI_EATA_PIO is not set # CONFIG_SCSI_DEBUG is not set @@ -310,11 +311,7 @@ CONFIG_NET_ETHERNET=y # CONFIG_MII is not set # -# Ethernet (1000 Mbit) -# - -# -# Ethernet (10000 Mbit) +# Gigabit Ethernet (1000/10000 Mbit) # # diff -puN include/asm-s390/atomic.h~s390-1-4-core-s390 include/asm-s390/atomic.h --- 25/include/asm-s390/atomic.h~s390-1-4-core-s390 Wed Jun 2 14:34:28 2004 +++ 25-akpm/include/asm-s390/atomic.h Wed Jun 2 14:34:28 2004 @@ -145,7 +145,7 @@ static __inline__ long long atomic64_inc } static __inline__ long long atomic64_inc_and_test(volatile atomic64_t * v) { - return __CSG_LOOP(v, 1, "agr") != 0; + return __CSG_LOOP(v, 1, "agr") == 0; } static __inline__ void atomic64_dec(volatile atomic64_t * v) { diff -puN include/asm-s390/pgtable.h~s390-1-4-core-s390 include/asm-s390/pgtable.h --- 25/include/asm-s390/pgtable.h~s390-1-4-core-s390 Wed Jun 2 14:34:28 2004 +++ 25-akpm/include/asm-s390/pgtable.h Wed Jun 2 14:34:28 2004 @@ -587,6 +587,9 @@ ptep_establish(struct vm_area_struct *vm set_pte(ptep, entry); } +#define ptep_set_access_flags(__vma, __address, __ptep, __entry, __dirty) \ + ptep_establish(__vma, __address, __ptep, __entry) + /* * Test and clear dirty bit in storage key. * We can't clear the changed bit atomically. This is a potential @@ -784,6 +787,7 @@ extern inline pte_t mk_swap_pte(unsigned #define pgtable_cache_init() do { } while (0) #define __HAVE_ARCH_PTEP_ESTABLISH +#define __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG #define __HAVE_ARCH_PTEP_CLEAR_YOUNG_FLUSH #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY diff -puN include/asm-s390/uaccess.h~s390-1-4-core-s390 include/asm-s390/uaccess.h --- 25/include/asm-s390/uaccess.h~s390-1-4-core-s390 Wed Jun 2 14:34:28 2004 +++ 25-akpm/include/asm-s390/uaccess.h Wed Jun 2 14:34:28 2004 @@ -326,12 +326,12 @@ copy_from_user(void *to, const void __us return n; } -extern long __copy_in_user_asm(const void *from, long n, void *to); +extern unsigned long __copy_in_user_asm(const void *from, long n, void *to); static inline unsigned long __copy_in_user(void __user *to, const void __user *from, unsigned long n) { - __copy_in_user_asm(from, n, to); + return __copy_in_user_asm(from, n, to); } static inline unsigned long _