From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934755AbXGZUFp (ORCPT ); Thu, 26 Jul 2007 16:05:45 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S936476AbXGZUFP (ORCPT ); Thu, 26 Jul 2007 16:05:15 -0400 Received: from nz-out-0506.google.com ([64.233.162.227]:56151 "EHLO nz-out-0506.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S936434AbXGZUFL (ORCPT ); Thu, 26 Jul 2007 16:05:11 -0400 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:cc:mime-version:content-type; b=SV5jqco4o+Re3GzHbtL4rWvtMng009SY1kuZDJg7hsCMOS3zorHJMtu/KiXkP+h0DwH5xKOwItlRVpqt/Xezb8OZpt63VPO4x8xSt05Z53rkQF+16xFqTtQOtUq3fzq4viBa9mI54ZTenvDxxxv6XugBXSdYehNhPQ5zXuBZulc= Message-ID: <86802c440707261305t13bce632r7d82d598b9f8a308@mail.gmail.com> Date: Thu, 26 Jul 2007 13:05:09 -0700 From: "Yinghai Lu" To: "Andrew Morton" , "Andi Kleen" , "Christoph Lameter" Subject: [PATCH 1/5] x86_64: get mp_bus_to_node as early v2 Cc: linux-kernel MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_205588_5049846.1185480309327" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org ------=_Part_205588_5049846.1185480309327 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline ------=_Part_205588_5049846.1185480309327 Content-Type: text/x-patch; name=bus_numa_1.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f4lo45uu Content-Disposition: attachment; filename="bus_numa_1.diff" CltQQVRDSCAxLzVdIHg4Nl82NDogZ2V0IG1wX2J1c190b19ub2RlIGFzIGVhcmx5IHYyCgpJbiBz dHJ1Y3QgZGV2aWNlLCB3ZSBhbHJlYWR5IGhhdmUgbnVtYV9ub2RlIG1lbWJlci4gYW5kIHdlIGNh biB1c2UgZGV2X3RvX25vZGUoKQovc2V0X2Rldl9ub2RlKCkgdG8gZ2V0IGFuZCBzZXQgbnVtYV9u b2RlIGluIHRoZSBkZXZpY2UuCnNldF9kZXZfbm9kZSBpcyBjYWxsZWQgaW4gcGNpX2RldmljZV9h ZGQoKSB3aXRoIHBjaWJ1c190b19ub2RlKGJ1cykuIGFuZApwY2lfYnVzX3RvX25vZGUgdXNlIGJ1 cy0+c3lzZGF0YSBmb3Igbm9kZWlkLgp0aGUgcHJvYmxlbSBpcyB3aGVuIHBjaV9hZGRfZGV2aWNl IGlzIGNhbGxlZCwgYnVzLT5zeXNkYXRhIGlzIG5vdCBhc3NpZ25lZApjb3JyZWN0IG5vZGVpZCB5 ZXQuIHRoZSByZXN1bHQgd2lsbCBiZSBudW1hX25vZGUgYWx3YXlzIGlzIDAuCnBjaWJpb3Nfc2Nh bl9yb290IGFuZCBwY2lfc2Nhbl9yb290IGNvdWxkIHRha2Ugc3lzZGF0YS4gU28gd2UgbmVlZCB0 byBnZXQKbXBfYnVzX3RvX25vZGUgbWFwcGluZyBiZWZvcmUgdGhlc2UgdHdvIGFyZSBjYWxsZWQu IGFuZCBnZXRfbXBfYnVzX3RvX25vZGUKY291bGQgZ2V0IGNvcnJlY3Qgbm9kZSBmb3Igc3lzZGF0 YSBpbiByb290IGJ1cy4KaW4gc2Nhbm5pbmcgb2Ygcm9vdCBidXMsIGFsbCBjaGlsZCBidXMgd2ls bCB0YWtlIHBhcmVudCBidXMgc3lzZGF0YS4gU28gYWxsCnBjaV9kZXZpY2UtPmRldi5udW1hX25v ZGUgd2lsbCBiZSBhc3NpZ25lZCBjb3JyZWN0bHkgYXV0b21hdGljYWxseS4KbGF0ZXIgd2UgY291 bGQgdXNlIGRldl90b19ub2RlKCZwY2lfZGV2LT5kZXYpIHRvIG51bWFfbm9kZSwgYW5kIHdlIGNv dWxkIGFsc28KY291bGQgbWFrZSBvdGhlciBidXMgc3BlY2lmaWMgZGV2aWNlIGdldCB0aGUgY29y cmVjdCBudW1hX25vZGUgdG9vLgphbmQgaW4gZGlmZmVyZW50IGRyaXZlciB3ZSBjb3VsZCB1c2Ug a21hbGxvY19ub2RlIGluc3RlYWQgb2Yga21hbGxvYyBmb3IKc2tidWZmL25ldCBvciB1cmIvdXNi IGV0Yy4gVGhhdCBjb3VsZCBoZWxwIGltcHJvdmUgcGVyZm9ybWFuY2Ugd2l0aAp1c2Igb3IgbmV0 IG9yCnNhdGEgZm9yIEFNRCBLOCB0d28gc29ja2V0cyBiZXlvbmQgc3lzdGVtLgoKRm9yIGV4YW1w bGU6CnR3byB3YXkgb3B0ZXJvbiBzeXN0ZW0gYW5kIG9ubHkgb25lIEhUIGNoYWluIG9uIG5vZGUg MC4gVVNCIGNvbnRyb2xsZXIgb24gU0IKd2lsbCBiZSBvbiBub2RlMC4gc29tZSBkbWEgYWNjZXNz aW5nIGlzIHVzZWQgd2l0aCBrbWFsbG9jL2RtYV9tYXBfc2luZ2xlLiBhbmQKdGhlc2UgYWRkcmVz cyB3aWxsIGJlIG9uIG5vZGUxIGluc3RlYWQgb2Ygbm9kZTAuIGFuZCBldmVuIHdvcnNlLCB3aGVu IG5vZGUxIHJhbQogaXMgYWJvdmUgNEcsIHdlIG1heSBuZWVkIHRvIGlvbW11IG1hcHBpbmcgZm9y IHVzYiBvcGVyYXRpb24uCnR3byB3YXkgc3lzdGVtIHdpdGggb25lIEhUIGNoYWluIG9uIGRpZmZl cmVudCBub2RlLCB3ZSB3aWxsIG5lZWQgdG8Ka21hbGxvYy9kbWFfbWFwX3NpbmdsZSB0byB1c2Ug cmFtIG9uIGNvcnJlc29uZGluZyBub2RlIHRvby4gIGVzcCBmb3IgbnZpZGlhCm1jcDU1L2lvNTUg c3lzdGVtLiB0aGUgc2Vjb25kIGlvNTUgY291bGQgaGF2ZSBuaWMvc2F0YS9wY2llIGRldmljZXMu Cgp0aGlzIGlzIG9uZSB1cGRhdGUgdmVyc2lvbiB0byBwY2lfc3lzZGF0YSAuLi4KYWxzbyByZXZl cnNlIHBjaV9hY3BpX3NjYW5fcm9vdCB0byB1c2UgcGNpYmlvc19zY2FuX3Jvb3QgYWdhaW4uCgp3 aXRob3V0IHRoaXMgcGF0Y2g6IC9zeXMvZGV2aWNlcy9wY2kwMDAwOjgwLyovbnVtYV9ub2RlIGZv ciBIVCBjaGFpbnMgb3RoZXIgdGhhbiBvbiBub2RlMAphbHdheXMgMC4KClNpZ25lZC1vZmYtYnk6 IFlpbmdoYWkgTHUgPHlpbmdoYWkubHVAc3VuLmNvbT4KCiBhcmNoL2kzODYvcGNpL01ha2VmaWxl ICAgICAgICAgfCAgICAxCiBhcmNoL2kzODYvcGNpL2FjcGkuYyAgICAgICAgICAgfCAgIDQwICsr KysrLS0tLS0tLS0tLS0tLS0KIGFyY2gvaTM4Ni9wY2kvY29tbW9uLmMgICAgICAgICB8ICAgIDcg KystCiBhcmNoL2kzODYvcGNpL2lycS5jICAgICAgICAgICAgfCAgIDE4ICsrKysrKysrCiBhcmNo L2kzODYvcGNpL2xlZ2FjeS5jICAgICAgICAgfCAgIDIyICsrKysrKysrKysKIGFyY2gvaTM4Ni9w Y2kvbXBfYnVzX3RvX25vZGUuYyB8ICAgMjQgKysrKysrKysrKysKIGFyY2gveDg2XzY0L3BjaS9r OC1idXMuYyAgICAgICB8ICAgODMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0KIGluY2x1ZGUvYXNtLWkzODYvdG9wb2xvZ3kuaCAgICB8ICAgMTAgKysrKwogaW5jbHVk ZS9hc20teDg2XzY0L3RvcG9sb2d5LmggIHwgICAxMyArKysrKysKIDkgZmlsZXMgY2hhbmdlZCwg MTU5IGluc2VydGlvbnMoKyksIDU5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2FyY2gvaTM4 Ni9wY2kvTWFrZWZpbGUgYi9hcmNoL2kzODYvcGNpL01ha2VmaWxlCmluZGV4IDQ0NjUwZTAuLjYw MGQwZTcgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9wY2kvTWFrZWZpbGUKKysrIGIvYXJjaC9pMzg2 L3BjaS9NYWtlZmlsZQpAQCAtMTAsNSArMTAsNiBAQCBwY2kteQkJCQkrPSBsZWdhY3kubyBpcnEu bwogCiBwY2ktJChDT05GSUdfWDg2X1ZJU1dTKQkJOj0gdmlzd3MubyBmaXh1cC5vCiBwY2ktJChD T05GSUdfWDg2X05VTUFRKQkJOj0gbnVtYS5vIGlycS5vCitwY2ktJChDT05GSUdfTlVNQSkJCSs9 IG1wX2J1c190b19ub2RlLm8KIAogb2JqLXkJCQkJKz0gJChwY2kteSkgY29tbW9uLm8gZWFybHku bwpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L3BjaS9hY3BpLmMgYi9hcmNoL2kzODYvcGNpL2FjcGku YwppbmRleCBiYzhhNDRiLi5kZmEyNGExIDEwMDY0NAotLS0gYS9hcmNoL2kzODYvcGNpL2FjcGku YworKysgYi9hcmNoL2kzODYvcGNpL2FjcGkuYwpAQCAtOCw0NiArOCwyOCBAQAogc3RydWN0IHBj aV9idXMgKiBfX2RldmluaXQgcGNpX2FjcGlfc2Nhbl9yb290KHN0cnVjdCBhY3BpX2RldmljZSAq ZGV2aWNlLCBpbnQgZG9tYWluLCBpbnQgYnVzbnVtKQogewogCXN0cnVjdCBwY2lfYnVzICpidXM7 Ci0Jc3RydWN0IHBjaV9zeXNkYXRhICpzZDsKKyNpZmRlZiBDT05GSUdfQUNQSV9OVU1BCiAJaW50 IHB4bTsKLQotCS8qIEFsbG9jYXRlIHBlci1yb290LWJ1cyAobm90IHBlciBidXMpIGFyY2gtc3Bl Y2lmaWMgZGF0YS4KLQkgKiBUT0RPOiBsZWFrOyB0aGlzIG1lbW9yeSBpcyBuZXZlciBmcmVlZC4K LQkgKiBJdCdzIGFyZ3VhYmxlIHdoZXRoZXIgaXQncyB3b3J0aCB0aGUgdHJvdWJsZSB0byBjYXJl LgotCSAqLwotCXNkID0ga3phbGxvYyhzaXplb2YoKnNkKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFz ZCkgewotCQlwcmludGsoS0VSTl9FUlIgIlBDSTogT09NLCBub3QgcHJvYmluZyBQQ0kgYnVzICUw MnhcbiIsIGJ1c251bSk7Ci0JCXJldHVybiBOVUxMOwotCX0KKwlpbnQgbm9kZTsKKyNlbmRpZgog CiAJaWYgKGRvbWFpbiAhPSAwKSB7CiAJCXByaW50ayhLRVJOX1dBUk5JTkcgIlBDSTogTXVsdGlw bGUgZG9tYWlucyBub3Qgc3VwcG9ydGVkXG4iKTsKLQkJa2ZyZWUoc2QpOwogCQlyZXR1cm4gTlVM TDsKIAl9CiAKLQlzZC0+bm9kZSA9IC0xOwotCi0JcHhtID0gYWNwaV9nZXRfcHhtKGRldmljZS0+ aGFuZGxlKTsKICNpZmRlZiBDT05GSUdfQUNQSV9OVU1BCi0JaWYgKHB4bSA+PSAwKQotCQlzZC0+ bm9kZSA9IHB4bV90b19ub2RlKHB4bSk7CisJcHhtID0gYWNwaV9nZXRfcHhtKGRldmljZS0+aGFu ZGxlKTsKKwlpZiAocHhtID49IDApIHsKKwkJbm9kZSA9IHB4bV90b19ub2RlKHB4bSk7CisJCXBy aW50ayhLRVJOX0lORk8gImJ1cyAlMDJ4IC0+IHB4bSAlZCAtPiBub2RlICUwMnhcbiIsCisJCQli dXNudW0sIHB4bSwgbm9kZSk7CisJCXNldF9tcF9idXNfdG9fbm9kZShidXNudW0sIG5vZGUpOwor CX0KICNlbmRpZgogCi0JYnVzID0gcGNpX3NjYW5fYnVzX3BhcmVudGVkKE5VTEwsIGJ1c251bSwg JnBjaV9yb290X29wcywgc2QpOwotCWlmICghYnVzKQotCQlrZnJlZShzZCk7CisJYnVzID0gcGNp Ymlvc19zY2FuX3Jvb3QoYnVzbnVtKTsKIAotI2lmZGVmIENPTkZJR19BQ1BJX05VTUEKLQlpZiAo YnVzICE9IE5VTEwpIHsKLQkJaWYgKHB4bSA+PSAwKSB7Ci0JCQlwcmludGsoImJ1cyAlZCAtPiBw eG0gJWQgLT4gbm9kZSAlZFxuIiwKLQkJCQlidXNudW0sIHB4bSwgc2QtPm5vZGUpOwotCQl9Ci0J fQotI2VuZGlmCi0JCiAJcmV0dXJuIGJ1czsKIH0KIApkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L3Bj aS9jb21tb24uYyBiL2FyY2gvaTM4Ni9wY2kvY29tbW9uLmMKaW5kZXggODU1MDNkZS4uZDE4OGUx MCAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L3BjaS9jb21tb24uYworKysgYi9hcmNoL2kzODYvcGNp L2NvbW1vbi5jCkBAIC0zMTQsOSArMzE0LDE0IEBAIHN0cnVjdCBwY2lfYnVzICogX19kZXZpbml0 IHBjaWJpb3Nfc2Nhbl9yb290KGludCBidXNudW0pCiAJCXJldHVybiBOVUxMOwogCX0KIAorCXNk LT5ub2RlID0gZ2V0X21wX2J1c190b19ub2RlKGJ1c251bSk7CisKIAlwcmludGsoS0VSTl9ERUJV RyAiUENJOiBQcm9iaW5nIFBDSSBoYXJkd2FyZSAoYnVzICUwMngpXG4iLCBidXNudW0pOworCWJ1 cyA9IHBjaV9zY2FuX2J1c19wYXJlbnRlZChOVUxMLCBidXNudW0sICZwY2lfcm9vdF9vcHMsIHNk KTsKKwlpZiAoIWJ1cykKKwkJa2ZyZWUoc2QpOwogCi0JcmV0dXJuIHBjaV9zY2FuX2J1c19wYXJl bnRlZChOVUxMLCBidXNudW0sICZwY2lfcm9vdF9vcHMsIHNkKTsKKwlyZXR1cm4gYnVzOwogfQog CiBleHRlcm4gdTggcGNpX2NhY2hlX2xpbmVfc2l6ZTsKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9w Y2kvaXJxLmMgYi9hcmNoL2kzODYvcGNpL2lycS5jCmluZGV4IGYyY2I5NDIuLjJhOWIzZDggMTAw NjQ0Ci0tLSBhL2FyY2gvaTM4Ni9wY2kvaXJxLmMKKysrIGIvYXJjaC9pMzg2L3BjaS9pcnEuYwpA QCAtMTM2LDEwICsxMzYsMjYgQEAgc3RhdGljIHZvaWQgX19pbml0IHBpcnFfcGVlcl90cmljayh2 b2lkKQogCQlidXNtYXBbZS0+YnVzXSA9IDE7CiAJfQogCWZvcihpID0gMTsgaSA8IDI1NjsgaSsr KSB7CisJCXN0cnVjdCBwY2lfYnVzICpidXMgPSBOVUxMOworCQlzdHJ1Y3QgcGNpX3N5c2RhdGEg KnNkOwogCQlpZiAoIWJ1c21hcFtpXSB8fCBwY2lfZmluZF9idXMoMCwgaSkpCiAJCQljb250aW51 ZTsKLQkJaWYgKHBjaV9zY2FuX2J1cyhpLCAmcGNpX3Jvb3Rfb3BzLCBOVUxMKSkKKwkJLyogQWxs b2NhdGUgcGVyLXJvb3QtYnVzIChub3QgcGVyIGJ1cykgYXJjaC1zcGVjaWZpYyBkYXRhLgorCQkg KiBUT0RPOiBsZWFrOyB0aGlzIG1lbW9yeSBpcyBuZXZlciBmcmVlZC4KKwkJICogSXQncyBhcmd1 YWJsZSB3aGV0aGVyIGl0J3Mgd29ydGggdGhlIHRyb3VibGUgdG8gY2FyZS4KKwkJICovCisJCXNk ID0ga3phbGxvYyhzaXplb2YoKnNkKSwgR0ZQX0tFUk5FTCk7CisJCWlmICghc2QpIHsKKwkJCXBy aW50ayhLRVJOX0VSUiAiUENJOiBPT00sIG5vdCBwcm9iaW5nIFBDSSBidXMgJTAyeFxuIiwKKwkJ CQlpKTsKKwkJCWNvbnRpbnVlOworCQl9CisJCXNkLT5ub2RlID0gZ2V0X21wX2J1c190b19ub2Rl KGkpOworCQlidXMgPSBwY2lfc2Nhbl9idXMoaSwgJnBjaV9yb290X29wcywgc2QpOworCQlpZiAo YnVzKQogCQkJcHJpbnRrKEtFUk5fSU5GTyAiUENJOiBEaXNjb3ZlcmVkIHByaW1hcnkgcGVlciBi dXMgJTAyeCBbSVJRXVxuIiwgaSk7CisJCWVsc2UKKwkJCWtmcmVlKHNkKTsKIAl9CiAJcGNpYmlv c19sYXN0X2J1cyA9IC0xOwogfQpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L3BjaS9sZWdhY3kuYyBi L2FyY2gvaTM4Ni9wY2kvbGVnYWN5LmMKaW5kZXggMTQ5YTk1OC4uMzEyMGIzMyAxMDA2NDQKLS0t IGEvYXJjaC9pMzg2L3BjaS9sZWdhY3kuYworKysgYi9hcmNoL2kzODYvcGNpL2xlZ2FjeS5jCkBA IC0xMiw2ICsxMiw5IEBACiBzdGF0aWMgdm9pZCBfX2RldmluaXQgcGNpYmlvc19maXh1cF9wZWVy X2JyaWRnZXModm9pZCkKIHsKIAlpbnQgbiwgZGV2Zm47CisJc3RydWN0IHBjaV9idXMgKmJ1cyA9 IE5VTEw7CisJc3RydWN0IHBjaV9zeXNkYXRhICpzZDsKKwlsb25nIG5vZGU7CiAKIAlpZiAocGNp Ymlvc19sYXN0X2J1cyA8PSAwIHx8IHBjaWJpb3NfbGFzdF9idXMgPj0gMHhmZikKIAkJcmV0dXJu OwpAQCAtMjEsMTIgKzI0LDI5IEBAIHN0YXRpYyB2b2lkIF9fZGV2aW5pdCBwY2liaW9zX2ZpeHVw X3BlZXJfYnJpZGdlcyh2b2lkKQogCQl1MzIgbDsKIAkJaWYgKHBjaV9maW5kX2J1cygwLCBuKSkK IAkJCWNvbnRpbnVlOworCQlub2RlID0gZ2V0X21wX2J1c190b19ub2RlKG4pOwogCQlmb3IgKGRl dmZuID0gMDsgZGV2Zm4gPCAyNTY7IGRldmZuICs9IDgpIHsKIAkJCWlmICghcmF3X3BjaV9vcHMt PnJlYWQoMCwgbiwgZGV2Zm4sIFBDSV9WRU5ET1JfSUQsIDIsICZsKSAmJgogCQkJICAgIGwgIT0g MHgwMDAwICYmIGwgIT0gMHhmZmZmKSB7CiAJCQkJREJHKCJGb3VuZCBkZXZpY2UgYXQgJTAyeDol MDJ4IFslMDR4XVxuIiwgbiwgZGV2Zm4sIGwpOwogCQkJCXByaW50ayhLRVJOX0lORk8gIlBDSTog RGlzY292ZXJlZCBwZWVyIGJ1cyAlMDJ4XG4iLCBuKTsKLQkJCQlwY2lfc2Nhbl9idXMobiwgJnBj aV9yb290X29wcywgTlVMTCk7CisJCQkJLyogQWxsb2NhdGUgcGVyLXJvb3QtYnVzIChub3QgcGVy IGJ1cykKKwkJCQkgKiBhcmNoLXNwZWNpZmljIGRhdGEuCisJCQkJICogVE9ETzogbGVhazsgdGhp cyBtZW1vcnkgaXMgbmV2ZXIgZnJlZWQuCisJCQkJICogSXQncyBhcmd1YWJsZSB3aGV0aGVyIGl0 J3Mgd29ydGggdGhlIHRyb3VibGUKKwkJCQkgKiB0byBjYXJlLgorCQkJCSAqLworCQkJCXNkID0g a3phbGxvYyhzaXplb2YoKnNkKSwgR0ZQX0tFUk5FTCk7CisJCQkJaWYgKCFzZCkgeworCQkJCQlw cmludGsoS0VSTl9FUlIKKwkJCQkJIlBDSTogT09NLCBub3QgcHJvYmluZyBQQ0kgYnVzICUwMnhc biIsCisJCQkJCQkgbik7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCQlzZC0+bm9kZSA9IG5vZGU7 CisJCQkJYnVzID0gcGNpX3NjYW5fYnVzKG4sICZwY2lfcm9vdF9vcHMsIHNkKTsKKwkJCQlpZiAo IWJ1cykKKwkJCQkJa2ZyZWUoc2QpOwogCQkJCWJyZWFrOwogCQkJfQogCQl9CmRpZmYgLS1naXQg YS9hcmNoL2kzODYvcGNpL21wX2J1c190b19ub2RlLmMgYi9hcmNoL2kzODYvcGNpL21wX2J1c190 b19ub2RlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY0ZTJlOQotLS0g L2Rldi9udWxsCisrKyBiL2FyY2gvaTM4Ni9wY2kvbXBfYnVzX3RvX25vZGUuYwpAQCAtMCwwICsx LDIzIEBACisjaW5jbHVkZSA8bGludXgvcGNpLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgor I2luY2x1ZGUgPGxpbnV4L3RvcG9sb2d5Lmg+CisKKyNkZWZpbmUgQlVTX05SIDI1NgorCitzdGF0 aWMgdW5zaWduZWQgY2hhciBtcF9idXNfdG9fbm9kZVtCVVNfTlJdOworCit2b2lkIHNldF9tcF9i dXNfdG9fbm9kZShpbnQgYnVzbnVtLCBpbnQgbm9kZSkKK3sKKwlpZiAoYnVzbnVtID49IDAgJiYg IGJ1c251bSA8IEJVU19OUikKKwltcF9idXNfdG9fbm9kZVtidXNudW1dID0gKHVuc2lnbmVkIGNo YXIpIG5vZGU7Cit9CisKK2ludCBnZXRfbXBfYnVzX3RvX25vZGUoaW50IGJ1c251bSkKK3sKKwlp bnQgbm9kZTsKKworCWlmIChidXNudW0gPCAwIHx8IGJ1c251bSA+IChCVVNfTlIgLSAxKSApCisJ CXJldHVybiAwOworCW5vZGUgPSBtcF9idXNfdG9fbm9kZVtidXNudW1dOworCXJldHVybiBub2Rl OworfQotCmRpZmYgLS1naXQgYS9hcmNoL3g4Nl82NC9wY2kvazgtYnVzLmMgYi9hcmNoL3g4Nl82 NC9wY2kvazgtYnVzLmMKaW5kZXggOWNjODEzZS4uNmI3MWRmNyAxMDA2NDQKLS0tIGEvYXJjaC94 ODZfNjQvcGNpL2s4LWJ1cy5jCisrKyBiL2FyY2gveDg2XzY0L3BjaS9rOC1idXMuYwpAQCAtMSw3 ICsxLDkgQEAKICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CiAjaW5jbHVkZSA8bGludXgvcGNpLmg+ CisjaW5jbHVkZSA8YXNtL3BjaS1kaXJlY3QuaD4KICNpbmNsdWRlIDxhc20vbXBzcGVjLmg+CiAj aW5jbHVkZSA8bGludXgvY3B1bWFzay5oPgorI2luY2x1ZGUgPGxpbnV4L3RvcG9sb2d5Lmg+CiAK IC8qCiAgKiBUaGlzIGRpc2NvdmVycyB0aGUgcGNpYnVzIDwtPiBub2RlIG1hcHBpbmcgb24gQU1E IEs4LgpAQCAtMjAsNjQgKzIyLDkzIEBACiAjZGVmaW5lIFNVQk9SRElOQVRFX0xEVF9CVVNfTlVN QkVSKGR3b3JkKSAoKGR3b3JkID4+IDE2KSAmIDB4RkYpCiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURf SzhIVENPTkZJRyAweDExMDAKIAorI2RlZmluZSBCVVNfTlIgMjU2CisKK3N0YXRpYyB1bnNpZ25l ZCBjaGFyIG1wX2J1c190b19ub2RlW0JVU19OUl07CisKK3ZvaWQgc2V0X21wX2J1c190b19ub2Rl KGludCBidXNudW0sIGludCBub2RlKQoreworCWlmIChidXNudW0gPj0gMCAmJiAgYnVzbnVtIDwg QlVTX05SKQorCQltcF9idXNfdG9fbm9kZVtidXNudW1dID0gKHVuc2lnbmVkIGNoYXIpIG5vZGU7 Cit9CisKK2ludCBnZXRfbXBfYnVzX3RvX25vZGUoaW50IGJ1c251bSkKK3sKKwlpbnQgbm9kZTsK KworCWlmIChidXNudW0gPCAwIHx8IGJ1c251bSA+IChCVVNfTlIgLSAxKSApCisJCXJldHVybiAw OworCisJbm9kZSA9IG1wX2J1c190b19ub2RlW2J1c251bV07CisKKwkvKiBBbGdvcml0aG0gYSBi aXQgZHVtYiwgYnV0IGl0IHNob3VsZG4ndCBtYXR0ZXIgaGVyZS4KKwkgICBldmVuIHRoZXJlIGlz IG5vIHJhbSBpbnN0YWxsZWQgZm9yIG5vZGUwKi8KKwlpZiAoIW5vZGVfb25saW5lKG5vZGUpKQor CQlub2RlID0gMDsKKworCXJldHVybiBub2RlOworfQorCiAvKioKLSAqIGZpbGxfbXBfYnVzX3Rv X2NwdW1hc2soKQorICogZWFybHlfZmlsbF9tcF9idXNfdG9fbm9kZSgpCisgKiBjYWxsZWQgYmVm b3JlIHBjaWJpb3Nfc2Nhbl9yb290IGFuZCBwY2lfc2Nhbl9idXMKICAqIGZpbGxzIHRoZSBtcF9i dXNfdG9fY3B1bWFzayBhcnJheSBiYXNlZCBhY2NvcmRpbmcgdG8gdGhlIExEVCBCdXMgTnVtYmVy CiAgKiBSZWdpc3RlcnMgZm91bmQgaW4gdGhlIEs4IG5vcnRoYnJpZGdlCiAgKi8KIF9faW5pdCBz dGF0aWMgaW50Ci1maWxsX21wX2J1c190b19jcHVtYXNrKHZvaWQpCitlYXJseV9maWxsX21wX2J1 c190b19ub2RlKHZvaWQpCiB7Ci0Jc3RydWN0IHBjaV9kZXYgKm5iX2RldiA9IE5VTEw7CiAJaW50 IGksIGo7CisJdW5zaWduZWQgc2xvdDsKIAl1MzIgbGR0YnVzLCBuaWQ7CisJdTMyIGlkOwogCXN0 YXRpYyBpbnQgbGJuclszXSA9IHsKIAkJTERUX0JVU19OVU1CRVJfUkVHSVNURVJfMCwKIAkJTERU X0JVU19OVU1CRVJfUkVHSVNURVJfMSwKIAkJTERUX0JVU19OVU1CRVJfUkVHSVNURVJfMgogCX07 CiAKLQl3aGlsZSAoKG5iX2RldiA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQU1ELAot CQkJUENJX0RFVklDRV9JRF9LOEhUQ09ORklHLCBuYl9kZXYpKSkgewotCQlwY2lfcmVhZF9jb25m aWdfZHdvcmQobmJfZGV2LCBOT0RFX0lEX1JFR0lTVEVSLCAmbmlkKTsKKwltZW1zZXQobXBfYnVz X3RvX25vZGUsIDAsIEJVU19OUik7CisKKwlpZiAoIWVhcmx5X3BjaV9hbGxvd2VkKCkpCisJCXJl dHVybiAtMTsKKworCWZvciAoc2xvdCA9IDB4MTg7IHNsb3QgPCAweDIwOyBzbG90KyspIHsKKwkJ aWQgPSByZWFkX3BjaV9jb25maWcoMCwgc2xvdCwgMCwgUENJX1ZFTkRPUl9JRCk7CisJCWlmIChp ZCAhPSAoUENJX1ZFTkRPUl9JRF9BTUQgfCAoUENJX0RFVklDRV9JRF9LOEhUQ09ORklHPDwxNikp KQorCQkJYnJlYWs7CisJCW5pZCA9IHJlYWRfcGNpX2NvbmZpZygwLCBzbG90LCAwLCBOT0RFX0lE X1JFR0lTVEVSKTsKIAogCQlmb3IgKGkgPSAwOyBpIDwgTlJfTERUX0JVU19OVU1CRVJfUkVHSVNU RVJTOyBpKyspIHsKLQkJCXBjaV9yZWFkX2NvbmZpZ19kd29yZChuYl9kZXYsIGxibnJbaV0sICZs ZHRidXMpOworCQkJbGR0YnVzID0gcmVhZF9wY2lfY29uZmlnKDAsIHNsb3QsIDAsIGxibnJbaV0p OwogCQkJLyoKIAkJCSAqIGlmIHRoZXJlIGFyZSBubyBidXNzZXMgaGFuZ2luZyBvZmYgb2YgdGhl IGN1cnJlbnQKIAkJCSAqIGxkdCBsaW5rIHRoZW4gYm90aCB0aGUgc2Vjb25kYXJ5IGFuZCBzdWJv cmRpbmF0ZQogCQkJICogYnVzIG51bWJlciBmaWVsZHMgYXJlIHNldCB0byAwLgotCQkJICogCisJ CQkgKgogCQkJICogUkVELVBFTgogCQkJICogVGhpcyBpcyBzbGlnaHRseSBicm9rZW4gYmVjYXVz ZSBpdCBhc3N1bWVzCi0gCQkJICogSFQgbm9kZSBJRHMgPT0gTGludXggbm9kZSBpZHMsIHdoaWNo IGlzIG5vdCBhbHdheXMKKwkJCSAqIEhUIG5vZGUgSURzID09IExpbnV4IG5vZGUgaWRzLCB3aGlj aCBpcyBub3QgYWx3YXlzCiAJCQkgKiB0cnVlLiBIb3dldmVyIGl0IGlzIHByb2JhYmx5IG1vc3Rs eSB0cnVlLgogCQkJICovCiAJCQlpZiAoIShTRUNPTkRBUllfTERUX0JVU19OVU1CRVIobGR0YnVz KSA9PSAwCiAJCQkJJiYgU1VCT1JESU5BVEVfTERUX0JVU19OVU1CRVIobGR0YnVzKSA9PSAwKSkg ewogCQkJCWZvciAoaiA9IFNFQ09OREFSWV9MRFRfQlVTX05VTUJFUihsZHRidXMpOwogCQkJCSAg ICAgaiA8PSBTVUJPUkRJTkFURV9MRFRfQlVTX05VTUJFUihsZHRidXMpOwotCQkJCSAgICAgaisr KSB7IAotCQkJCQlzdHJ1Y3QgcGNpX2J1cyAqYnVzOwotCQkJCQlzdHJ1Y3QgcGNpX3N5c2RhdGEg KnNkOwotCi0JCQkJCWxvbmcgbm9kZSA9IE5PREVfSUQobmlkKTsKLQkJCQkJLyogQWxnb3JpdGht IGEgYml0IGR1bWIsIGJ1dAotIAkJCQkJICAgaXQgc2hvdWxkbid0IG1hdHRlciBoZXJlICovCi0J CQkJCWJ1cyA9IHBjaV9maW5kX2J1cygwLCBqKTsKLQkJCQkJaWYgKCFidXMpCi0JCQkJCQljb250 aW51ZTsKLQkJCQkJaWYgKCFub2RlX29ubGluZShub2RlKSkKLQkJCQkJCW5vZGUgPSAwOwotCi0J CQkJCXNkID0gYnVzLT5zeXNkYXRhOwotCQkJCQlzZC0+bm9kZSA9IG5vZGU7Ci0JCQkJfQkJCisJ CQkJICAgICBqKyspIHsKKwkJCQkJaW50IG5vZGUgPSBOT0RFX0lEKG5pZCk7CisJCQkJCW1wX2J1 c190b19ub2RlW2pdID0gKHVuc2lnbmVkIGNoYXIpbm9kZTsKKwkJCQl9CiAJCQl9CiAJCX0KIAl9 CiAKKwlmb3IgKGkgPSAwOyBpIDwgQlVTX05SOyBpKyspIHsKKwkJaW50IG5vZGUgPSBtcF9idXNf dG9fbm9kZVtpXTsKKwkJaWYgKG5vZGUpCisJCQlwcmludGsoS0VSTl9ERUJVRyAiYnVzOiAlMDJ4 IHRvIG5vZGU6ICUwMnhcbiIsIGksIG5vZGUpOworCX0KIAlyZXR1cm4gMDsKIH0KIAotZnNfaW5p dGNhbGwoZmlsbF9tcF9idXNfdG9fY3B1bWFzayk7Citwb3N0Y29yZV9pbml0Y2FsbChlYXJseV9m aWxsX21wX2J1c190b19ub2RlKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWkzODYvdG9wb2xv Z3kuaCBiL2luY2x1ZGUvYXNtLWkzODYvdG9wb2xvZ3kuaAppbmRleCAxOWIyZGFmLi5kZjVjZjI0 IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1pMzg2L3RvcG9sb2d5LmgKKysrIGIvaW5jbHVkZS9h c20taTM4Ni90b3BvbG9neS5oCkBAIC0xMDEsNyArMTAxLDE3IEBAIGV4dGVybiB1bnNpZ25lZCBs b25nIG5vZGVfcmVtYXBfc2l6ZVtdOwogCiAjZGVmaW5lIG5vZGVfaGFzX29ubGluZV9tZW0obmlk KSAobm9kZV9zdGFydF9wZm5bbmlkXSAhPSBub2RlX2VuZF9wZm5bbmlkXSkKIAoraW50IGdldF9t cF9idXNfdG9fbm9kZShpbnQgYnVzbnVtKTsKK3ZvaWQgc2V0X21wX2J1c190b19ub2RlKGludCBi dXNudW0sIGludCBub2RlKTsKKwogI2Vsc2UgLyogIUNPTkZJR19OVU1BICovCitzdGF0aWMgaW5s aW5lIGludCBnZXRfbXBfYnVzX3RvX25vZGUoaW50IGJ1c251bSkKK3sKKwlyZXR1cm4gMDsKK30K K3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfbXBfYnVzX3RvX25vZGUoaW50IGJ1c251bSwgaW50IG5v ZGUpCit7Cit9CiAvKgogICogT3RoZXIgaTM4NiBwbGF0Zm9ybXMgc2hvdWxkIGRlZmluZSB0aGVp ciBvd24gdmVyc2lvbiBvZiB0aGUgCiAgKiBhYm92ZSBtYWNyb3MgaGVyZS4KZGlmZiAtLWdpdCBh L2luY2x1ZGUvYXNtLXg4Nl82NC90b3BvbG9neS5oIGIvaW5jbHVkZS9hc20teDg2XzY0L3RvcG9s b2d5LmgKaW5kZXggMzZlNTJmYi4uZjk0MzhmZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20teDg2 XzY0L3RvcG9sb2d5LmgKKysrIGIvaW5jbHVkZS9hc20teDg2XzY0L3RvcG9sb2d5LmgKQEAgLTUz LDYgKzUzLDE5IEBAIGV4dGVybiBpbnQgX19ub2RlX2Rpc3RhbmNlKGludCwgaW50KTsKIAkubnJf YmFsYW5jZV9mYWlsZWQJPSAwLAkJCVwKIH0KIAoraW50IGdldF9tcF9idXNfdG9fbm9kZShpbnQg YnVzbnVtKTsKK3ZvaWQgc2V0X21wX2J1c190b19ub2RlKGludCBidXNudW0sIGludCBub2RlKTsK KworI2Vsc2UKKworc3RhdGljIGlubGluZSBpbnQgZ2V0X21wX2J1c190b19ub2RlKGludCBidXNu dW0pCit7CisJcmV0dXJuIDA7Cit9CitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X21wX2J1c190b19u b2RlKGludCBidXNudW0sIGludCBub2RlKQoreworfQorCiAjZW5kaWYKIAogI2lmZGVmIENPTkZJ R19TTVAK ------=_Part_205588_5049846.1185480309327--