Message ID | 1438964116-24321-7-git-send-email-hch@lst.de (mailing list archive) |
---|---|
State | Not Applicable |
Delegated to: | Herbert Xu |
Headers | show |
On Fri, Aug 7, 2015 at 9:15 AM, Christoph Hellwig <hch@lst.de> wrote: > From: Dan Williams <dan.j.williams@intel.com> > > 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 > virtual report > virtual org > > @@ > 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) - sg->offset So this ends up being an awkward conversion, a better one is: - page_to_phys(sg_page(sg)) + sg_phys(sg) & PAGE_MASK [..] > diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c > index 5852df8..e0faecc 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) - sg->offset) | prot; For example here, as Joerg pointed out. [1]: https://lkml.org/lkml/2015/6/10/230 -- To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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 -- To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c index cba12f3..58774b9 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) - s->offset; 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 bf4dec2..9c8e8f4 100644 --- a/arch/microblaze/kernel/dma.c +++ b/arch/microblaze/kernel/dma.c @@ -61,7 +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, + __dma_sync(sg_phys(sg), sg->length, direction); } diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c index 5852df8..e0faecc 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) - sg->offset) | 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 f286090..049df49 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 5474615..c422006 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) - sg->offset, 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) - sg->offset, sg->length); } chunk_heap->allocated -= allocated_size;