Thread (5 messages) flat view 5 messages, 3 authors, 2016-08-23

[PATCH v05 54/72] include/uapi/xen/privcmd.h: fix compilation in userspace

From: sstabellini@kernel.org (Stefano Stabellini)
Date: 2016-08-23 18:13:58
Also in: lkml

On Tue, 23 Aug 2016, Russell King - ARM Linux wrote:
On Mon, Aug 22, 2016 at 08:33:11PM +0200, Mikko Rapeli wrote:
quoted
xen/interface/xen.h is not exported from kernel headers so remove the
dependency and provide needed defines for domid_t and xen_pfn_t if they
are not already defined by some other e.g. Xen specific headers.
I'm confused.  How did we end up with a 64-bit PFN number on ARM?  It's
insane - especially as the kernel uses "unsigned long" almost everywhere
for PFNs - we can't have physical addresses more than 44 bits (32 bit
pfn + 4k page size).
That's because xen_pfn_t is the type used to store pfns in structures
passed to Xen via hypercalls. The Xen hypercall ABI is shared between
ARM and ARM64. On x86_32 and x86_64 we have different sizes for pfn
types in the hypercall ABI and it caused quite a bit of trouble in the
past as it is possible to run 32bit domains on a 64bit hypervisor.
Having a common type for pfns on ARM and ARM64 helped a lot in that
respect.

quoted
Suggested by Andrew Cooper [off-list ref] on lkml message
[off-list ref].

The ifdef for ARM is ugly but did not find better solutions for it.
#ifdef __arm__

maybe?  Even if not, the unsightly parens are not necessary.
Yes, I think it should be:

#if defined(__arm__) || defined(__aarch64__)

quoted hunk ↗ jump to hunk
diff --git a/arch/arm/include/asm/xen/interface.h b/arch/arm/include/asm/xen/interface.h
index 75d5968..6898ee1 100644
--- a/arch/arm/include/asm/xen/interface.h
+++ b/arch/arm/include/asm/xen/interface.h
@@ -38,7 +38,7 @@
  * fine since it simply wouldn't be able to create any sure pfns in
  * the first place.
  */
-typedef uint64_t xen_pfn_t;
+typedef __u64 xen_pfn_t;
 #define PRI_xen_pfn "llx"
 typedef uint64_t xen_ulong_t;
 #define PRI_xen_ulong "llx"
Why this change?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help