From owner-freebsd-mips@freebsd.org Thu Jul 21 15:46:37 2016 Return-Path: Delivered-To: freebsd-mips@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 12652BA0022 for ; Thu, 21 Jul 2016 15:46:37 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-it0-x232.google.com (mail-it0-x232.google.com [IPv6:2607:f8b0:4001:c0b::232]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id CA6D519DC for ; Thu, 21 Jul 2016 15:46:36 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: by mail-it0-x232.google.com with SMTP id u186so17324747ita.0 for ; Thu, 21 Jul 2016 08:46:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to; bh=VFKkbOzxRE046qoSVVegVjVulhJkb4PCcmbzIGU00Bw=; b=bWXXEFDmym7S7yRVGz6AEFVycgIAQSISPfdF0yoISxpp92p49GcDXW8yRj4q3jrTat a46Auio436DpPlKg0L2vFMtesZ2+TIsUxX9fcrW6oShKXIeAt0MrupTSnrVsw8yF1kgP vtDwtURNthVXKkLEZZVK106gkpTXakHV5R9EuRZW/8XUbb4yA7X6f/Ffc+uvF1HKcD4l Zr3gIh06j5XFyGCX12pVf9qDeNW6X7qqfYy9CaW46CSbsM4A02Kz2Ug/7AaPpF1hoC0Q 6tKGZPgybtYgGcD4Dol64TEYqq1ZVH/2gGw5B3eLVIX8qwdZkjaOes3KY+Mh71ug8L0u ReNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to; bh=VFKkbOzxRE046qoSVVegVjVulhJkb4PCcmbzIGU00Bw=; b=VnDxSreYPIxn+CNUbbgOsRIpF7E5nTjYT+DZKXgrmLO/YNZlz5XAVww7fvQdob1BN9 OEyBPE+lBkWW2EFwE45UZpduMRixnoNDsFFe2cacgldtm3ZiDwrt68S14Qm6b2hBxwSq coCA9Ktco3mDaFXO1vI1Oo3HP7uuBX+v1q9i37f/fNbznV2WsSRKtXprFfExxNASBYpd 11eYylUwp6ea4pJczceMWHWPjf1xqi2a0trez0zqpmQCfuzz/Xsk0S4NcQAnz/Jr9/xf RMGppB7T97+p2NkCDuRDyz7n5f64zREtVLvxiqRLNOZVb6iyaRCccRXKnu4L2YBDEsOs 23Dw== X-Gm-Message-State: ALyK8tK54qACiUu3MF0QaA+gwkIJfEhQV1CYN/oGCg6K4s3YgSJ1vZWVgSspOiZvTsGJks2Dql9uFricvHaOEA== X-Received: by 10.36.111.72 with SMTP id x69mr15015539itb.71.1469115995875; Thu, 21 Jul 2016 08:46:35 -0700 (PDT) MIME-Version: 1.0 Sender: adrian.chadd@gmail.com Received: by 10.36.141.129 with HTTP; Thu, 21 Jul 2016 08:46:34 -0700 (PDT) In-Reply-To: <1289901750.3301205.1469111484769.JavaMail.yahoo@mail.yahoo.com> References: <1166879717.1933909.1469073212661.JavaMail.yahoo@mail.yahoo.com> <1289901750.3301205.1469111484769.JavaMail.yahoo@mail.yahoo.com> From: Adrian Chadd Date: Thu, 21 Jul 2016 08:46:34 -0700 X-Google-Sender-Auth: 6rW5Q2ygzA3p-9F75YOZJrGJIXE Message-ID: Subject: Fwd: mips TLS! To: "freebsd-mips@freebsd.org" Content-Type: multipart/mixed; boundary=001a11439d44118ba505382739d7 X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jul 2016 15:46:37 -0000 --001a11439d44118ba505382739d7 Content-Type: text/plain; charset=UTF-8 hi! Stacey did up some TLS work for mips in 2014 but it never landed in -HEAD. Dan updated it to compile/run for mips32, and the performance improvements are great. Does anyone have a mips64 system they can test this on? I'd like to commit this soon. :) Thanks! -adrian ---------- Forwarded message ---------- From: Dan Nelson Date: 21 July 2016 at 07:31 Subject: Re: mips TLS! To: Adrian Chadd Cc: Stacey Son , Robert Watson , Stacey Son Oops - here they are. The benchmark numbers of course don't reflect reflect the gains I saw in every program. I only picked ones that were generating large amounts of syscalls. Some apps, like gcc, managed to consume vast quantities of ram without needing TLS even before patching. ________________________________ From: Adrian Chadd To: Dan Nelson Cc: Stacey Son ; Robert Watson ; Stacey Son Sent: Thursday, July 21, 2016 12:10 AM Subject: Re: mips TLS! Woohoo! Patches? :) On Jul 20, 2016 8:54 PM, "Dan Nelson" wrote: The TLS patches seem to be a success, after fixing a couple of rejected patch blocks and fixing up some compile errors in the mips32 code. Tiny benchmark results: > >"sqlite3 /var/db/pkg/local.sqlite vacuum" >total syscall count went from 570000 -> 117000 >20% reduction in user+sys cpu time (7.06 -> 5.66) > >"portupgrade -f doesntexist" >total syscall count went from 3835000 -> 14000 >52% reduction in user+sys cpu time (25.3 -> 12.1) > >"du -s /usr/local" >total syscall count went from 485000 -> 69400 >38% reduction in user+sys cpu time (5.08 -> 3.14) > >Raw numbers attached. > > > >________________________________ >From: Adrian Chadd >To: Stacey Son >Cc: Stacey Son ; Robert Watson ; Dan Nelson >Sent: Tuesday, July 19, 2016 8:00 PM >Subject: Re: mips TLS! > > >heh, dynamic patching always makes me itch. But, dtrace does it, right? :P > >Dan, let's give the TLS patches a go and see how well it works out. :) > > > > >-a --001a11439d44118ba505382739d7 Content-Type: application/octet-stream; name="ulri_kernel.diff" Content-Disposition: attachment; filename="ulri_kernel.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: 32c534173ab0075c_0.1 SW5kZXg6IHN5cy9taXBzL2luY2x1ZGUvY3B1ZnVuYy5oCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9taXBz L2luY2x1ZGUvY3B1ZnVuYy5oCShyZXZpc2lvbiAzMDMxMjYpCisrKyBzeXMvbWlwcy9pbmNsdWRl L2NwdWZ1bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDYgKzE1OSw3IEBAIG1pcHNfd3JfICMj IG4odWludDY0X3QgYTApCQkJCQlcCiBNSVBTX1JXNjRfQ09QMChleGNwYywgTUlQU19DT1BfMF9F WENfUEMpOwogTUlQU19SVzY0X0NPUDAoZW50cnloaSwgTUlQU19DT1BfMF9UTEJfSEkpOwogTUlQ U19SVzY0X0NPUDAocGFnZW1hc2ssIE1JUFNfQ09QXzBfVExCX1BHX01BU0spOworTUlQU19SVzY0 X0NPUDBfU0VMKHVzZXJsb2NhbCwgTUlQU19DT1BfMF9VU0VSTE9DQUwsIDIpOwogI2lmZGVmIENQ VV9DTk1JUFMKIE1JUFNfUlc2NF9DT1AwX1NFTChjdm1jb3VudCwgTUlQU19DT1BfMF9DT1VOVCwg Nik7CiBNSVBTX1JXNjRfQ09QMF9TRUwoY3ZtY3RsLCBNSVBTX0NPUF8wX0NPVU5ULCA3KTsKQEAg LTI2NSw2ICsyNjYsNyBAQCBNSVBTX1JXMzJfQ09QMF9TRUwoY21nY3JiYXNlLCAxNSwgMyk7CiAj aWYgIWRlZmluZWQoX19taXBzX242NCkKIE1JUFNfUlczMl9DT1AwKGVudHJ5aGksIE1JUFNfQ09Q XzBfVExCX0hJKTsKIE1JUFNfUlczMl9DT1AwKHBhZ2VtYXNrLCBNSVBTX0NPUF8wX1RMQl9QR19N QVNLKTsKK01JUFNfUlczMl9DT1AwX1NFTCh1c2VybG9jYWwsIE1JUFNfQ09QXzBfVVNFUkxPQ0FM LCAyKTsKICNlbmRpZgogI2lmZGVmIENQVV9OTE0KIE1JUFNfUlczMl9DT1AwX1NFTChwYWdlZ3Jh aW4sIE1JUFNfQ09QXzBfVExCX1BHX01BU0ssIDEpOwpAQCAtMjg5LDYgKzI5MSw3IEBAIE1JUFNf UlczMl9DT1AwX1NFTChwZXJmY250MCwgTUlQU19DT1BfMF9QRVJGQ05ULCAwCiBNSVBTX1JXMzJf Q09QMF9TRUwocGVyZmNudDEsIE1JUFNfQ09QXzBfUEVSRkNOVCwgMSk7CiBNSVBTX1JXMzJfQ09Q MF9TRUwocGVyZmNudDIsIE1JUFNfQ09QXzBfUEVSRkNOVCwgMik7CiBNSVBTX1JXMzJfQ09QMF9T RUwocGVyZmNudDMsIE1JUFNfQ09QXzBfUEVSRkNOVCwgMyk7CitNSVBTX1JXMzJfQ09QMChod3Jl bmEsIE1JUFNfQ09QXzBfSFdSRU5BKTsKIAogI3VuZGVmCU1JUFNfUlczMl9DT1AwCiAjdW5kZWYJ TUlQU19SVzMyX0NPUDBfU0VMCkluZGV4OiBzeXMvbWlwcy9pbmNsdWRlL2NwdWluZm8uaAo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBzeXMvbWlwcy9pbmNsdWRlL2NwdWluZm8uaAkocmV2aXNpb24gMzAzMTI2KQor Kysgc3lzL21pcHMvaW5jbHVkZS9jcHVpbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4 LDcgQEAgc3RydWN0IG1pcHNfY3B1aW5mbyB7CiAJdV9pbnQxNl90CXRsYl9uZW50cmllczsKIAl1 X2ludDhfdAlpY2FjaGVfdmlydHVhbDsKIAlib29sZWFuX3QJY2FjaGVfY29oZXJlbnRfZG1hOwor CWJvb2xlYW5fdAl1c2VybG9jYWxfcmVnOwogCXN0cnVjdCB7CiAJCXVfaW50MzJfdAlpY19zaXpl OwogCQl1X2ludDhfdAlpY19saW5lc2l6ZTsKSW5kZXg6IHN5cy9taXBzL2luY2x1ZGUvY3B1cmVn cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIHN5cy9taXBzL2luY2x1ZGUvY3B1cmVncy5oCShyZXZpc2lvbiAz MDMxMjYpCisrKyBzeXMvbWlwcy9pbmNsdWRlL2NwdXJlZ3MuaAkod29ya2luZyBjb3B5KQpAQCAt NDU0LDkgKzQ1NCwxMCBAQAogICogIDIJTUlQU19DT1BfMF9UTEJfTE8wCS42MzYgcjRrIFRMQiBl bnRyeSBsb3cuCiAgKiAgMwlNSVBTX0NPUF8wX1RMQl9MTzEJLjYzNiByNGsgVExCIGVudHJ5IGxv dywgZXh0ZW5kZWQuCiAgKiAgNAlNSVBTX0NPUF8wX1RMQl9DT05URVhUCTM2MzYgVExCIENvbnRl eHQuCisgKiAgNC8yCU1JUFNfQ09QXzBfVVNFUkxPQ0FMCS4uMzYgVXNlckxvY2FsLgogICogIDUJ TUlQU19DT1BfMF9UTEJfUEdfTUFTSwkuMzMzIFRMQiBQYWdlIE1hc2sgcmVnaXN0ZXIuCiAgKiAg NglNSVBTX0NPUF8wX1RMQl9XSVJFRAkuMzMzIFdpcmVkIFRMQiBudW1iZXIuCi0gKiAgNwlNSVBT X0NPUF8wX0lORk8JCS4uMzMgSW5mbyByZWdpc3RlcnMKKyAqICA3CU1JUFNfQ09QXzBfSFdSRU5B CS4uMzMgcmRIV1IgRW5hYmxlLgogICogIDgJTUlQU19DT1BfMF9CQURfVkFERFIJMzYzNiBCYWQg dmlydHVhbCBhZGRyZXNzLgogICogIDkJTUlQU19DT1BfMF9DT1VOVAkuMzMzIENvdW50IHJlZ2lz dGVyLgogICogMTAJTUlQU19DT1BfMF9UTEJfSEkJMzYzNiBUTEIgZW50cnkgaGlnaC4KQEAgLTUz NCw3ICs1MzUsOCBAQAogI2RlZmluZQlNSVBTX0NPUF8wX0VSUk9SX1BDCV8oMzApCiAKIC8qIE1J UFMzMi82NCAqLwotI2RlZmluZQlNSVBTX0NPUF8wX0lORk8JCV8oNykKKyNkZWZpbmUJTUlQU19D T1BfMF9VU0VSTE9DQUwJXyg0KQkvKiBzZWwgMiBpcyB1c2VybGV2ZWwgcmVnaXN0ZXIgKi8KKyNk ZWZpbmUJTUlQU19DT1BfMF9IV1JFTkEJXyg3KQogI2RlZmluZQlNSVBTX0NPUF8wX0RFQlVHCV8o MjMpCiAjZGVmaW5lCU1JUFNfQ09QXzBfREVQQwkJXygyNCkKICNkZWZpbmUJTUlQU19DT1BfMF9Q RVJGQ05UCV8oMjUpCkBAIC01NDgsMTEgKzU1MCwyMSBAQAogI2RlZmluZSBNSVBTX01NVV9CQVQJ CQkweDAyCQkvKiBTdGFuZGFyZCBCQVQgKi8KICNkZWZpbmUgTUlQU19NTVVfRklYRUQJCQkweDAz CQkvKiBTdGFuZGFyZCBmaXhlZCBtYXBwaW5nICovCiAKLSNkZWZpbmUgTUlQU19DT05GSUcwX01U X01BU0sJCTB4MDAwMDAzODAJLyogYml0cyA5Li43IE1NVSBUeXBlICovCi0jZGVmaW5lIE1JUFNf Q09ORklHMF9NVF9TSElGVAkJNwotI2RlZmluZSBNSVBTX0NPTkZJRzBfQkUJCQkweDAwMDA4MDAw CS8qIGRhdGEgaXMgYmlnLWVuZGlhbiAqLwotI2RlZmluZSBNSVBTX0NPTkZJRzBfVkkJCQkweDAw MDAwMDA4CS8qIGluc3RydWN0aW9uIGNhY2hlIGlzIHZpcnR1YWwgKi8KLQorLyoKKyAqIENvbmZp ZyBSZWdpc3RlciBGaWVsZHMKKyAqIChTZWUgIk1JUFMgQXJjaGl0ZWN0dXJlIGZvciBQcm9ncmFt bWVycyBWb2x1bWUgSUlJIiwgTUQwMDA5MSwgVGFibGUgOS4zOSkKKyAqLworI2RlZmluZQlNSVBT X0NPTkZJRzBfTQkJMHg4MDAwMDAwMCAJLyogRmxhZzogQ29uZmlnMSBpcyBwcmVzZW50LiAqLwor I2RlZmluZQlNSVBTX0NPTkZJRzBfTVRfTUFTSwkweDAwMDAwMzgwCS8qIGJpdHMgOS4uNyBNTVUg VHlwZSAqLworI2RlZmluZQlNSVBTX0NPTkZJRzBfTVRfU0hJRlQJNworI2RlZmluZQlNSVBTX0NP TkZJRzBfQkUJCTB4MDAwMDgwMDAJLyogZGF0YSBpcyBiaWctZW5kaWFuICovCisjZGVmaW5lCU1J UFNfQ09ORklHMF9WSQkJMHgwMDAwMDAwOAkvKiBpbnN0IGNhY2hlIGlzIHZpcnR1YWwgKi8KKyAK Ky8qCisgKiBDb25maWcxIFJlZ2lzdGVyIEZpZWxkcworICogKFNlZSAiTUlQUyBBcmNoaXRlY3R1 cmUgZm9yIFByb2dyYW1tZXJzIFZvbHVtZSBJSUkiLCBNRDAwMDkxLCBUYWJsZSA5LTEpCisgKi8K KyNkZWZpbmUJTUlQU19DT05GSUcxX00JCTB4ODAwMDAwMDAJLyogRmxhZzogQ29uZmlnMiBpcyBw cmVzZW50LiAqLwogI2RlZmluZSBNSVBTX0NPTkZJRzFfVExCU1pfTUFTSwkJMHg3RTAwMDAwMAkv KiBiaXRzIDMwLi4yNSAjIHRsYiBlbnRyaWVzIG1pbnVzIG9uZSAqLwogI2RlZmluZSBNSVBTX0NP TkZJRzFfVExCU1pfU0hJRlQJMjUKIApAQCAtNTg2LDYgKzU5OCwxOSBAQAogCiAjZGVmaW5lIE1J UFNfQ09ORklHM19DTUdDUl9NQVNLCQkoMSA8PCAyOSkJLyogQ29oZXJlbmNlIG1hbmFnZXIgcHJl c2VudCAqLwogCisvKgorICogQ29uZmlnMiBSZWdpc3RlciBGaWVsZHMKKyAqIChTZWUgIk1JUFMg QXJjaGl0ZWN0dXJlIGZvciBQcm9ncmFtbWVycyBWb2x1bWUgSUlJIiwgTUQwMDA5MSwgVGFibGUg OS40MCkKKyAqLworI2RlZmluZQlNSVBTX0NPTkZJRzJfTQkJMHg4MDAwMDAwMAkvKiBGbGFnOiBD b25maWczIGlzIHByZXNlbnQuICovCisKKy8qCisgKiBDb25maWczIFJlZ2lzdGVyIEZpZWxkcwor ICogKFNlZSAiTUlQUyBBcmNoaXRlY3R1cmUgZm9yIFByb2dyYW1tZXJzIFZvbHVtZSBJSUkiLCBN RDAwMDkxLCBUYWJsZSA5LjQxKQorICovCisjZGVmaW5lCU1JUFNfQ09ORklHM19NCQkweDgwMDAw MDAwCS8qIEZsYWc6IENvbmZpZzQgaXMgcHJlc2VudCAqLworI2RlZmluZQlNSVBTX0NPTkZJRzNf VUxSCTB4MDAwMDIwMDAJLyogVXNlckxvY2FsIHJlZyBpbXBsZW1lbnRlZCAqLworCiAjZGVmaW5l IE1JUFNfQ09ORklHNF9NTVVTSVpFRVhUCQkweDAwMDAwMEZGCS8qIGJpdHMgNy4uIDAgTU1VIFNp emUgRXh0ZW5zaW9uICovCiAjZGVmaW5lIE1JUFNfQ09ORklHNF9NTVVFWFRERUYJCTB4MDAwMEMw MDAJLyogYml0cyAxNS4xNCBNTVUgRXh0ZW5zaW9uIERlZmluaXRpb24gKi8KICNkZWZpbmUgTUlQ U19DT05GSUc0X01NVUVYVERFRl9NTVVTSVpFRVhUCTB4MDAwMDQwMDAgLyogVGhpcyB2YWx1ZXMg ZGVub3RlcyBDT05GSUc0IGJpdHMgICovCkBAIC02NjcsNCArNjkyLDE1IEBACiAjZGVmaW5lCU1J UFNfQ01HQ1JCX0JBU0UJMTEKICNkZWZpbmUJTUlQU19DTUdDUkZfQkFTRQkofigoMSA8PCBNSVBT X0NNR0NSQl9CQVNFKSAtIDEpKQogCisvKgorICogQml0cyBkZWZpbmVkIGZvciBmb3IgdGhlIEhX UkVuYSAoQ1AwIHJlZ2lzdGVyIDcsIHNlbGVjdCAwKS4KKyAqLworI2RlZmluZQlNSVBTX0hXUkVO QV9DUFVOVU0JKDE8PDApCS8qIENQVSBudW1iZXIgcHJvZ3JhbSBpcyBydW5uaW5nIG9uICovCisj ZGVmaW5lCU1JUFNfSFdSRU5BX1NZTkNJX1NURVAgCSgxPDwxKQkvKiBBZGRyZXNzIHN0ZXAgc2l6 ZWQgdXNlZCB3aXRoIFNZTkNJICovCisjZGVmaW5lCU1JUFNfSFdSRU5BX0NDCQkoMTw8MikJLyog SGkgUmVzIGN5Y2xlIGNvdW50ZXIgKi8KKyNkZWZpbmUJTUlQU19IV1JFTkFfQ0NSRVMJKDE8PDMp CS8qIEN5Y2xlIGNvdW50ZXIgcmVzb2x1dGlvbiAqLworI2RlZmluZQlNSVBTX0hXUkVOQV9VTAkJ KDE8PDI5KQkvKiBVc2VyTG9jYWwgUmVnaXN0ZXIgKi8KKyNkZWZpbmUJTUlQU19IV1JFTkFfSU1Q TDMwCSgxPDwzMCkJLyogSW1wbGVtZW50YXRpb24tZGVwZW5kZW50IDMwICovCisjZGVmaW5lCU1J UFNfSFdSRU5BX0lNUEwzMQkoMTw8MzEpCS8qIEltcGxlbWVudGF0aW9uLWRlcGVuZGVudCAzMSAq LworCiAjZW5kaWYgLyogX01JUFNfQ1BVUkVHU19IXyAqLwpJbmRleDogc3lzL21pcHMvbWlwcy9j cHUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBzeXMvbWlwcy9taXBzL2NwdS5jCShyZXZpc2lvbiAzMDMxMjYp CisrKyBzeXMvbWlwcy9taXBzL2NwdS5jCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBA IF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KICNpbmNsdWRl IDxzeXMva2VybmVsLmg+CiAjaW5jbHVkZSA8c3lzL21vZHVsZS5oPgorI2luY2x1ZGUgPHN5cy9w cm9jLmg+CiAjaW5jbHVkZSA8c3lzL3N0ZGludC5oPgogCiAjaW5jbHVkZSA8c3lzL2J1cy5oPgpA QCAtNDksNiArNTAsOSBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjaW5jbHVkZSA8bWFjaGlu ZS9wdGUuaD4KICNpbmNsdWRlIDxtYWNoaW5lL3RsYi5oPgogI2luY2x1ZGUgPG1hY2hpbmUvaHdm dW5jLmg+CisjaW5jbHVkZSA8bWFjaGluZS9taXBzX29wY29kZS5oPgorI2luY2x1ZGUgPG1hY2hp bmUvcmVnbnVtLmg+CisjaW5jbHVkZSA8bWFjaGluZS90bHMuaD4KIAogI2lmIGRlZmluZWQoQ1BV X0NOTUlQUykKICNpbmNsdWRlIDxjb250cmliL29jdGVvbi1zZGsvY3ZteC5oPgpAQCAtNTksNyAr NjMsNjQgQEAgc3RhdGljIHZvaWQgY3B1X2lkZW50aWZ5KHZvaWQpOwogCiBzdHJ1Y3QgbWlwc19j cHVpbmZvIGNwdWluZm87CiAKKyNkZWZpbmUgX0VOQ09ERV9JTlNOKGEsYixjLGQsZSkgXAorICAg ICgodWludDMyX3QpKCgoYSkgPDwgMjYpfCgoYikgPDwgMjEpfCgoYykgPDwgMTYpfCgoZCkgPDwg MTEpfChlKSkpCisKKyNpZiBkZWZpbmVkKF9fbWlwc19uNjQpCisKKyMgICBkZWZpbmUJX0xPQURf VDBfTURUTFNfQTEgXAorICAgIF9FTkNPREVfSU5TTihPUF9MRCwgQTEsIFQwLCAwLCBvZmZzZXRv ZihzdHJ1Y3QgdGhyZWFkLCB0ZF9tZC5tZF90bHMpKQorCisjICAgaWYgZGVmaW5lZChDT01QQVRf RlJFRUJTRDMyKQorIyAgIGRlZmluZQlfQURESVVfVjBfVDBfVExTX09GRlNFVCBcCisgICAgX0VO Q09ERV9JTlNOKE9QX0RBRERJVSwgVDAsIFYwLCAwLCAoVExTX1RQX09GRlNFVCArIFRMU19UQ0Jf U0laRTMyKSkKKyMgICBlbHNlCisjICAgZGVmaW5lCV9BRERJVV9WMF9UMF9UTFNfT0ZGU0VUIFwK KyAgICBfRU5DT0RFX0lOU04oT1BfREFERElVLCBUMCwgVjAsIDAsIChUTFNfVFBfT0ZGU0VUICsg VExTX1RDQl9TSVpFKSkKKyMgICBlbmRpZiAvKiAhIENPTVBBVF9GUkVFQlNEMzIgKi8KKworIyAg IGRlZmluZSBfTVRDMF9WMF9VU0VSTE9DQUwgXAorICAgIF9FTkNPREVfSU5TTihPUF9DT1AwLCBP UF9ETVQsIFYwLCA0LCAyKQorCisjZWxzZSAvKiBtaXBzIDMyICovCisKKyMgICBkZWZpbmUJX0xP QURfVDBfTURUTFNfQTEgXAorICAgIF9FTkNPREVfSU5TTihPUF9MVywgQTEsIFQwLCAwLCBvZmZz ZXRvZihzdHJ1Y3QgdGhyZWFkLCB0ZF9tZC5tZF90bHMpKQorIyAgIGRlZmluZQlfQURESVVfVjBf VDBfVExTX09GRlNFVCBcCisgICAgX0VOQ09ERV9JTlNOKE9QX0FERElVLCBUMCwgVjAsIDAsIChU TFNfVFBfT0ZGU0VUICsgVExTX1RDQl9TSVpFKSkKKyMgICBkZWZpbmUgX01UQzBfVjBfVVNFUkxP Q0FMIFwKKyAgICBfRU5DT0RFX0lOU04oT1BfQ09QMCwgT1BfTVQsIFYwLCA0LCAyKQorCisjZW5k aWYgLyogISBfX21pcHNfbjY0ICovCisKKyNkZWZpbmUJX0pSX1JBCV9FTkNPREVfSU5TTihPUF9T UEVDSUFMLCBSQSwgMCwgMCwgT1BfSlIpCisjZGVmaW5lCV9OT1AJMAorCiAvKgorICogUGF0Y2gg Y3B1X3N3aXRjaCgpIGJ5IHJlbW92aW5nIHRoZSBVc2VyTG9jYWwgcmVnaXN0ZXIgY29kZSBhdCB0 aGUgZW5kLgorICogRm9yIE1JUFMgaGFyZHdhcmUgdGhhdCBkb24ndCBzdXBwb3J0IFVzZXJMb2Nh bCBSZWdpc3RlciBJbXBsZW1lbnRhdGlvbgorICogd2UgcmVtb3ZlIHRoZSBpbnN0cnVjdGlvbnMg dGhhdCB1cGRhdGUgdGhpcyByZWdpc3RlciB3aGljaCBtYXkgY2F1c2UgYQorICogcmVzZXJ2ZWQg aW5zdHJ1Y3Rpb24gZXhjZXB0aW9uIGluIHRoZSBrZXJuZWwuCisgKi8KK3N0YXRpYyB2b2lkCity ZW1vdmVfdXNlcmxvY2FsX2NvZGUodWludDMyX3QgKmNwdV9zd2l0Y2hfY29kZSkKK3sKKwl1aW50 MzJfdCAqaW5zdHJ1Y3RwOworCisJZm9yIChpbnN0cnVjdHAgPSBjcHVfc3dpdGNoX2NvZGU7OyBp bnN0cnVjdHArKykgeworCQlpZiAoaW5zdHJ1Y3RwWzBdID09IF9KUl9SQSkKKwkJCXBhbmljKCIl czogVW5hYmxlIHRvIHBhdGNoIGNwdV9zd2l0Y2goKS4iLCBfX2Z1bmNfXyk7CisJCWlmIChpbnN0 cnVjdHBbMF0gPT0gX0xPQURfVDBfTURUTFNfQTEgJiYKKwkJICAgIGluc3RydWN0cFsxXSA9PSBf QURESVVfVjBfVDBfVExTX09GRlNFVCAmJgorCQkgICAgaW5zdHJ1Y3RwWzJdID09IF9NVEMwX1Yw X1VTRVJMT0NBTCkgeworCQkJaW5zdHJ1Y3RwWzBdID0gX0pSX1JBOworCQkJaW5zdHJ1Y3RwWzFd ID0gX05PUDsKKwkJCWJyZWFrOworCQl9CisJfQorfQorCisvKgogICogQXR0ZW1wdCB0byBpZGVu dGlmeSB0aGUgTUlQUyBDUFUgYXMgbXVjaCBhcyBwb3NzaWJsZS4KICAqCiAgKiBYWFg6IEFzc3Vt ZXMgdGhlIENQVSBpcyBNSVBTezMyLDY0fXsscjJ9IGNvbXBsaWFudC4KQEAgLTczLDkgKzEzNCw4 IEBAIG1pcHNfZ2V0X2lkZW50aXR5KHN0cnVjdCBtaXBzX2NwdWluZm8gKmNwdWluZm8pCiAJdV9p bnQzMl90IHByaWQ7CiAJdV9pbnQzMl90IGNmZzA7CiAJdV9pbnQzMl90IGNmZzE7Ci0jaWZuZGVm IENQVV9DTk1JUFMKIAl1X2ludDMyX3QgY2ZnMjsKLSNlbmRpZgorCXVfaW50MzJfdCBjZmczOwog I2lmIGRlZmluZWQoQ1BVX0NOTUlQUykKIAl1X2ludDMyX3QgY2ZnNDsKICNlbmRpZgpAQCAtOTYs MTMgKzE1NiwzNiBAQCBtaXBzX2dldF9pZGVudGl0eShzdHJ1Y3QgbWlwc19jcHVpbmZvICpjcHVp bmZvKQogCSAgICAoKGNmZzAgJiBNSVBTX0NPTkZJRzBfTVRfTUFTSykgPj4gTUlQU19DT05GSUcw X01UX1NISUZUKTsKIAljcHVpbmZvLT5pY2FjaGVfdmlydHVhbCA9IGNmZzAgJiBNSVBTX0NPTkZJ RzBfVkk7CiAKLQkvKiBJZiBjb25maWcgcmVnaXN0ZXIgc2VsZWN0aW9uIDEgZG9lcyBub3QgZXhp c3QsIGV4aXQuICovCi0JaWYgKCEoY2ZnMCAmIE1JUFNfQ09ORklHX0NNKSkKKwkvKiBJZiBjb25m aWcgcmVnaXN0ZXIgc2VsZWN0aW9uIDEgZG9lcyBub3QgZXhpc3QsIHJldHVybi4gKi8KKwlpZiAo IShjZmcwICYgTUlQU19DT05GSUcwX00pKQogCQlyZXR1cm47CiAKIAkvKiBMZWFybiBUTEIgc2l6 ZSBhbmQgTDEgY2FjaGUgZ2VvbWV0cnkuICovCiAJY2ZnMSA9IG1pcHNfcmRfY29uZmlnMSgpOwog CisJLyogR2V0IHRoZSBDb25maWcyIGFuZCBDb25maWczIHJlZ2lzdGVycyBhcyB3ZWxsLiAqLwor CWlmIChjZmcxICYgTUlQU19DT05GSUcxX00pIHsKKwkJY2ZnMiA9IG1pcHNfcmRfY29uZmlnMigp OworCQlpZiAoY2ZnMiAmIE1JUFNfQ09ORklHMl9NKQorCQkJY2ZnMyA9IG1pcHNfcmRfY29uZmln MygpOworCX0KKworCS8qIENoZWNrIHRvIHNlZSBpZiBVc2VyTG9jYWwgcmVnaXN0ZXIgaXMgaW1w bGVtZW50ZWQuICovCisJaWYgKGNmZzMgJiBNSVBTX0NPTkZJRzNfVUxSKSB7CisJCS8qIFVzZXJM b2NhbCByZWdpc3RlciBpcyBpbXBsZW1lbnRlZCwgZW5hYmxlIGl0LiAqLworCQljcHVpbmZvLT51 c2VybG9jYWxfcmVnID0gdHJ1ZTsKKwkJdG1wID0gbWlwc19yZF9od3JlbmEoKTsKKwkJbWlwc193 cl9od3JlbmEodG1wIHwgTUlQU19IV1JFTkFfVUwpOworCX0gZWxzZSB7CisJCS8qCisJCSAqIFVz ZXJMb2NhbCByZWdpc3RlciBpcyBub3QgaW1wbGVtZW50ZWQuIFBhdGNoCisJCSAqIGNwdV9zd2l0 Y2goKSBhbmQgcmVtb3ZlIHVuc3VwcG9ydGVkIGNvZGUuCisJCSAqLworCQljcHVpbmZvLT51c2Vy bG9jYWxfcmVnID0gZmFsc2U7CisJCXJlbW92ZV91c2VybG9jYWxfY29kZSgodWludDMyX3QgKilj cHVfc3dpdGNoKTsKKwl9CisKKwogI2lmIGRlZmluZWQoQ1BVX05MTSkKIAkvKiBBY2NvdW50IGZv ciBFeHRlbmRlZCBUTEIgZW50cmllcyBpbiBYTFAgKi8KIAl0bXAgPSBtaXBzX3JkX2NvbmZpZzYo KTsKQEAgLTM4Nyw3ICs0NzAsNyBAQCBjcHVfaWRlbnRpZnkodm9pZCkKIAogCS8qIFByaW50IENv bmZpZzMgaWYgaXQgY29udGFpbnMgYW55IHVzZWZ1bCBpbmZvICovCiAJaWYgKGNmZzMgJiB+KDB4 ODAwMDAwMDApKQotCQlwcmludGYoIiAgQ29uZmlnMz0weCViXG4iLCBjZmczLCAiXDIwXDJTbWFy dE1JUFNcMVRyYWNlTG9naWMiKTsKKwkJcHJpbnRmKCIgIENvbmZpZzM9MHglYlxuIiwgY2ZnMywg IlwyMFwxNFVMUklcMlNtYXJ0TUlQU1wxVHJhY2VMb2dpYyIpOwogfQogCiBzdGF0aWMgc3RydWN0 IHJtYW4gY3B1X2hhcmRpcnFfcm1hbjsKSW5kZXg6IHN5cy9taXBzL21pcHMvZ2VuYXNzeW0uYwo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBzeXMvbWlwcy9taXBzL2dlbmFzc3ltLmMJKHJldmlzaW9uIDMwMzEyNikK KysrIHN5cy9taXBzL21pcHMvZ2VuYXNzeW0uYwkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcs NyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjaW5jbHVkZSA8bWFjaGluZS9wY2IuaD4KICNp bmNsdWRlIDxtYWNoaW5lL3NpZ2ZyYW1lLmg+CiAjaW5jbHVkZSA8bWFjaGluZS9wcm9jLmg+Cisj aW5jbHVkZSA8bWFjaGluZS90bHMuaD4KIAogI2lmZGVmCUNQVV9DTk1JUFMKICNpbmNsdWRlIDxt YWNoaW5lL29jdGVvbl9jb3AyLmg+CkBAIC03Miw3ICs3MywxNCBAQCBBU1NZTShURF9LU1RBQ0ss IG9mZnNldG9mKHN0cnVjdCB0aHJlYWQsIHRkX2tzdGFjawogQVNTWU0oVERfRkxBR1MsIG9mZnNl dG9mKHN0cnVjdCB0aHJlYWQsIHRkX2ZsYWdzKSk7CiBBU1NZTShURF9MT0NLLCBvZmZzZXRvZihz dHJ1Y3QgdGhyZWFkLCB0ZF9sb2NrKSk7CiBBU1NZTShURF9NREZMQUdTLCBvZmZzZXRvZihzdHJ1 Y3QgdGhyZWFkLCB0ZF9tZC5tZF9mbGFncykpOworQVNTWU0oVERfTURUTFMsIG9mZnNldG9mKHN0 cnVjdCB0aHJlYWQsIHRkX21kLm1kX3RscykpOwogCisjaWYgZGVmaW5lZChfX21pcHNfbjY0KSAm JiBkZWZpbmVkKENPTVBBVF9GUkVFQlNEMzIpCitBU1NZTShUTFNfVENCX09GRlNFVCwgKFRMU19U UF9PRkZTRVQgKyBUTFNfVENCX1NJWkUzMikpOworI2Vsc2UKK0FTU1lNKFRMU19UQ0JfT0ZGU0VU LCAoVExTX1RQX09GRlNFVCArIFRMU19UQ0JfU0laRSkpOworI2VuZGlmCisKIEFTU1lNKFVfUENC X1JFR1MsIG9mZnNldG9mKHN0cnVjdCBwY2IsIHBjYl9yZWdzLnplcm8pKTsKIEFTU1lNKFVfUENC X0NPTlRFWFQsIG9mZnNldG9mKHN0cnVjdCBwY2IsIHBjYl9jb250ZXh0KSk7CiBBU1NZTShVX1BD Ql9PTkZBVUxULCBvZmZzZXRvZihzdHJ1Y3QgcGNiLCBwY2Jfb25mYXVsdCkpOwpJbmRleDogc3lz L21pcHMvbWlwcy9zd3RjaC5TCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9taXBzL21pcHMvc3d0Y2guUwko cmV2aXNpb24gMzAzMTI2KQorKysgc3lzL21pcHMvbWlwcy9zd3RjaC5TCSh3b3JraW5nIGNvcHkp CkBAIC0zNTgsNiArMzU4LDcgQEAgc3cyOgogICogUmVzdG9yZSByZWdpc3RlcnMgYW5kIHJldHVy bi4KICAqLwogCW1vdmUJYTAsIHMwCisJbW92ZQlhMSwgczcKIAlSRVNUT1JFX1VfUENCX0NPTlRF WFQoZ3AsIFBDQl9SRUdfR1AsIGEwKQogCVJFU1RPUkVfVV9QQ0JfQ09OVEVYVCh2MCwgUENCX1JF R19TUiwgYTApCSMgcmVzdG9yZSBrZXJuZWwgY29udGV4dAogCVJFU1RPUkVfVV9QQ0JfQ09OVEVY VChyYSwgUENCX1JFR19SQSwgYTApCkBAIC0zNzcsNiArMzc4LDE1IEBAIHN3MjoKIAlvcgl2MCwg djAsIHQwCiAJbXRjMAl2MCwgTUlQU19DT1BfMF9TVEFUVVMKIAlJVExCTk9QRklYCisvKgorICog U2V0IHRoZSBuZXcgdGhyZWFkJ3MgVExTIHBvaW50ZXIuCisgKgorICogTm90ZSB0aGF0IHRoaXMg Y29kZSBpcyByZW1vdmVkIGlmIHRoZSBDUFUgZG9lc24ndCBzdXBwb3J0IFVMUkkgYnkKKyAqIHJl bW92ZV91c2VybG9jYWxfY29kZSgpIGluIGNwdS5jLgorICovCisJUFRSX0wJdDAsIFREX01EVExT KGExKQkJIyBHZXQgVExTIHBvaW50ZXIKKwlQVFJfQURESVUgdjAsIHQwLCBUTFNfVENCX09GRlNF VAkjIEFkZCBUTFMvVENCIG9mZnNldAorCU1UQzAJdjAsIE1JUFNfQ09QXzBfVVNFUkxPQ0FMLCAy CSMgd3JpdGUgaXQgdG8gVUxSIGZvciByZGh3cgogCiAJaglyYQogCW5vcApJbmRleDogc3lzL21p cHMvbWlwcy9zeXNfbWFjaGRlcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9taXBzL21pcHMvc3lzX21h Y2hkZXAuYwkocmV2aXNpb24gMzAzMTI2KQorKysgc3lzL21pcHMvbWlwcy9zeXNfbWFjaGRlcC5j CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSwxMSBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7 CiAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KICNpbmNsdWRlIDxzeXMvc3lzZW50Lmg+CiAKKyNp bmNsdWRlIDxtYWNoaW5lL2NwdWZ1bmMuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL2NwdWluZm8uaD4K ICNpbmNsdWRlIDxtYWNoaW5lL3N5c2FyY2guaD4KKyNpbmNsdWRlIDxtYWNoaW5lL2NwdXJlZ3Mu aD4KKyNpbmNsdWRlIDxtYWNoaW5lL3Rscy5oPgogCiAjaWZuZGVmIF9TWVNfU1lTUFJPVE9fSF8K IHN0cnVjdCBzeXNhcmNoX2FyZ3MgewpAQCAtNTcsNiArNjEsMjIgQEAgc3lzYXJjaChzdHJ1Y3Qg dGhyZWFkICp0ZCwgc3RydWN0IHN5c2FyY2hfYXJncyAqdWEKIAlzd2l0Y2ggKHVhcC0+b3ApIHsK IAljYXNlIE1JUFNfU0VUX1RMUzoKIAkJdGQtPnRkX21kLm1kX3RscyA9IHVhcC0+cGFybXM7CisK KwkJLyoKKwkJICogSWYgdGhlcmUgaXMgYW4gdXNlciBsb2NhbCByZWdpc3RlciBpbXBsZW1lbnRh dGlvbiAoVUxSSSkKKwkJICogdXBkYXRlIGl0IGFzIHdlbGwuICBBZGQgdGhlIFRMUyBhbmQgVENC IG9mZnNldHMgc28gdGhlCisJCSAqIHZhbHVlIGluIHRoaXMgcmVnaXN0ZXIgaXMgYWRqdXN0ZWQg bGlrZSBpbiB0aGUgY2FzZSBvZiB0aGUKKwkJICogcmRod3IgdHJhcCgpIGluc3RydWN0aW9uIGhh bmRsZXIuCisJCSAqLworCQlpZiAoY3B1aW5mby51c2VybG9jYWxfcmVnID09IHRydWUpIHsKKyNp ZiBkZWZpbmVkKF9fbWlwc19uNjQpICYmIGRlZmluZWQoQ09NUEFUX0ZSRUVCU0QzMikKKwkJCW1p cHNfd3JfdXNlcmxvY2FsKCh1bnNpZ25lZCBsb25nKSh1YXAtPnBhcm1zICsKKwkJCSAgICBUTFNf VFBfT0ZGU0VUICsgVExTX1RDQl9TSVpFMzIpKTsKKyNlbHNlCisJCQltaXBzX3dyX3VzZXJsb2Nh bCgodW5zaWduZWQgbG9uZykodWFwLT5wYXJtcyArCisJCQkgICAgVExTX1RQX09GRlNFVCArIFRM U19UQ0JfU0laRSkpOworI2VuZGlmCisJCX0KIAkJcmV0dXJuICgwKTsKIAljYXNlIE1JUFNfR0VU X1RMUzogCiAJCXRsc2Jhc2UgPSB0ZC0+dGRfbWQubWRfdGxzOwpJbmRleDogc3lzL21pcHMvbWlw cy92bV9tYWNoZGVwLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL21pcHMvbWlwcy92bV9tYWNoZGVwLmMJ KHJldmlzaW9uIDMwMzEyNikKKysrIHN5cy9taXBzL21pcHMvdm1fbWFjaGRlcC5jCSh3b3JraW5n IGNvcHkpCkBAIC02MCw4ICs2MCwxMSBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjaW5jbHVk ZSA8bWFjaGluZS9jYWNoZS5oPgogI2luY2x1ZGUgPG1hY2hpbmUvY2xvY2suaD4KICNpbmNsdWRl IDxtYWNoaW5lL2NwdS5oPgorI2luY2x1ZGUgPG1hY2hpbmUvY3B1ZnVuYy5oPgorI2luY2x1ZGUg PG1hY2hpbmUvY3B1aW5mby5oPgogI2luY2x1ZGUgPG1hY2hpbmUvbWRfdmFyLmg+CiAjaW5jbHVk ZSA8bWFjaGluZS9wY2IuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL3Rscy5oPgogCiAjaW5jbHVkZSA8 dm0vdm0uaD4KICNpbmNsdWRlIDx2bS92bV9leHRlcm4uaD4KQEAgLTQ5Miw2ICs0OTUsMTUgQEAg Y3B1X3NldF91c2VyX3RscyhzdHJ1Y3QgdGhyZWFkICp0ZCwgdm9pZCAqdGxzX2Jhc2UKIHsKIAog CXRkLT50ZF9tZC5tZF90bHMgPSAoY2hhciopdGxzX2Jhc2U7CisJaWYgKHRkID09IGN1cnRocmVh ZCAmJiBjcHVpbmZvLnVzZXJsb2NhbF9yZWcgPT0gdHJ1ZSkgeworI2lmIGRlZmluZWQoX19taXBz X242NCkgJiYgZGVmaW5lZChDT01QQVRfRlJFRUJTRDMyKQorCQltaXBzX3dyX3VzZXJsb2NhbCgo dW5zaWduZWQgbG9uZyl0bHNfYmFzZSArIFRMU19UUF9PRkZTRVQgKworCQkgICAgVExTX1RDQl9T SVpFMzIpOworI2Vsc2UKKwkJbWlwc193cl91c2VybG9jYWwoKHVuc2lnbmVkIGxvbmcpdGxzX2Jh c2UgKyBUTFNfVFBfT0ZGU0VUICsKKwkJICAgIFRMU19UQ0JfU0laRSk7CisjZW5kaWYKKwl9CiAK IAlyZXR1cm4gKDApOwogfQo= --001a11439d44118ba505382739d7 Content-Type: application/octet-stream; name="ulri_user.diff" Content-Disposition: attachment; filename="ulri_user.diff" Content-Transfer-Encoding: base64 Content-ID: <82ebdf5d-27eb-4c9b-6af4-077c60c381ac@yahoo.com> X-Attachment-Id: 32c534173ab0075c_0.2 SW5kZXg6IGxpYi9saWJ0aHIvYXJjaC9taXBzL2luY2x1ZGUvcHRocmVhZF9tZC5oCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIGxpYi9saWJ0aHIvYXJjaC9taXBzL2luY2x1ZGUvcHRocmVhZF9tZC5oCShyZXZpc2lv biAzMDMxMjYpCisrKyBsaWIvbGlidGhyL2FyY2gvbWlwcy9pbmNsdWRlL3B0aHJlYWRfbWQuaAko d29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsNyBAQCBfdGNiX3NldChzdHJ1Y3QgdGNiICp0Y2Ip CiAvKgogICogR2V0IHRoZSBjdXJyZW50IHRjYi4KICAqLworI2lmZGVmIFRMU19VU0VfU1lTQVJD SAogc3RhdGljIF9faW5saW5lIHN0cnVjdCB0Y2IgKgogX3RjYl9nZXQodm9pZCkKIHsKQEAgLTcw LDYgKzcxLDU1IEBAIF90Y2JfZ2V0KHZvaWQpCiAJcmV0dXJuIHRjYjsKIH0KIAorI2Vsc2UgLyog ISBUTFNfVVNFX1NZU0FSQ0ggKi8KKworIyAgaWYgZGVmaW5lZChfX21pcHNfbjY0KQorc3RhdGlj IF9faW5saW5lIHN0cnVjdCB0Y2IgKgorX3RjYl9nZXQodm9pZCkKK3sKKwl1aW50NjRfdCBfcnY7 CisKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCisJICAgICIuc2V0XHRwdXNoXG5cdCIKKwkgICAg Ii5zZXRcdG1pcHM2NHIyXG5cdCIKKwkgICAgInJkaHdyXHQlMCwgJDI5XG5cdCIKKwkgICAgIi5z ZXRcdHBvcCIKKwkgICAgOiAiPXYiIChfcnYpKTsKKworCS8qCisJICogWFhYU1MgU2VlICdnaXQg c2hvdyBjNmJlNGY0ZDJkMWI3MWMwNGRlNWQzYmJiNjkzM2NlMmRiY2RiMzE3JworCSAqCisJICog UmVtb3ZlIHRoZSBvZmZzZXQgc2luY2UgdGhpcyByZWFsbHkgYSByZXF1ZXN0IHRvIGdldCB0aGUg VExTCisJICogcG9pbnRlciB2aWEgc3lzYXJjaCgpIChpbiB0aGVvcnkpLiAgT2YgY291cnNlLCB0 aGlzIG1heSBnbyBhd2F5CisJICogb25jZSB0aGUgVExTIGNvZGUgaXMgcmV3cml0dGVuLgorCSAq LworCXJldHVybiAoc3RydWN0IHRjYiAqKShfcnYgLSBUTFNfVFBfT0ZGU0VUIC0gVExTX1RDQl9T SVpFKTsKK30KKyMgIGVsc2UgLyogbWlwcyAzMiAqLworc3RhdGljIF9faW5saW5lIHN0cnVjdCB0 Y2IgKgorX3RjYl9nZXQodm9pZCkKK3sKKwl1aW50MzJfdCBfcnY7CisKKwlfX2FzbV9fIF9fdm9s YXRpbGVfXyAoCisJICAgICIuc2V0XHRwdXNoXG5cdCIKKwkgICAgIi5zZXRcdG1pcHMzMnIyXG5c dCIKKwkgICAgInJkaHdyXHQlMCwgJDI5XG5cdCIKKwkgICAgIi5zZXRcdHBvcCIKKwkgICAgOiAi PXYiIChfcnYpKTsKKworCS8qCisJICogWFhYU1MgU2VlICdnaXQgc2hvdyBjNmJlNGY0ZDJkMWI3 MWMwNGRlNWQzYmJiNjkzM2NlMmRiY2RiMzE3JworCSAqCisJICogUmVtb3ZlIHRoZSBvZmZzZXQg c2luY2UgdGhpcyByZWFsbHkgYSByZXF1ZXN0IHRvIGdldCB0aGUgVExTCisJICogcG9pbnRlciB2 aWEgc3lzYXJjaCgpIChpbiB0aGVvcnkpLiAgT2YgY291cnNlLCB0aGlzIG1heSBnbyBhd2F5CisJ ICogb25jZSB0aGUgVExTIGNvZGUgaXMgcmV3cml0dGVuLgorCSAqLworCXJldHVybiAoc3RydWN0 IHRjYiAqKShfcnYgLSBUTFNfVFBfT0ZGU0VUIC0gVExTX1RDQl9TSVpFKTsKK30KKyMgIGVuZGlm IC8qICEgX19taXBzX242NCAqLworI2VuZGlmIC8qICEgVExTX1VTRV9TWVNBUkNIICovCisKIGV4 dGVybiBzdHJ1Y3QgcHRocmVhZCAqX3Rocl9pbml0aWFsOwogCiBzdGF0aWMgX19pbmxpbmUgc3Ry dWN0IHB0aHJlYWQgKgpJbmRleDogbGliZXhlYy9ydGxkLWVsZi9taXBzL3JlbG9jLmMKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gbGliZXhlYy9ydGxkLWVsZi9taXBzL3JlbG9jLmMJKHJldmlzaW9uIDMwMzEyNikK KysrIGxpYmV4ZWMvcnRsZC1lbGYvbWlwcy9yZWxvYy5jCSh3b3JraW5nIGNvcHkpCkBAIC02MzQs MTMgKzYzNCw2NyBAQCBhbGxvY2F0ZV9pbml0aWFsX3RscyhPYmpfRW50cnkgKm9ianMpCiAJc3lz YXJjaChNSVBTX1NFVF9UTFMsIHRscyk7CiB9CiAKKyNpZmRlZiBfX21pcHNfbjY0CiB2b2lkICoK K19taXBzX2dldF90bHModm9pZCkKK3sKKwl1aW50NjRfdCBfcnY7CisKKwlfX2FzbV9fIF9fdm9s YXRpbGVfXyAoCisJICAgICIuc2V0XHRwdXNoXG5cdCIKKwkgICAgIi5zZXRcdG1pcHM2NHIyXG5c dCIKKwkgICAgInJkaHdyXHQlMCwgJDI5XG5cdCIKKwkgICAgIi5zZXRcdHBvcCIKKwkgICAgOiAi PXYiIChfcnYpKTsKKwkvKgorCSAqIFhYWFNTIFNlZSAnZ2l0IHNob3cgYzZiZTRmNGQyZDFiNzFj MDRkZTVkM2JiYjY5MzNjZTJkYmNkYjMxNycKKwkgKgorCSAqIFJlbW92ZSB0aGUgb2Zmc2V0IHNp bmNlIHRoaXMgcmVhbGx5IGEgcmVxdWVzdCB0byBnZXQgdGhlIFRMUworCSAqIHBvaW50ZXIgdmlh IHN5c2FyY2goKSAoaW4gdGhlb3J5KS4gIE9mIGNvdXJzZSwgdGhpcyBtYXkgZ28gYXdheQorCSAq IG9uY2UgdGhlIFRMUyBjb2RlIGlzIHJld3JpdHRlbi4KKwkgKi8KKwlfcnYgPSBfcnYgLSBUTFNf VFBfT0ZGU0VUIC0gVExTX1RDQl9TSVpFOworCisJcmV0dXJuICh2b2lkICopX3J2OworfQorCisj ZWxzZSAvKiBtaXBzIDMyICovCisKK3ZvaWQgKgorX21pcHNfZ2V0X3Rscyh2b2lkKQoreworCXVp bnQzMl90IF9ydjsKKworCV9fYXNtX18gX192b2xhdGlsZV9fICgKKwkgICAgIi5zZXRcdHB1c2hc blx0IgorCSAgICAiLnNldFx0bWlwczMycjJcblx0IgorCSAgICAicmRod3JcdCUwLCAkMjlcblx0 IgorCSAgICAiLnNldFx0cG9wIgorCSAgICA6ICI9diIgKF9ydikpOworCS8qCisJICogWFhYU1Mg U2VlICdnaXQgc2hvdyBjNmJlNGY0ZDJkMWI3MWMwNGRlNWQzYmJiNjkzM2NlMmRiY2RiMzE3Jwor CSAqCisJICogUmVtb3ZlIHRoZSBvZmZzZXQgc2luY2UgdGhpcyByZWFsbHkgYSByZXF1ZXN0IHRv IGdldCB0aGUgVExTCisJICogcG9pbnRlciB2aWEgc3lzYXJjaCgpIChpbiB0aGVvcnkpLiAgT2Yg Y291cnNlLCB0aGlzIG1heSBnbyBhd2F5CisJICogb25jZSB0aGUgVExTIGNvZGUgaXMgcmV3cml0 dGVuLgorCSAqLworCV9ydiA9IF9ydiAtIFRMU19UUF9PRkZTRVQgLSBUTFNfVENCX1NJWkU7CisK KwlyZXR1cm4gKHZvaWQgKilfcnY7Cit9CisjZW5kaWYgLyogISBfX21pcHNfbjY0ICovCisKK3Zv aWQgKgogX190bHNfZ2V0X2FkZHIodGxzX2luZGV4KiB0aSkKIHsKIAlFbGZfQWRkcioqIHRsczsK IAljaGFyICpwOwogCisjaWZkZWYgVExTX1VTRV9TWVNBUkNICiAJc3lzYXJjaChNSVBTX0dFVF9U TFMsICZ0bHMpOworI2Vsc2UKKwl0bHMgPSBfbWlwc19nZXRfdGxzKCk7CisjZW5kaWYKIAogCXAg PSB0bHNfZ2V0X2FkZHJfY29tbW9uKHRscywgdGktPnRpX21vZHVsZSwgdGktPnRpX29mZnNldCAr IFRMU19EVFBfT0ZGU0VUKTsKIAo= --001a11439d44118ba505382739d7--