All of lore.kernel.org
 help / color / mirror / Atom feed
From: Abramo Bagnara <abramo@alsa-project.org>
To: Linux Kernel <linux-kernel@vger.kernel.org>,
	Linus Torvalds <torvalds@transmeta.com>,
	Alan Cox <alan@lxorguk.ukuu.org.uk>
Subject: [2*PATCH] alpha I/O access and mb()
Date: Sat, 09 Dec 2000 09:43:00 +0100	[thread overview]
Message-ID: <3A31F094.480AAAFB@alsa-project.org> (raw)

[-- Attachment #1: Type: text/plain, Size: 644 bytes --]


Here you are two patches:

alpha-mb-2.2.diff add the missing mb() to the cores that still lack it
(against 2.2.18pre25)

alpha-mb-2.4.diff add missing defines from core_t2.h for non generic
kernel (against 2.4.0test11)

Please apply on your trees.

I've also noted that 2.4 uses mb() after read[bwlq] while 2.2 don't.
Who's right?

-- 
Abramo Bagnara                       mailto:abramo@alsa-project.org

Opera Unica                          Phone: +39.546.656023
Via Emilia Interna, 140
48014 Castel Bolognese (RA) - Italy

ALSA project is            http://www.alsa-project.org
sponsored by SuSE Linux    http://www.suse.com

It sounds good!

[-- Attachment #2: alpha-mb-2.2.diff --]
[-- Type: text/plain, Size: 6781 bytes --]

--- linux-2.2/include/asm-alpha/core_pyxis.h.~1~	Tue Jan  4 19:12:24 2000
+++ linux-2.2/include/asm-alpha/core_pyxis.h	Sat Dec  9 09:17:43 2000
@@ -437,11 +437,13 @@
 __EXTERN_INLINE void pyxis_bw_writel(unsigned int b, unsigned long addr)
 {
 	*(vuip)(addr+PYXIS_BW_MEM) = b;
+	mb();
 }
 
 __EXTERN_INLINE void pyxis_bw_writeq(unsigned long b, unsigned long addr)
 {
 	*(vulp)(addr+PYXIS_BW_MEM) = b;
+	mb();
 }
 
 __EXTERN_INLINE unsigned long pyxis_srm_base(unsigned long addr)
@@ -504,6 +506,7 @@
 	if (work) {
 		work += 0x00;	/* add transfer length */
 		*(vuip) work = b * 0x01010101;
+		mb();
 	}
 }
 
@@ -513,6 +516,7 @@
 	if (work) {
 		work += 0x08;	/* add transfer length */
 		*(vuip) work = b * 0x00010001;
+		mb();
 	}
 }
 
@@ -551,6 +555,7 @@
 	set_hae(msb);
 
 	*(vuip) ((addr << 5) + PYXIS_SPARSE_MEM + 0x00) = b * 0x01010101;
+	mb();
 }
 
 __EXTERN_INLINE void pyxis_writew(unsigned short b, unsigned long addr)
@@ -562,6 +567,7 @@
 	set_hae(msb);
 
 	*(vuip) ((addr << 5) + PYXIS_SPARSE_MEM + 0x08) = b * 0x00010001;
+	mb();
 }
 
 __EXTERN_INLINE unsigned long pyxis_readl(unsigned long addr)
@@ -577,11 +583,13 @@
 __EXTERN_INLINE void pyxis_writel(unsigned int b, unsigned long addr)
 {
 	*(vuip) (addr + PYXIS_DENSE_MEM) = b;
+	mb();
 }
 
 __EXTERN_INLINE void pyxis_writeq(unsigned long b, unsigned long addr)
 {
 	*(vulp) (addr + PYXIS_DENSE_MEM) = b;
+	mb();
 }
 
 /* Find the DENSE memory area for a given bus address.  */
--- linux-2.2/include/asm-alpha/core_apecs.h.~1~	Mon Dec 28 00:21:50 1998
+++ linux-2.2/include/asm-alpha/core_apecs.h	Sat Dec  9 09:28:16 2000
@@ -543,6 +543,7 @@
 		set_hae(msb);
 	}
 	*(vuip) ((addr << 5) + APECS_SPARSE_MEM + 0x00) = b * 0x01010101;
+	mb();
 }
 
 __EXTERN_INLINE void apecs_writew(unsigned short b, unsigned long addr)
@@ -555,16 +556,19 @@
 		set_hae(msb);
 	}
 	*(vuip) ((addr << 5) + APECS_SPARSE_MEM + 0x08) = b * 0x00010001;
+	mb();
 }
 
 __EXTERN_INLINE void apecs_writel(unsigned int b, unsigned long addr)
 {
 	*(vuip) (addr + APECS_DENSE_MEM) = b;
+	mb();
 }
 
 __EXTERN_INLINE void apecs_writeq(unsigned long b, unsigned long addr)
 {
 	*(vulp) (addr + APECS_DENSE_MEM) = b;
+	mb();
 }
 
 /* Find the DENSE memory area for a given bus address.  */
