powerpc/rtas: Use rtas_call_unlocked() in call_rtas_display_status()
authorMichael Ellerman <mpe@ellerman.id.au>
Tue, 24 Nov 2015 11:26:11 +0000 (22:26 +1100)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 17 Dec 2015 11:40:56 +0000 (22:40 +1100)
Although call_rtas_display_status() does actually want to use the
regular RTAS locking, it doesn't want the extra logic that is in
rtas_call(), so currently it open codes the logic.

Instead we can use rtas_call_unlocked(), after taking the RTAS lock.

Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/kernel/rtas.c

index fcf2d653a6fe32bd54a84cd27f9f2b64033e5a8d..f4fa137292c430242796bfe5dc2f8824be2ae112 100644 (file)
@@ -93,21 +93,13 @@ static void unlock_rtas(unsigned long flags)
  */
 static void call_rtas_display_status(unsigned char c)
 {
-       struct rtas_args *args = &rtas.args;
        unsigned long s;
 
        if (!rtas.base)
                return;
-       s = lock_rtas();
-
-       args->token = cpu_to_be32(10);
-       args->nargs = cpu_to_be32(1);
-       args->nret  = cpu_to_be32(1);
-       args->rets  = &(args->args[1]);
-       args->args[0] = cpu_to_be32(c);
-
-       enter_rtas(__pa(args));
 
+       s = lock_rtas();
+       rtas_call_unlocked(&rtas.args, 10, 1, 1, NULL, c);
        unlock_rtas(s);
 }