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=-8.3 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, FAKE_REPLY_C,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 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 9DDC6C00454 for ; Wed, 11 Dec 2019 20:56:25 +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 6491D21556 for ; Wed, 11 Dec 2019 20:56:25 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="YcJLoh79" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6491D21556 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.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 36995233B9; Wed, 11 Dec 2019 20:56:25 +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 ue5yl7Hhy0Sr; Wed, 11 Dec 2019 20:56:23 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by silver.osuosl.org (Postfix) with ESMTP id E337922EDD; Wed, 11 Dec 2019 20:56:23 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id C6F23C18DC; Wed, 11 Dec 2019 20:56:23 +0000 (UTC) Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by lists.linuxfoundation.org (Postfix) with ESMTP id 8F4BDC0881 for ; Wed, 11 Dec 2019 20:56:22 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 85E7B86C78 for ; Wed, 11 Dec 2019 20:56:22 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id qhK6f0A57eA3 for ; Wed, 11 Dec 2019 20:56:21 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by fraxinus.osuosl.org (Postfix) with ESMTPS id C26A686C72 for ; Wed, 11 Dec 2019 20:56:21 +0000 (UTC) Received: from localhost (mobile-166-170-223-177.mycingular.net [166.170.223.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 2D93B20836; Wed, 11 Dec 2019 20:56:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1576097781; bh=W21JTWaGa/ZoqxuyazaAcOIJgri7SXi4lkogMT3HvPA=; h=Date:From:To:Cc:Subject:In-Reply-To:From; b=YcJLoh79oaRfo8o/snWm+fsgAai5UlqO1s7cxWIwHawvowzpAMQqbn3XcWKbArK6M oT9iCQnBRjeZcXPCjkRXvYtsRPVovTca/t52YqHpgQfZRcdG96w1ve/gzGaXId4TYO lNiYJVErKtfwQZyyl/nGX07HqC9A/CZTbcDUireI= Date: Wed, 11 Dec 2019 14:56:19 -0600 From: Bjorn Helgaas To: James Sewart Subject: Re: [PATCH v6 2/3] PCI: Add parameter nr_devfns to pci_add_dma_alias Message-ID: <20191211205619.GA109675@google.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <826A0459-FA8D-4BDB-A342-CE46974466DF@arista.com> User-Agent: Mutt/1.10.1 (2018-07-13) Cc: Alex Williamson , Dmitry Safonov , linux-pci@vger.kernel.org, Dmitry Safonov <0x7f454c46@gmail.com>, linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org, Logan Gunthorpe 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="utf-8" Content-Transfer-Encoding: base64 Errors-To: iommu-bounces@lists.linux-foundation.org Sender: "iommu" T24gV2VkLCBEZWMgMTEsIDIwMTkgYXQgMDM6Mzc6MzBQTSArMDAwMCwgSmFtZXMgU2V3YXJ0IHdy b3RlOgo+ID4gT24gMTAgRGVjIDIwMTksIGF0IDIyOjM3LCBCam9ybiBIZWxnYWFzIDxoZWxnYWFz QGtlcm5lbC5vcmc+IHdyb3RlOgo+ID4+IC12b2lkIHBjaV9hZGRfZG1hX2FsaWFzKHN0cnVjdCBw Y2lfZGV2ICpkZXYsIHU4IGRldmZuKQo+ID4+ICt2b2lkIHBjaV9hZGRfZG1hX2FsaWFzKHN0cnVj dCBwY2lfZGV2ICpkZXYsIHU4IGRldmZuX2Zyb20sIHVuc2lnbmVkIG5yX2RldmZucykKPiA+PiB7 Cj4gPj4gKwlpbnQgZGV2Zm5fdG87Cj4gPj4gKwo+ID4+ICsJbnJfZGV2Zm5zID0gbWluKG5yX2Rl dmZucywgKHVuc2lnbmVkKU1BWF9OUl9ERVZGTlMpOwo+ID4+ICsJZGV2Zm5fdG8gPSBkZXZmbl9m cm9tICsgbnJfZGV2Zm5zIC0gMTsKPiA+IAo+ID4gSSBtYWRlIHRoaXMgbG9vayBsaWtlOgo+ID4g Cj4gPiArICAgICAgIGRldmZuX3RvID0gbWluKGRldmZuX2Zyb20gKyBucl9kZXZmbnMgLSAxLAo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQpIE1BWF9OUl9ERVZGTlMgLSAxKTsK PiA+IAo+ID4gc28gZGV2Zm5fZnJvbT0weGYwLCBucl9kZXZmbnM9MHgyMCBkb2Vzbid0IGNhdXNl IGRldmZuX3RvIHRvIHdyYXAKPiA+IGFyb3VuZC4KPiA+IAo+ID4gSSBkaWQga2VlcCBMb2dhbidz IHJldmlld2VkLWJ5LCBzbyBsZXQgbWUga25vdyBpZiBJIGJyb2tlIHNvbWV0aGluZy4KPiAKPiBJ IHRoaW5rIG5yX2RldmZucyBzdGlsbCBuZWVkcyB1cGRhdGluZyBhcyBpdCBpcyB1c2VkIGZvciBi aXRtYXBfc2V0LiAKPiBBbHRob3VnaCB0aGlua2luZyBhYm91dCBpdCBub3cgd2Ugc2hvdWxkIGxp bWl0IHRoZSBudW1iZXIgdG8gYWxpYXMgdG8gYmUgCj4gbWF4aW11bSAoTUFYX05SX0RFVkZOUyAt IGRldmZuX2Zyb20pLCBzbyB0aGF0IHdlIGRvbuKAmXQgc2V0IHBhc3QgdGhlIGVuZCBvZiAKPiB0 aGUgYml0bWFwOgo+IAo+ICBucl9kZXZmbnMgPSBtaW4obnJfZGV2Zm5zLCAodW5zaWduZWQpIE1B WF9OUl9ERVZGTlMgLSBkZXZmbl9mcm9tKTsKPiAKPiBJIHRoaW5rIHdpdGggdGhpcyBjaGFuZ2Ug d2Ugd29udCBuZWVkIHRvIGNsaXAgZGV2Zm5fdG8uCgpJbmRlZWQsIHlvdSdyZSByaWdodCwgdGhh bmtzISAgSSBwdXQgdGhpcyBpbiwgc28gaXQgbm93IGxvb2tzIGxpa2UKdGhlIGZvbGxvd2luZy4g IEkgZHJvcHBlZCBMb2dhbidzIHJldmlld2VkLWJ5IHRvIGF2b2lkIHB1dHRpbmcgd29yZHMKaW4g aGlzIG1vdXRoIDspCgpjb21taXQgNWRkY2Q4NDAzOTVhICgiUENJOiBBZGQgbnJfZGV2Zm5zIHBh cmFtZXRlciB0byBwY2lfYWRkX2RtYV9hbGlhcygpIikKQXV0aG9yOiBKYW1lcyBTZXdhcnQgPGph bWVzc2V3YXJ0QGFyaXN0YS5jb20+CkRhdGU6ICAgVHVlIERlYyAxMCAxNjowNzozMCAyMDE5IC0w NjAwCgogICAgUENJOiBBZGQgbnJfZGV2Zm5zIHBhcmFtZXRlciB0byBwY2lfYWRkX2RtYV9hbGlh cygpCiAgICAKICAgIEFkZCBhICJucl9kZXZmbnMiIHBhcmFtZXRlciB0byBwY2lfYWRkX2RtYV9h bGlhcygpIHNvIGl0IGNhbiBiZSB1c2VkIHRvCiAgICBjcmVhdGUgRE1BIGFsaWFzZXMgZm9yIGEg cmFuZ2Ugb2YgZGV2Zm5zLgogICAgCiAgICBbYmhlbGdhYXM6IGluY29ycG9yYXRlIG5yX2RldmZu cyBmaXggZnJvbSBKYW1lcywgdXBkYXRlCiAgICBxdWlya19wZXhfdmNhX2FsaWFzKCkgYW5kIHNl dHVwX2FsaWFzZXMoKV0KICAgIFNpZ25lZC1vZmYtYnk6IEphbWVzIFNld2FydCA8amFtZXNzZXdh cnRAYXJpc3RhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJqb3JuIEhlbGdhYXMgPGJoZWxnYWFz QGdvb2dsZS5jb20+CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9hbWRfaW9tbXUuYyBiL2Ry aXZlcnMvaW9tbXUvYW1kX2lvbW11LmMKaW5kZXggYmQyNTY3NGVlNGRiLi43YTZjMDU2YjliOWMg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW9tbXUvYW1kX2lvbW11LmMKKysrIGIvZHJpdmVycy9pb21t dS9hbWRfaW9tbXUuYwpAQCAtMjMwLDExICsyMzAsOCBAQCBzdGF0aWMgc3RydWN0IHBjaV9kZXYg KnNldHVwX2FsaWFzZXMoc3RydWN0IGRldmljZSAqZGV2KQogCSAqLwogCWl2cnNfYWxpYXMgPSBh bWRfaW9tbXVfYWxpYXNfdGFibGVbcGNpX2Rldl9pZChwZGV2KV07CiAJaWYgKGl2cnNfYWxpYXMg IT0gcGNpX2Rldl9pZChwZGV2KSAmJgotCSAgICBQQ0lfQlVTX05VTShpdnJzX2FsaWFzKSA9PSBw ZGV2LT5idXMtPm51bWJlcikgewotCQlwY2lfYWRkX2RtYV9hbGlhcyhwZGV2LCBpdnJzX2FsaWFz ICYgMHhmZik7Ci0JCXBjaV9pbmZvKHBkZXYsICJBZGRlZCBQQ0kgRE1BIGFsaWFzICUwMnguJWRc biIsCi0JCQlQQ0lfU0xPVChpdnJzX2FsaWFzKSwgUENJX0ZVTkMoaXZyc19hbGlhcykpOwotCX0K KwkgICAgUENJX0JVU19OVU0oaXZyc19hbGlhcykgPT0gcGRldi0+YnVzLT5udW1iZXIpCisJCXBj aV9hZGRfZG1hX2FsaWFzKHBkZXYsIGl2cnNfYWxpYXMgJiAweGZmLCAxKTsKIAogCWNsb25lX2Fs aWFzZXMocGRldik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL3BjaS5jIGIvZHJpdmVycy9w Y2kvcGNpLmMKaW5kZXggN2I1ZmEyZWFiZTA5Li45NTEwOTkyNzkxOTIgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvcGNpL3BjaS5jCisrKyBiL2RyaXZlcnMvcGNpL3BjaS5jCkBAIC01OTk4LDcgKzU5OTgs OCBAQCBFWFBPUlRfU1lNQk9MX0dQTChwY2lfcHIzX3ByZXNlbnQpOwogLyoqCiAgKiBwY2lfYWRk X2RtYV9hbGlhcyAtIEFkZCBhIERNQSBkZXZmbiBhbGlhcyBmb3IgYSBkZXZpY2UKICAqIEBkZXY6 IHRoZSBQQ0kgZGV2aWNlIGZvciB3aGljaCBhbGlhcyBpcyBhZGRlZAotICogQGRldmZuOiBhbGlh cyBzbG90IGFuZCBmdW5jdGlvbgorICogQGRldmZuX2Zyb206IGFsaWFzIHNsb3QgYW5kIGZ1bmN0 aW9uCisgKiBAbnJfZGV2Zm5zOiBudW1iZXIgb2Ygc3Vic2VxdWVudCBkZXZmbnMgdG8gYWxpYXMK ICAqCiAgKiBUaGlzIGhlbHBlciBlbmNvZGVzIGFuIDgtYml0IGRldmZuIGFzIGEgYml0IG51bWJl ciBpbiBkbWFfYWxpYXNfbWFzawogICogd2hpY2ggaXMgdXNlZCB0byBwcm9ncmFtIHBlcm1pc3Np YmxlIGJ1cy1kZXZmbiBzb3VyY2UgYWRkcmVzc2VzIGZvciBETUEKQEAgLTYwMTQsOCArNjAxNSwx MyBAQCBFWFBPUlRfU1lNQk9MX0dQTChwY2lfcHIzX3ByZXNlbnQpOwogICogY2Fubm90IGJlIGxl ZnQgYXMgYSB1c2Vyc3BhY2UgYWN0aXZpdHkpLiAgRE1BIGFsaWFzZXMgc2hvdWxkIHRoZXJlZm9y ZQogICogYmUgY29uZmlndXJlZCB2aWEgcXVpcmtzLCBzdWNoIGFzIHRoZSBQQ0kgZml4dXAgaGVh ZGVyIHF1aXJrLgogICovCi12b2lkIHBjaV9hZGRfZG1hX2FsaWFzKHN0cnVjdCBwY2lfZGV2ICpk ZXYsIHU4IGRldmZuKQordm9pZCBwY2lfYWRkX2RtYV9hbGlhcyhzdHJ1Y3QgcGNpX2RldiAqZGV2 LCB1OCBkZXZmbl9mcm9tLCB1bnNpZ25lZCBucl9kZXZmbnMpCiB7CisJaW50IGRldmZuX3RvOwor CisJbnJfZGV2Zm5zID0gbWluKG5yX2RldmZucywgKHVuc2lnbmVkKSBNQVhfTlJfREVWRk5TIC0g ZGV2Zm5fZnJvbSk7CisJZGV2Zm5fdG8gPSBkZXZmbl9mcm9tICsgbnJfZGV2Zm5zIC0gMTsKKwog CWlmICghZGV2LT5kbWFfYWxpYXNfbWFzaykKIAkJZGV2LT5kbWFfYWxpYXNfbWFzayA9IGJpdG1h cF96YWxsb2MoTUFYX05SX0RFVkZOUywgR0ZQX0tFUk5FTCk7CiAJaWYgKCFkZXYtPmRtYV9hbGlh c19tYXNrKSB7CkBAIC02MDIzLDkgKzYwMjksMTUgQEAgdm9pZCBwY2lfYWRkX2RtYV9hbGlhcyhz dHJ1Y3QgcGNpX2RldiAqZGV2LCB1OCBkZXZmbikKIAkJcmV0dXJuOwogCX0KIAotCXNldF9iaXQo ZGV2Zm4sIGRldi0+ZG1hX2FsaWFzX21hc2spOwotCXBjaV9pbmZvKGRldiwgIkVuYWJsaW5nIGZp eGVkIERNQSBhbGlhcyB0byAlMDJ4LiVkXG4iLAotCQkgUENJX1NMT1QoZGV2Zm4pLCBQQ0lfRlVO QyhkZXZmbikpOworCWJpdG1hcF9zZXQoZGV2LT5kbWFfYWxpYXNfbWFzaywgZGV2Zm5fZnJvbSwg bnJfZGV2Zm5zKTsKKworCWlmIChucl9kZXZmbnMgPT0gMSkKKwkJcGNpX2luZm8oZGV2LCAiRW5h YmxpbmcgZml4ZWQgRE1BIGFsaWFzIHRvICUwMnguJWRcbiIsCisJCQkJUENJX1NMT1QoZGV2Zm5f ZnJvbSksIFBDSV9GVU5DKGRldmZuX2Zyb20pKTsKKwllbHNlIGlmIChucl9kZXZmbnMgPiAxKQor CQlwY2lfaW5mbyhkZXYsICJFbmFibGluZyBmaXhlZCBETUEgYWxpYXMgZm9yIGRldmZuIHJhbmdl IGZyb20gJTAyeC4lZCB0byAlMDJ4LiVkXG4iLAorCQkJCVBDSV9TTE9UKGRldmZuX2Zyb20pLCBQ Q0lfRlVOQyhkZXZmbl9mcm9tKSwKKwkJCQlQQ0lfU0xPVChkZXZmbl90byksIFBDSV9GVU5DKGRl dmZuX3RvKSk7CiB9CiAKIGJvb2wgcGNpX2RldnNfYXJlX2RtYV9hbGlhc2VzKHN0cnVjdCBwY2lf ZGV2ICpkZXYxLCBzdHJ1Y3QgcGNpX2RldiAqZGV2MikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNp L3F1aXJrcy5jIGIvZHJpdmVycy9wY2kvcXVpcmtzLmMKaW5kZXggNDkzN2EwODhkN2Q4Li4yZmNh ZDE4NjIyZWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL3F1aXJrcy5jCisrKyBiL2RyaXZlcnMv cGNpL3F1aXJrcy5jCkBAIC0zOTMyLDcgKzM5MzIsNyBAQCBpbnQgcGNpX2Rldl9zcGVjaWZpY19y ZXNldChzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgcHJvYmUpCiBzdGF0aWMgdm9pZCBxdWlya19k bWFfZnVuYzBfYWxpYXMoc3RydWN0IHBjaV9kZXYgKmRldikKIHsKIAlpZiAoUENJX0ZVTkMoZGV2 LT5kZXZmbikgIT0gMCkKLQkJcGNpX2FkZF9kbWFfYWxpYXMoZGV2LCBQQ0lfREVWRk4oUENJX1NM T1QoZGV2LT5kZXZmbiksIDApKTsKKwkJcGNpX2FkZF9kbWFfYWxpYXMoZGV2LCBQQ0lfREVWRk4o UENJX1NMT1QoZGV2LT5kZXZmbiksIDApLCAxKTsKIH0KIAogLyoKQEAgLTM5NDYsNyArMzk0Niw3 IEBAIERFQ0xBUkVfUENJX0ZJWFVQX0hFQURFUihQQ0lfVkVORE9SX0lEX1JJQ09ILCAweGU0NzYs IHF1aXJrX2RtYV9mdW5jMF9hbGlhcyk7CiBzdGF0aWMgdm9pZCBxdWlya19kbWFfZnVuYzFfYWxp YXMoc3RydWN0IHBjaV9kZXYgKmRldikKIHsKIAlpZiAoUENJX0ZVTkMoZGV2LT5kZXZmbikgIT0g MSkKLQkJcGNpX2FkZF9kbWFfYWxpYXMoZGV2LCBQQ0lfREVWRk4oUENJX1NMT1QoZGV2LT5kZXZm biksIDEpKTsKKwkJcGNpX2FkZF9kbWFfYWxpYXMoZGV2LCBQQ0lfREVWRk4oUENJX1NMT1QoZGV2 LT5kZXZmbiksIDEpLCAxKTsKIH0KIAogLyoKQEAgLTQwMzEsNyArNDAzMSw3IEBAIHN0YXRpYyB2 b2lkIHF1aXJrX2ZpeGVkX2RtYV9hbGlhcyhzdHJ1Y3QgcGNpX2RldiAqZGV2KQogCiAJaWQgPSBw Y2lfbWF0Y2hfaWQoZml4ZWRfZG1hX2FsaWFzX3RibCwgZGV2KTsKIAlpZiAoaWQpCi0JCXBjaV9h ZGRfZG1hX2FsaWFzKGRldiwgaWQtPmRyaXZlcl9kYXRhKTsKKwkJcGNpX2FkZF9kbWFfYWxpYXMo ZGV2LCBpZC0+ZHJpdmVyX2RhdGEsIDEpOwogfQogREVDTEFSRV9QQ0lfRklYVVBfSEVBREVSKFBD SV9WRU5ET1JfSURfQURBUFRFQzIsIDB4MDI4NSwgcXVpcmtfZml4ZWRfZG1hX2FsaWFzKTsKIApA QCAtNDA3Miw5ICs0MDcyLDkgQEAgREVDTEFSRV9QQ0lfRklYVVBfSEVBREVSKDB4ODA4NiwgMHgy NDRlLCBxdWlya191c2VfcGNpZV9icmlkZ2VfZG1hX2FsaWFzKTsKICAqLwogc3RhdGljIHZvaWQg cXVpcmtfbWljX3gyMDBfZG1hX2FsaWFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQogewotCXBjaV9h ZGRfZG1hX2FsaWFzKHBkZXYsIFBDSV9ERVZGTigweDEwLCAweDApKTsKLQlwY2lfYWRkX2RtYV9h bGlhcyhwZGV2LCBQQ0lfREVWRk4oMHgxMSwgMHgwKSk7Ci0JcGNpX2FkZF9kbWFfYWxpYXMocGRl diwgUENJX0RFVkZOKDB4MTIsIDB4MykpOworCXBjaV9hZGRfZG1hX2FsaWFzKHBkZXYsIFBDSV9E RVZGTigweDEwLCAweDApLCAxKTsKKwlwY2lfYWRkX2RtYV9hbGlhcyhwZGV2LCBQQ0lfREVWRk4o MHgxMSwgMHgwKSwgMSk7CisJcGNpX2FkZF9kbWFfYWxpYXMocGRldiwgUENJX0RFVkZOKDB4MTIs IDB4MyksIDEpOwogfQogREVDTEFSRV9QQ0lfRklYVVBfSEVBREVSKFBDSV9WRU5ET1JfSURfSU5U RUwsIDB4MjI2MCwgcXVpcmtfbWljX3gyMDBfZG1hX2FsaWFzKTsKIERFQ0xBUkVfUENJX0ZJWFVQ X0hFQURFUihQQ0lfVkVORE9SX0lEX0lOVEVMLCAweDIyNjQsIHF1aXJrX21pY194MjAwX2RtYV9h bGlhcyk7CkBAIC00MDk4LDEzICs0MDk4LDggQEAgc3RhdGljIHZvaWQgcXVpcmtfcGV4X3ZjYV9h bGlhcyhzdHJ1Y3QgcGNpX2RldiAqcGRldikKIAljb25zdCB1bnNpZ25lZCBpbnQgbnVtX3BjaV9z bG90cyA9IDB4MjA7CiAJdW5zaWduZWQgaW50IHNsb3Q7CiAKLQlmb3IgKHNsb3QgPSAwOyBzbG90 IDwgbnVtX3BjaV9zbG90czsgc2xvdCsrKSB7Ci0JCXBjaV9hZGRfZG1hX2FsaWFzKHBkZXYsIFBD SV9ERVZGTihzbG90LCAweDApKTsKLQkJcGNpX2FkZF9kbWFfYWxpYXMocGRldiwgUENJX0RFVkZO KHNsb3QsIDB4MSkpOwotCQlwY2lfYWRkX2RtYV9hbGlhcyhwZGV2LCBQQ0lfREVWRk4oc2xvdCwg MHgyKSk7Ci0JCXBjaV9hZGRfZG1hX2FsaWFzKHBkZXYsIFBDSV9ERVZGTihzbG90LCAweDMpKTsK LQkJcGNpX2FkZF9kbWFfYWxpYXMocGRldiwgUENJX0RFVkZOKHNsb3QsIDB4NCkpOwotCX0KKwlm b3IgKHNsb3QgPSAwOyBzbG90IDwgbnVtX3BjaV9zbG90czsgc2xvdCsrKQorCQlwY2lfYWRkX2Rt YV9hbGlhcyhwZGV2LCBQQ0lfREVWRk4oc2xvdCwgMHgwKSwgNSk7CiB9CiBERUNMQVJFX1BDSV9G SVhVUF9IRUFERVIoUENJX1ZFTkRPUl9JRF9JTlRFTCwgMHgyOTU0LCBxdWlya19wZXhfdmNhX2Fs aWFzKTsKIERFQ0xBUkVfUENJX0ZJWFVQX0hFQURFUihQQ0lfVkVORE9SX0lEX0lOVEVMLCAweDI5 NTUsIHF1aXJrX3BleF92Y2FfYWxpYXMpOwpAQCAtNTMzMiw3ICs1MzI3LDcgQEAgc3RhdGljIHZv aWQgcXVpcmtfc3dpdGNodGVjX250Yl9kbWFfYWxpYXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiAJ CQlwY2lfZGJnKHBkZXYsCiAJCQkJIkFsaWFzaW5nIFBhcnRpdGlvbiAlZCBQcm94eSBJRCAlMDJ4 LiVkXG4iLAogCQkJCXBwLCBQQ0lfU0xPVChkZXZmbiksIFBDSV9GVU5DKGRldmZuKSk7Ci0JCQlw Y2lfYWRkX2RtYV9hbGlhcyhwZGV2LCBkZXZmbik7CisJCQlwY2lfYWRkX2RtYV9hbGlhcyhwZGV2 LCBkZXZmbiwgMSk7CiAJCX0KIAl9CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGNpLmgg Yi9pbmNsdWRlL2xpbnV4L3BjaS5oCmluZGV4IGMzOTNkZmYyZDY2Zi4uOTMwZmFiMjkzMDczIDEw MDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3BjaS5oCisrKyBiL2luY2x1ZGUvbGludXgvcGNpLmgK QEAgLTIzMTAsNyArMjMxMCw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGVlaF9kZXYgKnBjaV9k ZXZfdG9fZWVoX2RldihzdHJ1Y3QgcGNpX2RldiAqcGRldikKIH0KICNlbmRpZgogCi12b2lkIHBj aV9hZGRfZG1hX2FsaWFzKHN0cnVjdCBwY2lfZGV2ICpkZXYsIHU4IGRldmZuKTsKK3ZvaWQgcGNp X2FkZF9kbWFfYWxpYXMoc3RydWN0IHBjaV9kZXYgKmRldiwgdTggZGV2Zm5fZnJvbSwgdW5zaWdu ZWQgbnJfZGV2Zm5zKTsKIGJvb2wgcGNpX2RldnNfYXJlX2RtYV9hbGlhc2VzKHN0cnVjdCBwY2lf ZGV2ICpkZXYxLCBzdHJ1Y3QgcGNpX2RldiAqZGV2Mik7CiBpbnQgcGNpX2Zvcl9lYWNoX2RtYV9h bGlhcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAkJCSAgIGludCAoKmZuKShzdHJ1Y3QgcGNpX2Rl diAqcGRldiwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K aW9tbXUgbWFpbGluZyBsaXN0CmlvbW11QGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0dHBz Oi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lvbW11 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=-8.6 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FAKE_REPLY_C,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 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 A2986C43603 for ; Wed, 11 Dec 2019 20:56:23 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 6B40621556 for ; Wed, 11 Dec 2019 20:56:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1576097783; bh=W21JTWaGa/ZoqxuyazaAcOIJgri7SXi4lkogMT3HvPA=; h=Date:From:To:Cc:Subject:In-Reply-To:List-ID:From; b=hKZnPa6x6Nl6rQCjXasNqbqnHTb+eH0yJHVEfNKL1DVWzvP4aX2Xr/+zjJSk4C8Oc 5EqwK3KbS2ZSimzY4hEyV9Auy08gXjWDa47iswuz49m/7KjMH8VGzVVZ0E6CLZtZpC ih/CKAFAwe2Byria42zfbqU2cVJf5EY3L/DNhJ4E= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726312AbfLKU4X (ORCPT ); Wed, 11 Dec 2019 15:56:23 -0500 Received: from mail.kernel.org ([198.145.29.99]:50602 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726141AbfLKU4W (ORCPT ); Wed, 11 Dec 2019 15:56:22 -0500 Received: from localhost (mobile-166-170-223-177.mycingular.net [166.170.223.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 2D93B20836; Wed, 11 Dec 2019 20:56:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1576097781; bh=W21JTWaGa/ZoqxuyazaAcOIJgri7SXi4lkogMT3HvPA=; h=Date:From:To:Cc:Subject:In-Reply-To:From; b=YcJLoh79oaRfo8o/snWm+fsgAai5UlqO1s7cxWIwHawvowzpAMQqbn3XcWKbArK6M oT9iCQnBRjeZcXPCjkRXvYtsRPVovTca/t52YqHpgQfZRcdG96w1ve/gzGaXId4TYO lNiYJVErKtfwQZyyl/nGX07HqC9A/CZTbcDUireI= Date: Wed, 11 Dec 2019 14:56:19 -0600 From: Bjorn Helgaas To: James Sewart Cc: linux-pci@vger.kernel.org, Logan Gunthorpe , Christoph Hellwig , Dmitry Safonov <0x7f454c46@gmail.com>, iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org, Dmitry Safonov , Alex Williamson , Joerg Roedel Subject: Re: [PATCH v6 2/3] PCI: Add parameter nr_devfns to pci_add_dma_alias Message-ID: <20191211205619.GA109675@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <826A0459-FA8D-4BDB-A342-CE46974466DF@arista.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org On Wed, Dec 11, 2019 at 03:37:30PM +0000, James Sewart wrote: > > On 10 Dec 2019, at 22:37, Bjorn Helgaas wrote: > >> -void pci_add_dma_alias(struct pci_dev *dev, u8 devfn) > >> +void pci_add_dma_alias(struct pci_dev *dev, u8 devfn_from, unsigned nr_devfns) > >> { > >> + int devfn_to; > >> + > >> + nr_devfns = min(nr_devfns, (unsigned)MAX_NR_DEVFNS); > >> + devfn_to = devfn_from + nr_devfns - 1; > > > > I made this look like: > > > > + devfn_to = min(devfn_from + nr_devfns - 1, > > + (unsigned) MAX_NR_DEVFNS - 1); > > > > so devfn_from=0xf0, nr_devfns=0x20 doesn't cause devfn_to to wrap > > around. > > > > I did keep Logan's reviewed-by, so let me know if I broke something. > > I think nr_devfns still needs updating as it is used for bitmap_set. > Although thinking about it now we should limit the number to alias to be > maximum (MAX_NR_DEVFNS - devfn_from), so that we don’t set past the end of > the bitmap: > > nr_devfns = min(nr_devfns, (unsigned) MAX_NR_DEVFNS - devfn_from); > > I think with this change we wont need to clip devfn_to. Indeed, you're right, thanks! I put this in, so it now looks like the following. I dropped Logan's reviewed-by to avoid putting words in his mouth ;) commit 5ddcd840395a ("PCI: Add nr_devfns parameter to pci_add_dma_alias()") Author: James Sewart Date: Tue Dec 10 16:07:30 2019 -0600 PCI: Add nr_devfns parameter to pci_add_dma_alias() Add a "nr_devfns" parameter to pci_add_dma_alias() so it can be used to create DMA aliases for a range of devfns. [bhelgaas: incorporate nr_devfns fix from James, update quirk_pex_vca_alias() and setup_aliases()] Signed-off-by: James Sewart Signed-off-by: Bjorn Helgaas diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c index bd25674ee4db..7a6c056b9b9c 100644 --- a/drivers/iommu/amd_iommu.c +++ b/drivers/iommu/amd_iommu.c @@ -230,11 +230,8 @@ static struct pci_dev *setup_aliases(struct device *dev) */ ivrs_alias = amd_iommu_alias_table[pci_dev_id(pdev)]; if (ivrs_alias != pci_dev_id(pdev) && - PCI_BUS_NUM(ivrs_alias) == pdev->bus->number) { - pci_add_dma_alias(pdev, ivrs_alias & 0xff); - pci_info(pdev, "Added PCI DMA alias %02x.%d\n", - PCI_SLOT(ivrs_alias), PCI_FUNC(ivrs_alias)); - } + PCI_BUS_NUM(ivrs_alias) == pdev->bus->number) + pci_add_dma_alias(pdev, ivrs_alias & 0xff, 1); clone_aliases(pdev); diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 7b5fa2eabe09..951099279192 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -5998,7 +5998,8 @@ EXPORT_SYMBOL_GPL(pci_pr3_present); /** * pci_add_dma_alias - Add a DMA devfn alias for a device * @dev: the PCI device for which alias is added - * @devfn: alias slot and function + * @devfn_from: alias slot and function + * @nr_devfns: number of subsequent devfns to alias * * This helper encodes an 8-bit devfn as a bit number in dma_alias_mask * which is used to program permissible bus-devfn source addresses for DMA @@ -6014,8 +6015,13 @@ EXPORT_SYMBOL_GPL(pci_pr3_present); * cannot be left as a userspace activity). DMA aliases should therefore * be configured via quirks, such as the PCI fixup header quirk. */ -void pci_add_dma_alias(struct pci_dev *dev, u8 devfn) +void pci_add_dma_alias(struct pci_dev *dev, u8 devfn_from, unsigned nr_devfns) { + int devfn_to; + + nr_devfns = min(nr_devfns, (unsigned) MAX_NR_DEVFNS - devfn_from); + devfn_to = devfn_from + nr_devfns - 1; + if (!dev->dma_alias_mask) dev->dma_alias_mask = bitmap_zalloc(MAX_NR_DEVFNS, GFP_KERNEL); if (!dev->dma_alias_mask) { @@ -6023,9 +6029,15 @@ void pci_add_dma_alias(struct pci_dev *dev, u8 devfn) return; } - set_bit(devfn, dev->dma_alias_mask); - pci_info(dev, "Enabling fixed DMA alias to %02x.%d\n", - PCI_SLOT(devfn), PCI_FUNC(devfn)); + bitmap_set(dev->dma_alias_mask, devfn_from, nr_devfns); + + if (nr_devfns == 1) + pci_info(dev, "Enabling fixed DMA alias to %02x.%d\n", + PCI_SLOT(devfn_from), PCI_FUNC(devfn_from)); + else if (nr_devfns > 1) + pci_info(dev, "Enabling fixed DMA alias for devfn range from %02x.%d to %02x.%d\n", + PCI_SLOT(devfn_from), PCI_FUNC(devfn_from), + PCI_SLOT(devfn_to), PCI_FUNC(devfn_to)); } bool pci_devs_are_dma_aliases(struct pci_dev *dev1, struct pci_dev *dev2) diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 4937a088d7d8..2fcad18622eb 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -3932,7 +3932,7 @@ int pci_dev_specific_reset(struct pci_dev *dev, int probe) static void quirk_dma_func0_alias(struct pci_dev *dev) { if (PCI_FUNC(dev->devfn) != 0) - pci_add_dma_alias(dev, PCI_DEVFN(PCI_SLOT(dev->devfn), 0)); + pci_add_dma_alias(dev, PCI_DEVFN(PCI_SLOT(dev->devfn), 0), 1); } /* @@ -3946,7 +3946,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_RICOH, 0xe476, quirk_dma_func0_alias); static void quirk_dma_func1_alias(struct pci_dev *dev) { if (PCI_FUNC(dev->devfn) != 1) - pci_add_dma_alias(dev, PCI_DEVFN(PCI_SLOT(dev->devfn), 1)); + pci_add_dma_alias(dev, PCI_DEVFN(PCI_SLOT(dev->devfn), 1), 1); } /* @@ -4031,7 +4031,7 @@ static void quirk_fixed_dma_alias(struct pci_dev *dev) id = pci_match_id(fixed_dma_alias_tbl, dev); if (id) - pci_add_dma_alias(dev, id->driver_data); + pci_add_dma_alias(dev, id->driver_data, 1); } DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ADAPTEC2, 0x0285, quirk_fixed_dma_alias); @@ -4072,9 +4072,9 @@ DECLARE_PCI_FIXUP_HEADER(0x8086, 0x244e, quirk_use_pcie_bridge_dma_alias); */ static void quirk_mic_x200_dma_alias(struct pci_dev *pdev) { - pci_add_dma_alias(pdev, PCI_DEVFN(0x10, 0x0)); - pci_add_dma_alias(pdev, PCI_DEVFN(0x11, 0x0)); - pci_add_dma_alias(pdev, PCI_DEVFN(0x12, 0x3)); + pci_add_dma_alias(pdev, PCI_DEVFN(0x10, 0x0), 1); + pci_add_dma_alias(pdev, PCI_DEVFN(0x11, 0x0), 1); + pci_add_dma_alias(pdev, PCI_DEVFN(0x12, 0x3), 1); } DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2260, quirk_mic_x200_dma_alias); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2264, quirk_mic_x200_dma_alias); @@ -4098,13 +4098,8 @@ static void quirk_pex_vca_alias(struct pci_dev *pdev) const unsigned int num_pci_slots = 0x20; unsigned int slot; - for (slot = 0; slot < num_pci_slots; slot++) { - pci_add_dma_alias(pdev, PCI_DEVFN(slot, 0x0)); - pci_add_dma_alias(pdev, PCI_DEVFN(slot, 0x1)); - pci_add_dma_alias(pdev, PCI_DEVFN(slot, 0x2)); - pci_add_dma_alias(pdev, PCI_DEVFN(slot, 0x3)); - pci_add_dma_alias(pdev, PCI_DEVFN(slot, 0x4)); - } + for (slot = 0; slot < num_pci_slots; slot++) + pci_add_dma_alias(pdev, PCI_DEVFN(slot, 0x0), 5); } DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2954, quirk_pex_vca_alias); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2955, quirk_pex_vca_alias); @@ -5332,7 +5327,7 @@ static void quirk_switchtec_ntb_dma_alias(struct pci_dev *pdev) pci_dbg(pdev, "Aliasing Partition %d Proxy ID %02x.%d\n", pp, PCI_SLOT(devfn), PCI_FUNC(devfn)); - pci_add_dma_alias(pdev, devfn); + pci_add_dma_alias(pdev, devfn, 1); } } diff --git a/include/linux/pci.h b/include/linux/pci.h index c393dff2d66f..930fab293073 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -2310,7 +2310,7 @@ static inline struct eeh_dev *pci_dev_to_eeh_dev(struct pci_dev *pdev) } #endif -void pci_add_dma_alias(struct pci_dev *dev, u8 devfn); +void pci_add_dma_alias(struct pci_dev *dev, u8 devfn_from, unsigned nr_devfns); bool pci_devs_are_dma_aliases(struct pci_dev *dev1, struct pci_dev *dev2); int pci_for_each_dma_alias(struct pci_dev *pdev, int (*fn)(struct pci_dev *pdev,