From: Stefan Bader <stefan.bader@canonical.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Borislav Petkov <bp@alien8.de>,
Paolo Bonzini <pbonzini@redhat.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
kvm@vger.kernel.org, Marcelo Tosatti <mtosatti@redhat.com>,
MASAO TAKAHASHI <masao-takahashi@kanno.co.jp>,
Joerg Roedel <joro@8bytes.org>
Subject: Re: Another preempt folding issue?
Date: Thu, 13 Feb 2014 18:00:19 +0100 [thread overview]
Message-ID: <52FCFA23.4060701@canonical.com> (raw)
In-Reply-To: <20140212115412.GW27965@twins.programming.kicks-ass.net>
[-- Attachment #1: Type: text/plain, Size: 3277 bytes --]
On 12.02.2014 12:54, Peter Zijlstra wrote:
> On Wed, Feb 12, 2014 at 12:09:29PM +0100, Stefan Bader wrote:
>> Something else here I run a kernel with CONFIG_PREEMPT not set and NR_CPUS
>> limited to 8 (for the 32bit kernel). So the default apic driver is used. Since
>> default_send_IPI_mask_logical is only used from there, I assume the trace you
>> got does the same. Maybe something there is wrong which would explain why we
>> only see it on 32bit hosts.
>
> Can you try with a different APIC driver to test this?
>
I don't think I can. And I think the statement about this only be used for 32bit
could be wrong. I got mislead to think so because those are only defined in
probe_32 but the 64bit counterpart isn't containing much aside that.
Anyway, I played around with tracing a bit more. So with this change:
if (need_resched()) {
srcu_read_unlock(&kvm->srcu, vcpu->srcu_idx);
if (need_resched() != should_resched()) {
+ trace_printk("need(%i) != should(%i)\n",
+ need_resched(), should_resched());
+ trace_printk("exit_reason=%u\n",
+ vcpu->run->exit_reason);
+ trace_printk("preempt_count=%lx\n",
+ __this_cpu_read_4(__preempt_count));
+ tracing_stop();
+ printk(KERN_ERR "Stopped tracing, due to
inconsistent state.\n");
}
+ schedule();
- cond_reschedule();
vcpu->srcu_idx = srcu_read_lock(&kvm->srcu);
}
I get the following (weird) output:
Xorg-1078 [001] d... 71.270251: native_smp_send_reschedule
<-resched_task
Xorg-1078 [001] d... 71.270251: default_send_IPI_mask_logical
<-native_smp_send_reschedule
bamfdaemon-2318 [001] d... 71.270465: resched_task <-check_preempt_wakeup
bamfdaemon-2318 [001] d... 71.270539: resched_task <-check_preempt_wakeup
compiz-2365 [001] d... 71.270689: resched_task <-check_preempt_wakeup
compiz-2365 [001] d... 71.270827: resched_task <-check_preempt_wakeup
compiz-2365 [001] d... 71.270940: resched_task <-check_preempt_wakeup
qemu-system-x86-2679 [000] dn.. 71.270999: smp_reschedule_interrupt
<-reschedule_interrupt
qemu-system-x86-2679 [000] dn.. 71.270999: scheduler_ipi
<-smp_reschedule_interrupt
qemu-system-x86-2679 [000] .N.. 71.271001: kvm_arch_vcpu_ioctl_run: need(1)
!= should(0)
qemu-system-x86-2679 [000] .N.. 71.271002: kvm_arch_vcpu_ioctl_run:
exit_reason=2
qemu-system-x86-2679 [000] .N.. 71.271003: kvm_arch_vcpu_ioctl_run:
preempt_count=0
So am I reading this right, that the interrupt did get delivered to cpu#0 while
the thread info already had the resched flag set. So this really should have
cleared the bit in preempt_count. But while the trace info shows 'N' for some
reason should_reschedule returns false but at the same time reading the preempt
count manually shows it 0?
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 901 bytes --]
next prev parent reply other threads:[~2014-02-13 17:00 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-11 18:34 Another preempt folding issue? Stefan Bader
2014-02-11 19:45 ` Peter Zijlstra
2014-02-12 8:20 ` Stefan Bader
2014-02-12 10:37 ` Peter Zijlstra
2014-02-12 10:40 ` Borislav Petkov
2014-02-12 11:09 ` Stefan Bader
2014-02-12 11:54 ` Peter Zijlstra
2014-02-13 17:00 ` Stefan Bader [this message]
2014-02-13 17:38 ` Peter Zijlstra
2014-02-13 18:03 ` Stefan Bader
2014-02-13 18:26 ` Peter Zijlstra
2014-02-14 13:34 ` Borislav Petkov
2014-02-14 13:40 ` Stefan Bader
2014-02-14 14:24 ` Stefan Bader
2014-02-14 14:47 ` Borislav Petkov
2014-02-14 17:02 ` Stefan Bader
2014-02-14 17:21 ` Peter Zijlstra
2014-02-20 15:38 ` Stefan Bader
2014-02-20 15:50 ` Peter Zijlstra
2014-03-24 17:39 ` Paolo Bonzini
2014-03-25 8:23 ` Stefan Bader
2014-02-14 17:33 ` Borislav Petkov
2014-02-14 18:23 ` Stefan Bader
2014-02-14 19:03 ` Stefan Bader
2014-02-14 15:21 ` Another preempt folding issue? (maybe bisect) Borislav Petkov
2014-02-14 15:28 ` Stefan Bader
2014-02-14 15:44 ` Borislav Petkov
2014-02-14 16:21 ` Peter Zijlstra
2014-02-13 18:25 ` Another preempt folding issue? Peter Zijlstra
2014-02-14 10:55 ` Stefan Bader
2014-02-14 13:17 ` Peter Zijlstra
2014-02-14 11:24 ` Stefan Bader
2014-02-14 11:49 ` Peter Zijlstra
2014-02-12 11:12 ` Joerg Roedel
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=52FCFA23.4060701@canonical.com \
--to=stefan.bader@canonical.com \
--cc=bp@alien8.de \
--cc=joro@8bytes.org \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masao-takahashi@kanno.co.jp \
--cc=mtosatti@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.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.