On 07/12/2015 04:41 PM, William Hermans wrote:
>     /Yeah, I think the transition to linear irq domain (added at 3.18) made 
> cpsw/
>     /a little extra flaky. Plus the new omap_8250 serial driver is not 
> bug-free;/
>     /just found a flow control bug in the h/w last week./
>     //
>     /I've had ssh shells go sideways on occasion, but not with that kind of/
>     /regularity or effect./
>     //
>     /Like I said, the right diagnostic method is bisecting the kernel./
>     /It's going to take a while (multiple days) if several hours are required 
> to/
>     /distinguish good from bad kernel./
>     //
>     /Regards,/
>     /Peter Hurley/
> 
> 
> Hi Peter. "bisecting the kernel" is unknown to me. As in the meaning, But I 
> was wondering if some sort of remote, and very verbose logging might not help 
> ?  Currently I'm in the process of reading / learning advanced Linux 
> programming, and have all these crazy ideas of what we could do. Just not 
> sure what to "trap" and exactly 100% how to trap it.

Linux mainline kernel source is really just a massive linear series of patches,
one after the other, all tracked by git. Bisecting is a method of reducing the
number of patches under test by 1/2 at each iteration to arrive at a problem 
commit.

So, for example, let's say that I have a problem that cropped up on 4.2-rc1,
but the problem wasn't happening on 4.1-rc7.

I start a bisect with git:
$ git bisect start v4.2-rc1 v4.1-rc7
Bisecting: 6261 revisions left to test after this (roughly 13 steps)
[4570a37169d4b44d316f40b2ccc681dc93fedc7b] Merge tag 'sound-4.2-rc1' of 
git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

I build this kernel, test it, and mark it good or bad. Let's say the problem
doesn't exhibit in this kernel.

$ git bisect good
Bisecting: 3371 revisions left to test after this (roughly 12 steps)
[8d7804a2f03dbd34940fcb426450c730adf29dae] Merge tag 'driver-core-4.2-rc1' of 
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core

Now I build this kernel, test it, and mark it good or bad. Let's say bad this 
time.

$git bisect bad
[3d9f96d850e4bbfae24dc9aee03033dd77c81596] Merge tag 'armsoc-dt' of 
git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc

Each time, the number of commits under test are being reduced by 1/2.
For a small kernel like Beaglebone this is no big deal, couple of minutes build
time. For a 64-bit distro kernel, this can take several days for 14 iterations.

Having a bunch of BBBs, all testing the same kernel at the same time
significantly improves the confidence at each iteration that the kernel
is "good" or "bad" (since obviously a problem that takes time to manifest may
be mistakenly identified as "good" and then the bisect will narrow on the wrong
commits).

Instrumenting a problem like this is basically impossible.

Regards,
Peter Hurley

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to beagleboard+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to