Re: [PATCH 10/11] x86, rwsem: provide __down_write_killable

From: H. Peter Anvin
Date: Wed Apr 20 2016 - 14:05:25 EST


On April 20, 2016 6:40:19 AM PDT, Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
>On Wed, Apr 13, 2016 at 02:49:43PM +0200, Michal Hocko wrote:
>> On Wed 13-04-16 12:27:31, Ingo Molnar wrote:
>> >
>> > * Ingo Molnar <mingo@xxxxxxxxxx> wrote:
>> >
>> > > I'm testing your patches today, if they are otherwise OK [...]
>> >
>> > got this build failure:
>> >
>> > ./arch/x86/include/asm/rwsem.h:106:2: error: âasmâ operand has
>impossible constraints
>>
>> Hmm, I have no idea why 64b didn't have problem with the asm but 32b
>> complains. Anyway, the following makes both happy. I have checked the
>> generated code for 64b and it hasn't changed after the patch. 32b
>also
>> seems to be generating a proper code. My gcc asm()-foo is rather weak
>so
>> I would feel better if somebody double checked after me.
>
>I completely blow at this gcc-asm constraints thing too :/
>
>In any case, Ingo will you look after the rest of these patches, or do
>you want me to pick up the remaining bits?

The reason it breaks is because the same register can't be an input-output register and a separate input. However, the input side of the input-output is probably undefined, and so gcc may not notice.
--
Sent from my Android device with K-9 Mail. Please excuse brevity and formatting.