linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Baoquan He <bhe@redhat.com>
To: Dou Liyang <douly.fnst@cn.fujitsu.com>
Cc: x86@kernel.org, linux-kernel@vger.kernel.org,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	"Zheng, Lv" <lv.zheng@intel.com>,
	tglx@linutronix.de, mingo@kernel.org, hpa@zytor.com,
	ebiederm@xmission.com, peterz@infradead.org,
	izumi.taku@jp.fujitsu.com, tokunaga.keiich@jp.fujitsu.com,
	linux-acpi@vger.kernel.org, Julian Wollrath <jwollrath@web.de>,
	Borislav Petkov <bp@alien8.de>
Subject: Re: [PATCH v7 12/13] ACPI / init: Invoke early ACPI initialization earlier
Date: Thu, 24 Aug 2017 18:21:12 +0800	[thread overview]
Message-ID: <20170824102112.GE19768@x1> (raw)
In-Reply-To: <6b800d1a-d924-6dec-8c3e-299e4a67ed68@cn.fujitsu.com>

On 08/24/17 at 05:28pm, Dou Liyang wrote:
> Hi Baoquan,
> 
> Thanks for your reply.
> 
> At 08/24/2017 04:05 PM, Baoquan He wrote:
> > Hi Liyang,
> > 
> > On 08/24/17 at 11:54am, Dou Liyang wrote:
> > > > > Test in my own PC(Lenovo M4340).
> > > > > Ask help for doing regression testing for the bug said in commit
> > > > > c4e1acbb35e4
> > > > > ("ACPI / init: Invoke early ACPI initialization later").
> > > > > 
> > > > 
> > > > Now, I can prove this patch doesn't result in the bug[1] which made the
> > > > fast TSC calibration using PIT failed in a Thinkpad x121e (AMD E-450
> > > > APU).
> > > > 
> > > > The true reason of the bug is enabling ACPI subsystem earlier than
> > > > using PIT, not the SCI setup. invoking acpi_enable_subsystem() later
> > 
> > Seems redhat mail server was down earlier, I didn't receive new mail in
> > this thread.  Just curious, do you know why the fast tsc calibration
> > using PIT will fail if enabling ACPI subsystem earlier than using PIT?
> > 
> It's related to particular hardware, As you know, I tested in many
> kinds of PC and laptop and PIT works well no matter before or after
> enabling ACPI subsystem.
> 
> In pit_verify_msb(), we use inb(0x42) to read the current MSB,
> 
> Normally, the value is continuously, like following shows:
> 
> msb = fe
> msb = fd
> msb = fc
> msb = fb
> msb = fa
> msb = f9
> msb = f8
> msb = f7
> msb = f6
> ...
> 
> But, if in some particular hardware, you will see like that:
> 
> msb = fe
> msb = f0
> msb = ed
> msb = e9
> msb = e0
> msb = db
> ...
> 
> In this case, the count in pit_expect_msb() is always zero.
> So we will see "Fast TSC calibration failed" in our dmesg log.

Thanks for telling!

It's truly weird that the TSC becomes unstable only if enabling ACPI
subsystem earlier than using PIT.

Let's see what other people say about this.

Btw, you will resend another round, right? Then I would like to test
your new post.

Thanks
Baoquan

