Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1383733

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

From Borislav Petkov <bp@alien8.de>
Newsgroups linux.kernel
Subject Re: [PATCH 10/11] x86, rwsem: provide __down_write_killable
Date 2016-04-20 22:50 +0200
Message-ID <rq7eq-5Ab-9@gated-at.bofh.it> (permalink)
References (4 earlier) <rnphw-7zX-21@gated-at.bofh.it> <rnqdA-8e7-25@gated-at.bofh.it> <rnsyK-1lV-15@gated-at.bofh.it> <rq0FY-fr-19@gated-at.bofh.it> <rq4JC-3Ai-49@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On Wed, Apr 20, 2016 at 11:04:05AM -0700, H. Peter Anvin wrote:
> 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.

So Michal and I talked about this a while ago. Why do we need the '"a"
(sem)' input dependency if '"+a" (ret)' already supplies the same thing?

There's also that "=d" (tmp) thing which we don't really need as an
output, right?

I.e., can we simplify like this?

---
#define ____down_write(sem, slow_path)                  \
({                                                      \
        long tmp = RWSEM_ACTIVE_WRITE_BIAS;             \
	struct rw_semaphore* ret = sem;			\
                                                        \
        asm volatile("# beginning down_write\n\t"       \
                     LOCK_PREFIX "  xadd      %[tmp],(%[ret])\n\t"      \
                     /* adds 0xffff0001, returns the old value */ \
                     "  test " __ASM_SEL(%w[tmp],%k[tmp]) "," __ASM_SEL(%w[tmp],%k[tmp]) "\n\t" \
                     /* was the active mask 0 before? */\
                     "  jz        1f\n"                 \
                     "  call " slow_path "\n"           \
                     "1:\n"                             \
                     "# ending down_write"              \
                     : "+m" (sem->count), [ret] "+a" (ret) \
                     : [tmp] "d" (tmp)                  \
                     : "memory", "cc");                 \
        ret;                                            \
})

-- 
Regards/Gruss,
    Boris.

ECO tip #101: Trim your mails when you reply.

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Re: [PATCH 10/11] x86, rwsem: provide __down_write_killable Peter Zijlstra <peterz@infradead.org> - 2016-04-20 15:50 +0200
  Re: [PATCH 10/11] x86, rwsem: provide __down_write_killable "H. Peter Anvin" <hpa@zytor.com> - 2016-04-20 20:10 +0200
    Re: [PATCH 10/11] x86, rwsem: provide __down_write_killable Borislav Petkov <bp@alien8.de> - 2016-04-20 22:50 +0200
      Re: [PATCH 10/11] x86, rwsem: provide __down_write_killable Michal Hocko <mhocko@kernel.org> - 2016-04-20 23:00 +0200
      Re: [PATCH 10/11] x86, rwsem: provide __down_write_killable "H. Peter Anvin" <hpa@zytor.com> - 2016-04-20 23:10 +0200
        Re: [PATCH 10/11] x86, rwsem: provide __down_write_killable Borislav Petkov <bp@alien8.de> - 2016-04-20 23:40 +0200
          Re: [PATCH 10/11] x86, rwsem: provide __down_write_killable "H. Peter Anvin" <hpa@zytor.com> - 2016-04-21 00:40 +0200
            Re: [PATCH 10/11] x86, rwsem: provide __down_write_killable Borislav Petkov <bp@alien8.de> - 2016-04-21 13:40 +0200
              Re: [PATCH 10/11] x86, rwsem: provide __down_write_killable Michal Hocko <mhocko@kernel.org> - 2016-04-21 15:10 +0200
                Re: [PATCH 10/11] x86, rwsem: provide __down_write_killable Borislav Petkov <bp@alien8.de> - 2016-04-21 15:30 +0200
            [PATCH] x86/locking/rwsem: Cleanup ____down_write() Borislav Petkov <bp@alien8.de> - 2016-04-27 14:10 +0200
              [tip:locking/rwsem] locking/rwsem, x86: Clean up ____down_write() tip-bot for Borislav Petkov <tipbot@zytor.com> - 2016-04-28 12:30 +0200
  Re: [PATCH 10/11] x86, rwsem: provide __down_write_killable Ingo Molnar <mingo@kernel.org> - 2016-04-22 09:00 +0200

csiph-web