[GIT PULL] Introduce Xen support to ARM64

2013-06-07 Thread Stefano Stabellini
Hi Catalin,
the following changes since commit dcdbe33add56cb659ebf21fb9b6577507e21d952:

  Merge branch 'mn10300' (mn10300 fixes from David Howells) (2013-05-30 
13:39:01 +0900)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/sstabellini/xen.git 
xen-arm64-3.1-tag

Stefano Stabellini (6):
  arm/xen: define xen_remap as ioremap_cached
  arm64/xen: introduce asm/xen header files on arm64
  arm64/xen: implement ioremap_cached on arm64
  arm64/xen: use XEN_IO_PROTO_ABI_ARM on ARM64
  arm64/xen: introduce CONFIG_XEN and hypercall.S on ARM64
  MAINTAINERS: add myself as arm64/xen maintainer

 MAINTAINERS |7 ++
 arch/arm/include/asm/xen/page.h |3 +-
 arch/arm64/Kconfig  |   10 +++
 arch/arm64/Makefile |1 +
 arch/arm64/include/asm/hypervisor.h |6 ++
 arch/arm64/include/asm/io.h |2 +
 arch/arm64/include/asm/sync_bitops.h|   26 +
 arch/arm64/include/asm/xen/events.h |   21 +++
 arch/arm64/include/asm/xen/hypercall.h  |1 +
 arch/arm64/include/asm/xen/hypervisor.h |1 +
 arch/arm64/include/asm/xen/interface.h  |1 +
 arch/arm64/include/asm/xen/page.h   |1 +
 arch/arm64/xen/Makefile |2 +
 arch/arm64/xen/hypercall.S  |   92 +++
 include/xen/interface/io/protocols.h|2 +-
 15 files changed, 173 insertions(+), 3 deletions(-)
 create mode 100644 arch/arm64/include/asm/hypervisor.h
 create mode 100644 arch/arm64/include/asm/sync_bitops.h
 create mode 100644 arch/arm64/include/asm/xen/events.h
 create mode 100644 arch/arm64/include/asm/xen/hypercall.h
 create mode 100644 arch/arm64/include/asm/xen/hypervisor.h
 create mode 100644 arch/arm64/include/asm/xen/interface.h
 create mode 100644 arch/arm64/include/asm/xen/page.h
 create mode 100644 arch/arm64/xen/Makefile
 create mode 100644 arch/arm64/xen/hypercall.S


This is v3 of the series with a couple of Acked-by more in the commit
messages and two lines better aligned with tabs equal to 8 characters.
Full diff below.


diff --git a/MAINTAINERS b/MAINTAINERS
index fd3a495..95a6a51 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -9096,6 +9096,13 @@ S:   Supported
 F: arch/arm/xen/
 F: arch/arm/include/asm/xen/
 
+XEN HYPERVISOR ARM64
+M: Stefano Stabellini 
+L: xen-de...@lists.xensource.com (moderated for non-subscribers)
+S: Supported
+F: arch/arm64/xen/
+F: arch/arm64/include/asm/xen/
+
 XEN NETWORK BACKEND DRIVER
 M: Ian Campbell 
 L: xen-de...@lists.xensource.com (moderated for non-subscribers)
diff --git a/arch/arm/include/asm/xen/page.h b/arch/arm/include/asm/xen/page.h
index 30cdacb..359a7b5 100644
--- a/arch/arm/include/asm/xen/page.h
+++ b/arch/arm/include/asm/xen/page.h
@@ -1,7 +1,6 @@
 #ifndef _ASM_ARM_XEN_PAGE_H
 #define _ASM_ARM_XEN_PAGE_H
 
-#include 
 #include 
 #include 
 
@@ -88,6 +87,6 @@ static inline bool set_phys_to_machine(unsigned long pfn, 
unsigned long mfn)
return __set_phys_to_machine(pfn, mfn);
 }
 
-#define xen_remap(cookie, size) __arm_ioremap((cookie), (size), MT_MEMORY);
+#define xen_remap(cookie, size) ioremap_cached((cookie), (size));
 
 #endif /* _ASM_ARM_XEN_PAGE_H */
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index 56b3f6d..b5d6ada 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -182,6 +182,16 @@ config HW_PERF_EVENTS
 
 source "mm/Kconfig"
 
