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_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 5DC6BC004C9 for ; Sun, 5 May 2019 14:40:48 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 17FB7208C0 for ; Sun, 5 May 2019 14:40:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727789AbfEEOkr (ORCPT ); Sun, 5 May 2019 10:40:47 -0400 Received: from mail-oln040092254015.outbound.protection.outlook.com ([40.92.254.15]:21553 "EHLO APC01-PU1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727325AbfEEOkr (ORCPT ); Sun, 5 May 2019 10:40:47 -0400 Received: from HK2APC01FT045.eop-APC01.prod.protection.outlook.com (10.152.248.59) by HK2APC01HT044.eop-APC01.prod.protection.outlook.com (10.152.248.247) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1856.11; Sun, 5 May 2019 14:40:40 +0000 Received: from PS2P216MB0642.KORP216.PROD.OUTLOOK.COM (10.152.248.52) by HK2APC01FT045.mail.protection.outlook.com (10.152.249.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1856.11 via Frontend Transport; Sun, 5 May 2019 14:40:40 +0000 Received: from PS2P216MB0642.KORP216.PROD.OUTLOOK.COM ([fe80::adb3:4c16:60fd:65]) by PS2P216MB0642.KORP216.PROD.OUTLOOK.COM ([fe80::adb3:4c16:60fd:65%5]) with mapi id 15.20.1856.012; Sun, 5 May 2019 14:40:40 +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 v5 1/5] PCI: Consider alignment of hot-added bridges when distributing resources Thread-Topic: [PATCH v5 1/5] PCI: Consider alignment of hot-added bridges when distributing resources Thread-Index: AQHVA1CCiPhNaWVimEiawprIAkVJAQ== Date: Sun, 5 May 2019 14:40:40 +0000 Message-ID: References: <20190505144001.8106-1-nicholas.johnson-opensource@outlook.com.au> In-Reply-To: <20190505144001.8106-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: SG2PR03CA0130.apcprd03.prod.outlook.com (2603:1096:4:91::34) To PS2P216MB0642.KORP216.PROD.OUTLOOK.COM (2603:1096:300:1c::16) x-incomingtopheadermarker: OriginalChecksum:1365097B51D736CDB7218AE307421C83B546C588934C07471E83CD1E73263CF2;UpperCasedChecksum:DFDDA0BB1A255782A08DF2B2144AD4E8FDC1BD2DEEF03D44E3D7F8DAA28D7879;SizeAsReceived:7912;Count:50 x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.19.1 x-tmn: [kzJNBlS7F4Y7qcSWxFkW+QdMUz6CJ455aN8MozigZX5u8Q/lTwkR/8R3B8cE0OJc0ye0Bg9dXdY=] x-microsoft-original-message-id: <20190505144001.8106-2-nicholas.johnson-opensource@outlook.com.au> x-ms-publictraffictype: Email x-incomingheadercount: 50 x-eopattributedmessage: 0 x-ms-exchange-slblob-mailprops: Xo9mRxKQURT0eY5pRcrZj21eed7UjhNvNR46Mxw/G7mol/OT51A2B72IfwSqWRRnBLpiipVmo9VXLpfssW6w4fuV0BMCwKi63NkgNBDapGtBUFLY7+X7fLscluZQ+acwry7OTXQR6IVlxx0dTdRb15DooN7iNrExQ6VTD4b1bYZ8hvvP5/6tGhhU9TR+Gi+qKqBspgm2DzP5YkIp54JMKoQxvegHb8/RAcK1XTaBQ0WPByfFQhoI4yyc+iiIcHphpS9fe2OtvaL06bM4vxs6/DQzsLZZY4l/b6rAZECrB+5cmHHeRxQdJzN+7TegARYcWWcYWsfT6o3xCyEJJS7esMsPXdd/L6GRI8f5C0B3l27ubI0RipvcLIBVaHEAbGPzWJsPp+PKkpppgq2b8Hw4+0acEX4XJ3iNQDNxQUOA1z884hispcYCytHom4fv8d0pLljavEquLQn3E8n4sgpZTnNS7GvFBgWcF2czv4qEzJlvW0heSHBsZXeLMdikW12UXYoYaL3NScwpN3SkUMWpOs2tCdhRL+dAemHybdzTe9K1OB4yNarb4pz3WYmch0CJFI5PZzpD3E3Yx9sAUOumJ+7ffYQla/NEsA7s8vQ+08mOks4/uAZCNhgoSsV0zOU/vcPRkiqSXBXcM2L4CyF7z6stOjnDv08uZ6EbqAC4eHRFLruu0iQhh6sJRqtsbhovF0xQKgWAbMPF4rWYEGnBIM/eM1WwUjyvyzNGf7WBczxVuxGaAefv75wNy502uRa5UN4yefPgMCshGQh+3m+DonZxy0pI+Z50QxtlA+nMZkA8sjIcxLhX5HFxOMcVgx7bdW8GAAUlCvFsJ7/7S2AFfhh7w5P2Gat5psJceLvD/prQMY9TiQG+4dN7QlHREiU/L2VrfnZkN+rUfAN6sZ+0k6JBPXpWHBWVcZbfdVMXih7jv5Uo0c8rfQ== 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:HK2APC01HT044; x-ms-traffictypediagnostic: HK2APC01HT044: x-ms-exchange-purlcount: 1 x-microsoft-antispam-message-info: my+ntVSrz/luK2vzZLFr2qFAf9IXn2qnGF6UpsYOcoPeL/C4Kg67JEBZ5HMUeVsY9OFSgBdk/deyw+dgnpV7q9h59+uAfLu0aClA35juPAcjpObIikaZHgGfThx5Q2Mb+z51hDkFNztChX16Q6/7UHBjKmWvL9m/XbhzTt7Mf1/Jzn4tDk1LmjxRAp17JVA0 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: 5ee4280f-7029-4c23-9ede-08d6d167a4ee X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 May 2019 14:40:40.1875 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK2APC01HT044 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org VGhpcyBwYXRjaCBzb2x2ZXMgdGhlIGZvbGxvd2luZyBidWcgcmVwb3J0Og0KaHR0cHM6Ly9idWd6 aWxsYS5rZXJuZWwub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk1ODENCg0KQW4gZXhjZXJwdCBmcm9t IHRoZSBidWcgcmVwb3J0Og0KDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQpIZXJlIGlzIHdoYXQgaGFw cGVucyB3aGVuIGFuIEludGVsIEdpZ2FiaXQgRVQyIHF1YWQgcG9ydCBzZXJ2ZXIgYWRhcHRlcg0K aXMgaG90LWFkZGVkOg0KDQogIHBjaSAwMDAwOjM5OjAwLjA6IEJBUiAxNDogYXNzaWduZWQgW21l bSAweDUzMzAwMDAwLTB4NmEwZmZmZmZdDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeXl5eXl5eXl5eDQogIHBjaSAwMDAwOjNhOjAxLjA6IEJBUiAxNDogYXNzaWdu ZWQgW21lbSAweDUzNDAwMDAwLTB4NTQ3ZmZmZmZdDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeXl5eXl5eXl5eDQpUaGUgYWJvdmUgc2hvd3MgdGhhdCB0aGUgZG93 bnN0cmVhbSBicmlkZ2UgKDNhOjAxLjApIHdpbmRvdyBpcyBhbGlnbmVkDQp0byAyIE1CIGluc3Rl YWQgb2YgMSBNQiBhcyBpcyB0aGUgdXBzdHJlYW0gYnJpZGdlICgzOTowMC4wKSB3aW5kb3cuIFRo ZQ0KcmVtYWluaW5nIE1NSU8gc3BhY2UgKDB4MTVhMDAwMDApIGlzIGFzc2lnbmVkIHRvIHRoZSBo b3RwbHVnIGJyaWRnZQ0KKDNhOjA0LjApIGJ1dCBpdCBmYWlsczoNCg0KICBwY2kgMDAwMDozYTow NC4wOiBCQVIgMTQ6IG5vIHNwYWNlIGZvciBbbWVtIHNpemUgMHgxNWEwMDAwMF0NCiAgcGNpIDAw MDA6M2E6MDQuMDogQkFSIDE0OiBmYWlsZWQgdG8gYXNzaWduIFttZW0gc2l6ZSAweDE1YTAwMDAw XQ0KDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQ0KDQpSZXdyaXRlIHBjaV9idXNfZGlzdHJpYnV0ZV9hdmFp bGFibGVfcmVzb3VyY2VzKCkgdG8gYmV0dGVyIGhhbmRsZQ0KYnJpZGdlcyB3aXRoIGRpZmZlcmVu dCByZXNvdXJjZSBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzLiBQYXNzIG1vcmUNCmRldGFpbHMgYXJn dW1lbnRzIHJlY3Vyc2l2ZWx5IHRvIHRyYWNrIHRoZSByZXNvdXJjZSBzdGFydCBhbmQgZW5kDQph ZGRyZXNzZXMgcmVsYXRpdmUgdG8gdGhlIGluaXRpYWwgaG90cGx1ZyBicmlkZ2UuIFRoaXMgaXMg ZXNwZWNpYWxseQ0KdXNlZnVsIGZvciBUaHVuZGVyYm9sdCB3aXRoIG5hdGl2ZSBQQ0kgZW51bWVy YXRpb24sIGVuYWJsaW5nIGV4dGVybmFsDQpncmFwaGljcyBjYXJkcyBhbmQgb3RoZXIgZGV2aWNl cyB3aXRoIGJyaWRnZSBhbGlnbm1lbnQgaGlnaGVyIHRoYW4NCjB4MTAwMDAwIGJ5dGVzLg0KDQpT aWduZWQtb2ZmLWJ5OiBOaWNob2xhcyBKb2huc29uIDxuaWNob2xhcy5qb2huc29uLW9wZW5zb3Vy Y2VAb3V0bG9vay5jb20uYXU+DQotLS0NCiBkcml2ZXJzL3BjaS9zZXR1cC1idXMuYyB8IDE2NCAr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tDQogMSBmaWxlIGNoYW5nZWQs IDgzIGluc2VydGlvbnMoKyksIDgxIGRlbGV0aW9ucygtKQ0KDQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9wY2kvc2V0dXAtYnVzLmMgYi9kcml2ZXJzL3BjaS9zZXR1cC1idXMuYw0KaW5kZXggZWM0NGEw ZjNhLi5kYWU0YmFlMTIgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3BjaS9zZXR1cC1idXMuYw0KKysr IGIvZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMNCkBAIC0xODM5LDEwICsxODM5LDEwIEBAIHN0YXRp YyB2b2lkIGV4dGVuZF9icmlkZ2Vfd2luZG93KHN0cnVjdCBwY2lfZGV2ICpicmlkZ2UsIHN0cnVj dCByZXNvdXJjZSAqcmVzLA0KIH0NCiANCiBzdGF0aWMgdm9pZCBwY2lfYnVzX2Rpc3RyaWJ1dGVf YXZhaWxhYmxlX3Jlc291cmNlcyhzdHJ1Y3QgcGNpX2J1cyAqYnVzLA0KLQlzdHJ1Y3QgbGlzdF9o ZWFkICphZGRfbGlzdCwgcmVzb3VyY2Vfc2l6ZV90IGF2YWlsYWJsZV9pbywNCi0JcmVzb3VyY2Vf c2l6ZV90IGF2YWlsYWJsZV9tbWlvLCByZXNvdXJjZV9zaXplX3QgYXZhaWxhYmxlX21taW9fcHJl ZikNCisJc3RydWN0IGxpc3RfaGVhZCAqYWRkX2xpc3QsIHN0cnVjdCByZXNvdXJjZSBpbywNCisJ c3RydWN0IHJlc291cmNlIG1taW8sIHN0cnVjdCByZXNvdXJjZSBtbWlvX3ByZWYpDQogew0KLQly ZXNvdXJjZV9zaXplX3QgcmVtYWluaW5nX2lvLCByZW1haW5pbmdfbW1pbywgcmVtYWluaW5nX21t aW9fcHJlZjsNCisJcmVzb3VyY2Vfc2l6ZV90IGlvX3Blcl9ocCwgbW1pb19wZXJfaHAsIG1taW9f cHJlZl9wZXJfaHAsIGFsaWduOw0KIAl1bnNpZ25lZCBpbnQgbm9ybWFsX2JyaWRnZXMgPSAwLCBo b3RwbHVnX2JyaWRnZXMgPSAwOw0KIAlzdHJ1Y3QgcmVzb3VyY2UgKmlvX3JlcywgKm1taW9fcmVz LCAqbW1pb19wcmVmX3JlczsNCiAJc3RydWN0IHBjaV9kZXYgKmRldiwgKmJyaWRnZSA9IGJ1cy0+ c2VsZjsNCkBAIC0xODUyLDI1ICsxODUyLDMyIEBAIHN0YXRpYyB2b2lkIHBjaV9idXNfZGlzdHJp YnV0ZV9hdmFpbGFibGVfcmVzb3VyY2VzKHN0cnVjdCBwY2lfYnVzICpidXMsDQogCW1taW9fcHJl Zl9yZXMgPSAmYnJpZGdlLT5yZXNvdXJjZVtQQ0lfQlJJREdFX1JFU09VUkNFUyArIDJdOw0KIA0K IAkvKg0KLQkgKiBVcGRhdGUgYWRkaXRpb25hbCByZXNvdXJjZSBsaXN0IChhZGRfbGlzdCkgdG8g ZmlsbCBhbGwgdGhlDQotCSAqIGV4dHJhIHJlc291cmNlIHNwYWNlIGF2YWlsYWJsZSBmb3IgdGhp cyBwb3J0IGV4Y2VwdCB0aGUgc3BhY2UNCi0JICogY2FsY3VsYXRlZCBpbiBfX3BjaV9idXNfc2l6 ZV9icmlkZ2VzKCkgd2hpY2ggY292ZXJzIGFsbCB0aGUNCi0JICogZGV2aWNlcyBjdXJyZW50bHkg Y29ubmVjdGVkIHRvIHRoZSBwb3J0IGFuZCBiZWxvdy4NCisJICogVGhlIGFsaWdubWVudCBvZiB0 aGlzIGJyaWRnZSBpcyB5ZXQgdG8gYmUgY29uc2lkZXJlZCwgaGVuY2UgaXQgbXVzdA0KKwkgKiBi ZSBkb25lIG5vdyBiZWZvcmUgZXh0ZW5kaW5nIGl0cyBicmlkZ2Ugd2luZG93LiBBIHNpbmdsZSBi cmlkZ2UNCisJICogbWlnaHQgbm90IGJlIGFibGUgdG8gb2NjdXB5IHRoZSB3aG9sZSBwYXJlbnQg cmVnaW9uIGlmIHRoZSBhbGlnbm1lbnQNCisJICogZGlmZmVycyAtIGZvciBleGFtcGxlLCBhbiBl eHRlcm5hbCBHUFUgYXQgdGhlIGVuZCBvZiBhIFRodW5kZXJib2x0DQorCSAqIGRhaXN5IGNoYWlu Lg0KIAkgKi8NCi0JZXh0ZW5kX2JyaWRnZV93aW5kb3coYnJpZGdlLCBpb19yZXMsIGFkZF9saXN0 LCBhdmFpbGFibGVfaW8pOw0KLQlleHRlbmRfYnJpZGdlX3dpbmRvdyhicmlkZ2UsIG1taW9fcmVz LCBhZGRfbGlzdCwgYXZhaWxhYmxlX21taW8pOw0KLQlleHRlbmRfYnJpZGdlX3dpbmRvdyhicmlk Z2UsIG1taW9fcHJlZl9yZXMsIGFkZF9saXN0LA0KLQkJCSAgICAgYXZhaWxhYmxlX21taW9fcHJl Zik7DQorCWFsaWduID0gcGNpX3Jlc291cmNlX2FsaWdubWVudChicmlkZ2UsIGlvX3Jlcyk7DQor CWlmICghaW9fcmVzLT5wYXJlbnQgJiYgYWxpZ24pDQorCQlpby5zdGFydCA9IEFMSUdOKGlvLnN0 YXJ0LCBhbGlnbik7DQorDQorCWFsaWduID0gcGNpX3Jlc291cmNlX2FsaWdubWVudChicmlkZ2Us IG1taW9fcmVzKTsNCisJaWYgKCFtbWlvX3Jlcy0+cGFyZW50ICYmIGFsaWduKQ0KKwkJbW1pby5z dGFydCA9IEFMSUdOKG1taW8uc3RhcnQsIGFsaWduKTsNCisNCisJYWxpZ24gPSBwY2lfcmVzb3Vy Y2VfYWxpZ25tZW50KGJyaWRnZSwgbW1pb19wcmVmX3Jlcyk7DQorCWlmICghbW1pb19wcmVmX3Jl cy0+cGFyZW50ICYmIGFsaWduKQ0KKwkJbW1pb19wcmVmLnN0YXJ0ID0gQUxJR04obW1pb19wcmVm LnN0YXJ0LCBhbGlnbik7DQogDQogCS8qDQotCSAqIENhbGN1bGF0ZSB0aGUgdG90YWwgYW1vdW50 IG9mIGV4dHJhIHJlc291cmNlIHNwYWNlIHdlIGNhbg0KLQkgKiBwYXNzIHRvIGJyaWRnZXMgYmVs b3cgdGhpcyBvbmUuIFRoaXMgaXMgYmFzaWNhbGx5IHRoZQ0KLQkgKiBleHRyYSBzcGFjZSByZWR1 Y2VkIGJ5IHRoZSBtaW5pbWFsIHJlcXVpcmVkIHNwYWNlIGZvciB0aGUNCi0JICogbm9uLWhvdHBs dWcgYnJpZGdlcy4NCisJICogVXBkYXRlIHRoZSByZXNvdXJjZXMgdG8gZmlsbCBhcyBtdWNoIHJl bWFpbmluZyByZXNvdXJjZSBzcGFjZSBpbiB0aGUNCisJICogcGFyZW50IGJyaWRnZSBhcyBwb3Nz aWJsZSwgd2hpbGUgY29uc2lkZXJpbmcgYWxpZ25tZW50Lg0KIAkgKi8NCi0JcmVtYWluaW5nX2lv ID0gYXZhaWxhYmxlX2lvOw0KLQlyZW1haW5pbmdfbW1pbyA9IGF2YWlsYWJsZV9tbWlvOw0KLQly ZW1haW5pbmdfbW1pb19wcmVmID0gYXZhaWxhYmxlX21taW9fcHJlZjsNCisJZXh0ZW5kX2JyaWRn ZV93aW5kb3coYnJpZGdlLCBpb19yZXMsIGFkZF9saXN0LCByZXNvdXJjZV9zaXplKCZpbykpOw0K KwlleHRlbmRfYnJpZGdlX3dpbmRvdyhicmlkZ2UsIG1taW9fcmVzLCBhZGRfbGlzdCwgcmVzb3Vy Y2Vfc2l6ZSgmbW1pbykpOw0KKwlleHRlbmRfYnJpZGdlX3dpbmRvdyhicmlkZ2UsIG1taW9fcHJl Zl9yZXMsIGFkZF9saXN0LA0KKwkJcmVzb3VyY2Vfc2l6ZSgmbW1pb19wcmVmKSk7DQogDQogCS8q DQogCSAqIENhbGN1bGF0ZSBob3cgbWFueSBob3RwbHVnIGJyaWRnZXMgYW5kIG5vcm1hbCBicmlk Z2VzIHRoZXJlDQpAQCAtMTg4NCw4MCArMTg5MSw3OSBAQCBzdGF0aWMgdm9pZCBwY2lfYnVzX2Rp c3RyaWJ1dGVfYXZhaWxhYmxlX3Jlc291cmNlcyhzdHJ1Y3QgcGNpX2J1cyAqYnVzLA0KIAkJCW5v cm1hbF9icmlkZ2VzKys7DQogCX0NCiANCisJLyoNCisJICogVGhlcmUgaXMgb25seSBvbmUgYnJp ZGdlIG9uIHRoZSBidXMgc28gaXQgZ2V0cyBhbGwgcG9zc2libGUNCisJICogcmVzb3VyY2VzIHdo aWNoIGl0IGNhbiB0aGVuIGRpc3RyaWJ1dGUgdG8gdGhlIHBvc3NpYmxlDQorCSAqIGhvdHBsdWcg YnJpZGdlcyBiZWxvdy4NCisJICovDQorCWlmIChob3RwbHVnX2JyaWRnZXMgKyBub3JtYWxfYnJp ZGdlcyA9PSAxKSB7DQorCQlkZXYgPSBsaXN0X2ZpcnN0X2VudHJ5KCZidXMtPmRldmljZXMsIHN0 cnVjdCBwY2lfZGV2LCBidXNfbGlzdCk7DQorCQlpZiAoZGV2LT5zdWJvcmRpbmF0ZSkNCisJCQlw Y2lfYnVzX2Rpc3RyaWJ1dGVfYXZhaWxhYmxlX3Jlc291cmNlcyhkZXYtPnN1Ym9yZGluYXRlLA0K KwkJCQlhZGRfbGlzdCwgaW8sIG1taW8sIG1taW9fcHJlZik7DQorCQlyZXR1cm47DQorCX0NCisN CisJLyoNCisJICogUmVkdWNlIHRoZSBhdmFpbGFibGUgcmVzb3VyY2Ugc3BhY2UgYnkgd2hhdCB0 aGUNCisJICogYnJpZGdlIGFuZCBkZXZpY2VzIGJlbG93IGl0IG9jY3VweS4NCisJICovDQogCWZv cl9lYWNoX3BjaV9icmlkZ2UoZGV2LCBidXMpIHsNCi0JCWNvbnN0IHN0cnVjdCByZXNvdXJjZSAq cmVzOw0KKwkJc3RydWN0IHJlc291cmNlICpyZXM7DQorCQlyZXNvdXJjZV9zaXplX3QgdXNlZF9z aXplOw0KIA0KIAkJaWYgKGRldi0+aXNfaG90cGx1Z19icmlkZ2UpDQogCQkJY29udGludWU7DQog DQotCQkvKg0KLQkJICogUmVkdWNlIHRoZSBhdmFpbGFibGUgcmVzb3VyY2Ugc3BhY2UgYnkgd2hh dCB0aGUNCi0JCSAqIGJyaWRnZSBhbmQgZGV2aWNlcyBiZWxvdyBpdCBvY2N1cHkuDQotCQkgKi8N CiAJCXJlcyA9ICZkZXYtPnJlc291cmNlW1BDSV9CUklER0VfUkVTT1VSQ0VTICsgMF07DQotCQlp ZiAoIXJlcy0+cGFyZW50ICYmIGF2YWlsYWJsZV9pbyA+IHJlc291cmNlX3NpemUocmVzKSkNCi0J CQlyZW1haW5pbmdfaW8gLT0gcmVzb3VyY2Vfc2l6ZShyZXMpOw0KKwkJYWxpZ24gPSBwY2lfcmVz b3VyY2VfYWxpZ25tZW50KGRldiwgcmVzKTsNCisJCWFsaWduID0gYWxpZ24gPyBBTElHTihpby5z dGFydCwgYWxpZ24pIC0gaW8uc3RhcnQgOiAwOw0KKwkJdXNlZF9zaXplID0gYWxpZ24gKyByZXNv dXJjZV9zaXplKHJlcyk7DQorCQlpZiAoIXJlcy0+cGFyZW50ICYmIHVzZWRfc2l6ZSA8PSByZXNv dXJjZV9zaXplKCZpbykpDQorCQkJaW8uc3RhcnQgKz0gdXNlZF9zaXplOw0KIA0KIAkJcmVzID0g JmRldi0+cmVzb3VyY2VbUENJX0JSSURHRV9SRVNPVVJDRVMgKyAxXTsNCi0JCWlmICghcmVzLT5w YXJlbnQgJiYgYXZhaWxhYmxlX21taW8gPiByZXNvdXJjZV9zaXplKHJlcykpDQotCQkJcmVtYWlu aW5nX21taW8gLT0gcmVzb3VyY2Vfc2l6ZShyZXMpOw0KKwkJYWxpZ24gPSBwY2lfcmVzb3VyY2Vf YWxpZ25tZW50KGRldiwgcmVzKTsNCisJCWFsaWduID0gYWxpZ24gPyBBTElHTihtbWlvLnN0YXJ0 LCBhbGlnbikgLSBtbWlvLnN0YXJ0IDogMDsNCisJCXVzZWRfc2l6ZSA9IGFsaWduICsgcmVzb3Vy Y2Vfc2l6ZShyZXMpOw0KKwkJaWYgKCFyZXMtPnBhcmVudCAmJiB1c2VkX3NpemUgPD0gcmVzb3Vy Y2Vfc2l6ZSgmbW1pbykpDQorCQkJbW1pby5zdGFydCArPSB1c2VkX3NpemU7DQogDQogCQlyZXMg PSAmZGV2LT5yZXNvdXJjZVtQQ0lfQlJJREdFX1JFU09VUkNFUyArIDJdOw0KLQkJaWYgKCFyZXMt PnBhcmVudCAmJiBhdmFpbGFibGVfbW1pb19wcmVmID4gcmVzb3VyY2Vfc2l6ZShyZXMpKQ0KLQkJ CXJlbWFpbmluZ19tbWlvX3ByZWYgLT0gcmVzb3VyY2Vfc2l6ZShyZXMpOw0KKwkJYWxpZ24gPSBw Y2lfcmVzb3VyY2VfYWxpZ25tZW50KGRldiwgcmVzKTsNCisJCWFsaWduID0gYWxpZ24gPyBBTElH TihtbWlvX3ByZWYuc3RhcnQsIGFsaWduKSAtDQorCQkJCW1taW9fcHJlZi5zdGFydCA6IDA7DQor CQl1c2VkX3NpemUgPSBhbGlnbiArIHJlc291cmNlX3NpemUocmVzKTsNCisJCWlmICghcmVzLT5w YXJlbnQgJiYgdXNlZF9zaXplIDw9IHJlc291cmNlX3NpemUoJm1taW9fcHJlZikpDQorCQkJbW1p b19wcmVmLnN0YXJ0ICs9IHVzZWRfc2l6ZTsNCiAJfQ0KIA0KLQkvKg0KLQkgKiBUaGVyZSBpcyBv bmx5IG9uZSBicmlkZ2Ugb24gdGhlIGJ1cyBzbyBpdCBnZXRzIGFsbCBhdmFpbGFibGUNCi0JICog cmVzb3VyY2VzIHdoaWNoIGl0IGNhbiB0aGVuIGRpc3RyaWJ1dGUgdG8gdGhlIHBvc3NpYmxlDQot CSAqIGhvdHBsdWcgYnJpZGdlcyBiZWxvdy4NCi0JICovDQotCWlmIChob3RwbHVnX2JyaWRnZXMg KyBub3JtYWxfYnJpZGdlcyA9PSAxKSB7DQotCQlkZXYgPSBsaXN0X2ZpcnN0X2VudHJ5KCZidXMt PmRldmljZXMsIHN0cnVjdCBwY2lfZGV2LCBidXNfbGlzdCk7DQotCQlpZiAoZGV2LT5zdWJvcmRp bmF0ZSkgew0KLQkJCXBjaV9idXNfZGlzdHJpYnV0ZV9hdmFpbGFibGVfcmVzb3VyY2VzKGRldi0+ c3Vib3JkaW5hdGUsDQotCQkJCWFkZF9saXN0LCBhdmFpbGFibGVfaW8sIGF2YWlsYWJsZV9tbWlv LA0KLQkJCQlhdmFpbGFibGVfbW1pb19wcmVmKTsNCi0JCX0NCisJaWYgKCFob3RwbHVnX2JyaWRn ZXMpDQogCQlyZXR1cm47DQotCX0NCiANCiAJLyoNCi0JICogR28gb3ZlciBkZXZpY2VzIG9uIHRo aXMgYnVzIGFuZCBkaXN0cmlidXRlIHRoZSByZW1haW5pbmcNCi0JICogcmVzb3VyY2Ugc3BhY2Ug YmV0d2VlbiBob3RwbHVnIGJyaWRnZXMuDQorCSAqIERpc3RyaWJ1dGUgYW55IHJlbWFpbmluZyBy ZXNvdXJjZXMgZXF1YWxseSBiZXR3ZWVuDQorCSAqIHRoZSBob3RwbHVnLWNhcGFibGUgZG93bnN0 cmVhbSBwb3J0cy4NCiAJICovDQotCWZvcl9lYWNoX3BjaV9icmlkZ2UoZGV2LCBidXMpIHsNCi0J CXJlc291cmNlX3NpemVfdCBhbGlnbiwgaW8sIG1taW8sIG1taW9fcHJlZjsNCi0JCXN0cnVjdCBw Y2lfYnVzICpiOw0KKwlpb19wZXJfaHAgPSBkaXY2NF91bChyZXNvdXJjZV9zaXplKCZpbyksIGhv dHBsdWdfYnJpZGdlcyk7DQorCW1taW9fcGVyX2hwID0gZGl2NjRfdWwocmVzb3VyY2Vfc2l6ZSgm bW1pbyksIGhvdHBsdWdfYnJpZGdlcyk7DQorCW1taW9fcHJlZl9wZXJfaHAgPSBkaXY2NF91bChy ZXNvdXJjZV9zaXplKCZtbWlvX3ByZWYpLA0KKwkJaG90cGx1Z19icmlkZ2VzKTsNCiANCi0JCWIg PSBkZXYtPnN1Ym9yZGluYXRlOw0KLQkJaWYgKCFiIHx8ICFkZXYtPmlzX2hvdHBsdWdfYnJpZGdl KQ0KKwlmb3JfZWFjaF9wY2lfYnJpZGdlKGRldiwgYnVzKSB7DQorCQlpZiAoIWRldi0+c3Vib3Jk aW5hdGUgfHwgIWRldi0+aXNfaG90cGx1Z19icmlkZ2UpDQogCQkJY29udGludWU7DQogDQotCQkv Kg0KLQkJICogRGlzdHJpYnV0ZSBhdmFpbGFibGUgZXh0cmEgcmVzb3VyY2VzIGVxdWFsbHkgYmV0 d2Vlbg0KLQkJICogaG90cGx1Zy1jYXBhYmxlIGRvd25zdHJlYW0gcG9ydHMgdGFraW5nIGFsaWdu bWVudCBpbnRvDQotCQkgKiBhY2NvdW50Lg0KLQkJICoNCi0JCSAqIEhlcmUgaG90cGx1Z19icmlk Z2VzIGlzIGFsd2F5cyAhPSAwLg0KLQkJICovDQotCQlhbGlnbiA9IHBjaV9yZXNvdXJjZV9hbGln bm1lbnQoYnJpZGdlLCBpb19yZXMpOw0KLQkJaW8gPSBkaXY2NF91bChhdmFpbGFibGVfaW8sIGhv dHBsdWdfYnJpZGdlcyk7DQotCQlpbyA9IG1pbihBTElHTihpbywgYWxpZ24pLCByZW1haW5pbmdf aW8pOw0KLQkJcmVtYWluaW5nX2lvIC09IGlvOw0KLQ0KLQkJYWxpZ24gPSBwY2lfcmVzb3VyY2Vf YWxpZ25tZW50KGJyaWRnZSwgbW1pb19yZXMpOw0KLQkJbW1pbyA9IGRpdjY0X3VsKGF2YWlsYWJs ZV9tbWlvLCBob3RwbHVnX2JyaWRnZXMpOw0KLQkJbW1pbyA9IG1pbihBTElHTihtbWlvLCBhbGln biksIHJlbWFpbmluZ19tbWlvKTsNCi0JCXJlbWFpbmluZ19tbWlvIC09IG1taW87DQorCQlpby5l bmQgPSBpby5zdGFydCArIGlvX3Blcl9ocCAtIDE7DQorCQltbWlvLmVuZCA9IG1taW8uc3RhcnQg KyBtbWlvX3Blcl9ocCAtIDE7DQorCQltbWlvX3ByZWYuZW5kID0gbW1pb19wcmVmLnN0YXJ0ICsg bW1pb19wcmVmX3Blcl9ocCAtIDE7DQogDQotCQlhbGlnbiA9IHBjaV9yZXNvdXJjZV9hbGlnbm1l bnQoYnJpZGdlLCBtbWlvX3ByZWZfcmVzKTsNCi0JCW1taW9fcHJlZiA9IGRpdjY0X3VsKGF2YWls YWJsZV9tbWlvX3ByZWYsIGhvdHBsdWdfYnJpZGdlcyk7DQotCQltbWlvX3ByZWYgPSBtaW4oQUxJ R04obW1pb19wcmVmLCBhbGlnbiksIHJlbWFpbmluZ19tbWlvX3ByZWYpOw0KLQkJcmVtYWluaW5n X21taW9fcHJlZiAtPSBtbWlvX3ByZWY7DQorCQlwY2lfYnVzX2Rpc3RyaWJ1dGVfYXZhaWxhYmxl X3Jlc291cmNlcyhkZXYtPnN1Ym9yZGluYXRlLA0KKwkJCWFkZF9saXN0LCBpbywgbW1pbywgbW1p b19wcmVmKTsNCiANCi0JCXBjaV9idXNfZGlzdHJpYnV0ZV9hdmFpbGFibGVfcmVzb3VyY2VzKGIs IGFkZF9saXN0LCBpbywgbW1pbywNCi0JCQkJCQkgICAgICAgbW1pb19wcmVmKTsNCisJCWlvLnN0 YXJ0ID0gaW8uZW5kICsgMTsNCisJCW1taW8uc3RhcnQgPSBtbWlvLmVuZCArIDE7DQorCQltbWlv X3ByZWYuc3RhcnQgPSBtbWlvX3ByZWYuZW5kICsgMTsNCiAJfQ0KIH0NCiANCkBAIC0xOTY1LDIy ICsxOTcxLDE4IEBAIHN0YXRpYyB2b2lkDQogcGNpX2JyaWRnZV9kaXN0cmlidXRlX2F2YWlsYWJs ZV9yZXNvdXJjZXMoc3RydWN0IHBjaV9kZXYgKmJyaWRnZSwNCiAJCQkJCSAgc3RydWN0IGxpc3Rf aGVhZCAqYWRkX2xpc3QpDQogew0KLQlyZXNvdXJjZV9zaXplX3QgYXZhaWxhYmxlX2lvLCBhdmFp bGFibGVfbW1pbywgYXZhaWxhYmxlX21taW9fcHJlZjsNCi0JY29uc3Qgc3RydWN0IHJlc291cmNl ICpyZXM7DQorCXN0cnVjdCByZXNvdXJjZSBpb19yZXMsIG1taW9fcmVzLCBtbWlvX3ByZWZfcmVz Ow0KIA0KIAlpZiAoIWJyaWRnZS0+aXNfaG90cGx1Z19icmlkZ2UpDQogCQlyZXR1cm47DQogDQot CS8qIFRha2UgdGhlIGluaXRpYWwgZXh0cmEgcmVzb3VyY2VzIGZyb20gdGhlIGhvdHBsdWcgcG9y dCAqLw0KLQlyZXMgPSAmYnJpZGdlLT5yZXNvdXJjZVtQQ0lfQlJJREdFX1JFU09VUkNFUyArIDBd Ow0KLQlhdmFpbGFibGVfaW8gPSByZXNvdXJjZV9zaXplKHJlcyk7DQotCXJlcyA9ICZicmlkZ2Ut PnJlc291cmNlW1BDSV9CUklER0VfUkVTT1VSQ0VTICsgMV07DQotCWF2YWlsYWJsZV9tbWlvID0g cmVzb3VyY2Vfc2l6ZShyZXMpOw0KLQlyZXMgPSAmYnJpZGdlLT5yZXNvdXJjZVtQQ0lfQlJJREdF X1JFU09VUkNFUyArIDJdOw0KLQlhdmFpbGFibGVfbW1pb19wcmVmID0gcmVzb3VyY2Vfc2l6ZShy ZXMpOw0KKwlpb19yZXMgPSBicmlkZ2UtPnJlc291cmNlW1BDSV9CUklER0VfUkVTT1VSQ0VTICsg MF07DQorCW1taW9fcmVzID0gYnJpZGdlLT5yZXNvdXJjZVtQQ0lfQlJJREdFX1JFU09VUkNFUyAr IDFdOw0KKwltbWlvX3ByZWZfcmVzID0gYnJpZGdlLT5yZXNvdXJjZVtQQ0lfQlJJREdFX1JFU09V UkNFUyArIDJdOw0KIA0KKwkvKiBUYWtlIHRoZSBpbml0aWFsIGV4dHJhIHJlc291cmNlcyBmcm9t IHRoZSBob3RwbHVnIHBvcnQgKi8NCiAJcGNpX2J1c19kaXN0cmlidXRlX2F2YWlsYWJsZV9yZXNv dXJjZXMoYnJpZGdlLT5zdWJvcmRpbmF0ZSwNCi0JCWFkZF9saXN0LCBhdmFpbGFibGVfaW8sIGF2 YWlsYWJsZV9tbWlvLCBhdmFpbGFibGVfbW1pb19wcmVmKTsNCisJCWFkZF9saXN0LCBpb19yZXMs IG1taW9fcmVzLCBtbWlvX3ByZWZfcmVzKTsNCiB9DQogDQogdm9pZCBwY2lfYXNzaWduX3VuYXNz aWduZWRfYnJpZGdlX3Jlc291cmNlcyhzdHJ1Y3QgcGNpX2RldiAqYnJpZGdlKQ0KLS0gDQoyLjE5 LjENCg0K