Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1202859 > unrolled thread
| Started by | Christoph Hellwig <hch@lst.de> |
|---|---|
| First post | 2015-08-07 18:20 +0200 |
| Last post | 2015-08-08 15:30 +0200 |
| Articles | 3 — 3 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
[PATCH 6/6] scatterlist: use sg_phys() Christoph Hellwig <hch@lst.de> - 2015-08-07 18:20 +0200
Re: [PATCH 6/6] scatterlist: use sg_phys() Dan Williams <dan.j.williams@intel.com> - 2015-08-08 03:20 +0200
Re: [PATCH 6/6] scatterlist: use sg_phys() "Williams, Dan J" <dan.j.williams@intel.com> - 2015-08-08 15:30 +0200
| From | Christoph Hellwig <hch@lst.de> |
|---|---|
| Date | 2015-08-07 18:20 +0200 |
| Subject | [PATCH 6/6] scatterlist: use sg_phys() |
| Message-ID | <pUSxb-4FO-3@gated-at.bofh.it> |
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
Cc: Julia Lawall <Julia.Lawall@lip6.fr>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
---
arch/arm/mm/dma-mapping.c | 2 +-
arch/microblaze/kernel/dma.c | 2 +-
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(+), 7 deletions(-)
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;
--
1.9.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Dan Williams <dan.j.williams@intel.com> |
|---|---|
| Date | 2015-08-08 03:20 +0200 |
| Message-ID | <pV0XM-qY-1@gated-at.bofh.it> |
| In reply to | #1202859 |
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-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | "Williams, Dan J" <dan.j.williams@intel.com> |
|---|---|
| Date | 2015-08-08 15:30 +0200 |
| Message-ID | <pVcmd-8q1-5@gated-at.bofh.it> |
| In reply to | #1202859 |
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-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web