> 
> For the further deep reason why the hardware failed, I'm sorry
> I can't answer and don't know how to investigate. For hardware,
> I usually change a new one directly and know very little.
> 
> Thanks,
> 	dou.
> 
> 
> > Thanks
> > Baoquan
> > 
> > > > could fix this bug as Julian tested and said[2].
> > > > 
> > > > And, I found that Commit b064a8fa77df (" ACPI / init: Switch over
> > > > platform to the ACPI mode later") split the ACPI early initialization
> > > > code into acpi_early_init() and acpi_subsystem_init(). executing
> > > > acpi_enable_subsystem() at the original early ACPI initialization spot.
> > > > 
> > > > The sequence of them shows below:
> > > > 
> > > >  start_kernel
> > > > +---------------+
> > > > |
> > > > +--> .......
> > > > |
> > > > |    late_time_init()
> > > > +--> +-------+
> > > > |
> > > > +--> .......
> > > > |
> > > > |    acpi_early_init()
> > > > +--> +-------+
> > > > |
> > > > +--> .......
> > > > |
> > > > |   acpi_subsystem_init()
> > > > +-> +--------+
> > > > 
> > > > We make sure the acpi_subsystem_init() is called later than
> > > > late_time_init(), the bug will be avoided.
> > > > 
> > > > This patch changes the sequence of late_time_init() and
> > > > acpi_early_init(), doesn't effect acpi_subsystem_init().
> > > > 
> > > > So, this patch is OK.
> > > > 
> > > > Btw, Thanks very much for Borislav Petkov, he will have access to
> > > > Thinkpad x121e from Mid-August and will test this series.
> > > > 
> > > 
> > > Almost one month passed, Borislav have tested this series in Thinkpad
> > > x121e and I also have tested in my box and QEmu again. It is OK.
> > > 
> > > BTW,
> > > 1) I found your commit b064a8fa77df (" ACPI / init: Switch over
> > > platform to the ACPI mode later") split the ACPI early initialization
> > > code into acpi_early_init() and acpi_subsystem_init(). Actually enabling
> > > the ACPI subsystem is in acpi_subsystem_init().
> > > 
> > > 2) As we discussed earlier, invoking acpi_put_table() is not good for
> > > this situation.
> > > 
> > > So I do this patch, Is that goot to you? Any comments will be welcome.
> > > 
> > > If it is OK, As the patches need to be re-based, and I also found
> > > several spelling mistake, I will send a new version next week.
> > > 
> > > Thanks,
> > > 	dou.
> > > 
> > > > [1] https://lkml.org/lkml/2014/3/10/123
> > > > [2] https://lkml.org/lkml/2014/3/12/311
> > > > 
> > > > 
> > > > Thanks
> > > >     dou.
> > > > 
> > > > >  init/main.c | 2 +-
> > > > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > > > 
> > > > > diff --git a/init/main.c b/init/main.c
> > > > > index df58a41..7a09467 100644
> > > > > --- a/init/main.c
> > > > > +++ b/init/main.c
> > > > > @@ -654,12 +654,12 @@ asmlinkage __visible void __init start_kernel(void)
> > > > >      kmemleak_init();
> > > > >      setup_per_cpu_pageset();
> > > > >      numa_policy_init();
> > > > > +    acpi_early_init();
> > > > >      if (late_time_init)
> > > > >          late_time_init();
> > > > >      calibrate_delay();
> > > > >      pidmap_init();
> > > > >      anon_vma_init();
> > > > > -    acpi_early_init();
> > > > >  #ifdef CONFIG_X86
> > > > >      if (efi_enabled(EFI_RUNTIME_SERVICES))
> > > > >          efi_enter_virtual_mode();
> > > > > 
> > > 
> > > 
> > 
> > 
> > 
> 
> 

  reply	other threads:[~2017-08-24 10:21 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-14  5:52 [PATCH v7 00/13] Unify the interrupt delivery mode and do its setup in advance Dou Liyang
2017-07-14  5:52 ` [PATCH v7 01/13] x86/apic: Construct a selector for the interrupt delivery mode Dou Liyang
2017-07-14  5:52 ` [PATCH v7 02/13] x86/apic: Prepare for unifying the interrupt delivery modes setup Dou Liyang
2017-07-14  5:52 ` [PATCH v7 03/13] x86/apic: Split local APIC timer setup from the APIC setup Dou Liyang
2017-07-14  5:52 ` [PATCH v7 04/13] x86/apic: Move logical APIC ID away from apic_bsp_setup() Dou Liyang
2017-07-14  5:52 ` [PATCH v7 05/13] x86/apic: Unify interrupt mode setup for SMP-capable system Dou Liyang
2017-07-14  5:52 ` [PATCH v7 06/13] x86/apic: Mark the apic_intr_mode extern for sanity check cleanup Dou Liyang
2017-07-14  5:52 ` [PATCH v7 07/13] x86/apic: Unify interrupt mode setup for UP system Dou Liyang
2017-07-14  5:52 ` [PATCH v7 08/13] x86/ioapic: Refactor the delay logic in timer_irq_works() Dou Liyang
2017-07-14  5:52 ` [PATCH v7 09/13] x86/init: add intr_mode_init to x86_init_ops Dou Liyang
2017-07-14  5:52 ` [PATCH v7 10/13] x86/xen: Bypass intr mode setup in enlighten_pv system Dou Liyang
2017-07-14  5:52 ` [PATCH v7 11/13] x86/time: Initialize interrupt mode behind timer init Dou Liyang
2017-07-14  5:52 ` [PATCH v7 12/13] ACPI / init: Invoke early ACPI initialization earlier Dou Liyang
2017-07-18  5:18   ` Zheng, Lv
2017-07-18  6:08     ` Dou Liyang
2017-07-18  8:45       ` bhe
2017-07-18  9:44         ` Dou Liyang
2017-07-28  1:53           ` Zheng, Lv
2017-07-28  2:28             ` Dou Liyang
2017-07-26 12:19         ` Dou Liyang
2017-07-27  6:08           ` bhe
2017-07-27  6:29             ` Dou Liyang
2017-07-31 11:20             ` Dou Liyang
2017-07-31 13:30               ` bhe
2017-07-31 10:50   ` Dou Liyang
2017-08-24  3:54     ` Dou Liyang
2017-08-24  8:05       ` Baoquan He
2017-08-24  9:28         ` Dou Liyang
2017-08-24 10:21           ` Baoquan He [this message]
2017-08-24 10:44             ` Dou Liyang
2017-08-24 16:38       ` Rafael J. Wysocki
2017-08-25  2:06         ` Dou Liyang
2017-08-25 12:27           ` Rafael J. Wysocki
2017-08-25 14:09             ` Dou Liyang
2017-07-14  5:52 ` [PATCH v7 13/13] x86/apic: Remove the init_bsp_APIC() Dou Liyang

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=20170824102112.GE19768@x1 \
    --to=bhe@redhat.com \
    --cc=bp@alien8.de \
    --cc=douly.fnst@cn.fujitsu.com \
    --cc=ebiederm@xmission.com \
    --cc=hpa@zytor.com \
    --cc=izumi.taku@jp.fujitsu.com \
    --cc=jwollrath@web.de \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lv.zheng@intel.com \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rjw@rjwysocki.net \
    --cc=tglx@linutronix.de \
    --cc=tokunaga.keiich@jp.fujitsu.com \
    --cc=x86@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).