+config XEN_DOM0
+   def_bool y
+   depends on XEN
+
+config XEN
+   bool "Xen guest support on ARM64 (EXPERIMENTAL)"
+   depends on ARM64 && OF
+   help
+ Say Y if you want to run Linux in a Virtual Machine on Xen on ARM64.
+
 endmenu
 
 menu "Boot options"
diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile
index c95c5cb..79dd13d 100644
--- a/arch/arm64/Makefile
+++ b/arch/arm64/Makefile
@@ -37,6 +37,7 @@ TEXT_OFFSET := 0x0008
 export TEXT_OFFSET GZFLAGS
 
 core-y += arch/arm64/kernel/ arch/arm64/mm/
+core-$(CONFIG_XEN) += arch/arm64/xen/
 libs-y := arch/arm64/lib/ $(libs-y)
 libs-y += $(LIBGCC)
 
diff --git a/arch/arm64/include/asm/hypervisor.h 
b/arch/arm64/include/asm/hypervisor.h
new file mode 100644
index 000..d2c7904
--- /dev/null
+++ b/arch/arm64/include/asm/hypervisor.h
@@ -0,0 +1,6 @@
+#ifndef _ASM_ARM64_HYPERVISOR_H
+#define _ASM_ARM64_HYPERVISOR_H
+
+#include 
+
+#endif
diff --git a/arch/arm64/include/asm/io.h b/arch/arm64/include/asm/io.h
index 2e12258..1d12f89 100644
--- a/arch/arm64/include/asm/io.h
+++ b/arch/arm64/include/asm/io.h
@@ -228,10 +228,12 @@ extern void __iounmap(volatile void __iomem *addr);
 #define PROT_DEFAULT   (PTE_TYPE_PAGE | PTE_AF | PTE_DIRTY)
 #define PROT_DEVICE_nGnRE  (PROT_DEFAULT | PTE_PXN | PTE_UXN | 
PTE_ATTRINDX(MT_DEVICE_nGnRE))
 #define PROT_NORMAL_NC (PROT_DEFAULT | PTE_ATTRINDX(MT_NORMAL_NC))
+#define PROT_NORMAL  

[GIT PULL] Introduce Xen support to ARM64

2013-06-07 Thread Stefano Stabellini
Hi Catalin,
the following changes since commit dcdbe33add56cb659ebf21fb9b6577507e21d952:

  Merge branch 'mn10300' (mn10300 fixes from David Howells) (2013-05-30 
13:39:01 +0900)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/sstabellini/xen.git 
xen-arm64-3.1-tag

Stefano Stabellini (6):
  arm/xen: define xen_remap as ioremap_cached
  arm64/xen: introduce asm/xen header files on arm64
  arm64/xen: implement ioremap_cached on arm64
  arm64/xen: use XEN_IO_PROTO_ABI_ARM on ARM64
  arm64/xen: introduce CONFIG_XEN and hypercall.S on ARM64
  MAINTAINERS: add myself as arm64/xen maintainer

 MAINTAINERS |7 ++
 arch/arm/include/asm/xen/page.h |3 +-
 arch/arm64/Kconfig  |   10 +++
 arch/arm64/Makefile |1 +
 arch/arm64/include/asm/hypervisor.h |6 ++
 arch/arm64/include/asm/io.h |2 +
 arch/arm64/include/asm/sync_bitops.h|   26 +
 arch/arm64/include/asm/xen/events.h |   21 +++
 arch/arm64/include/asm/xen/hypercall.h  |1 +
 arch/arm64/include/asm/xen/hypervisor.h |1 +
 arch/arm64/include/asm/xen/interface.h  |1 +
 arch/arm64/include/asm/xen/page.h   |1 +
 arch/arm64/xen/Makefile |2 +
 arch/arm64/xen/hypercall.S  |   92 +++
 include/xen/interface/io/protocols.h|2 +-
 15 files changed, 173 insertions(+), 3 deletions(-)
 create mode 100644 arch/arm64/include/asm/hypervisor.h
 create mode 100644 arch/arm64/include/asm/sync_bitops.h
 create mode 100644 arch/arm64/include/asm/xen/events.h
 create mode 100644 arch/arm64/include/asm/xen/hypercall.h
 create mode 100644 arch/arm64/include/asm/xen/hypervisor.h
 create mode 100644 arch/arm64/include/asm/xen/interface.h
 create mode 100644 arch/arm64/include/asm/xen/page.h
 create mode 100644 arch/arm64/xen/Makefile
 create mode 100644 arch/arm64/xen/hypercall.S


