From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joao Martins Subject: [PATCH v7 4/5] x86/xen/time: setup vcpu 0 time info page Date: Thu, 19 Oct 2017 14:39:17 +0100 Message-ID: <20171019133918.18367-5-joao.m.martins__3563.03160447187$1508420458$gmane$org@oracle.com> References: <20171019133918.18367-1-joao.m.martins@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e5B3G-0002bg-EK for xen-devel@lists.xenproject.org; Thu, 19 Oct 2017 13:39:58 +0000 In-Reply-To: <20171019133918.18367-1-joao.m.martins@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org Cc: Juergen Gross , x86@kernel.org, Andy Lutomirski , Ingo Molnar , Thomas Gleixner , "H. Peter Anvin" , Boris Ostrovsky , Joao Martins List-Id: xen-devel@lists.xenproject.org SW4gb3JkZXIgdG8gc3VwcG9ydCBwdmNsb2NrIHZkc28gb24geGVuIHdlIG5lZWQgdG8gc2V0dXAg dGhlIHRpbWUKaW5mbyBwYWdlIGZvciB2Y3B1IDAgYW5kIHJlZ2lzdGVyIHRoZSBwYWdlIHdpdGgg WGVuIHVzaW5nIHRoZQpWQ1BVT1BfcmVnaXN0ZXJfdmNwdV90aW1lX21lbW9yeV9hcmVhIGh5cGVy Y2FsbC4gVGhpcyBoeXBlcmNhbGwKd2lsbCBhbHNvIGZvcmNlZnVsbHkgdXBkYXRlIHRoZSBwdnRp IHdoaWNoIHdpbGwgc2V0IHNvbWUgb2YgdGhlCm5lY2Vzc2FyeSBmbGFncyBmb3IgdmRzby4gQWZ0 ZXJ3YXJkcyB3ZSBjaGVjayBpZiBpdCBzdXBwb3J0cyB0aGUKUFZDTE9DS19UU0NfU1RBQkxFX0JJ VCBmbGFnIHdoaWNoIGlzIG1hbmRhdG9yeSBmb3IgaGF2aW5nCnZkc28vdnN5c2NhbGwgc3VwcG9y dC4gQW5kIGlmIHNvLCBpdCB3aWxsIHNldCB0aGUgY3B1IDAgcHZ0aSB0aGF0CndpbGwgYmUgbGF0 ZXIgb24gdXNlZCB3aGVuIG1hcHBpbmcgdGhlIHZkc28gaW1hZ2UuCgpUaGUgeGVuIGhlYWRlcnMg YXJlIGFsc28gdXBkYXRlZCB0byBpbmNsdWRlIHRoZSBuZXcgaHlwZXJjYWxsIGZvcgpyZWdpc3Rl cmluZyB0aGUgc2Vjb25kYXJ5IHZjcHVfdGltZV9pbmZvIHN0cnVjdC4KClNpZ25lZC1vZmYtYnk6 IEpvYW8gTWFydGlucyA8am9hby5tLm1hcnRpbnNAb3JhY2xlLmNvbT4KUmV2aWV3ZWQtYnk6IEp1 ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4KUmV2aWV3ZWQtYnk6IEJvcmlzIE9zdHJvdnNr eSA8Ym9yaXMub3N0cm92c2t5QG9yYWNsZS5jb20+Ci0tLQpDaGFuZ2VzIHNpbmNlIHY2OgogKiBB ZGQgQm9yaXMgUm9CCgpDaGFuZ2VzIHNpbmNlIHY1OgogKiBNb3ZlIHhlbl9zZXR1cF92c3lzY2Fs bF90aW1lX2luZm8gd2l0aGluIHRoZSBQVkNMT0NLX1RTQ19TVEFCTEVfQklUCiBjbGF1c2UgYWRk ZWQgaW4gcHJlZGVjZXNzb3IgcGF0Y2guCgpDaGFuZ2VzIHNpbmNlIHY0OgogKiBSZW1vdmUgcHZj bG9ja19zZXRfZmxhZ3Mgc2luY2UgcHJlZGVjZXNzb3IgcGF0Y2ggd2lsbCBzZXQgaW4KIHhlbl90 aW1lX2luaXQuIENvbnNlcXVlbnRseSBwdnRpIGxvY2FsIHZhcmlhYmxlIGlzIG5vdCBzbyB1c2Vm dWwKIGFuZCBkb2Vzbid0IG1ha2UgdGhpbmdzIG1vcmUgY2xlYXIgLSB0aGVyZWZvcmUgcmVtb3Zl IGl0LgogKiBBZGp1c3QgY29tbWVudCBvbiB4ZW5fc2V0dXBfdnN5c2NhbGxfdGltZV9pbmZvKCkK ICogQWRkIEp1ZXJnZW4ncyBSZXZpZXdlZC1ieSAoUmV0YWluZWQgYXMgdGhlcmUgd2Fzbid0IGZ1 bmN0aW9uYWwKIGNoYW5nZXMpCgpDaGFuZ2VzIHNpbmNlIHYzOgogKENvbW1lbnRzIGZyb20gSnVl cmdlbikKICogUmVtb3ZlIF90IGFkZGVkIHN1ZmZpeCBmcm9tICpHVUVTVF9IQU5ETEUqIHdoZW4g c3luYyB2Y3B1LmgKIHdpdGggdGhlIGxhdGVzdAoKQ2hhbmdlcyBzaW5jZSB2MjoKIChDb21tZW50 cyBmcm9tIEp1ZXJnZW4pCiAqIE9taXQgdGhlIGJsYW5rIGFmdGVyIHRoZSBjYXN0IG9uIGFsbCAz IG9jY3VycmVuY2VzLgogKiBDaGFuZ2UgbGFzdCBWQ0xPQ0tfUFZDTE9DSyBtZXNzYWdlIHRvIGJl IG1vcmUgZGVzY3JpcHRpdmUKICogU3luYyB0aGUgY29tcGxldGUgdmNwdS5oIGhlYWRlciBpbnN0 ZWFkIG9mIGp1c3QgYWRkaW5nIHRoZQogbmVlZGVkIG9uZS4gKElPVyBhZGRpbmcgVkNQVU9QX2dl dF9waHlzaWQpCgpDaGFuZ2VzIHNpbmNlIHYxOgogKiBDaGVjayBmbGFncyBhaGVhZCB0byBzZWUg aWYgdGhlICBwcmltYXJ5IGNsb2NrIGNhbiB1c2UKIFBWQ0xPQ0tfVFNDX1NUQUJMRV9CSVQgZXZl biBpZiBzZWNvbmRhcnkgcmVnaXN0cmF0aW9uIGZhaWxzLgogKENvbW1lbnRzIGZyb20gQm9yaXMp CiAqIFJlbW92ZSBhZGRyLCBhZGRyIHZhcmlhYmxlczsKICogQ2hhbmdlIGZpcnN0IHByX2RlYnVn IHRvIHByX3dhcm47CiAqIENoYW5nZSBsYXN0IHByX2RlYnVnIHRvIHByX25vdGljZTsKICogQWRk IHJvdXRpbmUgdG8gc29sZWx5IHJlZ2lzdGVyIHNlY29uZGFyeSB0aW1lIGluZm8uCiAqIE1vdmUg eGVuX2Nsb2NrIHRvIG91dHNpZGUgeGVuX3NldHVwX3ZzeXNjYWxsX3RpbWVfaW5mbyB0byBhbGxv dwogcmVzdG9yZSBwYXRoIHRvIHNpbXBseSByZS1yZWdpc3RlciBzZWNvbmRhcnkgdGltZSBpbmZv LiBMZXQgdXMKIGhhbmRsZSB0aGUgcmVzdG9yZSBwYXRoIG1vcmUgZ3JhY2VmdWxseSB3aXRob3V0 IHJlLWFsbG9jYXRpbmcgYQogcGFnZS4KICogUmVtb3ZlZCBjcHUgYXJndW1lbnQgZnJvbSB4ZW5f c2V0dXBfdnN5c2NhbGxfdGltZV9pbmZvKCkKICogQWRqdXN0bWVudCBmYWlsZWQgcmVnaXN0cmF0 aW9uIGVycm9yIG1lc3NhZ2VzL2xvZ2xldmVsIHRvIGJlIHRoZSBzYW1lCiAqIEFsc28gdGVhcmRv d24gc2Vjb25kYXJ5IHRpbWUgaW5mbyBvbiBzdXNwZW5kCgpDaGFuZ2VzIHNpbmNlIFJGQzoKIChD b21tZW50cyBmcm9tIEJvcmlzIGFuZCBEYXZpZCkKICogUmVtb3ZlIEtjb25maWcgb3B0aW9uCiAq IFVzZSBnZXRfemVyb2VkX3BhZ2UvZnJlZS9wYWdlCiAqIFJlbW92ZSB0aGUgaHlwZXJjYWxsIGF2 YWlsYWJpbGl0eSBjaGVjawogKiBVbnJlZ2lzdGVyIHB2dGkgd2l0aCBhcmcuYWRkci52ID0gTlVM TCBpZiBzdGFibGUgYml0IGlzbid0IHN1cHBvcnRlZC4KIChOZXcpCiAqIFNldCBzZWNvbmRhcnkg Y29weSBvbiByZXN0b3JlIHN1Y2ggdGhhdCBpdCB3b3JrcyBvbiBtaWdyYXRpb24uCiAqIERyb3Ag Z2xvYmFsIHhlbl9jbG9jayB2YXJpYWJsZSBhbmQgc3Rhc2ggaXQgbG9jYWxseSBvbgogeGVuX3Nl dHVwX3ZzeXNjYWxsX3RpbWVfaW5mby4KICogV0FSTl9PTihyZXQpIGlmIHdlIGZhaWwgdG8gdW5y ZWdpc3RlciB0aGUgcHZ0aS4KLS0tCiBhcmNoL3g4Ni94ZW4vc3VzcGVuZC5jICAgICAgIHwgIDQg KysKIGFyY2gveDg2L3hlbi90aW1lLmMgICAgICAgICAgfCA5MCArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLQogYXJjaC94ODYveGVuL3hlbi1vcHMuaCAgICAgICB8 ICAyICsKIGluY2x1ZGUveGVuL2ludGVyZmFjZS92Y3B1LmggfCA0MiArKysrKysrKysrKysrKysr KysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMTM3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni94ZW4vc3VzcGVuZC5jIGIvYXJjaC94ODYveGVuL3N1c3Bl bmQuYwppbmRleCBkNmIxNjgwNjkzYTkuLjgwMGVkMzZlY2ZiYSAxMDA2NDQKLS0tIGEvYXJjaC94 ODYveGVuL3N1c3BlbmQuYworKysgYi9hcmNoL3g4Ni94ZW4vc3VzcGVuZC5jCkBAIC0xNiw2ICsx Niw4IEBACiAKIHZvaWQgeGVuX2FyY2hfcHJlX3N1c3BlbmQodm9pZCkKIHsKKwl4ZW5fc2F2ZV90 aW1lX21lbW9yeV9hcmVhKCk7CisKIAlpZiAoeGVuX3B2X2RvbWFpbigpKQogCQl4ZW5fcHZfcHJl X3N1c3BlbmQoKTsKIH0KQEAgLTI2LDYgKzI4LDggQEAgdm9pZCB4ZW5fYXJjaF9wb3N0X3N1c3Bl bmQoaW50IGNhbmNlbGxlZCkKIAkJeGVuX3B2X3Bvc3Rfc3VzcGVuZChjYW5jZWxsZWQpOwogCWVs c2UKIAkJeGVuX2h2bV9wb3N0X3N1c3BlbmQoY2FuY2VsbGVkKTsKKworCXhlbl9yZXN0b3JlX3Rp bWVfbWVtb3J5X2FyZWEoKTsKIH0KIAogc3RhdGljIHZvaWQgeGVuX3ZjcHVfbm90aWZ5X3Jlc3Rv cmUodm9pZCAqZGF0YSkKZGlmZiAtLWdpdCBhL2FyY2gveDg2L3hlbi90aW1lLmMgYi9hcmNoL3g4 Ni94ZW4vdGltZS5jCmluZGV4IGZjMDE0OGQzYTcwZC4uZGVjOTY2ZmJlODg4IDEwMDY0NAotLS0g YS9hcmNoL3g4Ni94ZW4vdGltZS5jCisrKyBiL2FyY2gveDg2L3hlbi90aW1lLmMKQEAgLTM3MCw2 ICszNzAsOTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBwdl90aW1lX29wcyB4ZW5fdGltZV9vcHMg X19pbml0Y29uc3QgPSB7CiAJLnN0ZWFsX2Nsb2NrID0geGVuX3N0ZWFsX2Nsb2NrLAogfTsKIAor c3RhdGljIHN0cnVjdCBwdmNsb2NrX3ZzeXNjYWxsX3RpbWVfaW5mbyAqeGVuX2Nsb2NrIF9fcmVh ZF9tb3N0bHk7CisKK3ZvaWQgeGVuX3NhdmVfdGltZV9tZW1vcnlfYXJlYSh2b2lkKQoreworCXN0 cnVjdCB2Y3B1X3JlZ2lzdGVyX3RpbWVfbWVtb3J5X2FyZWEgdDsKKwlpbnQgcmV0OworCisJaWYg KCF4ZW5fY2xvY2spCisJCXJldHVybjsKKworCXQuYWRkci52ID0gTlVMTDsKKworCXJldCA9IEhZ UEVSVklTT1JfdmNwdV9vcChWQ1BVT1BfcmVnaXN0ZXJfdmNwdV90aW1lX21lbW9yeV9hcmVhLCAw LCAmdCk7CisJaWYgKHJldCAhPSAwKQorCQlwcl9ub3RpY2UoIkNhbm5vdCBzYXZlIHNlY29uZGFy eSB2Y3B1X3RpbWVfaW5mbyAoZXJyICVkKSIsCisJCQkgIHJldCk7CisJZWxzZQorCQljbGVhcl9w YWdlKHhlbl9jbG9jayk7Cit9CisKK3ZvaWQgeGVuX3Jlc3RvcmVfdGltZV9tZW1vcnlfYXJlYSh2 b2lkKQoreworCXN0cnVjdCB2Y3B1X3JlZ2lzdGVyX3RpbWVfbWVtb3J5X2FyZWEgdDsKKwlpbnQg cmV0OworCisJaWYgKCF4ZW5fY2xvY2spCisJCXJldHVybjsKKworCXQuYWRkci52ID0gJnhlbl9j bG9jay0+cHZ0aTsKKworCXJldCA9IEhZUEVSVklTT1JfdmNwdV9vcChWQ1BVT1BfcmVnaXN0ZXJf dmNwdV90aW1lX21lbW9yeV9hcmVhLCAwLCAmdCk7CisKKwkvKgorCSAqIFdlIGRvbid0IGRpc2Fi bGUgVkNMT0NLX1BWQ0xPQ0sgZW50aXJlbHkgaWYgaXQgZmFpbHMgdG8gcmVnaXN0ZXIgdGhlCisJ ICogc2Vjb25kYXJ5IHRpbWUgaW5mbyB3aXRoIFhlbiBvciBpZiB3ZSBtaWdyYXRlZCB0byBhIGhv c3Qgd2l0aG91dCB0aGUKKwkgKiBuZWNlc3NhcnkgZmxhZ3MuIE9uIGJvdGggb2YgdGhlc2UgY2Fz ZXMgd2hhdCBoYXBwZW5zIGlzIGVpdGhlcgorCSAqIHByb2Nlc3Mgc2VlaW5nIGEgemVyb2VkIG91 dCBwdnRpIG9yIHNlZWluZyBubyBQVkNMT0NLX1RTQ19TVEFCTEVfQklUCisJICogYml0IHNldC4g VXNlcnNwYWNlIGNoZWNrcyB0aGUgbGF0dGVyIGFuZCBpZiAwLCBpdCBkaXNjYXJkcyB0aGUgZGF0 YQorCSAqIGluIHB2dGkgYW5kIGZhbGxiYWNrcyB0byBhIHN5c3RlbSBjYWxsIGZvciBhIHJlbGlh YmxlIHRpbWVzdGFtcC4KKwkgKi8KKwlpZiAocmV0ICE9IDApCisJCXByX25vdGljZSgiQ2Fubm90 IHJlc3RvcmUgc2Vjb25kYXJ5IHZjcHVfdGltZV9pbmZvIChlcnIgJWQpIiwKKwkJCSAgcmV0KTsK K30KKworc3RhdGljIHZvaWQgeGVuX3NldHVwX3ZzeXNjYWxsX3RpbWVfaW5mbyh2b2lkKQorewor CXN0cnVjdCB2Y3B1X3JlZ2lzdGVyX3RpbWVfbWVtb3J5X2FyZWEgdDsKKwlzdHJ1Y3QgcHZjbG9j a192c3lzY2FsbF90aW1lX2luZm8gKnRpOworCWludCByZXQ7CisKKwl0aSA9IChzdHJ1Y3QgcHZj bG9ja192c3lzY2FsbF90aW1lX2luZm8gKilnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTCk7CisJ aWYgKCF0aSkKKwkJcmV0dXJuOworCisJdC5hZGRyLnYgPSAmdGktPnB2dGk7CisKKwlyZXQgPSBI WVBFUlZJU09SX3ZjcHVfb3AoVkNQVU9QX3JlZ2lzdGVyX3ZjcHVfdGltZV9tZW1vcnlfYXJlYSwg MCwgJnQpOworCWlmIChyZXQpIHsKKwkJcHJfbm90aWNlKCJ4ZW46IFZDTE9DS19QVkNMT0NLIG5v dCBzdXBwb3J0ZWQgKGVyciAlZClcbiIsIHJldCk7CisJCWZyZWVfcGFnZSgodW5zaWduZWQgbG9u Zyl0aSk7CisJCXJldHVybjsKKwl9CisKKwkvKgorCSAqIElmIHByaW1hcnkgdGltZSBpbmZvIGhh ZCB0aGlzIGJpdCBzZXQsIHNlY29uZGFyeSBzaG91bGQgdG9vIHNpbmNlCisJICogaXQncyB0aGUg c2FtZSBkYXRhIG9uIGJvdGgganVzdCBkaWZmZXJlbnQgbWVtb3J5IHJlZ2lvbnMuIEJ1dCB3ZQor CSAqIHN0aWxsIGNoZWNrIGl0IGluIGNhc2UgaHlwZXJ2aXNvciBpcyBidWdneS4KKwkgKi8KKwlp ZiAoISh0aS0+cHZ0aS5mbGFncyAmIFBWQ0xPQ0tfVFNDX1NUQUJMRV9CSVQpKSB7CisJCXQuYWRk ci52ID0gTlVMTDsKKwkJcmV0ID0gSFlQRVJWSVNPUl92Y3B1X29wKFZDUFVPUF9yZWdpc3Rlcl92 Y3B1X3RpbWVfbWVtb3J5X2FyZWEsCisJCQkJCSAwLCAmdCk7CisJCWlmICghcmV0KQorCQkJZnJl ZV9wYWdlKCh1bnNpZ25lZCBsb25nKXRpKTsKKworCQlwcl9ub3RpY2UoInhlbjogVkNMT0NLX1BW Q0xPQ0sgbm90IHN1cHBvcnRlZCAodHNjIHVuc3RhYmxlKVxuIik7CisJCXJldHVybjsKKwl9CisK Kwl4ZW5fY2xvY2sgPSB0aTsKKwlwdmNsb2NrX3NldF9wdnRpX2NwdTBfdmEoeGVuX2Nsb2NrKTsK KworCXhlbl9jbG9ja3NvdXJjZS5hcmNoZGF0YS52Y2xvY2tfbW9kZSA9IFZDTE9DS19QVkNMT0NL OworfQorCiBzdGF0aWMgdm9pZCBfX2luaXQgeGVuX3RpbWVfaW5pdCh2b2lkKQogewogCXN0cnVj dCBwdmNsb2NrX3ZjcHVfdGltZV9pbmZvICpwdnRpOwpAQCAtNDAxLDggKzQ4NywxMCBAQCBzdGF0 aWMgdm9pZCBfX2luaXQgeGVuX3RpbWVfaW5pdCh2b2lkKQogCSAqIGJpdCBpcyBzdXBwb3J0ZWQg aGVuY2Ugc3BlZWRpbmcgdXAgWGVuIGNsb2Nrc291cmNlLgogCSAqLwogCXB2dGkgPSAmX190aGlz X2NwdV9yZWFkKHhlbl92Y3B1KS0+dGltZTsKLQlpZiAocHZ0aS0+ZmxhZ3MgJiBQVkNMT0NLX1RT Q19TVEFCTEVfQklUKQorCWlmIChwdnRpLT5mbGFncyAmIFBWQ0xPQ0tfVFNDX1NUQUJMRV9CSVQp IHsKIAkJcHZjbG9ja19zZXRfZmxhZ3MoUFZDTE9DS19UU0NfU1RBQkxFX0JJVCk7CisJCXhlbl9z ZXR1cF92c3lzY2FsbF90aW1lX2luZm8oKTsKKwl9CiAKIAl4ZW5fc2V0dXBfcnVuc3RhdGVfaW5m byhjcHUpOwogCXhlbl9zZXR1cF90aW1lcihjcHUpOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYveGVu L3hlbi1vcHMuaCBiL2FyY2gveDg2L3hlbi94ZW4tb3BzLmgKaW5kZXggYzhhNmQyMjRmN2VkLi5m OTZkYmVkYjMzZDQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L3hlbi94ZW4tb3BzLmgKKysrIGIvYXJj aC94ODYveGVuL3hlbi1vcHMuaApAQCAtNjksNiArNjksOCBAQCB2b2lkIHhlbl9zZXR1cF9ydW5z dGF0ZV9pbmZvKGludCBjcHUpOwogdm9pZCB4ZW5fdGVhcmRvd25fdGltZXIoaW50IGNwdSk7CiB1 NjQgeGVuX2Nsb2Nrc291cmNlX3JlYWQodm9pZCk7CiB2b2lkIHhlbl9zZXR1cF9jcHVfY2xvY2tl dmVudHModm9pZCk7Cit2b2lkIHhlbl9zYXZlX3RpbWVfbWVtb3J5X2FyZWEodm9pZCk7Cit2b2lk IHhlbl9yZXN0b3JlX3RpbWVfbWVtb3J5X2FyZWEodm9pZCk7CiB2b2lkIF9faW5pdCB4ZW5faW5p dF90aW1lX29wcyh2b2lkKTsKIHZvaWQgX19pbml0IHhlbl9odm1faW5pdF90aW1lX29wcyh2b2lk KTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vaW50ZXJmYWNlL3ZjcHUuaCBiL2luY2x1ZGUv eGVuL2ludGVyZmFjZS92Y3B1LmgKaW5kZXggOTgxODhjODdmNWMxLi41MDRjNzE2MDE1MTEgMTAw NjQ0Ci0tLSBhL2luY2x1ZGUveGVuL2ludGVyZmFjZS92Y3B1LmgKKysrIGIvaW5jbHVkZS94ZW4v aW50ZXJmYWNlL3ZjcHUuaApAQCAtMTc4LDQgKzE3OCw0NiBAQCBERUZJTkVfR1VFU1RfSEFORExF X1NUUlVDVCh2Y3B1X3JlZ2lzdGVyX3ZjcHVfaW5mbyk7CiAKIC8qIFNlbmQgYW4gTk1JIHRvIHRo ZSBzcGVjaWZpZWQgVkNQVS4gQGV4dHJhX2FyZyA9PSBOVUxMLiAqLwogI2RlZmluZSBWQ1BVT1Bf c2VuZF9ubWkgICAgICAgICAgICAgMTEKKworLyoKKyAqIEdldCB0aGUgcGh5c2ljYWwgSUQgaW5m b3JtYXRpb24gZm9yIGEgcGlubmVkIHZjcHUncyB1bmRlcmx5aW5nIHBoeXNpY2FsCisgKiBwcm9j ZXNzb3IuICBUaGUgcGh5c2ljYWwgSUQgaW5mb3JtbWF0aW9uIGlzIGFyY2hpdGVjdHVyZS1zcGVj aWZpYy4KKyAqIE9uIHg4NjogaWRbMzE6MF09YXBpY19pZCwgaWRbNjM6MzJdPWFjcGlfaWQuCisg KiBUaGlzIGNvbW1hbmQgcmV0dXJucyAtRUlOVkFMIGlmIGl0IGlzIG5vdCBhIHZhbGlkIG9wZXJh dGlvbiBmb3IgdGhpcyBWQ1BVLgorICovCisjZGVmaW5lIFZDUFVPUF9nZXRfcGh5c2lkICAgICAg ICAgICAxMiAvKiBhcmcgPT0gdmNwdV9nZXRfcGh5c2lkX3QgKi8KK3N0cnVjdCB2Y3B1X2dldF9w aHlzaWQgeworCXVpbnQ2NF90IHBoeXNfaWQ7Cit9OworREVGSU5FX0dVRVNUX0hBTkRMRV9TVFJV Q1QodmNwdV9nZXRfcGh5c2lkKTsKKyNkZWZpbmUgeGVuX3ZjcHVfcGh5c2lkX3RvX3g4Nl9hcGlj aWQocGh5c2lkKSAoKHVpbnQzMl90KShwaHlzaWQpKQorI2RlZmluZSB4ZW5fdmNwdV9waHlzaWRf dG9feDg2X2FjcGlpZChwaHlzaWQpICgodWludDMyX3QpKChwaHlzaWQpID4+IDMyKSkKKworLyoK KyAqIFJlZ2lzdGVyIGEgbWVtb3J5IGxvY2F0aW9uIHRvIGdldCBhIHNlY29uZGFyeSBjb3B5IG9m IHRoZSB2Y3B1IHRpbWUKKyAqIHBhcmFtZXRlcnMuICBUaGUgbWFzdGVyIGNvcHkgc3RpbGwgZXhp c3RzIGFzIHBhcnQgb2YgdGhlIHZjcHUgc2hhcmVkCisgKiBtZW1vcnkgYXJlYSwgYW5kIHRoaXMg c2Vjb25kYXJ5IGNvcHkgaXMgdXBkYXRlZCB3aGVuZXZlciB0aGUgbWFzdGVyIGNvcHkKKyAqIGlz IHVwZGF0ZWQgKGFuZCB1c2luZyB0aGUgc2FtZSB2ZXJzaW9uaW5nIHNjaGVtZSBmb3Igc3luY2hy b25pc2F0aW9uKS4KKyAqCisgKiBUaGUgaW50ZW50IGlzIHRoYXQgdGhpcyBjb3B5IG1heSBiZSBt YXBwZWQgKFJPKSBpbnRvIHVzZXJzcGFjZSBzbworICogdGhhdCB1c2VybW9kZSBjYW4gY29tcHV0 ZSBzeXN0ZW0gdGltZSB1c2luZyB0aGUgdGltZSBpbmZvIGFuZCB0aGUKKyAqIHRzYy4gIFVzZXJt b2RlIHdpbGwgc2VlIGFuIGFycmF5IG9mIHZjcHVfdGltZV9pbmZvIHN0cnVjdHVyZXMsIG9uZQor ICogZm9yIGVhY2ggdmNwdSwgYW5kIGNob29zZSB0aGUgcmlnaHQgb25lIGJ5IGFuIGV4aXN0aW5n IG1lY2hhbmlzbQorICogd2hpY2ggYWxsb3dzIGl0IHRvIGdldCB0aGUgY3VycmVudCB2Y3B1IG51 bWJlciAoc3VjaCBhcyB2aWEgYQorICogc2VnbWVudCBsaW1pdCkuICBJdCBjYW4gdGhlbiBhcHBs eSB0aGUgbm9ybWFsIGFsZ29yaXRobSB0byBjb21wdXRlCisgKiBzeXN0ZW0gdGltZSBmcm9tIHRo ZSB0c2MuCisgKgorICogQGV4dHJhX2FyZyA9PSBwb2ludGVyIHRvIHZjcHVfcmVnaXN0ZXJfdGlt ZV9pbmZvX21lbW9yeV9hcmVhIHN0cnVjdHVyZS4KKyAqLworI2RlZmluZSBWQ1BVT1BfcmVnaXN0 ZXJfdmNwdV90aW1lX21lbW9yeV9hcmVhICAgMTMKK0RFRklORV9HVUVTVF9IQU5ETEVfU1RSVUNU KHZjcHVfdGltZV9pbmZvKTsKK3N0cnVjdCB2Y3B1X3JlZ2lzdGVyX3RpbWVfbWVtb3J5X2FyZWEg eworCXVuaW9uIHsKKwkJR1VFU1RfSEFORExFKHZjcHVfdGltZV9pbmZvKSBoOworCQlzdHJ1Y3Qg cHZjbG9ja192Y3B1X3RpbWVfaW5mbyAqdjsKKwkJdWludDY0X3QgcDsKKwl9IGFkZHI7Cit9Owor REVGSU5FX0dVRVNUX0hBTkRMRV9TVFJVQ1QodmNwdV9yZWdpc3Rlcl90aW1lX21lbW9yeV9hcmVh KTsKKwogI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19WQ1BVX0hfXyAqLwotLSAKMi4xMS4wCgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcv eGVuLWRldmVsCg==