Forráskód Böngészése

Merge tag 'microblaze-4.13-rc1' of git://git.monstr.eu/linux-2.6-microblaze

Pull microblaze updates from Michal Simek:

 - timer fix

 - use simplified macro in dma.c

 - wire-up new syscall

 - remove asp-generic wrappers

 - fix MMU table handling

 - defconfig updates

 - low-level entry.S changes

* tag 'microblaze-4.13-rc1' of git://git.monstr.eu/linux-2.6-microblaze:
  microblaze: Fix MSR flags when returning from exception
  microblaze: Separate GP registers from MSR handling
  microblaze: Enabling CONFIG_BRIDGE in mmu_defconfig
  microblaze: Enabling CONFIGS related to MTD
  microblaze: Update defconfigs
  microblaze: mm: Flush TLB to ensure correct mapping when higmem ON
  microblaze: remove asm-generic wrapper headers
  microblaze: wire up statx syscall
  microblaze: Set ->min_delta_ticks and ->max_delta_ticks for timer
  microblaze: use sg_phys()
Linus Torvalds 8 éve
szülő
commit
058e88d37f
54 módosított fájl, 90 hozzáadás és 98 törlés
  1. 7 9
      arch/microblaze/configs/mmu_defconfig
  2. 3 14
      arch/microblaze/configs/nommu_defconfig
  3. 44 1
      arch/microblaze/include/asm/Kbuild
  4. 0 1
      arch/microblaze/include/asm/bitops.h
  5. 0 1
      arch/microblaze/include/asm/bug.h
  6. 0 1
      arch/microblaze/include/asm/bugs.h
  7. 0 1
      arch/microblaze/include/asm/div64.h
  8. 0 1
      arch/microblaze/include/asm/emergency-restart.h
  9. 0 1
      arch/microblaze/include/asm/fb.h
  10. 0 1
      arch/microblaze/include/asm/hardirq.h
  11. 0 1
      arch/microblaze/include/asm/irq_regs.h
  12. 0 1
      arch/microblaze/include/asm/kdebug.h
  13. 0 6
      arch/microblaze/include/asm/kmap_types.h
  14. 0 1
      arch/microblaze/include/asm/linkage.h
  15. 0 1
      arch/microblaze/include/asm/local.h
  16. 0 1
      arch/microblaze/include/asm/local64.h
  17. 0 1
      arch/microblaze/include/asm/parport.h
  18. 0 1
      arch/microblaze/include/asm/percpu.h
  19. 0 1
      arch/microblaze/include/asm/serial.h
  20. 0 1
      arch/microblaze/include/asm/shmparam.h
  21. 0 1
      arch/microblaze/include/asm/topology.h
  22. 0 1
      arch/microblaze/include/asm/ucontext.h
  23. 1 1
      arch/microblaze/include/asm/unistd.h
  24. 0 1
      arch/microblaze/include/asm/vga.h
  25. 0 1
      arch/microblaze/include/asm/xor.h
  26. 0 1
      arch/microblaze/include/uapi/asm/bitsperlong.h
  27. 0 1
      arch/microblaze/include/uapi/asm/errno.h
  28. 0 1
      arch/microblaze/include/uapi/asm/fcntl.h
  29. 0 1
      arch/microblaze/include/uapi/asm/ioctl.h
  30. 0 1
      arch/microblaze/include/uapi/asm/ioctls.h
  31. 0 1
      arch/microblaze/include/uapi/asm/ipcbuf.h
  32. 0 1
      arch/microblaze/include/uapi/asm/kvm_para.h
  33. 0 1
      arch/microblaze/include/uapi/asm/mman.h
  34. 0 1
      arch/microblaze/include/uapi/asm/msgbuf.h
  35. 0 1
      arch/microblaze/include/uapi/asm/param.h
  36. 0 1
      arch/microblaze/include/uapi/asm/poll.h
  37. 0 1
      arch/microblaze/include/uapi/asm/resource.h
  38. 0 1
      arch/microblaze/include/uapi/asm/sembuf.h
  39. 0 1
      arch/microblaze/include/uapi/asm/shmbuf.h
  40. 0 1
      arch/microblaze/include/uapi/asm/siginfo.h
  41. 0 1
      arch/microblaze/include/uapi/asm/signal.h
  42. 0 1
      arch/microblaze/include/uapi/asm/socket.h
  43. 0 1
      arch/microblaze/include/uapi/asm/sockios.h
  44. 0 1
      arch/microblaze/include/uapi/asm/stat.h
  45. 0 1
      arch/microblaze/include/uapi/asm/statfs.h
  46. 0 1
      arch/microblaze/include/uapi/asm/swab.h
  47. 0 1
      arch/microblaze/include/uapi/asm/termbits.h
  48. 0 1
      arch/microblaze/include/uapi/asm/termios.h
  49. 1 0
      arch/microblaze/include/uapi/asm/unistd.h
  50. 1 2
      arch/microblaze/kernel/dma.c
  51. 19 9
      arch/microblaze/kernel/entry.S
  52. 1 0
      arch/microblaze/kernel/syscall_table.S
  53. 2 0
      arch/microblaze/kernel/timer.c
  54. 11 13
      arch/microblaze/mm/highmem.c