This is v3 of the series with a couple of Acked-by more in the commit
messages and two lines better aligned with tabs equal to 8 characters.
Full diff below.


diff --git a/MAINTAINERS b/MAINTAINERS
index fd3a495..95a6a51 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -9096,6 +9096,13 @@ S:   Supported
 F: arch/arm/xen/
 F: arch/arm/include/asm/xen/
 
+XEN HYPERVISOR ARM64
+M: Stefano Stabellini stefano.stabell...@eu.citrix.com
+L: xen-de...@lists.xensource.com (moderated for non-subscribers)
+S: Supported
+F: arch/arm64/xen/
+F: arch/arm64/include/asm/xen/
+
 XEN NETWORK BACKEND DRIVER
 M: Ian Campbell ian.campb...@citrix.com
 L: xen-de...@lists.xensource.com (moderated for non-subscribers)
diff --git a/arch/arm/include/asm/xen/page.h b/arch/arm/include/asm/xen/page.h
index 30cdacb..359a7b5 100644
--- a/arch/arm/include/asm/xen/page.h
+++ b/arch/arm/include/asm/xen/page.h
@@ -1,7 +1,6 @@
 #ifndef _ASM_ARM_XEN_PAGE_H
 #define _ASM_ARM_XEN_PAGE_H
 
-#include asm/mach/map.h
 #include asm/page.h
 #include asm/pgtable.h
 
@@ -88,6 +87,6 @@ static inline bool set_phys_to_machine(unsigned long pfn, 
unsigned long mfn)
return __set_phys_to_machine(pfn, mfn);
 }
 
-#define xen_remap(cookie, size) __arm_ioremap((cookie), (size), MT_MEMORY);
+#define xen_remap(cookie, size) ioremap_cached((cookie), (size));
 
 #endif /* _ASM_ARM_XEN_PAGE_H */
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index 56b3f6d..b5d6ada 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -182,6 +182,16 @@ config HW_PERF_EVENTS
 
 source mm/Kconfig
 
+config XEN_DOM0
+   def_bool y
+   depends on XEN
+
+config XEN
+   bool Xen guest support on ARM64 (EXPERIMENTAL)
+   depends on ARM64  OF
+   help
+ Say Y if you want to run Linux in a Virtual Machine on Xen on ARM64.
+
 endmenu
 
 menu Boot options
diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile
index c95c5cb..79dd13d 100644
--- a/arch/arm64/Makefile
+++ b/arch/arm64/Makefile
@@ -37,6 +37,7 @@ TEXT_OFFSET := 0x0008
 export TEXT_OFFSET GZFLAGS
 
 core-y += arch/arm64/kernel/ arch/arm64/mm/
+core-$(CONFIG_XEN) += arch/arm64/xen/
 libs-y := arch/arm64/lib/ $(libs-y)
 libs-y += $(LIBGCC)
 
diff --git a/arch/arm64/include/asm/hypervisor.h 
b/arch/arm64/include/asm/hypervisor.h
new file mode 100644
index 000..d2c7904
--- /dev/null
+++ b/arch/arm64/include/asm/hypervisor.h
@@ -0,0 +1,6 @@
+#ifndef _ASM_ARM64_HYPERVISOR_H
+#define _ASM_ARM64_HYPERVISOR_H
+
+#include asm/xen/hypervisor.h
+
+#endif
diff --git a/arch/arm64/include/asm/io.h b/arch/arm64/include/asm/io.h
index 2e12258..1d12f89 100644
--- a/arch/arm64/include/asm/io.h
+++ b/arch/arm64/include/asm/io.h
@@ -228,10 +228,12 @@ extern void __iounmap(volatile void __iomem *addr);
 #define PROT_DEFAULT   (PTE_TYPE_PAGE | PTE_AF | PTE_DIRTY)
 #define PROT_DEVICE_nGnRE  (PROT_DEFAULT | PTE_PXN | PTE_UXN |