--- linux-2.2/include/asm-alpha/core_cia.h.~1~	Thu Aug 26 02:29:49 1999
+++ linux-2.2/include/asm-alpha/core_cia.h	Sat Dec  9 09:28:16 2000
@@ -460,6 +460,7 @@
 		work += 0x00;	/* add transfer length */
 		w = __kernel_insbl(b, addr & 3);
 		*(vuip) work = w;
+		mb();
 	}
 }
 
@@ -470,6 +471,7 @@
 		work += 0x08;	/* add transfer length */
 		w = __kernel_inswl(b, addr & 3);
 		*(vuip) work = w;
+		mb();
 	}
 }
 
@@ -507,6 +509,7 @@
 
 	w = __kernel_insbl(b, addr & 3);
 	*(vuip) ((addr << 5) + CIA_SPARSE_MEM + 0x00) = w;
+	mb();
 }
 
 __EXTERN_INLINE void cia_writew(unsigned short b, unsigned long addr)
@@ -519,6 +522,7 @@
 
 	w = __kernel_inswl(b, addr & 3);
 	*(vuip) ((addr << 5) + CIA_SPARSE_MEM + 0x08) = w;
+	mb();
 }
 
 __EXTERN_INLINE unsigned long cia_readl(unsigned long addr)
@@ -534,11 +538,13 @@
 __EXTERN_INLINE void cia_writel(unsigned int b, unsigned long addr)
 {
 	*(vuip) (addr + CIA_DENSE_MEM) = b;
+	mb();
 }
 
 __EXTERN_INLINE void cia_writeq(unsigned long b, unsigned long addr)
 {
 	*(vulp) (addr + CIA_DENSE_MEM) = b;
+	mb();
 }
 
 /* Find the DENSE memory area for a given bus address.  */
--- linux-2.2/include/asm-alpha/core_t2.h.~1~	Mon Dec 28 00:21:50 1998
+++ linux-2.2/include/asm-alpha/core_t2.h	Sat Dec  9 09:28:16 2000
@@ -499,6 +499,7 @@
 	if (work) {
 		work += 0x00;	/* add transfer length */
 		*(vuip) work = b * 0x01010101;
+		mb();
 	}
 }
 
@@ -508,6 +509,7 @@
 	if (work) {
 		work += 0x08;	/* add transfer length */
 		*(vuip) work = b * 0x00010001;
+		mb();
 	}
 }
 
@@ -518,6 +520,7 @@
 	if (work) {
 		work += 0x18;	/* add transfer length */
 		*(vuip) work = b;
+		mb();
 	}
 }
 
@@ -530,6 +533,7 @@
 		work += 0x18;	/* add transfer length */
 		*(vuip) work = b;
 		*(vuip) (work + (4 << 5)) = b >> 32;
+		mb();
 	}
 }
 
@@ -592,6 +596,7 @@
 	set_hae(msb);
 
 	*(vuip) ((addr << 5) + T2_SPARSE_MEM + 0x00) = b * 0x01010101;
+	mb();
 }
 
 __EXTERN_INLINE void t2_writew(unsigned short b, unsigned long addr)
@@ -603,6 +608,7 @@
 	set_hae(msb);
 
 	*(vuip) ((addr << 5) + T2_SPARSE_MEM + 0x08) = b * 0x00010001;
+	mb();
 }
 
 /* On SABLE with T2, we must use SPARSE memory even for 32-bit access. */
@@ -615,6 +621,7 @@
 	set_hae(msb);
 
 	*(vuip) ((addr << 5) + T2_SPARSE_MEM + 0x18) = b;
+	mb();
 }
 
 __EXTERN_INLINE void t2_writeq(unsigned long b, unsigned long addr)
@@ -628,6 +635,7 @@
 	work = (addr << 5) + T2_SPARSE_MEM + 0x18;
 	*(vuip)work = b;
 	*(vuip)(work + (4 << 5)) = b >> 32;
+	mb();
 }
 
 /* Find the DENSE memory area for a given bus address.  */
--- linux-2.2/include/asm-alpha/core_lca.h.~1~	Mon Dec 28 00:21:50 1998
+++ linux-2.2/include/asm-alpha/core_lca.h	Sat Dec  9 09:28:16 2000
@@ -349,6 +349,7 @@
 	}
 	w = __kernel_insbl(b, addr & 3);
 	*(vuip) ((addr << 5) + LCA_SPARSE_MEM + 0x00) = w;
+	mb();
 }
 
 __EXTERN_INLINE void lca_writew(unsigned short b, unsigned long addr)
@@ -363,16 +364,19 @@
 	}
 	w = __kernel_inswl(b, addr & 3);
 	*(vuip) ((addr << 5) + LCA_SPARSE_MEM + 0x08) = w;
