All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH v2] xen: arm: move rambase definitions to Rules.mk
@ 2014-08-22 11:09 Andrii Tseglytskyi
  2014-08-22 16:05 ` Ian Campbell
  0 siblings, 1 reply; 3+ messages in thread
From: Andrii Tseglytskyi @ 2014-08-22 11:09 UTC (permalink / raw)
  To: xen-devel, Ian Campbell, Stefano Stabellini, Tim Deegan

The reason of this pathch is the following - guest domain OS may
use iomem mappings. It is a typical way to handle devices in domU.
On some SoCs iomem starts from 0x40000000 base. Therefore it is
almost impossible to use iomem mappings, because it conflicts with
GUEST_RAM0_BASE pointer, which has similar value. Patch allows
to configure this from compile command line.

Verified on OMAP5 with the following settings:
GUEST_CFG_RAM_BASE=0x80000000ULL GUEST_CFG_RAM_SIZE=0x80000000ULL

Changes in v2:
- GUEST_RAM0_BASE and GUEST_RAM0_SIZE definitions kept in public header

Signed-off-by: Andrii Tseglytskyi <andrii.tseglytskyi@globallogic.com>
---
 tools/Rules.mk                | 9 +++++++++
 xen/arch/arm/Rules.mk         | 5 +++++
 xen/include/public/arch-arm.h | 4 ++--
 3 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/tools/Rules.mk b/tools/Rules.mk
index 5bac700..4cf3603 100644
--- a/tools/Rules.mk
+++ b/tools/Rules.mk
@@ -35,6 +35,15 @@ INSTALL_SHLIB = : install-shlib-unsupported-fail
 SYMLINK_SHLIB = : symlink-shlib-unsupported-fail
 endif
 
+TOOLS_TARGET_ARCH := $(shell echo $(XEN_TARGET_ARCH) | \
+                 sed -e 's/x86.*/x86/' -e s'/arm\(32\|64\)/arm/g')
+ifeq ($(TOOLS_TARGET_ARCH),arm)
+GUEST_CFG_RAM_BASE ?= 0x40000000ULL
+GUEST_CFG_RAM_SIZE ?= 0xc0000000ULL
+CFLAGS += -DGUEST_CFG_RAM_BASE=$(GUEST_CFG_RAM_BASE)
+CFLAGS += -DGUEST_CFG_RAM_SIZE=$(GUEST_CFG_RAM_SIZE)
+endif
+
 CFLAGS_libxenctrl = -I$(XEN_LIBXC) $(CFLAGS_xeninclude)
 LDLIBS_libxenctrl = $(XEN_LIBXC)/libxenctrl$(libextension)
 SHLIB_libxenctrl  = -Wl,-rpath-link=$(XEN_LIBXC)
diff --git a/xen/arch/arm/Rules.mk b/xen/arch/arm/Rules.mk
index 8658176..f590f0a 100644
--- a/xen/arch/arm/Rules.mk
+++ b/xen/arch/arm/Rules.mk
@@ -104,6 +104,11 @@ ifneq ($(EARLY_PRINTK_INC),)
 EARLY_PRINTK := y
 endif
 
+GUEST_CFG_RAM_BASE ?= 0x40000000ULL
+GUEST_CFG_RAM_SIZE ?= 0xc0000000ULL
+CFLAGS += -DGUEST_CFG_RAM_BASE=$(GUEST_CFG_RAM_BASE)
+CFLAGS += -DGUEST_CFG_RAM_SIZE=$(GUEST_CFG_RAM_SIZE)
+
 CFLAGS-$(EARLY_PRINTK) += -DCONFIG_EARLY_PRINTK
 CFLAGS-$(EARLY_PRINTK_INIT_UART) += -DEARLY_PRINTK_INIT_UART
 CFLAGS-$(EARLY_PRINTK) += -DEARLY_PRINTK_INC=\"debug-$(EARLY_PRINTK_INC).inc\"
diff --git a/xen/include/public/arch-arm.h b/xen/include/public/arch-arm.h
index ac54cd6..079da2a 100644
--- a/xen/include/public/arch-arm.h
+++ b/xen/include/public/arch-arm.h
@@ -380,8 +380,8 @@ typedef uint64_t xen_callback_t;
 
 #define GUEST_RAM_BANKS   2
 
-#define GUEST_RAM0_BASE   0x40000000ULL /* 3GB of low RAM @ 1GB */
-#define GUEST_RAM0_SIZE   0xc0000000ULL
+#define GUEST_RAM0_BASE   GUEST_CFG_RAM_BASE /* configured from command line */
+#define GUEST_RAM0_SIZE   GUEST_CFG_RAM_SIZE
 
 #define GUEST_RAM1_BASE   0x0200000000ULL /* 1016GB of RAM @ 8GB */
 #define GUEST_RAM1_SIZE   0xfe00000000ULL
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [RFC PATCH v2] xen: arm: move rambase definitions to Rules.mk
  2014-08-22 11:09 [RFC PATCH v2] xen: arm: move rambase definitions to Rules.mk Andrii Tseglytskyi
@ 2014-08-22 16:05 ` Ian Campbell
  2014-08-22 18:22   ` Andrii Tseglytskyi
  0 siblings, 1 reply; 3+ messages in thread
From: Ian Campbell @ 2014-08-22 16:05 UTC (permalink / raw)
  To: Andrii Tseglytskyi; +Cc: Tim Deegan, Stefano Stabellini, xen-devel

On Fri, 2014-08-22 at 14:09 +0300, Andrii Tseglytskyi wrote:
> The reason of this pathch is the following - guest domain OS may
> use iomem mappings. It is a typical way to handle devices in domU.
> On some SoCs iomem starts from 0x40000000 base. Therefore it is
> almost impossible to use iomem mappings, because it conflicts with
> GUEST_RAM0_BASE pointer, which has similar value. Patch allows
> to configure this from compile command line.
> 
> Verified on OMAP5 with the following settings:
> GUEST_CFG_RAM_BASE=0x80000000ULL GUEST_CFG_RAM_SIZE=0x80000000ULL

I'm sorry but this approach is not going to fly. Apart from some debug
functionality we do not want to be baking h/w specifics into the Xen
binary at compile time.

The correct solution to the problem you are trying to solve is to make
the guest address space layout dynamic and settable by the toolstack,
i.e. by providing a domctl to set the GIC and other base addresses on a
per-domain basis (RAM I think is already handleable using
populate_physmap).

Ian.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [RFC PATCH v2] xen: arm: move rambase definitions to Rules.mk
  2014-08-22 16:05 ` Ian Campbell