+ 7 - 9
arch/microblaze/configs/mmu_defconfig

@@ -1,8 +1,6 @@
 CONFIG_SYSVIPC=y
 CONFIG_POSIX_MQUEUE=y
-CONFIG_FHANDLE=y
 CONFIG_AUDIT=y
-CONFIG_AUDIT_LOGINUID_IMMUTABLE=y
 CONFIG_IKCONFIG=y
 CONFIG_IKCONFIG_PROC=y
 CONFIG_SYSFS_DEPRECATED=y
@@ -33,10 +31,12 @@ CONFIG_NET=y
 CONFIG_PACKET=y
 CONFIG_UNIX=y
 CONFIG_INET=y
-# CONFIG_INET_LRO is not set
 # CONFIG_IPV6 is not set
+CONFIG_BRIDGE=m
 CONFIG_MTD=y
-CONFIG_PROC_DEVICETREE=y
+CONFIG_MTD_CFI=y
+CONFIG_MTD_CFI_INTELEXT=y
+CONFIG_MTD_CFI_AMDSTD=y
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_SIZE=8192
 CONFIG_NETDEVICES=y
@@ -47,9 +47,9 @@ CONFIG_XILINX_LL_TEMAC=y
 # CONFIG_VT is not set
 CONFIG_SERIAL_8250=y
 CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_OF_PLATFORM=y
 CONFIG_SERIAL_UARTLITE=y
 CONFIG_SERIAL_UARTLITE_CONSOLE=y
-CONFIG_SERIAL_OF_PLATFORM=y
 # CONFIG_HW_RANDOM is not set
 CONFIG_XILINX_HWICAP=y
 CONFIG_I2C=y
@@ -66,7 +66,6 @@ CONFIG_FB=y
 CONFIG_FB_XILINX=y
 # CONFIG_USB_SUPPORT is not set
 CONFIG_UIO=y
-CONFIG_UIO_PDRV=y
 CONFIG_UIO_PDRV_GENIRQ=y
 CONFIG_UIO_DMEM_GENIRQ=y
 CONFIG_EXT2_FS=y
@@ -77,14 +76,13 @@ CONFIG_NFS_FS=y
 CONFIG_CIFS=y
 CONFIG_CIFS_STATS=y
 CONFIG_CIFS_STATS2=y
-CONFIG_DETECT_HUNG_TASK=y
+CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_SLAB=y
+CONFIG_DETECT_HUNG_TASK=y
 CONFIG_DEBUG_SPINLOCK=y
-CONFIG_DEBUG_INFO=y
 CONFIG_KGDB=y
 CONFIG_KGDB_TESTS=y
 CONFIG_KGDB_KDB=y
 CONFIG_EARLY_PRINTK=y
 CONFIG_KEYS=y
 CONFIG_ENCRYPTED_KEYS=y
-# CONFIG_CRYPTO_ANSI_CPRNG is not set

+ 3 - 14
arch/microblaze/configs/nommu_defconfig

