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=-6.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable 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 90CEDC433E0 for ; Fri, 22 May 2020 05:32:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4E7EB20757 for ; Fri, 22 May 2020 05:32:10 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="kxvTXm0T" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726910AbgEVFcJ (ORCPT ); Fri, 22 May 2020 01:32:09 -0400 Received: from mail-eopbgr10089.outbound.protection.outlook.com ([40.107.1.89]:52899 "EHLO EUR02-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726421AbgEVFcJ (ORCPT ); Fri, 22 May 2020 01:32:09 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MvbeqknbPDlDDp5VfxM1IIHND1Hlk6i2W0Ag5BZ+VSy2QZiMM6PDR2cBNDjUmyvTYOFyjdMZCvMK2v/rjmDJs3E4MZxk/AgnhuxFBj5rS1g981LXe91i1jv4+sF7jTcSl4u6Kv82uEqKcA9NbT1+VigY06Q40ISt+2BoLAqOEX+tYbHnTRtiVVooksJ60vfi2oSjFbbtKGpm6/65GMxCM0qDX/So19B8k3x7A63t2VINnnZnFqkYgdwFmIf+o/kgyrUzMa4pVfdX2AOHxhQcTNOleXJ9Pq4dOaSQ/SjuEfBYH8B+oU0SDyzc3XnfHiVw2QRTF+wJgyDY5sORB6yTwg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VR4f1IB/r+vImNDvxHdENzeDfXiXxzGuWKEyQt40AGg=; b=YV9mSDkzhlKZzJg0qzaKk1mYL+wd/DHZoKrPaPYS8psQ63Y4eVr4cKVUu45nxVcr7N4am8JXtQrpIzQJkH0PerG5o18+m07zX9CSaNS0mUPJWrqRzNdM2TT8DKWOKCsU8H04elamLlILVjpeUA9G4jJmV2m/mUZ5FPMQkWg99cbdAfcvXfRndCHws0ZfOpZ6c4L9r/+QexciD7znmM43EP9lOLLWfW2ENd5LD+IuUGMo6ZaMrPbr2+m/Xl1Z5c1apo8h8bhayeIIi9bmUEcxrbvEF8iLEvb1iSJAT85MGid42mRY1soeNCKdZ2IIBiiLN7/EEw1d0YXtBm6gQ4T2Ww== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VR4f1IB/r+vImNDvxHdENzeDfXiXxzGuWKEyQt40AGg=; b=kxvTXm0T8qxMHVxUbkSoPBdME5KY/Rqmk6ensgDgIIAgGlycaqPG7F2rI+xldG8+I3EjzAg6ERCitrF+pRnkW4MpLwZryPRAspqumv69T6a3eswOChzs3gxeTATeGi+H/jD5PvAaP/31DLcT3n5Wgo/8HzR5MsFAGSMx7WsXUV4= Received: from AM6PR04MB4984.eurprd04.prod.outlook.com (2603:10a6:20b:7::23) by AM6PR04MB4550.eurprd04.prod.outlook.com (2603:10a6:20b:17::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3021.23; Fri, 22 May 2020 05:32:02 +0000 Received: from AM6PR04MB4984.eurprd04.prod.outlook.com ([fe80::5167:8ffa:569e:fa57]) by AM6PR04MB4984.eurprd04.prod.outlook.com ([fe80::5167:8ffa:569e:fa57%4]) with mapi id 15.20.3021.024; Fri, 22 May 2020 05:32:02 +0000 From: Makarand Pawagi To: Laurentiu Tudor , Lorenzo Pieralisi , "linux-arm-kernel@lists.infradead.org" CC: "Diana Madalina Craciun (OSS)" , "iommu@lists.linux-foundation.org" , "linux-acpi@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-pci@vger.kernel.org" , Rob Herring , "Rafael J. Wysocki" , Joerg Roedel , Hanjun Guo , Bjorn Helgaas , Sudeep Holla , Robin Murphy , Catalin Marinas , Will Deacon , Marc Zyngier Subject: RE: [PATCH 12/12] bus: fsl-mc: Add ACPI support for fsl-mc Thread-Topic: [PATCH 12/12] bus: fsl-mc: Add ACPI support for fsl-mc Thread-Index: AQHWL4EA+tWCI6MmokOtaoHDA2UgG6izlSoA Date: Fri, 22 May 2020 05:32:02 +0000 Message-ID: References: <20200521130008.8266-1-lorenzo.pieralisi@arm.com> <20200521130008.8266-13-lorenzo.pieralisi@arm.com> <3045acd5-0bcf-40c1-e65f-0b740200b2e0@nxp.com> In-Reply-To: <3045acd5-0bcf-40c1-e65f-0b740200b2e0@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=none action=none header.from=nxp.com; x-originating-ip: [117.98.155.61] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 87e9bf14-772d-4c6f-f75b-08d7fe1174cd x-ms-traffictypediagnostic: AM6PR04MB4550: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:232; x-forefront-prvs: 04111BAC64 x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: T3Ena4z7HkAbJv6kiwiLfFFO3w6lCXB3N9xPEGc3wxLs27f2xIe6YC4nXoNFIWxMZLgItpnSfnR4qVnYTjc5vv2pdbmBmuuBlSnPMwdcWKu/D42NVSBqwgcbx62yWw2qJG+9uxq5AiGlFONJNx5ZFVE8kTh4QMkL5Laz21+93HrmEmJZvMfr0Y4orRyzmseyHw8SQfaaNW+bgQbQoU9rIZByEsukqqHZcP296i2L4gXxxeoreZpsVEUAgwW08tb2yU13MGymBYMhS5kJEvY9MGZLiLz/zuK3sgA3Hj9A0/xTpnkASV49BsPCXNZIGLCLzQTv4Hr1gACxTfPwb4UvyQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR04MB4984.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(396003)(346002)(366004)(39860400002)(136003)(376002)(186003)(26005)(53546011)(7696005)(316002)(4326008)(8676002)(8936002)(478600001)(33656002)(9686003)(110136005)(55016002)(86362001)(54906003)(5660300002)(71200400001)(66946007)(7416002)(44832011)(6506007)(66556008)(2906002)(64756008)(30864003)(76116006)(66446008)(66476007)(52536014);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: vvbljHZumA7yjXZKrXxWFnll/qBE2tXt7iYzeKkOmrpdVCDeAJYHHF0ts8Da3WZpGMCQKgs5ttOCfaZpXn4GMdU74WwNmr05thDyUCEjWGJJQQcF1M6slzyyKDY9JCfC6wtvg5CWi1cdyC9wnpK7XXeoVVEhME5SQLTSykFaZPq/xKcWhLAAHqTxWVYJkLHO/xF7hpwFtHUDn21EiHTZJ148kshnNxzyA/V3BUTphHyYO/V3kYsoiCB2te0nFvjZbJENVa7ZvjYKsgHwOo/e7Sew480pfuJ+5rAG+oE6lOw1u8doRo+/6CBLRYQRj8FYVpni2fF6U5ejyfLiJ5Pig2pFCQPesnlkQnFBafYBQhDBg8IKaFgkefcm5do85P5MOeF2WbQRZ46kzEB/yQoGx16rXaEIbXDpF4nvbCA3eDkTqtl4rluuW+7RXy+mjZv9uQ1jb9ObiNqxNY55YoaxeXp7+HDEGD7+cjlJZBsL+lw= 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: 87e9bf14-772d-4c6f-f75b-08d7fe1174cd X-MS-Exchange-CrossTenant-originalarrivaltime: 22 May 2020 05:32:02.2579 (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-CrossTenant-userprincipalname: QkkfRMSCi+clMnaPgtsg8cf0vpgF02P+zgW9zNvh0giSmLXovQ4ELmP8UFT9Ssp44K7kELWCKrXKSqC+OYxgxQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB4550 Sender: linux-acpi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-acpi@vger.kernel.org SGkgTG9yZW56bywNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBMYXVy ZW50aXUgVHVkb3IgPGxhdXJlbnRpdS50dWRvckBueHAuY29tPg0KPiBTZW50OiBUaHVyc2RheSwg TWF5IDIxLCAyMDIwIDg6MzMgUE0NCj4gVG86IExvcmVuem8gUGllcmFsaXNpIDxsb3JlbnpvLnBp ZXJhbGlzaUBhcm0uY29tPjsgbGludXgtYXJtLQ0KPiBrZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9y Zw0KPiBDYzogRGlhbmEgTWFkYWxpbmEgQ3JhY2l1biAoT1NTKSA8ZGlhbmEuY3JhY2l1bkBvc3Mu bnhwLmNvbT47IE1ha2FyYW5kDQo+IFBhd2FnaSA8bWFrYXJhbmQucGF3YWdpQG54cC5jb20+OyBp b21tdUBsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZzsNCj4gbGludXgtYWNwaUB2Z2VyLmtlcm5l bC5vcmc7IGRldmljZXRyZWVAdmdlci5rZXJuZWwub3JnOyBsaW51eC0NCj4gcGNpQHZnZXIua2Vy bmVsLm9yZzsgUm9iIEhlcnJpbmcgPHJvYmgrZHRAa2VybmVsLm9yZz47IFJhZmFlbCBKLiBXeXNv Y2tpDQo+IDxyandAcmp3eXNvY2tpLm5ldD47IEpvZXJnIFJvZWRlbCA8am9yb0A4Ynl0ZXMub3Jn PjsgSGFuanVuIEd1bw0KPiA8Z3VvaGFuanVuQGh1YXdlaS5jb20+OyBCam9ybiBIZWxnYWFzIDxi aGVsZ2Fhc0Bnb29nbGUuY29tPjsgU3VkZWVwDQo+IEhvbGxhIDxzdWRlZXAuaG9sbGFAYXJtLmNv bT47IFJvYmluIE11cnBoeSA8cm9iaW4ubXVycGh5QGFybS5jb20+Ow0KPiBDYXRhbGluIE1hcmlu YXMgPGNhdGFsaW4ubWFyaW5hc0Bhcm0uY29tPjsgV2lsbCBEZWFjb24gPHdpbGxAa2VybmVsLm9y Zz47DQo+IE1hcmMgWnluZ2llciA8bWF6QGtlcm5lbC5vcmc+DQo+IFN1YmplY3Q6IFJlOiBbUEFU Q0ggMTIvMTJdIGJ1czogZnNsLW1jOiBBZGQgQUNQSSBzdXBwb3J0IGZvciBmc2wtbWMNCj4gDQo+ IEhpIExvcmVuem8sDQo+IA0KPiBPbiA1LzIxLzIwMjAgNDowMCBQTSwgTG9yZW56byBQaWVyYWxp c2kgd3JvdGU6DQo+ID4gRnJvbTogRGlhbmEgQ3JhY2l1biA8ZGlhbmEuY3JhY2l1bkBvc3Mubnhw LmNvbT4NCj4gPg0KPiA+IEFkZCBBQ1BJIHN1cHBvcnQgaW4gdGhlIGZzbC1tYyBkcml2ZXIuIERy aXZlciBwYXJzZXMgTUMgRFNEVCB0YWJsZSB0bw0KPiA+IGV4dHJhY3QgbWVtb3J5IGFuZCBvdGhl ciByZXNvdXJjZXMuDQo+ID4NCj4gPiBJbnRlcnJ1cHQgKEdJQyBJVFMpIGluZm9ybWF0aW9uIGlz IGV4dHJhY3RlZCBmcm9tIHRoZSBNQURUIHRhYmxlIGJ5DQo+ID4gZHJpdmVycy9pcnFjaGlwL2ly cS1naWMtdjMtaXRzLWZzbC1tYy1tc2kuYy4NCj4gPg0KPiA+IElPUlQgdGFibGUgaXMgcGFyc2Vk IHRvIGNvbmZpZ3VyZSBETUEuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBNYWthcmFuZCBQYXdh Z2kgPG1ha2FyYW5kLnBhd2FnaUBueHAuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IERpYW5hIENy YWNpdW4gPGRpYW5hLmNyYWNpdW5Ab3NzLm54cC5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogTGF1 cmVudGl1IFR1ZG9yIDxsYXVyZW50aXUudHVkb3JAbnhwLmNvbT4NCj4gPiAtLS0NCj4gDQo+IFRo ZSBhdXRob3Igb2YgdGhpcyBwYXRjaCBzaG91bGQgYmUgTWFrYXJhbmQuIEkgdGhpbmsgSSBhY2Np ZGVudGFseSBicm9rZSBpdCB3aGVuDQo+IHdlIGV4Y2hhbmdlZCB0aGUgcGF0Y2hlcy4gVmVyeSBz b3JyeSBhYm91dCBpdC4NCj4gDQogDQpXaWxsIHlvdSBiZSBhYmxlIHRvIGNvcnJlY3QgdGhpcyBv ciBzaG91bGQgSSBwb3N0IGFub3RoZXIgcGF0Y2g/DQoNCj4gLS0tDQo+IEJlc3QgUmVnYXJkcywg TGF1cmVudGl1DQo+IA0KPiANCj4gPiAgZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYyAg ICAgICAgICAgICB8IDczICsrKysrKysrKysrKysrKy0tLS0tDQo+ID4gIGRyaXZlcnMvYnVzL2Zz bC1tYy9mc2wtbWMtbXNpLmMgICAgICAgICAgICAgfCAzNyArKysrKy0tLS0tDQo+ID4gIGRyaXZl cnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy1mc2wtbWMtbXNpLmMgfCA3NQ0KPiA+ICsrKysrKysr KysrKysrKysrKysrLQ0KPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDE1MCBpbnNlcnRpb25zKCspLCAz NSBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2J1cy9mc2wtbWMv ZnNsLW1jLWJ1cy5jDQo+ID4gYi9kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jIGluZGV4 IDgyNGZmNzdiYmU4Ni4uMzI0ZDQ5ZDZkZjg5DQo+ID4gMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVy cy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYw0KPiA+ICsrKyBiL2RyaXZlcnMvYnVzL2ZzbC1tYy9m c2wtbWMtYnVzLmMNCj4gPiBAQCAtMTgsNiArMTgsOCBAQA0KPiA+ICAjaW5jbHVkZSA8bGludXgv Yml0b3BzLmg+DQo+ID4gICNpbmNsdWRlIDxsaW51eC9tc2kuaD4NCj4gPiAgI2luY2x1ZGUgPGxp bnV4L2RtYS1tYXBwaW5nLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9hY3BpLmg+DQo+ID4gKyNp bmNsdWRlIDxsaW51eC9pb21tdS5oPg0KPiA+DQo+ID4gICNpbmNsdWRlICJmc2wtbWMtcHJpdmF0 ZS5oIg0KPiA+DQo+ID4gQEAgLTM4LDYgKzQwLDcgQEAgc3RydWN0IGZzbF9tYyB7DQo+ID4gIAlz dHJ1Y3QgZnNsX21jX2RldmljZSAqcm9vdF9tY19idXNfZGV2Ow0KPiA+ICAJdTggbnVtX3RyYW5z bGF0aW9uX3JhbmdlczsNCj4gPiAgCXN0cnVjdCBmc2xfbWNfYWRkcl90cmFuc2xhdGlvbl9yYW5n ZSAqdHJhbnNsYXRpb25fcmFuZ2VzOw0KPiA+ICsJdm9pZCAqZnNsX21jX3JlZ3M7DQo+ID4gIH07 DQo+ID4NCj4gPiAgLyoqDQo+ID4gQEAgLTU2LDYgKzU5LDEwIEBAIHN0cnVjdCBmc2xfbWNfYWRk cl90cmFuc2xhdGlvbl9yYW5nZSB7DQo+ID4gIAlwaHlzX2FkZHJfdCBzdGFydF9waHlzX2FkZHI7 DQo+ID4gIH07DQo+ID4NCj4gPiArI2RlZmluZSBGU0xfTUNfRkFQUgkweDI4DQo+ID4gKyNkZWZp bmUgTUNfRkFQUl9QTAlCSVQoMTgpDQo+ID4gKyNkZWZpbmUgTUNfRkFQUl9CTVQJQklUKDE3KQ0K PiA+ICsNCj4gPiAgLyoqDQo+ID4gICAqIGZzbF9tY19idXNfbWF0Y2ggLSBkZXZpY2UgdG8gZHJp dmVyIG1hdGNoaW5nIGNhbGxiYWNrDQo+ID4gICAqIEBkZXY6IHRoZSBmc2wtbWMgZGV2aWNlIHRv IG1hdGNoIGFnYWluc3QgQEAgLTEyNCw3ICsxMzEsMTAgQEANCj4gPiBzdGF0aWMgaW50IGZzbF9t Y19kbWFfY29uZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRldikNCj4gPiAgCXdoaWxlIChkZXZfaXNf ZnNsX21jKGRtYV9kZXYpKQ0KPiA+ICAJCWRtYV9kZXYgPSBkbWFfZGV2LT5wYXJlbnQ7DQo+ID4N Cj4gPiAtCXJldHVybiBvZl9kbWFfY29uZmlndXJlX2lkKGRldiwgZG1hX2Rldi0+b2Zfbm9kZSwg MCwgJmlucHV0X2lkKTsNCj4gPiArCWlmIChkZXZfb2Zfbm9kZShkbWFfZGV2KSkNCj4gPiArCQly ZXR1cm4gb2ZfZG1hX2NvbmZpZ3VyZV9pZChkZXYsIGRtYV9kZXYtPm9mX25vZGUsIDAsDQo+ICZp bnB1dF9pZCk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIGFjcGlfZG1hX2NvbmZpZ3VyZV9pZChkZXYs IERFVl9ETUFfQ09IRVJFTlQsICZpbnB1dF9pZCk7DQo+ID4gIH0NCj4gPg0KPiA+ICBzdGF0aWMg c3NpemVfdCBtb2RhbGlhc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0DQo+ID4gZGV2 aWNlX2F0dHJpYnV0ZSAqYXR0ciwgQEAgLTg2NSw4ICs4NzUsMTEgQEAgc3RhdGljIGludA0KPiBm c2xfbWNfYnVzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ID4gIAlzdHJ1 Y3QgZnNsX21jX2lvICptY19pbyA9IE5VTEw7DQo+ID4gIAlpbnQgY29udGFpbmVyX2lkOw0KPiA+ ICAJcGh5c19hZGRyX3QgbWNfcG9ydGFsX3BoeXNfYWRkcjsNCj4gPiAtCXUzMiBtY19wb3J0YWxf c2l6ZTsNCj4gPiAtCXN0cnVjdCByZXNvdXJjZSByZXM7DQo+ID4gKwl1MzIgbWNfcG9ydGFsX3Np emUsIG1jX3N0cmVhbV9pZDsNCj4gPiArCXN0cnVjdCByZXNvdXJjZSAqcGxhdF9yZXM7DQo+ID4g Kw0KPiA+ICsJaWYgKCFpb21tdV9wcmVzZW50KCZmc2xfbWNfYnVzX3R5cGUpKQ0KPiA+ICsJCXJl dHVybiAtRVBST0JFX0RFRkVSOw0KPiA+DQo+ID4gIAltYyA9IGRldm1fa3phbGxvYygmcGRldi0+ ZGV2LCBzaXplb2YoKm1jKSwgR0ZQX0tFUk5FTCk7DQo+ID4gIAlpZiAoIW1jKQ0KPiA+IEBAIC04 NzQsMTkgKzg4NywzMyBAQCBzdGF0aWMgaW50IGZzbF9tY19idXNfcHJvYmUoc3RydWN0DQo+ID4g cGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+DQo+ID4gIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShw ZGV2LCBtYyk7DQo+ID4NCj4gPiArCXBsYXRfcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBk ZXYsIElPUkVTT1VSQ0VfTUVNLCAxKTsNCj4gPiArCW1jLT5mc2xfbWNfcmVncyA9IGRldm1faW9y ZW1hcF9yZXNvdXJjZSgmcGRldi0+ZGV2LCBwbGF0X3Jlcyk7DQo+ID4gKwlpZiAoSVNfRVJSKG1j LT5mc2xfbWNfcmVncykpDQo+ID4gKwkJcmV0dXJuIFBUUl9FUlIobWMtPmZzbF9tY19yZWdzKTsN Cj4gPiArDQo+ID4gKwlpZiAoSVNfRU5BQkxFRChDT05GSUdfQUNQSSkgJiYgIWRldl9vZl9ub2Rl KCZwZGV2LT5kZXYpKSB7DQo+ID4gKwkJbWNfc3RyZWFtX2lkID0gcmVhZGwobWMtPmZzbF9tY19y ZWdzICsgRlNMX01DX0ZBUFIpOw0KPiA+ICsJCS8qDQo+ID4gKwkJICogSFcgT1JzIHRoZSBQTCBh bmQgQk1UIGJpdCwgcGxhY2VzIHRoZSByZXN1bHQgaW4gYml0IDE1IG9mDQo+ID4gKwkJICogdGhl IFN0cmVhbUlEIGFuZCBPUnMgaW4gdGhlIElDSUQuIENhbGN1bGF0ZSBpdCBhY2NvcmRpbmdseS4N Cj4gPiArCQkgKi8NCj4gPiArCQltY19zdHJlYW1faWQgPSAobWNfc3RyZWFtX2lkICYgMHhmZmZm KSB8DQo+ID4gKwkJCQkoKG1jX3N0cmVhbV9pZCAmIChNQ19GQVBSX1BMIHwNCj4gTUNfRkFQUl9C TVQpKSA/DQo+ID4gKwkJCQkJMHg0MDAwIDogMCk7DQo+ID4gKwkJZXJyb3IgPSBhY3BpX2RtYV9j b25maWd1cmVfaWQoJnBkZXYtPmRldiwNCj4gREVWX0RNQV9DT0hFUkVOVCwNCj4gPiArCQkJCQkg ICAgICAmbWNfc3RyZWFtX2lkKTsNCj4gPiArCQlpZiAoZXJyb3IpDQo+ID4gKwkJCWRldl93YXJu KCZwZGV2LT5kZXYsICJmYWlsZWQgdG8gY29uZmlndXJlDQo+IGRtYTogJWQuXG4iLA0KPiA+ICsJ CQkJIGVycm9yKTsNCj4gPiArCX0NCj4gPiArDQo+ID4gIAkvKg0KPiA+ICAJICogR2V0IHBoeXNp Y2FsIGFkZHJlc3Mgb2YgTUMgcG9ydGFsIGZvciB0aGUgcm9vdCBEUFJDOg0KPiA+ICAJICovDQo+ ID4gLQllcnJvciA9IG9mX2FkZHJlc3NfdG9fcmVzb3VyY2UocGRldi0+ZGV2Lm9mX25vZGUsIDAs ICZyZXMpOw0KPiA+IC0JaWYgKGVycm9yIDwgMCkgew0KPiA+IC0JCWRldl9lcnIoJnBkZXYtPmRl diwNCj4gPiAtCQkJIm9mX2FkZHJlc3NfdG9fcmVzb3VyY2UoKSBmYWlsZWQgZm9yICVwT0ZcbiIs DQo+ID4gLQkJCXBkZXYtPmRldi5vZl9ub2RlKTsNCj4gPiAtCQlyZXR1cm4gZXJyb3I7DQo+ID4g LQl9DQo+ID4gLQ0KPiA+IC0JbWNfcG9ydGFsX3BoeXNfYWRkciA9IHJlcy5zdGFydDsNCj4gPiAt CW1jX3BvcnRhbF9zaXplID0gcmVzb3VyY2Vfc2l6ZSgmcmVzKTsNCj4gPiArCXBsYXRfcmVzID0g cGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsNCj4gPiArCW1j X3BvcnRhbF9waHlzX2FkZHIgPSBwbGF0X3Jlcy0+c3RhcnQ7DQo+ID4gKwltY19wb3J0YWxfc2l6 ZSA9IHJlc291cmNlX3NpemUocGxhdF9yZXMpOw0KPiA+ICAJZXJyb3IgPSBmc2xfY3JlYXRlX21j X2lvKCZwZGV2LT5kZXYsIG1jX3BvcnRhbF9waHlzX2FkZHIsDQo+ID4gIAkJCQkgbWNfcG9ydGFs X3NpemUsIE5VTEwsDQo+ID4gIAkJCQkgRlNMX01DX0lPX0FUT01JQ19DT05URVhUX1BPUlRBTCwN Cj4gJm1jX2lvKTsgQEAgLTkwMywxMSArOTMwLDEzIEBADQo+ID4gc3RhdGljIGludCBmc2xfbWNf YnVzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ID4gIAlkZXZfaW5mbygm cGRldi0+ZGV2LCAiTUMgZmlybXdhcmUgdmVyc2lvbjogJXUuJXUuJXVcbiIsDQo+ID4gIAkJIG1j X3ZlcnNpb24ubWFqb3IsIG1jX3ZlcnNpb24ubWlub3IsIG1jX3ZlcnNpb24ucmV2aXNpb24pOw0K PiA+DQo+ID4gLQllcnJvciA9IGdldF9tY19hZGRyX3RyYW5zbGF0aW9uX3JhbmdlcygmcGRldi0+ ZGV2LA0KPiA+IC0JCQkJCSAgICAgICAmbWMtPnRyYW5zbGF0aW9uX3JhbmdlcywNCj4gPiAtCQkJ CQkgICAgICAgJm1jLT5udW1fdHJhbnNsYXRpb25fcmFuZ2VzKTsNCj4gPiAtCWlmIChlcnJvciA8 IDApDQo+ID4gLQkJZ290byBlcnJvcl9jbGVhbnVwX21jX2lvOw0KPiA+ICsJaWYgKGRldl9vZl9u b2RlKCZwZGV2LT5kZXYpKSB7DQo+ID4gKwkJZXJyb3IgPSBnZXRfbWNfYWRkcl90cmFuc2xhdGlv bl9yYW5nZXMoJnBkZXYtPmRldiwNCj4gPiArCQkJCQkJJm1jLT50cmFuc2xhdGlvbl9yYW5nZXMs DQo+ID4gKwkJCQkJCSZtYy0NCj4gPm51bV90cmFuc2xhdGlvbl9yYW5nZXMpOw0KPiA+ICsJCWlm IChlcnJvciA8IDApDQo+ID4gKwkJCWdvdG8gZXJyb3JfY2xlYW51cF9tY19pbzsNCj4gPiArCX0N Cj4gPg0KPiA+ICAJZXJyb3IgPSBkcHJjX2dldF9jb250YWluZXJfaWQobWNfaW8sIDAsICZjb250 YWluZXJfaWQpOw0KPiA+ICAJaWYgKGVycm9yIDwgMCkgew0KPiA+IEBAIC05MzQsNiArOTYzLDcg QEAgc3RhdGljIGludCBmc2xfbWNfYnVzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UNCj4g KnBkZXYpDQo+ID4gIAkJZ290byBlcnJvcl9jbGVhbnVwX21jX2lvOw0KPiA+DQo+ID4gIAltYy0+ cm9vdF9tY19idXNfZGV2ID0gbWNfYnVzX2RldjsNCj4gPiArCW1jX2J1c19kZXYtPmRldi5md25v ZGUgPSBwZGV2LT5kZXYuZndub2RlOw0KPiA+ICAJcmV0dXJuIDA7DQo+ID4NCj4gPiAgZXJyb3Jf Y2xlYW51cF9tY19pbzoNCj4gPiBAQCAtOTY3LDExICs5OTcsMTggQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBvZl9kZXZpY2VfaWQNCj4gPiBmc2xfbWNfYnVzX21hdGNoX3RhYmxlW10gPSB7DQo+ID4N Cj4gPiAgTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZnNsX21jX2J1c19tYXRjaF90YWJsZSk7DQo+ ID4NCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCBmc2xfbWNfYnVzX2Fj cGlfbWF0Y2hfdGFibGVbXSA9IHsNCj4gPiArCXsiTlhQMDAwOCIsIDAgfSwNCj4gPiArCXsgfQ0K PiA+ICt9Ow0KPiA+ICtNT0RVTEVfREVWSUNFX1RBQkxFKGFjcGksIGZzbF9tY19idXNfYWNwaV9t YXRjaF90YWJsZSk7DQo+ID4gKw0KPiA+ICBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBm c2xfbWNfYnVzX2RyaXZlciA9IHsNCj4gPiAgCS5kcml2ZXIgPSB7DQo+ID4gIAkJICAgLm5hbWUg PSAiZnNsX21jX2J1cyIsDQo+ID4gIAkJICAgLnBtID0gTlVMTCwNCj4gPiAgCQkgICAub2ZfbWF0 Y2hfdGFibGUgPSBmc2xfbWNfYnVzX21hdGNoX3RhYmxlLA0KPiA+ICsJCSAgIC5hY3BpX21hdGNo X3RhYmxlID0gZnNsX21jX2J1c19hY3BpX21hdGNoX3RhYmxlLA0KPiA+ICAJCSAgIH0sDQo+ID4g IAkucHJvYmUgPSBmc2xfbWNfYnVzX3Byb2JlLA0KPiA+ICAJLnJlbW92ZSA9IGZzbF9tY19idXNf cmVtb3ZlLA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLW1zaS5j DQo+ID4gYi9kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLW1zaS5jIGluZGV4IGU3YmJmZjQ0NWE4 My4uOGVkYWRmMDVjYmI3DQo+ID4gMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9idXMvZnNsLW1j L2ZzbC1tYy1tc2kuYw0KPiA+ICsrKyBiL2RyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmMN Cj4gPiBAQCAtMTMsNiArMTMsNyBAQA0KPiA+ICAjaW5jbHVkZSA8bGludXgvaXJxLmg+DQo+ID4g ICNpbmNsdWRlIDxsaW51eC9pcnFkb21haW4uaD4NCj4gPiAgI2luY2x1ZGUgPGxpbnV4L21zaS5o Pg0KPiA+ICsjaW5jbHVkZSA8bGludXgvYWNwaV9pb3J0Lmg+DQo+ID4NCj4gPiAgI2luY2x1ZGUg ImZzbC1tYy1wcml2YXRlLmgiDQo+ID4NCj4gPiBAQCAtMTc5LDI1ICsxODAsMzEgQEAgc3RydWN0 IGlycV9kb21haW4NCj4gPiAqZnNsX21jX21zaV9jcmVhdGVfaXJxX2RvbWFpbihzdHJ1Y3QgZndu b2RlX2hhbmRsZSAqZndub2RlLA0KPiA+DQo+ID4gIHN0cnVjdCBpcnFfZG9tYWluICpmc2xfbWNf ZmluZF9tc2lfZG9tYWluKHN0cnVjdCBkZXZpY2UgKmRldikgIHsNCj4gPiAtCXN0cnVjdCBpcnFf ZG9tYWluICptc2lfZG9tYWluID0gTlVMTDsNCj4gPiArCXN0cnVjdCBkZXZpY2UgKnJvb3RfZHBy Y19kZXY7DQo+ID4gKwlzdHJ1Y3QgZGV2aWNlICpidXNfZGV2Ow0KPiA+ICsJc3RydWN0IGlycV9k b21haW4gKm1zaV9kb21haW47DQo+ID4gIAlzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0g dG9fZnNsX21jX2RldmljZShkZXYpOw0KPiA+DQo+ID4gLQltc2lfZG9tYWluID0gb2ZfbXNpX21h cF9nZXRfZGV2aWNlX2RvbWFpbihkZXYsIG1jX2Rldi0+aWNpZCwNCj4gPiArCWZzbF9tY19nZXRf cm9vdF9kcHJjKGRldiwgJnJvb3RfZHByY19kZXYpOw0KPiA+ICsJYnVzX2RldiA9IHJvb3RfZHBy Y19kZXYtPnBhcmVudDsNCj4gPiArDQo+ID4gKwlpZiAoYnVzX2Rldi0+b2Zfbm9kZSkgew0KPiA+ ICsJCW1zaV9kb21haW4gPSBvZl9tc2lfbWFwX2dldF9kZXZpY2VfZG9tYWluKGRldiwNCj4gPiAr CQkJCQkJICBtY19kZXYtPmljaWQsDQo+ID4gIAkJCQkJCSAgRE9NQUlOX0JVU19GU0xfTUNfTVNJ KTsNCj4gPg0KPiA+IC0JLyoNCj4gPiAtCSAqIGlmIHRoZSBtc2ktbWFwIHByb3BlcnR5IGlzIG1p c3NpbmcgYXNzdW1lIHRoYXQgYWxsIHRoZQ0KPiA+IC0JICogY2hpbGQgY29udGFpbmVycyBpbmhl cml0IHRoZSBkb21haW4gZnJvbSB0aGUgcGFyZW50DQo+ID4gLQkgKi8NCj4gPiAtCWlmICghbXNp X2RvbWFpbikgew0KPiA+IC0JCXN0cnVjdCBkZXZpY2UgKnJvb3RfZHByY19kZXY7DQo+ID4gLQkJ c3RydWN0IGRldmljZSAqYnVzX2RldjsNCj4gPiAtDQo+ID4gLQkJZnNsX21jX2dldF9yb290X2Rw cmMoZGV2LCAmcm9vdF9kcHJjX2Rldik7DQo+ID4gLQkJYnVzX2RldiA9IHJvb3RfZHByY19kZXYt PnBhcmVudDsNCj4gPiAtCQltc2lfZG9tYWluID0gb2ZfbXNpX2dldF9kb21haW4oYnVzX2RldiwN Cj4gPiAtCQkJCQkgICAgICAgYnVzX2Rldi0+b2Zfbm9kZSwNCj4gPiAtCQkJCQkgICAgICAgRE9N QUlOX0JVU19GU0xfTUNfTVNJKTsNCj4gPiArCQkvKg0KPiA+ICsJCSAqIGlmIHRoZSBtc2ktbWFw IHByb3BlcnR5IGlzIG1pc3NpbmcgYXNzdW1lIHRoYXQgYWxsIHRoZQ0KPiA+ICsJCSAqIGNoaWxk IGNvbnRhaW5lcnMgaW5oZXJpdCB0aGUgZG9tYWluIGZyb20gdGhlIHBhcmVudA0KPiA+ICsJCSAq Lw0KPiA+ICsJCWlmICghbXNpX2RvbWFpbikNCj4gPiArDQo+ID4gKwkJCW1zaV9kb21haW4gPSBv Zl9tc2lfZ2V0X2RvbWFpbihidXNfZGV2LA0KPiA+ICsJCQkJCQlidXNfZGV2LT5vZl9ub2RlLA0K PiA+ICsJCQkJCQlET01BSU5fQlVTX0ZTTF9NQ19NU0kpOw0KPiA+ICsJfSBlbHNlIHsNCj4gPiAr CQltc2lfZG9tYWluID0gaW9ydF9nZXRfZGV2aWNlX2RvbWFpbihkZXYsIG1jX2Rldi0+aWNpZCwN Cj4gPiArDQo+IERPTUFJTl9CVVNfRlNMX01DX01TSSk7DQo+ID4gIAl9DQo+ID4NCj4gPiAgCXJl dHVybiBtc2lfZG9tYWluOw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lycWNoaXAvaXJxLWdp Yy12My1pdHMtZnNsLW1jLW1zaS5jDQo+ID4gYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1p dHMtZnNsLW1jLW1zaS5jDQo+ID4gaW5kZXggYTVjOGQ1NzdlNDI0Li5iOGI5NDhmYjZiMmQgMTAw NjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLWZzbC1tYy1tc2ku Yw0KPiA+ICsrKyBiL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy1mc2wtbWMtbXNpLmMN Cj4gPiBAQCAtNyw2ICs3LDggQEANCj4gPiAgICoNCj4gPiAgICovDQo+ID4NCj4gPiArI2luY2x1 ZGUgPGxpbnV4L2FjcGkuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2FjcGlfaW9ydC5oPg0KPiA+ ICAjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+DQo+ID4gICNpbmNsdWRlIDxsaW51eC9vZl9h ZGRyZXNzLmg+DQo+ID4gICNpbmNsdWRlIDxsaW51eC9pcnEuaD4NCj4gPiBAQCAtMzAsNyArMzIs OCBAQCBzdGF0aWMgdTMyIGZzbF9tY19tc2lfZG9tYWluX2dldF9tc2lfaWQoc3RydWN0DQo+IGly cV9kb21haW4gKmRvbWFpbiwNCj4gPiAgCXUzMiBvdXRfaWQ7DQo+ID4NCj4gPiAgCW9mX25vZGUg PSBpcnFfZG9tYWluX2dldF9vZl9ub2RlKGRvbWFpbik7DQo+ID4gLQlvdXRfaWQgPSBvZl9tc2lf bWFwX2lkKCZtY19kZXYtPmRldiwgb2Zfbm9kZSwgbWNfZGV2LT5pY2lkKTsNCj4gPiArCW91dF9p ZCA9IG9mX25vZGUgPyBvZl9tc2lfbWFwX2lkKCZtY19kZXYtPmRldiwgb2Zfbm9kZSwgbWNfZGV2 LQ0KPiA+aWNpZCkgOg0KPiA+ICsJCQlpb3J0X21zaV9tYXBfaWQoJm1jX2Rldi0+ZGV2LCBtY19k ZXYtPmljaWQpOw0KPiA+DQo+ID4gIAlyZXR1cm4gb3V0X2lkOw0KPiA+ICB9DQo+ID4gQEAgLTc5 LDcgKzgyLDY3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGl0c19kZXZpY2Vf aWRbXSA9IHsNCj4gPiAgCXt9LA0KPiA+ICB9Ow0KPiA+DQo+ID4gLXN0YXRpYyBpbnQgX19pbml0 IGl0c19mc2xfbWNfbXNpX2luaXQodm9pZCkNCj4gPiArc3RhdGljIGludCBfX2luaXQgaXRzX2Zz bF9tY19tc2lfaW5pdF9vbmUoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmhhbmRsZSwNCj4gPiArCQkJ CQkgIGNvbnN0IGNoYXIgKm5hbWUpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBpcnFfZG9tYWluICpw YXJlbnQ7DQo+ID4gKwlzdHJ1Y3QgaXJxX2RvbWFpbiAqbWNfbXNpX2RvbWFpbjsNCj4gPiArDQo+ ID4gKwlwYXJlbnQgPSBpcnFfZmluZF9tYXRjaGluZ19md25vZGUoaGFuZGxlLCBET01BSU5fQlVT X05FWFVTKTsNCj4gPiArCWlmICghcGFyZW50IHx8ICFtc2lfZ2V0X2RvbWFpbl9pbmZvKHBhcmVu dCkpIHsNCj4gPiArCQlwcl9lcnIoIiVzOiBVbmFibGUgdG8gbG9jYXRlIElUUyBkb21haW5cbiIs IG5hbWUpOw0KPiA+ICsJCXJldHVybiAtRU5YSU87DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJbWNf bXNpX2RvbWFpbiA9IGZzbF9tY19tc2lfY3JlYXRlX2lycV9kb21haW4oaGFuZGxlLA0KPiA+ICsJ CQkJCQkmaXRzX2ZzbF9tY19tc2lfZG9tYWluX2luZm8sDQo+ID4gKwkJCQkJCXBhcmVudCk7DQo+ ID4gKwlpZiAoIW1jX21zaV9kb21haW4pDQo+ID4gKwkJcHJfZXJyKCJBQ1BJRjogdW5hYmxlIHRv IGNyZWF0ZSBmc2wtbWMgZG9tYWluXG4iKTsNCj4gPiArDQo+ID4gKwlwcl9pbmZvKCJmc2wtbWMg TVNJOiBkb21haW4gY3JlYXRlZFxuIik7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30N Cj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgX19pbml0DQo+ID4gK2l0c19mc2xfbWNfbXNpX3BhcnNl X21hZHQodW5pb24gYWNwaV9zdWJ0YWJsZV9oZWFkZXJzICpoZWFkZXIsDQo+ID4gKwkJCSAgY29u c3QgdW5zaWduZWQgbG9uZyBlbmQpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBhY3BpX21hZHRfZ2Vu ZXJpY190cmFuc2xhdG9yICppdHNfZW50cnk7DQo+ID4gKwlzdHJ1Y3QgZndub2RlX2hhbmRsZSAq ZG9tX2hhbmRsZTsNCj4gPiArCWNvbnN0IGNoYXIgKm5vZGVfbmFtZTsNCj4gPiArCWludCBlcnIg PSAtRU5YSU87DQo+ID4gKw0KPiA+ICsJaXRzX2VudHJ5ID0gKHN0cnVjdCBhY3BpX21hZHRfZ2Vu ZXJpY190cmFuc2xhdG9yICopaGVhZGVyOw0KPiA+ICsJbm9kZV9uYW1lID0ga2FzcHJpbnRmKEdG UF9LRVJORUwsICJJVFNAMHglbHgiLA0KPiA+ICsJCQkgICAgICAobG9uZylpdHNfZW50cnktPmJh c2VfYWRkcmVzcyk7DQo+ID4gKw0KPiA+ICsJZG9tX2hhbmRsZSA9IGlvcnRfZmluZF9kb21haW5f dG9rZW4oaXRzX2VudHJ5LT50cmFuc2xhdGlvbl9pZCk7DQo+ID4gKwlpZiAoIWRvbV9oYW5kbGUp IHsNCj4gPiArCQlwcl9lcnIoIiVzOiBVbmFibGUgdG8gbG9jYXRlIElUUyBkb21haW4gaGFuZGxl XG4iLA0KPiBub2RlX25hbWUpOw0KPiA+ICsJCWdvdG8gb3V0Ow0KPiA+ICsJfQ0KPiA+ICsNCj4g PiArCWVyciA9IGl0c19mc2xfbWNfbXNpX2luaXRfb25lKGRvbV9oYW5kbGUsIG5vZGVfbmFtZSk7 DQo+ID4gKwlpZiAoIWVycikNCj4gPiArCQlwcl9pbmZvKCJmc2wtbWMgTVNJOiAlcyBkb21haW4g Y3JlYXRlZFxuIiwgbm9kZV9uYW1lKTsNCj4gPiArDQo+ID4gK291dDoNCj4gPiArCWtmcmVlKG5v ZGVfbmFtZSk7DQo+ID4gKwlyZXR1cm4gZXJyOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4gPiAr c3RhdGljIGludCBfX2luaXQgaXRzX2ZzbF9tY19hY3BpX21zaV9pbml0KHZvaWQpIHsNCj4gPiAr CWFjcGlfdGFibGVfcGFyc2VfbWFkdChBQ1BJX01BRFRfVFlQRV9HRU5FUklDX1RSQU5TTEFUT1Is DQo+ID4gKwkJCSAgICAgIGl0c19mc2xfbWNfbXNpX3BhcnNlX21hZHQsIDApOw0KPiA+ICsNCj4g PiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IF9faW5pdCBpdHNf ZnNsX21jX29mX21zaV9pbml0KHZvaWQpDQo+ID4gIHsNCj4gPiAgCXN0cnVjdCBkZXZpY2Vfbm9k ZSAqbnA7DQo+ID4gIAlzdHJ1Y3QgaXJxX2RvbWFpbiAqcGFyZW50Ow0KPiA+IEBAIC0xMTMsNCAr MTc2LDEyIEBAIHN0YXRpYyBpbnQgX19pbml0IGl0c19mc2xfbWNfbXNpX2luaXQodm9pZCkNCj4g PiAgCXJldHVybiAwOw0KPiA+ICB9DQo+ID4NCj4gPiArc3RhdGljIGludCBfX2luaXQgaXRzX2Zz bF9tY19tc2lfaW5pdCh2b2lkKSB7DQo+ID4gKwlpdHNfZnNsX21jX29mX21zaV9pbml0KCk7DQo+ ID4gKwlpdHNfZnNsX21jX2FjcGlfbXNpX2luaXQoKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsN Cj4gPiArfQ0KPiA+ICsNCj4gPiAgZWFybHlfaW5pdGNhbGwoaXRzX2ZzbF9tY19tc2lfaW5pdCk7 DQo+ID4NCg== 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=-6.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 0CC61C433E1 for ; Fri, 22 May 2020 05:32:14 +0000 (UTC) Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (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 A2D282073B for ; Fri, 22 May 2020 05:32:13 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="kxvTXm0T" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A2D282073B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nxp.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=iommu-bounces@lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 25521203E8; Fri, 22 May 2020 05:32:13 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1Dt6ScNu2v6f; Fri, 22 May 2020 05:32:11 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by silver.osuosl.org (Postfix) with ESMTP id 1300D203D0; Fri, 22 May 2020 05:32:11 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id D59E7C088B; Fri, 22 May 2020 05:32:10 +0000 (UTC) Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by lists.linuxfoundation.org (Postfix) with ESMTP id 75083C0176 for ; Fri, 22 May 2020 05:32:09 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 5A4AD88793 for ; Fri, 22 May 2020 05:32:09 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id eKgEZ7n6nVKU for ; Fri, 22 May 2020 05:32:07 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10074.outbound.protection.outlook.com [40.107.1.74]) by whitealder.osuosl.org (Postfix) with ESMTPS id 8EDE988558 for ; Fri, 22 May 2020 05:32:06 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MvbeqknbPDlDDp5VfxM1IIHND1Hlk6i2W0Ag5BZ+VSy2QZiMM6PDR2cBNDjUmyvTYOFyjdMZCvMK2v/rjmDJs3E4MZxk/AgnhuxFBj5rS1g981LXe91i1jv4+sF7jTcSl4u6Kv82uEqKcA9NbT1+VigY06Q40ISt+2BoLAqOEX+tYbHnTRtiVVooksJ60vfi2oSjFbbtKGpm6/65GMxCM0qDX/So19B8k3x7A63t2VINnnZnFqkYgdwFmIf+o/kgyrUzMa4pVfdX2AOHxhQcTNOleXJ9Pq4dOaSQ/SjuEfBYH8B+oU0SDyzc3XnfHiVw2QRTF+wJgyDY5sORB6yTwg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VR4f1IB/r+vImNDvxHdENzeDfXiXxzGuWKEyQt40AGg=; b=YV9mSDkzhlKZzJg0qzaKk1mYL+wd/DHZoKrPaPYS8psQ63Y4eVr4cKVUu45nxVcr7N4am8JXtQrpIzQJkH0PerG5o18+m07zX9CSaNS0mUPJWrqRzNdM2TT8DKWOKCsU8H04elamLlILVjpeUA9G4jJmV2m/mUZ5FPMQkWg99cbdAfcvXfRndCHws0ZfOpZ6c4L9r/+QexciD7znmM43EP9lOLLWfW2ENd5LD+IuUGMo6ZaMrPbr2+m/Xl1Z5c1apo8h8bhayeIIi9bmUEcxrbvEF8iLEvb1iSJAT85MGid42mRY1soeNCKdZ2IIBiiLN7/EEw1d0YXtBm6gQ4T2Ww== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VR4f1IB/r+vImNDvxHdENzeDfXiXxzGuWKEyQt40AGg=; b=kxvTXm0T8qxMHVxUbkSoPBdME5KY/Rqmk6ensgDgIIAgGlycaqPG7F2rI+xldG8+I3EjzAg6ERCitrF+pRnkW4MpLwZryPRAspqumv69T6a3eswOChzs3gxeTATeGi+H/jD5PvAaP/31DLcT3n5Wgo/8HzR5MsFAGSMx7WsXUV4= Received: from AM6PR04MB4984.eurprd04.prod.outlook.com (2603:10a6:20b:7::23) by AM6PR04MB4550.eurprd04.prod.outlook.com (2603:10a6:20b:17::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3021.23; Fri, 22 May 2020 05:32:02 +0000 Received: from AM6PR04MB4984.eurprd04.prod.outlook.com ([fe80::5167:8ffa:569e:fa57]) by AM6PR04MB4984.eurprd04.prod.outlook.com ([fe80::5167:8ffa:569e:fa57%4]) with mapi id 15.20.3021.024; Fri, 22 May 2020 05:32:02 +0000 From: Makarand Pawagi To: Laurentiu Tudor , Lorenzo Pieralisi , "linux-arm-kernel@lists.infradead.org" Subject: RE: [PATCH 12/12] bus: fsl-mc: Add ACPI support for fsl-mc Thread-Topic: [PATCH 12/12] bus: fsl-mc: Add ACPI support for fsl-mc Thread-Index: AQHWL4EA+tWCI6MmokOtaoHDA2UgG6izlSoA Date: Fri, 22 May 2020 05:32:02 +0000 Message-ID: References: <20200521130008.8266-1-lorenzo.pieralisi@arm.com> <20200521130008.8266-13-lorenzo.pieralisi@arm.com> <3045acd5-0bcf-40c1-e65f-0b740200b2e0@nxp.com> In-Reply-To: <3045acd5-0bcf-40c1-e65f-0b740200b2e0@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=none action=none header.from=nxp.com; x-originating-ip: [117.98.155.61] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 87e9bf14-772d-4c6f-f75b-08d7fe1174cd x-ms-traffictypediagnostic: AM6PR04MB4550: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:232; x-forefront-prvs: 04111BAC64 x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: T3Ena4z7HkAbJv6kiwiLfFFO3w6lCXB3N9xPEGc3wxLs27f2xIe6YC4nXoNFIWxMZLgItpnSfnR4qVnYTjc5vv2pdbmBmuuBlSnPMwdcWKu/D42NVSBqwgcbx62yWw2qJG+9uxq5AiGlFONJNx5ZFVE8kTh4QMkL5Laz21+93HrmEmJZvMfr0Y4orRyzmseyHw8SQfaaNW+bgQbQoU9rIZByEsukqqHZcP296i2L4gXxxeoreZpsVEUAgwW08tb2yU13MGymBYMhS5kJEvY9MGZLiLz/zuK3sgA3Hj9A0/xTpnkASV49BsPCXNZIGLCLzQTv4Hr1gACxTfPwb4UvyQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR04MB4984.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(396003)(346002)(366004)(39860400002)(136003)(376002)(186003)(26005)(53546011)(7696005)(316002)(4326008)(8676002)(8936002)(478600001)(33656002)(9686003)(110136005)(55016002)(86362001)(54906003)(5660300002)(71200400001)(66946007)(7416002)(44832011)(6506007)(66556008)(2906002)(64756008)(30864003)(76116006)(66446008)(66476007)(52536014); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: vvbljHZumA7yjXZKrXxWFnll/qBE2tXt7iYzeKkOmrpdVCDeAJYHHF0ts8Da3WZpGMCQKgs5ttOCfaZpXn4GMdU74WwNmr05thDyUCEjWGJJQQcF1M6slzyyKDY9JCfC6wtvg5CWi1cdyC9wnpK7XXeoVVEhME5SQLTSykFaZPq/xKcWhLAAHqTxWVYJkLHO/xF7hpwFtHUDn21EiHTZJ148kshnNxzyA/V3BUTphHyYO/V3kYsoiCB2te0nFvjZbJENVa7ZvjYKsgHwOo/e7Sew480pfuJ+5rAG+oE6lOw1u8doRo+/6CBLRYQRj8FYVpni2fF6U5ejyfLiJ5Pig2pFCQPesnlkQnFBafYBQhDBg8IKaFgkefcm5do85P5MOeF2WbQRZ46kzEB/yQoGx16rXaEIbXDpF4nvbCA3eDkTqtl4rluuW+7RXy+mjZv9uQ1jb9ObiNqxNY55YoaxeXp7+HDEGD7+cjlJZBsL+lw= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 87e9bf14-772d-4c6f-f75b-08d7fe1174cd X-MS-Exchange-CrossTenant-originalarrivaltime: 22 May 2020 05:32:02.2579 (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-CrossTenant-userprincipalname: QkkfRMSCi+clMnaPgtsg8cf0vpgF02P+zgW9zNvh0giSmLXovQ4ELmP8UFT9Ssp44K7kELWCKrXKSqC+OYxgxQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB4550 Cc: "devicetree@vger.kernel.org" , Sudeep Holla , Catalin Marinas , Will Deacon , "linux-pci@vger.kernel.org" , Hanjun Guo , "Rafael J. Wysocki" , "linux-acpi@vger.kernel.org" , "iommu@lists.linux-foundation.org" , Rob Herring , Marc Zyngier , "Diana Madalina Craciun \(OSS\)" , Bjorn Helgaas , Robin Murphy X-BeenThere: iommu@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Development issues for Linux IOMMU support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: iommu-bounces@lists.linux-foundation.org Sender: "iommu" Hi Lorenzo, > -----Original Message----- > From: Laurentiu Tudor > Sent: Thursday, May 21, 2020 8:33 PM > To: Lorenzo Pieralisi ; linux-arm- > kernel@lists.infradead.org > Cc: Diana Madalina Craciun (OSS) ; Makarand > Pawagi ; iommu@lists.linux-foundation.org; > linux-acpi@vger.kernel.org; devicetree@vger.kernel.org; linux- > pci@vger.kernel.org; Rob Herring ; Rafael J. Wysocki > ; Joerg Roedel ; Hanjun Guo > ; Bjorn Helgaas ; Sudeep > Holla ; Robin Murphy ; > Catalin Marinas ; Will Deacon ; > Marc Zyngier > Subject: Re: [PATCH 12/12] bus: fsl-mc: Add ACPI support for fsl-mc > > Hi Lorenzo, > > On 5/21/2020 4:00 PM, Lorenzo Pieralisi wrote: > > From: Diana Craciun > > > > Add ACPI support in the fsl-mc driver. Driver parses MC DSDT table to > > extract memory and other resources. > > > > Interrupt (GIC ITS) information is extracted from the MADT table by > > drivers/irqchip/irq-gic-v3-its-fsl-mc-msi.c. > > > > IORT table is parsed to configure DMA. > > > > Signed-off-by: Makarand Pawagi > > Signed-off-by: Diana Craciun > > Signed-off-by: Laurentiu Tudor > > --- > > The author of this patch should be Makarand. I think I accidentaly broke it when > we exchanged the patches. Very sorry about it. > Will you be able to correct this or should I post another patch? > --- > Best Regards, Laurentiu > > > > drivers/bus/fsl-mc/fsl-mc-bus.c | 73 +++++++++++++++----- > > drivers/bus/fsl-mc/fsl-mc-msi.c | 37 +++++----- > > drivers/irqchip/irq-gic-v3-its-fsl-mc-msi.c | 75 > > ++++++++++++++++++++- > > 3 files changed, 150 insertions(+), 35 deletions(-) > > > > diff --git a/drivers/bus/fsl-mc/fsl-mc-bus.c > > b/drivers/bus/fsl-mc/fsl-mc-bus.c index 824ff77bbe86..324d49d6df89 > > 100644 > > --- a/drivers/bus/fsl-mc/fsl-mc-bus.c > > +++ b/drivers/bus/fsl-mc/fsl-mc-bus.c > > @@ -18,6 +18,8 @@ > > #include > > #include > > #include > > +#include > > +#include > > > > #include "fsl-mc-private.h" > > > > @@ -38,6 +40,7 @@ struct fsl_mc { > > struct fsl_mc_device *root_mc_bus_dev; > > u8 num_translation_ranges; > > struct fsl_mc_addr_translation_range *translation_ranges; > > + void *fsl_mc_regs; > > }; > > > > /** > > @@ -56,6 +59,10 @@ struct fsl_mc_addr_translation_range { > > phys_addr_t start_phys_addr; > > }; > > > > +#define FSL_MC_FAPR 0x28 > > +#define MC_FAPR_PL BIT(18) > > +#define MC_FAPR_BMT BIT(17) > > + > > /** > > * fsl_mc_bus_match - device to driver matching callback > > * @dev: the fsl-mc device to match against @@ -124,7 +131,10 @@ > > static int fsl_mc_dma_configure(struct device *dev) > > while (dev_is_fsl_mc(dma_dev)) > > dma_dev = dma_dev->parent; > > > > - return of_dma_configure_id(dev, dma_dev->of_node, 0, &input_id); > > + if (dev_of_node(dma_dev)) > > + return of_dma_configure_id(dev, dma_dev->of_node, 0, > &input_id); > > + > > + return acpi_dma_configure_id(dev, DEV_DMA_COHERENT, &input_id); > > } > > > > static ssize_t modalias_show(struct device *dev, struct > > device_attribute *attr, @@ -865,8 +875,11 @@ static int > fsl_mc_bus_probe(struct platform_device *pdev) > > struct fsl_mc_io *mc_io = NULL; > > int container_id; > > phys_addr_t mc_portal_phys_addr; > > - u32 mc_portal_size; > > - struct resource res; > > + u32 mc_portal_size, mc_stream_id; > > + struct resource *plat_res; > > + > > + if (!iommu_present(&fsl_mc_bus_type)) > > + return -EPROBE_DEFER; > > > > mc = devm_kzalloc(&pdev->dev, sizeof(*mc), GFP_KERNEL); > > if (!mc) > > @@ -874,19 +887,33 @@ static int fsl_mc_bus_probe(struct > > platform_device *pdev) > > > > platform_set_drvdata(pdev, mc); > > > > + plat_res = platform_get_resource(pdev, IORESOURCE_MEM, 1); > > + mc->fsl_mc_regs = devm_ioremap_resource(&pdev->dev, plat_res); > > + if (IS_ERR(mc->fsl_mc_regs)) > > + return PTR_ERR(mc->fsl_mc_regs); > > + > > + if (IS_ENABLED(CONFIG_ACPI) && !dev_of_node(&pdev->dev)) { > > + mc_stream_id = readl(mc->fsl_mc_regs + FSL_MC_FAPR); > > + /* > > + * HW ORs the PL and BMT bit, places the result in bit 15 of > > + * the StreamID and ORs in the ICID. Calculate it accordingly. > > + */ > > + mc_stream_id = (mc_stream_id & 0xffff) | > > + ((mc_stream_id & (MC_FAPR_PL | > MC_FAPR_BMT)) ? > > + 0x4000 : 0); > > + error = acpi_dma_configure_id(&pdev->dev, > DEV_DMA_COHERENT, > > + &mc_stream_id); > > + if (error) > > + dev_warn(&pdev->dev, "failed to configure > dma: %d.\n", > > + error); > > + } > > + > > /* > > * Get physical address of MC portal for the root DPRC: > > */ > > - error = of_address_to_resource(pdev->dev.of_node, 0, &res); > > - if (error < 0) { > > - dev_err(&pdev->dev, > > - "of_address_to_resource() failed for %pOF\n", > > - pdev->dev.of_node); > > - return error; > > - } > > - > > - mc_portal_phys_addr = res.start; > > - mc_portal_size = resource_size(&res); > > + plat_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > > + mc_portal_phys_addr = plat_res->start; > > + mc_portal_size = resource_size(plat_res); > > error = fsl_create_mc_io(&pdev->dev, mc_portal_phys_addr, > > mc_portal_size, NULL, > > FSL_MC_IO_ATOMIC_CONTEXT_PORTAL, > &mc_io); @@ -903,11 +930,13 @@ > > static int fsl_mc_bus_probe(struct platform_device *pdev) > > dev_info(&pdev->dev, "MC firmware version: %u.%u.%u\n", > > mc_version.major, mc_version.minor, mc_version.revision); > > > > - error = get_mc_addr_translation_ranges(&pdev->dev, > > - &mc->translation_ranges, > > - &mc->num_translation_ranges); > > - if (error < 0) > > - goto error_cleanup_mc_io; > > + if (dev_of_node(&pdev->dev)) { > > + error = get_mc_addr_translation_ranges(&pdev->dev, > > + &mc->translation_ranges, > > + &mc- > >num_translation_ranges); > > + if (error < 0) > > + goto error_cleanup_mc_io; > > + } > > > > error = dprc_get_container_id(mc_io, 0, &container_id); > > if (error < 0) { > > @@ -934,6 +963,7 @@ static int fsl_mc_bus_probe(struct platform_device > *pdev) > > goto error_cleanup_mc_io; > > > > mc->root_mc_bus_dev = mc_bus_dev; > > + mc_bus_dev->dev.fwnode = pdev->dev.fwnode; > > return 0; > > > > error_cleanup_mc_io: > > @@ -967,11 +997,18 @@ static const struct of_device_id > > fsl_mc_bus_match_table[] = { > > > > MODULE_DEVICE_TABLE(of, fsl_mc_bus_match_table); > > > > +static const struct acpi_device_id fsl_mc_bus_acpi_match_table[] = { > > + {"NXP0008", 0 }, > > + { } > > +}; > > +MODULE_DEVICE_TABLE(acpi, fsl_mc_bus_acpi_match_table); > > + > > static struct platform_driver fsl_mc_bus_driver = { > > .driver = { > > .name = "fsl_mc_bus", > > .pm = NULL, > > .of_match_table = fsl_mc_bus_match_table, > > + .acpi_match_table = fsl_mc_bus_acpi_match_table, > > }, > > .probe = fsl_mc_bus_probe, > > .remove = fsl_mc_bus_remove, > > diff --git a/drivers/bus/fsl-mc/fsl-mc-msi.c > > b/drivers/bus/fsl-mc/fsl-mc-msi.c index e7bbff445a83..8edadf05cbb7 > > 100644 > > --- a/drivers/bus/fsl-mc/fsl-mc-msi.c > > +++ b/drivers/bus/fsl-mc/fsl-mc-msi.c > > @@ -13,6 +13,7 @@ > > #include > > #include > > #include > > +#include > > > > #include "fsl-mc-private.h" > > > > @@ -179,25 +180,31 @@ struct irq_domain > > *fsl_mc_msi_create_irq_domain(struct fwnode_handle *fwnode, > > > > struct irq_domain *fsl_mc_find_msi_domain(struct device *dev) { > > - struct irq_domain *msi_domain = NULL; > > + struct device *root_dprc_dev; > > + struct device *bus_dev; > > + struct irq_domain *msi_domain; > > struct fsl_mc_device *mc_dev = to_fsl_mc_device(dev); > > > > - msi_domain = of_msi_map_get_device_domain(dev, mc_dev->icid, > > + fsl_mc_get_root_dprc(dev, &root_dprc_dev); > > + bus_dev = root_dprc_dev->parent; > > + > > + if (bus_dev->of_node) { > > + msi_domain = of_msi_map_get_device_domain(dev, > > + mc_dev->icid, > > DOMAIN_BUS_FSL_MC_MSI); > > > > - /* > > - * if the msi-map property is missing assume that all the > > - * child containers inherit the domain from the parent > > - */ > > - if (!msi_domain) { > > - struct device *root_dprc_dev; > > - struct device *bus_dev; > > - > > - fsl_mc_get_root_dprc(dev, &root_dprc_dev); > > - bus_dev = root_dprc_dev->parent; > > - msi_domain = of_msi_get_domain(bus_dev, > > - bus_dev->of_node, > > - DOMAIN_BUS_FSL_MC_MSI); > > + /* > > + * if the msi-map property is missing assume that all the > > + * child containers inherit the domain from the parent > > + */ > > + if (!msi_domain) > > + > > + msi_domain = of_msi_get_domain(bus_dev, > > + bus_dev->of_node, > > + DOMAIN_BUS_FSL_MC_MSI); > > + } else { > > + msi_domain = iort_get_device_domain(dev, mc_dev->icid, > > + > DOMAIN_BUS_FSL_MC_MSI); > > } > > > > return msi_domain; > > diff --git a/drivers/irqchip/irq-gic-v3-its-fsl-mc-msi.c > > b/drivers/irqchip/irq-gic-v3-its-fsl-mc-msi.c > > index a5c8d577e424..b8b948fb6b2d 100644 > > --- a/drivers/irqchip/irq-gic-v3-its-fsl-mc-msi.c > > +++ b/drivers/irqchip/irq-gic-v3-its-fsl-mc-msi.c > > @@ -7,6 +7,8 @@ > > * > > */ > > > > +#include > > +#include > > #include > > #include > > #include > > @@ -30,7 +32,8 @@ static u32 fsl_mc_msi_domain_get_msi_id(struct > irq_domain *domain, > > u32 out_id; > > > > of_node = irq_domain_get_of_node(domain); > > - out_id = of_msi_map_id(&mc_dev->dev, of_node, mc_dev->icid); > > + out_id = of_node ? of_msi_map_id(&mc_dev->dev, of_node, mc_dev- > >icid) : > > + iort_msi_map_id(&mc_dev->dev, mc_dev->icid); > > > > return out_id; > > } > > @@ -79,7 +82,67 @@ static const struct of_device_id its_device_id[] = { > > {}, > > }; > > > > -static int __init its_fsl_mc_msi_init(void) > > +static int __init its_fsl_mc_msi_init_one(struct fwnode_handle *handle, > > + const char *name) > > +{ > > + struct irq_domain *parent; > > + struct irq_domain *mc_msi_domain; > > + > > + parent = irq_find_matching_fwnode(handle, DOMAIN_BUS_NEXUS); > > + if (!parent || !msi_get_domain_info(parent)) { > > + pr_err("%s: Unable to locate ITS domain\n", name); > > + return -ENXIO; > > + } > > + > > + mc_msi_domain = fsl_mc_msi_create_irq_domain(handle, > > + &its_fsl_mc_msi_domain_info, > > + parent); > > + if (!mc_msi_domain) > > + pr_err("ACPIF: unable to create fsl-mc domain\n"); > > + > > + pr_info("fsl-mc MSI: domain created\n"); > > + > > + return 0; > > +} > > + > > +static int __init > > +its_fsl_mc_msi_parse_madt(union acpi_subtable_headers *header, > > + const unsigned long end) > > +{ > > + struct acpi_madt_generic_translator *its_entry; > > + struct fwnode_handle *dom_handle; > > + const char *node_name; > > + int err = -ENXIO; > > + > > + its_entry = (struct acpi_madt_generic_translator *)header; > > + node_name = kasprintf(GFP_KERNEL, "ITS@0x%lx", > > + (long)its_entry->base_address); > > + > > + dom_handle = iort_find_domain_token(its_entry->translation_id); > > + if (!dom_handle) { > > + pr_err("%s: Unable to locate ITS domain handle\n", > node_name); > > + goto out; > > + } > > + > > + err = its_fsl_mc_msi_init_one(dom_handle, node_name); > > + if (!err) > > + pr_info("fsl-mc MSI: %s domain created\n", node_name); > > + > > +out: > > + kfree(node_name); > > + return err; > > +} > > + > > + > > +static int __init its_fsl_mc_acpi_msi_init(void) { > > + acpi_table_parse_madt(ACPI_MADT_TYPE_GENERIC_TRANSLATOR, > > + its_fsl_mc_msi_parse_madt, 0); > > + > > + return 0; > > +} > > + > > +static int __init its_fsl_mc_of_msi_init(void) > > { > > struct device_node *np; > > struct irq_domain *parent; > > @@ -113,4 +176,12 @@ static int __init its_fsl_mc_msi_init(void) > > return 0; > > } > > > > +static int __init its_fsl_mc_msi_init(void) { > > + its_fsl_mc_of_msi_init(); > > + its_fsl_mc_acpi_msi_init(); > > + > > + return 0; > > +} > > + > > early_initcall(its_fsl_mc_msi_init); > > _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu 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=-6.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable 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 E2BD4C433E2 for ; Fri, 22 May 2020 05:32:16 +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 94CBE2073B for ; Fri, 22 May 2020 05:32:16 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Xje6hQqC"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="kxvTXm0T" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 94CBE2073B 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=0bydYYIc5HksPgtPbuXwBTpXGsXL1Vh6574graFEtD8=; b=Xje6hQqCd2Yjz/ n2RX5RAoKdyVhqh0Eupwe21m45eINXG1YyNHx/FUoi+Stsi7Te9Vh3VFxir1TDurMLefu1LadrRx1 3bRjU0Ga1ASNvZqyryHQHpZrKVlSlVKFTz0bGDXfPZrugdwm903GnnGeOG/u6LwEfuBMmpJ/RllK2 O473Ti8fOklGr5DxQvft7gFFDwRnc2UULqKZULb6UKrLVlLzwMMlyopWJ/kc5n05sSuZYS3WKtzjA jiwLRUNdcAzacmCHlfwCeR3iyZi2qNB9tv6s/uap0wTI9zT2iwNmQ+hqw7epzkNwXroNQrWooDnDm +qxaf94BcRZOeH6v1Ydg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jc0I1-0002tC-K8; Fri, 22 May 2020 05:32:13 +0000 Received: from mail-eopbgr10062.outbound.protection.outlook.com ([40.107.1.62] helo=EUR02-HE1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jc0Hx-0002sL-3N for linux-arm-kernel@lists.infradead.org; Fri, 22 May 2020 05:32:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MvbeqknbPDlDDp5VfxM1IIHND1Hlk6i2W0Ag5BZ+VSy2QZiMM6PDR2cBNDjUmyvTYOFyjdMZCvMK2v/rjmDJs3E4MZxk/AgnhuxFBj5rS1g981LXe91i1jv4+sF7jTcSl4u6Kv82uEqKcA9NbT1+VigY06Q40ISt+2BoLAqOEX+tYbHnTRtiVVooksJ60vfi2oSjFbbtKGpm6/65GMxCM0qDX/So19B8k3x7A63t2VINnnZnFqkYgdwFmIf+o/kgyrUzMa4pVfdX2AOHxhQcTNOleXJ9Pq4dOaSQ/SjuEfBYH8B+oU0SDyzc3XnfHiVw2QRTF+wJgyDY5sORB6yTwg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VR4f1IB/r+vImNDvxHdENzeDfXiXxzGuWKEyQt40AGg=; b=YV9mSDkzhlKZzJg0qzaKk1mYL+wd/DHZoKrPaPYS8psQ63Y4eVr4cKVUu45nxVcr7N4am8JXtQrpIzQJkH0PerG5o18+m07zX9CSaNS0mUPJWrqRzNdM2TT8DKWOKCsU8H04elamLlILVjpeUA9G4jJmV2m/mUZ5FPMQkWg99cbdAfcvXfRndCHws0ZfOpZ6c4L9r/+QexciD7znmM43EP9lOLLWfW2ENd5LD+IuUGMo6ZaMrPbr2+m/Xl1Z5c1apo8h8bhayeIIi9bmUEcxrbvEF8iLEvb1iSJAT85MGid42mRY1soeNCKdZ2IIBiiLN7/EEw1d0YXtBm6gQ4T2Ww== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VR4f1IB/r+vImNDvxHdENzeDfXiXxzGuWKEyQt40AGg=; b=kxvTXm0T8qxMHVxUbkSoPBdME5KY/Rqmk6ensgDgIIAgGlycaqPG7F2rI+xldG8+I3EjzAg6ERCitrF+pRnkW4MpLwZryPRAspqumv69T6a3eswOChzs3gxeTATeGi+H/jD5PvAaP/31DLcT3n5Wgo/8HzR5MsFAGSMx7WsXUV4= Received: from AM6PR04MB4984.eurprd04.prod.outlook.com (2603:10a6:20b:7::23) by AM6PR04MB4550.eurprd04.prod.outlook.com (2603:10a6:20b:17::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3021.23; Fri, 22 May 2020 05:32:02 +0000 Received: from AM6PR04MB4984.eurprd04.prod.outlook.com ([fe80::5167:8ffa:569e:fa57]) by AM6PR04MB4984.eurprd04.prod.outlook.com ([fe80::5167:8ffa:569e:fa57%4]) with mapi id 15.20.3021.024; Fri, 22 May 2020 05:32:02 +0000 From: Makarand Pawagi To: Laurentiu Tudor , Lorenzo Pieralisi , "linux-arm-kernel@lists.infradead.org" Subject: RE: [PATCH 12/12] bus: fsl-mc: Add ACPI support for fsl-mc Thread-Topic: [PATCH 12/12] bus: fsl-mc: Add ACPI support for fsl-mc Thread-Index: AQHWL4EA+tWCI6MmokOtaoHDA2UgG6izlSoA Date: Fri, 22 May 2020 05:32:02 +0000 Message-ID: References: <20200521130008.8266-1-lorenzo.pieralisi@arm.com> <20200521130008.8266-13-lorenzo.pieralisi@arm.com> <3045acd5-0bcf-40c1-e65f-0b740200b2e0@nxp.com> In-Reply-To: <3045acd5-0bcf-40c1-e65f-0b740200b2e0@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=none action=none header.from=nxp.com; x-originating-ip: [117.98.155.61] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 87e9bf14-772d-4c6f-f75b-08d7fe1174cd x-ms-traffictypediagnostic: AM6PR04MB4550: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:232; x-forefront-prvs: 04111BAC64 x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: T3Ena4z7HkAbJv6kiwiLfFFO3w6lCXB3N9xPEGc3wxLs27f2xIe6YC4nXoNFIWxMZLgItpnSfnR4qVnYTjc5vv2pdbmBmuuBlSnPMwdcWKu/D42NVSBqwgcbx62yWw2qJG+9uxq5AiGlFONJNx5ZFVE8kTh4QMkL5Laz21+93HrmEmJZvMfr0Y4orRyzmseyHw8SQfaaNW+bgQbQoU9rIZByEsukqqHZcP296i2L4gXxxeoreZpsVEUAgwW08tb2yU13MGymBYMhS5kJEvY9MGZLiLz/zuK3sgA3Hj9A0/xTpnkASV49BsPCXNZIGLCLzQTv4Hr1gACxTfPwb4UvyQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR04MB4984.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(396003)(346002)(366004)(39860400002)(136003)(376002)(186003)(26005)(53546011)(7696005)(316002)(4326008)(8676002)(8936002)(478600001)(33656002)(9686003)(110136005)(55016002)(86362001)(54906003)(5660300002)(71200400001)(66946007)(7416002)(44832011)(6506007)(66556008)(2906002)(64756008)(30864003)(76116006)(66446008)(66476007)(52536014); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: vvbljHZumA7yjXZKrXxWFnll/qBE2tXt7iYzeKkOmrpdVCDeAJYHHF0ts8Da3WZpGMCQKgs5ttOCfaZpXn4GMdU74WwNmr05thDyUCEjWGJJQQcF1M6slzyyKDY9JCfC6wtvg5CWi1cdyC9wnpK7XXeoVVEhME5SQLTSykFaZPq/xKcWhLAAHqTxWVYJkLHO/xF7hpwFtHUDn21EiHTZJ148kshnNxzyA/V3BUTphHyYO/V3kYsoiCB2te0nFvjZbJENVa7ZvjYKsgHwOo/e7Sew480pfuJ+5rAG+oE6lOw1u8doRo+/6CBLRYQRj8FYVpni2fF6U5ejyfLiJ5Pig2pFCQPesnlkQnFBafYBQhDBg8IKaFgkefcm5do85P5MOeF2WbQRZ46kzEB/yQoGx16rXaEIbXDpF4nvbCA3eDkTqtl4rluuW+7RXy+mjZv9uQ1jb9ObiNqxNY55YoaxeXp7+HDEGD7+cjlJZBsL+lw= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 87e9bf14-772d-4c6f-f75b-08d7fe1174cd X-MS-Exchange-CrossTenant-originalarrivaltime: 22 May 2020 05:32:02.2579 (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-CrossTenant-userprincipalname: QkkfRMSCi+clMnaPgtsg8cf0vpgF02P+zgW9zNvh0giSmLXovQ4ELmP8UFT9Ssp44K7kELWCKrXKSqC+OYxgxQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB4550 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200521_223209_398718_FEB38244 X-CRM114-Status: GOOD ( 27.22 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "devicetree@vger.kernel.org" , Sudeep Holla , Catalin Marinas , Will Deacon , "linux-pci@vger.kernel.org" , Joerg Roedel , Hanjun Guo , "Rafael J. Wysocki" , "linux-acpi@vger.kernel.org" , "iommu@lists.linux-foundation.org" , Rob Herring , Marc Zyngier , "Diana Madalina Craciun \(OSS\)" , Bjorn Helgaas , Robin Murphy 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 Hi Lorenzo, > -----Original Message----- > From: Laurentiu Tudor > Sent: Thursday, May 21, 2020 8:33 PM > To: Lorenzo Pieralisi ; linux-arm- > kernel@lists.infradead.org > Cc: Diana Madalina Craciun (OSS) ; Makarand > Pawagi ; iommu@lists.linux-foundation.org; > linux-acpi@vger.kernel.org; devicetree@vger.kernel.org; linux- > pci@vger.kernel.org; Rob Herring ; Rafael J. Wysocki > ; Joerg Roedel ; Hanjun Guo > ; Bjorn Helgaas ; Sudeep > Holla ; Robin Murphy ; > Catalin Marinas ; Will Deacon ; > Marc Zyngier > Subject: Re: [PATCH 12/12] bus: fsl-mc: Add ACPI support for fsl-mc > > Hi Lorenzo, > > On 5/21/2020 4:00 PM, Lorenzo Pieralisi wrote: > > From: Diana Craciun > > > > Add ACPI support in the fsl-mc driver. Driver parses MC DSDT table to > > extract memory and other resources. > > > > Interrupt (GIC ITS) information is extracted from the MADT table by > > drivers/irqchip/irq-gic-v3-its-fsl-mc-msi.c. > > > > IORT table is parsed to configure DMA. > > > > Signed-off-by: Makarand Pawagi > > Signed-off-by: Diana Craciun > > Signed-off-by: Laurentiu Tudor > > --- > > The author of this patch should be Makarand. I think I accidentaly broke it when > we exchanged the patches. Very sorry about it. > Will you be able to correct this or should I post another patch? > --- > Best Regards, Laurentiu > > > > drivers/bus/fsl-mc/fsl-mc-bus.c | 73 +++++++++++++++----- > > drivers/bus/fsl-mc/fsl-mc-msi.c | 37 +++++----- > > drivers/irqchip/irq-gic-v3-its-fsl-mc-msi.c | 75 > > ++++++++++++++++++++- > > 3 files changed, 150 insertions(+), 35 deletions(-) > > > > diff --git a/drivers/bus/fsl-mc/fsl-mc-bus.c > > b/drivers/bus/fsl-mc/fsl-mc-bus.c index 824ff77bbe86..324d49d6df89 > > 100644 > > --- a/drivers/bus/fsl-mc/fsl-mc-bus.c > > +++ b/drivers/bus/fsl-mc/fsl-mc-bus.c > > @@ -18,6 +18,8 @@ > > #include > > #include > > #include > > +#include > > +#include > > > > #include "fsl-mc-private.h" > > > > @@ -38,6 +40,7 @@ struct fsl_mc { > > struct fsl_mc_device *root_mc_bus_dev; > > u8 num_translation_ranges; > > struct fsl_mc_addr_translation_range *translation_ranges; > > + void *fsl_mc_regs; > > }; > > > > /** > > @@ -56,6 +59,10 @@ struct fsl_mc_addr_translation_range { > > phys_addr_t start_phys_addr; > > }; > > > > +#define FSL_MC_FAPR 0x28 > > +#define MC_FAPR_PL BIT(18) > > +#define MC_FAPR_BMT BIT(17) > > + > > /** > > * fsl_mc_bus_match - device to driver matching callback > > * @dev: the fsl-mc device to match against @@ -124,7 +131,10 @@ > > static int fsl_mc_dma_configure(struct device *dev) > > while (dev_is_fsl_mc(dma_dev)) > > dma_dev = dma_dev->parent; > > > > - return of_dma_configure_id(dev, dma_dev->of_node, 0, &input_id); > > + if (dev_of_node(dma_dev)) > > + return of_dma_configure_id(dev, dma_dev->of_node, 0, > &input_id); > > + > > + return acpi_dma_configure_id(dev, DEV_DMA_COHERENT, &input_id); > > } > > > > static ssize_t modalias_show(struct device *dev, struct > > device_attribute *attr, @@ -865,8 +875,11 @@ static int > fsl_mc_bus_probe(struct platform_device *pdev) > > struct fsl_mc_io *mc_io = NULL; > > int container_id; > > phys_addr_t mc_portal_phys_addr; > > - u32 mc_portal_size; > > - struct resource res; > > + u32 mc_portal_size, mc_stream_id; > > + struct resource *plat_res; > > + > > + if (!iommu_present(&fsl_mc_bus_type)) > > + return -EPROBE_DEFER; > > > > mc = devm_kzalloc(&pdev->dev, sizeof(*mc), GFP_KERNEL); > > if (!mc) > > @@ -874,19 +887,33 @@ static int fsl_mc_bus_probe(struct > > platform_device *pdev) > > > > platform_set_drvdata(pdev, mc); > > > > + plat_res = platform_get_resource(pdev, IORESOURCE_MEM, 1); > > + mc->fsl_mc_regs = devm_ioremap_resource(&pdev->dev, plat_res); > > + if (IS_ERR(mc->fsl_mc_regs)) > > + return PTR_ERR(mc->fsl_mc_regs); > > + > > + if (IS_ENABLED(CONFIG_ACPI) && !dev_of_node(&pdev->dev)) { > > + mc_stream_id = readl(mc->fsl_mc_regs + FSL_MC_FAPR); > > + /* > > + * HW ORs the PL and BMT bit, places the result in bit 15 of > > + * the StreamID and ORs in the ICID. Calculate it accordingly. > > + */ > > + mc_stream_id = (mc_stream_id & 0xffff) | > > + ((mc_stream_id & (MC_FAPR_PL | > MC_FAPR_BMT)) ? > > + 0x4000 : 0); > > + error = acpi_dma_configure_id(&pdev->dev, > DEV_DMA_COHERENT, > > + &mc_stream_id); > > + if (error) > > + dev_warn(&pdev->dev, "failed to configure > dma: %d.\n", > > + error); > > + } > > + > > /* > > * Get physical address of MC portal for the root DPRC: > > */ > > - error = of_address_to_resource(pdev->dev.of_node, 0, &res); > > - if (error < 0) { > > - dev_err(&pdev->dev, > > - "of_address_to_resource() failed for %pOF\n", > > - pdev->dev.of_node); > > - return error; > > - } > > - > > - mc_portal_phys_addr = res.start; > > - mc_portal_size = resource_size(&res); > > + plat_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > > + mc_portal_phys_addr = plat_res->start; > > + mc_portal_size = resource_size(plat_res); > > error = fsl_create_mc_io(&pdev->dev, mc_portal_phys_addr, > > mc_portal_size, NULL, > > FSL_MC_IO_ATOMIC_CONTEXT_PORTAL, > &mc_io); @@ -903,11 +930,13 @@ > > static int fsl_mc_bus_probe(struct platform_device *pdev) > > dev_info(&pdev->dev, "MC firmware version: %u.%u.%u\n", > > mc_version.major, mc_version.minor, mc_version.revision); > > > > - error = get_mc_addr_translation_ranges(&pdev->dev, > > - &mc->translation_ranges, > > - &mc->num_translation_ranges); > > - if (error < 0) > > - goto error_cleanup_mc_io; > > + if (dev_of_node(&pdev->dev)) { > > + error = get_mc_addr_translation_ranges(&pdev->dev, > > + &mc->translation_ranges, > > + &mc- > >num_translation_ranges); > > + if (error < 0) > > + goto error_cleanup_mc_io; > > + } > > > > error = dprc_get_container_id(mc_io, 0, &container_id); > > if (error < 0) { > > @@ -934,6 +963,7 @@ static int fsl_mc_bus_probe(struct platform_device > *pdev) > > goto error_cleanup_mc_io; > > > > mc->root_mc_bus_dev = mc_bus_dev; > > + mc_bus_dev->dev.fwnode = pdev->dev.fwnode; > > return 0; > > > > error_cleanup_mc_io: > > @@ -967,11 +997,18 @@ static const struct of_device_id > > fsl_mc_bus_match_table[] = { > > > > MODULE_DEVICE_TABLE(of, fsl_mc_bus_match_table); > > > > +static const struct acpi_device_id fsl_mc_bus_acpi_match_table[] = { > > + {"NXP0008", 0 }, > > + { } > > +}; > > +MODULE_DEVICE_TABLE(acpi, fsl_mc_bus_acpi_match_table); > > + > > static struct platform_driver fsl_mc_bus_driver = { > > .driver = { > > .name = "fsl_mc_bus", > > .pm = NULL, > > .of_match_table = fsl_mc_bus_match_table, > > + .acpi_match_table = fsl_mc_bus_acpi_match_table, > > }, > > .probe = fsl_mc_bus_probe, > > .remove = fsl_mc_bus_remove, > > diff --git a/drivers/bus/fsl-mc/fsl-mc-msi.c > > b/drivers/bus/fsl-mc/fsl-mc-msi.c index e7bbff445a83..8edadf05cbb7 > > 100644 > > --- a/drivers/bus/fsl-mc/fsl-mc-msi.c > > +++ b/drivers/bus/fsl-mc/fsl-mc-msi.c > > @@ -13,6 +13,7 @@ > > #include > > #include > > #include > > +#include > > > > #include "fsl-mc-private.h" > > > > @@ -179,25 +180,31 @@ struct irq_domain > > *fsl_mc_msi_create_irq_domain(struct fwnode_handle *fwnode, > > > > struct irq_domain *fsl_mc_find_msi_domain(struct device *dev) { > > - struct irq_domain *msi_domain = NULL; > > + struct device *root_dprc_dev; > > + struct device *bus_dev; > > + struct irq_domain *msi_domain; > > struct fsl_mc_device *mc_dev = to_fsl_mc_device(dev); > > > > - msi_domain = of_msi_map_get_device_domain(dev, mc_dev->icid, > > + fsl_mc_get_root_dprc(dev, &root_dprc_dev); > > + bus_dev = root_dprc_dev->parent; > > + > > + if (bus_dev->of_node) { > > + msi_domain = of_msi_map_get_device_domain(dev, > > + mc_dev->icid, > > DOMAIN_BUS_FSL_MC_MSI); > > > > - /* > > - * if the msi-map property is missing assume that all the > > - * child containers inherit the domain from the parent > > - */ > > - if (!msi_domain) { > > - struct device *root_dprc_dev; > > - struct device *bus_dev; > > - > > - fsl_mc_get_root_dprc(dev, &root_dprc_dev); > > - bus_dev = root_dprc_dev->parent; > > - msi_domain = of_msi_get_domain(bus_dev, > > - bus_dev->of_node, > > - DOMAIN_BUS_FSL_MC_MSI); > > + /* > > + * if the msi-map property is missing assume that all the > > + * child containers inherit the domain from the parent > > + */ > > + if (!msi_domain) > > + > > + msi_domain = of_msi_get_domain(bus_dev, > > + bus_dev->of_node, > > + DOMAIN_BUS_FSL_MC_MSI); > > + } else { > > + msi_domain = iort_get_device_domain(dev, mc_dev->icid, > > + > DOMAIN_BUS_FSL_MC_MSI); > > } > > > > return msi_domain; > > diff --git a/drivers/irqchip/irq-gic-v3-its-fsl-mc-msi.c > > b/drivers/irqchip/irq-gic-v3-its-fsl-mc-msi.c > > index a5c8d577e424..b8b948fb6b2d 100644 > > --- a/drivers/irqchip/irq-gic-v3-its-fsl-mc-msi.c > > +++ b/drivers/irqchip/irq-gic-v3-its-fsl-mc-msi.c > > @@ -7,6 +7,8 @@ > > * > > */ > > > > +#include > > +#include > > #include > > #include > > #include > > @@ -30,7 +32,8 @@ static u32 fsl_mc_msi_domain_get_msi_id(struct > irq_domain *domain, > > u32 out_id; > > > > of_node = irq_domain_get_of_node(domain); > > - out_id = of_msi_map_id(&mc_dev->dev, of_node, mc_dev->icid); > > + out_id = of_node ? of_msi_map_id(&mc_dev->dev, of_node, mc_dev- > >icid) : > > + iort_msi_map_id(&mc_dev->dev, mc_dev->icid); > > > > return out_id; > > } > > @@ -79,7 +82,67 @@ static const struct of_device_id its_device_id[] = { > > {}, > > }; > > > > -static int __init its_fsl_mc_msi_init(void) > > +static int __init its_fsl_mc_msi_init_one(struct fwnode_handle *handle, > > + const char *name) > > +{ > > + struct irq_domain *parent; > > + struct irq_domain *mc_msi_domain; > > + > > + parent = irq_find_matching_fwnode(handle, DOMAIN_BUS_NEXUS); > > + if (!parent || !msi_get_domain_info(parent)) { > > + pr_err("%s: Unable to locate ITS domain\n", name); > > + return -ENXIO; > > + } > > + > > + mc_msi_domain = fsl_mc_msi_create_irq_domain(handle, > > + &its_fsl_mc_msi_domain_info, > > + parent); > > + if (!mc_msi_domain) > > + pr_err("ACPIF: unable to create fsl-mc domain\n"); > > + > > + pr_info("fsl-mc MSI: domain created\n"); > > + > > + return 0; > > +} > > + > > +static int __init > > +its_fsl_mc_msi_parse_madt(union acpi_subtable_headers *header, > > + const unsigned long end) > > +{ > > + struct acpi_madt_generic_translator *its_entry; > > + struct fwnode_handle *dom_handle; > > + const char *node_name; > > + int err = -ENXIO; > > + > > + its_entry = (struct acpi_madt_generic_translator *)header; > > + node_name = kasprintf(GFP_KERNEL, "ITS@0x%lx", > > + (long)its_entry->base_address); > > + > > + dom_handle = iort_find_domain_token(its_entry->translation_id); > > + if (!dom_handle) { > > + pr_err("%s: Unable to locate ITS domain handle\n", > node_name); > > + goto out; > > + } > > + > > + err = its_fsl_mc_msi_init_one(dom_handle, node_name); > > + if (!err) > > + pr_info("fsl-mc MSI: %s domain created\n", node_name); > > + > > +out: > > + kfree(node_name); > > + return err; > > +} > > + > > + > > +static int __init its_fsl_mc_acpi_msi_init(void) { > > + acpi_table_parse_madt(ACPI_MADT_TYPE_GENERIC_TRANSLATOR, > > + its_fsl_mc_msi_parse_madt, 0); > > + > > + return 0; > > +} > > + > > +static int __init its_fsl_mc_of_msi_init(void) > > { > > struct device_node *np; > > struct irq_domain *parent; > > @@ -113,4 +176,12 @@ static int __init its_fsl_mc_msi_init(void) > > return 0; > > } > > > > +static int __init its_fsl_mc_msi_init(void) { > > + its_fsl_mc_of_msi_init(); > > + its_fsl_mc_acpi_msi_init(); > > + > > + return 0; > > +} > > + > > early_initcall(its_fsl_mc_msi_init); > > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel