[SLOF] [PATCH slof v6 1/6] tree: Rework set-chosen-cpu and store /chosen ihandle and phandle

Segher Boessenkool segher at kernel.crashing.org
Wed Oct 25 22:43:32 AEDT 2017


On Tue, Oct 24, 2017 at 12:31:48PM +1100, Alexey Kardashevskiy wrote:
> This replaces current set-chosen-cpu with a cleaner and faster
> implementation which does not clobber the current node and stores
> the chosen CPU phandle/ihandle.
> 
> This adds a helper to get the chosen CPU unit address.
> 
> This moves chosen cpu words to root.fs as otherwise it is quite hard
> to maintain dependencies.
> 
> Signed-off-by: Alexey Kardashevskiy <aik at ozlabs.ru>

Reviewed-by: Segher Boessenkool <segher at kernel.crashing.org>

It's fine by me, it's clean enough.  How the boot cpu is found is
more worrying (there is no reason the first cpu in the tree will
be it); when that is dealt with some time in the future, this can
be revisited, too (it should be easier then :-) )


Segher


> ---
>  board-qemu/slof/tree.fs |  6 ------
>  slof/fs/root.fs         | 11 +++++++++++
>  2 files changed, 11 insertions(+), 6 deletions(-)
> 
> diff --git a/board-qemu/slof/tree.fs b/board-qemu/slof/tree.fs
> index cc35fa3..d95fde3 100644
> --- a/board-qemu/slof/tree.fs
> +++ b/board-qemu/slof/tree.fs
> @@ -155,12 +155,6 @@ populate-pci-busses
>  
>  6c0 cp
>  
> -\ Do not assume that cpu0 is available
> -: set-chosen-cpu
> -    " /cpus" find-device
> -    get-node child dup 0= ABORT" CPU not found"
> -    node>path open-dev encode-int s" cpu" set-chosen
> -;
>  set-chosen-cpu
>  
>  s" /memory at 0" open-dev encode-int s" memory" set-chosen
> diff --git a/slof/fs/root.fs b/slof/fs/root.fs
> index 44d087a..3818790 100644
> --- a/slof/fs/root.fs
> +++ b/slof/fs/root.fs
> @@ -33,6 +33,17 @@ defer continue-client
>  : get-chosen ( name len -- [ prop len ] success )
>    chosen get-property 0= ;
>  
> +\ Do not assume that cpu0 is available
> +VARIABLE chosen-cpu-ihandle
> +: set-chosen-cpu ( -- )
> +    s" /cpus" find-node  dup 0= ABORT" /cpus not found"
> +    child                dup 0= ABORT" /cpus/cpu not found"
> +    0 0 rot open-node
> +    dup chosen-cpu-ihandle !  encode-int s" cpu" set-chosen
> +;
> +
> +: chosen-cpu-unit ( -- ret ) chosen-cpu-ihandle @ ihandle>phandle >unit ;
> +
>  \ Look for an exising root, create one if needed
>  " /" find-node dup 0= IF
>      drop
> -- 
> 2.11.0


More information about the SLOF mailing list