@@ -1,9 +1,6 @@
-CONFIG_EXPERIMENTAL=y
 CONFIG_SYSVIPC=y
 CONFIG_POSIX_MQUEUE=y
-CONFIG_FHANDLE=y
 CONFIG_AUDIT=y
-CONFIG_AUDIT_LOGINUID_IMMUTABLE=y
 CONFIG_BSD_PROCESS_ACCT=y
 CONFIG_BSD_PROCESS_ACCT_V3=y
 CONFIG_IKCONFIG=y
@@ -34,18 +31,15 @@ CONFIG_NET=y
 CONFIG_PACKET=y
 CONFIG_UNIX=y
 CONFIG_INET=y
-# CONFIG_INET_LRO is not set
 # CONFIG_IPV6 is not set
 CONFIG_MTD=y
 CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_MTD_CHAR=y
 CONFIG_MTD_BLOCK=y
 CONFIG_MTD_CFI=y
 CONFIG_MTD_CFI_INTELEXT=y
 CONFIG_MTD_CFI_AMDSTD=y
 CONFIG_MTD_RAM=y
 CONFIG_MTD_UCLINUX=y
-CONFIG_PROC_DEVICETREE=y
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_SIZE=8192
 CONFIG_NETDEVICES=y
@@ -56,9 +50,9 @@ CONFIG_XILINX_LL_TEMAC=y
 # CONFIG_VT is not set
 CONFIG_SERIAL_8250=y
 CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_OF_PLATFORM=y
 CONFIG_SERIAL_UARTLITE=y
 CONFIG_SERIAL_UARTLITE_CONSOLE=y
-CONFIG_SERIAL_OF_PLATFORM=y
 # CONFIG_HW_RANDOM is not set
 CONFIG_XILINX_HWICAP=y
 CONFIG_I2C=y
@@ -74,10 +68,6 @@ CONFIG_XILINX_WATCHDOG=y
 CONFIG_FB=y
 CONFIG_FB_XILINX=y
 # CONFIG_USB_SUPPORT is not set
-CONFIG_UIO=y
-CONFIG_UIO_PDRV=y
-CONFIG_UIO_PDRV_GENIRQ=y
-CONFIG_UIO_DMEM_GENIRQ=y
 CONFIG_EXT2_FS=y
 # CONFIG_DNOTIFY is not set
 CONFIG_CRAMFS=y
@@ -85,10 +75,10 @@ CONFIG_ROMFS_FS=y
 CONFIG_NFS_FS=y
 CONFIG_NFS_V3_ACL=y
 CONFIG_NLS=y
-CONFIG_DETECT_HUNG_TASK=y
+CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_SLAB=y
+CONFIG_DETECT_HUNG_TASK=y
 CONFIG_DEBUG_SPINLOCK=y
-CONFIG_DEBUG_INFO=y
 CONFIG_EARLY_PRINTK=y
 CONFIG_KEYS=y
 CONFIG_ENCRYPTED_KEYS=y
@@ -97,4 +87,3 @@ CONFIG_CRYPTO_MD4=y
 CONFIG_CRYPTO_MD5=y
 CONFIG_CRYPTO_ARC4=y
 CONFIG_CRYPTO_DES=y
-# CONFIG_CRYPTO_ANSI_CPRNG is not set

+ 44 - 1
arch/microblaze/include/asm/Kbuild

@@ -1,14 +1,57 @@
 
 generic-y += barrier.h
+generic-y += bitops.h
+generic-y += bitsperlong.h
+generic-y += bug.h
+generic-y += bugs.h
 generic-y += clkdev.h
 generic-y += device.h
+generic-y += div64.h
+generic-y += emergency-restart.h
+generic-y += errno.h
 generic-y += exec.h
 generic-y += extable.h
+generic-y += fb.h
+generic-y += fcntl.h
+generic-y += hardirq.h
+generic-y += ioctl.h
+generic-y += ioctls.h
+generic-y += ipcbuf.h
+generic-y += irq_regs.h
 generic-y += irq_work.h
