[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Minios-devel] [UNIKRAFT PATCH] plat: Configure stack size page order



Hey Costin,

Thanks a lot for this patch. I am currently having a look but need some clarifications.

1) Why did you expose the option int the platform submenu? It is obviously changing something in architecture headers?

2) Did you check the interrupt stack for Xen on x86? It seems that this one is just sized to PAGE_SIZE. I think this can get critical for thread current retrieval, right? See: plat/xen/x86/arch_events.c and
plat/xen/x86/traps.c .
Do you by chance remember why we have the boot stack twice as big?
See: xen/x86/setup.c

3) More as a note: Xen on Arm32 seems not to follow any STACK_SIZE definition at all. We should probably put a note on this somewhere. I am not sure if it is worth fixing it - who knows what we are going to do with this architecture-platform-combination. I rather expect that we are going towards Arm64 for Xen in the future.

Thanks,

Simon

On 27.08.19 09:56, Costin Lupu wrote:
This patch adds a config option for configuring the stack size page order. We
need this for supporting large stacks.

Signed-off-by: Costin Lupu <costin.lupu@xxxxxxxxx>
---
  arch/arm/arm/include/uk/asm/limits.h    | 2 +-
  arch/arm/arm64/include/uk/asm/limits.h  | 2 +-
  arch/x86/x86_64/include/uk/asm/limits.h | 2 +-
  plat/Config.uk                          | 9 +++++++++
  4 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/arch/arm/arm/include/uk/asm/limits.h 
b/arch/arm/arm/include/uk/asm/limits.h
index 085761c3..e2298d6b 100644
--- a/arch/arm/arm/include/uk/asm/limits.h
+++ b/arch/arm/arm/include/uk/asm/limits.h
@@ -39,7 +39,7 @@
  #define __PAGE_MASK           (~((__PAGE_SIZE) - 1))
  #endif
-#define __STACK_SIZE_PAGE_ORDER 2
+#define __STACK_SIZE_PAGE_ORDER        CONFIG_STACK_SIZE_PAGE_ORDER
  #define __STACK_SIZE          (__PAGE_SIZE * (1 << __STACK_SIZE_PAGE_ORDER))
#define __WORDSIZE 32
diff --git a/arch/arm/arm64/include/uk/asm/limits.h 
b/arch/arm/arm64/include/uk/asm/limits.h
index cec05641..fb70f2ba 100644
--- a/arch/arm/arm64/include/uk/asm/limits.h
+++ b/arch/arm/arm64/include/uk/asm/limits.h
@@ -40,7 +40,7 @@
  #define __PAGE_MASK           (~((__PAGE_SIZE) - 1))
  #endif
-#define __STACK_SIZE_PAGE_ORDER 4
+#define __STACK_SIZE_PAGE_ORDER        CONFIG_STACK_SIZE_PAGE_ORDER
  #define __STACK_SIZE  (__PAGE_SIZE * (1 << __STACK_SIZE_PAGE_ORDER))
  #define __STACK_ALIGN_SIZE    16
diff --git a/arch/x86/x86_64/include/uk/asm/limits.h b/arch/x86/x86_64/include/uk/asm/limits.h
index a969bd17..21814044 100644
--- a/arch/x86/x86_64/include/uk/asm/limits.h
+++ b/arch/x86/x86_64/include/uk/asm/limits.h
@@ -39,7 +39,7 @@
  #define __PAGE_MASK           (~((__PAGE_SIZE) - 1))
  #endif
-#define __STACK_SIZE_PAGE_ORDER 4
+#define __STACK_SIZE_PAGE_ORDER        CONFIG_STACK_SIZE_PAGE_ORDER
  #define __STACK_SIZE          (__PAGE_SIZE * (1 << __STACK_SIZE_PAGE_ORDER))
#define __WORDSIZE 64
diff --git a/plat/Config.uk b/plat/Config.uk
index 8a878eb0..d0b99bd5 100644
--- a/plat/Config.uk
+++ b/plat/Config.uk
@@ -25,3 +25,12 @@ config HZ
        help
                Configure the timer interrupt frequency.
                Only change this if you know what you're doing.
+
+config STACK_SIZE_PAGE_ORDER
+       int
+       prompt "Stack size page order"
+       default 4
+       help
+               Indirectly configures the stack size by changing the stack size 
page
+               order. Stack size is equal with 2^order * page size (e.g. 4KB).
+               Only change this if you know what you're doing.


_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.