All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dou Liyang <douly.fnst@cn.fujitsu.com>
To: Lu Baolu <baolu.lu@linux.intel.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Ingo Molnar <mingo@redhat.com>,
	Mathias Nyman <mathias.nyman@linux.intel.com>,
	<tglx@linutronix.de>
Cc: <peterz@infradead.org>, <linux-usb@vger.kernel.org>,
	<x86@kernel.org>, <linux-kernel@vger.kernel.org>,
	Juergen Gross <jgross@suse.com>,
	xen-devel <xen-devel@lists.xen.org>
Subject: Re: [PATCH v8 1/5] x86: add simple udelay calibration
Date: Fri, 14 Jul 2017 11:21:14 +0800	[thread overview]
Message-ID: <d144c59c-6e7b-7711-85ae-c9324f41264c@cn.fujitsu.com> (raw)
In-Reply-To: <5966E247.9090700@linux.intel.com>

Hi, Lu

At 07/13/2017 11:00 AM, Lu Baolu wrote:
> Hi,
>
> On 07/13/2017 09:39 AM, Dou Liyang wrote:
>> Hi, Lu
>>
>> At 07/13/2017 09:17 AM, Lu Baolu wrote:
>>> Hi,
>>>
>>> On 07/12/2017 04:02 PM, Dou Liyang wrote:
>>>> Hi, Lu
>>>>
>>>> At 05/05/2017 08:50 PM, Boris Ostrovsky wrote:
>>>>> On 05/05/2017 01:41 AM, Lu Baolu wrote:
>>>>>> Hi,
>>>>>>
>>>>>> On 05/03/2017 06:38 AM, Boris Ostrovsky wrote:
>>>>>>> On 03/21/2017 04:01 AM, Lu Baolu wrote:
>>>>>>>> Add a simple udelay calibration in x86 architecture-specific
>>>>>>>> boot-time initializations. This will get a workable estimate
>>>>>>>> for loops_per_jiffy. Hence, udelay() could be used after this
>>>>>>>> initialization.
>>>>>>> This breaks Xen PV guests since at this point, and until
>>>>>>> x86_init.paging.pagetable_init() which is when pvclock_vcpu_time_info is
>>>>>>> mapped, they cannot access pvclock.
>>>>>>>
>>>>>>> Is it reasonable to do this before tsc_init() is called? (The failure
>>>>>>> has nothing to do with tsc_init(), really --- it's just that it is
>>>>>>> called late enough that Xen PV guests get properly initialized.) If it
>>>>>>> is, would it be possible to move simple_udelay_calibration() after
>>>>>>> x86_init.paging.pagetable_init()?
>>>>>> This is currently only used for bare metal. How about by-pass it
>>>>>> for Xen PV guests?
>>>>>
>>>>> It is fixed this for Xen PV guests now (in the sense that we don't crash
>>>>> anymore) but my question is still whether this is not too early. Besides
>>>>> tsc_init() (which might not be important here), at the time when
>>>>> simple_udelay_calibration() is invoked we haven't yet called:
>>>>> * kvmclock_init(), which sets calibration routines for KVM
>>>>> * init_hypervisor_platform(), which sets calibration routines for vmware
>>>>> and Xen HVM
>>>>> * x86_init.paging.pagetable_init(), which sets calibration routines for
>>>>> Xen PV
>>>>>
>>>>
>>>> I guess these may have been missed.
>>>>
>>>> Do you have any comments about these?
>>>>
>>>
>>> The patch will be available in 4.13-rc1.
>>
>> Yes, I have seen it in the upstream.
>>
>> Firstly, I also met this problem want to call udelay() earlier than
>> *loops_per_jiffy* setup like you[1]. So I am very interesting in this
>> patch. ;)
>>
>> I am also confused about the questions which Boris asked:
>>
>> whether do the CPU and TSC calibration too early just for using
>> udelay()?
>>
>> this design broke our interface of x86_paltform.calibrate_cpu/tsc.
>>
>> And I also have a question below.
>>
>> [...]
>>
>>>>>>>>
>>>>>>>> +static void __init simple_udelay_calibration(void)
>>>>>>>> +{
>>>>>>>> +    unsigned int tsc_khz, cpu_khz;
>>>>>>>> +    unsigned long lpj;
>>>>>>>> +
>>>>>>>> +    if (!boot_cpu_has(X86_FEATURE_TSC))
>>>>>>>> +        return;
>>
>> if we don't have the TSC feature in booting CPU and
>> it returns here,  can we use udelay() correctly like before?
>>
>
> If we have TSC feature, we calculate a preciser loops_per_jiffy here.
> Otherwise, we just keep it as before. This function doesn't broke the
> use of udelay().

Oh, I see.

In  XDbC (XHCI debug capability), we just want the udelay() work more 
precisely in the TSC supported system.

It is different with my problem I missed.

Thanks for your kind explanation. :)

Thanks,

	dou

