PATCH: EDAC - clean up atomic stuff

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Various proposals were made about the problem of u32 in atomic.h. I've
followed Andi Kleen's comments here - that atomic.h is about atomic_t
not atomic operations in general. I've moved the header bits to edac.h

Avi Kivity also observed the x86_64 one was wrong and I've fixed that
too

Removed the #if 0 unused code

Fixed some typos and coding style


Signed-off-by: Alan Cox <[email protected]>

diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.14-rc4-mm1/drivers/edac/edac_mc.c linux-2.6.14-rc4-mm1/drivers/edac/edac_mc.c
--- linux.vanilla-2.6.14-rc4-mm1/drivers/edac/edac_mc.c	2005-10-20 16:12:39.000000000 +0100
+++ linux-2.6.14-rc4-mm1/drivers/edac/edac_mc.c	2005-10-21 11:41:39.000000000 +0100
@@ -31,6 +31,7 @@
 
 #include <asm/uaccess.h>
 #include <asm/page.h>
+#include <asm/edac.h>
 
 #include "edac_mc.h"
 
@@ -67,106 +68,6 @@
 
 #ifdef CONFIG_SYSCTL
 
-#if 0
-static struct mem_ctl_info *find_mc_by_idx(int idx)
-{
-	struct list_head *item;
-	struct mem_ctl_info *mci;
-
-	list_for_each(item, &mc_devices) {
-		mci = list_entry(item, struct mem_ctl_info, link);
-
-		if (mci->mc_idx >= idx) {
-			if (mci->mc_idx == idx)
-				return mci;
-
-			break;
-		}
-	}
-
-	return NULL;
-}
-
-static void dimm_labels(char *buf, void *data)
-{
-	int mcidx, ridx, chidx;
-	char *mcstr, *rstr, *chstr, *lstr, *p;
-	struct mem_ctl_info *mci;
-
-	lstr = buf;
-
-	mcstr = strsep(&lstr, ".");
-	if (!lstr)
-		return;
-	mcidx = simple_strtol(mcstr, &p, 0);
-	if (*p)
-		return;
-	if ((mci = find_mc_by_idx(mcidx)) == NULL)
-		return;
-	rstr = strsep(&lstr, ".");
-	if (!lstr)
-		return;
-	ridx = simple_strtol(rstr, &p, 0);
-	if (*p)
-		return;
-	if ((ridx >= mci->nr_csrows) || !mci->csrows)
-		return;
-
-	chstr = strsep(&lstr, ":");
-	if (!lstr)
-		return;
-	chidx = simple_strtol(chstr, &p, 0);
-	if (*p)
-		return;
-	if ((chidx >= mci->csrows[ridx].nr_channels) ||
-	    !mci->csrows[ridx].channels)
-		return;
-
-	debugf1("%d:%d.%d:%s\n", mcidx, ridx, chidx, lstr);
-
-	strncpy(mci->csrows[ridx].channels[chidx].label, lstr,
-		EDAC_MC_LABEL_LEN + 1);
-	/*
-	 * no need to NULL terminate label since
-	 * get_user_tok() NULL terminates.
-	 */
-}
-
-static void counter_reset(char *buf, void *data)
-{
-	char *p = buf;
-	int mcidx, row, chan;
-	struct mem_ctl_info *mci;
-
-	pci_parity_count = 0;
-
-	mcidx = simple_strtol(buf, &p, 0);
-	if (*p)
-		return;
-
-	down(&mem_ctls_mutex);
-	mci = find_mc_by_idx(mcidx);
-
-	if (mci == NULL)
-		goto out;
-
-	mci->ue_noinfo_count = 0;
-	mci->ce_noinfo_count = 0;
-	mci->ue_count = 0;
-	mci->ce_count = 0;
-	for (row = 0; row < mci->nr_csrows; row++) {
-		struct csrow_info *ri = &mci->csrows[row];
-
-		ri->ue_count = 0;
-		ri->ce_count = 0;
-		for (chan = 0; chan < ri->nr_channels; chan++)
-			ri->channels[chan].ce_count = 0;
-	}
-	mci->start_time = jiffies;
-out:
-	up(&mem_ctls_mutex);
-}
-#endif
 
 static ctl_table mc_table[] = {
 	{-1, "panic_on_ue", &panic_on_ue,
@@ -729,14 +630,13 @@
 }
 
 
-/* FIXME - this should go in an arch dependant file */
 EXPORT_SYMBOL(edac_mc_scrub_block);
 
 void edac_mc_scrub_block(unsigned long page, unsigned long offset,
 			      u32 size)
 {
 	struct page *pg;
-	unsigned long *virt_addr;
+	void *virt_addr;
 
 	debugf3("MC: " __FILE__ ": %s()\n", __func__);
 
@@ -897,7 +797,7 @@
 	debugf3("MC%d: " __FILE__ ": %s()\n", mci->mc_idx, __func__);
 
 	/* FIXME - maybe make panic on INTERNAL ERROR an option */
-	if ((row >= mci->nr_csrows) || (row < 0)) {
+	if (row >= mci->nr_csrows || row < 0) {
 		/* something is wrong */
 		printk(KERN_ERR
 		       "MC%d: INTERNAL ERROR: row out of range (%d >= %d)\n",
@@ -980,7 +880,7 @@
 		if (status & (PCI_STATUS_SIG_SYSTEM_ERROR))
 			printk(KERN_CRIT
 			   	"PCI- "
-				"Signaled System Error on %s %s\n",
+				"Signalled System Error on %s %s\n",
 				dev->dev.bus_id,
 				pci_name(dev));
 
@@ -1029,7 +929,7 @@
 			if (status & (PCI_STATUS_SIG_SYSTEM_ERROR))
 				printk(KERN_CRIT
 					"PCI-Bridge- "
-					"Signaled System Error on %s %s\n",
+					"Signalled System Error on %s %s\n",
 					dev->dev.bus_id,
 					pci_name(dev));
 
diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.14-rc4-mm1/include/asm-i386/atomic.h linux-2.6.14-rc4-mm1/include/asm-i386/atomic.h
--- linux.vanilla-2.6.14-rc4-mm1/include/asm-i386/atomic.h	2005-10-20 16:12:41.000000000 +0100
+++ linux-2.6.14-rc4-mm1/include/asm-i386/atomic.h	2005-10-21 11:36:54.000000000 +0100
@@ -237,15 +237,4 @@
 #define smp_mb__before_atomic_inc()	barrier()
 #define smp_mb__after_atomic_inc()	barrier()
 
-/* ECC atomic, DMA, SMP and interrupt safe scrub function */
-
-static __inline__ void atomic_scrub(unsigned long *virt_addr, u32 size)
-{
-	u32 i;
-	for (i = 0; i < size / 4; i++, virt_addr++)
-		/* Very carefully read and write to memory atomically
-		 * so we are interrupt, DMA and SMP safe.
-		 */
-		__asm__ __volatile__("lock; addl $0, %0"::"m"(*virt_addr));
-}
 #endif
diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.14-rc4-mm1/include/asm-i386/edac.h linux-2.6.14-rc4-mm1/include/asm-i386/edac.h
--- linux.vanilla-2.6.14-rc4-mm1/include/asm-i386/edac.h	1970-01-01 01:00:00.000000000 +0100
+++ linux-2.6.14-rc4-mm1/include/asm-i386/edac.h	2005-10-21 11:37:54.000000000 +0100
@@ -0,0 +1,18 @@
+#ifndef ASM_EDAC_H
+#define ASM_EDAC_H
+
+/* ECC atomic, DMA, SMP and interrupt safe scrub function */
+
+static __inline__ void atomic_scrub(void *va, u32 size)
+{
+	unsigned long *virt_addr = va;
+	u32 i;
+
+	for (i = 0; i < size / 4; i++, virt_addr++)
+		/* Very carefully read and write to memory atomically
+		 * so we are interrupt, DMA and SMP safe.
+		 */
+		__asm__ __volatile__("lock; addl $0, %0"::"m"(*virt_addr));
+}
+
+#endif
diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.14-rc4-mm1/include/asm-x86_64/atomic.h linux-2.6.14-rc4-mm1/include/asm-x86_64/atomic.h
--- linux.vanilla-2.6.14-rc4-mm1/include/asm-x86_64/atomic.h	2005-10-20 16:12:41.000000000 +0100
+++ linux-2.6.14-rc4-mm1/include/asm-x86_64/atomic.h	2005-10-21 11:38:18.127825024 +0100
@@ -378,16 +378,4 @@
 #define smp_mb__before_atomic_inc()	barrier()
 #define smp_mb__after_atomic_inc()	barrier()
 
-/* ECC atomic, DMA, SMP and interrupt safe scrub function */
-
-static __inline__ void atomic_scrub(u32 *virt_addr, u32 size)
-{
-	u32 i;
-	for (i = 0; i < size / 4; i++, virt_addr++)
-		/* Very carefully read and write to memory atomically
-		 * so we are interrupt, DMA and SMP safe.
-		 */
-		__asm__ __volatile__("lock; addl $0, %0"::"m"(*virt_addr));
-}
-
 #endif
diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.14-rc4-mm1/include/asm-x86_64/edac.h linux-2.6.14-rc4-mm1/include/asm-x86_64/edac.h
--- linux.vanilla-2.6.14-rc4-mm1/include/asm-x86_64/edac.h	1970-01-01 01:00:00.000000000 +0100
+++ linux-2.6.14-rc4-mm1/include/asm-x86_64/edac.h	2005-10-21 11:38:34.000000000 +0100
@@ -0,0 +1,18 @@
+#ifndef ASM_EDAC_H
+#define ASM_EDAC_H
+
+/* ECC atomic, DMA, SMP and interrupt safe scrub function */
+
+static __inline__ void atomic_scrub(void *va, u32 size)
+{
+	unsigned int *virt_addr = va;
+	u32 i;
+
+	for (i = 0; i < size / 4; i++, virt_addr++)
+		/* Very carefully read and write to memory atomically
+		 * so we are interrupt, DMA and SMP safe.
+		 */
+		__asm__ __volatile__("lock; addl $0, %0"::"m"(*virt_addr));
+}
+
+#endif

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux