From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Williams, Dan J" Subject: Re: [PATCH 6/6] scatterlist: use sg_phys() Date: Sat, 8 Aug 2015 13:23:58 +0000 Message-ID: <1439040234.26522.4.camel@intel.com> References: <1438964116-24321-1-git-send-email-hch@lst.de> <1438964116-24321-7-git-send-email-hch@lst.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "linux-kernel@vger.kernel.org" , "joro@8bytes.org" , "linux-crypto@vger.kernel.org" , "Julia.Lawall@lip6.fr" , "axboe@kernel.dk" , "herbert@gondor.apana.org.au" To: "hch@lst.de" Return-path: Received: from mga02.intel.com ([134.134.136.20]:49718 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932740AbbHHNYA (ORCPT ); Sat, 8 Aug 2015 09:24:00 -0400 In-Reply-To: <1438964116-24321-7-git-send-email-hch@lst.de> Content-Language: en-US Content-ID: <4A9D4072986C724C9BF4C729A93B832C@intel.com> Sender: linux-crypto-owner@vger.kernel.org List-ID: T24gRnJpLCAyMDE1LTA4LTA3IGF0IDE4OjE1ICswMjAwLCBDaHJpc3RvcGggSGVsbHdpZyB3cm90 ZToNClsuLl0NCj4gLSBwYWdlX3RvX3BoeXMoc2dfcGFnZShzZykpDQo+ICsgc2dfcGh5cyhzZykg LSBzZy0+b2Zmc2V0DQoNCkhlcmUncyBhIHJlcGxhY2VtZW50IHVzaW5nIFBBR0VfTUFTSyBpbnN0 ZWFkIG9mIHN1YnRyYWN0aW5nIHNnLT5vZmZzZXQNCmFuZCBhIGZpeHVwIGZvciB0aGUgYXdrd2Fy ZCB3aGl0ZXNwYWNlIGluIGRtYV9kaXJlY3RfbWFwX3NnKCkuDQoNCjg8LS0tLS0NClN1YmplY3Q6 IHNjYXR0ZXJsaXN0OiB1c2Ugc2dfcGh5cygpDQoNCkZyb206IERhbiBXaWxsaWFtcyA8ZGFuLmou d2lsbGlhbXNAaW50ZWwuY29tPg0KDQpDb2NjaW5lbGxlIGNsZWFudXAgdG8gcmVwbGFjZSBvcGVu IGNvZGVkIHNnIHRvIHBoeXNpY2FsIGFkZHJlc3MNCnRyYW5zbGF0aW9ucy4gIFRoaXMgaXMgaW4g cHJlcGFyYXRpb24gZm9yIGludHJvZHVjaW5nIHNjYXR0ZXJsaXN0cyB0aGF0DQpyZWZlcmVuY2Ug X19wZm5fdC4NCg0KLy8gc2dfcGh5cy5jb2NjaTogY29udmVydCB1c2FnZSBwYWdlX3RvX3BoeXMo c2dfcGFnZShzZykpIHRvIHNnX3BoeXMoc2cpDQovLyB1c2FnZTogbWFrZSBjb2NjaWNoZWNrIENP Q0NJPXNnX3BoeXMuY29jY2kgTU9ERT1wYXRjaA0KDQp2aXJ0dWFsIHBhdGNoDQoNCkBADQpzdHJ1 Y3Qgc2NhdHRlcmxpc3QgKnNnOw0KQEANCg0KLSBwYWdlX3RvX3BoeXMoc2dfcGFnZShzZykpICsg c2ctPm9mZnNldA0KKyBzZ19waHlzKHNnKQ0KDQpAQA0Kc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsN CkBADQoNCi0gcGFnZV90b19waHlzKHNnX3BhZ2Uoc2cpKQ0KKyBzZ19waHlzKHNnKSAmIFBBR0Vf TUFTSw0KDQpTaWduZWQtb2ZmLWJ5OiBEYW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGludGVs LmNvbT4NCi0tLQ0KIGFyY2gvYXJtL21tL2RtYS1tYXBwaW5nLmMgICAgICAgICAgICAgICAgICAg IHwgICAgMiArLQ0KIGFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvZG1hLmMgICAgICAgICAgICAgICAg IHwgICAgMyArLS0NCiBkcml2ZXJzL2lvbW11L2ludGVsLWlvbW11LmMgICAgICAgICAgICAgICAg ICB8ICAgIDQgKystLQ0KIGRyaXZlcnMvaW9tbXUvaW9tbXUuYyAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgMiArLQ0KIGRyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9pb25fY2h1bmtfaGVh cC5jIHwgICAgNCArKy0tDQogNSBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDggZGVs ZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jIGIvYXJj aC9hcm0vbW0vZG1hLW1hcHBpbmcuYw0KaW5kZXggY2JhMTJmMzRmZjc3Li4zZDNkNmFhNjBjODcg MTAwNjQ0DQotLS0gYS9hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jDQorKysgYi9hcmNoL2FybS9t bS9kbWEtbWFwcGluZy5jDQpAQCAtMTUyMCw3ICsxNTIwLDcgQEAgc3RhdGljIGludCBfX21hcF9z Z19jaHVuayhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBzY2F0dGVybGlzdCAqc2csDQogCQly ZXR1cm4gLUVOT01FTTsNCiANCiAJZm9yIChjb3VudCA9IDAsIHMgPSBzZzsgY291bnQgPCAoc2l6 ZSA+PiBQQUdFX1NISUZUKTsgcyA9IHNnX25leHQocykpIHsNCi0JCXBoeXNfYWRkcl90IHBoeXMg PSBwYWdlX3RvX3BoeXMoc2dfcGFnZShzKSk7DQorCQlwaHlzX2FkZHJfdCBwaHlzID0gc2dfcGh5 cyhzKSAmIFBBR0VfTUFTSzsNCiAJCXVuc2lnbmVkIGludCBsZW4gPSBQQUdFX0FMSUdOKHMtPm9m ZnNldCArIHMtPmxlbmd0aCk7DQogDQogCQlpZiAoIWlzX2NvaGVyZW50ICYmDQpkaWZmIC0tZ2l0 IGEvYXJjaC9taWNyb2JsYXplL2tlcm5lbC9kbWEuYyBiL2FyY2gvbWljcm9ibGF6ZS9rZXJuZWwv ZG1hLmMNCmluZGV4IGJmNGRlYzIyOTQzNy4uYzg5ZGE2MzEyOTU0IDEwMDY0NA0KLS0tIGEvYXJj aC9taWNyb2JsYXplL2tlcm5lbC9kbWEuYw0KKysrIGIvYXJjaC9taWNyb2JsYXplL2tlcm5lbC9k bWEuYw0KQEAgLTYxLDggKzYxLDcgQEAgc3RhdGljIGludCBkbWFfZGlyZWN0X21hcF9zZyhzdHJ1 Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBzY2F0dGVybGlzdCAqc2dsLA0KIAkvKiBGSVhNRSB0aGlz IHBhcnQgb2YgY29kZSBpcyB1bnRlc3RlZCAqLw0KIAlmb3JfZWFjaF9zZyhzZ2wsIHNnLCBuZW50 cywgaSkgew0KIAkJc2ctPmRtYV9hZGRyZXNzID0gc2dfcGh5cyhzZyk7DQotCQlfX2RtYV9zeW5j KHBhZ2VfdG9fcGh5cyhzZ19wYWdlKHNnKSkgKyBzZy0+b2Zmc2V0LA0KLQkJCQkJCQlzZy0+bGVu Z3RoLCBkaXJlY3Rpb24pOw0KKwkJX19kbWFfc3luYyhzZ19waHlzKHNnKSwgc2ctPmxlbmd0aCwg ZGlyZWN0aW9uKTsNCiAJfQ0KIA0KIAlyZXR1cm4gbmVudHM7DQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9pb21tdS9pbnRlbC1pb21tdS5jIGIvZHJpdmVycy9pb21tdS9pbnRlbC1pb21tdS5jDQppbmRl eCA1ODUyZGY4Y2M1MGYuLjdiNmM1YjYzZWNlNyAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvaW9tbXUv aW50ZWwtaW9tbXUuYw0KKysrIGIvZHJpdmVycy9pb21tdS9pbnRlbC1pb21tdS5jDQpAQCAtMjA5 OCw3ICsyMDk4LDcgQEAgc3RhdGljIGludCBfX2RvbWFpbl9tYXBwaW5nKHN0cnVjdCBkbWFyX2Rv bWFpbiAqZG9tYWluLCB1bnNpZ25lZCBsb25nIGlvdl9wZm4sDQogCQkJc2dfcmVzID0gYWxpZ25l ZF9ucnBhZ2VzKHNnLT5vZmZzZXQsIHNnLT5sZW5ndGgpOw0KIAkJCXNnLT5kbWFfYWRkcmVzcyA9 ICgoZG1hX2FkZHJfdClpb3ZfcGZuIDw8IFZURF9QQUdFX1NISUZUKSArIHNnLT5vZmZzZXQ7DQog CQkJc2ctPmRtYV9sZW5ndGggPSBzZy0+bGVuZ3RoOw0KLQkJCXB0ZXZhbCA9IHBhZ2VfdG9fcGh5 cyhzZ19wYWdlKHNnKSkgfCBwcm90Ow0KKwkJCXB0ZXZhbCA9IChzZ19waHlzKHNnKSAmIFBBR0Vf TUFTSykgfCBwcm90Ow0KIAkJCXBoeXNfcGZuID0gcHRldmFsID4+IFZURF9QQUdFX1NISUZUOw0K IAkJfQ0KIA0KQEAgLTM2MjUsNyArMzYyNSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfbm9udHJhbnNs YXRlX21hcF9zZyhzdHJ1Y3QgZGV2aWNlICpoZGRldiwNCiANCiAJZm9yX2VhY2hfc2coc2dsaXN0 LCBzZywgbmVsZW1zLCBpKSB7DQogCQlCVUdfT04oIXNnX3BhZ2Uoc2cpKTsNCi0JCXNnLT5kbWFf YWRkcmVzcyA9IHBhZ2VfdG9fcGh5cyhzZ19wYWdlKHNnKSkgKyBzZy0+b2Zmc2V0Ow0KKwkJc2ct PmRtYV9hZGRyZXNzID0gc2dfcGh5cyhzZyk7DQogCQlzZy0+ZG1hX2xlbmd0aCA9IHNnLT5sZW5n dGg7DQogCX0NCiAJcmV0dXJuIG5lbGVtczsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2lv bW11LmMgYi9kcml2ZXJzL2lvbW11L2lvbW11LmMNCmluZGV4IGYyODYwOTA5MzFjYy4uMDQ5ZGY0 OTVjMjc0IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9pb21tdS9pb21tdS5jDQorKysgYi9kcml2ZXJz L2lvbW11L2lvbW11LmMNCkBAIC0xNDA4LDcgKzE0MDgsNyBAQCBzaXplX3QgZGVmYXVsdF9pb21t dV9tYXBfc2coc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLCB1bnNpZ25lZCBsb25nIGlvdmEs DQogCW1pbl9wYWdlc3ogPSAxIDw8IF9fZmZzKGRvbWFpbi0+b3BzLT5wZ3NpemVfYml0bWFwKTsN CiANCiAJZm9yX2VhY2hfc2coc2csIHMsIG5lbnRzLCBpKSB7DQotCQlwaHlzX2FkZHJfdCBwaHlz ID0gcGFnZV90b19waHlzKHNnX3BhZ2UocykpICsgcy0+b2Zmc2V0Ow0KKwkJcGh5c19hZGRyX3Qg cGh5cyA9IHNnX3BoeXMocyk7DQogDQogCQkvKg0KIAkJICogV2UgYXJlIG1hcHBpbmcgb24gSU9N TVUgcGFnZSBib3VuZGFyaWVzLCBzbyBvZmZzZXQgd2l0aGluDQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9zdGFnaW5nL2FuZHJvaWQvaW9uL2lvbl9jaHVua19oZWFwLmMgYi9kcml2ZXJzL3N0YWdpbmcv YW5kcm9pZC9pb24vaW9uX2NodW5rX2hlYXAuYw0KaW5kZXggNTQ3NDYxNTdkNzk5Li5mN2I2ZWY5 OTFjZDAgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9pb24vaW9uX2NodW5r X2hlYXAuYw0KKysrIGIvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL2lvbl9jaHVua19oZWFw LmMNCkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyBpbnQgaW9uX2NodW5rX2hlYXBfYWxsb2NhdGUo c3RydWN0IGlvbl9oZWFwICpoZWFwLA0KIGVycjoNCiAJc2cgPSB0YWJsZS0+c2dsOw0KIAlmb3Ig KGkgLT0gMTsgaSA+PSAwOyBpLS0pIHsNCi0JCWdlbl9wb29sX2ZyZWUoY2h1bmtfaGVhcC0+cG9v bCwgcGFnZV90b19waHlzKHNnX3BhZ2Uoc2cpKSwNCisJCWdlbl9wb29sX2ZyZWUoY2h1bmtfaGVh cC0+cG9vbCwgc2dfcGh5cyhzZykgJiBQQUdFX01BU0ssDQogCQkJICAgICAgc2ctPmxlbmd0aCk7 DQogCQlzZyA9IHNnX25leHQoc2cpOw0KIAl9DQpAQCAtMTA5LDcgKzEwOSw3IEBAIHN0YXRpYyB2 b2lkIGlvbl9jaHVua19oZWFwX2ZyZWUoc3RydWN0IGlvbl9idWZmZXIgKmJ1ZmZlcikNCiAJCQkJ CQkJRE1BX0JJRElSRUNUSU9OQUwpOw0KIA0KIAlmb3JfZWFjaF9zZyh0YWJsZS0+c2dsLCBzZywg dGFibGUtPm5lbnRzLCBpKSB7DQotCQlnZW5fcG9vbF9mcmVlKGNodW5rX2hlYXAtPnBvb2wsIHBh Z2VfdG9fcGh5cyhzZ19wYWdlKHNnKSksDQorCQlnZW5fcG9vbF9mcmVlKGNodW5rX2hlYXAtPnBv b2wsIHNnX3BoeXMoc2cpICYgUEFHRV9NQVNLLA0KIAkJCSAgICAgIHNnLT5sZW5ndGgpOw0KIAl9 DQogCWNodW5rX2hlYXAtPmFsbG9jYXRlZCAtPSBhbGxvY2F0ZWRfc2l6ZTsNCg0K From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932837AbbHHNYD (ORCPT ); Sat, 8 Aug 2015 09:24:03 -0400 Received: from mga02.intel.com ([134.134.136.20]:49718 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932740AbbHHNYA (ORCPT ); Sat, 8 Aug 2015 09:24:00 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.15,634,1432623600"; d="scan'208";a="538258576" From: "Williams, Dan J" To: "hch@lst.de" CC: "linux-kernel@vger.kernel.org" , "joro@8bytes.org" , "linux-crypto@vger.kernel.org" , "Julia.Lawall@lip6.fr" , "axboe@kernel.dk" , "herbert@gondor.apana.org.au" Subject: Re: [PATCH 6/6] scatterlist: use sg_phys() Thread-Topic: [PATCH 6/6] scatterlist: use sg_phys() Thread-Index: AQHQ0SyzKY/eP4G31ku3MkFJaebYHJ4CjfEA Date: Sat, 8 Aug 2015 13:23:58 +0000 Message-ID: <1439040234.26522.4.camel@intel.com> References: <1438964116-24321-1-git-send-email-hch@lst.de> <1438964116-24321-7-git-send-email-hch@lst.de> In-Reply-To: <1438964116-24321-7-git-send-email-hch@lst.de> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.22.254.139] Content-Type: text/plain; charset="utf-8" Content-ID: <4A9D4072986C724C9BF4C729A93B832C@intel.com> MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by mail.home.local id t78DOcVF027208 On Fri, 2015-08-07 at 18:15 +0200, Christoph Hellwig wrote: [..] > - page_to_phys(sg_page(sg)) > + sg_phys(sg) - sg->offset Here's a replacement using PAGE_MASK instead of subtracting sg->offset and a fixup for the awkward whitespace in dma_direct_map_sg(). 8<----- Subject: scatterlist: use sg_phys() From: Dan Williams Coccinelle cleanup to replace open coded sg to physical address translations. This is in preparation for introducing scatterlists that reference __pfn_t. // sg_phys.cocci: convert usage page_to_phys(sg_page(sg)) to sg_phys(sg) // usage: make coccicheck COCCI=sg_phys.cocci MODE=patch virtual patch @@ struct scatterlist *sg; @@ - page_to_phys(sg_page(sg)) + sg->offset + sg_phys(sg) @@ struct scatterlist *sg; @@ - page_to_phys(sg_page(sg)) + sg_phys(sg) & PAGE_MASK Signed-off-by: Dan Williams --- arch/arm/mm/dma-mapping.c | 2 +- arch/microblaze/kernel/dma.c | 3 +-- drivers/iommu/intel-iommu.c | 4 ++-- drivers/iommu/iommu.c | 2 +- drivers/staging/android/ion/ion_chunk_heap.c | 4 ++-- 5 files changed, 7 insertions(+), 8 deletions(-) diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c index cba12f34ff77..3d3d6aa60c87 100644 --- a/arch/arm/mm/dma-mapping.c +++ b/arch/arm/mm/dma-mapping.c @@ -1520,7 +1520,7 @@ static int __map_sg_chunk(struct device *dev, struct scatterlist *sg, return -ENOMEM; for (count = 0, s = sg; count < (size >> PAGE_SHIFT); s = sg_next(s)) { - phys_addr_t phys = page_to_phys(sg_page(s)); + phys_addr_t phys = sg_phys(s) & PAGE_MASK; unsigned int len = PAGE_ALIGN(s->offset + s->length); if (!is_coherent && diff --git a/arch/microblaze/kernel/dma.c b/arch/microblaze/kernel/dma.c index bf4dec229437..c89da6312954 100644 --- a/arch/microblaze/kernel/dma.c +++ b/arch/microblaze/kernel/dma.c @@ -61,8 +61,7 @@ static int dma_direct_map_sg(struct device *dev, struct scatterlist *sgl, /* FIXME this part of code is untested */ for_each_sg(sgl, sg, nents, i) { sg->dma_address = sg_phys(sg); - __dma_sync(page_to_phys(sg_page(sg)) + sg->offset, - sg->length, direction); + __dma_sync(sg_phys(sg), sg->length, direction); } return nents; diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c index 5852df8cc50f..7b6c5b63ece7 100644 --- a/drivers/iommu/intel-iommu.c +++ b/drivers/iommu/intel-iommu.c @@ -2098,7 +2098,7 @@ static int __domain_mapping(struct dmar_domain *domain, unsigned long iov_pfn, sg_res = aligned_nrpages(sg->offset, sg->length); sg->dma_address = ((dma_addr_t)iov_pfn << VTD_PAGE_SHIFT) + sg->offset; sg->dma_length = sg->length; - pteval = page_to_phys(sg_page(sg)) | prot; + pteval = (sg_phys(sg) & PAGE_MASK) | prot; phys_pfn = pteval >> VTD_PAGE_SHIFT; } @@ -3625,7 +3625,7 @@ static int intel_nontranslate_map_sg(struct device *hddev, for_each_sg(sglist, sg, nelems, i) { BUG_ON(!sg_page(sg)); - sg->dma_address = page_to_phys(sg_page(sg)) + sg->offset; + sg->dma_address = sg_phys(sg); sg->dma_length = sg->length; } return nelems; diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index f286090931cc..049df495c274 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -1408,7 +1408,7 @@ size_t default_iommu_map_sg(struct iommu_domain *domain, unsigned long iova, min_pagesz = 1 << __ffs(domain->ops->pgsize_bitmap); for_each_sg(sg, s, nents, i) { - phys_addr_t phys = page_to_phys(sg_page(s)) + s->offset; + phys_addr_t phys = sg_phys(s); /* * We are mapping on IOMMU page boundaries, so offset within diff --git a/drivers/staging/android/ion/ion_chunk_heap.c b/drivers/staging/android/ion/ion_chunk_heap.c index 54746157d799..f7b6ef991cd0 100644 --- a/drivers/staging/android/ion/ion_chunk_heap.c +++ b/drivers/staging/android/ion/ion_chunk_heap.c @@ -81,7 +81,7 @@ static int ion_chunk_heap_allocate(struct ion_heap *heap, err: sg = table->sgl; for (i -= 1; i >= 0; i--) { - gen_pool_free(chunk_heap->pool, page_to_phys(sg_page(sg)), + gen_pool_free(chunk_heap->pool, sg_phys(sg) & PAGE_MASK, sg->length); sg = sg_next(sg); } @@ -109,7 +109,7 @@ static void ion_chunk_heap_free(struct ion_buffer *buffer) DMA_BIDIRECTIONAL); for_each_sg(table->sgl, sg, table->nents, i) { - gen_pool_free(chunk_heap->pool, page_to_phys(sg_page(sg)), + gen_pool_free(chunk_heap->pool, sg_phys(sg) & PAGE_MASK, sg->length); } chunk_heap->allocated -= allocated_size; {.n++%ݶw{.n+{G{ayʇڙ,jfhz_(階ݢj"mG?&~iOzv^m ?I