Subject: Re: randconfig build error with next-20150529, in crypto/jitterentropy.c

From: Guenter Roeck <[email-masked]>
Date: Mon, 08 Jun 2015 16:30:09 -0700

On 06/08/2015 03:36 PM, Stephan Mueller wrote:
> Am Monday 08 June 2015, 12:54:12 schrieb Guenter Roeck:
>
> Hi Guenter,
>
> Thanks for the note.
>
> ...
>>
>> ---
>>
>> openrisc:defconfig:
>>
>> In file included from ./arch/openrisc/include/asm/timex.h:23:0,
>> 	...
>> 	from crypto/jitterentropy.c:52:
>> ./arch/openrisc/include/asm/spr.h: In function 'jent_loop_shuffle':
>> ./arch/openrisc/include/asm/spr.h:30:2: warning: asm operand 1 probably
>> doesn't match constraints
>> ./arch/openrisc/include/asm/spr.h:30:2: error: impossible constraint in 'asm'
>
> I received this one also before. But that seems to be an error on the OpenRISC
> platform as the random_get_entropy() function or the get_cycles function is
> not implemented as defined.
>
> The crypto code uses the following which triggers the issue:
>
>          __u64 tmp = 0;
>
>          tmp = random_get_entropy();
>
> That one seems to be an appropriate use of random_get_entropy() which on
> almost all arches is an alias for get_cycles().

Yes and no. I suspect it may have something to do with the compiler options.
The code compiles with the following patch applied.

---
diff --git a/arch/openrisc/include/asm/spr.h b/arch/openrisc/include/asm/spr.h
index 1cccb42dd477..373532cc41f4 100644
--- a/arch/openrisc/include/asm/spr.h
+++ b/arch/openrisc/include/asm/spr.h
@@ -24,7 +24,7 @@
         "l.mtspr %0,%1,%2"                                      \
         : : "r" (_off), "r" (_val), "K" (_spr))

-static inline unsigned long mfspr(unsigned long add)
+static inline unsigned long mfspr(const unsigned long add)
  {
         unsigned long ret;
         __asm__ __volatile__ ("l.mfspr %0,r0,%1" : "=r" (ret) : "K" (add));

---

get_cycles is implemented as static inline which executes mfspr(SPR_TTCR).
SPR_TTCR is a constant. Normally that information seems to be passed on,
but not when get_cycles() is compiled through jitterentropy.

Any idea what might cause this ?

Thanks,
Guenter