From owner-freebsd-arch@FreeBSD.ORG Tue Sep 18 00:03:40 2007 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B467B16A418 for ; Tue, 18 Sep 2007 00:03:40 +0000 (UTC) (envelope-from jroberson@chesapeake.net) Received: from webaccess-cl.virtdom.com (webaccess-cl.virtdom.com [216.240.101.25]) by mx1.freebsd.org (Postfix) with ESMTP id 54EF413C428 for ; Tue, 18 Sep 2007 00:03:39 +0000 (UTC) (envelope-from jroberson@chesapeake.net) Received: from [192.168.1.103] (c-67-160-44-208.hsd1.wa.comcast.net [67.160.44.208]) (authenticated bits=0) by webaccess-cl.virtdom.com (8.13.6/8.13.6) with ESMTP id l8I032Gr077693 (version=TLSv1/SSLv3 cipher=DHE-DSS-AES256-SHA bits=256 verify=NO) for ; Mon, 17 Sep 2007 20:03:03 -0400 (EDT) (envelope-from jroberson@chesapeake.net) Date: Mon, 17 Sep 2007 17:05:57 -0700 (PDT) From: Jeff Roberson X-X-Sender: jroberson@10.0.0.1 To: arch@freebsd.org Message-ID: <20070917165657.B558@10.0.0.1> MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="0-2003406049-1190073957=:558" Cc: Subject: Changing p_swtime and td_slptime to ticks X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 Sep 2007 00:03:40 -0000 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --0-2003406049-1190073957=:558 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Enclosed is a patch that fixes swapping with ULE. ULE has never properly set p_swtime and td_slptime which are used by the swapout/swapin code to select the appropriate thread to swap. In 4BSD these two variables are increment once per-second as schedcpu() iterates over all threads. ULE does not have a once per-second loop iterating over all threads. So I have changed p_swtime to p_swtick and td_slptime to td_slptick. These record the value of 'ticks' when the thread slept or was last swapped in or out. For backwards compatibility I leave the values in kinfo_proc with the legacy meaning by subtracting from ticks and dividing by hz. I perform a similar transformation in the swapout code to convert to seconds. This change does make it possible to use sub-second granular decisions in the swap code, however I'm not sure if that's really necessary. So that I did not disturb the 4BSD mechanism I kept the original td_slptime in the td_sched area. It should be possible to use td_slptick directly but especially this close to release I did not want to change 4BSD. Feedback and testing welcome. Thanks, Jeff --0-2003406049-1190073957=:558 Content-Type: TEXT/x-diff; charset=US-ASCII; name=swap2.diff Content-Transfer-Encoding: BASE64 Content-ID: <20070917170557.P558@10.0.0.1> Content-Description: Content-Disposition: attachment; filename=swap2.diff SW5kZXg6IGxpYi9saWJrdm0va3ZtX3Byb2MuYw0KPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KUkNTIGZpbGU6IC9ob21lL25jdnMvc3JjL2xpYi9saWJrdm0v a3ZtX3Byb2MuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuOTMNCmRpZmYg LXUgLXAgLXIxLjkzIGt2bV9wcm9jLmMNCi0tLSBsaWIvbGlia3ZtL2t2bV9w cm9jLmMJMTcgU2VwIDIwMDcgMDU6Mjc6MTggLTAwMDAJMS45Mw0KKysrIGxp Yi9saWJrdm0va3ZtX3Byb2MuYwkxNyBTZXAgMjAwNyAwNTo1ODowOSAtMDAw MA0KQEAgLTg1LDYgKzg1LDkgQEAgX19GQlNESUQoIiRGcmVlQlNEOiBzcmMv bGliL2xpYmt2bS9rdm1fcA0KICNkZWZpbmUgS1JFQUQoa2QsIGFkZHIsIG9i aikgXA0KIAkoa3ZtX3JlYWQoa2QsIGFkZHIsIChjaGFyICopKG9iaiksIHNp emVvZigqb2JqKSkgIT0gc2l6ZW9mKCpvYmopKQ0KIA0KK2ludCB0aWNrczsN CitpbnQgaHo7DQorDQogLyoNCiAgKiBSZWFkIHByb2MncyBmcm9tIG1lbW9y eSBmaWxlIGludG8gYnVmZmVyIGJwLCB3aGljaCBoYXMgc3BhY2UgdG8gaG9s ZA0KICAqIGF0IG1vc3QgbWF4Y250IHByb2NzLg0KQEAgLTM2OCw3ICszNzEs NyBAQCBub3BncnA6DQogCQlrcC0+a2lfYWNmbGFnID0gcHJvYy5wX2FjZmxh ZzsNCiAJCWtwLT5raV9sb2NrID0gcHJvYy5wX2xvY2s7DQogCQlpZiAocHJv Yy5wX3N0YXRlICE9IFBSU19aT01CSUUpIHsNCi0JCQlrcC0+a2lfc3d0aW1l ID0gcHJvYy5wX3N3dGltZTsNCisJCQlrcC0+a2lfc3d0aW1lID0gKHRpY2tz IC0gcHJvYy5wX3N3dGljaykgLyBoejsNCiAJCQlrcC0+a2lfZmxhZyA9IHBy b2MucF9mbGFnOw0KIAkJCWtwLT5raV9zZmxhZyA9IDA7DQogCQkJa3AtPmtp X25pY2UgPSBwcm9jLnBfbmljZTsNCkBAIC01MzUsMTIgKzUzOCwxNCBAQCBr dm1fZ2V0cHJvY3Moa2QsIG9wLCBhcmcsIGNudCkNCiBsaXZlb3V0Og0KIAkJ bnByb2NzID0gc2l6ZSA9PSAwID8gMCA6IHNpemUgLyBrZC0+cHJvY2Jhc2Ut PmtpX3N0cnVjdHNpemU7DQogCX0gZWxzZSB7DQotCQlzdHJ1Y3Qgbmxpc3Qg bmxbNF0sICpwOw0KKwkJc3RydWN0IG5saXN0IG5sWzZdLCAqcDsNCiANCiAJ CW5sWzBdLm5fbmFtZSA9ICJfbnByb2NzIjsNCiAJCW5sWzFdLm5fbmFtZSA9 ICJfYWxscHJvYyI7DQogCQlubFsyXS5uX25hbWUgPSAiX3pvbWJwcm9jIjsN Ci0JCW5sWzNdLm5fbmFtZSA9IDA7DQorCQlubFszXS5uX25hbWUgPSAiX3Rp Y2tzIjsNCisJCW5sWzRdLm5fbmFtZSA9ICJfaHoiOw0KKwkJbmxbNV0ubl9u YW1lID0gMDsNCiANCiAJCWlmIChrdm1fbmxpc3Qoa2QsIG5sKSAhPSAwKSB7 DQogCQkJZm9yIChwID0gbmw7IHAtPm5fdHlwZSAhPSAwOyArK3ApDQpAQCAt NTUzLDYgKzU1OCwxNCBAQCBsaXZlb3V0Og0KIAkJCV9rdm1fZXJyKGtkLCBr ZC0+cHJvZ3JhbSwgImNhbid0IHJlYWQgbnByb2NzIik7DQogCQkJcmV0dXJu ICgwKTsNCiAJCX0NCisJCWlmIChLUkVBRChrZCwgbmxbM10ubl92YWx1ZSwg JnRpY2tzKSkgew0KKwkJCV9rdm1fZXJyKGtkLCBrZC0+cHJvZ3JhbSwgImNh bid0IHJlYWQgdGlja3MiKTsNCisJCQlyZXR1cm4gKDApOw0KKwkJfQ0KKwkJ aWYgKEtSRUFEKGtkLCBubFs0XS5uX3ZhbHVlLCAmaHopKSB7DQorCQkJX2t2 bV9lcnIoa2QsIGtkLT5wcm9ncmFtLCAiY2FuJ3QgcmVhZCBoeiIpOw0KKwkJ CXJldHVybiAoMCk7DQorCQl9DQogCQlzaXplID0gbnByb2NzICogc2l6ZW9m KHN0cnVjdCBraW5mb19wcm9jKTsNCiAJCWtkLT5wcm9jYmFzZSA9IChzdHJ1 Y3Qga2luZm9fcHJvYyAqKV9rdm1fbWFsbG9jKGtkLCBzaXplKTsNCiAJCWlm IChrZC0+cHJvY2Jhc2UgPT0gMCkNCkluZGV4OiBzeXMva2Vybi9rZXJuX2Zv cmsuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9ob21l L25jdnMvc3JjL3N5cy9rZXJuL2tlcm5fZm9yay5jLHYNCnJldHJpZXZpbmcg cmV2aXNpb24gMS4yODENCmRpZmYgLXUgLXAgLXIxLjI4MSBrZXJuX2Zvcmsu Yw0KLS0tIHN5cy9rZXJuL2tlcm5fZm9yay5jCTE3IFNlcCAyMDA3IDA1OjI3 OjIwIC0wMDAwCTEuMjgxDQorKysgc3lzL2tlcm4va2Vybl9mb3JrLmMJMTcg U2VwIDIwMDcgMDU6NDg6NTMgLTAwMDANCkBAIC01MDAsNiArNTAwLDcgQEAg YWdhaW46DQogCSAqIEluY3JlYXNlIHJlZmVyZW5jZSBjb3VudHMgb24gc2hh cmVkIG9iamVjdHMuDQogCSAqLw0KIAlwMi0+cF9mbGFnID0gUF9JTk1FTTsN CisJcDItPnBfc3d0aWNrID0gdGlja3M7DQogCWlmIChwMS0+cF9mbGFnICYg UF9QUk9GSUwpDQogCQlzdGFydHByb2ZjbG9jayhwMik7DQogCXRkMi0+dGRf dWNyZWQgPSBjcmhvbGQocDItPnBfdWNyZWQpOw0KSW5kZXg6IHN5cy9rZXJu L2tlcm5fcHJvYy5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmls ZTogL2hvbWUvbmN2cy9zcmMvc3lzL2tlcm4va2Vybl9wcm9jLmMsdg0KcmV0 cmlldmluZyByZXZpc2lvbiAxLjI1MQ0KZGlmZiAtdSAtcCAtcjEuMjUxIGtl cm5fcHJvYy5jDQotLS0gc3lzL2tlcm4va2Vybl9wcm9jLmMJMTcgU2VwIDIw MDcgMDU6Mjc6MjAgLTAwMDAJMS4yNTENCisrKyBzeXMva2Vybi9rZXJuX3By b2MuYwkxNyBTZXAgMjAwNyAwNjowMzoyMSAtMDAwMA0KQEAgLTY5NCw3ICs2 OTQsOCBAQCBmaWxsX2tpbmZvX3Byb2Nfb25seShzdHJ1Y3QgcHJvYyAqcCwg c3RyDQogCQlrcC0+a2lfc2ZsYWcgPSBQU19JTk1FTTsNCiAJZWxzZQ0KIAkJ a3AtPmtpX3NmbGFnID0gMDsNCi0Ja3AtPmtpX3N3dGltZSA9IHAtPnBfc3d0 aW1lOw0KKwkvKiBDYWxjdWxhdGUgbGVnYWN5IHN3dGltZSBhcyBzZWNvbmRz IHNpbmNlICdzd3RpY2snLiAqLw0KKwlrcC0+a2lfc3d0aW1lID0gKHRpY2tz IC0gcC0+cF9zd3RpY2spIC8gaHo7DQogCWtwLT5raV9waWQgPSBwLT5wX3Bp ZDsNCiAJa3AtPmtpX25pY2UgPSBwLT5wX25pY2U7DQogCXJ1ZmV0Y2gocCwg JmtwLT5raV9ydXNhZ2UpOw0KQEAgLTgxMiw3ICs4MTMsNyBAQCBmaWxsX2tp bmZvX3RocmVhZChzdHJ1Y3QgdGhyZWFkICp0ZCwgc3RyDQogCWtwLT5raV9r c3RhY2sgPSAodm9pZCAqKXRkLT50ZF9rc3RhY2s7DQogCWtwLT5raV9wY3Rj cHUgPSBzY2hlZF9wY3RjcHUodGQpOw0KIAlrcC0+a2lfZXN0Y3B1ID0gdGQt PnRkX2VzdGNwdTsNCi0Ja3AtPmtpX3NscHRpbWUgPSB0ZC0+dGRfc2xwdGlt ZTsNCisJa3AtPmtpX3NscHRpbWUgPSAodGlja3MgLSB0ZC0+dGRfc2xwdGlj aykgLyBoejsNCiAJa3AtPmtpX3ByaS5wcmlfY2xhc3MgPSB0ZC0+dGRfcHJp X2NsYXNzOw0KIAlrcC0+a2lfcHJpLnByaV91c2VyID0gdGQtPnRkX3VzZXJf cHJpOw0KIA0KSW5kZXg6IHN5cy9rZXJuL2tlcm5fdGhyZWFkLmMNCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvaG9tZS9uY3ZzL3NyYy9z eXMva2Vybi9rZXJuX3RocmVhZC5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24g MS4yNTMNCmRpZmYgLXUgLXAgLXIxLjI1MyBrZXJuX3RocmVhZC5jDQotLS0g c3lzL2tlcm4va2Vybl90aHJlYWQuYwkxNyBTZXAgMjAwNyAwNToyNzoyMCAt MDAwMAkxLjI1Mw0KKysrIHN5cy9rZXJuL2tlcm5fdGhyZWFkLmMJMTcgU2Vw IDIwMDcgMjM6NTY6NDUgLTAwMDANCkBAIC04NTIsNiArODUyLDcgQEAgdGhy ZWFkX3N1c3BlbmRfc3dpdGNoKHN0cnVjdCB0aHJlYWQgKnRkKQ0KIAlwLT5w X3N1c3Bjb3VudCsrOw0KIAlQUk9DX1VOTE9DSyhwKTsNCiAJdGhyZWFkX2xv Y2sodGQpOw0KKwlzY2hlZF9zbGVlcCh0ZCk7DQogCVREX1NFVF9TVVNQRU5E RUQodGQpOw0KIAlQUk9DX1NVTkxPQ0socCk7DQogCURST1BfR0lBTlQoKTsN CkBAIC04NzEsNiArODcyLDcgQEAgdGhyZWFkX3N1c3BlbmRfb25lKHN0cnVj dCB0aHJlYWQgKnRkKQ0KIAlUSFJFQURfTE9DS19BU1NFUlQodGQsIE1BX09X TkVEKTsNCiAJS0FTU0VSVCghVERfSVNfU1VTUEVOREVEKHRkKSwgKCJhbHJl YWR5IHN1c3BlbmRlZCIpKTsNCiAJcC0+cF9zdXNwY291bnQrKzsNCisJc2No ZWRfc2xlZXAodGQpOw0KIAlURF9TRVRfU1VTUEVOREVEKHRkKTsNCiB9DQog DQpJbmRleDogc3lzL2tlcm4vc2NoZWRfNGJzZC5jDQo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09DQpSQ1MgZmlsZTogL2hvbWUvbmN2cy9zcmMvc3lzL2tlcm4v c2NoZWRfNGJzZC5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMDQNCmRp ZmYgLXUgLXAgLXIxLjEwNCBzY2hlZF80YnNkLmMNCi0tLSBzeXMva2Vybi9z Y2hlZF80YnNkLmMJMTcgU2VwIDIwMDcgMDU6Mjc6MjAgLTAwMDAJMS4xMDQN CisrKyBzeXMva2Vybi9zY2hlZF80YnNkLmMJMTcgU2VwIDIwMDcgMDY6MDY6 MzkgLTAwMDANCkBAIC04NCw2ICs4NCw3IEBAIHN0cnVjdCB0ZF9zY2hlZCB7 DQogCWZpeHB0X3QJCXRzX3BjdGNwdTsJLyogKGopICVjcHUgZHVyaW5nIHBf c3d0aW1lLiAqLw0KIAl1X2NoYXIJCXRzX3JxaW5kZXg7CS8qIChqKSBSdW4g cXVldWUgaW5kZXguICovDQogCWludAkJdHNfY3B0aWNrczsJLyogKGopIFRp Y2tzIG9mIGNwdSB0aW1lLiAqLw0KKwlpbnQJCXRzX3NscHRpbWU7CS8qIChq KSBTZWNvbmRzICFSVU5OSU5HLiAqLw0KIAlzdHJ1Y3QgcnVucQkqdHNfcnVu cTsJLyogcnVucSB0aGUgdGhyZWFkIGlzIGN1cnJlbnRseSBvbiAqLw0KIH07 DQogDQpAQCAtMzc5LDExICszODAsNiBAQCBzY2hlZGNwdSh2b2lkKQ0KIAlz eF9zbG9jaygmYWxscHJvY19sb2NrKTsNCiAJRk9SRUFDSF9QUk9DX0lOX1NZ U1RFTShwKSB7DQogCQlQUk9DX1NMT0NLKHApOw0KLQkJLyoNCi0JCSAqIElu Y3JlbWVudCB0aW1lIGluL291dCBvZiBtZW1vcnkuICBXZSBpZ25vcmUgb3Zl cmZsb3c7IHdpdGgNCi0JCSAqIDE2LWJpdCBpbnQncyAocmVtZW1iZXIgdGhl bT8pIG92ZXJmbG93IHRha2VzIDQ1IGRheXMuDQotCQkgKi8NCi0JCXAtPnBf c3d0aW1lKys7DQogCQlGT1JFQUNIX1RIUkVBRF9JTl9QUk9DKHAsIHRkKSB7 IA0KIAkJCWF3YWtlID0gMDsNCiAJCQl0aHJlYWRfbG9jayh0ZCk7DQpAQCAt NDQwLDcgKzQzNiw3IEBAIFhYWCAgdGhpcyBpcyBicm9rZW4NCiANCiAJCQkg Ki8NCiAJCQlpZiAoYXdha2UpIHsNCi0JCQkJaWYgKHRkLT50ZF9zbHB0aW1l ID4gMSkgew0KKwkJCQlpZiAodHMtPnRzX3NscHRpbWUgPiAxKSB7DQogCQkJ CQkvKg0KIAkJCQkJICogSW4gYW4gaWRlYWwgd29ybGQsIHRoaXMgc2hvdWxk IG5vdA0KIAkJCQkJICogaGFwcGVuLCBiZWNhdXNlIHdob2V2ZXIgd29rZSB1 cw0KQEAgLTQ1MiwxMCArNDQ4LDEwIEBAIFhYWCAgdGhpcyBpcyBicm9rZW4N CiAJCQkJCSAqLw0KIAkJCQkJdXBkYXRlcHJpKHRkKTsNCiAJCQkJfQ0KLQkJ CQl0ZC0+dGRfc2xwdGltZSA9IDA7DQorCQkJCXRzLT50c19zbHB0aW1lID0g MDsNCiAJCQl9IGVsc2UNCi0JCQkJdGQtPnRkX3NscHRpbWUrKzsNCi0JCQlp ZiAodGQtPnRkX3NscHRpbWUgPiAxKSB7DQorCQkJCXRzLT50c19zbHB0aW1l Kys7DQorCQkJaWYgKHRzLT50c19zbHB0aW1lID4gMSkgew0KIAkJCQl0aHJl YWRfdW5sb2NrKHRkKTsNCiAJCQkJY29udGludWU7DQogCQkJfQ0KQEAgLTQ5 MCwxNiArNDg2LDE4IEBAIHNjaGVkY3B1X3RocmVhZCh2b2lkKQ0KIHN0YXRp YyB2b2lkDQogdXBkYXRlcHJpKHN0cnVjdCB0aHJlYWQgKnRkKQ0KIHsNCi0J cmVnaXN0ZXIgZml4cHRfdCBsb2FkZmFjOw0KLQlyZWdpc3RlciB1bnNpZ25l ZCBpbnQgbmV3Y3B1Ow0KKwlzdHJ1Y3QgdGRfc2NoZWQgKnRzOw0KKwlmaXhw dF90IGxvYWRmYWM7DQorCXVuc2lnbmVkIGludCBuZXdjcHU7DQogDQorCXRz ID0gdGQtPnRkX3NjaGVkOw0KIAlsb2FkZmFjID0gbG9hZGZhY3RvcihhdmVy dW5uYWJsZS5sZGF2Z1swXSk7DQotCWlmICh0ZC0+dGRfc2xwdGltZSA+IDUg KiBsb2FkZmFjKQ0KKwlpZiAodHMtPnRzX3NscHRpbWUgPiA1ICogbG9hZGZh YykNCiAJCXRkLT50ZF9lc3RjcHUgPSAwOw0KIAllbHNlIHsNCiAJCW5ld2Nw dSA9IHRkLT50ZF9lc3RjcHU7DQotCQl0ZC0+dGRfc2xwdGltZS0tOwkvKiB3 YXMgaW5jcmVtZW50ZWQgaW4gc2NoZWRjcHUoKSAqLw0KLQkJd2hpbGUgKG5l d2NwdSAmJiAtLXRkLT50ZF9zbHB0aW1lKQ0KKwkJdHMtPnRzX3NscHRpbWUt LTsJLyogd2FzIGluY3JlbWVudGVkIGluIHNjaGVkY3B1KCkgKi8NCisJCXdo aWxlIChuZXdjcHUgJiYgLS10cy0+dHNfc2xwdGltZSkNCiAJCQluZXdjcHUg PSBkZWNheV9jcHUobG9hZGZhYywgbmV3Y3B1KTsNCiAJCXRkLT50ZF9lc3Rj cHUgPSBuZXdjcHU7DQogCX0NCkBAIC04MjcsNyArODI1LDggQEAgc2NoZWRf c2xlZXAoc3RydWN0IHRocmVhZCAqdGQpDQogew0KIA0KIAlUSFJFQURfTE9D S19BU1NFUlQodGQsIE1BX09XTkVEKTsNCi0JdGQtPnRkX3NscHRpbWUgPSAw Ow0KKwl0ZC0+dGRfc2xwdGljayA9IHRpY2tzOw0KKwl0ZC0+dGRfc2NoZWQt PnRzX3NscHRpbWUgPSAwOw0KIH0NCiANCiB2b2lkDQpAQCAtOTM5LDEyICs5 MzgsMTYgQEAgc2NoZWRfc3dpdGNoKHN0cnVjdCB0aHJlYWQgKnRkLCBzdHJ1 Y3QgdA0KIHZvaWQNCiBzY2hlZF93YWtldXAoc3RydWN0IHRocmVhZCAqdGQp DQogew0KKwlzdHJ1Y3QgdGRfc2NoZWQgKnRzOw0KKw0KIAlUSFJFQURfTE9D S19BU1NFUlQodGQsIE1BX09XTkVEKTsNCi0JaWYgKHRkLT50ZF9zbHB0aW1l ID4gMSkgew0KKwl0cyA9IHRkLT50ZF9zY2hlZDsNCisJaWYgKHRzLT50c19z bHB0aW1lID4gMSkgew0KIAkJdXBkYXRlcHJpKHRkKTsNCiAJCXJlc2V0cHJp b3JpdHkodGQpOw0KIAl9DQotCXRkLT50ZF9zbHB0aW1lID0gMDsNCisJdGQt PnRkX3NscHRpY2sgPSB0aWNrczsNCisJdHMtPnRzX3NscHRpbWUgPSAwOw0K IAlzY2hlZF9hZGQodGQsIFNSUV9CT1JJTkcpOw0KIH0NCiANCkluZGV4OiBz eXMva2Vybi9zY2hlZF91bGUuYw0KPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K UkNTIGZpbGU6IC9ob21lL25jdnMvc3JjL3N5cy9rZXJuL3NjaGVkX3VsZS5j LHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4yMDYNCmRpZmYgLXUgLXAgLXIx LjIwNiBzY2hlZF91bGUuYw0KLS0tIHN5cy9rZXJuL3NjaGVkX3VsZS5jCTE3 IFNlcCAyMDA3IDA1OjI3OjIwIC0wMDAwCTEuMjA2DQorKysgc3lzL2tlcm4v c2NoZWRfdWxlLmMJMTcgU2VwIDIwMDcgMDY6MDc6MzAgLTAwMDANCkBAIC04 OCw3ICs4OCw2IEBAIHN0cnVjdCB0ZF9zY2hlZCB7CQ0KIAlzaG9ydAkJdHNf ZmxhZ3M7CS8qIFRTRl8qIGZsYWdzLiAqLw0KIAl1X2NoYXIJCXRzX3JxaW5k ZXg7CS8qIFJ1biBxdWV1ZSBpbmRleC4gKi8NCiAJdV9jaGFyCQl0c19jcHU7 CQkvKiBDUFUgdGhhdCB3ZSBoYXZlIGFmZmluaXR5IGZvci4gKi8NCi0JaW50 CQl0c19zbHB0aWNrOwkvKiBUaWNrIHdoZW4gd2Ugd2VudCB0byBzbGVlcC4g Ki8NCiAJaW50CQl0c19zbGljZTsJLyogVGlja3Mgb2Ygc2xpY2UgcmVtYWlu aW5nLiAqLw0KIAl1X2ludAkJdHNfc2xwdGltZTsJLyogTnVtYmVyIG9mIHRp Y2tzIHdlIHZvbC4gc2xlcHQgKi8NCiAJdV9pbnQJCXRzX3J1bnRpbWU7CS8q IE51bWJlciBvZiB0aWNrcyB3ZSB3ZXJlIHJ1bm5pbmcgKi8NCkBAIC0xOTE0 LDcgKzE5MTMsNyBAQCBzY2hlZF9zbGVlcChzdHJ1Y3QgdGhyZWFkICp0ZCkN CiANCiAJVEhSRUFEX0xPQ0tfQVNTRVJUKHRkLCBNQV9PV05FRCk7DQogDQot CXRkLT50ZF9zY2hlZC0+dHNfc2xwdGljayA9IHRpY2tzOw0KKwl0ZC0+dGRf c2xwdGljayA9IHRpY2tzOw0KIH0NCiANCiAvKg0KQEAgLTE5MzMsOCArMTkz Miw4IEBAIHNjaGVkX3dha2V1cChzdHJ1Y3QgdGhyZWFkICp0ZCkNCiAJICog SWYgd2Ugc2xlcHQgZm9yIG1vcmUgdGhhbiBhIHRpY2sgdXBkYXRlIG91ciBp bnRlcmFjdGl2aXR5IGFuZA0KIAkgKiBwcmlvcml0eS4NCiAJICovDQotCXNs cHRpY2sgPSB0cy0+dHNfc2xwdGljazsNCi0JdHMtPnRzX3NscHRpY2sgPSAw Ow0KKwlzbHB0aWNrID0gdGQtPnRkX3NscHRpY2s7DQorCXRkLT50ZF9zbHB0 aWNrID0gMDsNCiAJaWYgKHNscHRpY2sgJiYgc2xwdGljayAhPSB0aWNrcykg ew0KIAkJdV9pbnQgaHp0aWNrczsNCiANCkBAIC0yNDM1LDcgKzI0MzQsNiBA QCBzY2hlZF9wY3RjcHUoc3RydWN0IHRocmVhZCAqdGQpDQogCQlydGljayA9 IG1pbihTQ0hFRF9USUNLX0haKHRzKSAvIFNDSEVEX1RJQ0tfU0VDUywgaHop Ow0KIAkJcGN0Y3B1ID0gKEZTQ0FMRSAqICgoRlNDQUxFICogcnRpY2spL2h6 KSkgPj4gRlNISUZUOw0KIAl9DQotCXRkLT50ZF9wcm9jLT5wX3N3dGltZSA9 IHRzLT50c19sdGljayAtIHRzLT50c19mdGljazsNCiAJdGhyZWFkX3VubG9j ayh0ZCk7DQogDQogCXJldHVybiAocGN0Y3B1KTsNCkluZGV4OiBzeXMvc3lz L3Byb2MuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9o b21lL25jdnMvc3JjL3N5cy9zeXMvcHJvYy5oLHYNCnJldHJpZXZpbmcgcmV2 aXNpb24gMS40OTANCmRpZmYgLXUgLXAgLXIxLjQ5MCBwcm9jLmgNCi0tLSBz eXMvc3lzL3Byb2MuaAkxNyBTZXAgMjAwNyAwNToyNzoyMSAtMDAwMAkxLjQ5 MA0KKysrIHN5cy9zeXMvcHJvYy5oCTE3IFNlcCAyMDA3IDA2OjAwOjUwIC0w MDAwDQpAQCAtMjQyLDcgKzI0Miw3IEBAIHN0cnVjdCB0aHJlYWQgew0KIAlz dHJ1Y3QgdGhyZWFkCSp0ZF9zdGFuZGluOwkvKiAoayArIGEpIFVzZSB0aGlz IGZvciBhbiB1cGNhbGwuICovDQogCXN0cnVjdCBrc2VfdXBjYWxsICp0ZF91 cGNhbGw7CS8qIChrICsgdCkgVXBjYWxsIHN0cnVjdHVyZS4gKi8NCiAJdV9p bnQJCXRkX2VzdGNwdTsJLyogKHQpIGVzdGltYXRlZCBjcHUgdXRpbGl6YXRp b24gKi8NCi0JdV9pbnQJCXRkX3NscHRpbWU7CS8qICh0KSBIb3cgbG9uZyBj b21wbGV0ZWx5IGJsb2NrZWQuICovDQorCXVfaW50CQl0ZF9zbHB0aWNrOwkv KiAodCkgVGltZSBhdCBzbGVlcC4gKi8NCiAJc3RydWN0IHJ1c2FnZQl0ZF9y dTsJCS8qICh0KSBydXNhZ2UgaW5mb3JtYXRpb24gKi8NCiAJdWludDY0X3QJ dGRfcnVudGltZTsJLyogKHQpIEhvdyBtYW55IGNwdSB0aWNrcyB3ZSd2ZSBy dW4uICovDQogCXVfaW50IAkJdGRfcHRpY2tzOwkvKiAodCkgU3RhdGNsb2Nr IGhpdHMgZm9yIHByb2ZpbGluZyAqLw0KQEAgLTUyMCw3ICs1MjAsNyBAQCBz dHJ1Y3QgcHJvYyB7DQogI2RlZmluZQlwX3N0YXJ0emVybwlwX29wcGlkDQog CXBpZF90CQlwX29wcGlkOwkvKiAoYyArIGUpIFNhdmUgcHBpZCBpbiBwdHJh Y2UuIFhYWCAqLw0KIAlzdHJ1Y3Qgdm1zcGFjZQkqcF92bXNwYWNlOwkvKiAo YikgQWRkcmVzcyBzcGFjZS4gKi8NCi0JdV9pbnQJCXBfc3d0aW1lOwkvKiAo aikgVGltZSBzd2FwcGVkIGluIG9yIG91dC4gKi8NCisJdV9pbnQJCXBfc3d0 aWNrOwkvKiAoaikgVGljayB3aGVuIHN3YXBwZWQgaW4gb3Igb3V0LiAqLw0K IAlzdHJ1Y3QgaXRpbWVydmFsIHBfcmVhbHRpbWVyOwkvKiAoYykgQWxhcm0g dGltZXIuICovDQogCXN0cnVjdCBydXNhZ2UJcF9ydTsJCS8qIChhKSBFeGl0 IGluZm9ybWF0aW9uLiAqLw0KIAlzdHJ1Y3QgcnVzYWdlX2V4dCBwX3J1eDsJ LyogKGNqKSBJbnRlcm5hbCByZXNvdXJjZSB1c2FnZS4gKi8NCkluZGV4OiBz eXMvdm0vdm1fZ2x1ZS5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1Mg ZmlsZTogL2hvbWUvbmN2cy9zcmMvc3lzL3ZtL3ZtX2dsdWUuYyx2DQpyZXRy aWV2aW5nIHJldmlzaW9uIDEuMjI0DQpkaWZmIC11IC1wIC1yMS4yMjQgdm1f Z2x1ZS5jDQotLS0gc3lzL3ZtL3ZtX2dsdWUuYwkxNyBTZXAgMjAwNyAwNToy NzoyMSAtMDAwMAkxLjIyNA0KKysrIHN5cy92bS92bV9nbHVlLmMJMTcgU2Vw IDIwMDcgMDY6MDU6MDcgLTAwMDANCkBAIC02MzYsNyArNjM2LDcgQEAgZmF1 bHRpbihwKQ0KIAkJUFJPQ19MT0NLKHApOw0KIAkJUFJPQ19TTE9DSyhwKTsN CiAJCXN3YXBjbGVhcihwKTsNCi0JCXAtPnBfc3d0aW1lID0gMDsNCisJCXAt PnBfc3d0aWNrID0gdGlja3M7DQogCQlQUk9DX1NVTkxPQ0socCk7DQogDQog CQl3YWtldXAoJnAtPnBfZmxhZyk7DQpAQCAtNjYzLDkgKzY2MywxMSBAQCBz Y2hlZHVsZXIoZHVtbXkpDQogew0KIAlzdHJ1Y3QgcHJvYyAqcDsNCiAJc3Ry dWN0IHRocmVhZCAqdGQ7DQotCWludCBwcmk7DQogCXN0cnVjdCBwcm9jICpw cDsNCisJaW50IHNscHRpbWU7DQorCWludCBzd3RpbWU7DQogCWludCBwcHJp Ow0KKwlpbnQgcHJpOw0KIA0KIAltdHhfYXNzZXJ0KCZHaWFudCwgTUFfT1dO RUQgfCBNQV9OT1RSRUNVUlNFRCk7DQogCW10eF91bmxvY2soJkdpYW50KTsN CkBAIC02ODgsNiArNjkwLDcgQEAgbG9vcDoNCiAJCQlQUk9DX1VOTE9DSyhw KTsNCiAJCQljb250aW51ZTsNCiAJCX0NCisJCXN3dGltZSA9ICh0aWNrcyAt IHAtPnBfc3d0aWNrKSAvIGh6Ow0KIAkJUFJPQ19TTE9DSyhwKTsNCiAJCUZP UkVBQ0hfVEhSRUFEX0lOX1BST0MocCwgdGQpIHsNCiAJCQkvKg0KQEAgLTY5 Nyw3ICs3MDAsOCBAQCBsb29wOg0KIAkJCSAqLw0KIAkJCXRocmVhZF9sb2Nr KHRkKTsNCiAJCQlpZiAodGQtPnRkX2luaGliaXRvcnMgPT0gVERJX1NXQVBQ RUQpIHsNCi0JCQkJcHJpID0gcC0+cF9zd3RpbWUgKyB0ZC0+dGRfc2xwdGlt ZTsNCisJCQkJc2xwdGltZSA9ICh0aWNrcyAtIHRkLT50ZF9zbHB0aWNrKSAv IGh6Ow0KKwkJCQlwcmkgPSBzd3RpbWUgKyBzbHB0aW1lOw0KIAkJCQlpZiAo KHRkLT50ZF9mbGFncyAmIFRERl9TV0FQSU5SRVEpID09IDApDQogCQkJCQlw cmkgLT0gcC0+cF9uaWNlICogODsNCiAJCQkJLyoNCkBAIC04MTYsNiArODIw LDcgQEAgcmV0cnk6DQogCUZPUkVBQ0hfUFJPQ19JTl9TWVNURU0ocCkgew0K IAkJc3RydWN0IHZtc3BhY2UgKnZtOw0KIAkJaW50IG1pbnNscHRpbWUgPSAx MDAwMDA7DQorCQlpbnQgc2xwdGltZTsNCiAJCQ0KIAkJLyoNCiAJCSAqIFdh dGNoIG91dCBmb3IgYSBwcm9jZXNzIGluDQpAQCAtODgyLDEyICs4ODcsMTIg QEAgcmV0cnk6DQogCQkJCQl0aHJlYWRfdW5sb2NrKHRkKTsNCiAJCQkJCWdv dG8gbmV4dHByb2M7DQogCQkJCX0NCi0NCisJCQkJc2xwdGltZSA9ICh0aWNr cyAtIHRkLT50ZF9zbHB0aWNrKSAvIGh6Ow0KIAkJCQkvKg0KIAkJCQkgKiBH dWFyYW50ZWUgc3dhcF9pZGxlX3RocmVzaG9sZDENCiAJCQkJICogdGltZSBp biBtZW1vcnkuDQogCQkJCSAqLw0KLQkJCQlpZiAodGQtPnRkX3NscHRpbWUg PCBzd2FwX2lkbGVfdGhyZXNob2xkMSkgew0KKwkJCQlpZiAoc2xwdGltZSA8 IHN3YXBfaWRsZV90aHJlc2hvbGQxKSB7DQogCQkJCQl0aHJlYWRfdW5sb2Nr KHRkKTsNCiAJCQkJCWdvdG8gbmV4dHByb2M7DQogCQkJCX0NCkBAIC05MTQs MTMgKzkxOSwxMyBAQCByZXRyeToNCiAJCQkJICovDQogCQkJCWlmICgoKGFj dGlvbiAmIFZNX1NXQVBfTk9STUFMKSA9PSAwKSAmJg0KIAkJCQkgICAgKCgo YWN0aW9uICYgVk1fU1dBUF9JRExFKSA9PSAwKSB8fA0KLQkJCQkgICAgKHRk LT50ZF9zbHB0aW1lIDwgc3dhcF9pZGxlX3RocmVzaG9sZDIpKSkgew0KKwkJ CQkgICAgKHNscHRpbWUgPCBzd2FwX2lkbGVfdGhyZXNob2xkMikpKSB7DQog CQkJCQl0aHJlYWRfdW5sb2NrKHRkKTsNCiAJCQkJCWdvdG8gbmV4dHByb2M7 DQogCQkJCX0NCiANCi0JCQkJaWYgKG1pbnNscHRpbWUgPiB0ZC0+dGRfc2xw dGltZSkNCi0JCQkJCW1pbnNscHRpbWUgPSB0ZC0+dGRfc2xwdGltZTsNCisJ CQkJaWYgKG1pbnNscHRpbWUgPiBzbHB0aW1lKQ0KKwkJCQkJbWluc2xwdGlt ZSA9IHNscHRpbWU7DQogCQkJCXRocmVhZF91bmxvY2sodGQpOw0KIAkJCX0N CiANCkBAIC0xMDM4LDcgKzEwNDMsNyBAQCBzd2Fwb3V0KHApDQogCVBST0Nf TE9DSyhwKTsNCiAJcC0+cF9mbGFnICY9IH5QX1NXQVBQSU5HT1VUOw0KIAlQ Uk9DX1NMT0NLKHApOw0KLQlwLT5wX3N3dGltZSA9IDA7DQorCXAtPnBfc3d0 aWNrID0gdGlja3M7DQogCXJldHVybiAoMCk7DQogfQ0KICNlbmRpZiAvKiAh Tk9fU1dBUFBJTkcgKi8NCg== --0-2003406049-1190073957=:558--