[patch 05/30] PS3: Use ioremap_flags

STALE7031d

6 messages, 3 authors, 2007-06-14 · open the first message on its own page

[patch 05/30] PS3: Use ioremap_flags

From: Geoff Levand <hidden>
Date: 2007-06-12 18:55:32

Use ioremap_flags() to map SPU regions as non-guarded.
Change the use of _ioremap() to ioremap_flags().

CC: Arnd Bergmann <redacted>
CC: Masato Noguchi <redacted>
CC: Takao Shinohara <redacted>
Signed-off-by: Geert Uytterhoeven <redacted>
Signed-off-by: Geoff Levand <redacted>
---
 arch/powerpc/platforms/ps3/htab.c |    2 +-
 arch/powerpc/platforms/ps3/spu.c  |   19 ++++++++++++-------
 2 files changed, 13 insertions(+), 8 deletions(-)
--- a/arch/powerpc/platforms/ps3/htab.c
+++ b/arch/powerpc/platforms/ps3/htab.c
@@ -273,7 +273,7 @@ void __init ps3_map_htab(void)
 
 	result = lv1_map_htab(0, &htab_addr);
 
-	htab = (hpte_t *)__ioremap(htab_addr, htab_size,
+	htab = (hpte_t *)ioremap_flags(htab_addr, htab_size,
 				   pgprot_val(PAGE_READONLY_X));
 
 	DBG("%s:%d: lpar %016lxh, virt %016lxh\n", __func__, __LINE__,
--- a/arch/powerpc/platforms/ps3/spu.c
+++ b/arch/powerpc/platforms/ps3/spu.c
@@ -182,30 +182,35 @@ static int __init setup_areas(struct spu
 {
 	struct table {char* name; unsigned long addr; unsigned long size;};
 
-	spu_pdata(spu)->shadow = __ioremap(
+	spu_pdata(spu)->shadow = (__force void *)ioremap_flags(
 		spu_pdata(spu)->shadow_addr, sizeof(struct spe_shadow),
-		pgprot_val(PAGE_READONLY) | _PAGE_NO_CACHE | _PAGE_GUARDED);
+		pgprot_val(PAGE_READONLY) | _PAGE_NO_CACHE);
+
 	if (!spu_pdata(spu)->shadow) {
 		pr_debug("%s:%d: ioremap shadow failed\n", __func__, __LINE__);
 		goto fail_ioremap;
 	}
 
-	spu->local_store = ioremap(spu->local_store_phys, LS_SIZE);
+	spu->local_store = (__force void *)ioremap_flags(spu->local_store_phys,
+		LS_SIZE, _PAGE_NO_CACHE);
+
 	if (!spu->local_store) {
 		pr_debug("%s:%d: ioremap local_store failed\n",
 			__func__, __LINE__);
 		goto fail_ioremap;
 	}
 
-	spu->problem = ioremap(spu->problem_phys,
-		sizeof(struct spu_problem));
+	spu->problem = (__force void *)ioremap_flags(spu->problem_phys,
+		sizeof(struct spu_problem), _PAGE_NO_CACHE);
+
 	if (!spu->problem) {
 		pr_debug("%s:%d: ioremap problem failed\n", __func__, __LINE__);
 		goto fail_ioremap;
 	}
 
-	spu->priv2 = ioremap(spu_pdata(spu)->priv2_addr,
-		sizeof(struct spu_priv2));
+	spu->priv2 = (__force void *)ioremap_flags(spu_pdata(spu)->priv2_addr,
+		sizeof(struct spu_priv2), _PAGE_NO_CACHE);
+
 	if (!spu->priv2) {
 		pr_debug("%s:%d: ioremap priv2 failed\n", __func__, __LINE__);
 		goto fail_ioremap;
-- 

Re: [patch 05/30] PS3: Use ioremap_flags

From: Arnd Bergmann <arnd@arndb.de>
Date: 2007-06-13 09:10:59

T24gVHVlc2RheSAxMiBKdW5lIDIwMDcsIEdlb2ZmIExldmFuZCB3cm90ZToKPiAtwqDCoMKgwqDC
oMKgwqBzcHUtPnByb2JsZW0gPSBpb3JlbWFwKHNwdS0+cHJvYmxlbV9waHlzLAo+IC3CoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzaXplb2Yoc3RydWN0IHNwdV9wcm9ibGVtKSk7Cj4gK8Kg
wqDCoMKgwqDCoMKgc3B1LT5wcm9ibGVtID0gKF9fZm9yY2Ugdm9pZCAqKWlvcmVtYXBfZmxhZ3Mo
c3B1LT5wcm9ibGVtX3BoeXMsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNpemVv
ZihzdHJ1Y3Qgc3B1X3Byb2JsZW0pLCBfUEFHRV9OT19DQUNIRSk7Cj4gKwoKVW5saWtlIHRoZSBs
b2NhbF9zdG9yZSBtZW1iZXIsIG9mIHN0cnVjdCBzcHUsIC0+cHJvYmxlbSBhbmQgLT5wcml2Mgpt
ZW1iZXJzIGFyZSBfX2lvbWVtLCBzbyB5b3Ugc2hvdWxkIG5vdCBkbyBhIF9fZm9yY2UgY2FzdCBo
ZXJlLgoKT3RoZXIgdGhhbiB0aGF0LCB0aGUgcGF0Y2ggbG9va3MgZ29vZC4KCk5vdGUgdGhhdCBJ
IG1heSByZXBseSBmYXN0ZXIgaXMgeW91IHNlbmQgeW91ciBtZXNzYWdlcyB0byBhcm5kQGFybmRi
LmRlCmluc3RlYWQgb2YgYXJuZC5iZXJnbWFubkBkZS5pYm0uY29tLgoKCUFybmQgPD48Cg==

Re: [patch 05/30] PS3: Use ioremap_flags

From: Geoff Levand <hidden>
Date: 2007-06-14 01:42:51

Arnd Bergmann wrote:
On Tuesday 12 June 2007, Geoff Levand wrote:
quoted
-       spu->problem = ioremap(spu->problem_phys,
-               sizeof(struct spu_problem));
+       spu->problem = (__force void *)ioremap_flags(spu->problem_phys,
+               sizeof(struct spu_problem), _PAGE_NO_CACHE);
+
Unlike the local_store member, of struct spu, ->problem and ->priv2
members are __iomem, so you should not do a __force cast here.

OK, thanks for checking it, I just did a quick edit without thinking.

-Geoff

Re: [patch 05/30] PS3: Use ioremap_flags

From: Takao Shinohara <hidden>
Date: 2007-06-14 02:31:42

On 2007/06/13, at 3:43, Geoff Levand wrote:
-	spu->problem = ioremap(spu->problem_phys,
-		sizeof(struct spu_problem));
+	spu->problem = (__force void *)ioremap_flags(spu->problem_phys,
+		sizeof(struct spu_problem), _PAGE_NO_CACHE);
+
 	if (!spu->problem) {
 		pr_debug("%s:%d: ioremap problem failed\n", __func__, __LINE__);
 		goto fail_ioremap;
 	}

-	spu->priv2 = ioremap(spu_pdata(spu)->priv2_addr,
-		sizeof(struct spu_priv2));
+	spu->priv2 = (__force void 
*)ioremap_flags(spu_pdata(spu)->priv2_addr,
+		sizeof(struct spu_priv2), _PAGE_NO_CACHE);
+
 	if (!spu->priv2) {
 		pr_debug("%s:%d: ioremap priv2 failed\n", __func__, __LINE__);
 		goto fail_ioremap;
spu->problem and spu->priv2 needs _PAGE_GUARDED, because they are
MMIO register region.

-- Takao Shinohara

[patch 05/30 v2] PS3: Use ioremap_flags

From: Geoff Levand <hidden>
Date: 2007-06-14 19:03:25

Use ioremap_flags() to map SPU and htab regions as non-guarded.
Change the use of _ioremap() to ioremap_flags().

CC: Arnd Bergmann <redacted>
CC: Masato Noguchi <redacted>
CC: Takao Shinohara <redacted>
Signed-off-by: Geert Uytterhoeven <redacted>
Signed-off-by: Geoff Levand <redacted>
---

Ver 2: Fixed casts, removed _PAGE_GUARDED from spu problem and priv2 regions.

 arch/powerpc/platforms/ps3/htab.c |    2 +-
 arch/powerpc/platforms/ps3/spu.c  |   13 +++++++++----
 2 files changed, 10 insertions(+), 5 deletions(-)
--- a/arch/powerpc/platforms/ps3/htab.c
+++ b/arch/powerpc/platforms/ps3/htab.c
@@ -273,7 +273,7 @@ void __init ps3_map_htab(void)
 
 	result = lv1_map_htab(0, &htab_addr);
 
-	htab = (hpte_t *)__ioremap(htab_addr, htab_size,
+	htab = (__force hpte_t *)ioremap_flags(htab_addr, htab_size,
 				   pgprot_val(PAGE_READONLY_X));
 
 	DBG("%s:%d: lpar %016lxh, virt %016lxh\n", __func__, __LINE__,
--- a/arch/powerpc/platforms/ps3/spu.c
+++ b/arch/powerpc/platforms/ps3/spu.c
@@ -182,15 +182,18 @@ static int __init setup_areas(struct spu
 {
 	struct table {char* name; unsigned long addr; unsigned long size;};
 
-	spu_pdata(spu)->shadow = __ioremap(
-		spu_pdata(spu)->shadow_addr, sizeof(struct spe_shadow),
-		pgprot_val(PAGE_READONLY) | _PAGE_NO_CACHE | _PAGE_GUARDED);
+	spu_pdata(spu)->shadow = ioremap_flags(spu_pdata(spu)->shadow_addr,
+					       sizeof(struct spe_shadow),
+					       pgprot_val(PAGE_READONLY) |
+					       _PAGE_NO_CACHE);
 	if (!spu_pdata(spu)->shadow) {
 		pr_debug("%s:%d: ioremap shadow failed\n", __func__, __LINE__);
 		goto fail_ioremap;
 	}
 
-	spu->local_store = ioremap(spu->local_store_phys, LS_SIZE);
+	spu->local_store = (__force void *)ioremap_flags(spu->local_store_phys,
+		LS_SIZE, _PAGE_NO_CACHE);
+
 	if (!spu->local_store) {
 		pr_debug("%s:%d: ioremap local_store failed\n",
 			__func__, __LINE__);
@@ -199,6 +202,7 @@ static int __init setup_areas(struct spu
 
 	spu->problem = ioremap(spu->problem_phys,
 		sizeof(struct spu_problem));
+
 	if (!spu->problem) {
 		pr_debug("%s:%d: ioremap problem failed\n", __func__, __LINE__);
 		goto fail_ioremap;
@@ -206,6 +210,7 @@ static int __init setup_areas(struct spu
 
 	spu->priv2 = ioremap(spu_pdata(spu)->priv2_addr,
 		sizeof(struct spu_priv2));
+
 	if (!spu->priv2) {
 		pr_debug("%s:%d: ioremap priv2 failed\n", __func__, __LINE__);
 		goto fail_ioremap;

Re: [patch 05/30 v2] PS3: Use ioremap_flags

From: Arnd Bergmann <arnd@arndb.de>
Date: 2007-06-14 23:43:58

On Thursday 14 June 2007, Geoff Levand wrote:
Use ioremap_flags() to map SPU and htab regions as non-guarded.
Change the use of _ioremap() to ioremap_flags().

CC: Arnd Bergmann <redacted>
CC: Masato Noguchi <redacted>
CC: Takao Shinohara <redacted>
Signed-off-by: Geert Uytterhoeven <redacted>
Signed-off-by: Geoff Levand <redacted>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help