[PATCH 1/5] powerpc/rtas: Add rtas_call_unlocked()

Michael Ellerman mpe at ellerman.id.au
Tue Nov 24 22:58:06 AEDT 2015


On Tue, 2015-11-24 at 22:26 +1100, Michael Ellerman wrote:

> Most users of RTAS (Run-Time Abstraction Services) use rtas_call(),
> which deals with locking as well as endian handling.
> 
> However we have two users outside of rtas.c that can't use rtas_call()
> because they have different locking requirements.
> 
> The hotplug CPU code can't take the RTAS lock because the CPU would go
> offline with the lock held and no other CPUs would be able to call RTAS
> until the CPU came back online.
> 
> The xmon code doesn't want to take the lock because it would risk dead
> locking when we are trying to recover from a crash.
> 
> Both sites required multiple patches when we added little endian
> support, proving that programmers can't do endian right.
> 
> Although that ship has sailed, we can still clean the code up by
> providing an unlocked version of rtas_call() which avoids the need to
> open code the logic elsewhere.
> 
> Signed-off-by: Michael Ellerman <mpe at ellerman.id.au>
> 
> commit 98bd678fc89575d0f4026a3ced3de19d90d1fe72
> Author: Michael Ellerman <mpe at ellerman.id.au>
> Date:   Fri May 15 16:40:48 2015 +1000
> 
>     powerpc/rtas: Add rtas_call_unlocked(), make enter_rtas() private

... wut.

Obviously I fubared the commit message a bit here while rebasing.

cheers



More information about the Linuxppc-dev mailing list