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


Groups > linux.kernel > #1402318

Re: [RFC][PATCH 5/5] sched/core: Add debug code to catch missing update_rq_clock()

From Matt Fleming <matt@codeblueprint.co.uk>
Newsgroups linux.kernel
Subject Re: [RFC][PATCH 5/5] sched/core: Add debug code to catch missing update_rq_clock()
Date 2016-05-17 14:30 +0200
Message-ID <rzMim-4v6-19@gated-at.bofh.it> (permalink)
References <ry4W5-3UF-5@gated-at.bofh.it> <ry4W6-3UF-17@gated-at.bofh.it> <rzg8Z-u7-317@gated-at.bofh.it> <rznjX-5fy-3@gated-at.bofh.it> <rzEkN-7L0-1@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On Tue, 17 May, at 04:11:09AM, Yuyang Du wrote:
> On Mon, May 16, 2016 at 10:46:38AM +0100, Matt Fleming wrote:
> > 
> > No because if someone calls rq_clock() immediately after __schedule(),
> > or even immediately after we clear RQCF_ACT_SKIP in __schedule(), we
> > should trigger a warning since the clock has not actually been
> > updated.
> 
> Well, I don't know how concurrent it can be, but aren't both update
> and read synchronized by rq->lock? So I don't understand the latter
> case, and the former should be addressed (missing its own update?).

I'm not talking about concurrency; when I said "someone" above, I was
referring to code.

So, if the code looks like the following, either now or in the future,

static void __schedule(bool preempt)
{
	...
	/* Clear RQCF_ACT_SKIP */
	rq->clock_update_flags = 0;
	...
	delta = rq_clock();
}

I would expect to see a warning triggered, because we've read the rq
clock outside of the code area where we know it's safe to do so
without a clock update.

The solution for that bug may be as simple as rearranging the code,

	delta = rq_clock();
	...
	rq->clock_update_flags = 0;

but we definitely want to catch such bugs in the first instance.

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


Thread

[RFC][PATCH 5/5] sched/core: Add debug code to catch missing update_rq_clock() Matt Fleming <matt@codeblueprint.co.uk> - 2016-05-12 22:00 +0200
  Re: [RFC][PATCH 5/5] sched/core: Add debug code to catch missing  update_rq_clock() Yuyang Du <yuyang.du@intel.com> - 2016-05-16 04:10 +0200
    Re: [RFC][PATCH 5/5] sched/core: Add debug code to catch missing  update_rq_clock() Matt Fleming <matt@codeblueprint.co.uk> - 2016-05-16 11:50 +0200
      Re: [RFC][PATCH 5/5] sched/core: Add debug code to catch missing  update_rq_clock() Yuyang Du <yuyang.du@intel.com> - 2016-05-17 06:00 +0200
        Re: [RFC][PATCH 5/5] sched/core: Add debug code to catch missing  update_rq_clock() Matt Fleming <matt@codeblueprint.co.uk> - 2016-05-17 14:30 +0200
          Re: [RFC][PATCH 5/5] sched/core: Add debug code to catch missing  update_rq_clock() Yuyang Du <yuyang.du@intel.com> - 2016-05-18 04:50 +0200
            Re: [RFC][PATCH 5/5] sched/core: Add debug code to catch missing  update_rq_clock() Matt Fleming <matt@codeblueprint.co.uk> - 2016-05-18 10:50 +0200
              Re: [RFC][PATCH 5/5] sched/core: Add debug code to catch missing  update_rq_clock() Yuyang Du <yuyang.du@intel.com> - 2016-05-19 08:40 +0200

csiph-web