All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michele Ballabio <barra_cuda@katamail.com>
To: "Toralf Förster" <toralf.foerster@gmx.de>, linux-kernel@vger.kernel.org
Cc: fweisbec@gmail.com, mingo@kernel.org, peterz@infradead.org
Subject: Re: Bisected KVM hang on x86-32 between v3.12 and v3.13
Date: Sun, 06 Apr 2014 19:40:04 +0200	[thread overview]
Message-ID: <53419174.7030004@katamail.com> (raw)
In-Reply-To: <5341784E.1020008@gmx.de>

On 06/04/2014 17:52, Toralf Förster wrote:
>> > Reverting either one of them solves the problem reported with kvm,
>> > but revert is probably not the correct answer.
>> > 
>> > I wonder if the solution is as simple as this:
>> > 
>> > --->8---
>> > diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
>> > index 0af5250..f3b985d 100644
>> > --- a/arch/x86/Kconfig
>> > +++ b/arch/x86/Kconfig
>> > @@ -126,6 +126,7 @@ config X86
>> >  	select RTC_LIB
>> >  	select HAVE_DEBUG_STACKOVERFLOW
>> >  	select HAVE_IRQ_EXIT_ON_IRQ_STACK if X86_64
>> > +	select HAVE_IRQ_EXIT_ON_IRQ_STACK if X86_32
>> >  	select HAVE_CC_STACKPROTECTOR
>> > 
>> >  config INSTRUCTION_DECODER
>> > ---8<---
>> > 
> applied both to 3.13.9 and 3.14.0 - issue does not happened any longer
> 
> Thanks !

You're welcome, but I'm not sure it's bug-free, I've only glanced at the
code. Let's hear what other people think.

> P.S.. 'By rebasing the "sched/core" branch on "master" before the 
> merge and going on with the bisection'
> 
> Probably off-topic but I'm really interested what did you do in 
> detail ? I'm asking b/c using git for my own and to bisect a remote 
> tree, but I'm not too familiar in bisecting bugs of this kind.

Let's say bisection blames the merge commit 'M' as the first bad
commit:

R---S---T---P---X---Y---Z---M
             \             /
              A---B---C---'

First, let's search for the merge base P:
  git merge-base Z C

Now: we know there are at least 2 patches (one on both sides of the
merge) that are responsible for the regression.
One is either X, Y or Z; the other is either A, B or C.

To find the first one (between X, Y and Z), we can rebase Z on top of
C, either with

  git rebase C Z

or with
  git format-patch Z ^C
  git am 00*
(It's almost the same thing, sometimes you might want to do this to
edit out some patches without using git bisect --interactive).

The result should be:

 P---X---Y---Z---M
  \             /
   A---B---C---'
            \
             X'---Y'---Z'

At this point
  git diff M Y'
should show nothing.

Now we can further our bisection:
  git bisect start Z' C
... should give us the first patch to blame: let's say it's Y'.

Now we search for the other one: the sequence I used is

# We know the other guilty commit is A, B or C
  git bisect start C P
# We will be brought on commit B.
# We know the regression triggers only with Y, so we merge with it
  git merge --no-commit Y
# The result will be something like this:
 P---X---Y---Z---M
  \       \     /
   A---B---N   /
        \     /
         C---'
          \
           X'---Y'---Z'
# Where N is a merge, but it's not a commit.
# 1st compile, install, reboot, test
# We are about to search another commit to test, so let's remove the
# temporary changes of the previous test
  git reset --hard
# What is the result of the 1st test?
  git bisect good|bad
# Here is another iteration
  git merge --no-commit Y
# 2nd compile, install, reboot, test

... and so on. Of course, there are some variations: if Y does not
depend on X, instead of a merge we could do:
  git cherry-pick --no-commit Y

In this case I used a merge because it was easier, and actually I
didn't merge _exactly_ with the blamed commit, but with the last
commit before the merge M, i.e. Z (I assumed it would be better
this way).

> Furthermore probably worth an own section in one of the TODO's ?

I think this (a regression blamed on a merge) is quite unusual,
and as such it could be useful on the man page of git-bisect,
but it should be written better and shorter than what I did
here.

  reply	other threads:[~2014-04-06 17:39 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-06 15:19 Bisected KVM hang on x86-32 between v3.12 and v3.13 Michele Ballabio
2014-04-06 15:52 ` Toralf Förster
2014-04-06 17:40   ` Michele Ballabio [this message]
2014-04-07 15:03 ` Peter Zijlstra
2014-04-07 15:07   ` Peter Zijlstra
2014-04-07 18:16     ` Toralf Förster
2014-04-07 18:56       ` Peter Zijlstra
2014-04-08 12:21         ` Peter Zijlstra
2014-04-08 19:14           ` Michele Ballabio
2014-04-08 19:51             ` Michele Ballabio
2014-04-08 20:28           ` Toralf Förster
2014-04-09  9:14           ` Stefan Bader
2014-04-09  9:45             ` Peter Zijlstra
2014-04-09 14:24               ` [PATCH -stable] x86,preempt: Fix preemption for i386 Peter Zijlstra
2014-04-09 14:36                 ` Linus Torvalds
2014-04-09 19:19                   ` Greg KH
2014-04-09 19:38                     ` Peter Zijlstra
2014-04-09 19:57                       ` Greg KH
2014-05-13 23:56                       ` Greg KH
2014-04-07 18:59       ` Bisected KVM hang on x86-32 between v3.12 and v3.13 Frederic Weisbecker
2014-04-07 19:57         ` Toralf Förster
2014-04-07 22:43           ` Frederic Weisbecker
2014-04-07 19:49     ` Michele Ballabio

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=53419174.7030004@katamail.com \
    --to=barra_cuda@katamail.com \
    --cc=fweisbec@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=toralf.foerster@gmx.de \
    /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.