+generic-y += kdebug.h
+generic-y += kmap_types.h
+generic-y += kprobes.h
+generic-y += linkage.h
+generic-y += local.h
+generic-y += local64.h
 generic-y += mcs_spinlock.h
 generic-y += mm-arch-hooks.h
+generic-y += mman.h
+generic-y += msgbuf.h
+generic-y += param.h
+generic-y += parport.h
+generic-y += percpu.h
+generic-y += poll.h
 generic-y += preempt.h
+generic-y += resource.h
+generic-y += sembuf.h
+generic-y += serial.h
+generic-y += shmbuf.h
+generic-y += shmparam.h
+generic-y += siginfo.h
+generic-y += signal.h
+generic-y += socket.h
+generic-y += sockios.h
+generic-y += stat.h
+generic-y += statfs.h
+generic-y += swab.h
 generic-y += syscalls.h
+generic-y += termbits.h
+generic-y += termios.h
+generic-y += topology.h
 generic-y += trace_clock.h
+generic-y += ucontext.h
+generic-y += vga.h
 generic-y += word-at-a-time.h
-generic-y += kprobes.h
+generic-y += xor.h

+ 0 - 1
arch/microblaze/include/asm/bitops.h

@@ -1 +0,0 @@
-#include <asm-generic/bitops.h>

+ 0 - 1
arch/microblaze/include/asm/bug.h

@@ -1 +0,0 @@
-#include <asm-generic/bug.h>

+ 0 - 1
arch/microblaze/include/asm/bugs.h

@@ -1 +0,0 @@
-#include <asm-generic/bugs.h>

+ 0 - 1
arch/microblaze/include/asm/div64.h

@@ -1 +0,0 @@
-#include <asm-generic/div64.h>

+ 0 - 1
arch/microblaze/include/asm/emergency-restart.h

@@ -1 +0,0 @@
-#include <asm-generic/emergency-restart.h>

+ 0 - 1
arch/microblaze/include/asm/fb.h

@@ -1 +0,0 @@
-#include <asm-generic/fb.h>

+ 0 - 1
arch/microblaze/include/asm/hardirq.h

@@ -1 +0,0 @@
-#include <asm-generic/hardirq.h>

+ 0 - 1
arch/microblaze/include/asm/irq_regs.h

@@ -1 +0,0 @@
-#include <asm-generic/irq_regs.h>

+ 0 - 1
arch/microblaze/include/asm/kdebug.h

@@ -1 +0,0 @@
-#include <asm-generic/kdebug.h>

+ 0 - 6
arch/microblaze/include/asm/kmap_types.h

@@ -1,6 +0,0 @@
-#ifndef _ASM_MICROBLAZE_KMAP_TYPES_H
-#define _ASM_MICROBLAZE_KMAP_TYPES_H
-
-#include <asm-generic/kmap_types.h>
-
-#endif /* _ASM_MICROBLAZE_KMAP_TYPES_H */

+ 0 - 1
arch/microblaze/include/asm/linkage.h

@@ -1 +0,0 @@
-#include <asm-generic/linkage.h>

+ 0 - 1
arch/microblaze/include/asm/local.h

@@ -1 +0,0 @@
-#include <asm-generic/local.h>

+ 0 - 1
arch/microblaze/include/asm/local64.h

@@ -1 +0,0 @@
-#include <asm-generic/local64.h>

+ 0 - 1
arch/microblaze/include/asm/parport.h

@@ -1 +0,0 @@
-#include <asm-generic/parport.h>

+ 0 - 1
arch/microblaze/include/asm/percpu.h

@@ -1 +0,0 @@
-#include <asm-generic/percpu.h>

+ 0 - 1
arch/microblaze/include/asm/serial.h

@@ -1 +0,0 @@
-#include <asm-generic/serial.h>

+ 0 - 1
arch/microblaze/include/asm/shmparam.h

@@ -1 +0,0 @@
-#include <asm-generic/shmparam.h>

+ 0 - 1
arch/microblaze/include/asm/topology.h

@@ -1 +0,0 @@
-#include <asm-generic/topology.h>

+ 0 - 1
arch/microblaze/include/asm/ucontext.h

