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

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



Hi Simon,

Please see inline.

On 9/5/19 11:55 AM, Simon Kuenzer wrote:
> On 04.09.19 09:15, Costin Lupu wrote:
>> Hi Simon,
>>
>> Please see inline.
>>
>> On 8/30/19 4:51 PM, Simon Kuenzer wrote:
>>> 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?
>>
>> Well, actually it is neither. I think it's actually a scheduling
>> abstraction, but one that is currently used for other stacks as well
>> (interrupts, traps). So it's true that it's weird to put it here, but
>> it's not an arch specific config either. This stack size value should be
>> the same regardless any arch or platform.
>>
> 
> I completely agree with this and I think we are going to introduce
> supporting different stack sizes later. The whole discussion is related
> what we had with patch ID 735752 (see patchwork.unikraft.org). Although
> this patch is also an intermediate fix, I tend to put this option
> directly under 'Architecture Selection' because it should be independent
> to any platform. The other reason is that we have the stack size
> currently defined within the arch headers.
> 

Alright, I'll move it to arch in v2.

>>>
>>> 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 .
>>
>> Well actually I see that the interrupt stack in
>> plat/xen/x86/arch_events.c has the right size, STACK_SIZE.
>>
>> In deed, the trap stack in plat/xen/x86/traps.c is PAGE_SIZE and it
>> should be fixed.
>>
>>> Do you by chance remember why we have the boot stack twice as big?
>>> See: xen/x86/setup.c
>>
>> I don't remember, but it was the same with the interrupt stack in
>> plat/xen/x86/arch_events.c because the alignment was done at runtime. It
>> might be the same reason.
>>
> 
> I understand. Probably also something to re-visit later but not with
> this patch...
> 
>>>
>>> 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.
>>
>> I'm not sure I follow. This patch fixes that and sets the same stack
>> size for ARM.
>>
> 
> Arm32 uses some internal hard-coded values and does not use the
> STACK_SIZE definition. I think we should adopt this with this patch, too.
> 
> In general, I am fine with introducing this stack size configuration as
> option.
> 
> Thanks,
> 
> Simon
> 
>>>
>>> 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

_______________________________________________
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®.