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 X-Spam-Level: X-Spam-Status: No, score=-9.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0233EC282CE for ; Wed, 22 May 2019 14:30:53 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id C2C2321773 for ; Wed, 22 May 2019 14:30:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729505AbfEVOaw (ORCPT ); Wed, 22 May 2019 10:30:52 -0400 Received: from mail-oln040092254063.outbound.protection.outlook.com ([40.92.254.63]:64324 "EHLO APC01-PU1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729496AbfEVOav (ORCPT ); Wed, 22 May 2019 10:30:51 -0400 Received: from HK2APC01FT049.eop-APC01.prod.protection.outlook.com (10.152.248.51) by HK2APC01HT173.eop-APC01.prod.protection.outlook.com (10.152.249.59) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1922.16; Wed, 22 May 2019 14:30:44 +0000 Received: from PS2P216MB0642.KORP216.PROD.OUTLOOK.COM (10.152.248.53) by HK2APC01FT049.mail.protection.outlook.com (10.152.249.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1922.16 via Frontend Transport; Wed, 22 May 2019 14:30:44 +0000 Received: from PS2P216MB0642.KORP216.PROD.OUTLOOK.COM ([fe80::1c5e:7ea0:b90c:65c9]) by PS2P216MB0642.KORP216.PROD.OUTLOOK.COM ([fe80::1c5e:7ea0:b90c:65c9%10]) with mapi id 15.20.1922.016; Wed, 22 May 2019 14:30:44 +0000 From: Nicholas Johnson To: "linux-kernel@vger.kernel.org" CC: "linux-pci@vger.kernel.org" , "bhelgaas@google.com" , "mika.westerberg@linux.intel.com" , "corbet@lwn.net" , Nicholas Johnson Subject: [PATCH v6 1/4] PCI: Consider alignment of hot-added bridges when distributing available resources Thread-Topic: [PATCH v6 1/4] PCI: Consider alignment of hot-added bridges when distributing available resources Thread-Index: AQHVEKrwZ8ZhpR4YvEesf8rGWnkYAw== Date: Wed, 22 May 2019 14:30:44 +0000 Message-ID: References: <20190522222928.2964-1-nicholas.johnson-opensource@outlook.com.au> In-Reply-To: <20190522222928.2964-1-nicholas.johnson-opensource@outlook.com.au> Accept-Language: en-AU, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: SYBPR01CA0023.ausprd01.prod.outlook.com (2603:10c6:10::35) To PS2P216MB0642.KORP216.PROD.OUTLOOK.COM (2603:1096:300:1c::16) x-incomingtopheadermarker: OriginalChecksum:616356014BDA273CF7D783B2DA392C273F10F8F3049568C69956E0F3782523E5;UpperCasedChecksum:CFB5470E05AD59176CD2A8C91B8D51EBCBE0B91A13B793570C16075182AF6076;SizeAsReceived:7929;Count:50 x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.19.1 x-tmn: [A/akZCTm35//EG91wM6fpAWp9ebhh0QIWCVbSmfVaxR7OUu8YyuI3bBqhe4bZUpdj5Bzrodo+48=] x-microsoft-original-message-id: <20190522222928.2964-2-nicholas.johnson-opensource@outlook.com.au> x-ms-publictraffictype: Email x-incomingheadercount: 50 x-eopattributedmessage: 0 x-ms-exchange-slblob-mailprops: mBy7Mai7yE6xx4VE74+u8iyxjqn2KrKUCAofYYdemJ4hp85M4VS2Z7HRmLexU7D2r+QqvTe6rugTBxNQkQ6t/Oem1w0MYeu3zuL9vLboVyq60UPGS6jevavXc1ofgYwK9PEWUfLY0ujiRw2j8S4O7sB7oElEyaDmYevmWvAiQaZvU5MMyu1jzHcAApvyGq5Zu4iHdfrUiuBJcJ8lE4wqW71N+ETX6iGfn2+WwiV+oiZ2o9X5Dsqyo5Hi+4kb2sz4GPV9kTF4wI3FL5PNTvnOaLUsgHJn4kDsBtrQ6eUCHTQFkDj1zhudmbnw6rDVtJfBGpgTdk2nQhA7KHiZmUG4kLs1cfCQVdQVtRaGdz9HFXcN6oSthwsG2p9043Drtb9d/m0SpZ1/hLMafHkycykGC3kKUr1YV/4cGivKvW2FwvFldKBv9KWnzjlRQ7OgKVePIQSEpxXKk4h3l4UnxYqJbuXiBHQe23nFn2Xyaqi887FmeCCOooREhyIqEkVop5BvOcanKepv1vr5c/MUpEuc8Cb2TJDFXKGYvE0Qn7MdnRPo4ZE/kyhLVQPTUo3svOYeN44OaCHTVTZU/5X9SAkYh9IoJptskhy6PYdTwZnsJowhOArwScYMNIiZXDzGmTCdR6qnehnOYu3YgGIRkAsd1En6NyKYw11uH6PcF6fXV0NJVBvEaJrkuB4Xhf9Cwz2MK2z7wxlTI3ivg0XlvtD5HECSRLJS2LlF x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(5050001)(7020095)(20181119110)(201702061078)(5061506573)(5061507331)(1603103135)(2017031320274)(201702181274)(2017031323274)(2017031324274)(2017031322404)(1601125500)(1603101475)(1701031045);SRVR:HK2APC01HT173; x-ms-traffictypediagnostic: HK2APC01HT173: x-microsoft-antispam-message-info: TIRo8U/0VuhPdGpzYywiaYm20PEabGyV6lcU+rFNHdZgEfcctLLcGwP6w6gfOk1i+7jhxXZUqk8YAxU+njD+Amp+o72DbJ5K0CBseac4HJ9DwX1QW4gwebVOZ8sHlXZ5OXSQ/hYXlI3ylCdAzYoYHO78nv08X53rDF3ANDkZeldOG4rIv/dwT1qXk4Q8HuX+ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 12c5415c-ab91-46d4-6454-08d6dec21312 X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 May 2019 14:30:44.7650 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK2APC01HT173 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org UmV3cml0ZSBwY2lfYnVzX2Rpc3RyaWJ1dGVfYXZhaWxhYmxlX3Jlc291cmNlcyB0byBiZXR0ZXIg aGFuZGxlIGJyaWRnZXMNCndpdGggZGlmZmVyZW50IHJlc291cmNlIGFsaWdubWVudCByZXF1aXJl bWVudHMuIFBhc3MgbW9yZSBkZXRhaWxzDQphcmd1bWVudHMgcmVjdXJzaXZlbHkgdG8gdHJhY2sg dGhlIHJlc291cmNlIHN0YXJ0IGFuZCBlbmQgYWRkcmVzc2VzDQpyZWxhdGl2ZSB0byB0aGUgaW5p dGlhbCBob3RwbHVnIGJyaWRnZS4gVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCBmb3INClRodW5k ZXJib2x0IHdpdGggbmF0aXZlIFBDSSBlbnVtZXJhdGlvbiwgZW5hYmxpbmcgZXh0ZXJuYWwgZ3Jh cGhpY3MNCmNhcmRzIGFuZCBvdGhlciBkZXZpY2VzIHdpdGggYnJpZGdlIGFsaWdubWVudCBoaWdo ZXIgdGhhbiAweDEwMDAwMA0KYnl0ZXMuDQoNCkNoYW5nZSBleHRlbmRfYnJpZGdlX3dpbmRvdyB0 byByZXNpemUgdGhlIGFjdHVhbCByZXNvdXJjZSwgcmF0aGVyIHRoYW4NCnVzaW5nIGFkZF9saXN0 IGFuZCBkZXZfcmVzLT5hZGRfc2l6ZS4gSWYgYW4gYWRkaXRpb25hbCByZXNvdXJjZSBlbnRyeQ0K ZXhpc3RzIGZvciB0aGUgZ2l2ZW4gcmVzb3VyY2UsIHplcm8gb3V0IHRoZSBhZGRfc2l6ZSBmaWVs ZCB0byBhdm9pZCBpdA0KaW50ZXJmZXJpbmcuIEJlY2F1c2UgYWRkX3NpemUgaXMgY29uc2lkZXJl ZCBvcHRpb25hbCB3aGVuIGFsbG9jYXRpbmcsDQp1c2luZyBhZGRfc2l6ZSBjb3VsZCBjYXVzZSBp c3N1ZXMgaW4gc29tZSBjYXNlcywgYmVjYXVzZSBzdWNjZXNzZnVsDQpyZXNvdXJjZSBkaXN0cmli dXRpb24gcmVxdWlyZXMgc2l6ZXMgdG8gYmUgZ3VhcmFudGVlZC4gU3VjaCBjYXNlcw0KaW5jbHVk ZSBob3QtYWRkaW5nIG5lc3RlZCBob3RwbHVnIGJyaWRnZXMgaW4gb25lIGVudW1lcmF0aW9uLCBh bmQNCnBvdGVudGlhbGx5IG90aGVycyB3aGljaCBhcmUgeWV0IHRvIGJlIGVuY291bnRlcmVkLg0K DQpTaWduZWQtb2ZmLWJ5OiBOaWNob2xhcyBKb2huc29uIDxuaWNob2xhcy5qb2huc29uLW9wZW5z b3VyY2VAb3V0bG9vay5jb20uYXU+DQotLS0NCiBkcml2ZXJzL3BjaS9zZXR1cC1idXMuYyB8IDE2 OSArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tDQogMSBmaWxlIGNoYW5n ZWQsIDg0IGluc2VydGlvbnMoKyksIDg1IGRlbGV0aW9ucygtKQ0KDQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9wY2kvc2V0dXAtYnVzLmMgYi9kcml2ZXJzL3BjaS9zZXR1cC1idXMuYw0KaW5kZXggMGNk ZDVmZjM4Li4xYjViODUxY2EgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3BjaS9zZXR1cC1idXMuYw0K KysrIGIvZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMNCkBAIC0xODM1LDEyICsxODM1LDEwIEBAIHN0 YXRpYyB2b2lkIGV4dGVuZF9icmlkZ2Vfd2luZG93KHN0cnVjdCBwY2lfZGV2ICpicmlkZ2UsIHN0 cnVjdCByZXNvdXJjZSAqcmVzLA0KIH0NCiANCiBzdGF0aWMgdm9pZCBwY2lfYnVzX2Rpc3RyaWJ1 dGVfYXZhaWxhYmxlX3Jlc291cmNlcyhzdHJ1Y3QgcGNpX2J1cyAqYnVzLA0KLQkJCQkJICAgIHN0 cnVjdCBsaXN0X2hlYWQgKmFkZF9saXN0LA0KLQkJCQkJICAgIHJlc291cmNlX3NpemVfdCBhdmFp bGFibGVfaW8sDQotCQkJCQkgICAgcmVzb3VyY2Vfc2l6ZV90IGF2YWlsYWJsZV9tbWlvLA0KLQkJ CQkJICAgIHJlc291cmNlX3NpemVfdCBhdmFpbGFibGVfbW1pb19wcmVmKQ0KKwlzdHJ1Y3QgbGlz dF9oZWFkICphZGRfbGlzdCwgc3RydWN0IHJlc291cmNlIGlvLA0KKwlzdHJ1Y3QgcmVzb3VyY2Ug bW1pbywgc3RydWN0IHJlc291cmNlIG1taW9fcHJlZikNCiB7DQotCXJlc291cmNlX3NpemVfdCBy ZW1haW5pbmdfaW8sIHJlbWFpbmluZ19tbWlvLCByZW1haW5pbmdfbW1pb19wcmVmOw0KKwlyZXNv dXJjZV9zaXplX3QgaW9fcGVyX2hwLCBtbWlvX3Blcl9ocCwgbW1pb19wcmVmX3Blcl9ocCwgYWxp Z247DQogCXVuc2lnbmVkIGludCBub3JtYWxfYnJpZGdlcyA9IDAsIGhvdHBsdWdfYnJpZGdlcyA9 IDA7DQogCXN0cnVjdCByZXNvdXJjZSAqaW9fcmVzLCAqbW1pb19yZXMsICptbWlvX3ByZWZfcmVz Ow0KIAlzdHJ1Y3QgcGNpX2RldiAqZGV2LCAqYnJpZGdlID0gYnVzLT5zZWxmOw0KQEAgLTE4NTAs MjkgKzE4NDgsMzYgQEAgc3RhdGljIHZvaWQgcGNpX2J1c19kaXN0cmlidXRlX2F2YWlsYWJsZV9y ZXNvdXJjZXMoc3RydWN0IHBjaV9idXMgKmJ1cywNCiAJbW1pb19wcmVmX3JlcyA9ICZicmlkZ2Ut PnJlc291cmNlW1BDSV9CUklER0VfUkVTT1VSQ0VTICsgMl07DQogDQogCS8qDQotCSAqIFVwZGF0 ZSBhZGRpdGlvbmFsIHJlc291cmNlIGxpc3QgKGFkZF9saXN0KSB0byBmaWxsIGFsbCB0aGUNCi0J ICogZXh0cmEgcmVzb3VyY2Ugc3BhY2UgYXZhaWxhYmxlIGZvciB0aGlzIHBvcnQgZXhjZXB0IHRo ZSBzcGFjZQ0KLQkgKiBjYWxjdWxhdGVkIGluIF9fcGNpX2J1c19zaXplX2JyaWRnZXMoKSB3aGlj aCBjb3ZlcnMgYWxsIHRoZQ0KLQkgKiBkZXZpY2VzIGN1cnJlbnRseSBjb25uZWN0ZWQgdG8gdGhl IHBvcnQgYW5kIGJlbG93Lg0KKwkgKiBUaGUgYWxpZ25tZW50IG9mIHRoaXMgYnJpZGdlIGlzIHll dCB0byBiZSBjb25zaWRlcmVkLCBoZW5jZSBpdCBtdXN0DQorCSAqIGJlIGRvbmUgbm93IGJlZm9y ZSBleHRlbmRpbmcgaXRzIGJyaWRnZSB3aW5kb3cuIEEgc2luZ2xlIGJyaWRnZQ0KKwkgKiBtaWdo dCBub3QgYmUgYWJsZSB0byBvY2N1cHkgdGhlIHdob2xlIHBhcmVudCByZWdpb24gaWYgdGhlIGFs aWdubWVudA0KKwkgKiBkaWZmZXJzIC0gZm9yIGV4YW1wbGUsIGFuIGV4dGVybmFsIEdQVSBhdCB0 aGUgZW5kIG9mIGEgVGh1bmRlcmJvbHQNCisJICogZGFpc3kgY2hhaW4uDQogCSAqLw0KLQlleHRl bmRfYnJpZGdlX3dpbmRvdyhicmlkZ2UsIGlvX3JlcywgYWRkX2xpc3QsIGF2YWlsYWJsZV9pbyk7 DQotCWV4dGVuZF9icmlkZ2Vfd2luZG93KGJyaWRnZSwgbW1pb19yZXMsIGFkZF9saXN0LCBhdmFp bGFibGVfbW1pbyk7DQotCWV4dGVuZF9icmlkZ2Vfd2luZG93KGJyaWRnZSwgbW1pb19wcmVmX3Jl cywgYWRkX2xpc3QsDQotCQkJICAgICBhdmFpbGFibGVfbW1pb19wcmVmKTsNCisJYWxpZ24gPSBw Y2lfcmVzb3VyY2VfYWxpZ25tZW50KGJyaWRnZSwgaW9fcmVzKTsNCisJaWYgKCFpb19yZXMtPnBh cmVudCAmJiBhbGlnbikNCisJCWlvLnN0YXJ0ID0gQUxJR04oaW8uc3RhcnQsIGFsaWduKTsNCisN CisJYWxpZ24gPSBwY2lfcmVzb3VyY2VfYWxpZ25tZW50KGJyaWRnZSwgbW1pb19yZXMpOw0KKwlp ZiAoIW1taW9fcmVzLT5wYXJlbnQgJiYgYWxpZ24pDQorCQltbWlvLnN0YXJ0ID0gQUxJR04obW1p by5zdGFydCwgYWxpZ24pOw0KKw0KKwlhbGlnbiA9IHBjaV9yZXNvdXJjZV9hbGlnbm1lbnQoYnJp ZGdlLCBtbWlvX3ByZWZfcmVzKTsNCisJaWYgKCFtbWlvX3ByZWZfcmVzLT5wYXJlbnQgJiYgYWxp Z24pDQorCQltbWlvX3ByZWYuc3RhcnQgPSBBTElHTihtbWlvX3ByZWYuc3RhcnQsIGFsaWduKTsN CiANCiAJLyoNCi0JICogQ2FsY3VsYXRlIHRoZSB0b3RhbCBhbW91bnQgb2YgZXh0cmEgcmVzb3Vy Y2Ugc3BhY2Ugd2UgY2FuDQotCSAqIHBhc3MgdG8gYnJpZGdlcyBiZWxvdyB0aGlzIG9uZS4gIFRo aXMgaXMgYmFzaWNhbGx5IHRoZQ0KLQkgKiBleHRyYSBzcGFjZSByZWR1Y2VkIGJ5IHRoZSBtaW5p bWFsIHJlcXVpcmVkIHNwYWNlIGZvciB0aGUNCi0JICogbm9uLWhvdHBsdWcgYnJpZGdlcy4NCisJ ICogVXBkYXRlIHRoZSByZXNvdXJjZXMgdG8gZmlsbCBhcyBtdWNoIHJlbWFpbmluZyByZXNvdXJj ZSBzcGFjZSBpbiB0aGUNCisJICogcGFyZW50IGJyaWRnZSBhcyBwb3NzaWJsZSwgd2hpbGUgY29u c2lkZXJpbmcgYWxpZ25tZW50Lg0KIAkgKi8NCi0JcmVtYWluaW5nX2lvID0gYXZhaWxhYmxlX2lv Ow0KLQlyZW1haW5pbmdfbW1pbyA9IGF2YWlsYWJsZV9tbWlvOw0KLQlyZW1haW5pbmdfbW1pb19w cmVmID0gYXZhaWxhYmxlX21taW9fcHJlZjsNCisJZXh0ZW5kX2JyaWRnZV93aW5kb3coYnJpZGdl LCBpb19yZXMsIGFkZF9saXN0LCByZXNvdXJjZV9zaXplKCZpbykpOw0KKwlleHRlbmRfYnJpZGdl X3dpbmRvdyhicmlkZ2UsIG1taW9fcmVzLCBhZGRfbGlzdCwgcmVzb3VyY2Vfc2l6ZSgmbW1pbykp Ow0KKwlleHRlbmRfYnJpZGdlX3dpbmRvdyhicmlkZ2UsIG1taW9fcHJlZl9yZXMsIGFkZF9saXN0 LA0KKwkJcmVzb3VyY2Vfc2l6ZSgmbW1pb19wcmVmKSk7DQogDQogCS8qDQogCSAqIENhbGN1bGF0 ZSBob3cgbWFueSBob3RwbHVnIGJyaWRnZXMgYW5kIG5vcm1hbCBicmlkZ2VzIHRoZXJlDQotCSAq IGFyZSBvbiB0aGlzIGJ1cy4gIFdlIHdpbGwgZGlzdHJpYnV0ZSB0aGUgYWRkaXRpb25hbCBhdmFp bGFibGUNCisJICogYXJlIG9uIHRoaXMgYnVzLiBXZSB3aWxsIGRpc3RyaWJ1dGUgdGhlIGFkZGl0 aW9uYWwgYXZhaWxhYmxlDQogCSAqIHJlc291cmNlcyBiZXR3ZWVuIGhvdHBsdWcgYnJpZGdlcy4N CiAJICovDQogCWZvcl9lYWNoX3BjaV9icmlkZ2UoZGV2LCBidXMpIHsNCkBAIC0xODgyLDEwNCAr MTg4Nyw5OCBAQCBzdGF0aWMgdm9pZCBwY2lfYnVzX2Rpc3RyaWJ1dGVfYXZhaWxhYmxlX3Jlc291 cmNlcyhzdHJ1Y3QgcGNpX2J1cyAqYnVzLA0KIAkJCW5vcm1hbF9icmlkZ2VzKys7DQogCX0NCiAN CisJLyoNCisJICogVGhlcmUgaXMgb25seSBvbmUgYnJpZGdlIG9uIHRoZSBidXMgc28gaXQgZ2V0 cyBhbGwgcG9zc2libGUNCisJICogcmVzb3VyY2VzIHdoaWNoIGl0IGNhbiB0aGVuIGRpc3RyaWJ1 dGUgdG8gdGhlIHBvc3NpYmxlDQorCSAqIGhvdHBsdWcgYnJpZGdlcyBiZWxvdy4NCisJICovDQor CWlmIChob3RwbHVnX2JyaWRnZXMgKyBub3JtYWxfYnJpZGdlcyA9PSAxKSB7DQorCQlkZXYgPSBs aXN0X2ZpcnN0X2VudHJ5KCZidXMtPmRldmljZXMsIHN0cnVjdCBwY2lfZGV2LCBidXNfbGlzdCk7 DQorCQlpZiAoZGV2LT5zdWJvcmRpbmF0ZSkNCisJCQlwY2lfYnVzX2Rpc3RyaWJ1dGVfYXZhaWxh YmxlX3Jlc291cmNlcyhkZXYtPnN1Ym9yZGluYXRlLA0KKwkJCQlhZGRfbGlzdCwgaW8sIG1taW8s IG1taW9fcHJlZik7DQorCQlyZXR1cm47DQorCX0NCisNCisJLyoNCisJICogUmVkdWNlIHRoZSBh dmFpbGFibGUgcmVzb3VyY2Ugc3BhY2UgYnkgd2hhdCB0aGUNCisJICogYnJpZGdlIGFuZCBkZXZp Y2VzIGJlbG93IGl0IG9jY3VweS4NCisJICovDQogCWZvcl9lYWNoX3BjaV9icmlkZ2UoZGV2LCBi dXMpIHsNCi0JCWNvbnN0IHN0cnVjdCByZXNvdXJjZSAqcmVzOw0KKwkJc3RydWN0IHJlc291cmNl ICpyZXM7DQorCQlyZXNvdXJjZV9zaXplX3QgdXNlZF9zaXplOw0KIA0KIAkJaWYgKGRldi0+aXNf aG90cGx1Z19icmlkZ2UpDQogCQkJY29udGludWU7DQogDQotCQkvKg0KLQkJICogUmVkdWNlIHRo ZSBhdmFpbGFibGUgcmVzb3VyY2Ugc3BhY2UgYnkgd2hhdCB0aGUNCi0JCSAqIGJyaWRnZSBhbmQg ZGV2aWNlcyBiZWxvdyBpdCBvY2N1cHkuDQotCQkgKi8NCiAJCXJlcyA9ICZkZXYtPnJlc291cmNl W1BDSV9CUklER0VfUkVTT1VSQ0VTICsgMF07DQotCQlpZiAoIXJlcy0+cGFyZW50ICYmIGF2YWls YWJsZV9pbyA+IHJlc291cmNlX3NpemUocmVzKSkNCi0JCQlyZW1haW5pbmdfaW8gLT0gcmVzb3Vy Y2Vfc2l6ZShyZXMpOw0KKwkJYWxpZ24gPSBwY2lfcmVzb3VyY2VfYWxpZ25tZW50KGRldiwgcmVz KTsNCisJCWFsaWduID0gYWxpZ24gPyBBTElHTihpby5zdGFydCwgYWxpZ24pIC0gaW8uc3RhcnQg OiAwOw0KKwkJdXNlZF9zaXplID0gYWxpZ24gKyByZXNvdXJjZV9zaXplKHJlcyk7DQorCQlpZiAo IXJlcy0+cGFyZW50ICYmIHVzZWRfc2l6ZSA8PSByZXNvdXJjZV9zaXplKCZpbykpDQorCQkJaW8u c3RhcnQgKz0gdXNlZF9zaXplOw0KIA0KIAkJcmVzID0gJmRldi0+cmVzb3VyY2VbUENJX0JSSURH RV9SRVNPVVJDRVMgKyAxXTsNCi0JCWlmICghcmVzLT5wYXJlbnQgJiYgYXZhaWxhYmxlX21taW8g PiByZXNvdXJjZV9zaXplKHJlcykpDQotCQkJcmVtYWluaW5nX21taW8gLT0gcmVzb3VyY2Vfc2l6 ZShyZXMpOw0KKwkJYWxpZ24gPSBwY2lfcmVzb3VyY2VfYWxpZ25tZW50KGRldiwgcmVzKTsNCisJ CWFsaWduID0gYWxpZ24gPyBBTElHTihtbWlvLnN0YXJ0LCBhbGlnbikgLSBtbWlvLnN0YXJ0IDog MDsNCisJCXVzZWRfc2l6ZSA9IGFsaWduICsgcmVzb3VyY2Vfc2l6ZShyZXMpOw0KKwkJaWYgKCFy ZXMtPnBhcmVudCAmJiB1c2VkX3NpemUgPD0gcmVzb3VyY2Vfc2l6ZSgmbW1pbykpDQorCQkJbW1p by5zdGFydCArPSB1c2VkX3NpemU7DQogDQogCQlyZXMgPSAmZGV2LT5yZXNvdXJjZVtQQ0lfQlJJ REdFX1JFU09VUkNFUyArIDJdOw0KLQkJaWYgKCFyZXMtPnBhcmVudCAmJiBhdmFpbGFibGVfbW1p b19wcmVmID4gcmVzb3VyY2Vfc2l6ZShyZXMpKQ0KLQkJCXJlbWFpbmluZ19tbWlvX3ByZWYgLT0g cmVzb3VyY2Vfc2l6ZShyZXMpOw0KKwkJYWxpZ24gPSBwY2lfcmVzb3VyY2VfYWxpZ25tZW50KGRl diwgcmVzKTsNCisJCWFsaWduID0gYWxpZ24gPyBBTElHTihtbWlvX3ByZWYuc3RhcnQsIGFsaWdu KSAtDQorCQkJCW1taW9fcHJlZi5zdGFydCA6IDA7DQorCQl1c2VkX3NpemUgPSBhbGlnbiArIHJl c291cmNlX3NpemUocmVzKTsNCisJCWlmICghcmVzLT5wYXJlbnQgJiYgdXNlZF9zaXplIDw9IHJl c291cmNlX3NpemUoJm1taW9fcHJlZikpDQorCQkJbW1pb19wcmVmLnN0YXJ0ICs9IHVzZWRfc2l6 ZTsNCiAJfQ0KIA0KLQkvKg0KLQkgKiBUaGVyZSBpcyBvbmx5IG9uZSBicmlkZ2Ugb24gdGhlIGJ1 cyBzbyBpdCBnZXRzIGFsbCBhdmFpbGFibGUNCi0JICogcmVzb3VyY2VzIHdoaWNoIGl0IGNhbiB0 aGVuIGRpc3RyaWJ1dGUgdG8gdGhlIHBvc3NpYmxlIGhvdHBsdWcNCi0JICogYnJpZGdlcyBiZWxv dy4NCi0JICovDQotCWlmIChob3RwbHVnX2JyaWRnZXMgKyBub3JtYWxfYnJpZGdlcyA9PSAxKSB7 DQotCQlkZXYgPSBsaXN0X2ZpcnN0X2VudHJ5KCZidXMtPmRldmljZXMsIHN0cnVjdCBwY2lfZGV2 LCBidXNfbGlzdCk7DQotCQlpZiAoZGV2LT5zdWJvcmRpbmF0ZSkgew0KLQkJCXBjaV9idXNfZGlz dHJpYnV0ZV9hdmFpbGFibGVfcmVzb3VyY2VzKGRldi0+c3Vib3JkaW5hdGUsDQotCQkJCWFkZF9s aXN0LCBhdmFpbGFibGVfaW8sIGF2YWlsYWJsZV9tbWlvLA0KLQkJCQlhdmFpbGFibGVfbW1pb19w cmVmKTsNCi0JCX0NCisJaWYgKCFob3RwbHVnX2JyaWRnZXMpDQogCQlyZXR1cm47DQotCX0NCiAN CiAJLyoNCi0JICogR28gb3ZlciBkZXZpY2VzIG9uIHRoaXMgYnVzIGFuZCBkaXN0cmlidXRlIHRo ZSByZW1haW5pbmcNCi0JICogcmVzb3VyY2Ugc3BhY2UgYmV0d2VlbiBob3RwbHVnIGJyaWRnZXMu DQorCSAqIERpc3RyaWJ1dGUgYW55IHJlbWFpbmluZyByZXNvdXJjZXMgZXF1YWxseSBiZXR3ZWVu DQorCSAqIHRoZSBob3RwbHVnLWNhcGFibGUgZG93bnN0cmVhbSBwb3J0cy4NCiAJICovDQotCWZv cl9lYWNoX3BjaV9icmlkZ2UoZGV2LCBidXMpIHsNCi0JCXJlc291cmNlX3NpemVfdCBhbGlnbiwg aW8sIG1taW8sIG1taW9fcHJlZjsNCi0JCXN0cnVjdCBwY2lfYnVzICpiOw0KKwlpb19wZXJfaHAg PSBkaXY2NF91bChyZXNvdXJjZV9zaXplKCZpbyksIGhvdHBsdWdfYnJpZGdlcyk7DQorCW1taW9f cGVyX2hwID0gZGl2NjRfdWwocmVzb3VyY2Vfc2l6ZSgmbW1pbyksIGhvdHBsdWdfYnJpZGdlcyk7 DQorCW1taW9fcHJlZl9wZXJfaHAgPSBkaXY2NF91bChyZXNvdXJjZV9zaXplKCZtbWlvX3ByZWYp LA0KKwkJaG90cGx1Z19icmlkZ2VzKTsNCiANCi0JCWIgPSBkZXYtPnN1Ym9yZGluYXRlOw0KLQkJ aWYgKCFiIHx8ICFkZXYtPmlzX2hvdHBsdWdfYnJpZGdlKQ0KKwlmb3JfZWFjaF9wY2lfYnJpZGdl KGRldiwgYnVzKSB7DQorCQlpZiAoIWRldi0+c3Vib3JkaW5hdGUgfHwgIWRldi0+aXNfaG90cGx1 Z19icmlkZ2UpDQogCQkJY29udGludWU7DQogDQotCQkvKg0KLQkJICogRGlzdHJpYnV0ZSBhdmFp bGFibGUgZXh0cmEgcmVzb3VyY2VzIGVxdWFsbHkgYmV0d2Vlbg0KLQkJICogaG90cGx1Zy1jYXBh YmxlIGRvd25zdHJlYW0gcG9ydHMgdGFraW5nIGFsaWdubWVudCBpbnRvDQotCQkgKiBhY2NvdW50 Lg0KLQkJICoNCi0JCSAqIEhlcmUgaG90cGx1Z19icmlkZ2VzIGlzIGFsd2F5cyAhPSAwLg0KLQkJ ICovDQotCQlhbGlnbiA9IHBjaV9yZXNvdXJjZV9hbGlnbm1lbnQoYnJpZGdlLCBpb19yZXMpOw0K LQkJaW8gPSBkaXY2NF91bChhdmFpbGFibGVfaW8sIGhvdHBsdWdfYnJpZGdlcyk7DQotCQlpbyA9 IG1pbihBTElHTihpbywgYWxpZ24pLCByZW1haW5pbmdfaW8pOw0KLQkJcmVtYWluaW5nX2lvIC09 IGlvOw0KLQ0KLQkJYWxpZ24gPSBwY2lfcmVzb3VyY2VfYWxpZ25tZW50KGJyaWRnZSwgbW1pb19y ZXMpOw0KLQkJbW1pbyA9IGRpdjY0X3VsKGF2YWlsYWJsZV9tbWlvLCBob3RwbHVnX2JyaWRnZXMp Ow0KLQkJbW1pbyA9IG1pbihBTElHTihtbWlvLCBhbGlnbiksIHJlbWFpbmluZ19tbWlvKTsNCi0J CXJlbWFpbmluZ19tbWlvIC09IG1taW87DQorCQlpby5lbmQgPSBpby5zdGFydCArIGlvX3Blcl9o cCAtIDE7DQorCQltbWlvLmVuZCA9IG1taW8uc3RhcnQgKyBtbWlvX3Blcl9ocCAtIDE7DQorCQlt bWlvX3ByZWYuZW5kID0gbW1pb19wcmVmLnN0YXJ0ICsgbW1pb19wcmVmX3Blcl9ocCAtIDE7DQog DQotCQlhbGlnbiA9IHBjaV9yZXNvdXJjZV9hbGlnbm1lbnQoYnJpZGdlLCBtbWlvX3ByZWZfcmVz KTsNCi0JCW1taW9fcHJlZiA9IGRpdjY0X3VsKGF2YWlsYWJsZV9tbWlvX3ByZWYsIGhvdHBsdWdf YnJpZGdlcyk7DQotCQltbWlvX3ByZWYgPSBtaW4oQUxJR04obW1pb19wcmVmLCBhbGlnbiksIHJl bWFpbmluZ19tbWlvX3ByZWYpOw0KLQkJcmVtYWluaW5nX21taW9fcHJlZiAtPSBtbWlvX3ByZWY7 DQorCQlwY2lfYnVzX2Rpc3RyaWJ1dGVfYXZhaWxhYmxlX3Jlc291cmNlcyhkZXYtPnN1Ym9yZGlu YXRlLA0KKwkJCWFkZF9saXN0LCBpbywgbW1pbywgbW1pb19wcmVmKTsNCiANCi0JCXBjaV9idXNf ZGlzdHJpYnV0ZV9hdmFpbGFibGVfcmVzb3VyY2VzKGIsIGFkZF9saXN0LCBpbywgbW1pbywNCi0J CQkJCQkgICAgICAgbW1pb19wcmVmKTsNCisJCWlvLnN0YXJ0ID0gaW8uZW5kICsgMTsNCisJCW1t aW8uc3RhcnQgPSBtbWlvLmVuZCArIDE7DQorCQltbWlvX3ByZWYuc3RhcnQgPSBtbWlvX3ByZWYu ZW5kICsgMTsNCiAJfQ0KIH0NCiANCiBzdGF0aWMgdm9pZCBwY2lfYnJpZGdlX2Rpc3RyaWJ1dGVf YXZhaWxhYmxlX3Jlc291cmNlcyhzdHJ1Y3QgcGNpX2RldiAqYnJpZGdlLA0KIAkJCQkJCSAgICAg c3RydWN0IGxpc3RfaGVhZCAqYWRkX2xpc3QpDQogew0KLQlyZXNvdXJjZV9zaXplX3QgYXZhaWxh YmxlX2lvLCBhdmFpbGFibGVfbW1pbywgYXZhaWxhYmxlX21taW9fcHJlZjsNCi0JY29uc3Qgc3Ry dWN0IHJlc291cmNlICpyZXM7DQorCXN0cnVjdCByZXNvdXJjZSBpb19yZXMsIG1taW9fcmVzLCBt bWlvX3ByZWZfcmVzOw0KIA0KIAlpZiAoIWJyaWRnZS0+aXNfaG90cGx1Z19icmlkZ2UpDQogCQly ZXR1cm47DQogDQorCWlvX3JlcyA9IGJyaWRnZS0+cmVzb3VyY2VbUENJX0JSSURHRV9SRVNPVVJD RVMgKyAwXTsNCisJbW1pb19yZXMgPSBicmlkZ2UtPnJlc291cmNlW1BDSV9CUklER0VfUkVTT1VS Q0VTICsgMV07DQorCW1taW9fcHJlZl9yZXMgPSBicmlkZ2UtPnJlc291cmNlW1BDSV9CUklER0Vf UkVTT1VSQ0VTICsgMl07DQorDQogCS8qIFRha2UgdGhlIGluaXRpYWwgZXh0cmEgcmVzb3VyY2Vz IGZyb20gdGhlIGhvdHBsdWcgcG9ydCAqLw0KLQlyZXMgPSAmYnJpZGdlLT5yZXNvdXJjZVtQQ0lf QlJJREdFX1JFU09VUkNFUyArIDBdOw0KLQlhdmFpbGFibGVfaW8gPSByZXNvdXJjZV9zaXplKHJl cyk7DQotCXJlcyA9ICZicmlkZ2UtPnJlc291cmNlW1BDSV9CUklER0VfUkVTT1VSQ0VTICsgMV07 DQotCWF2YWlsYWJsZV9tbWlvID0gcmVzb3VyY2Vfc2l6ZShyZXMpOw0KLQlyZXMgPSAmYnJpZGdl LT5yZXNvdXJjZVtQQ0lfQlJJREdFX1JFU09VUkNFUyArIDJdOw0KLQlhdmFpbGFibGVfbW1pb19w cmVmID0gcmVzb3VyY2Vfc2l6ZShyZXMpOw0KIA0KIAlwY2lfYnVzX2Rpc3RyaWJ1dGVfYXZhaWxh YmxlX3Jlc291cmNlcyhicmlkZ2UtPnN1Ym9yZGluYXRlLA0KLQkJCQkJICAgICAgIGFkZF9saXN0 LCBhdmFpbGFibGVfaW8sDQotCQkJCQkgICAgICAgYXZhaWxhYmxlX21taW8sDQotCQkJCQkgICAg ICAgYXZhaWxhYmxlX21taW9fcHJlZik7DQorCQlhZGRfbGlzdCwgaW9fcmVzLCBtbWlvX3Jlcywg bW1pb19wcmVmX3Jlcyk7DQogfQ0KIA0KIHZvaWQgcGNpX2Fzc2lnbl91bmFzc2lnbmVkX2JyaWRn ZV9yZXNvdXJjZXMoc3RydWN0IHBjaV9kZXYgKmJyaWRnZSkNCi0tIA0KMi4yMC4xDQoNCg==