@@ -1 +0,0 @@
-#include <asm-generic/ucontext.h>

+ 1 - 1
arch/microblaze/include/asm/unistd.h

@@ -38,6 +38,6 @@
 
 #endif /* __ASSEMBLY__ */
 
-#define __NR_syscalls         398
+#define __NR_syscalls         399
 
 #endif /* _ASM_MICROBLAZE_UNISTD_H */

+ 0 - 1
arch/microblaze/include/asm/vga.h

@@ -1 +0,0 @@
-#include <asm-generic/vga.h>

+ 0 - 1
arch/microblaze/include/asm/xor.h

@@ -1 +0,0 @@
-#include <asm-generic/xor.h>

+ 0 - 1
arch/microblaze/include/uapi/asm/bitsperlong.h

@@ -1 +0,0 @@
-#include <asm-generic/bitsperlong.h>

+ 0 - 1
arch/microblaze/include/uapi/asm/errno.h

@@ -1 +0,0 @@
-#include <asm-generic/errno.h>

+ 0 - 1
arch/microblaze/include/uapi/asm/fcntl.h

@@ -1 +0,0 @@
-#include <asm-generic/fcntl.h>

+ 0 - 1
arch/microblaze/include/uapi/asm/ioctl.h

@@ -1 +0,0 @@
-#include <asm-generic/ioctl.h>

+ 0 - 1
arch/microblaze/include/uapi/asm/ioctls.h

@@ -1 +0,0 @@
-#include <asm-generic/ioctls.h>

+ 0 - 1
arch/microblaze/include/uapi/asm/ipcbuf.h

@@ -1 +0,0 @@
-#include <asm-generic/ipcbuf.h>

+ 0 - 1
arch/microblaze/include/uapi/asm/kvm_para.h

@@ -1 +0,0 @@
-#include <asm-generic/kvm_para.h>

+ 0 - 1
arch/microblaze/include/uapi/asm/mman.h

@@ -1 +0,0 @@
-#include <asm-generic/mman.h>

+ 0 - 1
arch/microblaze/include/uapi/asm/msgbuf.h

@@ -1 +0,0 @@
-#include <asm-generic/msgbuf.h>

+ 0 - 1
arch/microblaze/include/uapi/asm/param.h

@@ -1 +0,0 @@
-#include <asm-generic/param.h>

+ 0 - 1
arch/microblaze/include/uapi/asm/poll.h

@@ -1 +0,0 @@
-#include <asm-generic/poll.h>

+ 0 - 1
arch/microblaze/include/uapi/asm/resource.h

@@ -1 +0,0 @@
-#include <asm-generic/resource.h>

+ 0 - 1
arch/microblaze/include/uapi/asm/sembuf.h

@@ -1 +0,0 @@
-#include <asm-generic/sembuf.h>

+ 0 - 1
arch/microblaze/include/uapi/asm/shmbuf.h

@@ -1 +0,0 @@
-#include <asm-generic/shmbuf.h>

+ 0 - 1
arch/microblaze/include/uapi/asm/siginfo.h

@@ -1 +0,0 @@
-#include <asm-generic/siginfo.h>

+ 0 - 1
arch/microblaze/include/uapi/asm/signal.h

@@ -1 +0,0 @@
-#include <asm-generic/signal.h>

+ 0 - 1
arch/microblaze/include/uapi/asm/socket.h

@@ -1 +0,0 @@
-#include <asm-generic/socket.h>

+ 0 - 1
arch/microblaze/include/uapi/asm/sockios.h

@@ -1 +0,0 @@
-#include <asm-generic/sockios.h>

+ 0 - 1
arch/microblaze/include/uapi/asm/stat.h

@@ -1 +0,0 @@
-#include <asm-generic/stat.h>

+ 0 - 1
arch/microblaze/include/uapi/asm/statfs.h

@@ -1 +0,0 @@
-#include <asm-generic/statfs.h>

+ 0 - 1
arch/microblaze/include/uapi/asm/swab.h

@@ -1 +0,0 @@
-#include <asm-generic/swab.h>

+ 0 - 1
arch/microblaze/include/uapi/asm/termbits.h