+	mb();
 }
 
 __EXTERN_INLINE void lca_writel(unsigned int b, unsigned long addr)
 {
 	*(vuip) (addr + LCA_DENSE_MEM) = b;
+	mb();
 }
 
 __EXTERN_INLINE void lca_writeq(unsigned long b, unsigned long addr)
 {
 	*(vulp) (addr + LCA_DENSE_MEM) = b;
+	mb();
 }
 
 /* Find the DENSE memory area for a given bus address.  */
--- linux-2.2/include/asm-alpha/core_mcpcia.h.~1~	Tue Jan  4 19:12:24 2000
+++ linux-2.2/include/asm-alpha/core_mcpcia.h	Sat Dec  9 09:28:16 2000
@@ -352,6 +352,7 @@
 	if (work) {
 		work += 0x00;	/* add transfer length */
 		*(vuip) work = b * 0x01010101;
+		mb();
 	}
 }
 
@@ -361,6 +362,7 @@
 	if (work) {
 		work += 0x08;	/* add transfer length */
 		*(vuip) work = b * 0x00010001;
+		mb();
 	}
 }
 
@@ -405,6 +407,7 @@
 	set_hae(msb);
 
 	*(vuip) ((addr << 5) + MCPCIA_SPARSE(hose) + 0x00) = b * 0x01010101;
+	mb();
 }
 
 __EXTERN_INLINE void mcpcia_writew(unsigned short b, unsigned long in_addr)
@@ -418,6 +421,7 @@
 	set_hae(msb);
 
 	*(vuip) ((addr << 5) + MCPCIA_SPARSE(hose) + 0x08) = b * 0x00010001;
+	mb();
 }
 
 __EXTERN_INLINE unsigned long mcpcia_readl(unsigned long in_addr)
@@ -439,6 +443,7 @@
 	unsigned long addr = in_addr & 0xffffffffUL;
 	unsigned long hose = (in_addr >> 32) & 3;
 	*(vuip) (addr + MCPCIA_DENSE(hose)) = b;
+	mb();
 }
 
 __EXTERN_INLINE void mcpcia_writeq(unsigned long b, unsigned long in_addr)
@@ -446,6 +451,7 @@
 	unsigned long addr = in_addr & 0xffffffffUL;
 	unsigned long hose = (in_addr >> 32) & 3;
 	*(vulp) (addr + MCPCIA_DENSE(hose)) = b;
+	mb();
 }
 
 /* Find the DENSE memory area for a given bus address.  */

[-- Attachment #3: alpha-mb-2.4.diff --]
[-- Type: text/plain, Size: 837 bytes --]

--- linux/include/asm-alpha/core_t2.h.~1~	Fri Mar 17 22:01:38 2000
+++ linux/include/asm-alpha/core_t2.h	Sat Dec  9 09:07:35 2000
@@ -533,6 +533,21 @@
 #define __ioremap(a)		t2_ioremap((unsigned long)(a))
 #define __is_ioaddr(a)		t2_is_ioaddr((unsigned long)(a))
 
+#define inb(p)			__inb(p)
+#define inw(p)			__inw(p)
+#define inl(p)			__inl(p)
+#define outb(x,p)		__outb((x),(p))
+#define outw(x,p)		__outw((x),(p))
+#define outl(x,p)		__outl((x),(p))
+#define __raw_readb(a)		__readb(a)
+#define __raw_readw(a)		__readw(a)
+#define __raw_readl(a)		__readl(a)
+#define __raw_readq(a)		__readq(a)
+#define __raw_writeb(v,a)	__writeb((v),(a))
+#define __raw_writew(v,a)	__writew((v),(a))
+#define __raw_writel(v,a)	__writel((v),(a))
+#define __raw_writeq(v,a)	__writeq((v),(a))
+
 #endif /* __WANT_IO_DEF */
 
 #ifdef __IO_EXTERN_INLINE

             reply	other threads:[~2000-12-09  9:15 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-12-09  8:43 Abramo Bagnara [this message]
2000-12-09 10:12 ` [2*PATCH] alpha I/O access and mb() Gérard Roudier
2000-12-09 11:32   ` Abramo Bagnara
2000-12-09 13:46     ` Gérard Roudier
2000-12-10  0:10 ` Richard Henderson
2000-12-10  9:40   ` Abramo Bagnara
2000-12-10 18:44     ` Richard Henderson
2000-12-10 19:04       ` Abramo Bagnara
2000-12-10 20:49         ` Richard Henderson
2000-12-10 21:23           ` Abramo Bagnara
2000-12-11  0:19             ` Richard Henderson
2000-12-11  8:00               ` Abramo Bagnara

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3A31F094.480AAAFB@alsa-project.org \
    --to=abramo@alsa-project.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@transmeta.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.