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=-13.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS 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 87EBCC433DB for ; Tue, 22 Dec 2020 00:55:24 +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 09BEE22ADF for ; Tue, 22 Dec 2020 00:55:23 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 09BEE22ADF Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=codeaurora.org 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 ACF9D230F3; Tue, 22 Dec 2020 00:55:23 +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 UTNwNjY3mxkY; Tue, 22 Dec 2020 00:55:22 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by silver.osuosl.org (Postfix) with ESMTP id 33E8D21080; Tue, 22 Dec 2020 00:55:22 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 0C0C9C1787; Tue, 22 Dec 2020 00:55:22 +0000 (UTC) Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by lists.linuxfoundation.org (Postfix) with ESMTP id 0B7EAC0893 for ; Tue, 22 Dec 2020 00:55:20 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id DBDA622E96 for ; Tue, 22 Dec 2020 00:55:19 +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 a0EEuOenL8gn for ; Tue, 22 Dec 2020 00:55:18 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from m43-15.mailgun.net (m43-15.mailgun.net [69.72.43.15]) by silver.osuosl.org (Postfix) with ESMTPS id D424021080 for ; Tue, 22 Dec 2020 00:55:15 +0000 (UTC) DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1608598518; h=Message-ID: References: In-Reply-To: Subject: Cc: To: From: Date: Content-Transfer-Encoding: Content-Type: MIME-Version: Sender; bh=YK/eYV9zEDRtsog1iTnXgmXquyS/SZNGMqbSGrb3cWg=; b=U7FCLD4uQ3sAu5MlJBfrB3cXnecusSnAm2B/LCootMdTk5eLiGp1jj6TTTcSvO/zlgmDb4S4 Up2QHiB+4+J3WDFNoTuWryKUAGD5dRlBDk4XugBmlVNduuglyo8uRZql7YdgBAoHIn0CeELE QgSkmMl5MM+O1kaBOv3XiruN1rk= X-Mailgun-Sending-Ip: 69.72.43.15 X-Mailgun-Sid: WyI3NDkwMCIsICJpb21tdUBsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZyIsICJiZTllNGEiXQ== Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n06.prod.us-east-1.postgun.com with SMTP id 5fe143dfb00c0d7ad40b6c2e (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Tue, 22 Dec 2020 00:54:55 GMT Received: by smtp.codeaurora.org (Postfix, from userid 1001) id 6A759C43461; Tue, 22 Dec 2020 00:54:54 +0000 (UTC) Received: from mail.codeaurora.org (localhost.localdomain [127.0.0.1]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: isaacm) by smtp.codeaurora.org (Postfix) with ESMTPSA id 09C31C433CA; Tue, 22 Dec 2020 00:54:52 +0000 (UTC) MIME-Version: 1.0 Date: Mon, 21 Dec 2020 16:54:52 -0800 From: isaacm@codeaurora.org To: Robin Murphy Subject: Re: [PATCH 1/3] iommu/io-pgtable-arm: Prepare for modularization In-Reply-To: <370f7c90-a3e3-57d9-1830-8abe5134e004@arm.com> References: <1608280722-19841-1-git-send-email-isaacm@codeaurora.org> <1608280722-19841-2-git-send-email-isaacm@codeaurora.org> <309ff39d-5fc5-83c6-d423-2d66f503c60c@arm.com> <34ea1af8569e4115e2dd1de61ae95bb6@codeaurora.org> <370f7c90-a3e3-57d9-1830-8abe5134e004@arm.com> Message-ID: X-Sender: isaacm@codeaurora.org User-Agent: Roundcube Webmail/1.3.9 Cc: kernel-team@android.com, pdaly@codeaurora.org, pratikp@codeaurora.org, linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org, will@kernel.org, linux-arm-kernel@lists.infradead.org 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: iommu-bounces@lists.linux-foundation.org Sender: "iommu" T24gMjAyMC0xMi0yMSAwNzoyMiwgUm9iaW4gTXVycGh5IHdyb3RlOgo+IE9uIDIwMjAtMTItMTgg MTg6NTksIGlzYWFjbUBjb2RlYXVyb3JhLm9yZyB3cm90ZToKPj4gT24gMjAyMC0xMi0xOCAwNDoz OCwgUm9iaW4gTXVycGh5IHdyb3RlOgo+Pj4gT24gMjAyMC0xMi0xOCAwODozOCwgSXNhYWMgSi4g TWFuamFycmVzIHdyb3RlOgo+Pj4+IFRoZSBpby1wZ3RhYmxlLWFybSBhbmQgaW8tcGd0YWJsZS1h cm0tdjdzIHNvdXJjZSBmaWxlcyB3aWxsCj4+Pj4gYmUgY29tcGlsZWQgYXMgc2VwYXJhdGUgbW9k dWxlcywgYWxvbmcgd2l0aCB0aGUgaW8tcGd0YWJsZQo+Pj4+IHNvdXJjZS4gRXhwb3J0IHRoZSBz eW1ib2xzIGZvciB0aGUgaW8tcGd0YWJsZSBpbml0IGZ1bmN0aW9uCj4+Pj4gc3RydWN0dXJlcyBm b3IgdGhlIGlvLXBndGFibGUgbW9kdWxlIHRvIHVzZS4KPj4+IAo+Pj4gSW4gbXkgY3VycmVudCBi dWlsZCB0cmVlLCB0aGUgaW8tcGd0YWJsZSBnbHVlIGl0c2VsZiBpcyBhIHdob3BwaW5nIAo+Pj4g Mzc5Cj4+PiBieXRlcyBvZiBjb2RlIGFuZCBkYXRhIC0gaXMgdGhlcmUgcmVhbGx5IGFueSBiZW5l Zml0IHRvIGFsbCB0aGUKPj4+IGFkZGl0aW9uYWwgb3ZlcmhlYWQgb2YgbWFraW5nIHRoYXQgbW9k dWxhcj8gR2l2ZW4gdGhlIG51bWJlciBvZgo+Pj4gZGlmZmVyZW50IHVzZXJzIChpbmNsdWRpbmcg QU1EIG5vdyksIEkgdGhpbmsgYXQgdGhpcyBwb2ludCB3ZSBzaG91bGQKPj4+IHN0YXJ0IGNvbnNp ZGVyaW5nIHRoaXMgYXMgcGFydCBvZiB0aGUgSU9NTVUgY29yZSwgYW5kIGp1c3QgdHdlYWsgdGhl Cj4+PiBpbnRlcmZhY2Ugc3VjaCB0aGF0IGZvcm1hdHMgY2FuIHJlZ2lzdGVyIHRoZWlyIG93biBp bml0X2Zucwo+Pj4gZHluYW1pY2FsbHkgaW5zdGVhZCBvZiB0aGUgc3RhdGljIGFycmF5IHRoYXQn cyBhbHdheXMgaG9ycmlibGUuCj4+PiAKPj4+IFJvYmluLgo+Pj4gCj4+IFRoYW5rcyBmb3IgdGhl IGZlZWRiYWNrLCBSb2Jpbi4gVGhpcyBpcyBhbiBhdmVudWUgSSBoYWQgZXhwbG9yZWQgYSBiaXQg Cj4+IHdoZW4gbW9kdWxhcml6aW5nIHRoZSBjb2RlLiBIb3dldmVyLAo+PiBJIGNhbWUgdXAgd2l0 aCBhIGZldyBwcm9ibGVtcyB0aGF0IEkgY291bGRuJ3QgZ2V0IGFyb3VuZC4KPj4gCj4+IDEpIElm IHdlIGxlYXZlIHRoZSBpby1wZ3RhYmxlIGdsdWUgYXMgcGFydCBvZiB0aGUgY29yZSBrZXJuZWws IHdlIG5lZWQgCj4+IHRvIGVuc3VyZSB0aGF0IHRoZSBpby1wZ3RhYmxlIGZvcm1hdAo+PiBtb2R1 bGVzIGdldCBsb2FkZWQgcHJpb3IgdG8gYW55IGRyaXZlciB0aGF0IG1pZ2h0IHVzZSB0aGVtIChl LmcuIElPTU1VIAo+PiBkcml2ZXJzL290aGVyIGNhbGxlcnMgb2YgYWxsb2NfaW9fcGd0YWJsZV9v cHMpLgo+PiAgwqDCoMKgIGEpIFRoaXMgY2FuIGdldCBhIGJpdCBtZXNzeSwgYXMgdGhlcmUncyBu byBzeW1ib2wgZGVwZW5kZW5jaWVzIAo+PiBiZXR3ZWVuIHRoZSBjYWxsZXJzIG9mIHRoZSBpby1w Z3RhYmxlCj4+ICDCoMKgwqDCoMKgwqAgY29kZSwgYW5kIHRoZSBwYWdlIHRhYmxlIGZvcm1hdCBt b2R1bGVzLCBzaW5jZSBldmVyeXRoaW5nIGlzIAo+PiB0aHJvdWdoIGZ1bmN0aW9uIHBvaW50ZXJz LiBUaGlzIGlzIGhhbmRsZWQKPj4gIMKgwqDCoMKgwqDCoCBmb3IgdGhlIElPTU1VIGRyaXZlcnMg dGhyb3VnaCB0aGUgZGV2bGluayBmZWF0dXJlLCBidXQgSSBkb24ndCAKPj4gc2VlIGhvdyB3ZSBj YW4gbGV2ZXJhZ2Ugc29tZXRoaW5nIGxpa2UgdGhhdAo+PiAgwqDCoMKgwqDCoMKgIGhlcmUuIEkg Z3Vlc3MgdGhpcyBpc24ndCB0b28gbXVjaCBvZiBhIHByb2JsZW0gd2hlbiBldmVyeXRoaW5nIAo+ PiBpcyBidWlsdC1pbiwgYXMgdGhlIHJlZ2lzdHJhdGlvbiBjYW4gaGFwcGVuCj4+ICDCoMKgwqDC oMKgwqAgaW4gb25lIG9mIHRoZSBlYXJsaWVyIGluaXRjYWxsIGxldmVscy4KPj4gCj4+ICDCoMKg wqAgYikgSWYgd2UgZG8gcnVuIGludG8gYSBzY2VuYXJpbyB3aGVyZSBhIGNsaWVudCBvZiBpby1w Z3RhYmxlIAo+PiB0cmllcyB0byBhbGxvY2F0ZSBhIHBhZ2UgdGFibGUgaW5zdGFuY2UgcHJpb3IK Pj4gIMKgwqDCoMKgwqDCoCB0byB0aGUgaW8tcGd0YWJsZSBmb3JtYXQgbW9kdWxlIGJlaW5nIGxv YWRlZCwgSSBjb3VsZG4ndCBjb21lIAo+PiB1cCB3aXRoIGEgd2F5IG9mIGRpc3Rpbmd1aXNoaW5n IGJldHdlZW4KPj4gIMKgwqDCoMKgwqDCoCBmb3JtYXQgbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUg YXQgdGhlIG1vbWVudCB2c8KgIGZvcm1hdCBtb2R1bGUgCj4+IHdpbGwgbmV2ZXIgYmUgYXZhaWxh YmxlLiBJIGRvbid0IHRoaW5rCj4+ICDCoMKgwqDCoMKgwqAgcmV0dXJuaW5nIEVQUk9CRV9ERUZF UiB3b3VsZCBiZSBzb21ldGhpbmcgbmljZSB0byBkbyBpbiB0aGF0IAo+PiBjYXNlLgo+IAo+IFVy Z2gsIEkgc2VlLi4uIHllcywgdGhlIGN1cnJlbnQgYXBwcm9hY2ggZG9lcyB3b3JrIG91dCBhcyBh bgo+IHVuZXhwZWN0ZWRseSBuZWF0IHdheSB0byBhdm9pZCBtYW55IG9mIHRoZSBwaXRmYWxscy4g SG93ZXZlciBJJ20gbm90Cj4gc3VyZSBpdCBhY3R1YWxseSBhdm9pZHMgYWxsIG9mIHRoZW0gLSBz YXkgeW91IGhhdmUgYSBjb25maWcgbGlrZSB0aGlzOgo+IAo+IElQTU1VX1ZNU0E9eQo+IC0+IElP X1BHVEFCTEVfQVJNX0xQQUU9eQo+ICAgIC0+IElPX1BHVEFCTEU9eQo+IE1US19JT01NVT1tCj4g LT4gSU9fUEdUQUJMRV9BUk1WN1M9bQo+IAo+IHdvbid0IHRoYXQgc3RpbGwgZmFpbCB0byBsaW5r IGlvLXBndGFibGUubz8KPiAKWWVzLCB5b3UgYXJlIGNvcnJlY3QsIHRoYXQgd291bGQgYmUgcHJv YmxlbWF0aWMuCj4+IDIpIFdlIHdvdWxkIGhhdmUgdG8gZW5zdXJlIHRoYXQgdGhlIGZvcm1hdCBt b2R1bGUgY2Fubm90IGJlIHVubG9hZGVkIAo+PiB3aGlsZSBvdGhlciBjbGllbnRzIGFyZSB1c2lu ZyBpdC4gSSBzdXBwb3NlCj4+IHRoaXMgaXNuJ3QgYXMgYmlnIGFzIHBvaW50ICMxIHRob3VnaCwg c2luY2UgaXQncyBzb21ldGhpbmcgdGhhdCBjYW4gCj4+IHByb2JhYmx5IGJlIGhhbmRsZWQgdGhy b3VnaCBhIHNpbWlsYXIgcmVmIGNvdW50Cj4+IG1lY2hhbmlzbSB0aGF0IHdlJ3JlIHVzaW5nIGZv ciBtb2R1bGFyIElPTU1VIGRyaXZlcnMuCj4gCj4gRldJVyBJIHRoaW5rIHRoYXQgd291bGQgY29t ZSBvdXQgaW4gdGhlIHdhc2ggZnJvbSByZXNvbHZpbmcgMWIgLSBJJ2QKPiBhc3N1bWUgdGhlcmUg d291bGQgaGF2ZSB0byBiZSBzb21lIHNvcnQgb2YgbW9kdWxlX2dldCgpIGluIHRoZXJlCj4gc29t ZXdoZXJlLiBJIHNob3VsZCBwcm9iYWJseSBnbyBhbmQgbG9vayBhdCBob3cgdGhlIGNyeXB0byBB UEkgaGFuZGxlcwo+IGl0cyBtb2R1bGFyIGFsZ29yaXRobXMgZm9yIG1vcmUgaW5zcGlyYXRpb24u Li4KU28gSSBsb29rZWQgdGhyb3VnaCB0aGUgY3J5cHRvIGRpciwgYW5kIGl0IHNlZW1zIGxpa2Ug dGhleS0tYWxvbmcgd2l0aCBhIApmZXcgb3RoZXIga2VybmVsIGRyaXZlcnMtLWFyZSB1c2luZyBN T0RVTEVfU09GVERFUCgpCnRvIHNvcnQgb3V0IHRoZXNlIGRlcGVuZGVuY2llcy4KPiAKPj4gR2l2 ZW4gdGhlIHR3byByZWFzb25zIGFib3ZlLCBJIHdlbnQgd2l0aCB0aGUgY3VycmVudCBhcHByb2Fj aCwgc2luY2UgCj4+IGl0IGF2b2lkcyBib3RoIGlzc3VlcyBieSBjcmVhdGluZyBzeW1ib2wgZGVw ZW5kZW5jaWVzCj4+IGJldHdlZW4gY2xpZW50IGRyaXZlcnMsIHRoZSBpby1wZ3RhYmxlIGRyaXZl cnMsIGFuZCB0aGUgaW8tcGd0YWJsZSAKPj4gZm9ybWF0IGRyaXZlcnMsIHNvIHRoYXQgZW5zdXJl cyB0aGF0IHRoZXkgYXJlIGxvYWRlZAo+PiBpbiB0aGUgY29ycmVjdCBvcmRlciwgYW5kIGFsc28g cHJldmVudHMgdGhlbSBmcm9tIGJlaW5nIHJlbW92ZWQsIAo+PiB1bmxlc3MgdGhlcmUgYXJlbid0 IGFueSB1c2VycyBwcmVzZW50Lgo+IAo+IEhhdmluZyB0aG91Z2h0IGFsbCB0aGF0IG92ZXIsIEkn bSBub3cgd29uZGVyaW5nIHdoYXQgd2UgcmVhbGx5IGdhaW4KPiBmcm9tIHRoaXMgZWl0aGVyIHdh eSAtIGlmIHZlbmRvcnMgY2FuIGJ1aWxkIGFuZCBzaGlwIFNvQy10YWlsb3JlZAo+IGNvbmZpZ3Ms IHRoZW4gdGhleSBjYW4gYWxyZWFkeSB0dXJuIG9mZiBmb3JtYXRzIHRoZXkgZG9uJ3QgY2FyZSBh Ym91dC4KPiBJZiB0aGUgYWltIGlzIHRvIHNoaXAgYSBzaW5nbGUgY29uZmlnIGV2ZXJ5d2hlcmUs IHRoZW4geW91J2xsIHN0aWxsCj4gaGF2ZSB0byBwcm92aXNpb24gYW5kIGxvYWQgYWxsIHBvc3Np YmxlIGZvcm1hdHMgb24gYW55IHN5c3RlbSB0aGF0Cj4gbmVlZHMgYW55IG9uZSBvZiB0aGVtLCB0 aGFua3MgdG8gdGhvc2UgImNvbnZlbmllbnQiIHN5bWJvbAo+IGRlcGVuZGVuY2llcy4gVGhlIHBy b21pc2UgaW4gdGhlIGNvdmVyIGxldHRlciBkb2Vzbid0IHNlZW0gdG8KPiBtYXRlcmlhbGlzZSA6 Lwo+IAo+IFJvYmluLgo+IApHaXZlbiB0aGUgZmVlZGJhY2ssIHRoaXMgbWFrZXMgc2Vuc2UuIEkn dmUgY29tZSB1cCB3aXRoIGEgc2Vjb25kIHZlcnNpb24gCm9mIHRoZSBwYXRjaGVzIHRoYXQgbGVh dmVzCnRoZSBpby1wZ3RhYmxlIGNvZGUgaW4gdGhlIGtlcm5lbCwgYW5kIGFsbG93cyB0aGUgZm9y bWF0cyB0byBiZSBtb2R1bGVzLCAKd2hpY2ggYmV0dGVyIGFjaGlldmVzIHdoYXQKdGhlIGNvdmVy LWxldHRlciBpcyB0cnlpbmcgdG8gZXhwcmVzcyA6KSBJIGJlbGlldmUgdGhhdCB3aXRoIHRoZSBz ZWNvbmQgCnBhdGNoLCB3ZSBzaG91bGQgYmUgYWJsZSB0bwpnZXQgdG8gYSBwbGFjZSB3aGVyZSB0 aGUga2VybmVsIGp1c3QgbmVlZHMgdG8gcHJvdmlkZSBpby1wZ3RhYmxlLCB3aGlsZSAKdmVuZG9y cyBjYW4gcHJvdmlkZSBlaXRoZXIKaW8tcGd0YWJsZS1hcm0gb3IgaW8tcGd0YWJsZS1hcm0tdjdz IG9yIGJvdGgsIGFzIG5lZWRlZC4KSGVyZSBhcmUgdGhlIHBhdGNoZXM6IApodHRwczovL2xvcmUu a2VybmVsLm9yZy9saW51eC1pb21tdS8xNjA4NTk3ODc2LTMyMzY3LTEtZ2l0LXNlbmQtZW1haWwt aXNhYWNtQGNvZGVhdXJvcmEub3JnL1QvI3QKClRoYW5rcywKSXNhYWMKPj4gCj4+IFRoYW5rcywK Pj4gSXNhYWMKPj4+PiBTaWduZWQtb2ZmLWJ5OiBJc2FhYyBKLiBNYW5qYXJyZXMgPGlzYWFjbUBj b2RlYXVyb3JhLm9yZz4KPj4+PiAtLS0KPj4+PiDCoCBkcml2ZXJzL2lvbW11L2lvLXBndGFibGUt YXJtLXY3cy5jIHwgNCArKysrCj4+Pj4gwqAgZHJpdmVycy9pb21tdS9pby1wZ3RhYmxlLWFybS5j wqDCoMKgwqAgfCA4ICsrKysrKysrCj4+Pj4gwqAgMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRp b25zKCspCj4+Pj4gCj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvaW8tcGd0YWJsZS1h cm0tdjdzLmMgCj4+Pj4gYi9kcml2ZXJzL2lvbW11L2lvLXBndGFibGUtYXJtLXY3cy5jCj4+Pj4g aW5kZXggMWQ5MmFjOS4uZjA2MmMxYyAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2lvbW11L2lv LXBndGFibGUtYXJtLXY3cy5jCj4+Pj4gKysrIGIvZHJpdmVycy9pb21tdS9pby1wZ3RhYmxlLWFy bS12N3MuYwo+Pj4+IEBAIC0yOCw2ICsyOCw3IEBACj4+Pj4gwqAgI2luY2x1ZGUgPGxpbnV4L2lv bW11Lmg+Cj4+Pj4gwqAgI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+Pj4+IMKgICNpbmNsdWRl IDxsaW51eC9rbWVtbGVhay5oPgo+Pj4+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4+Pj4g wqAgI2luY2x1ZGUgPGxpbnV4L3NpemVzLmg+Cj4+Pj4gwqAgI2luY2x1ZGUgPGxpbnV4L3NsYWIu aD4KPj4+PiDCoCAjaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4KPj4+PiBAQCAtODM5LDYgKzg0 MCw3IEBAIHN0cnVjdCBpb19wZ3RhYmxlX2luaXRfZm5zIAo+Pj4+IGlvX3BndGFibGVfYXJtX3Y3 c19pbml0X2ZucyA9IHsKPj4+PiDCoMKgwqDCoMKgIC5hbGxvY8KgwqDCoCA9IGFybV92N3NfYWxs b2NfcGd0YWJsZSwKPj4+PiDCoMKgwqDCoMKgIC5mcmVlwqDCoMKgID0gYXJtX3Y3c19mcmVlX3Bn dGFibGUsCj4+Pj4gwqAgfTsKPj4+PiArRVhQT1JUX1NZTUJPTF9HUEwoaW9fcGd0YWJsZV9hcm1f djdzX2luaXRfZm5zKTsKPj4+PiDCoMKgwqAgI2lmZGVmIENPTkZJR19JT01NVV9JT19QR1RBQkxF X0FSTVY3U19TRUxGVEVTVAo+Pj4+IMKgIEBAIC05ODQsMyArOTg2LDUgQEAgc3RhdGljIGludCBf X2luaXQgYXJtX3Y3c19kb19zZWxmdGVzdHModm9pZCkKPj4+PiDCoCB9Cj4+Pj4gwqAgc3Vic3lz X2luaXRjYWxsKGFybV92N3NfZG9fc2VsZnRlc3RzKTsKPj4+PiDCoCAjZW5kaWYKPj4+PiArCj4+ Pj4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9p b21tdS9pby1wZ3RhYmxlLWFybS5jIAo+Pj4+IGIvZHJpdmVycy9pb21tdS9pby1wZ3RhYmxlLWFy bS5jCj4+Pj4gaW5kZXggODdkZWY1OC4uMjYyM2Q1NyAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJz L2lvbW11L2lvLXBndGFibGUtYXJtLmMKPj4+PiArKysgYi9kcml2ZXJzL2lvbW11L2lvLXBndGFi bGUtYXJtLmMKPj4+PiBAQCAtMTMsNiArMTMsNyBAQAo+Pj4+IMKgICNpbmNsdWRlIDxsaW51eC9i aXRvcHMuaD4KPj4+PiDCoCAjaW5jbHVkZSA8bGludXgvaW8tcGd0YWJsZS5oPgo+Pj4+IMKgICNp bmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPj4+PiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ Pj4+IMKgICNpbmNsdWRlIDxsaW51eC9zaXplcy5oPgo+Pj4+IMKgICNpbmNsdWRlIDxsaW51eC9z bGFiLmg+Cj4+Pj4gwqAgI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4+Pj4gQEAgLTEwNDcsMjYg KzEwNDgsMzEgQEAgc3RydWN0IGlvX3BndGFibGVfaW5pdF9mbnMgCj4+Pj4gaW9fcGd0YWJsZV9h cm1fNjRfbHBhZV9zMV9pbml0X2ZucyA9IHsKPj4+PiDCoMKgwqDCoMKgIC5hbGxvY8KgwqDCoCA9 IGFybV82NF9scGFlX2FsbG9jX3BndGFibGVfczEsCj4+Pj4gwqDCoMKgwqDCoCAuZnJlZcKgwqDC oCA9IGFybV9scGFlX2ZyZWVfcGd0YWJsZSwKPj4+PiDCoCB9Owo+Pj4+ICtFWFBPUlRfU1lNQk9M X0dQTChpb19wZ3RhYmxlX2FybV82NF9scGFlX3MxX2luaXRfZm5zKTsKPj4+PiDCoMKgwqAgc3Ry dWN0IGlvX3BndGFibGVfaW5pdF9mbnMgaW9fcGd0YWJsZV9hcm1fNjRfbHBhZV9zMl9pbml0X2Zu cyA9IAo+Pj4+IHsKPj4+PiDCoMKgwqDCoMKgIC5hbGxvY8KgwqDCoCA9IGFybV82NF9scGFlX2Fs bG9jX3BndGFibGVfczIsCj4+Pj4gwqDCoMKgwqDCoCAuZnJlZcKgwqDCoCA9IGFybV9scGFlX2Zy ZWVfcGd0YWJsZSwKPj4+PiDCoCB9Owo+Pj4+ICtFWFBPUlRfU1lNQk9MX0dQTChpb19wZ3RhYmxl X2FybV82NF9scGFlX3MyX2luaXRfZm5zKTsKPj4+PiDCoMKgwqAgc3RydWN0IGlvX3BndGFibGVf aW5pdF9mbnMgaW9fcGd0YWJsZV9hcm1fMzJfbHBhZV9zMV9pbml0X2ZucyA9IAo+Pj4+IHsKPj4+ PiDCoMKgwqDCoMKgIC5hbGxvY8KgwqDCoCA9IGFybV8zMl9scGFlX2FsbG9jX3BndGFibGVfczEs Cj4+Pj4gwqDCoMKgwqDCoCAuZnJlZcKgwqDCoCA9IGFybV9scGFlX2ZyZWVfcGd0YWJsZSwKPj4+ PiDCoCB9Owo+Pj4+ICtFWFBPUlRfU1lNQk9MX0dQTChpb19wZ3RhYmxlX2FybV8zMl9scGFlX3Mx X2luaXRfZm5zKTsKPj4+PiDCoMKgwqAgc3RydWN0IGlvX3BndGFibGVfaW5pdF9mbnMgaW9fcGd0 YWJsZV9hcm1fMzJfbHBhZV9zMl9pbml0X2ZucyA9IAo+Pj4+IHsKPj4+PiDCoMKgwqDCoMKgIC5h bGxvY8KgwqDCoCA9IGFybV8zMl9scGFlX2FsbG9jX3BndGFibGVfczIsCj4+Pj4gwqDCoMKgwqDC oCAuZnJlZcKgwqDCoCA9IGFybV9scGFlX2ZyZWVfcGd0YWJsZSwKPj4+PiDCoCB9Owo+Pj4+ICtF WFBPUlRfU1lNQk9MX0dQTChpb19wZ3RhYmxlX2FybV8zMl9scGFlX3MyX2luaXRfZm5zKTsKPj4+ PiDCoMKgwqAgc3RydWN0IGlvX3BndGFibGVfaW5pdF9mbnMgaW9fcGd0YWJsZV9hcm1fbWFsaV9s cGFlX2luaXRfZm5zID0gewo+Pj4+IMKgwqDCoMKgwqAgLmFsbG9jwqDCoMKgID0gYXJtX21hbGlf bHBhZV9hbGxvY19wZ3RhYmxlLAo+Pj4+IMKgwqDCoMKgwqAgLmZyZWXCoMKgwqAgPSBhcm1fbHBh ZV9mcmVlX3BndGFibGUsCj4+Pj4gwqAgfTsKPj4+PiArRVhQT1JUX1NZTUJPTF9HUEwoaW9fcGd0 YWJsZV9hcm1fbWFsaV9scGFlX2luaXRfZm5zKTsKPj4+PiDCoMKgwqAgI2lmZGVmIENPTkZJR19J T01NVV9JT19QR1RBQkxFX0xQQUVfU0VMRlRFU1QKPj4+PiDCoCBAQCAtMTI1MiwzICsxMjU4LDUg QEAgc3RhdGljIGludCBfX2luaXQgCj4+Pj4gYXJtX2xwYWVfZG9fc2VsZnRlc3RzKHZvaWQpCj4+ Pj4gwqAgfQo+Pj4+IMKgIHN1YnN5c19pbml0Y2FsbChhcm1fbHBhZV9kb19zZWxmdGVzdHMpOwo+ Pj4+IMKgICNlbmRpZgo+Pj4+ICsKPj4+PiArTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwo+Pj4+ IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppb21tdSBt YWlsaW5nIGxpc3QKaW9tbXVAbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0 cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vaW9tbXU= 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=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS 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 19781C433DB for ; Tue, 22 Dec 2020 00:56:17 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id CECDC22ADF for ; Tue, 22 Dec 2020 00:56:16 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725924AbgLVAzz (ORCPT ); Mon, 21 Dec 2020 19:55:55 -0500 Received: from so254-31.mailgun.net ([198.61.254.31]:39613 "EHLO so254-31.mailgun.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725780AbgLVAzz (ORCPT ); Mon, 21 Dec 2020 19:55:55 -0500 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1608598534; h=Message-ID: References: In-Reply-To: Subject: Cc: To: From: Date: Content-Transfer-Encoding: Content-Type: MIME-Version: Sender; bh=YK/eYV9zEDRtsog1iTnXgmXquyS/SZNGMqbSGrb3cWg=; b=LZ6C9/StismQA03aG1kc9tJEv9Up2D0usPVobPpkfiPuSn9JpQgEd4K5qcO99N1uhsybqF+8 oORSCKqkYMXbVUZz6sY6kXWOwT0TEDUukw3SwGHvKZf2euIYpEJKVG7F7yg9trEKaFMT/OKF rVqSpaYcCyTXwmhIoRHrR27EEyo= X-Mailgun-Sending-Ip: 198.61.254.31 X-Mailgun-Sid: WyI0MWYwYSIsICJsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnIiwgImJlOWU0YSJd Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n02.prod.us-west-2.postgun.com with SMTP id 5fe143de6d2f42c6668f2590 (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Tue, 22 Dec 2020 00:54:54 GMT Sender: isaacm=codeaurora.org@mg.codeaurora.org Received: by smtp.codeaurora.org (Postfix, from userid 1001) id 8B7A8C43463; Tue, 22 Dec 2020 00:54:54 +0000 (UTC) Received: from mail.codeaurora.org (localhost.localdomain [127.0.0.1]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: isaacm) by smtp.codeaurora.org (Postfix) with ESMTPSA id 09C31C433CA; Tue, 22 Dec 2020 00:54:52 +0000 (UTC) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Date: Mon, 21 Dec 2020 16:54:52 -0800 From: isaacm@codeaurora.org To: Robin Murphy Cc: iommu@lists.linux-foundation.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, will@kernel.org, joro@8bytes.org, pdaly@codeaurora.org, pratikp@codeaurora.org, kernel-team@android.com Subject: Re: [PATCH 1/3] iommu/io-pgtable-arm: Prepare for modularization In-Reply-To: <370f7c90-a3e3-57d9-1830-8abe5134e004@arm.com> References: <1608280722-19841-1-git-send-email-isaacm@codeaurora.org> <1608280722-19841-2-git-send-email-isaacm@codeaurora.org> <309ff39d-5fc5-83c6-d423-2d66f503c60c@arm.com> <34ea1af8569e4115e2dd1de61ae95bb6@codeaurora.org> <370f7c90-a3e3-57d9-1830-8abe5134e004@arm.com> Message-ID: X-Sender: isaacm@codeaurora.org User-Agent: Roundcube Webmail/1.3.9 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2020-12-21 07:22, Robin Murphy wrote: > On 2020-12-18 18:59, isaacm@codeaurora.org wrote: >> On 2020-12-18 04:38, Robin Murphy wrote: >>> On 2020-12-18 08:38, Isaac J. Manjarres wrote: >>>> The io-pgtable-arm and io-pgtable-arm-v7s source files will >>>> be compiled as separate modules, along with the io-pgtable >>>> source. Export the symbols for the io-pgtable init function >>>> structures for the io-pgtable module to use. >>> >>> In my current build tree, the io-pgtable glue itself is a whopping >>> 379 >>> bytes of code and data - is there really any benefit to all the >>> additional overhead of making that modular? Given the number of >>> different users (including AMD now), I think at this point we should >>> start considering this as part of the IOMMU core, and just tweak the >>> interface such that formats can register their own init_fns >>> dynamically instead of the static array that's always horrible. >>> >>> Robin. >>> >> Thanks for the feedback, Robin. This is an avenue I had explored a bit >> when modularizing the code. However, >> I came up with a few problems that I couldn't get around. >> >> 1) If we leave the io-pgtable glue as part of the core kernel, we need >> to ensure that the io-pgtable format >> modules get loaded prior to any driver that might use them (e.g. IOMMU >> drivers/other callers of alloc_io_pgtable_ops). >>     a) This can get a bit messy, as there's no symbol dependencies >> between the callers of the io-pgtable >>        code, and the page table format modules, since everything is >> through function pointers. This is handled >>        for the IOMMU drivers through the devlink feature, but I don't >> see how we can leverage something like that >>        here. I guess this isn't too much of a problem when everything >> is built-in, as the registration can happen >>        in one of the earlier initcall levels. >> >>     b) If we do run into a scenario where a client of io-pgtable >> tries to allocate a page table instance prior >>        to the io-pgtable format module being loaded, I couldn't come >> up with a way of distinguishing between >>        format module is not available at the moment vs  format module >> will never be available. I don't think >>        returning EPROBE_DEFER would be something nice to do in that >> case. > > Urgh, I see... yes, the current approach does work out as an > unexpectedly neat way to avoid many of the pitfalls. However I'm not > sure it actually avoids all of them - say you have a config like this: > > IPMMU_VMSA=y > -> IO_PGTABLE_ARM_LPAE=y > -> IO_PGTABLE=y > MTK_IOMMU=m > -> IO_PGTABLE_ARMV7S=m > > won't that still fail to link io-pgtable.o? > Yes, you are correct, that would be problematic. >> 2) We would have to ensure that the format module cannot be unloaded >> while other clients are using it. I suppose >> this isn't as big as point #1 though, since it's something that can >> probably be handled through a similar ref count >> mechanism that we're using for modular IOMMU drivers. > > FWIW I think that would come out in the wash from resolving 1b - I'd > assume there would have to be some sort of module_get() in there > somewhere. I should probably go and look at how the crypto API handles > its modular algorithms for more inspiration... So I looked through the crypto dir, and it seems like they--along with a few other kernel drivers--are using MODULE_SOFTDEP() to sort out these dependencies. > >> Given the two reasons above, I went with the current approach, since >> it avoids both issues by creating symbol dependencies >> between client drivers, the io-pgtable drivers, and the io-pgtable >> format drivers, so that ensures that they are loaded >> in the correct order, and also prevents them from being removed, >> unless there aren't any users present. > > Having thought all that over, I'm now wondering what we really gain > from this either way - if vendors can build and ship SoC-tailored > configs, then they can already turn off formats they don't care about. > If the aim is to ship a single config everywhere, then you'll still > have to provision and load all possible formats on any system that > needs any one of them, thanks to those "convenient" symbol > dependencies. The promise in the cover letter doesn't seem to > materialise :/ > > Robin. > Given the feedback, this makes sense. I've come up with a second version of the patches that leaves the io-pgtable code in the kernel, and allows the formats to be modules, which better achieves what the cover-letter is trying to express :) I believe that with the second patch, we should be able to get to a place where the kernel just needs to provide io-pgtable, while vendors can provide either io-pgtable-arm or io-pgtable-arm-v7s or both, as needed. Here are the patches: https://lore.kernel.org/linux-iommu/1608597876-32367-1-git-send-email-isaacm@codeaurora.org/T/#t Thanks, Isaac >> >> Thanks, >> Isaac >>>> Signed-off-by: Isaac J. Manjarres >>>> --- >>>>   drivers/iommu/io-pgtable-arm-v7s.c | 4 ++++ >>>>   drivers/iommu/io-pgtable-arm.c     | 8 ++++++++ >>>>   2 files changed, 12 insertions(+) >>>> >>>> diff --git a/drivers/iommu/io-pgtable-arm-v7s.c >>>> b/drivers/iommu/io-pgtable-arm-v7s.c >>>> index 1d92ac9..f062c1c 100644 >>>> --- a/drivers/iommu/io-pgtable-arm-v7s.c >>>> +++ b/drivers/iommu/io-pgtable-arm-v7s.c >>>> @@ -28,6 +28,7 @@ >>>>   #include >>>>   #include >>>>   #include >>>> +#include >>>>   #include >>>>   #include >>>>   #include >>>> @@ -839,6 +840,7 @@ struct io_pgtable_init_fns >>>> io_pgtable_arm_v7s_init_fns = { >>>>       .alloc    = arm_v7s_alloc_pgtable, >>>>       .free    = arm_v7s_free_pgtable, >>>>   }; >>>> +EXPORT_SYMBOL_GPL(io_pgtable_arm_v7s_init_fns); >>>>     #ifdef CONFIG_IOMMU_IO_PGTABLE_ARMV7S_SELFTEST >>>>   @@ -984,3 +986,5 @@ static int __init arm_v7s_do_selftests(void) >>>>   } >>>>   subsys_initcall(arm_v7s_do_selftests); >>>>   #endif >>>> + >>>> +MODULE_LICENSE("GPL v2"); >>>> diff --git a/drivers/iommu/io-pgtable-arm.c >>>> b/drivers/iommu/io-pgtable-arm.c >>>> index 87def58..2623d57 100644 >>>> --- a/drivers/iommu/io-pgtable-arm.c >>>> +++ b/drivers/iommu/io-pgtable-arm.c >>>> @@ -13,6 +13,7 @@ >>>>   #include >>>>   #include >>>>   #include >>>> +#include >>>>   #include >>>>   #include >>>>   #include >>>> @@ -1047,26 +1048,31 @@ struct io_pgtable_init_fns >>>> io_pgtable_arm_64_lpae_s1_init_fns = { >>>>       .alloc    = arm_64_lpae_alloc_pgtable_s1, >>>>       .free    = arm_lpae_free_pgtable, >>>>   }; >>>> +EXPORT_SYMBOL_GPL(io_pgtable_arm_64_lpae_s1_init_fns); >>>>     struct io_pgtable_init_fns io_pgtable_arm_64_lpae_s2_init_fns = >>>> { >>>>       .alloc    = arm_64_lpae_alloc_pgtable_s2, >>>>       .free    = arm_lpae_free_pgtable, >>>>   }; >>>> +EXPORT_SYMBOL_GPL(io_pgtable_arm_64_lpae_s2_init_fns); >>>>     struct io_pgtable_init_fns io_pgtable_arm_32_lpae_s1_init_fns = >>>> { >>>>       .alloc    = arm_32_lpae_alloc_pgtable_s1, >>>>       .free    = arm_lpae_free_pgtable, >>>>   }; >>>> +EXPORT_SYMBOL_GPL(io_pgtable_arm_32_lpae_s1_init_fns); >>>>     struct io_pgtable_init_fns io_pgtable_arm_32_lpae_s2_init_fns = >>>> { >>>>       .alloc    = arm_32_lpae_alloc_pgtable_s2, >>>>       .free    = arm_lpae_free_pgtable, >>>>   }; >>>> +EXPORT_SYMBOL_GPL(io_pgtable_arm_32_lpae_s2_init_fns); >>>>     struct io_pgtable_init_fns io_pgtable_arm_mali_lpae_init_fns = { >>>>       .alloc    = arm_mali_lpae_alloc_pgtable, >>>>       .free    = arm_lpae_free_pgtable, >>>>   }; >>>> +EXPORT_SYMBOL_GPL(io_pgtable_arm_mali_lpae_init_fns); >>>>     #ifdef CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST >>>>   @@ -1252,3 +1258,5 @@ static int __init >>>> arm_lpae_do_selftests(void) >>>>   } >>>>   subsys_initcall(arm_lpae_do_selftests); >>>>   #endif >>>> + >>>> +MODULE_LICENSE("GPL v2"); >>>>