@@ -1 +0,0 @@
-#include <asm-generic/termbits.h>

+ 0 - 1
arch/microblaze/include/uapi/asm/termios.h

@@ -1 +0,0 @@
-#include <asm-generic/termios.h>

+ 1 - 0
arch/microblaze/include/uapi/asm/unistd.h

@@ -413,5 +413,6 @@
 #define __NR_pkey_mprotect	395
 #define __NR_pkey_alloc		396
 #define __NR_pkey_free		397
+#define __NR_statx		398
 
 #endif /* _UAPI_ASM_MICROBLAZE_UNISTD_H */

+ 1 - 2
arch/microblaze/kernel/dma.c

@@ -65,8 +65,7 @@ static int dma_direct_map_sg(struct device *dev, struct scatterlist *sgl,
 		if (attrs & DMA_ATTR_SKIP_CPU_SYNC)
 			continue;
 
-		__dma_sync(page_to_phys(sg_page(sg)) + sg->offset,
-							sg->length, direction);
+		__dma_sync(sg_phys(sg), sg->length, direction);
 	}
 
 	return nents;

+ 19 - 9
arch/microblaze/kernel/entry.S

@@ -208,9 +208,7 @@ syscall_debug_table:
 	mfs	r11, rmsr;		/* save MSR */			\
 	swi	r11, r1, PT_MSR;
 
-#define RESTORE_REGS \
-	lwi	r11, r1, PT_MSR;					\
-	mts	rmsr , r11;						\
+#define RESTORE_REGS_GP \
 	lwi	r2, r1, PT_R2;	/* restore SDA */		\
 	lwi	r3, r1, PT_R3;					\
 	lwi	r4, r1, PT_R4;					\
@@ -242,6 +240,18 @@ syscall_debug_table:
 	lwi	r30, r1, PT_R30;					\
 	lwi	r31, r1, PT_R31;	/* Restore cur task reg */
 
+#define RESTORE_REGS \
+	lwi	r11, r1, PT_MSR;					\
+	mts	rmsr , r11;						\
+	RESTORE_REGS_GP
+
+#define RESTORE_REGS_RTBD \
+	lwi	r11, r1, PT_MSR;					\
+	andni	r11, r11, MSR_EIP;          /* clear EIP */             \
+	ori	r11, r11, MSR_EE | MSR_BIP; /* set EE and BIP */        \
+	mts	rmsr , r11;						\
+	RESTORE_REGS_GP
+
 #define SAVE_STATE	\
 	swi	r1, r0, TOPHYS(PER_CPU(ENTRY_SP)); /* save stack */	\
 	/* See if already in kernel mode.*/				\
@@ -427,7 +437,7 @@ C_ENTRY(ret_from_trap):
 	swi	CURRENT_TASK, r0, PER_CPU(CURRENT_SAVE); /* save current */
 	VM_OFF;
 	tophys(r1,r1);
-	RESTORE_REGS;
+	RESTORE_REGS_RTBD;
 	addik	r1, r1, PT_SIZE		/* Clean up stack space.  */
 	lwi	r1, r1, PT_R1 - PT_SIZE;/* Restore user stack pointer. */
 	bri	6f;
@@ -436,7 +446,7 @@ C_ENTRY(ret_from_trap):
 2:	set_bip;			/*  Ints masked for state restore */
 	VM_OFF;
 	tophys(r1,r1);
-	RESTORE_REGS;
+	RESTORE_REGS_RTBD;
 	addik	r1, r1, PT_SIZE		/* Clean up stack space.  */
 	tovirt(r1,r1);
 6:
@@ -612,7 +622,7 @@ C_ENTRY(ret_from_exc):
 	VM_OFF;
 	tophys(r1,r1);
 
-	RESTORE_REGS;
+	RESTORE_REGS_RTBD;
 	addik	r1, r1, PT_SIZE		/* Clean up stack space.  */
 
 	lwi	r1, r1, PT_R1 - PT_SIZE; /* Restore user stack pointer. */
