From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id CB0F1C4332F for ; Mon, 13 Nov 2023 21:22:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:Cc:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=m8QNgLT6kMNjXv5147ItR/F7npsH6VBezZvFj8d+5A8=; b=MWHCKfZStxVaPe 6HZYuHO/mKq2EvOGjllV4vgDuLdT79NxcBDj2Jq2/ZDkT2BRxQ5Ud4poALo0iUM2CcMTS4cYFyYPc xwJv/cy5/EwTt4bh8CCBV5sw4r51Q1Afp3cSgjFjqejp9tJt69gZhnyLar5s10mXHIsutbLt8ZacW psWJ0g7An5fpLghwzUfGyCnBccCw/9Y9OHfYS/ZRxiGeiQ5ewl4DHNSRQ/itatOekjNoqerS8PX44 eZBbxDSvcvylneVh+zv2gTNeC57cFfJ7Ud3amTr4OQRXEyO4koxiVa5AvHHI1PP7WpLSIH5uGnuCE BGq5BVp+0Jlz+oQQJSDA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r2eOR-00Ek4h-0W; Mon, 13 Nov 2023 21:22:51 +0000 Received: from s3.sipsolutions.net ([2a01:4f8:242:246e::2] helo=sipsolutions.net) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r2eON-00Ek48-0y for linux-um@lists.infradead.org; Mon, 13 Nov 2023 21:22:49 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sipsolutions.net; s=mail; h=MIME-Version:Content-Transfer-Encoding: Content-Type:References:In-Reply-To:Date:Cc:To:From:Subject:Message-ID:Sender :Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-To: Resent-Cc:Resent-Message-ID; bh=Z6yPjEN0Pr/Bs4uwH2XXofv9vHLL/Gu8PMHJAUIO8hE=; t=1699910564; x=1701120164; b=magf7kNBkvdPKs1UUa7k2xrTlWoXs4rCKzkUwk62GJ09r9r x1SfzlVrYCE5jjxzH+du1T3Onpem42GrLTCK415N1XFjNsQa2IcOlzHYFd5Pd0tGJOWXvoDjIJzXI mHeFjB3xB6ScOpvvTiE7V1dzoOlXX0Hq0kWrs1i+g0qM0vLzqbj3FTP+gHmZYPo9LfDgf/CFN+gQ2 Ve/Ygc0m6lS78WEpoiX1W6YajzCMME9gxyBX5JbWKEw3fI6Y7+RNxK7qyK4leJYbDSivF6Mnx3Jwe DnBgWrDNPtYjmvkxJks7KYSBpw/38lFLSYvEk6qMtexhMkA168EgCXAscfRxtd8g==; Received: by sipsolutions.net with esmtpsa (TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.97) (envelope-from ) id 1r2eOH-00000006w2j-3o9D; Mon, 13 Nov 2023 22:22:42 +0100 Message-ID: <9c7f83b15bd2c293c7ee0933d33fd9f294f11c87.camel@sipsolutions.net> Subject: Re: [PATCH RFC 03/11] um: Use a simple time travel handler for line interrupts From: Johannes Berg To: Benjamin Beichler , Richard Weinberger , Anton Ivanov Cc: linux-um@lists.infradead.org Date: Mon, 13 Nov 2023 22:22:40 +0100 In-Reply-To: References: <20231103-bb-timetravel-patches-v1-0-e2c68efcf664@uni-rostock.de> <20231103-bb-timetravel-patches-v1-3-e2c68efcf664@uni-rostock.de> <71657ebd4a582b1a3c876de4d778ff67bd29c49d.camel@sipsolutions.net> <15d63c81-9e41-4965-b988-c4a934aecc52@uni-rostock.de> <9d7509efed4292891b4ffbf063ae58f11af8b742.camel@sipsolutions.net> User-Agent: Evolution 3.48.4 (3.48.4-1.fc38) MIME-Version: 1.0 X-malware-bazaar: not-scanned X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231113_132247_722531_D8CDDD07 X-CRM114-Status: GOOD ( 51.88 ) X-BeenThere: linux-um@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-um" Errors-To: linux-um-bounces+linux-um=archiver.kernel.org@lists.infradead.org T24gTW9uLCAyMDIzLTExLTEzIGF0IDEyOjQ2ICswMTAwLCBCZW5qYW1pbiBCZWljaGxlciB3cm90 ZToKPiA+IFNvIEkgZG9uJ3QgcmVhbGx5IGFncmVlIHRoYXQgYmFraW5nIGEgIm11c3QgYmUgc2No ZWR1bGVkIGltbWVkaWF0ZWx5Igo+ID4gaW50byBhbnkgcHJvdG9jb2wgcmVhbGx5IG1ha2VzIHNl bnNlLgoKPiBJIHRoaW5rIHlvdSBhcmUgbWl4aW5nIGhlcmUgc29tZSBsZXZlbHMgb2YgYWJzdHJh Y3Rpb24uIFNvbWUgZW50aXR5IGluIAo+IHRoZSAic3lzdGVtIiBuZWVkcyB0byByZWFjdCB0byBh biBpbnRlcnJ1cHQgaW1tZWRpYXRlbHkuCgpEb24ndCB0aGluayBJIGFncmVlLCB0aGF0J3Mgbm90 IHJlYWxseSBuZWNlc3NhcnkuCgo+IEluIHRoZSByZWFsIHdvcmxkLCB0aGlzIGlzIG1vc3RseSAK PiBkb25lIGJ5IHNvbWUga2luZCBvZiBpbnRlcnJ1cHQgY29udHJvbGxlcgo+IHdoaWNoIG1heSBs YXRjaCB0aGUgaW50ZXJydXB0IChpZiB0aGV5IGFyZSBkZWFjdGl2YXRlZCBmcm9tIENQVSBzaWRl KS4gCgpFdmVuIHRoYXQgaXRzZWxmIG1heSBqdXN0IGJlIHBvbGxpbmcgc29tZSBsaW5lcywgdGhl b3JldGljYWxseS4KCkJ1dCB0aGF0J3MgbW9zdGx5IHRoZW9yZXRpY2FsIC0gaWYgeW91IHdhbnRl ZCB0byBzaW11bGF0ZSBzb21lIGludGVycnVwdApsYXRlbmN5LCB5b3UnZCBzaW1wbHkgbm90IHJl YWN0ICdpbW1lZGlhdGVseScgYnV0IHJhdGhlciBzb21lIGFtb3VudCBvZgp0aW1lIGxhdGVyOyB0 aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgYW5kIGFsbCB0aGF0IGlzIGJhc2ljYWxseSBhbGwgdGhl CnNhbWUgcGllY2Ugb2YgY29kZS4KCj4gT2YgY291cnNlIHNvbWUgbW9yZSBzb3BoaXN0aWNhdGVk Cj4gYnVzIHByb3RvY29scyAoaS5lLiB2aXJ0aW8vdmhvc3QgaW4gdGhpcyBjYXNlKSBjYW4gYWxz byBzaWduYWwgdGhlIAo+IGRldmljZSB0byBkbyBubyBpbnRlcnJ1cHRzLCBidXQgaW4gdGhlIG1v c3QKPiBiYXNpYyBjYXNlLCBlLmcuIGEgYnV0dG9uIGF0IGEgR1BJTyBwaW4sIHRoZSBkZXZpY2Ug Y291bGQgbm90IGhhbmRsZSAKPiB0aGF0LsKgCgpOb3Qgc3VyZSBJIGZvbGxvdyAtIGhvdydzIHRo YXQgcmVsYXRlZCB0byB0aGUgcHJvdG9jb2w/IEVpdGhlciB5b3UgZ2V0CmFuIGludGVycnVwdCBv ciB5b3UgZG9uJ3QsIGJ1dCBvbmNlIHlvdSBkbyBnZXQgaXQsIHRoZXJlJ3MgYWxzbyBub3RoaW5n CnRoYXQgc2F5cyB5b3Ugd2lsbCBoYW5kbGUgaXQgaW1tZWRpYXRlbHkuCgoKPiBNb3N0IG9mIHRo ZSBpbnRlcnJ1cHQgYWJzdHJhY3Rpb24gaW4gdW0gaXMgcmVhbGl6ZWQgdmlhIHNpZ25hbHMsCgpX aGljaCBpcyBhY3R1YWxseSB1bm5lY2Vzc2FyeSBmb3IgdGhpcyBraW5kIG9mIHNpbXVsYXRpb24g c2luY2UgdGhlIFVNTAppbnN0YW5jZSBtdXN0IGJlIGluIGlkbGUgYnkgZGVmaW5pdGlvbiBmb3Ig c29tZW9uZSBlbHNlIHRvIGJlIHJ1bm5pbmcKYW5kIHNlbmRpbmcgaXQgJ3JlYWwnIGludGVycnVw dHMuIFdlIGNvdWxkIGFzIHdlbGwganVzdCBkaXJlY3RseSBidWlsZAphbiBlcG9sbCBsb29wIHRo ZXJlLCBidXQgdGhhdCdzIG1vcmUgY29tcGxpY2F0ZWQgc3VyZ2VyeSBpbiB0aGUgaW5uYXJkcwpv ZiBVTUwncyBpbnRlcnJ1cHQgbW9kZWwgdGhhdCBpc24ndCByZWFsbHkgbmVlZGVkLgoKV2l0aG91 dCB0aW1lLXRyYXZlbCwgaXQgX2lzXyBuZWVkZWQgc2luY2UgeW91IHdhbnQgdG8gaGF2ZSAncmVh bCcKaW50ZXJydXB0cyB0aGF0IGFjdHVhbGx5IHN0b3AgYSBwcm9jZXNzIGZyb20gcnVubmluZyBh bmQgeW91IGdldCBpbnRvCnRoZSBkZXZpY2UgZHJpdmVyIGFuZCBhbGwuCgo+IGJ1dCBzb21lIG1v cmUgc2VlbXMgKElNSE8pIHRvIGJlIG5lZWRlZCAKPiBmcm9tIHRoZSB0dC1wcm90b2NvbCwgaWYg d2UgaGF2ZSBleHRlcm5hbAo+IGRldmljZSBzaW11bGF0aW9ucy7CoAoKV2VsbCwgSSBqdXN0IHNh aWQgYWJvdmUgX2xlc3NfIGlzIGFjdHVhbGx5IG5lZWRlZCA7LSkKClRoZSBfbW9yZV8gdGhhdCdz IG5lZWRlZCBpcyB0byBhY3R1YWxseSBlbnN1cmUgdGhlICJvbmx5IG9uZSB0aGluZyBpcwpydW5u aW5nIiBwYXJ0LCB3aGljaCBJJ3ZlIGJ1aWx0IGludG8gdGhlIHN5c3RlbSB2aWEgYWNrbm93bGVk Z2VtZW50IChvcgpwZXJoYXBzIHJlcXVpcmVtZW50IGZvciB0aG9zZSkuCgo+IE15IHN1Z2dlc3Rp b24gd2FzIHRvIGFkZCB0aGUgdmlydHVhbCBpbnRlcnJ1cHQgbGluZSAKPiBzdGF0ZSBjaGFuZ2Ug YXMgYSBtZXNzYWdlIHRvIHRoZSBjYWxlbmRhci4KClllcyBidXQgaXQgZG9lc24ndCB3b3JrIHVu bGVzcyB0aGUgb3RoZXIgc2lkZSBfYWxyZWFkeV8ga25vd3MgdGhhdCBpdAp3aWxsIGhhcHBlbiwg YmVjYXVzZSBpdCBicm9rZSB0aGUgcnVsZSBvZiAib25seSBvbmUgdGhpbmcgaXMgcnVubmluZyIu CgpBZ2FpbiB5b3UgY2FuIGFyZ3VlIHRoYXQgaXQncyBmaW5lIHRvIHJldHVybiB0byB0aGUgY2Fs ZW5kYXIgZXZlbiBpZiB0aGUKcmVjZWl2aW5nIHByb2Nlc3Mgd29uJ3QgYWN0dWFsbHkgZG8gYW55 dGhpbmcsIGJ1dCBiZWNhdXNlIHRoZSByZWNlaXZpbmcKcHJvY2VzcyBpcyBzdGlsbCB0aGlua2lu ZyBhYm91dCBpdCwgeW91IGVuZCB1cCB3aXRoIGFsbCB0aGUgY29udG9ydGlvbnMKeW91IGhhdmUg dG8gZG8gaW4gcGF0Y2ggNCBhbmQgNyAuLi4gYmVjYXVzZSBldmVuIHRoZSBfY2FsZW5kYXJfIGRv ZXNuJ3QKa25vdyB3aGVuIHRoZSByZXF1ZXN0IHdpbGwgYWN0dWFsbHkgY29tZSB0byBpdC4KClBl cmhhcHMgb25lIHdheSBvZiBoYW5kbGluZyB0aGlzIHRoYXQgZG9lc24ndCByZXF1aXJlIGFsbCB0 aG9zZQpjb250b3J0aW9ucyB3b3VsZCBiZSBmb3IgdGhlIHNlbmRlciBvZiB0aGUgZXZlbnQgdG8g YWN0dWFsbHkKX2NvbXBsZXRlbHlfIGhhbmRsZSB0aGUgY2FsZW5kYXIgcmVxdWVzdCBmb3IgdGhl IGludGVycnVwdCBvbiBiZWhhbGYgb2YKdGhlIHJlY2VpdmVyLCBzbyB0aGF0IHRoZSByZWNlaXZl ciBkb2Vzbid0IGFjdHVhbGx5IGRvIF9hbnl0aGluZ18gYnV0Cm1hcmsgInRoaXMgSVJRIGlzIHBl bmRpbmciIGluIHRoaXMgY2FzZS4gT25jZSBpdCBhY3R1YWxseSBnZXRzIGEgUlVOCm1lc3NhZ2Ug aXQgd2lsbCBhY3R1YWxseSBzdGFydCBydW5uaW5nIHNpbmNlIGl0IGFzc3VtZXMgdGhhdCBpdCB3 aWxsIG5vdApnZXQgYSBSVU4gbWVzc2FnZSB3aXRob3V0IGhhdmluZyByZXF1ZXN0ZWQgYSBjYWxl bmRhciBlbnRyeS4gSWYgdGhlCmNhbGVuZGFyIGVudHJ5IHdlcmUgYWxyZWFkeSBoYW5kbGUgb24g aXRzIGJlaGFsZiwgeW91J2Qgbm90IG5lZWQgdGhlCnJlcXVlc3QgYW5kIHRoZXJlZm9yZSBub3Qg bmVlZCB0aGUgc3BlY2lhbCBoYW5kbGluZyBmb3IgdGhlIHJlcXVlc3QgZnJvbQpwYXRjaCA0LgpZ b3UnZCBuZWVkIGEgZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIG9mIHBhdGNoZXMgMi8zLCBhbmQg Z2V0IHJpZCBvZgpwYXRjaGVzIDQsIDYsIDcgYW5kIDguCgoKU28gLi4uIHRoaW5raW5nIGFib3V0 IHRoYXQgbW9yZSwgdGhlIGlzc3VlIGlzbid0IHNvIG11Y2ggdGhhdCB5b3UncmUKbWFraW5nIGFu IGFzc3VtcHRpb24gdGhhdCB0aGUgaW50ZXJydXB0IHNob3VsZCBoYXBwZW4gcmlnaHQgYXdheSwg aXQncwp0aGF0IG9ubHkgc29tZSBwYXJ0cyBvZiB5b3VyIHN5c3RlbSBhcmUgbWFraW5nIHRoYXQg YXNzdW1wdGlvbiAodGhlCnNlbmRlciBvZiB0aGUgZXZlbnQgdGhhdCBjYXVzZXMgdGhlIGludGVy cnVwdCksIGFuZCB0aGVuIHlvdSdyZSBsZWF2aW5nCnRoZSByZXN0IG9mIHRoZSBzeXN0ZW0gdG8g Y2F0Y2ggdXAgd2l0aCBzb21ldGhpbmcgdGhhdCBhY3R1YWxseSBnZXRzCnByb2Nlc3NlZCBfYXN5 bmNocm9ub3VzbHlfLCBjYXVzaW5nIGFsbCBraW5kcyBvZiB0cm91YmxlLgoKPiBPZiBjb3Vyc2Us IHlvdSBjb3VsZCBhcmd1ZSwgdGhhdCB0aGUgZGV2aWNlIHNpbXVsYXRpb24gbmVlZHMgdG8gYmUg Cj4gY2xldmVyIGVub3VnaCAoc28gZGlzdHJpYnV0aW5nIHRoaXMgdGFzayBvZiB0aGUKPiBpbnRl cnJ1cHQgY29udHJvbGxlciksIGJ1dCBldmVuIHRoZXJlZm9yZSB0aGUgZGV2aWNlIHNpbXVsYXRp b24gbmVlZCAKPiBzb21lIG1vcmUgaW5mb3JtYXRpb24gdG8gcmVmbGVjdCBkZWxheWVkIGludGVy cnVwdHMsCj4gZGVhY3RpdmF0ZWQgaW50ZXJydXB0cyBhbmQgc28gb24uCj4gCj4gV2hhdCBjb25m dXNlcyBtZSBpcywgdGhhdCB5b3UgZXhwbGljaXRseSB1c2UgdGhlIGltbWVkaWF0ZSBzeW5jaHJv bm91cyAKPiByZXNwb25zZSBtb2RlbCBvbiB0aGUgaW50ZXJydXB0cyBmcm9tIHRoZSB2aG9zdC92 aXJ0aW8KPiBkcml2ZXIsIGJ1dCB5b3Ugc2VlbSB0byByZWZ1c2UgdGhpcyBvbiBvdGhlciBkcml2 ZXJzLgoKSSBkaWRuJ3QgbWVhbiB0byBfcmVmdXNlXyBpdCwgYW5kIGFjdHVhbGx5IHlvdSdsbCBu b3RlIHRoYXQgSSBtYWRlIHRoZQp1c2ZzdGwgZGV2aWNlIGFic3RyYWN0aW9uIGFibGUgdG8gdHJp dmlhbGx5IGltcGxlbWVudCBpbnRlcnJ1cHQgbGF0ZW5jeQpieSBzZXR0aW5nIGEgc2luZ2xlIHBh cmFtZXRlciAobmFtZWQgImludGVycnVwdF9sYXRlbmN5IiA6LSkgKSwgc28gaXQncwpiZWVuIHNv bWV0aGluZyB0aGF0IHdhcyBkZWZpbml0ZWx5IG9uIG15IG1pbmQsIGJ1dCBzbyBmYXIgbm8gdGVz dGluZwpzY2VuYXJpbyBoYXMgbmVlZGVkIGl0LCBhbmQgdGhlIHNpbXVsYXRpb24gcnVucyBmYXN0 ZXIgd2l0aG91dCBpdCA7LSkKClNvIG5vLCBJJ20gbm90IGFjdHVhbGx5IHRyeWluZyB0byB0ZWxs IHlvdSB0aGF0IHlvdSBtdXN0IGltcGxlbWVudAppbnRlcnJ1cHQgbGF0ZW5jeS4gU29ycnkgSSBj YW1lIGFjcm9zcyB0aGF0IHdheS4KCkkgd2FzIGp1c3QgdHJ5aW5nIHRvIHVzZSB0aGUgaW50ZXJy dXB0IGxhdGVuY3kgYXMgYSByZWFzb25pbmcgZm9yIHdoeQp0aGUgcmVjaXBpZW50IHNob3VsZCBi ZSBpbiBjb250cm9sLCBidXQgbm93IGhhdmluZyB0aG91Z2h0IGFib3V0IGl0Cm1vcmUsIEkgZG9u J3QgZXZlbiB0aGluayB0aGUgcmVjaXBpZW50IF9uZWVkc18gdG8gYmUgaW4gY29udHJvbCwganVz dAp0aGF0IG9uZSBzaWRlIG5lZWRzIHRvIGJlIF9mdWxseV8gaW4gY29udHJvbCwgYW5kIHRoZSBt b2RlbCB5b3UndmUgYnVpbHQKaGFzIGJvdGggc2lkZXMgaW4gY29udHJvbCBhbmQgcmFjaW5nIGFn YWluc3QgZWFjaCBvdGhlciAoYW5kIGluIHRoZSBjYXNlCm9mIFVNTCBldmVuIHdpdGggaXRzZWxm IGludGVybmFsbHkgcHJvY2Vzc2luZyB0aGUgc2lnbmFsLikKCj4gPiA+IFdoeSBjb3VsZG4ndCB3 ZSBiZSBtb3JlCj4gPiA+IGV4cGxpY2l0IGluIHRoZSB0aW1lIHRyYXZlbCBwcm90b2NvbCB0byB0 aGUgY2FsZW5kYXIgYWJvdXQgaW50ZXJydXB0cz8KPiA+ID4gV2UgY291bGQgdXNlIHRoZSBJRCBm cm9tIHRoZSBzdGFydC1tc2cgdG8gaWRlbnRpZnkgdW0gaW5zdGFuY2VzIGFuZAo+ID4gPiB0ZWxs LCBpbiBhbiBhZGRpdGlvbmFsIG1zZywgdGhhdCB3ZSBhcmUgZ29pbmcgdG8gdHJpZ2dlciBhbiBp bnRlcnJ1cHQgYXQKPiA+ID4gdGhlIGN1cnJlbnQgdGltZSB0byB0aGF0IGluc3RhbmNlIGZyb20g dGhlIGRldmljZSBzaW11bGF0aW9uLgo+ID4gQnV0IHNlZSBhYm92ZSAtIEkgYmFzaWNhbGx5IGp1 c3QgZG9uJ3QgdGhpbmsgdGhlIHNlbmRlciBvZiB0aGUgZXZlbnQgaXMKPiA+IHRoZSByaWdodCBw b3NpdGlvbiB0byBrbm93IHRoYXQgaW5mb3JtYXRpb24uCgpZZWFoIHlvdSBrbm93IHdoYXQsIEkg cGFydGlhbGx5IHJldHJhY3QgdGhhdCBzdGF0ZW1lbnQuIEkgc3RpbGwgdGhpbmsKa2luZCBvZiB0 aGUgcmlnaHQgd2F5IHRvIHRoaW5rIGFib3V0IGl0IGlzIHRvIGhhdmUgdGhlIHJlY2lwaWVudCBp bgpjb250cm9sLCBidXQgdGhlcmUgYXJlIGluZGVlZCB0aGluZ3MgbGlrZSB0aGUgbGluZSBpbnRl cnJ1cHRzIHdoZXJlCnBlcmhhcHMgaXQncyBiZXR0ZXIgdG8gcHV0IHRoZSBzZW5kZXIgaW4gY29u dHJvbC4gSXQncyBwZXJoYXBzIG5vdAp0cml2aWFsIHNpbmNlIHlvdSBtaWdodCB3YW50IHRvIGRv IGEgZmV3IHdyaXRlcz8gWW91J2QgaGF2ZSB0byBjb21iaW5lCnRoYXQgaW50byBtYWtpbmcgYSBz aW5nbGUgY2FsZW5kYXIgaW50ZXJydXB0IHByb2Nlc3NpbmcgZW50cnkgb24gYmVoYWxmCm9mIHRo ZSByZWNlaXZlci4KCgo+IE1oaCBpZiBJIGFwcGx5IHRoYXQgdG8gdGhlIHZob3N0L3ZpcnRpbyBz aW11bGF0aW9ucywgdGhhdCBpcywgd2hhdCBpcyAKPiBpbXBsaWNpdGx5IG1vZGVsZWQgYnkgdGhl IGV4Y2hhbmdlZCBmaWxlIGRlc2NyaXB0b3JzIGFuZCB2aG9zdC92aXJ0aW8KPiBwcm90b2NvbCBz dGF0ZS4KCk5vdCBzdXJlIEkgZm9sbG93PyBUaGUgd2hvbGUgZmlsZSBkZXNjcmlwdG9ycyBhbmQg YWxsIGFyZSBqdXN0CmVzdGFibGlzaGluZyBjb21tdW5pY2F0aW9uIG1lY2hhbmlzbXM/Cgo+IFdl IG1heSBjaGFuZ2UgdGhlIHdob2xlIHR0LWV4dC1tb2RlIHRvIG9ubHkgYWNjZXB0IHZob3N0L3Zp cnRpbyBkcml2ZXJzLCAKPiBidXQgdGhhdCBuZWVkcyB0bwo+IGJlIHN0YXRlZCBleHBsaWNpdGx5 IGluIHRoZSBkb2N1bWVudGF0aW9uLiBJJ20gbm90IHJlYWxseSBpbiBmYXZvciBvZiAKPiB0aGF0 LCBidXQgaWYgaXQgaXMgZG9jdW1lbnRlZAo+IGl0IGlzIGVhc2llciB0byB1bmRlcnN0YW5kLgoK U2VlIGFib3ZlLiBJIGd1ZXNzIHdlIGRvbid0IGhhdmUgdG8sIGlmIHdlIHB1dCBhIGJpdCBtb3Jl IHJlcXVpcmVtZW50IG9uCnRoZSBzZW5kZXIuCgo+ID4gRG9uJ3QgdGhpbmsgSSB1bmRlcnN0YW5k IHRoYXQuIFdoaWNoICJmYWNpbGl0aWVzIiBhcmUgeW91IHJlZmVycmluZyB0bwo+ID4gaGVyZT8K PiBJIGhhZG4ndCByZXNlYXJjaGVkIHRoYXQgb24gRnJpZGF5LCBidXQgd2UgY291bGQgdXNlIGEg Y3VzdG9tIGNvbnRyb2wgCj4gbXNnIChjbXNnKSBvbiB0aGUgdW5peCBzb2NrZXRzCj4gYXR0YWNo ZWQgdG8gdGhlIChzZXJpYWwpIGxpbmUgZGV2aWNlcy4gVGhlIGRldmljZSBzaW11bGF0aW9uIGNh biB0aGVuIAo+IHdhaXQgb24gdGhhdCBhbmNpbGxhcnkgZGF0YSBmb3IKPiBzeW5jaHJvbm91cyBp bnRlcnJ1cHQgaGFuZGxpbmcsIGFzIHlvdSBoYXZlIHByb3Bvc2VkIGZvciB2aG9zdC92aXJ0aW8u IAo+IE15IGZpcnN0IGlkZWEgd2FzIHRvIHVzZQo+IE1TR19PT0IsIHdoaWNoIGRvIG5vdCBleGl0 IG9uIFVuaXgtRG9tYWluLVNvY2tldHMuIElmIHNvbWVvbmUgZG9lcyBub3QgCj4gdXNlIHVkcyBh cyB0cmFuc3BvcnQKPiB3ZSBtYXkgZ2l2ZSBhIHdhcm5pbmcuCgpOb3Qgc3VyZSB0aGF0IHJlYWxs eSB3b3Jrcywgd2hhdCB3b3VsZCB5b3UgdHJhbnNmZXIgaW4gdGhlIG90aGVyCmRpcmVjdGlvbj8g T3Igc2VuZCBhbiBmZCBhbmQgdGhlbiB3YWl0IGZvciBpdCB0byBnZXQgYSBtZXNzYWdlIG9uIHRo YXQKZmQgb3Igc29tZXRoaW5nPwoKam9oYW5uZXMKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXVtIG1haWxpbmcgbGlzdApsaW51eC11bUBsaXN0 cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGlu Zm8vbGludXgtdW0K