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.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,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 2B344C10F14 for ; Fri, 12 Apr 2019 08:35:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id C59DF2084D for ; Fri, 12 Apr 2019 08:35:34 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="AOlvIFV4" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727458AbfDLIfd (ORCPT ); Fri, 12 Apr 2019 04:35:33 -0400 Received: from mail-eopbgr30068.outbound.protection.outlook.com ([40.107.3.68]:59521 "EHLO EUR03-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727289AbfDLIfc (ORCPT ); Fri, 12 Apr 2019 04:35:32 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IR0+A9+3R+ZFam9/qxvlCh4khXPtIciddJQk6G4J+P8=; b=AOlvIFV4EXQZIAajYofIKdrn2XZruzWHlBZgewT7iFQEyUTAz1+itaYpwisUxZba3TIQaASSKFjzMP2ZYc4YGcZi4fOy7e4TEa95dZk0XBYRKYXOUkYUonFx7Rvd3HZafChsAtoWAwxrmYrr/+12G2GGdgBpekiQg76dZYG/Tcw= Received: from AM6PR04MB5781.eurprd04.prod.outlook.com (20.179.3.19) by AM6PR04MB5926.eurprd04.prod.outlook.com (20.179.3.159) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1792.14; Fri, 12 Apr 2019 08:35:24 +0000 Received: from AM6PR04MB5781.eurprd04.prod.outlook.com ([fe80::f9db:ed86:614e:460]) by AM6PR04MB5781.eurprd04.prod.outlook.com ([fe80::f9db:ed86:614e:460%4]) with mapi id 15.20.1792.009; Fri, 12 Apr 2019 08:35:24 +0000 From: "Z.q. Hou" To: "linux-pci@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "bhelgaas@google.com" , "robh+dt@kernel.org" , "mark.rutland@arm.com" , "l.subrahmanya@mobiveil.co.in" , "shawnguo@kernel.org" , Leo Li , "lorenzo.pieralisi@arm.com" , "catalin.marinas@arm.com" , "will.deacon@arm.com" CC: Mingkai Hu , "M.h. Lian" , Xiaowei Bao , "Z.q. Hou" Subject: [PATCHv5 02/20] PCI: mobiveil: Format the code without functionality change Thread-Topic: [PATCHv5 02/20] PCI: mobiveil: Format the code without functionality change Thread-Index: AQHU8Qqsskjg5i2JJUOtSWDylHX9tg== Date: Fri, 12 Apr 2019 08:35:24 +0000 Message-ID: <20190412083635.33626-3-Zhiqiang.Hou@nxp.com> References: <20190412083635.33626-1-Zhiqiang.Hou@nxp.com> In-Reply-To: <20190412083635.33626-1-Zhiqiang.Hou@nxp.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: HK2PR06CA0011.apcprd06.prod.outlook.com (2603:1096:202:2e::23) To AM6PR04MB5781.eurprd04.prod.outlook.com (2603:10a6:20b:ad::19) authentication-results: spf=none (sender IP is ) smtp.mailfrom=zhiqiang.hou@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.17.1 x-originating-ip: [119.31.174.73] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 98e1ad42-2a09-49ed-e2a8-08d6bf21ce5a x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600139)(711020)(4605104)(4618075)(2017052603328)(7193020);SRVR:AM6PR04MB5926; x-ms-traffictypediagnostic: AM6PR04MB5926: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(346002)(376002)(136003)(366004)(396003)(39860400002)(189003)(199004)(478600001)(36756003)(305945005)(30864003)(52116002)(6486002)(110136005)(186003)(7416002)(3846002)(7736002)(6436002)(50226002)(54906003)(53946003)(316002)(6512007)(6116002)(25786009)(1076003)(26005)(86362001)(105586002)(8676002)(81166006)(386003)(106356001)(14454004)(2501003)(6506007)(81156014)(76176011)(5660300002)(102836004)(256004)(53936002)(71200400001)(71190400001)(2906002)(68736007)(476003)(66066001)(99286004)(2616005)(97736004)(4326008)(486006)(446003)(11346002)(8936002)(2201001)(14444005)(921003)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:AM6PR04MB5926;H:AM6PR04MB5781.eurprd04.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: j1aRpFgyBxEmLcC3DnoLVdaAfOwlq7XVcdIr09AwnA8U5aLIqGc0+gHvyBDAG8rK0nVgdL74Q7mlJAyMwEmemlp9SFTl2Kl7/MmZGqPRm8bHtbl8gfZXVLOy6Y/xvz0EzkmHdv1w2oiJrVPxkMp/LaNUSnvuCsmb0D1s7p8dC0fP/bz9MpD/jDSRJ+4BWQtF2QqayMPYx3W+l3ogwhagzPbECI0B8bdQhtt3REG39+y1Q07BPD01eLklRDillF5uQhP7h0rymw0O2Eohgu3rc0+Dn97Mhwr2OxNhG3JeNIE+F/jpFOP1sbGSbLRLcL7C1U9zFhl+G2LlFC16LeDcbuWhHZNmq2EjE+dOp/uepPvoMOZHvDGwRiOV+PCyu2c4P8ZxkZjiG/CjpMgEXph1e0FBQRt8pNniBrQMTJqluD8= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 98e1ad42-2a09-49ed-e2a8-08d6bf21ce5a X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 08:35:24.2086 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB5926 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org RnJvbTogSG91IFpoaXFpYW5nIDxaaGlxaWFuZy5Ib3VAbnhwLmNvbT4NCg0KSnVzdCBmb3JtYXQg dGhlIGNvZGUgd2l0aG91dCBmdW5jdGlvbmFsaXR5IGNoYW5nZS4NCg0KU2lnbmVkLW9mZi1ieTog SG91IFpoaXFpYW5nIDxaaGlxaWFuZy5Ib3VAbnhwLmNvbT4NClJldmlld2VkLWJ5OiBNaW5naHVh biBMaWFuIDxNaW5naHVhbi5MaWFuQG54cC5jb20+DQotLS0NClY1Og0KIC0gUmV0b3VjaGVkIHRo ZSBzdWJqZWN0Lg0KDQogZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLW1vYml2ZWlsLmMgfCAy NjEgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQ0KIDEgZmlsZSBjaGFuZ2VkLCAxMzcgaW5zZXJ0 aW9ucygrKSwgMTI0IGRlbGV0aW9ucygtKQ0KDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvY29u dHJvbGxlci9wY2llLW1vYml2ZWlsLmMgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtbW9i aXZlaWwuYw0KaW5kZXggZDU1YzdlNzgwYzZlLi5iODc0NzFmMDhhNDAgMTAwNjQ0DQotLS0gYS9k cml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtbW9iaXZlaWwuYw0KKysrIGIvZHJpdmVycy9wY2kv Y29udHJvbGxlci9wY2llLW1vYml2ZWlsLmMNCkBAIC0zMSwzOCArMzEsNDAgQEANCiAgKiB0cmFu c2xhdGlvbiB0YWJsZXMgYXJlIGdyb3VwZWQgaW50byB3aW5kb3dzLCBlYWNoIHdpbmRvdyByZWdp c3RlcnMgYXJlDQogICogZ3JvdXBlZCBpbnRvIGJsb2NrcyBvZiA0IG9yIDE2IHJlZ2lzdGVycyBl YWNoDQogICovDQotI2RlZmluZSBQQUJfUkVHX0JMT0NLX1NJWkUJMTYNCi0jZGVmaW5lIFBBQl9F WFRfUkVHX0JMT0NLX1NJWkUJNA0KKyNkZWZpbmUgUEFCX1JFR19CTE9DS19TSVpFCQkxNg0KKyNk ZWZpbmUgUEFCX0VYVF9SRUdfQkxPQ0tfU0laRQkJNA0KIA0KLSNkZWZpbmUgUEFCX1JFR19BRERS KG9mZnNldCwgd2luKSAob2Zmc2V0ICsgKHdpbiAqIFBBQl9SRUdfQkxPQ0tfU0laRSkpDQotI2Rl ZmluZSBQQUJfRVhUX1JFR19BRERSKG9mZnNldCwgd2luKSAob2Zmc2V0ICsgKHdpbiAqIFBBQl9F WFRfUkVHX0JMT0NLX1NJWkUpKQ0KKyNkZWZpbmUgUEFCX1JFR19BRERSKG9mZnNldCwgd2luKQlc DQorCShvZmZzZXQgKyAod2luICogUEFCX1JFR19CTE9DS19TSVpFKSkNCisjZGVmaW5lIFBBQl9F WFRfUkVHX0FERFIob2Zmc2V0LCB3aW4pCVwNCisJKG9mZnNldCArICh3aW4gKiBQQUJfRVhUX1JF R19CTE9DS19TSVpFKSkNCiANCi0jZGVmaW5lIExUU1NNX1NUQVRVUwkJMHgwNDA0DQotI2RlZmlu ZSAgTFRTU01fU1RBVFVTX0wwX01BU0sJMHgzZg0KLSNkZWZpbmUgIExUU1NNX1NUQVRVU19MMAkw eDJkDQorI2RlZmluZSBMVFNTTV9TVEFUVVMJCQkweDA0MDQNCisjZGVmaW5lICBMVFNTTV9TVEFU VVNfTDBfTUFTSwkJMHgzZg0KKyNkZWZpbmUgIExUU1NNX1NUQVRVU19MMAkJMHgyZA0KIA0KLSNk ZWZpbmUgUEFCX0NUUkwJCTB4MDgwOA0KLSNkZWZpbmUgIEFNQkFfUElPX0VOQUJMRV9TSElGVAkw DQotI2RlZmluZSAgUEVYX1BJT19FTkFCTEVfU0hJRlQJMQ0KLSNkZWZpbmUgIFBBR0VfU0VMX1NI SUZUCTEzDQotI2RlZmluZSAgUEFHRV9TRUxfTUFTSwkJMHgzZg0KLSNkZWZpbmUgIFBBR0VfTE9f TUFTSwkJMHgzZmYNCi0jZGVmaW5lICBQQUdFX1NFTF9PRkZTRVRfU0hJRlQJMTANCisjZGVmaW5l IFBBQl9DVFJMCQkJMHgwODA4DQorI2RlZmluZSAgQU1CQV9QSU9fRU5BQkxFX1NISUZUCQkwDQor I2RlZmluZSAgUEVYX1BJT19FTkFCTEVfU0hJRlQJCTENCisjZGVmaW5lICBQQUdFX1NFTF9TSElG VAkJCTEzDQorI2RlZmluZSAgUEFHRV9TRUxfTUFTSwkJCTB4M2YNCisjZGVmaW5lICBQQUdFX0xP X01BU0sJCQkweDNmZg0KKyNkZWZpbmUgIFBBR0VfU0VMX09GRlNFVF9TSElGVAkJMTANCiANCi0j ZGVmaW5lIFBBQl9BWElfUElPX0NUUkwJMHgwODQwDQotI2RlZmluZSAgQVBJT19FTl9NQVNLCQkw eGYNCisjZGVmaW5lIFBBQl9BWElfUElPX0NUUkwJCTB4MDg0MA0KKyNkZWZpbmUgIEFQSU9fRU5f TUFTSwkJCTB4Zg0KIA0KLSNkZWZpbmUgUEFCX1BFWF9QSU9fQ1RSTAkweDA4YzANCi0jZGVmaW5l ICBQSU9fRU5BQkxFX1NISUZUCTANCisjZGVmaW5lIFBBQl9QRVhfUElPX0NUUkwJCTB4MDhjMA0K KyNkZWZpbmUgIFBJT19FTkFCTEVfU0hJRlQJCTANCiANCiAjZGVmaW5lIFBBQl9JTlRQX0FNQkFf TUlTQ19FTkIJCTB4MGIwYw0KLSNkZWZpbmUgUEFCX0lOVFBfQU1CQV9NSVNDX1NUQVQJMHgwYjFj DQorI2RlZmluZSBQQUJfSU5UUF9BTUJBX01JU0NfU1RBVAkJMHgwYjFjDQogI2RlZmluZSAgUEFC X0lOVFBfSU5UWF9NQVNLCQkweDAxZTANCiAjZGVmaW5lICBQQUJfSU5UUF9NU0lfTUFTSwkJMHg4 DQogDQotI2RlZmluZSBQQUJfQVhJX0FNQVBfQ1RSTCh3aW4pCVBBQl9SRUdfQUREUigweDBiYTAs IHdpbikNCi0jZGVmaW5lICBXSU5fRU5BQkxFX1NISUZUCTANCi0jZGVmaW5lICBXSU5fVFlQRV9T SElGVAkxDQorI2RlZmluZSBQQUJfQVhJX0FNQVBfQ1RSTCh3aW4pCQlQQUJfUkVHX0FERFIoMHgw YmEwLCB3aW4pDQorI2RlZmluZSAgV0lOX0VOQUJMRV9TSElGVAkJMA0KKyNkZWZpbmUgIFdJTl9U WVBFX1NISUZUCQkJMQ0KIA0KICNkZWZpbmUgUEFCX0VYVF9BWElfQU1BUF9TSVpFKHdpbikJUEFC X0VYVF9SRUdfQUREUigweGJhZjAsIHdpbikNCiANCkBAIC03MCwxNiArNzIsMTYgQEANCiAjZGVm aW5lICBBWElfV0lORE9XX0FMSUdOX01BU0sJCTMNCiANCiAjZGVmaW5lIFBBQl9BWElfQU1BUF9Q RVhfV0lOX0wod2luKQlQQUJfUkVHX0FERFIoMHgwYmE4LCB3aW4pDQotI2RlZmluZSAgUEFCX0JV U19TSElGVAkJMjQNCi0jZGVmaW5lICBQQUJfREVWSUNFX1NISUZUCTE5DQotI2RlZmluZSAgUEFC X0ZVTkNUSU9OX1NISUZUCTE2DQorI2RlZmluZSAgUEFCX0JVU19TSElGVAkJCTI0DQorI2RlZmlu ZSAgUEFCX0RFVklDRV9TSElGVAkJMTkNCisjZGVmaW5lICBQQUJfRlVOQ1RJT05fU0hJRlQJCTE2 DQogDQogI2RlZmluZSBQQUJfQVhJX0FNQVBfUEVYX1dJTl9IKHdpbikJUEFCX1JFR19BRERSKDB4 MGJhYywgd2luKQ0KICNkZWZpbmUgUEFCX0lOVFBfQVhJX1BJT19DTEFTUwkJMHg0NzQNCiANCi0j ZGVmaW5lIFBBQl9QRVhfQU1BUF9DVFJMKHdpbikJUEFCX1JFR19BRERSKDB4NGJhMCwgd2luKQ0K LSNkZWZpbmUgIEFNQVBfQ1RSTF9FTl9TSElGVAkwDQotI2RlZmluZSAgQU1BUF9DVFJMX1RZUEVf U0hJRlQJMQ0KKyNkZWZpbmUgUEFCX1BFWF9BTUFQX0NUUkwod2luKQkJUEFCX1JFR19BRERSKDB4 NGJhMCwgd2luKQ0KKyNkZWZpbmUgIEFNQVBfQ1RSTF9FTl9TSElGVAkJMA0KKyNkZWZpbmUgIEFN QVBfQ1RSTF9UWVBFX1NISUZUCQkxDQogDQogI2RlZmluZSBQQUJfRVhUX1BFWF9BTUFQX1NJWkVO KHdpbikJUEFCX0VYVF9SRUdfQUREUigweGJlZjAsIHdpbikNCiAjZGVmaW5lIFBBQl9QRVhfQU1B UF9BWElfV0lOKHdpbikJUEFCX1JFR19BRERSKDB4NGJhNCwgd2luKQ0KQEAgLTg3LDM5ICs4OSwz OSBAQA0KICNkZWZpbmUgUEFCX1BFWF9BTUFQX1BFWF9XSU5fSCh3aW4pCVBBQl9SRUdfQUREUigw eDRiYWMsIHdpbikNCiANCiAvKiBzdGFydGluZyBvZmZzZXQgb2YgSU5UWCBiaXRzIGluIHN0YXR1 cyByZWdpc3RlciAqLw0KLSNkZWZpbmUgUEFCX0lOVFhfU1RBUlQJNQ0KKyNkZWZpbmUgUEFCX0lO VFhfU1RBUlQJCQk1DQogDQogLyogc3VwcG9ydGVkIG51bWJlciBvZiBNU0kgaW50ZXJydXB0cyAq Lw0KLSNkZWZpbmUgUENJX05VTV9NU0kJMTYNCisjZGVmaW5lIFBDSV9OVU1fTVNJCQkJMTYNCiAN CiAvKiBNU0kgcmVnaXN0ZXJzICovDQotI2RlZmluZSBNU0lfQkFTRV9MT19PRkZTRVQJMHgwNA0K LSNkZWZpbmUgTVNJX0JBU0VfSElfT0ZGU0VUCTB4MDgNCi0jZGVmaW5lIE1TSV9TSVpFX09GRlNF VAkweDBjDQotI2RlZmluZSBNU0lfRU5BQkxFX09GRlNFVAkweDE0DQotI2RlZmluZSBNU0lfU1RB VFVTX09GRlNFVAkweDE4DQotI2RlZmluZSBNU0lfREFUQV9PRkZTRVQJMHgyMA0KLSNkZWZpbmUg TVNJX0FERFJfTF9PRkZTRVQJMHgyNA0KLSNkZWZpbmUgTVNJX0FERFJfSF9PRkZTRVQJMHgyOA0K KyNkZWZpbmUgTVNJX0JBU0VfTE9fT0ZGU0VUCQkweDA0DQorI2RlZmluZSBNU0lfQkFTRV9ISV9P RkZTRVQJCTB4MDgNCisjZGVmaW5lIE1TSV9TSVpFX09GRlNFVAkJCTB4MGMNCisjZGVmaW5lIE1T SV9FTkFCTEVfT0ZGU0VUCQkweDE0DQorI2RlZmluZSBNU0lfU1RBVFVTX09GRlNFVAkJMHgxOA0K KyNkZWZpbmUgTVNJX0RBVEFfT0ZGU0VUCQkJMHgyMA0KKyNkZWZpbmUgTVNJX0FERFJfTF9PRkZT RVQJCTB4MjQNCisjZGVmaW5lIE1TSV9BRERSX0hfT0ZGU0VUCQkweDI4DQogDQogLyogb3V0Ym91 bmQgYW5kIGluYm91bmQgd2luZG93IGRlZmluaXRpb25zICovDQotI2RlZmluZSBXSU5fTlVNXzAJ CTANCi0jZGVmaW5lIFdJTl9OVU1fMQkJMQ0KLSNkZWZpbmUgQ0ZHX1dJTkRPV19UWVBFCTANCi0j ZGVmaW5lIElPX1dJTkRPV19UWVBFCQkxDQotI2RlZmluZSBNRU1fV0lORE9XX1RZUEUJMg0KLSNk ZWZpbmUgSUJfV0lOX1NJWkUJCSgodTY0KTI1NiAqIDEwMjQgKiAxMDI0ICogMTAyNCkNCi0jZGVm aW5lIE1BWF9QSU9fV0lORE9XUwk4DQorI2RlZmluZSBXSU5fTlVNXzAJCQkwDQorI2RlZmluZSBX SU5fTlVNXzEJCQkxDQorI2RlZmluZSBDRkdfV0lORE9XX1RZUEUJCQkwDQorI2RlZmluZSBJT19X SU5ET1dfVFlQRQkJCTENCisjZGVmaW5lIE1FTV9XSU5ET1dfVFlQRQkJCTINCisjZGVmaW5lIElC X1dJTl9TSVpFCQkJKCh1NjQpMjU2ICogMTAyNCAqIDEwMjQgKiAxMDI0KQ0KKyNkZWZpbmUgTUFY X1BJT19XSU5ET1dTCQkJOA0KIA0KIC8qIFBhcmFtZXRlcnMgZm9yIHRoZSB3YWl0aW5nIGZvciBs aW5rIHVwIHJvdXRpbmUgKi8NCi0jZGVmaW5lIExJTktfV0FJVF9NQVhfUkVUUklFUwkxMA0KLSNk ZWZpbmUgTElOS19XQUlUX01JTgk5MDAwMA0KLSNkZWZpbmUgTElOS19XQUlUX01BWAkxMDAwMDAN CisjZGVmaW5lIExJTktfV0FJVF9NQVhfUkVUUklFUwkJMTANCisjZGVmaW5lIExJTktfV0FJVF9N SU4JCQk5MDAwMA0KKyNkZWZpbmUgTElOS19XQUlUX01BWAkJCTEwMDAwMA0KIA0KLSNkZWZpbmUg UEFHRURfQUREUl9CTkRSWQkJCTB4YzAwDQotI2RlZmluZSBPRkZTRVRfVE9fUEFHRV9BRERSKG9m ZikJCVwNCisjZGVmaW5lIFBBR0VEX0FERFJfQk5EUlkJCTB4YzAwDQorI2RlZmluZSBPRkZTRVRf VE9fUEFHRV9BRERSKG9mZikJXA0KIAkoKG9mZiAmIFBBR0VfTE9fTUFTSykgfCBQQUdFRF9BRERS X0JORFJZKQ0KLSNkZWZpbmUgT0ZGU0VUX1RPX1BBR0VfSURYKG9mZikJCQlcDQorI2RlZmluZSBP RkZTRVRfVE9fUEFHRV9JRFgob2ZmKQkJXA0KIAkoKG9mZiA+PiBQQUdFX1NFTF9PRkZTRVRfU0hJ RlQpICYgUEFHRV9TRUxfTUFTSykNCiANCiBzdHJ1Y3QgbW9iaXZlaWxfbXNpIHsJCQkvKiBNU0kg aW5mb3JtYXRpb24gKi8NCkBAIC0yOTcsMTQgKzI5OSwxNCBAQCBzdGF0aWMgdm9pZCBfX2lvbWVt ICptb2JpdmVpbF9wY2llX21hcF9idXMoc3RydWN0IHBjaV9idXMgKmJ1cywNCiAJCQkJCXVuc2ln bmVkIGludCBkZXZmbiwgaW50IHdoZXJlKQ0KIHsNCiAJc3RydWN0IG1vYml2ZWlsX3BjaWUgKnBj aWUgPSBidXMtPnN5c2RhdGE7DQorCXUzMiB2YWx1ZTsNCiANCiAJaWYgKCFtb2JpdmVpbF9wY2ll X3ZhbGlkX2RldmljZShidXMsIGRldmZuKSkNCiAJCXJldHVybiBOVUxMOw0KIA0KLQlpZiAoYnVz LT5udW1iZXIgPT0gcGNpZS0+cm9vdF9idXNfbnIpIHsNCi0JCS8qIFJDIGNvbmZpZyBhY2Nlc3Mg Ki8NCisJLyogUkMgY29uZmlnIGFjY2VzcyAqLw0KKwlpZiAoYnVzLT5udW1iZXIgPT0gcGNpZS0+ cm9vdF9idXNfbnIpDQogCQlyZXR1cm4gcGNpZS0+Y3NyX2F4aV9zbGF2ZV9iYXNlICsgd2hlcmU7 DQotCX0NCiANCiAJLyoNCiAJICogRVAgY29uZmlnIGFjY2VzcyAoaW4gQ29uZmlnL0FQSU8gc3Bh Y2UpDQpAQCAtMzEyLDEwICszMTQsMTIgQEAgc3RhdGljIHZvaWQgX19pb21lbSAqbW9iaXZlaWxf cGNpZV9tYXBfYnVzKHN0cnVjdCBwY2lfYnVzICpidXMsDQogCSAqIChCREYpIGluIFBBQl9BWElf QU1BUF9QRVhfV0lOX0wwIFJlZ2lzdGVyLg0KIAkgKiBSZWxpZXMgb24gcGNpX2xvY2sgc2VyaWFs aXphdGlvbg0KIAkgKi8NCi0JY3NyX3dyaXRlbChwY2llLCBidXMtPm51bWJlciA8PCBQQUJfQlVT X1NISUZUIHwNCi0JCQlQQ0lfU0xPVChkZXZmbikgPDwgUEFCX0RFVklDRV9TSElGVCB8DQotCQkJ UENJX0ZVTkMoZGV2Zm4pIDw8IFBBQl9GVU5DVElPTl9TSElGVCwNCi0JCQlQQUJfQVhJX0FNQVBf UEVYX1dJTl9MKFdJTl9OVU1fMCkpOw0KKwl2YWx1ZSA9IGJ1cy0+bnVtYmVyIDw8IFBBQl9CVVNf U0hJRlQgfA0KKwkJUENJX1NMT1QoZGV2Zm4pIDw8IFBBQl9ERVZJQ0VfU0hJRlQgfA0KKwkJUENJ X0ZVTkMoZGV2Zm4pIDw8IFBBQl9GVU5DVElPTl9TSElGVDsNCisNCisJY3NyX3dyaXRlbChwY2ll LCB2YWx1ZSwgUEFCX0FYSV9BTUFQX1BFWF9XSU5fTChXSU5fTlVNXzApKTsNCisNCiAJcmV0dXJu IHBjaWUtPmNvbmZpZ19heGlfc2xhdmVfYmFzZSArIHdoZXJlOw0KIH0NCiANCkBAIC0zNTAsMjIg KzM1NCwyMiBAQCBzdGF0aWMgdm9pZCBtb2JpdmVpbF9wY2llX2lzcihzdHJ1Y3QgaXJxX2Rlc2Mg KmRlc2MpDQogDQogCS8qIEhhbmRsZSBJTlR4ICovDQogCWlmIChpbnRyX3N0YXR1cyAmIFBBQl9J TlRQX0lOVFhfTUFTSykgew0KLQkJc2hpZnRlZF9zdGF0dXMgPSBjc3JfcmVhZGwocGNpZSwgUEFC X0lOVFBfQU1CQV9NSVNDX1NUQVQpID4+DQotCQkJUEFCX0lOVFhfU1RBUlQ7DQorCQlzaGlmdGVk X3N0YXR1cyA9IGNzcl9yZWFkbChwY2llLCBQQUJfSU5UUF9BTUJBX01JU0NfU1RBVCk7DQorCQlz aGlmdGVkX3N0YXR1cyA+Pj0gUEFCX0lOVFhfU1RBUlQ7DQogCQlkbyB7DQogCQkJZm9yX2VhY2hf c2V0X2JpdChiaXQsICZzaGlmdGVkX3N0YXR1cywgUENJX05VTV9JTlRYKSB7DQogCQkJCXZpcnEg PSBpcnFfZmluZF9tYXBwaW5nKHBjaWUtPmludHhfZG9tYWluLA0KLQkJCQkJCWJpdCArIDEpOw0K KwkJCQkJCQliaXQgKyAxKTsNCiAJCQkJaWYgKHZpcnEpDQogCQkJCQlnZW5lcmljX2hhbmRsZV9p cnEodmlycSk7DQogCQkJCWVsc2UNCi0JCQkJCWRldl9lcnJfcmF0ZWxpbWl0ZWQoZGV2LA0KLQkJ CQkJCSJ1bmV4cGVjdGVkIElSUSwgSU5UJWRcbiIsIGJpdCk7DQorCQkJCQlkZXZfZXJyX3JhdGVs aW1pdGVkKGRldiwgInVuZXhwZWN0ZWQgSVJRLCBJTlQlZFxuIiwNCisJCQkJCQkJICAgIGJpdCk7 DQogDQogCQkJCS8qIGNsZWFyIGludGVycnVwdCAqLw0KIAkJCQljc3Jfd3JpdGVsKHBjaWUsDQot CQkJCQlzaGlmdGVkX3N0YXR1cyA8PCBQQUJfSU5UWF9TVEFSVCwNCi0JCQkJCVBBQl9JTlRQX0FN QkFfTUlTQ19TVEFUKTsNCisJCQkJCSAgIHNoaWZ0ZWRfc3RhdHVzIDw8IFBBQl9JTlRYX1NUQVJU LA0KKwkJCQkJICAgUEFCX0lOVFBfQU1CQV9NSVNDX1NUQVQpOw0KIAkJCX0NCiAJCX0gd2hpbGUg KChzaGlmdGVkX3N0YXR1cyA+PiBQQUJfSU5UWF9TVEFSVCkgIT0gMCk7DQogCX0NCkBAIC0zNzUs OCArMzc5LDcgQEAgc3RhdGljIHZvaWQgbW9iaXZlaWxfcGNpZV9pc3Ioc3RydWN0IGlycV9kZXNj ICpkZXNjKQ0KIA0KIAkvKiBoYW5kbGUgTVNJIGludGVycnVwdHMgKi8NCiAJd2hpbGUgKG1zaV9z dGF0dXMgJiAxKSB7DQotCQltc2lfZGF0YSA9IHJlYWRsX3JlbGF4ZWQocGNpZS0+YXBiX2Nzcl9i YXNlDQotCQkJCSsgTVNJX0RBVEFfT0ZGU0VUKTsNCisJCW1zaV9kYXRhID0gcmVhZGxfcmVsYXhl ZChwY2llLT5hcGJfY3NyX2Jhc2UgKyBNU0lfREFUQV9PRkZTRVQpOw0KIA0KIAkJLyoNCiAJCSAq IE1TSV9TVEFUVVNfT0ZGU0VUIHJlZ2lzdGVyIGdldHMgdXBkYXRlZCB0byB6ZXJvDQpAQCAtMzg1 LDE4ICszODgsMTggQEAgc3RhdGljIHZvaWQgbW9iaXZlaWxfcGNpZV9pc3Ioc3RydWN0IGlycV9k ZXNjICpkZXNjKQ0KIAkJICogdHdvIGR1bW15IHJlYWRzLg0KIAkJICovDQogCQltc2lfYWRkcl9s byA9IHJlYWRsX3JlbGF4ZWQocGNpZS0+YXBiX2Nzcl9iYXNlICsNCi0JCQkJTVNJX0FERFJfTF9P RkZTRVQpOw0KKwkJCQkJICAgIE1TSV9BRERSX0xfT0ZGU0VUKTsNCiAJCW1zaV9hZGRyX2hpID0g cmVhZGxfcmVsYXhlZChwY2llLT5hcGJfY3NyX2Jhc2UgKw0KLQkJCQlNU0lfQUREUl9IX09GRlNF VCk7DQorCQkJCQkgICAgTVNJX0FERFJfSF9PRkZTRVQpOw0KIAkJZGV2X2RiZyhkZXYsICJNU0kg cmVnaXN0ZXJzLCBkYXRhOiAlMDh4LCBhZGRyOiAlMDh4OiUwOHhcbiIsDQotCQkJCW1zaV9kYXRh LCBtc2lfYWRkcl9oaSwgbXNpX2FkZHJfbG8pOw0KKwkJCW1zaV9kYXRhLCBtc2lfYWRkcl9oaSwg bXNpX2FkZHJfbG8pOw0KIA0KIAkJdmlycSA9IGlycV9maW5kX21hcHBpbmcobXNpLT5kZXZfZG9t YWluLCBtc2lfZGF0YSk7DQogCQlpZiAodmlycSkNCiAJCQlnZW5lcmljX2hhbmRsZV9pcnEodmly cSk7DQogDQogCQltc2lfc3RhdHVzID0gcmVhZGxfcmVsYXhlZChwY2llLT5hcGJfY3NyX2Jhc2Ug Kw0KLQkJCQlNU0lfU1RBVFVTX09GRlNFVCk7DQorCQkJCQkgICBNU0lfU1RBVFVTX09GRlNFVCk7 DQogCX0NCiANCiAJLyogQ2xlYXIgdGhlIGludGVycnVwdCBzdGF0dXMgKi8NCkBAIC00MTMsNyAr NDE2LDcgQEAgc3RhdGljIGludCBtb2JpdmVpbF9wY2llX3BhcnNlX2R0KHN0cnVjdCBtb2JpdmVp bF9wY2llICpwY2llKQ0KIA0KIAkvKiBtYXAgY29uZmlnIHJlc291cmNlICovDQogCXJlcyA9IHBs YXRmb3JtX2dldF9yZXNvdXJjZV9ieW5hbWUocGRldiwgSU9SRVNPVVJDRV9NRU0sDQotCQkJImNv bmZpZ19heGlfc2xhdmUiKTsNCisJCQkJCSAgICJjb25maWdfYXhpX3NsYXZlIik7DQogCXBjaWUt PmNvbmZpZ19heGlfc2xhdmVfYmFzZSA9IGRldm1fcGNpX3JlbWFwX2NmZ19yZXNvdXJjZShkZXYs IHJlcyk7DQogCWlmIChJU19FUlIocGNpZS0+Y29uZmlnX2F4aV9zbGF2ZV9iYXNlKSkNCiAJCXJl dHVybiBQVFJfRVJSKHBjaWUtPmNvbmZpZ19heGlfc2xhdmVfYmFzZSk7DQpAQCAtNDIxLDcgKzQy NCw3IEBAIHN0YXRpYyBpbnQgbW9iaXZlaWxfcGNpZV9wYXJzZV9kdChzdHJ1Y3QgbW9iaXZlaWxf cGNpZSAqcGNpZSkNCiANCiAJLyogbWFwIGNzciByZXNvdXJjZSAqLw0KIAlyZXMgPSBwbGF0Zm9y bV9nZXRfcmVzb3VyY2VfYnluYW1lKHBkZXYsIElPUkVTT1VSQ0VfTUVNLA0KLQkJCSJjc3JfYXhp X3NsYXZlIik7DQorCQkJCQkgICAiY3NyX2F4aV9zbGF2ZSIpOw0KIAlwY2llLT5jc3JfYXhpX3Ns YXZlX2Jhc2UgPSBkZXZtX3BjaV9yZW1hcF9jZmdfcmVzb3VyY2UoZGV2LCByZXMpOw0KIAlpZiAo SVNfRVJSKHBjaWUtPmNzcl9heGlfc2xhdmVfYmFzZSkpDQogCQlyZXR1cm4gUFRSX0VSUihwY2ll LT5jc3JfYXhpX3NsYXZlX2Jhc2UpOw0KQEAgLTQ1Miw3ICs0NTUsNyBAQCBzdGF0aWMgaW50IG1v Yml2ZWlsX3BjaWVfcGFyc2VfZHQoc3RydWN0IG1vYml2ZWlsX3BjaWUgKnBjaWUpDQogfQ0KIA0K IHN0YXRpYyB2b2lkIHByb2dyYW1faWJfd2luZG93cyhzdHJ1Y3QgbW9iaXZlaWxfcGNpZSAqcGNp ZSwgaW50IHdpbl9udW0sDQotCQlpbnQgcGNpX2FkZHIsIHUzMiB0eXBlLCB1NjQgc2l6ZSkNCisJ CQkgICAgICAgaW50IHBjaV9hZGRyLCB1MzIgdHlwZSwgdTY0IHNpemUpDQogew0KIAlpbnQgcGlv X2N0cmxfdmFsOw0KIAlpbnQgYW1hcF9jdHJsX2R3Ow0KQEAgLTQ2NSwxOSArNDY4LDIwIEBAIHN0 YXRpYyB2b2lkIHByb2dyYW1faWJfd2luZG93cyhzdHJ1Y3QgbW9iaXZlaWxfcGNpZSAqcGNpZSwg aW50IHdpbl9udW0sDQogCX0NCiANCiAJcGlvX2N0cmxfdmFsID0gY3NyX3JlYWRsKHBjaWUsIFBB Ql9QRVhfUElPX0NUUkwpOw0KLQljc3Jfd3JpdGVsKHBjaWUsDQotCQlwaW9fY3RybF92YWwgfCAo MSA8PCBQSU9fRU5BQkxFX1NISUZUKSwgUEFCX1BFWF9QSU9fQ1RSTCk7DQotCWFtYXBfY3RybF9k dyA9IGNzcl9yZWFkbChwY2llLCBQQUJfUEVYX0FNQVBfQ1RSTCh3aW5fbnVtKSk7DQotCWFtYXBf Y3RybF9kdyA9IChhbWFwX2N0cmxfZHcgfCAodHlwZSA8PCBBTUFQX0NUUkxfVFlQRV9TSElGVCkp Ow0KLQlhbWFwX2N0cmxfZHcgPSAoYW1hcF9jdHJsX2R3IHwgKDEgPDwgQU1BUF9DVFJMX0VOX1NI SUZUKSk7DQorCXBpb19jdHJsX3ZhbCB8PSAxIDw8IFBJT19FTkFCTEVfU0hJRlQ7DQorCWNzcl93 cml0ZWwocGNpZSwgcGlvX2N0cmxfdmFsLCBQQUJfUEVYX1BJT19DVFJMKTsNCiANCi0JY3NyX3dy aXRlbChwY2llLCBhbWFwX2N0cmxfZHcgfCBsb3dlcl8zMl9iaXRzKHNpemU2NCksDQotCQkgICBQ QUJfUEVYX0FNQVBfQ1RSTCh3aW5fbnVtKSk7DQorCWFtYXBfY3RybF9kdyA9IGNzcl9yZWFkbChw Y2llLCBQQUJfUEVYX0FNQVBfQ1RSTCh3aW5fbnVtKSk7DQorCWFtYXBfY3RybF9kdyB8PSAodHlw ZSA8PCBBTUFQX0NUUkxfVFlQRV9TSElGVCkgfA0KKwkJCSgxIDw8IEFNQVBfQ1RSTF9FTl9TSElG VCkgfA0KKwkJCWxvd2VyXzMyX2JpdHMoc2l6ZTY0KTsNCisJY3NyX3dyaXRlbChwY2llLCBhbWFw X2N0cmxfZHcsIFBBQl9QRVhfQU1BUF9DVFJMKHdpbl9udW0pKTsNCiANCiAJY3NyX3dyaXRlbChw Y2llLCB1cHBlcl8zMl9iaXRzKHNpemU2NCksDQogCQkgICBQQUJfRVhUX1BFWF9BTUFQX1NJWkVO KHdpbl9udW0pKTsNCiANCiAJY3NyX3dyaXRlbChwY2llLCBwY2lfYWRkciwgUEFCX1BFWF9BTUFQ X0FYSV9XSU4od2luX251bSkpOw0KKw0KIAljc3Jfd3JpdGVsKHBjaWUsIHBjaV9hZGRyLCBQQUJf UEVYX0FNQVBfUEVYX1dJTl9MKHdpbl9udW0pKTsNCiAJY3NyX3dyaXRlbChwY2llLCAwLCBQQUJf UEVYX0FNQVBfUEVYX1dJTl9IKHdpbl9udW0pKTsNCiB9DQpAQCAtNDg2LDcgKzQ5MCw4IEBAIHN0 YXRpYyB2b2lkIHByb2dyYW1faWJfd2luZG93cyhzdHJ1Y3QgbW9iaXZlaWxfcGNpZSAqcGNpZSwg aW50IHdpbl9udW0sDQogICogcm91dGluZSB0byBwcm9ncmFtIHRoZSBvdXRib3VuZCB3aW5kb3dz DQogICovDQogc3RhdGljIHZvaWQgcHJvZ3JhbV9vYl93aW5kb3dzKHN0cnVjdCBtb2JpdmVpbF9w Y2llICpwY2llLCBpbnQgd2luX251bSwNCi0JCXU2NCBjcHVfYWRkciwgdTY0IHBjaV9hZGRyLCB1 MzIgY29uZmlnX2lvX2JpdCwgdTY0IHNpemUpDQorCQkJICAgICAgIHU2NCBjcHVfYWRkciwgdTY0 IHBjaV9hZGRyLA0KKwkJCSAgICAgICB1MzIgY29uZmlnX2lvX2JpdCwgdTY0IHNpemUpDQogew0K IA0KIAl1MzIgdmFsdWUsIHR5cGU7DQpAQCAtNTA1LDcgKzUxMCw3IEBAIHN0YXRpYyB2b2lkIHBy b2dyYW1fb2Jfd2luZG93cyhzdHJ1Y3QgbW9iaXZlaWxfcGNpZSAqcGNpZSwgaW50IHdpbl9udW0s DQogCXR5cGUgPSBjb25maWdfaW9fYml0Ow0KIAl2YWx1ZSA9IGNzcl9yZWFkbChwY2llLCBQQUJf QVhJX0FNQVBfQ1RSTCh3aW5fbnVtKSk7DQogCWNzcl93cml0ZWwocGNpZSwgMSA8PCBXSU5fRU5B QkxFX1NISUZUIHwgdHlwZSA8PCBXSU5fVFlQRV9TSElGVCB8DQotCQkJbG93ZXJfMzJfYml0cyhz aXplNjQpLCBQQUJfQVhJX0FNQVBfQ1RSTCh3aW5fbnVtKSk7DQorCQkgICBsb3dlcl8zMl9iaXRz KHNpemU2NCksIFBBQl9BWElfQU1BUF9DVFJMKHdpbl9udW0pKTsNCiANCiAJY3NyX3dyaXRlbChw Y2llLCB1cHBlcl8zMl9iaXRzKHNpemU2NCksIFBBQl9FWFRfQVhJX0FNQVBfU0laRSh3aW5fbnVt KSk7DQogDQpAQCAtNTE1LDE0ICs1MjAsMTQgQEAgc3RhdGljIHZvaWQgcHJvZ3JhbV9vYl93aW5k b3dzKHN0cnVjdCBtb2JpdmVpbF9wY2llICpwY2llLCBpbnQgd2luX251bSwNCiAJICovDQogCXZh bHVlID0gY3NyX3JlYWRsKHBjaWUsIFBBQl9BWElfQU1BUF9BWElfV0lOKHdpbl9udW0pKTsNCiAJ Y3NyX3dyaXRlbChwY2llLCBjcHVfYWRkciAmICh+QVhJX1dJTkRPV19BTElHTl9NQVNLKSwNCi0J CQlQQUJfQVhJX0FNQVBfQVhJX1dJTih3aW5fbnVtKSk7DQorCQkgICBQQUJfQVhJX0FNQVBfQVhJ X1dJTih3aW5fbnVtKSk7DQogDQogCXZhbHVlID0gY3NyX3JlYWRsKHBjaWUsIFBBQl9BWElfQU1B UF9QRVhfV0lOX0god2luX251bSkpOw0KIA0KIAljc3Jfd3JpdGVsKHBjaWUsIGxvd2VyXzMyX2Jp dHMocGNpX2FkZHIpLA0KLQkJCVBBQl9BWElfQU1BUF9QRVhfV0lOX0wod2luX251bSkpOw0KKwkJ ICAgUEFCX0FYSV9BTUFQX1BFWF9XSU5fTCh3aW5fbnVtKSk7DQogCWNzcl93cml0ZWwocGNpZSwg dXBwZXJfMzJfYml0cyhwY2lfYWRkciksDQotCQkJUEFCX0FYSV9BTUFQX1BFWF9XSU5fSCh3aW5f bnVtKSk7DQorCQkgICBQQUJfQVhJX0FNQVBfUEVYX1dJTl9IKHdpbl9udW0pKTsNCiANCiAJcGNp ZS0+b2Jfd2luc19jb25maWd1cmVkKys7DQogfQ0KQEAgLTUzOCw3ICs1NDMsOSBAQCBzdGF0aWMg aW50IG1vYml2ZWlsX2JyaW5ndXBfbGluayhzdHJ1Y3QgbW9iaXZlaWxfcGNpZSAqcGNpZSkNCiAN CiAJCXVzbGVlcF9yYW5nZShMSU5LX1dBSVRfTUlOLCBMSU5LX1dBSVRfTUFYKTsNCiAJfQ0KKw0K IAlkZXZfZXJyKCZwY2llLT5wZGV2LT5kZXYsICJsaW5rIG5ldmVyIGNhbWUgdXBcbiIpOw0KKw0K IAlyZXR1cm4gLUVUSU1FRE9VVDsNCiB9DQogDQpAQCAtNTUxLDE2ICs1NTgsMTYgQEAgc3RhdGlj IHZvaWQgbW9iaXZlaWxfcGNpZV9lbmFibGVfbXNpKHN0cnVjdCBtb2JpdmVpbF9wY2llICpwY2ll KQ0KIAltc2ktPm1zaV9wYWdlc19waHlzID0gKHBoeXNfYWRkcl90KW1zZ19hZGRyOw0KIA0KIAl3 cml0ZWxfcmVsYXhlZChsb3dlcl8zMl9iaXRzKG1zZ19hZGRyKSwNCi0JCXBjaWUtPmFwYl9jc3Jf YmFzZSArIE1TSV9CQVNFX0xPX09GRlNFVCk7DQorCQkgICAgICAgcGNpZS0+YXBiX2Nzcl9iYXNl ICsgTVNJX0JBU0VfTE9fT0ZGU0VUKTsNCiAJd3JpdGVsX3JlbGF4ZWQodXBwZXJfMzJfYml0cyht c2dfYWRkciksDQotCQlwY2llLT5hcGJfY3NyX2Jhc2UgKyBNU0lfQkFTRV9ISV9PRkZTRVQpOw0K KwkJICAgICAgIHBjaWUtPmFwYl9jc3JfYmFzZSArIE1TSV9CQVNFX0hJX09GRlNFVCk7DQogCXdy aXRlbF9yZWxheGVkKDQwOTYsIHBjaWUtPmFwYl9jc3JfYmFzZSArIE1TSV9TSVpFX09GRlNFVCk7 DQogCXdyaXRlbF9yZWxheGVkKDEsIHBjaWUtPmFwYl9jc3JfYmFzZSArIE1TSV9FTkFCTEVfT0ZG U0VUKTsNCiB9DQogDQogc3RhdGljIGludCBtb2JpdmVpbF9ob3N0X2luaXQoc3RydWN0IG1vYml2 ZWlsX3BjaWUgKnBjaWUpDQogew0KLQl1MzIgdmFsdWUsIHBhYl9jdHJsLCB0eXBlID0gMDsNCisJ dTMyIHZhbHVlLCBwYWJfY3RybCwgdHlwZTsNCiAJaW50IGVycjsNCiAJc3RydWN0IHJlc291cmNl X2VudHJ5ICp3aW4sICp0bXA7DQogDQpAQCAtNTc1LDI2ICs1ODIsMjcgQEAgc3RhdGljIGludCBt b2JpdmVpbF9ob3N0X2luaXQoc3RydWN0IG1vYml2ZWlsX3BjaWUgKnBjaWUpDQogCSAqIFNwYWNl DQogCSAqLw0KIAl2YWx1ZSA9IGNzcl9yZWFkbChwY2llLCBQQ0lfQ09NTUFORCk7DQotCWNzcl93 cml0ZWwocGNpZSwgdmFsdWUgfCBQQ0lfQ09NTUFORF9JTyB8IFBDSV9DT01NQU5EX01FTU9SWSB8 DQotCQlQQ0lfQ09NTUFORF9NQVNURVIsIFBDSV9DT01NQU5EKTsNCisJdmFsdWUgfD0gUENJX0NP TU1BTkRfSU8gfCBQQ0lfQ09NTUFORF9NRU1PUlkgfCBQQ0lfQ09NTUFORF9NQVNURVI7DQorCWNz cl93cml0ZWwocGNpZSwgdmFsdWUsIFBDSV9DT01NQU5EKTsNCiANCiAJLyoNCiAJICogcHJvZ3Jh bSBQSU8gRW5hYmxlIEJpdCB0byAxIChhbmQgUEVYIFBJTyBFbmFibGUgdG8gMSkgaW4gUEFCX0NU UkwNCiAJICogcmVnaXN0ZXINCiAJICovDQogCXBhYl9jdHJsID0gY3NyX3JlYWRsKHBjaWUsIFBB Ql9DVFJMKTsNCi0JY3NyX3dyaXRlbChwY2llLCBwYWJfY3RybCB8ICgxIDw8IEFNQkFfUElPX0VO QUJMRV9TSElGVCkgfA0KLQkJKDEgPDwgUEVYX1BJT19FTkFCTEVfU0hJRlQpLCBQQUJfQ1RSTCk7 DQorCXBhYl9jdHJsIHw9ICgxIDw8IEFNQkFfUElPX0VOQUJMRV9TSElGVCkgfCAoMSA8PCBQRVhf UElPX0VOQUJMRV9TSElGVCk7DQorCWNzcl93cml0ZWwocGNpZSwgcGFiX2N0cmwsIFBBQl9DVFJM KTsNCiANCiAJY3NyX3dyaXRlbChwY2llLCAoUEFCX0lOVFBfSU5UWF9NQVNLIHwgUEFCX0lOVFBf TVNJX01BU0spLA0KLQkJUEFCX0lOVFBfQU1CQV9NSVNDX0VOQik7DQorCQkgICBQQUJfSU5UUF9B TUJBX01JU0NfRU5CKTsNCiANCiAJLyoNCiAJICogcHJvZ3JhbSBQSU8gRW5hYmxlIEJpdCB0byAx IGFuZCBDb25maWcgV2luZG93IEVuYWJsZSBCaXQgdG8gMSBpbg0KIAkgKiBQQUJfQVhJX1BJT19D VFJMIFJlZ2lzdGVyDQogCSAqLw0KIAl2YWx1ZSA9IGNzcl9yZWFkbChwY2llLCBQQUJfQVhJX1BJ T19DVFJMKTsNCi0JY3NyX3dyaXRlbChwY2llLCB2YWx1ZSB8IEFQSU9fRU5fTUFTSywgUEFCX0FY SV9QSU9fQ1RSTCk7DQorCXZhbHVlIHw9IEFQSU9fRU5fTUFTSzsNCisJY3NyX3dyaXRlbChwY2ll LCB2YWx1ZSwgUEFCX0FYSV9QSU9fQ1RSTCk7DQogDQogCS8qDQogCSAqIHdlJ2xsIHByb2dyYW0g b25lIG91dGJvdW5kIHdpbmRvdyBmb3IgY29uZmlnIHJlYWRzIGFuZA0KQEAgLTYwNSwyNSArNjEz LDI1IEBAIHN0YXRpYyBpbnQgbW9iaXZlaWxfaG9zdF9pbml0KHN0cnVjdCBtb2JpdmVpbF9wY2ll ICpwY2llKQ0KIA0KIAkvKiBjb25maWcgb3V0Ym91bmQgdHJhbnNsYXRpb24gd2luZG93ICovDQog CXByb2dyYW1fb2Jfd2luZG93cyhwY2llLCBwY2llLT5vYl93aW5zX2NvbmZpZ3VyZWQsDQotCQkJ cGNpZS0+b2JfaW9fcmVzLT5zdGFydCwgMCwgQ0ZHX1dJTkRPV19UWVBFLA0KLQkJCXJlc291cmNl X3NpemUocGNpZS0+b2JfaW9fcmVzKSk7DQorCQkJICAgcGNpZS0+b2JfaW9fcmVzLT5zdGFydCwg MCwgQ0ZHX1dJTkRPV19UWVBFLA0KKwkJCSAgIHJlc291cmNlX3NpemUocGNpZS0+b2JfaW9fcmVz KSk7DQogDQogCS8qIG1lbW9yeSBpbmJvdW5kIHRyYW5zbGF0aW9uIHdpbmRvdyAqLw0KIAlwcm9n cmFtX2liX3dpbmRvd3MocGNpZSwgV0lOX05VTV8xLCAwLCBNRU1fV0lORE9XX1RZUEUsIElCX1dJ Tl9TSVpFKTsNCiANCiAJLyogR2V0IHRoZSBJL08gYW5kIG1lbW9yeSByYW5nZXMgZnJvbSBEVCAq Lw0KIAlyZXNvdXJjZV9saXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUod2luLCB0bXAsICZwY2llLT5y ZXNvdXJjZXMpIHsNCi0JCXR5cGUgPSAwOw0KIAkJaWYgKHJlc291cmNlX3R5cGUod2luLT5yZXMp ID09IElPUkVTT1VSQ0VfTUVNKQ0KIAkJCXR5cGUgPSBNRU1fV0lORE9XX1RZUEU7DQotCQlpZiAo cmVzb3VyY2VfdHlwZSh3aW4tPnJlcykgPT0gSU9SRVNPVVJDRV9JTykNCisJCWVsc2UgaWYgKHJl c291cmNlX3R5cGUod2luLT5yZXMpID09IElPUkVTT1VSQ0VfSU8pDQogCQkJdHlwZSA9IElPX1dJ TkRPV19UWVBFOw0KLQkJaWYgKHR5cGUpIHsNCi0JCQkvKiBjb25maWd1cmUgb3V0Ym91bmQgdHJh bnNsYXRpb24gd2luZG93ICovDQotCQkJcHJvZ3JhbV9vYl93aW5kb3dzKHBjaWUsIHBjaWUtPm9i X3dpbnNfY29uZmlndXJlZCwNCi0JCQkJd2luLT5yZXMtPnN0YXJ0LCAwLCB0eXBlLA0KLQkJCQly ZXNvdXJjZV9zaXplKHdpbi0+cmVzKSk7DQotCQl9DQorCQllbHNlDQorCQkJY29udGludWU7DQor DQorCQkvKiBjb25maWd1cmUgb3V0Ym91bmQgdHJhbnNsYXRpb24gd2luZG93ICovDQorCQlwcm9n cmFtX29iX3dpbmRvd3MocGNpZSwgcGNpZS0+b2Jfd2luc19jb25maWd1cmVkLA0KKwkJCQkgICB3 aW4tPnJlcy0+c3RhcnQsIDAsIHR5cGUsDQorCQkJCSAgIHJlc291cmNlX3NpemUod2luLT5yZXMp KTsNCiAJfQ0KIA0KIAkvKiBzZXR1cCBNU0kgaGFyZHdhcmUgcmVnaXN0ZXJzICovDQpAQCAtNjQz LDcgKzY1MSw4IEBAIHN0YXRpYyB2b2lkIG1vYml2ZWlsX21hc2tfaW50eF9pcnEoc3RydWN0IGly cV9kYXRhICpkYXRhKQ0KIAltYXNrID0gMSA8PCAoKGRhdGEtPmh3aXJxICsgUEFCX0lOVFhfU1RB UlQpIC0gMSk7DQogCXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmcGNpZS0+aW50eF9tYXNrX2xvY2ss IGZsYWdzKTsNCiAJc2hpZnRlZF92YWwgPSBjc3JfcmVhZGwocGNpZSwgUEFCX0lOVFBfQU1CQV9N SVNDX0VOQik7DQotCWNzcl93cml0ZWwocGNpZSwgKHNoaWZ0ZWRfdmFsICYgKH5tYXNrKSksIFBB Ql9JTlRQX0FNQkFfTUlTQ19FTkIpOw0KKwlzaGlmdGVkX3ZhbCAmPSB+bWFzazsNCisJY3NyX3dy aXRlbChwY2llLCBzaGlmdGVkX3ZhbCwgUEFCX0lOVFBfQU1CQV9NSVNDX0VOQik7DQogCXJhd19z cGluX3VubG9ja19pcnFyZXN0b3JlKCZwY2llLT5pbnR4X21hc2tfbG9jaywgZmxhZ3MpOw0KIH0N CiANCkBAIC02NTgsNyArNjY3LDggQEAgc3RhdGljIHZvaWQgbW9iaXZlaWxfdW5tYXNrX2ludHhf aXJxKHN0cnVjdCBpcnFfZGF0YSAqZGF0YSkNCiAJbWFzayA9IDEgPDwgKChkYXRhLT5od2lycSAr IFBBQl9JTlRYX1NUQVJUKSAtIDEpOw0KIAlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJnBjaWUtPmlu dHhfbWFza19sb2NrLCBmbGFncyk7DQogCXNoaWZ0ZWRfdmFsID0gY3NyX3JlYWRsKHBjaWUsIFBB Ql9JTlRQX0FNQkFfTUlTQ19FTkIpOw0KLQljc3Jfd3JpdGVsKHBjaWUsIChzaGlmdGVkX3ZhbCB8 IG1hc2spLCBQQUJfSU5UUF9BTUJBX01JU0NfRU5CKTsNCisJc2hpZnRlZF92YWwgfD0gbWFzazsN CisJY3NyX3dyaXRlbChwY2llLCBzaGlmdGVkX3ZhbCwgUEFCX0lOVFBfQU1CQV9NSVNDX0VOQik7 DQogCXJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKCZwY2llLT5pbnR4X21hc2tfbG9jaywgZmxh Z3MpOw0KIH0NCiANCkBAIC02NzIsMTAgKzY4MiwxMSBAQCBzdGF0aWMgc3RydWN0IGlycV9jaGlw IGludHhfaXJxX2NoaXAgPSB7DQogDQogLyogcm91dGluZSB0byBzZXR1cCB0aGUgSU5UeCByZWxh dGVkIGRhdGEgKi8NCiBzdGF0aWMgaW50IG1vYml2ZWlsX3BjaWVfaW50eF9tYXAoc3RydWN0IGly cV9kb21haW4gKmRvbWFpbiwgdW5zaWduZWQgaW50IGlycSwNCi0JCWlycV9od19udW1iZXJfdCBo d2lycSkNCisJCQkJICBpcnFfaHdfbnVtYmVyX3QgaHdpcnEpDQogew0KIAlpcnFfc2V0X2NoaXBf YW5kX2hhbmRsZXIoaXJxLCAmaW50eF9pcnFfY2hpcCwgaGFuZGxlX2xldmVsX2lycSk7DQogCWly cV9zZXRfY2hpcF9kYXRhKGlycSwgZG9tYWluLT5ob3N0X2RhdGEpOw0KKw0KIAlyZXR1cm4gMDsN CiB9DQogDQpAQCAtNjkyLDcgKzcwMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgaXJxX2NoaXAgbW9iaXZl aWxfbXNpX2lycV9jaGlwID0gew0KIA0KIHN0YXRpYyBzdHJ1Y3QgbXNpX2RvbWFpbl9pbmZvIG1v Yml2ZWlsX21zaV9kb21haW5faW5mbyA9IHsNCiAJLmZsYWdzCT0gKE1TSV9GTEFHX1VTRV9ERUZf RE9NX09QUyB8IE1TSV9GTEFHX1VTRV9ERUZfQ0hJUF9PUFMgfA0KLQkJTVNJX0ZMQUdfTVVMVElf UENJX01TSSB8IE1TSV9GTEFHX1BDSV9NU0lYKSwNCisJCSAgIE1TSV9GTEFHX01VTFRJX1BDSV9N U0kgfCBNU0lfRkxBR19QQ0lfTVNJWCksDQogCS5jaGlwCT0gJm1vYml2ZWlsX21zaV9pcnFfY2hp cCwNCiB9Ow0KIA0KQEAgLTcxMCw3ICs3MjEsNyBAQCBzdGF0aWMgdm9pZCBtb2JpdmVpbF9jb21w b3NlX21zaV9tc2coc3RydWN0IGlycV9kYXRhICpkYXRhLCBzdHJ1Y3QgbXNpX21zZyAqbXNnKQ0K IH0NCiANCiBzdGF0aWMgaW50IG1vYml2ZWlsX21zaV9zZXRfYWZmaW5pdHkoc3RydWN0IGlycV9k YXRhICppcnFfZGF0YSwNCi0JCWNvbnN0IHN0cnVjdCBjcHVtYXNrICptYXNrLCBib29sIGZvcmNl KQ0KKwkJCQkgICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICptYXNrLCBib29sIGZvcmNlKQ0KIHsN CiAJcmV0dXJuIC1FSU5WQUw7DQogfQ0KQEAgLTcyMiw3ICs3MzMsOCBAQCBzdGF0aWMgc3RydWN0 IGlycV9jaGlwIG1vYml2ZWlsX21zaV9ib3R0b21faXJxX2NoaXAgPSB7DQogfTsNCiANCiBzdGF0 aWMgaW50IG1vYml2ZWlsX2lycV9tc2lfZG9tYWluX2FsbG9jKHN0cnVjdCBpcnFfZG9tYWluICpk b21haW4sDQotCQl1bnNpZ25lZCBpbnQgdmlycSwgdW5zaWduZWQgaW50IG5yX2lycXMsIHZvaWQg KmFyZ3MpDQorCQkJCQkgdW5zaWduZWQgaW50IHZpcnEsDQorCQkJCQkgdW5zaWduZWQgaW50IG5y X2lycXMsIHZvaWQgKmFyZ3MpDQogew0KIAlzdHJ1Y3QgbW9iaXZlaWxfcGNpZSAqcGNpZSA9IGRv bWFpbi0+aG9zdF9kYXRhOw0KIAlzdHJ1Y3QgbW9iaXZlaWxfbXNpICptc2kgPSAmcGNpZS0+bXNp Ow0KQEAgLTc0MiwxMyArNzU0LDEzIEBAIHN0YXRpYyBpbnQgbW9iaXZlaWxfaXJxX21zaV9kb21h aW5fYWxsb2Moc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwNCiAJbXV0ZXhfdW5sb2NrKCZtc2kt PmxvY2spOw0KIA0KIAlpcnFfZG9tYWluX3NldF9pbmZvKGRvbWFpbiwgdmlycSwgYml0LCAmbW9i aXZlaWxfbXNpX2JvdHRvbV9pcnFfY2hpcCwNCi0JCQkJZG9tYWluLT5ob3N0X2RhdGEsIGhhbmRs ZV9sZXZlbF9pcnEsDQotCQkJCU5VTEwsIE5VTEwpOw0KKwkJCSAgICBkb21haW4tPmhvc3RfZGF0 YSwgaGFuZGxlX2xldmVsX2lycSwgTlVMTCwgTlVMTCk7DQogCXJldHVybiAwOw0KIH0NCiANCiBz dGF0aWMgdm9pZCBtb2JpdmVpbF9pcnFfbXNpX2RvbWFpbl9mcmVlKHN0cnVjdCBpcnFfZG9tYWlu ICpkb21haW4sDQotCQl1bnNpZ25lZCBpbnQgdmlycSwgdW5zaWduZWQgaW50IG5yX2lycXMpDQor CQkJCQkgdW5zaWduZWQgaW50IHZpcnEsDQorCQkJCQkgdW5zaWduZWQgaW50IG5yX2lycXMpDQog ew0KIAlzdHJ1Y3QgaXJxX2RhdGEgKmQgPSBpcnFfZG9tYWluX2dldF9pcnFfZGF0YShkb21haW4s IHZpcnEpOw0KIAlzdHJ1Y3QgbW9iaXZlaWxfcGNpZSAqcGNpZSA9IGlycV9kYXRhX2dldF9pcnFf Y2hpcF9kYXRhKGQpOw0KQEAgLTc1NiwxMiArNzY4LDExIEBAIHN0YXRpYyB2b2lkIG1vYml2ZWls X2lycV9tc2lfZG9tYWluX2ZyZWUoc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwNCiANCiAJbXV0 ZXhfbG9jaygmbXNpLT5sb2NrKTsNCiANCi0JaWYgKCF0ZXN0X2JpdChkLT5od2lycSwgbXNpLT5t c2lfaXJxX2luX3VzZSkpIHsNCisJaWYgKCF0ZXN0X2JpdChkLT5od2lycSwgbXNpLT5tc2lfaXJx X2luX3VzZSkpDQogCQlkZXZfZXJyKCZwY2llLT5wZGV2LT5kZXYsICJ0cnlpbmcgdG8gZnJlZSB1 bnVzZWQgTVNJIyVsdVxuIiwNCiAJCQlkLT5od2lycSk7DQotCX0gZWxzZSB7DQorCWVsc2UNCiAJ CV9fY2xlYXJfYml0KGQtPmh3aXJxLCBtc2ktPm1zaV9pcnFfaW5fdXNlKTsNCi0JfQ0KIA0KIAlt dXRleF91bmxvY2soJm1zaS0+bG9jayk7DQogfQ0KQEAgLTc4NSwxMiArNzk2LDE0IEBAIHN0YXRp YyBpbnQgbW9iaXZlaWxfYWxsb2NhdGVfbXNpX2RvbWFpbnMoc3RydWN0IG1vYml2ZWlsX3BjaWUg KnBjaWUpDQogCX0NCiANCiAJbXNpLT5tc2lfZG9tYWluID0gcGNpX21zaV9jcmVhdGVfaXJxX2Rv bWFpbihmd25vZGUsDQotCQkJCSZtb2JpdmVpbF9tc2lfZG9tYWluX2luZm8sIG1zaS0+ZGV2X2Rv bWFpbik7DQorCQkJCQkJICAgICZtb2JpdmVpbF9tc2lfZG9tYWluX2luZm8sDQorCQkJCQkJICAg IG1zaS0+ZGV2X2RvbWFpbik7DQogCWlmICghbXNpLT5tc2lfZG9tYWluKSB7DQogCQlkZXZfZXJy KGRldiwgImZhaWxlZCB0byBjcmVhdGUgTVNJIGRvbWFpblxuIik7DQogCQlpcnFfZG9tYWluX3Jl bW92ZShtc2ktPmRldl9kb21haW4pOw0KIAkJcmV0dXJuIC1FTk9NRU07DQogCX0NCisNCiAJcmV0 dXJuIDA7DQogfQ0KIA0KQEAgLTgwMSw4ICs4MTQsOCBAQCBzdGF0aWMgaW50IG1vYml2ZWlsX3Bj aWVfaW5pdF9pcnFfZG9tYWluKHN0cnVjdCBtb2JpdmVpbF9wY2llICpwY2llKQ0KIAlpbnQgcmV0 Ow0KIA0KIAkvKiBzZXR1cCBJTlR4ICovDQotCXBjaWUtPmludHhfZG9tYWluID0gaXJxX2RvbWFp bl9hZGRfbGluZWFyKG5vZGUsDQotCQkJCVBDSV9OVU1fSU5UWCwgJmludHhfZG9tYWluX29wcywg cGNpZSk7DQorCXBjaWUtPmludHhfZG9tYWluID0gaXJxX2RvbWFpbl9hZGRfbGluZWFyKG5vZGUs IFBDSV9OVU1fSU5UWCwNCisJCQkJCQkgICZpbnR4X2RvbWFpbl9vcHMsIHBjaWUpOw0KIA0KIAlp ZiAoIXBjaWUtPmludHhfZG9tYWluKSB7DQogCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBnZXQg YSBJTlR4IElSUSBkb21haW5cbiIpOw0KQEAgLTkxNywxMCArOTMwLDEwIEBAIE1PRFVMRV9ERVZJ Q0VfVEFCTEUob2YsIG1vYml2ZWlsX3BjaWVfb2ZfbWF0Y2gpOw0KIHN0YXRpYyBzdHJ1Y3QgcGxh dGZvcm1fZHJpdmVyIG1vYml2ZWlsX3BjaWVfZHJpdmVyID0gew0KIAkucHJvYmUgPSBtb2JpdmVp bF9wY2llX3Byb2JlLA0KIAkuZHJpdmVyID0gew0KLQkJCS5uYW1lID0gIm1vYml2ZWlsLXBjaWUi LA0KLQkJCS5vZl9tYXRjaF90YWJsZSA9IG1vYml2ZWlsX3BjaWVfb2ZfbWF0Y2gsDQotCQkJLnN1 cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLA0KLQkJfSwNCisJCS5uYW1lID0gIm1vYml2ZWlsLXBj aWUiLA0KKwkJLm9mX21hdGNoX3RhYmxlID0gbW9iaXZlaWxfcGNpZV9vZl9tYXRjaCwNCisJCS5z dXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZSwNCisJfSwNCiB9Ow0KIA0KIGJ1aWx0aW5fcGxhdGZv cm1fZHJpdmVyKG1vYml2ZWlsX3BjaWVfZHJpdmVyKTsNCi0tIA0KMi4xNy4xDQoNCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Z.q. Hou" Subject: [PATCHv5 02/20] PCI: mobiveil: Format the code without functionality change Date: Fri, 12 Apr 2019 08:35:24 +0000 Message-ID: <20190412083635.33626-3-Zhiqiang.Hou@nxp.com> References: <20190412083635.33626-1-Zhiqiang.Hou@nxp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190412083635.33626-1-Zhiqiang.Hou@nxp.com> Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org To: "linux-pci@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "bhelgaas@google.com" , "robh+dt@kernel.org" , "mark.rutland@arm.com" , "l.subrahmanya@mobiveil.co.in" , "shawnguo@kernel.org" , Leo Li , "lorenzo.pieralisi@arm.com" , "catalin.marinas@arm.com" , "will.deacon@arm.com" Cc: Mingkai Hu , "M.h. Lian" , Xiaowei Bao , "Z.q. Hou" List-Id: devicetree@vger.kernel.org RnJvbTogSG91IFpoaXFpYW5nIDxaaGlxaWFuZy5Ib3VAbnhwLmNvbT4NCg0KSnVzdCBmb3JtYXQg dGhlIGNvZGUgd2l0aG91dCBmdW5jdGlvbmFsaXR5IGNoYW5nZS4NCg0KU2lnbmVkLW9mZi1ieTog SG91IFpoaXFpYW5nIDxaaGlxaWFuZy5Ib3VAbnhwLmNvbT4NClJldmlld2VkLWJ5OiBNaW5naHVh biBMaWFuIDxNaW5naHVhbi5MaWFuQG54cC5jb20+DQotLS0NClY1Og0KIC0gUmV0b3VjaGVkIHRo ZSBzdWJqZWN0Lg0KDQogZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLW1vYml2ZWlsLmMgfCAy NjEgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQ0KIDEgZmlsZSBjaGFuZ2VkLCAxMzcgaW5zZXJ0 aW9ucygrKSwgMTI0IGRlbGV0aW9ucygtKQ0KDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvY29u dHJvbGxlci9wY2llLW1vYml2ZWlsLmMgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtbW9i aXZlaWwuYw0KaW5kZXggZDU1YzdlNzgwYzZlLi5iODc0NzFmMDhhNDAgMTAwNjQ0DQotLS0gYS9k cml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtbW9iaXZlaWwuYw0KKysrIGIvZHJpdmVycy9wY2kv Y29udHJvbGxlci9wY2llLW1vYml2ZWlsLmMNCkBAIC0zMSwzOCArMzEsNDAgQEANCiAgKiB0cmFu c2xhdGlvbiB0YWJsZXMgYXJlIGdyb3VwZWQgaW50byB3aW5kb3dzLCBlYWNoIHdpbmRvdyByZWdp c3RlcnMgYXJlDQogICogZ3JvdXBlZCBpbnRvIGJsb2NrcyBvZiA0IG9yIDE2IHJlZ2lzdGVycyBl YWNoDQogICovDQotI2RlZmluZSBQQUJfUkVHX0JMT0NLX1NJWkUJMTYNCi0jZGVmaW5lIFBBQl9F WFRfUkVHX0JMT0NLX1NJWkUJNA0KKyNkZWZpbmUgUEFCX1JFR19CTE9DS19TSVpFCQkxNg0KKyNk ZWZpbmUgUEFCX0VYVF9SRUdfQkxPQ0tfU0laRQkJNA0KIA0KLSNkZWZpbmUgUEFCX1JFR19BRERS KG9mZnNldCwgd2luKSAob2Zmc2V0ICsgKHdpbiAqIFBBQl9SRUdfQkxPQ0tfU0laRSkpDQotI2Rl ZmluZSBQQUJfRVhUX1JFR19BRERSKG9mZnNldCwgd2luKSAob2Zmc2V0ICsgKHdpbiAqIFBBQl9F WFRfUkVHX0JMT0NLX1NJWkUpKQ0KKyNkZWZpbmUgUEFCX1JFR19BRERSKG9mZnNldCwgd2luKQlc DQorCShvZmZzZXQgKyAod2luICogUEFCX1JFR19CTE9DS19TSVpFKSkNCisjZGVmaW5lIFBBQl9F WFRfUkVHX0FERFIob2Zmc2V0LCB3aW4pCVwNCisJKG9mZnNldCArICh3aW4gKiBQQUJfRVhUX1JF R19CTE9DS19TSVpFKSkNCiANCi0jZGVmaW5lIExUU1NNX1NUQVRVUwkJMHgwNDA0DQotI2RlZmlu ZSAgTFRTU01fU1RBVFVTX0wwX01BU0sJMHgzZg0KLSNkZWZpbmUgIExUU1NNX1NUQVRVU19MMAkw eDJkDQorI2RlZmluZSBMVFNTTV9TVEFUVVMJCQkweDA0MDQNCisjZGVmaW5lICBMVFNTTV9TVEFU VVNfTDBfTUFTSwkJMHgzZg0KKyNkZWZpbmUgIExUU1NNX1NUQVRVU19MMAkJMHgyZA0KIA0KLSNk ZWZpbmUgUEFCX0NUUkwJCTB4MDgwOA0KLSNkZWZpbmUgIEFNQkFfUElPX0VOQUJMRV9TSElGVAkw DQotI2RlZmluZSAgUEVYX1BJT19FTkFCTEVfU0hJRlQJMQ0KLSNkZWZpbmUgIFBBR0VfU0VMX1NI SUZUCTEzDQotI2RlZmluZSAgUEFHRV9TRUxfTUFTSwkJMHgzZg0KLSNkZWZpbmUgIFBBR0VfTE9f TUFTSwkJMHgzZmYNCi0jZGVmaW5lICBQQUdFX1NFTF9PRkZTRVRfU0hJRlQJMTANCisjZGVmaW5l IFBBQl9DVFJMCQkJMHgwODA4DQorI2RlZmluZSAgQU1CQV9QSU9fRU5BQkxFX1NISUZUCQkwDQor I2RlZmluZSAgUEVYX1BJT19FTkFCTEVfU0hJRlQJCTENCisjZGVmaW5lICBQQUdFX1NFTF9TSElG VAkJCTEzDQorI2RlZmluZSAgUEFHRV9TRUxfTUFTSwkJCTB4M2YNCisjZGVmaW5lICBQQUdFX0xP X01BU0sJCQkweDNmZg0KKyNkZWZpbmUgIFBBR0VfU0VMX09GRlNFVF9TSElGVAkJMTANCiANCi0j ZGVmaW5lIFBBQl9BWElfUElPX0NUUkwJMHgwODQwDQotI2RlZmluZSAgQVBJT19FTl9NQVNLCQkw eGYNCisjZGVmaW5lIFBBQl9BWElfUElPX0NUUkwJCTB4MDg0MA0KKyNkZWZpbmUgIEFQSU9fRU5f TUFTSwkJCTB4Zg0KIA0KLSNkZWZpbmUgUEFCX1BFWF9QSU9fQ1RSTAkweDA4YzANCi0jZGVmaW5l ICBQSU9fRU5BQkxFX1NISUZUCTANCisjZGVmaW5lIFBBQl9QRVhfUElPX0NUUkwJCTB4MDhjMA0K KyNkZWZpbmUgIFBJT19FTkFCTEVfU0hJRlQJCTANCiANCiAjZGVmaW5lIFBBQl9JTlRQX0FNQkFf TUlTQ19FTkIJCTB4MGIwYw0KLSNkZWZpbmUgUEFCX0lOVFBfQU1CQV9NSVNDX1NUQVQJMHgwYjFj DQorI2RlZmluZSBQQUJfSU5UUF9BTUJBX01JU0NfU1RBVAkJMHgwYjFjDQogI2RlZmluZSAgUEFC X0lOVFBfSU5UWF9NQVNLCQkweDAxZTANCiAjZGVmaW5lICBQQUJfSU5UUF9NU0lfTUFTSwkJMHg4 DQogDQotI2RlZmluZSBQQUJfQVhJX0FNQVBfQ1RSTCh3aW4pCVBBQl9SRUdfQUREUigweDBiYTAs IHdpbikNCi0jZGVmaW5lICBXSU5fRU5BQkxFX1NISUZUCTANCi0jZGVmaW5lICBXSU5fVFlQRV9T SElGVAkxDQorI2RlZmluZSBQQUJfQVhJX0FNQVBfQ1RSTCh3aW4pCQlQQUJfUkVHX0FERFIoMHgw YmEwLCB3aW4pDQorI2RlZmluZSAgV0lOX0VOQUJMRV9TSElGVAkJMA0KKyNkZWZpbmUgIFdJTl9U WVBFX1NISUZUCQkJMQ0KIA0KICNkZWZpbmUgUEFCX0VYVF9BWElfQU1BUF9TSVpFKHdpbikJUEFC X0VYVF9SRUdfQUREUigweGJhZjAsIHdpbikNCiANCkBAIC03MCwxNiArNzIsMTYgQEANCiAjZGVm aW5lICBBWElfV0lORE9XX0FMSUdOX01BU0sJCTMNCiANCiAjZGVmaW5lIFBBQl9BWElfQU1BUF9Q RVhfV0lOX0wod2luKQlQQUJfUkVHX0FERFIoMHgwYmE4LCB3aW4pDQotI2RlZmluZSAgUEFCX0JV U19TSElGVAkJMjQNCi0jZGVmaW5lICBQQUJfREVWSUNFX1NISUZUCTE5DQotI2RlZmluZSAgUEFC X0ZVTkNUSU9OX1NISUZUCTE2DQorI2RlZmluZSAgUEFCX0JVU19TSElGVAkJCTI0DQorI2RlZmlu ZSAgUEFCX0RFVklDRV9TSElGVAkJMTkNCisjZGVmaW5lICBQQUJfRlVOQ1RJT05fU0hJRlQJCTE2 DQogDQogI2RlZmluZSBQQUJfQVhJX0FNQVBfUEVYX1dJTl9IKHdpbikJUEFCX1JFR19BRERSKDB4 MGJhYywgd2luKQ0KICNkZWZpbmUgUEFCX0lOVFBfQVhJX1BJT19DTEFTUwkJMHg0NzQNCiANCi0j ZGVmaW5lIFBBQl9QRVhfQU1BUF9DVFJMKHdpbikJUEFCX1JFR19BRERSKDB4NGJhMCwgd2luKQ0K LSNkZWZpbmUgIEFNQVBfQ1RSTF9FTl9TSElGVAkwDQotI2RlZmluZSAgQU1BUF9DVFJMX1RZUEVf U0hJRlQJMQ0KKyNkZWZpbmUgUEFCX1BFWF9BTUFQX0NUUkwod2luKQkJUEFCX1JFR19BRERSKDB4 NGJhMCwgd2luKQ0KKyNkZWZpbmUgIEFNQVBfQ1RSTF9FTl9TSElGVAkJMA0KKyNkZWZpbmUgIEFN QVBfQ1RSTF9UWVBFX1NISUZUCQkxDQogDQogI2RlZmluZSBQQUJfRVhUX1BFWF9BTUFQX1NJWkVO KHdpbikJUEFCX0VYVF9SRUdfQUREUigweGJlZjAsIHdpbikNCiAjZGVmaW5lIFBBQl9QRVhfQU1B UF9BWElfV0lOKHdpbikJUEFCX1JFR19BRERSKDB4NGJhNCwgd2luKQ0KQEAgLTg3LDM5ICs4OSwz OSBAQA0KICNkZWZpbmUgUEFCX1BFWF9BTUFQX1BFWF9XSU5fSCh3aW4pCVBBQl9SRUdfQUREUigw eDRiYWMsIHdpbikNCiANCiAvKiBzdGFydGluZyBvZmZzZXQgb2YgSU5UWCBiaXRzIGluIHN0YXR1 cyByZWdpc3RlciAqLw0KLSNkZWZpbmUgUEFCX0lOVFhfU1RBUlQJNQ0KKyNkZWZpbmUgUEFCX0lO VFhfU1RBUlQJCQk1DQogDQogLyogc3VwcG9ydGVkIG51bWJlciBvZiBNU0kgaW50ZXJydXB0cyAq Lw0KLSNkZWZpbmUgUENJX05VTV9NU0kJMTYNCisjZGVmaW5lIFBDSV9OVU1fTVNJCQkJMTYNCiAN CiAvKiBNU0kgcmVnaXN0ZXJzICovDQotI2RlZmluZSBNU0lfQkFTRV9MT19PRkZTRVQJMHgwNA0K LSNkZWZpbmUgTVNJX0JBU0VfSElfT0ZGU0VUCTB4MDgNCi0jZGVmaW5lIE1TSV9TSVpFX09GRlNF VAkweDBjDQotI2RlZmluZSBNU0lfRU5BQkxFX09GRlNFVAkweDE0DQotI2RlZmluZSBNU0lfU1RB VFVTX09GRlNFVAkweDE4DQotI2RlZmluZSBNU0lfREFUQV9PRkZTRVQJMHgyMA0KLSNkZWZpbmUg TVNJX0FERFJfTF9PRkZTRVQJMHgyNA0KLSNkZWZpbmUgTVNJX0FERFJfSF9PRkZTRVQJMHgyOA0K KyNkZWZpbmUgTVNJX0JBU0VfTE9fT0ZGU0VUCQkweDA0DQorI2RlZmluZSBNU0lfQkFTRV9ISV9P RkZTRVQJCTB4MDgNCisjZGVmaW5lIE1TSV9TSVpFX09GRlNFVAkJCTB4MGMNCisjZGVmaW5lIE1T SV9FTkFCTEVfT0ZGU0VUCQkweDE0DQorI2RlZmluZSBNU0lfU1RBVFVTX09GRlNFVAkJMHgxOA0K KyNkZWZpbmUgTVNJX0RBVEFfT0ZGU0VUCQkJMHgyMA0KKyNkZWZpbmUgTVNJX0FERFJfTF9PRkZT RVQJCTB4MjQNCisjZGVmaW5lIE1TSV9BRERSX0hfT0ZGU0VUCQkweDI4DQogDQogLyogb3V0Ym91 bmQgYW5kIGluYm91bmQgd2luZG93IGRlZmluaXRpb25zICovDQotI2RlZmluZSBXSU5fTlVNXzAJ CTANCi0jZGVmaW5lIFdJTl9OVU1fMQkJMQ0KLSNkZWZpbmUgQ0ZHX1dJTkRPV19UWVBFCTANCi0j ZGVmaW5lIElPX1dJTkRPV19UWVBFCQkxDQotI2RlZmluZSBNRU1fV0lORE9XX1RZUEUJMg0KLSNk ZWZpbmUgSUJfV0lOX1NJWkUJCSgodTY0KTI1NiAqIDEwMjQgKiAxMDI0ICogMTAyNCkNCi0jZGVm aW5lIE1BWF9QSU9fV0lORE9XUwk4DQorI2RlZmluZSBXSU5fTlVNXzAJCQkwDQorI2RlZmluZSBX SU5fTlVNXzEJCQkxDQorI2RlZmluZSBDRkdfV0lORE9XX1RZUEUJCQkwDQorI2RlZmluZSBJT19X SU5ET1dfVFlQRQkJCTENCisjZGVmaW5lIE1FTV9XSU5ET1dfVFlQRQkJCTINCisjZGVmaW5lIElC X1dJTl9TSVpFCQkJKCh1NjQpMjU2ICogMTAyNCAqIDEwMjQgKiAxMDI0KQ0KKyNkZWZpbmUgTUFY X1BJT19XSU5ET1dTCQkJOA0KIA0KIC8qIFBhcmFtZXRlcnMgZm9yIHRoZSB3YWl0aW5nIGZvciBs aW5rIHVwIHJvdXRpbmUgKi8NCi0jZGVmaW5lIExJTktfV0FJVF9NQVhfUkVUUklFUwkxMA0KLSNk ZWZpbmUgTElOS19XQUlUX01JTgk5MDAwMA0KLSNkZWZpbmUgTElOS19XQUlUX01BWAkxMDAwMDAN CisjZGVmaW5lIExJTktfV0FJVF9NQVhfUkVUUklFUwkJMTANCisjZGVmaW5lIExJTktfV0FJVF9N SU4JCQk5MDAwMA0KKyNkZWZpbmUgTElOS19XQUlUX01BWAkJCTEwMDAwMA0KIA0KLSNkZWZpbmUg UEFHRURfQUREUl9CTkRSWQkJCTB4YzAwDQotI2RlZmluZSBPRkZTRVRfVE9fUEFHRV9BRERSKG9m ZikJCVwNCisjZGVmaW5lIFBBR0VEX0FERFJfQk5EUlkJCTB4YzAwDQorI2RlZmluZSBPRkZTRVRf VE9fUEFHRV9BRERSKG9mZikJXA0KIAkoKG9mZiAmIFBBR0VfTE9fTUFTSykgfCBQQUdFRF9BRERS X0JORFJZKQ0KLSNkZWZpbmUgT0ZGU0VUX1RPX1BBR0VfSURYKG9mZikJCQlcDQorI2RlZmluZSBP RkZTRVRfVE9fUEFHRV9JRFgob2ZmKQkJXA0KIAkoKG9mZiA+PiBQQUdFX1NFTF9PRkZTRVRfU0hJ RlQpICYgUEFHRV9TRUxfTUFTSykNCiANCiBzdHJ1Y3QgbW9iaXZlaWxfbXNpIHsJCQkvKiBNU0kg aW5mb3JtYXRpb24gKi8NCkBAIC0yOTcsMTQgKzI5OSwxNCBAQCBzdGF0aWMgdm9pZCBfX2lvbWVt ICptb2JpdmVpbF9wY2llX21hcF9idXMoc3RydWN0IHBjaV9idXMgKmJ1cywNCiAJCQkJCXVuc2ln bmVkIGludCBkZXZmbiwgaW50IHdoZXJlKQ0KIHsNCiAJc3RydWN0IG1vYml2ZWlsX3BjaWUgKnBj aWUgPSBidXMtPnN5c2RhdGE7DQorCXUzMiB2YWx1ZTsNCiANCiAJaWYgKCFtb2JpdmVpbF9wY2ll X3ZhbGlkX2RldmljZShidXMsIGRldmZuKSkNCiAJCXJldHVybiBOVUxMOw0KIA0KLQlpZiAoYnVz LT5udW1iZXIgPT0gcGNpZS0+cm9vdF9idXNfbnIpIHsNCi0JCS8qIFJDIGNvbmZpZyBhY2Nlc3Mg Ki8NCisJLyogUkMgY29uZmlnIGFjY2VzcyAqLw0KKwlpZiAoYnVzLT5udW1iZXIgPT0gcGNpZS0+ cm9vdF9idXNfbnIpDQogCQlyZXR1cm4gcGNpZS0+Y3NyX2F4aV9zbGF2ZV9iYXNlICsgd2hlcmU7 DQotCX0NCiANCiAJLyoNCiAJICogRVAgY29uZmlnIGFjY2VzcyAoaW4gQ29uZmlnL0FQSU8gc3Bh Y2UpDQpAQCAtMzEyLDEwICszMTQsMTIgQEAgc3RhdGljIHZvaWQgX19pb21lbSAqbW9iaXZlaWxf cGNpZV9tYXBfYnVzKHN0cnVjdCBwY2lfYnVzICpidXMsDQogCSAqIChCREYpIGluIFBBQl9BWElf QU1BUF9QRVhfV0lOX0wwIFJlZ2lzdGVyLg0KIAkgKiBSZWxpZXMgb24gcGNpX2xvY2sgc2VyaWFs aXphdGlvbg0KIAkgKi8NCi0JY3NyX3dyaXRlbChwY2llLCBidXMtPm51bWJlciA8PCBQQUJfQlVT X1NISUZUIHwNCi0JCQlQQ0lfU0xPVChkZXZmbikgPDwgUEFCX0RFVklDRV9TSElGVCB8DQotCQkJ UENJX0ZVTkMoZGV2Zm4pIDw8IFBBQl9GVU5DVElPTl9TSElGVCwNCi0JCQlQQUJfQVhJX0FNQVBf UEVYX1dJTl9MKFdJTl9OVU1fMCkpOw0KKwl2YWx1ZSA9IGJ1cy0+bnVtYmVyIDw8IFBBQl9CVVNf U0hJRlQgfA0KKwkJUENJX1NMT1QoZGV2Zm4pIDw8IFBBQl9ERVZJQ0VfU0hJRlQgfA0KKwkJUENJ X0ZVTkMoZGV2Zm4pIDw8IFBBQl9GVU5DVElPTl9TSElGVDsNCisNCisJY3NyX3dyaXRlbChwY2ll LCB2YWx1ZSwgUEFCX0FYSV9BTUFQX1BFWF9XSU5fTChXSU5fTlVNXzApKTsNCisNCiAJcmV0dXJu IHBjaWUtPmNvbmZpZ19heGlfc2xhdmVfYmFzZSArIHdoZXJlOw0KIH0NCiANCkBAIC0zNTAsMjIg KzM1NCwyMiBAQCBzdGF0aWMgdm9pZCBtb2JpdmVpbF9wY2llX2lzcihzdHJ1Y3QgaXJxX2Rlc2Mg KmRlc2MpDQogDQogCS8qIEhhbmRsZSBJTlR4ICovDQogCWlmIChpbnRyX3N0YXR1cyAmIFBBQl9J TlRQX0lOVFhfTUFTSykgew0KLQkJc2hpZnRlZF9zdGF0dXMgPSBjc3JfcmVhZGwocGNpZSwgUEFC X0lOVFBfQU1CQV9NSVNDX1NUQVQpID4+DQotCQkJUEFCX0lOVFhfU1RBUlQ7DQorCQlzaGlmdGVk X3N0YXR1cyA9IGNzcl9yZWFkbChwY2llLCBQQUJfSU5UUF9BTUJBX01JU0NfU1RBVCk7DQorCQlz aGlmdGVkX3N0YXR1cyA+Pj0gUEFCX0lOVFhfU1RBUlQ7DQogCQlkbyB7DQogCQkJZm9yX2VhY2hf c2V0X2JpdChiaXQsICZzaGlmdGVkX3N0YXR1cywgUENJX05VTV9JTlRYKSB7DQogCQkJCXZpcnEg PSBpcnFfZmluZF9tYXBwaW5nKHBjaWUtPmludHhfZG9tYWluLA0KLQkJCQkJCWJpdCArIDEpOw0K KwkJCQkJCQliaXQgKyAxKTsNCiAJCQkJaWYgKHZpcnEpDQogCQkJCQlnZW5lcmljX2hhbmRsZV9p cnEodmlycSk7DQogCQkJCWVsc2UNCi0JCQkJCWRldl9lcnJfcmF0ZWxpbWl0ZWQoZGV2LA0KLQkJ CQkJCSJ1bmV4cGVjdGVkIElSUSwgSU5UJWRcbiIsIGJpdCk7DQorCQkJCQlkZXZfZXJyX3JhdGVs aW1pdGVkKGRldiwgInVuZXhwZWN0ZWQgSVJRLCBJTlQlZFxuIiwNCisJCQkJCQkJICAgIGJpdCk7 DQogDQogCQkJCS8qIGNsZWFyIGludGVycnVwdCAqLw0KIAkJCQljc3Jfd3JpdGVsKHBjaWUsDQot CQkJCQlzaGlmdGVkX3N0YXR1cyA8PCBQQUJfSU5UWF9TVEFSVCwNCi0JCQkJCVBBQl9JTlRQX0FN QkFfTUlTQ19TVEFUKTsNCisJCQkJCSAgIHNoaWZ0ZWRfc3RhdHVzIDw8IFBBQl9JTlRYX1NUQVJU LA0KKwkJCQkJICAgUEFCX0lOVFBfQU1CQV9NSVNDX1NUQVQpOw0KIAkJCX0NCiAJCX0gd2hpbGUg KChzaGlmdGVkX3N0YXR1cyA+PiBQQUJfSU5UWF9TVEFSVCkgIT0gMCk7DQogCX0NCkBAIC0zNzUs OCArMzc5LDcgQEAgc3RhdGljIHZvaWQgbW9iaXZlaWxfcGNpZV9pc3Ioc3RydWN0IGlycV9kZXNj ICpkZXNjKQ0KIA0KIAkvKiBoYW5kbGUgTVNJIGludGVycnVwdHMgKi8NCiAJd2hpbGUgKG1zaV9z dGF0dXMgJiAxKSB7DQotCQltc2lfZGF0YSA9IHJlYWRsX3JlbGF4ZWQocGNpZS0+YXBiX2Nzcl9i YXNlDQotCQkJCSsgTVNJX0RBVEFfT0ZGU0VUKTsNCisJCW1zaV9kYXRhID0gcmVhZGxfcmVsYXhl ZChwY2llLT5hcGJfY3NyX2Jhc2UgKyBNU0lfREFUQV9PRkZTRVQpOw0KIA0KIAkJLyoNCiAJCSAq IE1TSV9TVEFUVVNfT0ZGU0VUIHJlZ2lzdGVyIGdldHMgdXBkYXRlZCB0byB6ZXJvDQpAQCAtMzg1 LDE4ICszODgsMTggQEAgc3RhdGljIHZvaWQgbW9iaXZlaWxfcGNpZV9pc3Ioc3RydWN0IGlycV9k ZXNjICpkZXNjKQ0KIAkJICogdHdvIGR1bW15IHJlYWRzLg0KIAkJICovDQogCQltc2lfYWRkcl9s byA9IHJlYWRsX3JlbGF4ZWQocGNpZS0+YXBiX2Nzcl9iYXNlICsNCi0JCQkJTVNJX0FERFJfTF9P RkZTRVQpOw0KKwkJCQkJICAgIE1TSV9BRERSX0xfT0ZGU0VUKTsNCiAJCW1zaV9hZGRyX2hpID0g cmVhZGxfcmVsYXhlZChwY2llLT5hcGJfY3NyX2Jhc2UgKw0KLQkJCQlNU0lfQUREUl9IX09GRlNF VCk7DQorCQkJCQkgICAgTVNJX0FERFJfSF9PRkZTRVQpOw0KIAkJZGV2X2RiZyhkZXYsICJNU0kg cmVnaXN0ZXJzLCBkYXRhOiAlMDh4LCBhZGRyOiAlMDh4OiUwOHhcbiIsDQotCQkJCW1zaV9kYXRh LCBtc2lfYWRkcl9oaSwgbXNpX2FkZHJfbG8pOw0KKwkJCW1zaV9kYXRhLCBtc2lfYWRkcl9oaSwg bXNpX2FkZHJfbG8pOw0KIA0KIAkJdmlycSA9IGlycV9maW5kX21hcHBpbmcobXNpLT5kZXZfZG9t YWluLCBtc2lfZGF0YSk7DQogCQlpZiAodmlycSkNCiAJCQlnZW5lcmljX2hhbmRsZV9pcnEodmly cSk7DQogDQogCQltc2lfc3RhdHVzID0gcmVhZGxfcmVsYXhlZChwY2llLT5hcGJfY3NyX2Jhc2Ug Kw0KLQkJCQlNU0lfU1RBVFVTX09GRlNFVCk7DQorCQkJCQkgICBNU0lfU1RBVFVTX09GRlNFVCk7 DQogCX0NCiANCiAJLyogQ2xlYXIgdGhlIGludGVycnVwdCBzdGF0dXMgKi8NCkBAIC00MTMsNyAr NDE2LDcgQEAgc3RhdGljIGludCBtb2JpdmVpbF9wY2llX3BhcnNlX2R0KHN0cnVjdCBtb2JpdmVp bF9wY2llICpwY2llKQ0KIA0KIAkvKiBtYXAgY29uZmlnIHJlc291cmNlICovDQogCXJlcyA9IHBs YXRmb3JtX2dldF9yZXNvdXJjZV9ieW5hbWUocGRldiwgSU9SRVNPVVJDRV9NRU0sDQotCQkJImNv bmZpZ19heGlfc2xhdmUiKTsNCisJCQkJCSAgICJjb25maWdfYXhpX3NsYXZlIik7DQogCXBjaWUt PmNvbmZpZ19heGlfc2xhdmVfYmFzZSA9IGRldm1fcGNpX3JlbWFwX2NmZ19yZXNvdXJjZShkZXYs IHJlcyk7DQogCWlmIChJU19FUlIocGNpZS0+Y29uZmlnX2F4aV9zbGF2ZV9iYXNlKSkNCiAJCXJl dHVybiBQVFJfRVJSKHBjaWUtPmNvbmZpZ19heGlfc2xhdmVfYmFzZSk7DQpAQCAtNDIxLDcgKzQy NCw3IEBAIHN0YXRpYyBpbnQgbW9iaXZlaWxfcGNpZV9wYXJzZV9kdChzdHJ1Y3QgbW9iaXZlaWxf cGNpZSAqcGNpZSkNCiANCiAJLyogbWFwIGNzciByZXNvdXJjZSAqLw0KIAlyZXMgPSBwbGF0Zm9y bV9nZXRfcmVzb3VyY2VfYnluYW1lKHBkZXYsIElPUkVTT1VSQ0VfTUVNLA0KLQkJCSJjc3JfYXhp X3NsYXZlIik7DQorCQkJCQkgICAiY3NyX2F4aV9zbGF2ZSIpOw0KIAlwY2llLT5jc3JfYXhpX3Ns YXZlX2Jhc2UgPSBkZXZtX3BjaV9yZW1hcF9jZmdfcmVzb3VyY2UoZGV2LCByZXMpOw0KIAlpZiAo SVNfRVJSKHBjaWUtPmNzcl9heGlfc2xhdmVfYmFzZSkpDQogCQlyZXR1cm4gUFRSX0VSUihwY2ll LT5jc3JfYXhpX3NsYXZlX2Jhc2UpOw0KQEAgLTQ1Miw3ICs0NTUsNyBAQCBzdGF0aWMgaW50IG1v Yml2ZWlsX3BjaWVfcGFyc2VfZHQoc3RydWN0IG1vYml2ZWlsX3BjaWUgKnBjaWUpDQogfQ0KIA0K IHN0YXRpYyB2b2lkIHByb2dyYW1faWJfd2luZG93cyhzdHJ1Y3QgbW9iaXZlaWxfcGNpZSAqcGNp ZSwgaW50IHdpbl9udW0sDQotCQlpbnQgcGNpX2FkZHIsIHUzMiB0eXBlLCB1NjQgc2l6ZSkNCisJ CQkgICAgICAgaW50IHBjaV9hZGRyLCB1MzIgdHlwZSwgdTY0IHNpemUpDQogew0KIAlpbnQgcGlv X2N0cmxfdmFsOw0KIAlpbnQgYW1hcF9jdHJsX2R3Ow0KQEAgLTQ2NSwxOSArNDY4LDIwIEBAIHN0 YXRpYyB2b2lkIHByb2dyYW1faWJfd2luZG93cyhzdHJ1Y3QgbW9iaXZlaWxfcGNpZSAqcGNpZSwg aW50IHdpbl9udW0sDQogCX0NCiANCiAJcGlvX2N0cmxfdmFsID0gY3NyX3JlYWRsKHBjaWUsIFBB Ql9QRVhfUElPX0NUUkwpOw0KLQljc3Jfd3JpdGVsKHBjaWUsDQotCQlwaW9fY3RybF92YWwgfCAo MSA8PCBQSU9fRU5BQkxFX1NISUZUKSwgUEFCX1BFWF9QSU9fQ1RSTCk7DQotCWFtYXBfY3RybF9k dyA9IGNzcl9yZWFkbChwY2llLCBQQUJfUEVYX0FNQVBfQ1RSTCh3aW5fbnVtKSk7DQotCWFtYXBf Y3RybF9kdyA9IChhbWFwX2N0cmxfZHcgfCAodHlwZSA8PCBBTUFQX0NUUkxfVFlQRV9TSElGVCkp Ow0KLQlhbWFwX2N0cmxfZHcgPSAoYW1hcF9jdHJsX2R3IHwgKDEgPDwgQU1BUF9DVFJMX0VOX1NI SUZUKSk7DQorCXBpb19jdHJsX3ZhbCB8PSAxIDw8IFBJT19FTkFCTEVfU0hJRlQ7DQorCWNzcl93 cml0ZWwocGNpZSwgcGlvX2N0cmxfdmFsLCBQQUJfUEVYX1BJT19DVFJMKTsNCiANCi0JY3NyX3dy aXRlbChwY2llLCBhbWFwX2N0cmxfZHcgfCBsb3dlcl8zMl9iaXRzKHNpemU2NCksDQotCQkgICBQ QUJfUEVYX0FNQVBfQ1RSTCh3aW5fbnVtKSk7DQorCWFtYXBfY3RybF9kdyA9IGNzcl9yZWFkbChw Y2llLCBQQUJfUEVYX0FNQVBfQ1RSTCh3aW5fbnVtKSk7DQorCWFtYXBfY3RybF9kdyB8PSAodHlw ZSA8PCBBTUFQX0NUUkxfVFlQRV9TSElGVCkgfA0KKwkJCSgxIDw8IEFNQVBfQ1RSTF9FTl9TSElG VCkgfA0KKwkJCWxvd2VyXzMyX2JpdHMoc2l6ZTY0KTsNCisJY3NyX3dyaXRlbChwY2llLCBhbWFw X2N0cmxfZHcsIFBBQl9QRVhfQU1BUF9DVFJMKHdpbl9udW0pKTsNCiANCiAJY3NyX3dyaXRlbChw Y2llLCB1cHBlcl8zMl9iaXRzKHNpemU2NCksDQogCQkgICBQQUJfRVhUX1BFWF9BTUFQX1NJWkVO KHdpbl9udW0pKTsNCiANCiAJY3NyX3dyaXRlbChwY2llLCBwY2lfYWRkciwgUEFCX1BFWF9BTUFQ X0FYSV9XSU4od2luX251bSkpOw0KKw0KIAljc3Jfd3JpdGVsKHBjaWUsIHBjaV9hZGRyLCBQQUJf UEVYX0FNQVBfUEVYX1dJTl9MKHdpbl9udW0pKTsNCiAJY3NyX3dyaXRlbChwY2llLCAwLCBQQUJf UEVYX0FNQVBfUEVYX1dJTl9IKHdpbl9udW0pKTsNCiB9DQpAQCAtNDg2LDcgKzQ5MCw4IEBAIHN0 YXRpYyB2b2lkIHByb2dyYW1faWJfd2luZG93cyhzdHJ1Y3QgbW9iaXZlaWxfcGNpZSAqcGNpZSwg aW50IHdpbl9udW0sDQogICogcm91dGluZSB0byBwcm9ncmFtIHRoZSBvdXRib3VuZCB3aW5kb3dz DQogICovDQogc3RhdGljIHZvaWQgcHJvZ3JhbV9vYl93aW5kb3dzKHN0cnVjdCBtb2JpdmVpbF9w Y2llICpwY2llLCBpbnQgd2luX251bSwNCi0JCXU2NCBjcHVfYWRkciwgdTY0IHBjaV9hZGRyLCB1 MzIgY29uZmlnX2lvX2JpdCwgdTY0IHNpemUpDQorCQkJICAgICAgIHU2NCBjcHVfYWRkciwgdTY0 IHBjaV9hZGRyLA0KKwkJCSAgICAgICB1MzIgY29uZmlnX2lvX2JpdCwgdTY0IHNpemUpDQogew0K IA0KIAl1MzIgdmFsdWUsIHR5cGU7DQpAQCAtNTA1LDcgKzUxMCw3IEBAIHN0YXRpYyB2b2lkIHBy b2dyYW1fb2Jfd2luZG93cyhzdHJ1Y3QgbW9iaXZlaWxfcGNpZSAqcGNpZSwgaW50IHdpbl9udW0s DQogCXR5cGUgPSBjb25maWdfaW9fYml0Ow0KIAl2YWx1ZSA9IGNzcl9yZWFkbChwY2llLCBQQUJf QVhJX0FNQVBfQ1RSTCh3aW5fbnVtKSk7DQogCWNzcl93cml0ZWwocGNpZSwgMSA8PCBXSU5fRU5B QkxFX1NISUZUIHwgdHlwZSA8PCBXSU5fVFlQRV9TSElGVCB8DQotCQkJbG93ZXJfMzJfYml0cyhz aXplNjQpLCBQQUJfQVhJX0FNQVBfQ1RSTCh3aW5fbnVtKSk7DQorCQkgICBsb3dlcl8zMl9iaXRz KHNpemU2NCksIFBBQl9BWElfQU1BUF9DVFJMKHdpbl9udW0pKTsNCiANCiAJY3NyX3dyaXRlbChw Y2llLCB1cHBlcl8zMl9iaXRzKHNpemU2NCksIFBBQl9FWFRfQVhJX0FNQVBfU0laRSh3aW5fbnVt KSk7DQogDQpAQCAtNTE1LDE0ICs1MjAsMTQgQEAgc3RhdGljIHZvaWQgcHJvZ3JhbV9vYl93aW5k b3dzKHN0cnVjdCBtb2JpdmVpbF9wY2llICpwY2llLCBpbnQgd2luX251bSwNCiAJICovDQogCXZh bHVlID0gY3NyX3JlYWRsKHBjaWUsIFBBQl9BWElfQU1BUF9BWElfV0lOKHdpbl9udW0pKTsNCiAJ Y3NyX3dyaXRlbChwY2llLCBjcHVfYWRkciAmICh+QVhJX1dJTkRPV19BTElHTl9NQVNLKSwNCi0J CQlQQUJfQVhJX0FNQVBfQVhJX1dJTih3aW5fbnVtKSk7DQorCQkgICBQQUJfQVhJX0FNQVBfQVhJ X1dJTih3aW5fbnVtKSk7DQogDQogCXZhbHVlID0gY3NyX3JlYWRsKHBjaWUsIFBBQl9BWElfQU1B UF9QRVhfV0lOX0god2luX251bSkpOw0KIA0KIAljc3Jfd3JpdGVsKHBjaWUsIGxvd2VyXzMyX2Jp dHMocGNpX2FkZHIpLA0KLQkJCVBBQl9BWElfQU1BUF9QRVhfV0lOX0wod2luX251bSkpOw0KKwkJ ICAgUEFCX0FYSV9BTUFQX1BFWF9XSU5fTCh3aW5fbnVtKSk7DQogCWNzcl93cml0ZWwocGNpZSwg dXBwZXJfMzJfYml0cyhwY2lfYWRkciksDQotCQkJUEFCX0FYSV9BTUFQX1BFWF9XSU5fSCh3aW5f bnVtKSk7DQorCQkgICBQQUJfQVhJX0FNQVBfUEVYX1dJTl9IKHdpbl9udW0pKTsNCiANCiAJcGNp ZS0+b2Jfd2luc19jb25maWd1cmVkKys7DQogfQ0KQEAgLTUzOCw3ICs1NDMsOSBAQCBzdGF0aWMg aW50IG1vYml2ZWlsX2JyaW5ndXBfbGluayhzdHJ1Y3QgbW9iaXZlaWxfcGNpZSAqcGNpZSkNCiAN CiAJCXVzbGVlcF9yYW5nZShMSU5LX1dBSVRfTUlOLCBMSU5LX1dBSVRfTUFYKTsNCiAJfQ0KKw0K IAlkZXZfZXJyKCZwY2llLT5wZGV2LT5kZXYsICJsaW5rIG5ldmVyIGNhbWUgdXBcbiIpOw0KKw0K IAlyZXR1cm4gLUVUSU1FRE9VVDsNCiB9DQogDQpAQCAtNTUxLDE2ICs1NTgsMTYgQEAgc3RhdGlj IHZvaWQgbW9iaXZlaWxfcGNpZV9lbmFibGVfbXNpKHN0cnVjdCBtb2JpdmVpbF9wY2llICpwY2ll KQ0KIAltc2ktPm1zaV9wYWdlc19waHlzID0gKHBoeXNfYWRkcl90KW1zZ19hZGRyOw0KIA0KIAl3 cml0ZWxfcmVsYXhlZChsb3dlcl8zMl9iaXRzKG1zZ19hZGRyKSwNCi0JCXBjaWUtPmFwYl9jc3Jf YmFzZSArIE1TSV9CQVNFX0xPX09GRlNFVCk7DQorCQkgICAgICAgcGNpZS0+YXBiX2Nzcl9iYXNl ICsgTVNJX0JBU0VfTE9fT0ZGU0VUKTsNCiAJd3JpdGVsX3JlbGF4ZWQodXBwZXJfMzJfYml0cyht c2dfYWRkciksDQotCQlwY2llLT5hcGJfY3NyX2Jhc2UgKyBNU0lfQkFTRV9ISV9PRkZTRVQpOw0K KwkJICAgICAgIHBjaWUtPmFwYl9jc3JfYmFzZSArIE1TSV9CQVNFX0hJX09GRlNFVCk7DQogCXdy aXRlbF9yZWxheGVkKDQwOTYsIHBjaWUtPmFwYl9jc3JfYmFzZSArIE1TSV9TSVpFX09GRlNFVCk7 DQogCXdyaXRlbF9yZWxheGVkKDEsIHBjaWUtPmFwYl9jc3JfYmFzZSArIE1TSV9FTkFCTEVfT0ZG U0VUKTsNCiB9DQogDQogc3RhdGljIGludCBtb2JpdmVpbF9ob3N0X2luaXQoc3RydWN0IG1vYml2 ZWlsX3BjaWUgKnBjaWUpDQogew0KLQl1MzIgdmFsdWUsIHBhYl9jdHJsLCB0eXBlID0gMDsNCisJ dTMyIHZhbHVlLCBwYWJfY3RybCwgdHlwZTsNCiAJaW50IGVycjsNCiAJc3RydWN0IHJlc291cmNl X2VudHJ5ICp3aW4sICp0bXA7DQogDQpAQCAtNTc1LDI2ICs1ODIsMjcgQEAgc3RhdGljIGludCBt b2JpdmVpbF9ob3N0X2luaXQoc3RydWN0IG1vYml2ZWlsX3BjaWUgKnBjaWUpDQogCSAqIFNwYWNl DQogCSAqLw0KIAl2YWx1ZSA9IGNzcl9yZWFkbChwY2llLCBQQ0lfQ09NTUFORCk7DQotCWNzcl93 cml0ZWwocGNpZSwgdmFsdWUgfCBQQ0lfQ09NTUFORF9JTyB8IFBDSV9DT01NQU5EX01FTU9SWSB8 DQotCQlQQ0lfQ09NTUFORF9NQVNURVIsIFBDSV9DT01NQU5EKTsNCisJdmFsdWUgfD0gUENJX0NP TU1BTkRfSU8gfCBQQ0lfQ09NTUFORF9NRU1PUlkgfCBQQ0lfQ09NTUFORF9NQVNURVI7DQorCWNz cl93cml0ZWwocGNpZSwgdmFsdWUsIFBDSV9DT01NQU5EKTsNCiANCiAJLyoNCiAJICogcHJvZ3Jh bSBQSU8gRW5hYmxlIEJpdCB0byAxIChhbmQgUEVYIFBJTyBFbmFibGUgdG8gMSkgaW4gUEFCX0NU UkwNCiAJICogcmVnaXN0ZXINCiAJICovDQogCXBhYl9jdHJsID0gY3NyX3JlYWRsKHBjaWUsIFBB Ql9DVFJMKTsNCi0JY3NyX3dyaXRlbChwY2llLCBwYWJfY3RybCB8ICgxIDw8IEFNQkFfUElPX0VO QUJMRV9TSElGVCkgfA0KLQkJKDEgPDwgUEVYX1BJT19FTkFCTEVfU0hJRlQpLCBQQUJfQ1RSTCk7 DQorCXBhYl9jdHJsIHw9ICgxIDw8IEFNQkFfUElPX0VOQUJMRV9TSElGVCkgfCAoMSA8PCBQRVhf UElPX0VOQUJMRV9TSElGVCk7DQorCWNzcl93cml0ZWwocGNpZSwgcGFiX2N0cmwsIFBBQl9DVFJM KTsNCiANCiAJY3NyX3dyaXRlbChwY2llLCAoUEFCX0lOVFBfSU5UWF9NQVNLIHwgUEFCX0lOVFBf TVNJX01BU0spLA0KLQkJUEFCX0lOVFBfQU1CQV9NSVNDX0VOQik7DQorCQkgICBQQUJfSU5UUF9B TUJBX01JU0NfRU5CKTsNCiANCiAJLyoNCiAJICogcHJvZ3JhbSBQSU8gRW5hYmxlIEJpdCB0byAx IGFuZCBDb25maWcgV2luZG93IEVuYWJsZSBCaXQgdG8gMSBpbg0KIAkgKiBQQUJfQVhJX1BJT19D VFJMIFJlZ2lzdGVyDQogCSAqLw0KIAl2YWx1ZSA9IGNzcl9yZWFkbChwY2llLCBQQUJfQVhJX1BJ T19DVFJMKTsNCi0JY3NyX3dyaXRlbChwY2llLCB2YWx1ZSB8IEFQSU9fRU5fTUFTSywgUEFCX0FY SV9QSU9fQ1RSTCk7DQorCXZhbHVlIHw9IEFQSU9fRU5fTUFTSzsNCisJY3NyX3dyaXRlbChwY2ll LCB2YWx1ZSwgUEFCX0FYSV9QSU9fQ1RSTCk7DQogDQogCS8qDQogCSAqIHdlJ2xsIHByb2dyYW0g b25lIG91dGJvdW5kIHdpbmRvdyBmb3IgY29uZmlnIHJlYWRzIGFuZA0KQEAgLTYwNSwyNSArNjEz LDI1IEBAIHN0YXRpYyBpbnQgbW9iaXZlaWxfaG9zdF9pbml0KHN0cnVjdCBtb2JpdmVpbF9wY2ll ICpwY2llKQ0KIA0KIAkvKiBjb25maWcgb3V0Ym91bmQgdHJhbnNsYXRpb24gd2luZG93ICovDQog CXByb2dyYW1fb2Jfd2luZG93cyhwY2llLCBwY2llLT5vYl93aW5zX2NvbmZpZ3VyZWQsDQotCQkJ cGNpZS0+b2JfaW9fcmVzLT5zdGFydCwgMCwgQ0ZHX1dJTkRPV19UWVBFLA0KLQkJCXJlc291cmNl X3NpemUocGNpZS0+b2JfaW9fcmVzKSk7DQorCQkJICAgcGNpZS0+b2JfaW9fcmVzLT5zdGFydCwg MCwgQ0ZHX1dJTkRPV19UWVBFLA0KKwkJCSAgIHJlc291cmNlX3NpemUocGNpZS0+b2JfaW9fcmVz KSk7DQogDQogCS8qIG1lbW9yeSBpbmJvdW5kIHRyYW5zbGF0aW9uIHdpbmRvdyAqLw0KIAlwcm9n cmFtX2liX3dpbmRvd3MocGNpZSwgV0lOX05VTV8xLCAwLCBNRU1fV0lORE9XX1RZUEUsIElCX1dJ Tl9TSVpFKTsNCiANCiAJLyogR2V0IHRoZSBJL08gYW5kIG1lbW9yeSByYW5nZXMgZnJvbSBEVCAq Lw0KIAlyZXNvdXJjZV9saXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUod2luLCB0bXAsICZwY2llLT5y ZXNvdXJjZXMpIHsNCi0JCXR5cGUgPSAwOw0KIAkJaWYgKHJlc291cmNlX3R5cGUod2luLT5yZXMp ID09IElPUkVTT1VSQ0VfTUVNKQ0KIAkJCXR5cGUgPSBNRU1fV0lORE9XX1RZUEU7DQotCQlpZiAo cmVzb3VyY2VfdHlwZSh3aW4tPnJlcykgPT0gSU9SRVNPVVJDRV9JTykNCisJCWVsc2UgaWYgKHJl c291cmNlX3R5cGUod2luLT5yZXMpID09IElPUkVTT1VSQ0VfSU8pDQogCQkJdHlwZSA9IElPX1dJ TkRPV19UWVBFOw0KLQkJaWYgKHR5cGUpIHsNCi0JCQkvKiBjb25maWd1cmUgb3V0Ym91bmQgdHJh bnNsYXRpb24gd2luZG93ICovDQotCQkJcHJvZ3JhbV9vYl93aW5kb3dzKHBjaWUsIHBjaWUtPm9i X3dpbnNfY29uZmlndXJlZCwNCi0JCQkJd2luLT5yZXMtPnN0YXJ0LCAwLCB0eXBlLA0KLQkJCQly ZXNvdXJjZV9zaXplKHdpbi0+cmVzKSk7DQotCQl9DQorCQllbHNlDQorCQkJY29udGludWU7DQor DQorCQkvKiBjb25maWd1cmUgb3V0Ym91bmQgdHJhbnNsYXRpb24gd2luZG93ICovDQorCQlwcm9n cmFtX29iX3dpbmRvd3MocGNpZSwgcGNpZS0+b2Jfd2luc19jb25maWd1cmVkLA0KKwkJCQkgICB3 aW4tPnJlcy0+c3RhcnQsIDAsIHR5cGUsDQorCQkJCSAgIHJlc291cmNlX3NpemUod2luLT5yZXMp KTsNCiAJfQ0KIA0KIAkvKiBzZXR1cCBNU0kgaGFyZHdhcmUgcmVnaXN0ZXJzICovDQpAQCAtNjQz LDcgKzY1MSw4IEBAIHN0YXRpYyB2b2lkIG1vYml2ZWlsX21hc2tfaW50eF9pcnEoc3RydWN0IGly cV9kYXRhICpkYXRhKQ0KIAltYXNrID0gMSA8PCAoKGRhdGEtPmh3aXJxICsgUEFCX0lOVFhfU1RB UlQpIC0gMSk7DQogCXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmcGNpZS0+aW50eF9tYXNrX2xvY2ss IGZsYWdzKTsNCiAJc2hpZnRlZF92YWwgPSBjc3JfcmVhZGwocGNpZSwgUEFCX0lOVFBfQU1CQV9N SVNDX0VOQik7DQotCWNzcl93cml0ZWwocGNpZSwgKHNoaWZ0ZWRfdmFsICYgKH5tYXNrKSksIFBB Ql9JTlRQX0FNQkFfTUlTQ19FTkIpOw0KKwlzaGlmdGVkX3ZhbCAmPSB+bWFzazsNCisJY3NyX3dy aXRlbChwY2llLCBzaGlmdGVkX3ZhbCwgUEFCX0lOVFBfQU1CQV9NSVNDX0VOQik7DQogCXJhd19z cGluX3VubG9ja19pcnFyZXN0b3JlKCZwY2llLT5pbnR4X21hc2tfbG9jaywgZmxhZ3MpOw0KIH0N CiANCkBAIC02NTgsNyArNjY3LDggQEAgc3RhdGljIHZvaWQgbW9iaXZlaWxfdW5tYXNrX2ludHhf aXJxKHN0cnVjdCBpcnFfZGF0YSAqZGF0YSkNCiAJbWFzayA9IDEgPDwgKChkYXRhLT5od2lycSAr IFBBQl9JTlRYX1NUQVJUKSAtIDEpOw0KIAlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJnBjaWUtPmlu dHhfbWFza19sb2NrLCBmbGFncyk7DQogCXNoaWZ0ZWRfdmFsID0gY3NyX3JlYWRsKHBjaWUsIFBB Ql9JTlRQX0FNQkFfTUlTQ19FTkIpOw0KLQljc3Jfd3JpdGVsKHBjaWUsIChzaGlmdGVkX3ZhbCB8 IG1hc2spLCBQQUJfSU5UUF9BTUJBX01JU0NfRU5CKTsNCisJc2hpZnRlZF92YWwgfD0gbWFzazsN CisJY3NyX3dyaXRlbChwY2llLCBzaGlmdGVkX3ZhbCwgUEFCX0lOVFBfQU1CQV9NSVNDX0VOQik7 DQogCXJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKCZwY2llLT5pbnR4X21hc2tfbG9jaywgZmxh Z3MpOw0KIH0NCiANCkBAIC02NzIsMTAgKzY4MiwxMSBAQCBzdGF0aWMgc3RydWN0IGlycV9jaGlw IGludHhfaXJxX2NoaXAgPSB7DQogDQogLyogcm91dGluZSB0byBzZXR1cCB0aGUgSU5UeCByZWxh dGVkIGRhdGEgKi8NCiBzdGF0aWMgaW50IG1vYml2ZWlsX3BjaWVfaW50eF9tYXAoc3RydWN0IGly cV9kb21haW4gKmRvbWFpbiwgdW5zaWduZWQgaW50IGlycSwNCi0JCWlycV9od19udW1iZXJfdCBo d2lycSkNCisJCQkJICBpcnFfaHdfbnVtYmVyX3QgaHdpcnEpDQogew0KIAlpcnFfc2V0X2NoaXBf YW5kX2hhbmRsZXIoaXJxLCAmaW50eF9pcnFfY2hpcCwgaGFuZGxlX2xldmVsX2lycSk7DQogCWly cV9zZXRfY2hpcF9kYXRhKGlycSwgZG9tYWluLT5ob3N0X2RhdGEpOw0KKw0KIAlyZXR1cm4gMDsN CiB9DQogDQpAQCAtNjkyLDcgKzcwMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgaXJxX2NoaXAgbW9iaXZl aWxfbXNpX2lycV9jaGlwID0gew0KIA0KIHN0YXRpYyBzdHJ1Y3QgbXNpX2RvbWFpbl9pbmZvIG1v Yml2ZWlsX21zaV9kb21haW5faW5mbyA9IHsNCiAJLmZsYWdzCT0gKE1TSV9GTEFHX1VTRV9ERUZf RE9NX09QUyB8IE1TSV9GTEFHX1VTRV9ERUZfQ0hJUF9PUFMgfA0KLQkJTVNJX0ZMQUdfTVVMVElf UENJX01TSSB8IE1TSV9GTEFHX1BDSV9NU0lYKSwNCisJCSAgIE1TSV9GTEFHX01VTFRJX1BDSV9N U0kgfCBNU0lfRkxBR19QQ0lfTVNJWCksDQogCS5jaGlwCT0gJm1vYml2ZWlsX21zaV9pcnFfY2hp cCwNCiB9Ow0KIA0KQEAgLTcxMCw3ICs3MjEsNyBAQCBzdGF0aWMgdm9pZCBtb2JpdmVpbF9jb21w b3NlX21zaV9tc2coc3RydWN0IGlycV9kYXRhICpkYXRhLCBzdHJ1Y3QgbXNpX21zZyAqbXNnKQ0K IH0NCiANCiBzdGF0aWMgaW50IG1vYml2ZWlsX21zaV9zZXRfYWZmaW5pdHkoc3RydWN0IGlycV9k YXRhICppcnFfZGF0YSwNCi0JCWNvbnN0IHN0cnVjdCBjcHVtYXNrICptYXNrLCBib29sIGZvcmNl KQ0KKwkJCQkgICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICptYXNrLCBib29sIGZvcmNlKQ0KIHsN CiAJcmV0dXJuIC1FSU5WQUw7DQogfQ0KQEAgLTcyMiw3ICs3MzMsOCBAQCBzdGF0aWMgc3RydWN0 IGlycV9jaGlwIG1vYml2ZWlsX21zaV9ib3R0b21faXJxX2NoaXAgPSB7DQogfTsNCiANCiBzdGF0 aWMgaW50IG1vYml2ZWlsX2lycV9tc2lfZG9tYWluX2FsbG9jKHN0cnVjdCBpcnFfZG9tYWluICpk b21haW4sDQotCQl1bnNpZ25lZCBpbnQgdmlycSwgdW5zaWduZWQgaW50IG5yX2lycXMsIHZvaWQg KmFyZ3MpDQorCQkJCQkgdW5zaWduZWQgaW50IHZpcnEsDQorCQkJCQkgdW5zaWduZWQgaW50IG5y X2lycXMsIHZvaWQgKmFyZ3MpDQogew0KIAlzdHJ1Y3QgbW9iaXZlaWxfcGNpZSAqcGNpZSA9IGRv bWFpbi0+aG9zdF9kYXRhOw0KIAlzdHJ1Y3QgbW9iaXZlaWxfbXNpICptc2kgPSAmcGNpZS0+bXNp Ow0KQEAgLTc0MiwxMyArNzU0LDEzIEBAIHN0YXRpYyBpbnQgbW9iaXZlaWxfaXJxX21zaV9kb21h aW5fYWxsb2Moc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwNCiAJbXV0ZXhfdW5sb2NrKCZtc2kt PmxvY2spOw0KIA0KIAlpcnFfZG9tYWluX3NldF9pbmZvKGRvbWFpbiwgdmlycSwgYml0LCAmbW9i aXZlaWxfbXNpX2JvdHRvbV9pcnFfY2hpcCwNCi0JCQkJZG9tYWluLT5ob3N0X2RhdGEsIGhhbmRs ZV9sZXZlbF9pcnEsDQotCQkJCU5VTEwsIE5VTEwpOw0KKwkJCSAgICBkb21haW4tPmhvc3RfZGF0 YSwgaGFuZGxlX2xldmVsX2lycSwgTlVMTCwgTlVMTCk7DQogCXJldHVybiAwOw0KIH0NCiANCiBz dGF0aWMgdm9pZCBtb2JpdmVpbF9pcnFfbXNpX2RvbWFpbl9mcmVlKHN0cnVjdCBpcnFfZG9tYWlu ICpkb21haW4sDQotCQl1bnNpZ25lZCBpbnQgdmlycSwgdW5zaWduZWQgaW50IG5yX2lycXMpDQor CQkJCQkgdW5zaWduZWQgaW50IHZpcnEsDQorCQkJCQkgdW5zaWduZWQgaW50IG5yX2lycXMpDQog ew0KIAlzdHJ1Y3QgaXJxX2RhdGEgKmQgPSBpcnFfZG9tYWluX2dldF9pcnFfZGF0YShkb21haW4s IHZpcnEpOw0KIAlzdHJ1Y3QgbW9iaXZlaWxfcGNpZSAqcGNpZSA9IGlycV9kYXRhX2dldF9pcnFf Y2hpcF9kYXRhKGQpOw0KQEAgLTc1NiwxMiArNzY4LDExIEBAIHN0YXRpYyB2b2lkIG1vYml2ZWls X2lycV9tc2lfZG9tYWluX2ZyZWUoc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwNCiANCiAJbXV0 ZXhfbG9jaygmbXNpLT5sb2NrKTsNCiANCi0JaWYgKCF0ZXN0X2JpdChkLT5od2lycSwgbXNpLT5t c2lfaXJxX2luX3VzZSkpIHsNCisJaWYgKCF0ZXN0X2JpdChkLT5od2lycSwgbXNpLT5tc2lfaXJx X2luX3VzZSkpDQogCQlkZXZfZXJyKCZwY2llLT5wZGV2LT5kZXYsICJ0cnlpbmcgdG8gZnJlZSB1 bnVzZWQgTVNJIyVsdVxuIiwNCiAJCQlkLT5od2lycSk7DQotCX0gZWxzZSB7DQorCWVsc2UNCiAJ CV9fY2xlYXJfYml0KGQtPmh3aXJxLCBtc2ktPm1zaV9pcnFfaW5fdXNlKTsNCi0JfQ0KIA0KIAlt dXRleF91bmxvY2soJm1zaS0+bG9jayk7DQogfQ0KQEAgLTc4NSwxMiArNzk2LDE0IEBAIHN0YXRp YyBpbnQgbW9iaXZlaWxfYWxsb2NhdGVfbXNpX2RvbWFpbnMoc3RydWN0IG1vYml2ZWlsX3BjaWUg KnBjaWUpDQogCX0NCiANCiAJbXNpLT5tc2lfZG9tYWluID0gcGNpX21zaV9jcmVhdGVfaXJxX2Rv bWFpbihmd25vZGUsDQotCQkJCSZtb2JpdmVpbF9tc2lfZG9tYWluX2luZm8sIG1zaS0+ZGV2X2Rv bWFpbik7DQorCQkJCQkJICAgICZtb2JpdmVpbF9tc2lfZG9tYWluX2luZm8sDQorCQkJCQkJICAg IG1zaS0+ZGV2X2RvbWFpbik7DQogCWlmICghbXNpLT5tc2lfZG9tYWluKSB7DQogCQlkZXZfZXJy KGRldiwgImZhaWxlZCB0byBjcmVhdGUgTVNJIGRvbWFpblxuIik7DQogCQlpcnFfZG9tYWluX3Jl bW92ZShtc2ktPmRldl9kb21haW4pOw0KIAkJcmV0dXJuIC1FTk9NRU07DQogCX0NCisNCiAJcmV0 dXJuIDA7DQogfQ0KIA0KQEAgLTgwMSw4ICs4MTQsOCBAQCBzdGF0aWMgaW50IG1vYml2ZWlsX3Bj aWVfaW5pdF9pcnFfZG9tYWluKHN0cnVjdCBtb2JpdmVpbF9wY2llICpwY2llKQ0KIAlpbnQgcmV0 Ow0KIA0KIAkvKiBzZXR1cCBJTlR4ICovDQotCXBjaWUtPmludHhfZG9tYWluID0gaXJxX2RvbWFp bl9hZGRfbGluZWFyKG5vZGUsDQotCQkJCVBDSV9OVU1fSU5UWCwgJmludHhfZG9tYWluX29wcywg cGNpZSk7DQorCXBjaWUtPmludHhfZG9tYWluID0gaXJxX2RvbWFpbl9hZGRfbGluZWFyKG5vZGUs IFBDSV9OVU1fSU5UWCwNCisJCQkJCQkgICZpbnR4X2RvbWFpbl9vcHMsIHBjaWUpOw0KIA0KIAlp ZiAoIXBjaWUtPmludHhfZG9tYWluKSB7DQogCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBnZXQg YSBJTlR4IElSUSBkb21haW5cbiIpOw0KQEAgLTkxNywxMCArOTMwLDEwIEBAIE1PRFVMRV9ERVZJ Q0VfVEFCTEUob2YsIG1vYml2ZWlsX3BjaWVfb2ZfbWF0Y2gpOw0KIHN0YXRpYyBzdHJ1Y3QgcGxh dGZvcm1fZHJpdmVyIG1vYml2ZWlsX3BjaWVfZHJpdmVyID0gew0KIAkucHJvYmUgPSBtb2JpdmVp bF9wY2llX3Byb2JlLA0KIAkuZHJpdmVyID0gew0KLQkJCS5uYW1lID0gIm1vYml2ZWlsLXBjaWUi LA0KLQkJCS5vZl9tYXRjaF90YWJsZSA9IG1vYml2ZWlsX3BjaWVfb2ZfbWF0Y2gsDQotCQkJLnN1 cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLA0KLQkJfSwNCisJCS5uYW1lID0gIm1vYml2ZWlsLXBj aWUiLA0KKwkJLm9mX21hdGNoX3RhYmxlID0gbW9iaXZlaWxfcGNpZV9vZl9tYXRjaCwNCisJCS5z dXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZSwNCisJfSwNCiB9Ow0KIA0KIGJ1aWx0aW5fcGxhdGZv cm1fZHJpdmVyKG1vYml2ZWlsX3BjaWVfZHJpdmVyKTsNCi0tIA0KMi4xNy4xDQoNCg== 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=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,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 5B5BBC282CE for ; Fri, 12 Apr 2019 08:35:50 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 202802084D for ; Fri, 12 Apr 2019 08:35:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="HO46vUIy"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="AOlvIFV4" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 202802084D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nxp.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:References: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=lWb0ytRo7C2u2d+ygGD367rE9OY+rXKN06pZ3H1WTrU=; b=HO46vUIyeG75OT +B8ifuc560F5jOfvhEP5WBTuvcytlO301jPoT0U6s6e8NS1mumrFrh18zcRWc5Q4Va27pJUlzfvho T7ZnLd0bPQzTOX/WkJ7Z0Rd3dHsMXnDw8S17fmwSg4VXaWNIvMYJFd56vJr2vUSLIJ84APRuAvrrT LxzPJVb7vE7h0hvsaEppr2Uy0JajuSaxDoeLiM5tZSdqec6LC/u6YcnsXEqwhwvQwQe45Y5Z4h0cd +lIOecr9bI4nB7odCC8NaAb70P65GayVsTZnLm0tJl+a71mBVHyqY+L1JZvmkWOWjpl9BG4OzyvuV zLc+aBuS277z45s6gThw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1hErez-0005EI-M7; Fri, 12 Apr 2019 08:35:45 +0000 Received: from mail-eopbgr30052.outbound.protection.outlook.com ([40.107.3.52] helo=EUR03-AM5-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hEreh-0004s6-6S for linux-arm-kernel@lists.infradead.org; Fri, 12 Apr 2019 08:35:32 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IR0+A9+3R+ZFam9/qxvlCh4khXPtIciddJQk6G4J+P8=; b=AOlvIFV4EXQZIAajYofIKdrn2XZruzWHlBZgewT7iFQEyUTAz1+itaYpwisUxZba3TIQaASSKFjzMP2ZYc4YGcZi4fOy7e4TEa95dZk0XBYRKYXOUkYUonFx7Rvd3HZafChsAtoWAwxrmYrr/+12G2GGdgBpekiQg76dZYG/Tcw= Received: from AM6PR04MB5781.eurprd04.prod.outlook.com (20.179.3.19) by AM6PR04MB5926.eurprd04.prod.outlook.com (20.179.3.159) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1792.14; Fri, 12 Apr 2019 08:35:24 +0000 Received: from AM6PR04MB5781.eurprd04.prod.outlook.com ([fe80::f9db:ed86:614e:460]) by AM6PR04MB5781.eurprd04.prod.outlook.com ([fe80::f9db:ed86:614e:460%4]) with mapi id 15.20.1792.009; Fri, 12 Apr 2019 08:35:24 +0000 From: "Z.q. Hou" To: "linux-pci@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "bhelgaas@google.com" , "robh+dt@kernel.org" , "mark.rutland@arm.com" , "l.subrahmanya@mobiveil.co.in" , "shawnguo@kernel.org" , Leo Li , "lorenzo.pieralisi@arm.com" , "catalin.marinas@arm.com" , "will.deacon@arm.com" Subject: [PATCHv5 02/20] PCI: mobiveil: Format the code without functionality change Thread-Topic: [PATCHv5 02/20] PCI: mobiveil: Format the code without functionality change Thread-Index: AQHU8Qqsskjg5i2JJUOtSWDylHX9tg== Date: Fri, 12 Apr 2019 08:35:24 +0000 Message-ID: <20190412083635.33626-3-Zhiqiang.Hou@nxp.com> References: <20190412083635.33626-1-Zhiqiang.Hou@nxp.com> In-Reply-To: <20190412083635.33626-1-Zhiqiang.Hou@nxp.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: HK2PR06CA0011.apcprd06.prod.outlook.com (2603:1096:202:2e::23) To AM6PR04MB5781.eurprd04.prod.outlook.com (2603:10a6:20b:ad::19) authentication-results: spf=none (sender IP is ) smtp.mailfrom=zhiqiang.hou@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.17.1 x-originating-ip: [119.31.174.73] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 98e1ad42-2a09-49ed-e2a8-08d6bf21ce5a x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600139)(711020)(4605104)(4618075)(2017052603328)(7193020); SRVR:AM6PR04MB5926; x-ms-traffictypediagnostic: AM6PR04MB5926: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(346002)(376002)(136003)(366004)(396003)(39860400002)(189003)(199004)(478600001)(36756003)(305945005)(30864003)(52116002)(6486002)(110136005)(186003)(7416002)(3846002)(7736002)(6436002)(50226002)(54906003)(53946003)(316002)(6512007)(6116002)(25786009)(1076003)(26005)(86362001)(105586002)(8676002)(81166006)(386003)(106356001)(14454004)(2501003)(6506007)(81156014)(76176011)(5660300002)(102836004)(256004)(53936002)(71200400001)(71190400001)(2906002)(68736007)(476003)(66066001)(99286004)(2616005)(97736004)(4326008)(486006)(446003)(11346002)(8936002)(2201001)(14444005)(921003)(1121003); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR04MB5926; H:AM6PR04MB5781.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: j1aRpFgyBxEmLcC3DnoLVdaAfOwlq7XVcdIr09AwnA8U5aLIqGc0+gHvyBDAG8rK0nVgdL74Q7mlJAyMwEmemlp9SFTl2Kl7/MmZGqPRm8bHtbl8gfZXVLOy6Y/xvz0EzkmHdv1w2oiJrVPxkMp/LaNUSnvuCsmb0D1s7p8dC0fP/bz9MpD/jDSRJ+4BWQtF2QqayMPYx3W+l3ogwhagzPbECI0B8bdQhtt3REG39+y1Q07BPD01eLklRDillF5uQhP7h0rymw0O2Eohgu3rc0+Dn97Mhwr2OxNhG3JeNIE+F/jpFOP1sbGSbLRLcL7C1U9zFhl+G2LlFC16LeDcbuWhHZNmq2EjE+dOp/uepPvoMOZHvDGwRiOV+PCyu2c4P8ZxkZjiG/CjpMgEXph1e0FBQRt8pNniBrQMTJqluD8= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 98e1ad42-2a09-49ed-e2a8-08d6bf21ce5a X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 08:35:24.2086 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB5926 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190412_013527_395765_715FD765 X-CRM114-Status: GOOD ( 15.42 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "M.h. Lian" , "Z.q. Hou" , Xiaowei Bao , Mingkai Hu Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Hou Zhiqiang Just format the code without functionality change. Signed-off-by: Hou Zhiqiang Reviewed-by: Minghuan Lian --- V5: - Retouched the subject. drivers/pci/controller/pcie-mobiveil.c | 261 +++++++++++++------------ 1 file changed, 137 insertions(+), 124 deletions(-) diff --git a/drivers/pci/controller/pcie-mobiveil.c b/drivers/pci/controller/pcie-mobiveil.c index d55c7e780c6e..b87471f08a40 100644 --- a/drivers/pci/controller/pcie-mobiveil.c +++ b/drivers/pci/controller/pcie-mobiveil.c @@ -31,38 +31,40 @@ * translation tables are grouped into windows, each window registers are * grouped into blocks of 4 or 16 registers each */ -#define PAB_REG_BLOCK_SIZE 16 -#define PAB_EXT_REG_BLOCK_SIZE 4 +#define PAB_REG_BLOCK_SIZE 16 +#define PAB_EXT_REG_BLOCK_SIZE 4 -#define PAB_REG_ADDR(offset, win) (offset + (win * PAB_REG_BLOCK_SIZE)) -#define PAB_EXT_REG_ADDR(offset, win) (offset + (win * PAB_EXT_REG_BLOCK_SIZE)) +#define PAB_REG_ADDR(offset, win) \ + (offset + (win * PAB_REG_BLOCK_SIZE)) +#define PAB_EXT_REG_ADDR(offset, win) \ + (offset + (win * PAB_EXT_REG_BLOCK_SIZE)) -#define LTSSM_STATUS 0x0404 -#define LTSSM_STATUS_L0_MASK 0x3f -#define LTSSM_STATUS_L0 0x2d +#define LTSSM_STATUS 0x0404 +#define LTSSM_STATUS_L0_MASK 0x3f +#define LTSSM_STATUS_L0 0x2d -#define PAB_CTRL 0x0808 -#define AMBA_PIO_ENABLE_SHIFT 0 -#define PEX_PIO_ENABLE_SHIFT 1 -#define PAGE_SEL_SHIFT 13 -#define PAGE_SEL_MASK 0x3f -#define PAGE_LO_MASK 0x3ff -#define PAGE_SEL_OFFSET_SHIFT 10 +#define PAB_CTRL 0x0808 +#define AMBA_PIO_ENABLE_SHIFT 0 +#define PEX_PIO_ENABLE_SHIFT 1 +#define PAGE_SEL_SHIFT 13 +#define PAGE_SEL_MASK 0x3f +#define PAGE_LO_MASK 0x3ff +#define PAGE_SEL_OFFSET_SHIFT 10 -#define PAB_AXI_PIO_CTRL 0x0840 -#define APIO_EN_MASK 0xf +#define PAB_AXI_PIO_CTRL 0x0840 +#define APIO_EN_MASK 0xf -#define PAB_PEX_PIO_CTRL 0x08c0 -#define PIO_ENABLE_SHIFT 0 +#define PAB_PEX_PIO_CTRL 0x08c0 +#define PIO_ENABLE_SHIFT 0 #define PAB_INTP_AMBA_MISC_ENB 0x0b0c -#define PAB_INTP_AMBA_MISC_STAT 0x0b1c +#define PAB_INTP_AMBA_MISC_STAT 0x0b1c #define PAB_INTP_INTX_MASK 0x01e0 #define PAB_INTP_MSI_MASK 0x8 -#define PAB_AXI_AMAP_CTRL(win) PAB_REG_ADDR(0x0ba0, win) -#define WIN_ENABLE_SHIFT 0 -#define WIN_TYPE_SHIFT 1 +#define PAB_AXI_AMAP_CTRL(win) PAB_REG_ADDR(0x0ba0, win) +#define WIN_ENABLE_SHIFT 0 +#define WIN_TYPE_SHIFT 1 #define PAB_EXT_AXI_AMAP_SIZE(win) PAB_EXT_REG_ADDR(0xbaf0, win) @@ -70,16 +72,16 @@ #define AXI_WINDOW_ALIGN_MASK 3 #define PAB_AXI_AMAP_PEX_WIN_L(win) PAB_REG_ADDR(0x0ba8, win) -#define PAB_BUS_SHIFT 24 -#define PAB_DEVICE_SHIFT 19 -#define PAB_FUNCTION_SHIFT 16 +#define PAB_BUS_SHIFT 24 +#define PAB_DEVICE_SHIFT 19 +#define PAB_FUNCTION_SHIFT 16 #define PAB_AXI_AMAP_PEX_WIN_H(win) PAB_REG_ADDR(0x0bac, win) #define PAB_INTP_AXI_PIO_CLASS 0x474 -#define PAB_PEX_AMAP_CTRL(win) PAB_REG_ADDR(0x4ba0, win) -#define AMAP_CTRL_EN_SHIFT 0 -#define AMAP_CTRL_TYPE_SHIFT 1 +#define PAB_PEX_AMAP_CTRL(win) PAB_REG_ADDR(0x4ba0, win) +#define AMAP_CTRL_EN_SHIFT 0 +#define AMAP_CTRL_TYPE_SHIFT 1 #define PAB_EXT_PEX_AMAP_SIZEN(win) PAB_EXT_REG_ADDR(0xbef0, win) #define PAB_PEX_AMAP_AXI_WIN(win) PAB_REG_ADDR(0x4ba4, win) @@ -87,39 +89,39 @@ #define PAB_PEX_AMAP_PEX_WIN_H(win) PAB_REG_ADDR(0x4bac, win) /* starting offset of INTX bits in status register */ -#define PAB_INTX_START 5 +#define PAB_INTX_START 5 /* supported number of MSI interrupts */ -#define PCI_NUM_MSI 16 +#define PCI_NUM_MSI 16 /* MSI registers */ -#define MSI_BASE_LO_OFFSET 0x04 -#define MSI_BASE_HI_OFFSET 0x08 -#define MSI_SIZE_OFFSET 0x0c -#define MSI_ENABLE_OFFSET 0x14 -#define MSI_STATUS_OFFSET 0x18 -#define MSI_DATA_OFFSET 0x20 -#define MSI_ADDR_L_OFFSET 0x24 -#define MSI_ADDR_H_OFFSET 0x28 +#define MSI_BASE_LO_OFFSET 0x04 +#define MSI_BASE_HI_OFFSET 0x08 +#define MSI_SIZE_OFFSET 0x0c +#define MSI_ENABLE_OFFSET 0x14 +#define MSI_STATUS_OFFSET 0x18 +#define MSI_DATA_OFFSET 0x20 +#define MSI_ADDR_L_OFFSET 0x24 +#define MSI_ADDR_H_OFFSET 0x28 /* outbound and inbound window definitions */ -#define WIN_NUM_0 0 -#define WIN_NUM_1 1 -#define CFG_WINDOW_TYPE 0 -#define IO_WINDOW_TYPE 1 -#define MEM_WINDOW_TYPE 2 -#define IB_WIN_SIZE ((u64)256 * 1024 * 1024 * 1024) -#define MAX_PIO_WINDOWS 8 +#define WIN_NUM_0 0 +#define WIN_NUM_1 1 +#define CFG_WINDOW_TYPE 0 +#define IO_WINDOW_TYPE 1 +#define MEM_WINDOW_TYPE 2 +#define IB_WIN_SIZE ((u64)256 * 1024 * 1024 * 1024) +#define MAX_PIO_WINDOWS 8 /* Parameters for the waiting for link up routine */ -#define LINK_WAIT_MAX_RETRIES 10 -#define LINK_WAIT_MIN 90000 -#define LINK_WAIT_MAX 100000 +#define LINK_WAIT_MAX_RETRIES 10 +#define LINK_WAIT_MIN 90000 +#define LINK_WAIT_MAX 100000 -#define PAGED_ADDR_BNDRY 0xc00 -#define OFFSET_TO_PAGE_ADDR(off) \ +#define PAGED_ADDR_BNDRY 0xc00 +#define OFFSET_TO_PAGE_ADDR(off) \ ((off & PAGE_LO_MASK) | PAGED_ADDR_BNDRY) -#define OFFSET_TO_PAGE_IDX(off) \ +#define OFFSET_TO_PAGE_IDX(off) \ ((off >> PAGE_SEL_OFFSET_SHIFT) & PAGE_SEL_MASK) struct mobiveil_msi { /* MSI information */ @@ -297,14 +299,14 @@ static void __iomem *mobiveil_pcie_map_bus(struct pci_bus *bus, unsigned int devfn, int where) { struct mobiveil_pcie *pcie = bus->sysdata; + u32 value; if (!mobiveil_pcie_valid_device(bus, devfn)) return NULL; - if (bus->number == pcie->root_bus_nr) { - /* RC config access */ + /* RC config access */ + if (bus->number == pcie->root_bus_nr) return pcie->csr_axi_slave_base + where; - } /* * EP config access (in Config/APIO space) @@ -312,10 +314,12 @@ static void __iomem *mobiveil_pcie_map_bus(struct pci_bus *bus, * (BDF) in PAB_AXI_AMAP_PEX_WIN_L0 Register. * Relies on pci_lock serialization */ - csr_writel(pcie, bus->number << PAB_BUS_SHIFT | - PCI_SLOT(devfn) << PAB_DEVICE_SHIFT | - PCI_FUNC(devfn) << PAB_FUNCTION_SHIFT, - PAB_AXI_AMAP_PEX_WIN_L(WIN_NUM_0)); + value = bus->number << PAB_BUS_SHIFT | + PCI_SLOT(devfn) << PAB_DEVICE_SHIFT | + PCI_FUNC(devfn) << PAB_FUNCTION_SHIFT; + + csr_writel(pcie, value, PAB_AXI_AMAP_PEX_WIN_L(WIN_NUM_0)); + return pcie->config_axi_slave_base + where; } @@ -350,22 +354,22 @@ static void mobiveil_pcie_isr(struct irq_desc *desc) /* Handle INTx */ if (intr_status & PAB_INTP_INTX_MASK) { - shifted_status = csr_readl(pcie, PAB_INTP_AMBA_MISC_STAT) >> - PAB_INTX_START; + shifted_status = csr_readl(pcie, PAB_INTP_AMBA_MISC_STAT); + shifted_status >>= PAB_INTX_START; do { for_each_set_bit(bit, &shifted_status, PCI_NUM_INTX) { virq = irq_find_mapping(pcie->intx_domain, - bit + 1); + bit + 1); if (virq) generic_handle_irq(virq); else - dev_err_ratelimited(dev, - "unexpected IRQ, INT%d\n", bit); + dev_err_ratelimited(dev, "unexpected IRQ, INT%d\n", + bit); /* clear interrupt */ csr_writel(pcie, - shifted_status << PAB_INTX_START, - PAB_INTP_AMBA_MISC_STAT); + shifted_status << PAB_INTX_START, + PAB_INTP_AMBA_MISC_STAT); } } while ((shifted_status >> PAB_INTX_START) != 0); } @@ -375,8 +379,7 @@ static void mobiveil_pcie_isr(struct irq_desc *desc) /* handle MSI interrupts */ while (msi_status & 1) { - msi_data = readl_relaxed(pcie->apb_csr_base - + MSI_DATA_OFFSET); + msi_data = readl_relaxed(pcie->apb_csr_base + MSI_DATA_OFFSET); /* * MSI_STATUS_OFFSET register gets updated to zero @@ -385,18 +388,18 @@ static void mobiveil_pcie_isr(struct irq_desc *desc) * two dummy reads. */ msi_addr_lo = readl_relaxed(pcie->apb_csr_base + - MSI_ADDR_L_OFFSET); + MSI_ADDR_L_OFFSET); msi_addr_hi = readl_relaxed(pcie->apb_csr_base + - MSI_ADDR_H_OFFSET); + MSI_ADDR_H_OFFSET); dev_dbg(dev, "MSI registers, data: %08x, addr: %08x:%08x\n", - msi_data, msi_addr_hi, msi_addr_lo); + msi_data, msi_addr_hi, msi_addr_lo); virq = irq_find_mapping(msi->dev_domain, msi_data); if (virq) generic_handle_irq(virq); msi_status = readl_relaxed(pcie->apb_csr_base + - MSI_STATUS_OFFSET); + MSI_STATUS_OFFSET); } /* Clear the interrupt status */ @@ -413,7 +416,7 @@ static int mobiveil_pcie_parse_dt(struct mobiveil_pcie *pcie) /* map config resource */ res = platform_get_resource_byname(pdev, IORESOURCE_MEM, - "config_axi_slave"); + "config_axi_slave"); pcie->config_axi_slave_base = devm_pci_remap_cfg_resource(dev, res); if (IS_ERR(pcie->config_axi_slave_base)) return PTR_ERR(pcie->config_axi_slave_base); @@ -421,7 +424,7 @@ static int mobiveil_pcie_parse_dt(struct mobiveil_pcie *pcie) /* map csr resource */ res = platform_get_resource_byname(pdev, IORESOURCE_MEM, - "csr_axi_slave"); + "csr_axi_slave"); pcie->csr_axi_slave_base = devm_pci_remap_cfg_resource(dev, res); if (IS_ERR(pcie->csr_axi_slave_base)) return PTR_ERR(pcie->csr_axi_slave_base); @@ -452,7 +455,7 @@ static int mobiveil_pcie_parse_dt(struct mobiveil_pcie *pcie) } static void program_ib_windows(struct mobiveil_pcie *pcie, int win_num, - int pci_addr, u32 type, u64 size) + int pci_addr, u32 type, u64 size) { int pio_ctrl_val; int amap_ctrl_dw; @@ -465,19 +468,20 @@ static void program_ib_windows(struct mobiveil_pcie *pcie, int win_num, } pio_ctrl_val = csr_readl(pcie, PAB_PEX_PIO_CTRL); - csr_writel(pcie, - pio_ctrl_val | (1 << PIO_ENABLE_SHIFT), PAB_PEX_PIO_CTRL); - amap_ctrl_dw = csr_readl(pcie, PAB_PEX_AMAP_CTRL(win_num)); - amap_ctrl_dw = (amap_ctrl_dw | (type << AMAP_CTRL_TYPE_SHIFT)); - amap_ctrl_dw = (amap_ctrl_dw | (1 << AMAP_CTRL_EN_SHIFT)); + pio_ctrl_val |= 1 << PIO_ENABLE_SHIFT; + csr_writel(pcie, pio_ctrl_val, PAB_PEX_PIO_CTRL); - csr_writel(pcie, amap_ctrl_dw | lower_32_bits(size64), - PAB_PEX_AMAP_CTRL(win_num)); + amap_ctrl_dw = csr_readl(pcie, PAB_PEX_AMAP_CTRL(win_num)); + amap_ctrl_dw |= (type << AMAP_CTRL_TYPE_SHIFT) | + (1 << AMAP_CTRL_EN_SHIFT) | + lower_32_bits(size64); + csr_writel(pcie, amap_ctrl_dw, PAB_PEX_AMAP_CTRL(win_num)); csr_writel(pcie, upper_32_bits(size64), PAB_EXT_PEX_AMAP_SIZEN(win_num)); csr_writel(pcie, pci_addr, PAB_PEX_AMAP_AXI_WIN(win_num)); + csr_writel(pcie, pci_addr, PAB_PEX_AMAP_PEX_WIN_L(win_num)); csr_writel(pcie, 0, PAB_PEX_AMAP_PEX_WIN_H(win_num)); } @@ -486,7 +490,8 @@ static void program_ib_windows(struct mobiveil_pcie *pcie, int win_num, * routine to program the outbound windows */ static void program_ob_windows(struct mobiveil_pcie *pcie, int win_num, - u64 cpu_addr, u64 pci_addr, u32 config_io_bit, u64 size) + u64 cpu_addr, u64 pci_addr, + u32 config_io_bit, u64 size) { u32 value, type; @@ -505,7 +510,7 @@ static void program_ob_windows(struct mobiveil_pcie *pcie, int win_num, type = config_io_bit; value = csr_readl(pcie, PAB_AXI_AMAP_CTRL(win_num)); csr_writel(pcie, 1 << WIN_ENABLE_SHIFT | type << WIN_TYPE_SHIFT | - lower_32_bits(size64), PAB_AXI_AMAP_CTRL(win_num)); + lower_32_bits(size64), PAB_AXI_AMAP_CTRL(win_num)); csr_writel(pcie, upper_32_bits(size64), PAB_EXT_AXI_AMAP_SIZE(win_num)); @@ -515,14 +520,14 @@ static void program_ob_windows(struct mobiveil_pcie *pcie, int win_num, */ value = csr_readl(pcie, PAB_AXI_AMAP_AXI_WIN(win_num)); csr_writel(pcie, cpu_addr & (~AXI_WINDOW_ALIGN_MASK), - PAB_AXI_AMAP_AXI_WIN(win_num)); + PAB_AXI_AMAP_AXI_WIN(win_num)); value = csr_readl(pcie, PAB_AXI_AMAP_PEX_WIN_H(win_num)); csr_writel(pcie, lower_32_bits(pci_addr), - PAB_AXI_AMAP_PEX_WIN_L(win_num)); + PAB_AXI_AMAP_PEX_WIN_L(win_num)); csr_writel(pcie, upper_32_bits(pci_addr), - PAB_AXI_AMAP_PEX_WIN_H(win_num)); + PAB_AXI_AMAP_PEX_WIN_H(win_num)); pcie->ob_wins_configured++; } @@ -538,7 +543,9 @@ static int mobiveil_bringup_link(struct mobiveil_pcie *pcie) usleep_range(LINK_WAIT_MIN, LINK_WAIT_MAX); } + dev_err(&pcie->pdev->dev, "link never came up\n"); + return -ETIMEDOUT; } @@ -551,16 +558,16 @@ static void mobiveil_pcie_enable_msi(struct mobiveil_pcie *pcie) msi->msi_pages_phys = (phys_addr_t)msg_addr; writel_relaxed(lower_32_bits(msg_addr), - pcie->apb_csr_base + MSI_BASE_LO_OFFSET); + pcie->apb_csr_base + MSI_BASE_LO_OFFSET); writel_relaxed(upper_32_bits(msg_addr), - pcie->apb_csr_base + MSI_BASE_HI_OFFSET); + pcie->apb_csr_base + MSI_BASE_HI_OFFSET); writel_relaxed(4096, pcie->apb_csr_base + MSI_SIZE_OFFSET); writel_relaxed(1, pcie->apb_csr_base + MSI_ENABLE_OFFSET); } static int mobiveil_host_init(struct mobiveil_pcie *pcie) { - u32 value, pab_ctrl, type = 0; + u32 value, pab_ctrl, type; int err; struct resource_entry *win, *tmp; @@ -575,26 +582,27 @@ static int mobiveil_host_init(struct mobiveil_pcie *pcie) * Space */ value = csr_readl(pcie, PCI_COMMAND); - csr_writel(pcie, value | PCI_COMMAND_IO | PCI_COMMAND_MEMORY | - PCI_COMMAND_MASTER, PCI_COMMAND); + value |= PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER; + csr_writel(pcie, value, PCI_COMMAND); /* * program PIO Enable Bit to 1 (and PEX PIO Enable to 1) in PAB_CTRL * register */ pab_ctrl = csr_readl(pcie, PAB_CTRL); - csr_writel(pcie, pab_ctrl | (1 << AMBA_PIO_ENABLE_SHIFT) | - (1 << PEX_PIO_ENABLE_SHIFT), PAB_CTRL); + pab_ctrl |= (1 << AMBA_PIO_ENABLE_SHIFT) | (1 << PEX_PIO_ENABLE_SHIFT); + csr_writel(pcie, pab_ctrl, PAB_CTRL); csr_writel(pcie, (PAB_INTP_INTX_MASK | PAB_INTP_MSI_MASK), - PAB_INTP_AMBA_MISC_ENB); + PAB_INTP_AMBA_MISC_ENB); /* * program PIO Enable Bit to 1 and Config Window Enable Bit to 1 in * PAB_AXI_PIO_CTRL Register */ value = csr_readl(pcie, PAB_AXI_PIO_CTRL); - csr_writel(pcie, value | APIO_EN_MASK, PAB_AXI_PIO_CTRL); + value |= APIO_EN_MASK; + csr_writel(pcie, value, PAB_AXI_PIO_CTRL); /* * we'll program one outbound window for config reads and @@ -605,25 +613,25 @@ static int mobiveil_host_init(struct mobiveil_pcie *pcie) /* config outbound translation window */ program_ob_windows(pcie, pcie->ob_wins_configured, - pcie->ob_io_res->start, 0, CFG_WINDOW_TYPE, - resource_size(pcie->ob_io_res)); + pcie->ob_io_res->start, 0, CFG_WINDOW_TYPE, + resource_size(pcie->ob_io_res)); /* memory inbound translation window */ program_ib_windows(pcie, WIN_NUM_1, 0, MEM_WINDOW_TYPE, IB_WIN_SIZE); /* Get the I/O and memory ranges from DT */ resource_list_for_each_entry_safe(win, tmp, &pcie->resources) { - type = 0; if (resource_type(win->res) == IORESOURCE_MEM) type = MEM_WINDOW_TYPE; - if (resource_type(win->res) == IORESOURCE_IO) + else if (resource_type(win->res) == IORESOURCE_IO) type = IO_WINDOW_TYPE; - if (type) { - /* configure outbound translation window */ - program_ob_windows(pcie, pcie->ob_wins_configured, - win->res->start, 0, type, - resource_size(win->res)); - } + else + continue; + + /* configure outbound translation window */ + program_ob_windows(pcie, pcie->ob_wins_configured, + win->res->start, 0, type, + resource_size(win->res)); } /* setup MSI hardware registers */ @@ -643,7 +651,8 @@ static void mobiveil_mask_intx_irq(struct irq_data *data) mask = 1 << ((data->hwirq + PAB_INTX_START) - 1); raw_spin_lock_irqsave(&pcie->intx_mask_lock, flags); shifted_val = csr_readl(pcie, PAB_INTP_AMBA_MISC_ENB); - csr_writel(pcie, (shifted_val & (~mask)), PAB_INTP_AMBA_MISC_ENB); + shifted_val &= ~mask; + csr_writel(pcie, shifted_val, PAB_INTP_AMBA_MISC_ENB); raw_spin_unlock_irqrestore(&pcie->intx_mask_lock, flags); } @@ -658,7 +667,8 @@ static void mobiveil_unmask_intx_irq(struct irq_data *data) mask = 1 << ((data->hwirq + PAB_INTX_START) - 1); raw_spin_lock_irqsave(&pcie->intx_mask_lock, flags); shifted_val = csr_readl(pcie, PAB_INTP_AMBA_MISC_ENB); - csr_writel(pcie, (shifted_val | mask), PAB_INTP_AMBA_MISC_ENB); + shifted_val |= mask; + csr_writel(pcie, shifted_val, PAB_INTP_AMBA_MISC_ENB); raw_spin_unlock_irqrestore(&pcie->intx_mask_lock, flags); } @@ -672,10 +682,11 @@ static struct irq_chip intx_irq_chip = { /* routine to setup the INTx related data */ static int mobiveil_pcie_intx_map(struct irq_domain *domain, unsigned int irq, - irq_hw_number_t hwirq) + irq_hw_number_t hwirq) { irq_set_chip_and_handler(irq, &intx_irq_chip, handle_level_irq); irq_set_chip_data(irq, domain->host_data); + return 0; } @@ -692,7 +703,7 @@ static struct irq_chip mobiveil_msi_irq_chip = { static struct msi_domain_info mobiveil_msi_domain_info = { .flags = (MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS | - MSI_FLAG_MULTI_PCI_MSI | MSI_FLAG_PCI_MSIX), + MSI_FLAG_MULTI_PCI_MSI | MSI_FLAG_PCI_MSIX), .chip = &mobiveil_msi_irq_chip, }; @@ -710,7 +721,7 @@ static void mobiveil_compose_msi_msg(struct irq_data *data, struct msi_msg *msg) } static int mobiveil_msi_set_affinity(struct irq_data *irq_data, - const struct cpumask *mask, bool force) + const struct cpumask *mask, bool force) { return -EINVAL; } @@ -722,7 +733,8 @@ static struct irq_chip mobiveil_msi_bottom_irq_chip = { }; static int mobiveil_irq_msi_domain_alloc(struct irq_domain *domain, - unsigned int virq, unsigned int nr_irqs, void *args) + unsigned int virq, + unsigned int nr_irqs, void *args) { struct mobiveil_pcie *pcie = domain->host_data; struct mobiveil_msi *msi = &pcie->msi; @@ -742,13 +754,13 @@ static int mobiveil_irq_msi_domain_alloc(struct irq_domain *domain, mutex_unlock(&msi->lock); irq_domain_set_info(domain, virq, bit, &mobiveil_msi_bottom_irq_chip, - domain->host_data, handle_level_irq, - NULL, NULL); + domain->host_data, handle_level_irq, NULL, NULL); return 0; } static void mobiveil_irq_msi_domain_free(struct irq_domain *domain, - unsigned int virq, unsigned int nr_irqs) + unsigned int virq, + unsigned int nr_irqs) { struct irq_data *d = irq_domain_get_irq_data(domain, virq); struct mobiveil_pcie *pcie = irq_data_get_irq_chip_data(d); @@ -756,12 +768,11 @@ static void mobiveil_irq_msi_domain_free(struct irq_domain *domain, mutex_lock(&msi->lock); - if (!test_bit(d->hwirq, msi->msi_irq_in_use)) { + if (!test_bit(d->hwirq, msi->msi_irq_in_use)) dev_err(&pcie->pdev->dev, "trying to free unused MSI#%lu\n", d->hwirq); - } else { + else __clear_bit(d->hwirq, msi->msi_irq_in_use); - } mutex_unlock(&msi->lock); } @@ -785,12 +796,14 @@ static int mobiveil_allocate_msi_domains(struct mobiveil_pcie *pcie) } msi->msi_domain = pci_msi_create_irq_domain(fwnode, - &mobiveil_msi_domain_info, msi->dev_domain); + &mobiveil_msi_domain_info, + msi->dev_domain); if (!msi->msi_domain) { dev_err(dev, "failed to create MSI domain\n"); irq_domain_remove(msi->dev_domain); return -ENOMEM; } + return 0; } @@ -801,8 +814,8 @@ static int mobiveil_pcie_init_irq_domain(struct mobiveil_pcie *pcie) int ret; /* setup INTx */ - pcie->intx_domain = irq_domain_add_linear(node, - PCI_NUM_INTX, &intx_domain_ops, pcie); + pcie->intx_domain = irq_domain_add_linear(node, PCI_NUM_INTX, + &intx_domain_ops, pcie); if (!pcie->intx_domain) { dev_err(dev, "Failed to get a INTx IRQ domain\n"); @@ -917,10 +930,10 @@ MODULE_DEVICE_TABLE(of, mobiveil_pcie_of_match); static struct platform_driver mobiveil_pcie_driver = { .probe = mobiveil_pcie_probe, .driver = { - .name = "mobiveil-pcie", - .of_match_table = mobiveil_pcie_of_match, - .suppress_bind_attrs = true, - }, + .name = "mobiveil-pcie", + .of_match_table = mobiveil_pcie_of_match, + .suppress_bind_attrs = true, + }, }; builtin_platform_driver(mobiveil_pcie_driver); -- 2.17.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel