All of lore.kernel.org
 help / color / mirror / Atom feed
From: Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>
To: Davidlohr Bueso <dave@stgolabs.net>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
	Sasha Levin <sasha.levin@oracle.com>,
	Waiman Long <Waiman.Long@hp.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Andrey Ryabinin <a.ryabinin@samsung.com>,
	Dave Jones <davej@codemonkey.org.uk>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: sched: memory corruption on completing completions
Date: Fri, 06 Feb 2015 17:59:55 +0530	[thread overview]
Message-ID: <54D4B3C3.3080507@linux.vnet.ibm.com> (raw)
In-Reply-To: <1423175834.6835.27.camel@stgolabs.net>

On 02/06/2015 04:07 AM, Davidlohr Bueso wrote:
> On Thu, 2015-02-05 at 13:34 -0800, Linus Torvalds wrote:
>> On Thu, Feb 5, 2015 at 1:02 PM, Sasha Levin <sasha.levin@oracle.com> wrote:
>>>
>>> Interestingly enough, according to that article this behaviour seems to be
>>> "by design":
>>
>> Oh, it's definitely by design, it's just that the design looked at
>> spinlocks without the admittedly very subtle issue of lifetime vs
>> unlocking.
>>
>> Spinlocks (and completions) are special - for other locks we have
>> basically allowed lifetimes to be separate from the lock state, and if
>> you have a data structure with a mutex in it, you'll have to have some
>> separate lifetime rule outside of the lock itself. But spinlocks and
>> completions have their locking state tied into their lifetime.
>
> For spinlocks I find this very much a virtue. Tight lifetimes allow the
> overall locking logic to be *simple* - keeping people from being "smart"
> and bloating up spinlocks. Similarly, I hate how the paravirt
> alternative blends in with regular (sane) bare metal code. What was
> preventing this instead??
>
> #ifdef CONFIG_PARAVIRT_SPINLOCKS
> static __always_inline void arch_spin_unlock(arch_spinlock_t *lock)
> {
> 	if (!static_key_false(&paravirt_ticketlocks_enabled))
> 		return;
>
> 	add_smp(&lock->tickets.head, TICKET_LOCK_INC);
> 	/* Do slowpath tail stuff... */
> }
> #else
> static __always_inline void arch_spin_unlock(arch_spinlock_t *lock)
> {
> 	__add(&lock->tickets.head, TICKET_LOCK_INC, UNLOCK_LOCK_PREFIX);
> }
> #endif
>
> I just don't see the point to all this TICKET_SLOWPATH_FLAG:
>
> #ifdef CONFIG_PARAVIRT_SPINLOCKS
> #define __TICKET_LOCK_INC	2
> #define TICKET_SLOWPATH_FLAG	((__ticket_t)1)
> #else
> #define __TICKET_LOCK_INC	1
> #define TICKET_SLOWPATH_FLAG	((__ticket_t)0)
> #endif
>
> when it is only for paravirt -- and the word slowpath implies the
> general steps as part of the generic algorithm. Lets keep code for
> simple locks simple.
>

Good point, I will send this as a separate cleanup once I test the
patch I have to correct the current problem.



      parent reply	other threads:[~2015-02-06 12:28 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-04 23:24 sched: memory corruption on completing completions Sasha Levin
2015-02-04 23:46 ` Andrew Morton
2015-02-05  0:16 ` Linus Torvalds
2015-02-05  7:10   ` Ingo Molnar
2015-02-05  9:30   ` Peter Zijlstra
2015-02-05 20:44     ` Sasha Levin
2015-02-05 20:59   ` Davidlohr Bueso
2015-02-05 21:02     ` Sasha Levin
2015-02-05 21:34       ` Linus Torvalds
2015-02-05 22:37         ` Davidlohr Bueso
2015-02-05 22:57           ` Linus Torvalds
2015-02-06  6:48             ` Raghavendra K T
2015-02-06 15:00               ` Raghavendra K T
2015-02-06 12:29           ` Raghavendra K T [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54D4B3C3.3080507@linux.vnet.ibm.com \
    --to=raghavendra.kt@linux.vnet.ibm.com \
    --cc=Waiman.Long@hp.com \
    --cc=a.ryabinin@samsung.com \
    --cc=akpm@linux-foundation.org \
    --cc=dave@stgolabs.net \
    --cc=davej@codemonkey.org.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=sasha.levin@oracle.com \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.