>
> Best regards,
> Lu Baolu
>
>>
>> [1] https://lkml.org/lkml/2017/7/3/276
>>
>> Thanks,
>>
>>     dou.
>>
>>>> Thanks,
>>>>
>>>>     dou.
>>>>
>>>>>>>> +
>>>>>>>> +    cpu_khz = x86_platform.calibrate_cpu();
>>>>>>>> +    tsc_khz = x86_platform.calibrate_tsc();
>>>>>>>> +
>>>>>>>> +    tsc_khz = tsc_khz ? : cpu_khz;
>>>>>>>> +    if (!tsc_khz)
>>>>>>>> +        return;
>>>>>>>> +
>>>>>>>> +    lpj = tsc_khz * 1000;
>>>>>>>> +    do_div(lpj, HZ);
>>>>>>>> +    loops_per_jiffy = lpj;
>>>>>>>> +}
>>>>>>>> +
>>>>>>>>  /*
>>>>>>>>   * Determine if we were loaded by an EFI loader.  If so, then we have also been
>>>>>>>>   * passed the efi memmap, systab, etc., so we should use these data structures
>>>>>>>> @@ -985,6 +1005,8 @@ void __init setup_arch(char **cmdline_p)
>>>>>>>>       */
>>>>>>>>      x86_configure_nx();
>>>>>>>>
>>>>>>>> +    simple_udelay_calibration();
>>>>>>>> +
>>>>>>>>      parse_early_param();
>>>>>>>>
>>>>>>>>  #ifdef CONFIG_MEMORY_HOTPLUG
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> To unsubscribe from this list: send the line "unsubscribe linux-usb" in
>>>> the body of a message to majordomo@vger.kernel.org
>>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>>>
>>>
>>>
>>>
>>>
>>
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-usb" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>
>
>
>
>

  reply	other threads:[~2017-07-14  3:21 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-21  8:01 [PATCH v8 0/5] usb: early: add support for early printk through USB3 debug port Lu Baolu
2017-03-21  8:01 ` [PATCH v8 1/5] x86: add simple udelay calibration Lu Baolu
2017-03-21 12:19   ` [tip:x86/debug] x86/timers: Add " tip-bot for Lu Baolu
2017-05-24 16:56     ` Jan Kiszka
2017-05-25  0:49       ` Lu Baolu
2017-05-02 22:38   ` [PATCH v8 1/5] x86: add " Boris Ostrovsky
2017-05-02 22:38   ` Boris Ostrovsky
2017-05-05  5:41     ` Lu Baolu
2017-05-05  5:41     ` Lu Baolu
2017-05-05 12:50       ` Boris Ostrovsky
2017-07-12  8:02         ` Dou Liyang
2017-07-12  8:02         ` Dou Liyang
2017-07-13  1:17           ` Lu Baolu
2017-07-13  1:17           ` Lu Baolu
2017-07-13  1:39             ` Dou Liyang
2017-07-13  1:39             ` Dou Liyang
2017-07-13  3:00               ` Lu Baolu
2017-07-13  3:00               ` Lu Baolu
2017-07-14  3:21                 ` Dou Liyang [this message]
2017-07-14  3:21                 ` Dou Liyang
2017-05-05 12:50       ` Boris Ostrovsky
2017-03-21  8:01 ` [PATCH v8 2/5] usb: early: add driver for xhci debug capability Lu Baolu
2017-03-21 12:19   ` [tip:x86/debug] usb/early: Add " tip-bot for Lu Baolu
2017-05-30 13:46   ` [PATCH v8 2/5] usb: early: add " Vlastimil Babka
2017-05-31  3:27     ` Lu Baolu
2017-05-31  6:24       ` Steven Rostedt
2017-06-01  3:35         ` Lu Baolu
2017-05-31  9:38       ` Vlastimil Babka
2017-06-01  3:37         ` Lu Baolu
2017-06-01  8:15           ` Vlastimil Babka
2017-06-01 12:25             ` Peter Zijlstra
2017-06-02  0:47               ` Steven Rostedt
2017-03-21  8:01 ` [PATCH v8 3/5] x86: add support for earlyprintk via USB3 debug port Lu Baolu
2017-03-21 12:20   ` [tip:x86/debug] x86/earlyprintk: Add " tip-bot for Lu Baolu
2017-03-21  8:01 ` [PATCH v8 4/5] usb: serial: add dbc debug device support to usb_debug Lu Baolu
2017-03-21 12:21   ` [tip:x86/debug] usb/serial: Add DBC " tip-bot for Lu Baolu
2017-03-21  8:01 ` [PATCH v8 5/5] usb: doc: add document for USB3 debug port usage Lu Baolu
2017-03-21 12:21   ` [tip:x86/debug] usb/doc: Add " tip-bot for Lu Baolu
2017-03-21 11:33 ` [PATCH v8 0/5] usb: early: add support for early printk through USB3 debug port Ingo Molnar
2017-03-21 12:27   ` Greg Kroah-Hartman
2017-03-21 12:46     ` Ingo Molnar
2017-03-22  2:23   ` Lu Baolu

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=d144c59c-6e7b-7711-85ae-c9324f41264c@cn.fujitsu.com \
    --to=douly.fnst@cn.fujitsu.com \
    --cc=baolu.lu@linux.intel.com \
    --cc=boris.ostrovsky@oracle.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jgross@suse.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mathias.nyman@linux.intel.com \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    --cc=xen-devel@lists.xen.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.