From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Ostrovsky Subject: Re: [PATCH v4 04/14] x86/rtc: replace paravirt rtc check with platform legacy quirk Date: Fri, 8 Apr 2016 08:25:33 -0400 Message-ID: <5707A33D.5060400@oracle.com> References: <1459987594-5434-1-git-send-email-mcgrof@kernel.org> <1459987594-5434-5-git-send-email-mcgrof@kernel.org> <570658DA.7060509@oracle.com> <20160408003207.GN1990@wotan.suse.de> <57073F0F.400@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: "Luis R. Rodriguez" , Juergen Gross Cc: kozerkov@parallels.com, Matt Fleming , Lv Zheng , "H. Peter Anvin" , lguest@lists.ozlabs.org, Joerg Roedel , X86 ML , "Moore, Robert" , ACPI Devel Maling List , Ingo Molnar , Gary Lin , Len Brown , Rusty Russell , Josh Triplett , Joey Lee , "xen-devel@lists.xensource.com" , Borislav Petkov , Thomas Gleixner , Andy Shevchenko , Toshi Kani , Andrew Cooper , "Rafael J. Wysocki" , "linux-kernel@vger.kernel.org" List-Id: linux-acpi@vger.kernel.org T24gMDQvMDgvMjAxNiAwMjoyOSBBTSwgTHVpcyBSLiBSb2RyaWd1ZXogd3JvdGU6Cj4gT24gVGh1 LCBBcHIgNywgMjAxNiBhdCAxMDoxOCBQTSwgSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29t PiB3cm90ZToKPj4gT24gMDgvMDQvMTYgMDI6MzIsIEx1aXMgUi4gUm9kcmlndWV6IHdyb3RlOgo+ Pj4gT24gVGh1LCBBcHIgMDcsIDIwMTYgYXQgMDg6NTU6NTRBTSAtMDQwMCwgQm9yaXMgT3N0cm92 c2t5IHdyb3RlOgo+Pj4+IE9uIDA0LzA2LzIwMTYgMDg6MDYgUE0sIEx1aXMgUi4gUm9kcmlndWV6 IHdyb3RlOgo+Pj4+PiBXZSBoYXZlIDQgdHlwZXMgb2YgeDg2IHBsYXRmb3JtcyB0aGF0IGRpc2Fi bGUgUlRDOgo+Pj4+Pgo+Pj4+PiAgICAqIEludGVsIE1JRAo+Pj4+PiAgICAqIExndWVzdCAtIHVz ZXMgcGFyYXZpcnQKPj4+Pj4gICAgKiBYZW4gZG9tLVUgLSB1c2VzIHBhcmF2aXJ0Cj4+Pj4+ICAg ICogeDg2IG9uIGxlZ2FjeSBzeXN0ZW1zIGFubm90YXRlZCB3aXRoIGFuIEFDUEkgbGVnYWN5IGZs YWcKPj4+Pj4KPj4+Pj4gV2UgY2FuIGNvbnNvbGlkYXRlIGFsbCBvZiB0aGVzZSBpbnRvIGEgcGxh dGZvcm0gc3BlY2lmaWMgbGVnYWN5Cj4+Pj4+IHF1aXJrIHNldCBlYXJseSBpbiBib290IHRocm91 Z2ggaTM4Nl9zdGFydF9rZXJuZWwoKSBhbmQgdGhyb3VnaAo+Pj4+PiB4ODZfNjRfc3RhcnRfcmVz ZXJ2YXRpb25zKCkuIFRoaXMgZGVhbHMgd2l0aCB0aGUgUlRDIHF1aXJrcyB3aGljaAo+Pj4+PiB3 ZSBjYW4gcmVseSBvbiB0aHJvdWdoIHRoZSBoYXJkd2FyZSBzdWJhcmNoLCB0aGUgQUNQSSBjaGVj ayBjYW4KPj4+Pj4gYmUgZGVhbHQgd2l0aCBzZXBhcmF0ZWx5Lgo+Pj4+Pgo+Pj4+PiB2Mjogc3Bs aXQgdGhlIHN1YmFyY2ggY2hlY2sgZnJvbSB0aGUgQUNQSSBjaGVjaywgY2xhcmlmeQo+Pj4+PiAg ICAgIG9uIHRoZSBBQ1BJIGNoYW5nZSBjb21taXQgbG9nIHdoeSBvcmRlcmluZyB3b3Jrcwo+Pj4+ Pgo+Pj4+PiBTdWdnZXN0ZWQtYnk6IEluZ28gTW9sbmFyIDxtaW5nb0BrZXJuZWwub3JnPgo+Pj4+ PiBTaWduZWQtb2ZmLWJ5OiBMdWlzIFIuIFJvZHJpZ3VleiA8bWNncm9mQGtlcm5lbC5vcmc+Cj4+ PiA8LS0gc25pcCAtLT4KPj4+Cj4+Pj4+IGRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvcGxh dGZvcm0tcXVpcmtzLmMgYi9hcmNoL3g4Ni9rZXJuZWwvcGxhdGZvcm0tcXVpcmtzLmMKPj4+Pj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi4xYjExNGFjNTk5 NmYKPj4+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+PiArKysgYi9hcmNoL3g4Ni9rZXJuZWwvcGxhdGZv cm0tcXVpcmtzLmMKPj4+Pj4gQEAgLTAsMCArMSwxOCBAQAo+Pj4+PiArI2luY2x1ZGUgPGxpbnV4 L2tlcm5lbC5oPgo+Pj4+PiArI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KPj4+Pj4gKwo+Pj4+PiAr I2luY2x1ZGUgPGFzbS9zZXR1cC5oPgo+Pj4+PiArI2luY2x1ZGUgPGFzbS9iaW9zX2ViZGEuaD4K Pj4+Pj4gKwo+Pj4+PiArdm9pZCBfX2luaXQgeDg2X2Vhcmx5X2luaXRfcGxhdGZvcm1fcXVpcmtz KHZvaWQpCj4+Pj4+ICt7Cj4+Pj4+ICsgICB4ODZfcGxhdGZvcm0ubGVnYWN5LnJ0YyA9IDE7Cj4+ Pj4+ICsKPj4+Pj4gKyAgIHN3aXRjaCAoYm9vdF9wYXJhbXMuaGRyLmhhcmR3YXJlX3N1YmFyY2gp IHsKPj4+Pj4gKyAgIGNhc2UgWDg2X1NVQkFSQ0hfWEVOOgo+Pj4+PiArICAgY2FzZSBYODZfU1VC QVJDSF9MR1VFU1Q6Cj4+Pj4+ICsgICBjYXNlIFg4Nl9TVUJBUkNIX0lOVEVMX01JRDoKPj4+Pj4g KyAgICAgICAgICAgeDg2X3BsYXRmb3JtLmxlZ2FjeS5ydGMgPSAwOwo+Pj4+PiArICAgICAgICAg ICBicmVhazsKPj4+Pj4gKyAgIH0KPj4+Pj4gK30KPj4+PiBXaGF0IGFib3V0IFhlbiBkb20wIChh a2EgaW5pdGlhbCBkb21haW4pPwo+Pj4gSW5kZWVkLCB0aGFua3MgZm9yIGNhdGNoaW5nIHRoaXMs IHRoZSBodW5rIGJlbG93IHJlbW92ZXMgdGhlIHJlLWVuYWJsZW1lbnQgb2YKPj4+IHRoZSB0aGUg UlRDIGZvciBkb20wOgo+Pj4KPj4+Pj4gLS0tIGEvYXJjaC94ODYveGVuL2VubGlnaHRlbi5jCj4+ Pj4+ICsrKyBiL2FyY2gveDg2L3hlbi9lbmxpZ2h0ZW4uYwo+Pj4+PiBAQCAtMTE5Miw3ICsxMTky LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBwdl9pbmZvIHhlbl9pbmZvIF9faW5pdGNvbnN0ID0g ewo+Pj4+PiAgICNpZmRlZiBDT05GSUdfWDg2XzY0Cj4+Pj4+ICAgICAgLmV4dHJhX3VzZXJfNjRi aXRfY3MgPSBGTEFUX1VTRVJfQ1M2NCwKPj4+Pj4gICAjZW5kaWYKPj4+Pj4gLSAgIC5mZWF0dXJl cyA9IDAsCj4+Pj4+ICAgICAgLm5hbWUgPSAiWGVuIiwKPj4+Pj4gICB9Owo+Pj4+PiBAQCAtMTUy NSw4ICsxNTI0LDYgQEAgYXNtbGlua2FnZSBfX3Zpc2libGUgdm9pZCBfX2luaXQgeGVuX3N0YXJ0 X2tlcm5lbCh2b2lkKQo+Pj4+PiAgICAgIC8qIEluc3RhbGwgWGVuIHBhcmF2aXJ0IG9wcyAqLwo+ Pj4+PiAgICAgIHB2X2luZm8gPSB4ZW5faW5mbzsKPj4+Pj4gLSAgIGlmICh4ZW5faW5pdGlhbF9k b21haW4oKSkKPj4+Pj4gLSAgICAgICAgICAgcHZfaW5mby5mZWF0dXJlcyB8PSBQVl9TVVBQT1JU RURfUlRDOwo+Pj4+PiAgICAgIHB2X2luaXRfb3BzID0geGVuX2luaXRfb3BzOwo+Pj4+PiAgICAg IGlmICgheGVuX3B2aF9kb21haW4oKSkgewo+Pj4+PiAgICAgICAgICAgICAgcHZfY3B1X29wcyA9 IHhlbl9jcHVfb3BzOwo+Pj4gVGhpcyBzaG91bGQgdGhlbiBicmVhayBkb20wIHVubGVzcyBvZiBj b3Vyc2UgeW91IGhhdmUgdGhlIHJlc3BlY3RpdmUgbmV4dAo+Pj4gcGF0Y2ggYXBwbGllZCBhbmQg dGhhdCBkaXNhYmxlZCB0aGUgUlRDIGR1ZSB0byBhbiBBQ1BJIHNldHRpbmcgb24geW91cgo+Pj4g cGxhdGZvcm0uIEp1ZXJnZW4sIGNhbiB5b3UgY2hlY2sgdG8gc2VlIGlmIHRoYXQgd2FzIHRoZSBj YXNlIGZvciB5b3VyCj4+PiB0ZXN0aW5nIHBsYXRmb3JtIG9uIGRvbTAgPwo+PiBBcmUgeW91IHN1 cmUgaXQgd291bGQgYnJlYWs/Cj4gTm8sIHN1c3BlY3RlZCB0aGF0IGl0IHNob3VsZCB0aG91Z2gu Cj4KPj4gV291bGRuJ3QgaXQganVzdCBmYWxsIGJhY2sgdG8gYW5vdGhlcgo+PiBjbG9jayBzb3Vy Y2UsIGUuZy4gaHBldD8KPiBJIHN1cHBvc2Ugc28uCj4KPj4gSSBsb29rZWQgaW50byBteSB0ZXN0 IHN5c3RlbTogc2VlbXMgYXMgaWYgYWRkX3J0Y19jbW9zKCkgaXMgcmV0dXJuaW5nCj4+IGJlZm9y ZSB0aGUgLmxlZ2FjeS5ydGMgdGVzdC4KPiBPSyB0aGFua3MuLi4KCkl0IHdvcmtzIGJlY2F1c2Ug dGhlIGNsb2NrIG11c3QgaGF2ZSBiZWVuIGRpc2NvdmVyZWQgYnkgQUNQSSBwcmlvciB0byAKYWRk X3J0Y19jbW9zKCkgY2FsbC4gSXQncyBQTlAwYjAwIG9iamVjdCwgSSBiZWxpZXZlLiBUaGUgcmVz dCBvZiB0aGUgCnJvdXRpbmUgaXMgdG8gaGFuZGxlIHRoZSBjYXNlIHdoZW4gUlRDIGlzIG5vdCBm b3VuZCBpbiBBQ1BJIHRhYmxlcyBmb3IgCndoYXRldmVyIHJlYXNvbnMgKEkgdGhpbmspLgoKVGhh dCdzIHdoeSB3ZSBhZGRlZCBwYXJhdmlydF9oYXMoUlRDKSAtLS0gZG9tMCBzaG91bGQgYmUgYWJs ZSB0byBoYW5kbGUgCnN1Y2ggY2FzZXMsIGp1c3QgbGlrZSBiYXJlIG1ldGFsLgoKLWJvcmlzCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwg bWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3Jn L3hlbi1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758121AbcDHM1w (ORCPT ); Fri, 8 Apr 2016 08:27:52 -0400 Received: from aserp1040.oracle.com ([141.146.126.69]:18497 "EHLO aserp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758128AbcDHM1s (ORCPT ); Fri, 8 Apr 2016 08:27:48 -0400 Subject: Re: [PATCH v4 04/14] x86/rtc: replace paravirt rtc check with platform legacy quirk To: "Luis R. Rodriguez" , Juergen Gross References: <1459987594-5434-1-git-send-email-mcgrof@kernel.org> <1459987594-5434-5-git-send-email-mcgrof@kernel.org> <570658DA.7060509@oracle.com> <20160408003207.GN1990@wotan.suse.de> <57073F0F.400@suse.com> Cc: Borislav Petkov , "H. Peter Anvin" , Thomas Gleixner , Ingo Molnar , Rusty Russell , X86 ML , "linux-kernel@vger.kernel.org" , Andy Lutomirski , David Vrabel , Konrad Rzeszutek Wilk , "xen-devel@lists.xensource.com" , lguest@lists.ozlabs.org, Andy Shevchenko , Joey Lee , Gary Lin , Matt Fleming , Andrew Cooper , "Rafael J. Wysocki" , Len Brown , "Moore, Robert" , Lv Zheng , Toshi Kani , ACPI Devel Maling List , kozerkov@parallels.com, Josh Triplett , Joerg Roedel From: Boris Ostrovsky Message-ID: <5707A33D.5060400@oracle.com> Date: Fri, 8 Apr 2016 08:25:33 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Source-IP: userv0022.oracle.com [156.151.31.74] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 04/08/2016 02:29 AM, Luis R. Rodriguez wrote: > On Thu, Apr 7, 2016 at 10:18 PM, Juergen Gross wrote: >> On 08/04/16 02:32, Luis R. Rodriguez wrote: >>> On Thu, Apr 07, 2016 at 08:55:54AM -0400, Boris Ostrovsky wrote: >>>> On 04/06/2016 08:06 PM, Luis R. Rodriguez wrote: >>>>> We have 4 types of x86 platforms that disable RTC: >>>>> >>>>> * Intel MID >>>>> * Lguest - uses paravirt >>>>> * Xen dom-U - uses paravirt >>>>> * x86 on legacy systems annotated with an ACPI legacy flag >>>>> >>>>> We can consolidate all of these into a platform specific legacy >>>>> quirk set early in boot through i386_start_kernel() and through >>>>> x86_64_start_reservations(). This deals with the RTC quirks which >>>>> we can rely on through the hardware subarch, the ACPI check can >>>>> be dealt with separately. >>>>> >>>>> v2: split the subarch check from the ACPI check, clarify >>>>> on the ACPI change commit log why ordering works >>>>> >>>>> Suggested-by: Ingo Molnar >>>>> Signed-off-by: Luis R. Rodriguez >>> <-- snip --> >>> >>>>> diff --git a/arch/x86/kernel/platform-quirks.c b/arch/x86/kernel/platform-quirks.c >>>>> new file mode 100644 >>>>> index 000000000000..1b114ac5996f >>>>> --- /dev/null >>>>> +++ b/arch/x86/kernel/platform-quirks.c >>>>> @@ -0,0 +1,18 @@ >>>>> +#include >>>>> +#include >>>>> + >>>>> +#include >>>>> +#include >>>>> + >>>>> +void __init x86_early_init_platform_quirks(void) >>>>> +{ >>>>> + x86_platform.legacy.rtc = 1; >>>>> + >>>>> + switch (boot_params.hdr.hardware_subarch) { >>>>> + case X86_SUBARCH_XEN: >>>>> + case X86_SUBARCH_LGUEST: >>>>> + case X86_SUBARCH_INTEL_MID: >>>>> + x86_platform.legacy.rtc = 0; >>>>> + break; >>>>> + } >>>>> +} >>>> What about Xen dom0 (aka initial domain)? >>> Indeed, thanks for catching this, the hunk below removes the re-enablement of >>> the the RTC for dom0: >>> >>>>> --- a/arch/x86/xen/enlighten.c >>>>> +++ b/arch/x86/xen/enlighten.c >>>>> @@ -1192,7 +1192,6 @@ static const struct pv_info xen_info __initconst = { >>>>> #ifdef CONFIG_X86_64 >>>>> .extra_user_64bit_cs = FLAT_USER_CS64, >>>>> #endif >>>>> - .features = 0, >>>>> .name = "Xen", >>>>> }; >>>>> @@ -1525,8 +1524,6 @@ asmlinkage __visible void __init xen_start_kernel(void) >>>>> /* Install Xen paravirt ops */ >>>>> pv_info = xen_info; >>>>> - if (xen_initial_domain()) >>>>> - pv_info.features |= PV_SUPPORTED_RTC; >>>>> pv_init_ops = xen_init_ops; >>>>> if (!xen_pvh_domain()) { >>>>> pv_cpu_ops = xen_cpu_ops; >>> This should then break dom0 unless of course you have the respective next >>> patch applied and that disabled the RTC due to an ACPI setting on your >>> platform. Juergen, can you check to see if that was the case for your >>> testing platform on dom0 ? >> Are you sure it would break? > No, suspected that it should though. > >> Wouldn't it just fall back to another >> clock source, e.g. hpet? > I suppose so. > >> I looked into my test system: seems as if add_rtc_cmos() is returning >> before the .legacy.rtc test. > OK thanks... It works because the clock must have been discovered by ACPI prior to add_rtc_cmos() call. It's PNP0b00 object, I believe. The rest of the routine is to handle the case when RTC is not found in ACPI tables for whatever reasons (I think). That's why we added paravirt_has(RTC) --- dom0 should be able to handle such cases, just like bare metal. -boris