Author: hselasky
Date: Mon May 16 09:16:15 2016
New Revision: 299930
URL: https://svnweb.freebsd.org/changeset/base/299930

Log:
  Properly implement "cpu_has_clflush" macro.
  
  Suggested by: kib, jhb
  MFC after:    1 week
  Sponsored by: Mellanox Technologies

Modified:
  head/sys/compat/linuxkpi/common/include/linux/kernel.h
  head/sys/compat/linuxkpi/common/src/linux_compat.c

Modified: head/sys/compat/linuxkpi/common/include/linux/kernel.h
==============================================================================
--- head/sys/compat/linuxkpi/common/include/linux/kernel.h      Mon May 16 
09:15:50 2016        (r299929)
+++ head/sys/compat/linuxkpi/common/include/linux/kernel.h      Mon May 16 
09:16:15 2016        (r299930)
@@ -258,7 +258,11 @@
 #define        smp_processor_id()      PCPU_GET(cpuid)
 #define        num_possible_cpus()     mp_ncpus
 #define        num_online_cpus()       mp_ncpus
-#define        cpu_has_clflush         (1)
+
+#if defined(__i386__) || defined(__amd64__)
+extern bool linux_cpu_has_clflush;
+#define        cpu_has_clflush         linux_cpu_has_clflush
+#endif
 
 typedef struct pm_message {
         int event;

Modified: head/sys/compat/linuxkpi/common/src/linux_compat.c
==============================================================================
--- head/sys/compat/linuxkpi/common/src/linux_compat.c  Mon May 16 09:15:50 
2016        (r299929)
+++ head/sys/compat/linuxkpi/common/src/linux_compat.c  Mon May 16 09:16:15 
2016        (r299930)
@@ -51,6 +51,10 @@ __FBSDID("$FreeBSD$");
 
 #include <machine/stdarg.h>
 
+#if defined(__i386__) || defined(__amd64__)
+#include <machine/md_var.h>
+#endif
+
 #include <linux/kobject.h>
 #include <linux/device.h>
 #include <linux/slab.h>
@@ -67,6 +71,7 @@ __FBSDID("$FreeBSD$");
 #include <linux/rcupdate.h>
 #include <linux/interrupt.h>
 #include <linux/uaccess.h>
+#include <linux/kernel.h>
 
 #include <vm/vm_pager.h>
 
@@ -1362,12 +1367,19 @@ linux_irq_handler(void *ent)
        irqe->handler(irqe->irq, irqe->arg);
 }
 
+#if defined(__i386__) || defined(__amd64__)
+bool linux_cpu_has_clflush;
+#endif
+
 static void
 linux_compat_init(void *arg)
 {
        struct sysctl_oid *rootoid;
        int i;
 
+#if defined(__i386__) || defined(__amd64__)
+       linux_cpu_has_clflush = (cpu_feature & CPUID_CLFSH);
+#endif
        sx_init(&linux_global_rcu_lock, "LinuxGlobalRCU");
 
        rootoid = SYSCTL_ADD_ROOT_NODE(NULL,
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to