|
@@ -30,11 +30,16 @@
|
|
#include <linux/bitops.h>
|
|
#include <linux/bitops.h>
|
|
#include <asm/uaccess.h>
|
|
#include <asm/uaccess.h>
|
|
#include <asm/page.h>
|
|
#include <asm/page.h>
|
|
-#include <asm/edac.h>
|
|
|
|
#include "edac_core.h"
|
|
#include "edac_core.h"
|
|
#include "edac_module.h"
|
|
#include "edac_module.h"
|
|
#include <ras/ras_event.h>
|
|
#include <ras/ras_event.h>
|
|
|
|
|
|
|
|
+#ifdef CONFIG_EDAC_ATOMIC_SCRUB
|
|
|
|
+#include <asm/edac.h>
|
|
|
|
+#else
|
|
|
|
+#define edac_atomic_scrub(va, size) do { } while (0)
|
|
|
|
+#endif
|
|
|
|
+
|
|
/* lock to memory controller's control array */
|
|
/* lock to memory controller's control array */
|
|
static DEFINE_MUTEX(mem_ctls_mutex);
|
|
static DEFINE_MUTEX(mem_ctls_mutex);
|
|
static LIST_HEAD(mc_devices);
|
|
static LIST_HEAD(mc_devices);
|
|
@@ -874,7 +879,7 @@ static void edac_mc_scrub_block(unsigned long page, unsigned long offset,
|
|
virt_addr = kmap_atomic(pg);
|
|
virt_addr = kmap_atomic(pg);
|
|
|
|
|
|
/* Perform architecture specific atomic scrub operation */
|
|
/* Perform architecture specific atomic scrub operation */
|
|
- atomic_scrub(virt_addr + offset, size);
|
|
|
|
|
|
+ edac_atomic_scrub(virt_addr + offset, size);
|
|
|
|
|
|
/* Unmap and complete */
|
|
/* Unmap and complete */
|
|
kunmap_atomic(virt_addr);
|
|
kunmap_atomic(virt_addr);
|