@ 2014-08-22 18:22   ` Andrii Tseglytskyi
  0 siblings, 0 replies; 3+ messages in thread
From: Andrii Tseglytskyi @ 2014-08-22 18:22 UTC (permalink / raw)
  To: Ian Campbell; +Cc: Tim Deegan, Stefano Stabellini, xen-devel@lists.xen.org

Hi Ian,

OK. Thank you for your comment,

Regards,
Andrii

On Fri, Aug 22, 2014 at 7:05 PM, Ian Campbell <ian.campbell@citrix.com> wrote:
> On Fri, 2014-08-22 at 14:09 +0300, Andrii Tseglytskyi wrote:
>> The reason of this pathch is the following - guest domain OS may
>> use iomem mappings. It is a typical way to handle devices in domU.
>> On some SoCs iomem starts from 0x40000000 base. Therefore it is
>> almost impossible to use iomem mappings, because it conflicts with
>> GUEST_RAM0_BASE pointer, which has similar value. Patch allows
>> to configure this from compile command line.
>>
>> Verified on OMAP5 with the following settings:
>> GUEST_CFG_RAM_BASE=0x80000000ULL GUEST_CFG_RAM_SIZE=0x80000000ULL
>
> I'm sorry but this approach is not going to fly. Apart from some debug
> functionality we do not want to be baking h/w specifics into the Xen
> binary at compile time.
>
> The correct solution to the problem you are trying to solve is to make
> the guest address space layout dynamic and settable by the toolstack,
> i.e. by providing a domctl to set the GIC and other base addresses on a
> per-domain basis (RAM I think is already handleable using
> populate_physmap).
>
> Ian.
>



-- 

Andrii Tseglytskyi | Embedded Dev
GlobalLogic
www.globallogic.com

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2014-08-22 18:22 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-08-22 11:09 [RFC PATCH v2] xen: arm: move rambase definitions to Rules.mk Andrii Tseglytskyi
2014-08-22 16:05 ` Ian Campbell
2014-08-22 18:22   ` Andrii Tseglytskyi

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.