@@ -621,7 +631,7 @@ C_ENTRY(ret_from_exc):
 2:	set_bip;			/* Ints masked for state restore */
 	VM_OFF;
 	tophys(r1,r1);
-	RESTORE_REGS;
+	RESTORE_REGS_RTBD;
 	addik	r1, r1, PT_SIZE		/* Clean up stack space.  */
 
 	tovirt(r1,r1);
@@ -847,7 +857,7 @@ dbtrap_call: /* Return point for kernel/user entry + 8 because of rtsd r15, 8 */
 	VM_OFF;
 	tophys(r1,r1);
 	/* MS: Restore all regs */
-	RESTORE_REGS
+	RESTORE_REGS_RTBD
 	addik	r1, r1, PT_SIZE	 /* Clean up stack space */
 	lwi	r1, r1, PT_R1 - PT_SIZE; /* Restore user stack pointer */
 DBTRAP_return_user: /* MS: Make global symbol for debugging */
@@ -858,7 +868,7 @@ DBTRAP_return_user: /* MS: Make global symbol for debugging */
 2:	VM_OFF;
 	tophys(r1,r1);
 	/* MS: Restore all regs */
-	RESTORE_REGS
+	RESTORE_REGS_RTBD
 	lwi	r14, r1, PT_R14;
 	lwi	r16, r1, PT_PC;
 	addik	r1, r1, PT_SIZE; /* MS: Clean up stack space */

+ 1 - 0
arch/microblaze/kernel/syscall_table.S

@@ -398,3 +398,4 @@ ENTRY(sys_call_table)
 	.long sys_pkey_mprotect		/* 395 */
 	.long sys_pkey_alloc
 	.long sys_pkey_free
+	.long sys_statx

+ 2 - 0
arch/microblaze/kernel/timer.c

@@ -178,8 +178,10 @@ static __init int xilinx_clockevent_init(void)
 				clockevent_xilinx_timer.shift);
 	clockevent_xilinx_timer.max_delta_ns =
 		clockevent_delta2ns((u32)~0, &clockevent_xilinx_timer);
+	clockevent_xilinx_timer.max_delta_ticks = (u32)~0;
 	clockevent_xilinx_timer.min_delta_ns =
 		clockevent_delta2ns(1, &clockevent_xilinx_timer);
+	clockevent_xilinx_timer.min_delta_ticks = 1;
 	clockevent_xilinx_timer.cpumask = cpumask_of(0);
 	clockevents_register_device(&clockevent_xilinx_timer);
 

+ 11 - 13
arch/microblaze/mm/highmem.c

@@ -60,6 +60,7 @@ void __kunmap_atomic(void *kvaddr)
 {
 	unsigned long vaddr = (unsigned long) kvaddr & PAGE_MASK;
 	int type;
+	unsigned int idx;
 
 	if (vaddr < __fix_to_virt(FIX_KMAP_END)) {
 		pagefault_enable();
@@ -68,21 +69,18 @@ void __kunmap_atomic(void *kvaddr)
 	}
 
 	type = kmap_atomic_idx();
-#ifdef CONFIG_DEBUG_HIGHMEM
-	{
-		unsigned int idx;
-
-		idx = type + KM_TYPE_NR * smp_processor_id();
-		BUG_ON(vaddr != __fix_to_virt(FIX_KMAP_BEGIN + idx));
 
-		/*
-		 * force other mappings to Oops if they'll try to access
-		 * this pte without first remap it
-		 */
-		pte_clear(&init_mm, vaddr, kmap_pte-idx);
-		local_flush_tlb_page(NULL, vaddr);
-	}
+	idx = type + KM_TYPE_NR * smp_processor_id();
+#ifdef CONFIG_DEBUG_HIGHMEM
+	BUG_ON(vaddr != __fix_to_virt(FIX_KMAP_BEGIN + idx));
 #endif
+	/*
+	 * force other mappings to Oops if they'll try to access
+	 * this pte without first remap it
+	 */
+	pte_clear(&init_mm, vaddr, kmap_pte-idx);
+	local_flush_tlb_page(NULL, vaddr);
+
 	kmap_atomic_idx_pop();
 	pagefault_enable();
 	preempt_enable();