All of lore.kernel.org
 help / color / mirror / Atom feed
* [tip:x86/msr 5/19] drivers/accel/habanalabs/common/habanalabs_ioctl.c:326:23: error: call to undeclared function 'rdtsc'; ISO C99 and later do not support implicit function declarations
@ 2025-05-07 16:41 kernel test robot
  2025-05-07 18:40 ` [tip: x86/msr] accel/habanalabs: Add explicit include of <asm/tsc.h> to pick up the rdtsc() definition tip-bot2 for Ingo Molnar
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: kernel test robot @ 2025-05-07 16:41 UTC (permalink / raw)
  To: Xin Li (Intel); +Cc: llvm, oe-kbuild-all, linux-kernel, x86, Ingo Molnar

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/msr
head:   570d58b12fbf7bae0ba72d929ccf914a4df5ca7c
commit: efef7f184f2eaf29a1ca676712d0e6e851cd0191 [5/19] x86/msr: Add explicit includes of <asm/msr.h>
config: um-allmodconfig (https://download.01.org/0day-ci/archive/20250508/202505080003.0t7ewxGp-lkp@intel.com/config)
compiler: clang version 19.1.7 (https://github.com/llvm/llvm-project cd708029e0b2869e80abe31ddb175f7c35361f90)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250508/202505080003.0t7ewxGp-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202505080003.0t7ewxGp-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from drivers/accel/habanalabs/common/habanalabs_ioctl.c:11:
   In file included from drivers/accel/habanalabs/common/habanalabs.h:11:
   In file included from include/linux/habanalabs/cpucp_if.h:12:
   In file included from include/linux/if_ether.h:19:
   In file included from include/linux/skbuff.h:17:
   In file included from include/linux/bvec.h:10:
   In file included from include/linux/highmem.h:12:
   In file included from include/linux/hardirq.h:11:
   In file included from arch/um/include/asm/hardirq.h:5:
   In file included from include/asm-generic/hardirq.h:17:
   In file included from include/linux/irq.h:20:
   In file included from include/linux/io.h:12:
   In file included from arch/um/include/asm/io.h:24:
   include/asm-generic/io.h:549:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     549 |         val = __raw_readb(PCI_IOBASE + addr);
         |                           ~~~~~~~~~~ ^
   include/asm-generic/io.h:567:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     567 |         val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
         |                                                         ~~~~~~~~~~ ^
   include/uapi/linux/byteorder/little_endian.h:37:51: note: expanded from macro '__le16_to_cpu'
      37 | #define __le16_to_cpu(x) ((__force __u16)(__le16)(x))
         |                                                   ^
   In file included from drivers/accel/habanalabs/common/habanalabs_ioctl.c:11:
   In file included from drivers/accel/habanalabs/common/habanalabs.h:11:
   In file included from include/linux/habanalabs/cpucp_if.h:12:
   In file included from include/linux/if_ether.h:19:
   In file included from include/linux/skbuff.h:17:
   In file included from include/linux/bvec.h:10:
   In file included from include/linux/highmem.h:12:
   In file included from include/linux/hardirq.h:11:
   In file included from arch/um/include/asm/hardirq.h:5:
   In file included from include/asm-generic/hardirq.h:17:
   In file included from include/linux/irq.h:20:
   In file included from include/linux/io.h:12:
   In file included from arch/um/include/asm/io.h:24:
   include/asm-generic/io.h:585:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     585 |         val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
         |                                                         ~~~~~~~~~~ ^
   include/uapi/linux/byteorder/little_endian.h:35:51: note: expanded from macro '__le32_to_cpu'
      35 | #define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
         |                                                   ^
   In file included from drivers/accel/habanalabs/common/habanalabs_ioctl.c:11:
   In file included from drivers/accel/habanalabs/common/habanalabs.h:11:
   In file included from include/linux/habanalabs/cpucp_if.h:12:
   In file included from include/linux/if_ether.h:19:
   In file included from include/linux/skbuff.h:17:
   In file included from include/linux/bvec.h:10:
   In file included from include/linux/highmem.h:12:
   In file included from include/linux/hardirq.h:11:
   In file included from arch/um/include/asm/hardirq.h:5:
   In file included from include/asm-generic/hardirq.h:17:
   In file included from include/linux/irq.h:20:
   In file included from include/linux/io.h:12:
   In file included from arch/um/include/asm/io.h:24:
   include/asm-generic/io.h:601:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     601 |         __raw_writeb(value, PCI_IOBASE + addr);
         |                             ~~~~~~~~~~ ^
   include/asm-generic/io.h:616:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     616 |         __raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
         |                                                       ~~~~~~~~~~ ^
   include/asm-generic/io.h:631:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     631 |         __raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
         |                                                       ~~~~~~~~~~ ^
   include/asm-generic/io.h:724:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     724 |         readsb(PCI_IOBASE + addr, buffer, count);
         |                ~~~~~~~~~~ ^
   include/asm-generic/io.h:737:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     737 |         readsw(PCI_IOBASE + addr, buffer, count);
         |                ~~~~~~~~~~ ^
   include/asm-generic/io.h:750:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     750 |         readsl(PCI_IOBASE + addr, buffer, count);
         |                ~~~~~~~~~~ ^
   include/asm-generic/io.h:764:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     764 |         writesb(PCI_IOBASE + addr, buffer, count);
         |                 ~~~~~~~~~~ ^
   include/asm-generic/io.h:778:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     778 |         writesw(PCI_IOBASE + addr, buffer, count);
         |                 ~~~~~~~~~~ ^
   include/asm-generic/io.h:792:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     792 |         writesl(PCI_IOBASE + addr, buffer, count);
         |                 ~~~~~~~~~~ ^
>> drivers/accel/habanalabs/common/habanalabs_ioctl.c:326:23: error: call to undeclared function 'rdtsc'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
     326 |         time_sync.tsc_time = rdtsc();
         |                              ^
   12 warnings and 1 error generated.


vim +/rdtsc +326 drivers/accel/habanalabs/common/habanalabs_ioctl.c

52c01b0137193ab drivers/misc/habanalabs/habanalabs_ioctl.c         Moti Haimovski 2019-11-03  314  
25e7aeba601c177 drivers/misc/habanalabs/habanalabs_ioctl.c         Tomer Tayar    2020-03-31  315  static int time_sync_info(struct hl_device *hdev, struct hl_info_args *args)
25e7aeba601c177 drivers/misc/habanalabs/habanalabs_ioctl.c         Tomer Tayar    2020-03-31  316  {
25e7aeba601c177 drivers/misc/habanalabs/habanalabs_ioctl.c         Tomer Tayar    2020-03-31  317  	struct hl_info_time_sync time_sync = {0};
25e7aeba601c177 drivers/misc/habanalabs/habanalabs_ioctl.c         Tomer Tayar    2020-03-31  318  	u32 max_size = args->return_size;
25e7aeba601c177 drivers/misc/habanalabs/habanalabs_ioctl.c         Tomer Tayar    2020-03-31  319  	void __user *out = (void __user *) (uintptr_t) args->return_pointer;
25e7aeba601c177 drivers/misc/habanalabs/habanalabs_ioctl.c         Tomer Tayar    2020-03-31  320  
25e7aeba601c177 drivers/misc/habanalabs/habanalabs_ioctl.c         Tomer Tayar    2020-03-31  321  	if ((!max_size) || (!out))
25e7aeba601c177 drivers/misc/habanalabs/habanalabs_ioctl.c         Tomer Tayar    2020-03-31  322  		return -EINVAL;
25e7aeba601c177 drivers/misc/habanalabs/habanalabs_ioctl.c         Tomer Tayar    2020-03-31  323  
25e7aeba601c177 drivers/misc/habanalabs/habanalabs_ioctl.c         Tomer Tayar    2020-03-31  324  	time_sync.device_time = hdev->asic_funcs->get_device_time(hdev);
25e7aeba601c177 drivers/misc/habanalabs/habanalabs_ioctl.c         Tomer Tayar    2020-03-31  325  	time_sync.host_time = ktime_get_raw_ns();
0648c4d0806fe16 drivers/accel/habanalabs/common/habanalabs_ioctl.c Hen Alon       2023-08-09 @326  	time_sync.tsc_time = rdtsc();
25e7aeba601c177 drivers/misc/habanalabs/habanalabs_ioctl.c         Tomer Tayar    2020-03-31  327  
25e7aeba601c177 drivers/misc/habanalabs/habanalabs_ioctl.c         Tomer Tayar    2020-03-31  328  	return copy_to_user(out, &time_sync,
25e7aeba601c177 drivers/misc/habanalabs/habanalabs_ioctl.c         Tomer Tayar    2020-03-31  329  		min((size_t) max_size, sizeof(time_sync))) ? -EFAULT : 0;
25e7aeba601c177 drivers/misc/habanalabs/habanalabs_ioctl.c         Tomer Tayar    2020-03-31  330  }
25e7aeba601c177 drivers/misc/habanalabs/habanalabs_ioctl.c         Tomer Tayar    2020-03-31  331  

:::::: The code at line 326 was first introduced by commit
:::::: 0648c4d0806fe167fe699299573100507ae99502 accel/habanalabs: add tsc clock sampling to clock sync info

:::::: TO: Hen Alon <halon@habana.ai>
:::::: CC: Oded Gabbay <ogabbay@kernel.org>

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [tip: x86/msr] accel/habanalabs: Add explicit include of <asm/tsc.h> to pick up the rdtsc() definition
  2025-05-07 16:41 [tip:x86/msr 5/19] drivers/accel/habanalabs/common/habanalabs_ioctl.c:326:23: error: call to undeclared function 'rdtsc'; ISO C99 and later do not support implicit function declarations kernel test robot
@ 2025-05-07 18:40 ` tip-bot2 for Ingo Molnar
  2025-05-07 18:40 ` [tip: x86/msr] um: Add UML version of <asm/tsc.h> to define rdtsc() tip-bot2 for Ingo Molnar
  2025-05-08  9:09 ` [tip: x86/msr] " tip-bot2 for Ingo Molnar
  2 siblings, 0 replies; 9+ messages in thread
From: tip-bot2 for Ingo Molnar @ 2025-05-07 18:40 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: kernel test robot, Ingo Molnar, Johannes Berg, Ofir Bitton,
	Oded Gabbay, x86, linux-kernel

The following commit has been merged into the x86/msr branch of tip:

Commit-ID:     b1d1720321a0fb90c918fcbb3aa15649c116130a
Gitweb:        https://git.kernel.org/tip/b1d1720321a0fb90c918fcbb3aa15649c116130a
Author:        Ingo Molnar <mingo@kernel.org>
AuthorDate:    Wed, 07 May 2025 20:25:59 +02:00
Committer:     Ingo Molnar <mingo@kernel.org>
CommitterDate: Wed, 07 May 2025 20:30:53 +02:00

accel/habanalabs: Add explicit include of <asm/tsc.h> to pick up the rdtsc() definition

The following commit:

  288a4ff0ad29 ("x86/msr: Move rdtsc{,_ordered}() to <asm/tsc.h>")

removed the <asm/msr.h> include from the accel/habanalabs driver, which broke
the build on UML:

   drivers/accel/habanalabs/common/habanalabs_ioctl.c:326:23: error: call to undeclared function 'rdtsc'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]

Add an explicit <asm/tsc.h> include, now that it works on UML too.

Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Johannes Berg <johannes.berg@intel.com>
Cc: Ofir Bitton <obitton@habana.ai>
Cc: Oded Gabbay <ogabbay@kernel.org>
Link: https://lore.kernel.org/r/202505080003.0t7ewxGp-lkp@intel.com
---
 drivers/accel/habanalabs/common/habanalabs_ioctl.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/accel/habanalabs/common/habanalabs_ioctl.c b/drivers/accel/habanalabs/common/habanalabs_ioctl.c
index dc80ca9..af23001 100644
--- a/drivers/accel/habanalabs/common/habanalabs_ioctl.c
+++ b/drivers/accel/habanalabs/common/habanalabs_ioctl.c
@@ -17,6 +17,8 @@
 #include <linux/uaccess.h>
 #include <linux/vmalloc.h>
 
+#include <asm/tsc.h>
+
 /* make sure there is space for all the signed info */
 static_assert(sizeof(struct cpucp_info) <= SEC_DEV_INFO_BUF_SZ);
 

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [tip: x86/msr] um: Add UML version of <asm/tsc.h> to define rdtsc()
  2025-05-07 16:41 [tip:x86/msr 5/19] drivers/accel/habanalabs/common/habanalabs_ioctl.c:326:23: error: call to undeclared function 'rdtsc'; ISO C99 and later do not support implicit function declarations kernel test robot
  2025-05-07 18:40 ` [tip: x86/msr] accel/habanalabs: Add explicit include of <asm/tsc.h> to pick up the rdtsc() definition tip-bot2 for Ingo Molnar
@ 2025-05-07 18:40 ` tip-bot2 for Ingo Molnar
  2025-05-07 18:47   ` Ingo Molnar
  2025-05-07 20:36   ` Johannes Berg
  2025-05-08  9:09 ` [tip: x86/msr] " tip-bot2 for Ingo Molnar
  2 siblings, 2 replies; 9+ messages in thread
From: tip-bot2 for Ingo Molnar @ 2025-05-07 18:40 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: kernel test robot, Ingo Molnar, Johannes Berg, x86, linux-kernel

The following commit has been merged into the x86/msr branch of tip:

Commit-ID:     24b58adaa7508d9d2cdb6bca44803954baf24459
Gitweb:        https://git.kernel.org/tip/24b58adaa7508d9d2cdb6bca44803954baf24459
Author:        Ingo Molnar <mingo@kernel.org>
AuthorDate:    Wed, 07 May 2025 20:18:22 +02:00
Committer:     Ingo Molnar <mingo@kernel.org>
CommitterDate: Wed, 07 May 2025 20:30:39 +02:00

um: Add UML version of <asm/tsc.h> to define rdtsc()

In the x86 tree rdtsc() methods got moved out of <asm/msr.h>, but this
broke UML, as the x86 version of <asm/tsc.h> cannot be used by UML as-is:

	  CC [M]  drivers/accel/habanalabs/common/habanalabs_ioctl.o
	In file included from drivers/accel/habanalabs/common/habanalabs_ioctl.c:20:
	./arch/x86/include/asm/tsc.h:70:28: error: conflicting types for ‘cycles_t’; have ‘long long unsigned int’
	   70 | typedef unsigned long long cycles_t;
	      |                            ^~~~~~~~
	In file included from ./arch/um/include/asm/timex.h:7,
	                 from ./include/linux/timex.h:67,
	                 from ./include/linux/time32.h:13,
	                 from ./include/linux/time.h:60,
	                 from ./include/linux/skbuff.h:15,
	                 from ./include/linux/if_ether.h:19,
	                 from ./include/linux/habanalabs/cpucp_if.h:12,
	                 from drivers/accel/habanalabs/common/habanalabs.h:11,
	                 from drivers/accel/habanalabs/common/habanalabs_ioctl.c:11:
	./include/asm-generic/timex.h:8:23: note: previous declaration of ‘cycles_t’ with type ‘cycles_t’ {aka ‘long unsigned int’}
	    8 | typedef unsigned long cycles_t;
	      |                       ^~~~~~~~

To resolve these kinds of problems and to allow <asm/tsc.h> to be included on UML,
add a simplified version of <asm/tsc.h>, which only adds the rdtsc() definition.

Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Johannes Berg <johannes.berg@intel.com>
Link: https://lore.kernel.org/r/202505080003.0t7ewxGp-lkp@intel.com
---
 arch/um/include/asm/tsc.h | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)
 create mode 100644 arch/um/include/asm/tsc.h

diff --git a/arch/um/include/asm/tsc.h b/arch/um/include/asm/tsc.h
new file mode 100644
index 0000000..a52b0e4
--- /dev/null
+++ b/arch/um/include/asm/tsc.h
@@ -0,0 +1,25 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _ASM_UM_TSC_H
+#define _ASM_UM_TSC_H
+
+#include <asm/asm.h>
+
+/**
+ * rdtsc() - returns the current TSC without ordering constraints
+ *
+ * rdtsc() returns the result of RDTSC as a 64-bit integer.  The
+ * only ordering constraint it supplies is the ordering implied by
+ * "asm volatile": it will put the RDTSC in the place you expect.  The
+ * CPU can and will speculatively execute that RDTSC, though, so the
+ * results can be non-monotonic if compared on different CPUs.
+ */
+static __always_inline u64 rdtsc(void)
+{
+	EAX_EDX_DECLARE_ARGS(val, low, high);
+
+	asm volatile("rdtsc" : EAX_EDX_RET(val, low, high));
+
+	return EAX_EDX_VAL(val, low, high);
+}
+
+#endif /* _ASM_UM_TSC_H */

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [tip: x86/msr] um: Add UML version of <asm/tsc.h> to define rdtsc()
  2025-05-07 18:40 ` [tip: x86/msr] um: Add UML version of <asm/tsc.h> to define rdtsc() tip-bot2 for Ingo Molnar
@ 2025-05-07 18:47   ` Ingo Molnar
  2025-05-07 20:36   ` Johannes Berg
  1 sibling, 0 replies; 9+ messages in thread
From: Ingo Molnar @ 2025-05-07 18:47 UTC (permalink / raw)
  To: linux-kernel, Johannes Berg
  Cc: linux-tip-commits, kernel test robot, Johannes Berg, x86


Johannes: this is basically an RFC, not a final commit, will add your 
Reviewed-by if it's fine to you, or will change the patch if it's not.

Thanks,

	Ingo

* tip-bot2 for Ingo Molnar <tip-bot2@linutronix.de> wrote:

> The following commit has been merged into the x86/msr branch of tip:
> 
> Commit-ID:     24b58adaa7508d9d2cdb6bca44803954baf24459
> Gitweb:        https://git.kernel.org/tip/24b58adaa7508d9d2cdb6bca44803954baf24459
> Author:        Ingo Molnar <mingo@kernel.org>
> AuthorDate:    Wed, 07 May 2025 20:18:22 +02:00
> Committer:     Ingo Molnar <mingo@kernel.org>
> CommitterDate: Wed, 07 May 2025 20:30:39 +02:00
> 
> um: Add UML version of <asm/tsc.h> to define rdtsc()
> 
> In the x86 tree rdtsc() methods got moved out of <asm/msr.h>, but this
> broke UML, as the x86 version of <asm/tsc.h> cannot be used by UML as-is:
> 
> 	  CC [M]  drivers/accel/habanalabs/common/habanalabs_ioctl.o
> 	In file included from drivers/accel/habanalabs/common/habanalabs_ioctl.c:20:
> 	./arch/x86/include/asm/tsc.h:70:28: error: conflicting types for ‘cycles_t’; have ‘long long unsigned int’
> 	   70 | typedef unsigned long long cycles_t;
> 	      |                            ^~~~~~~~
> 	In file included from ./arch/um/include/asm/timex.h:7,
> 	                 from ./include/linux/timex.h:67,
> 	                 from ./include/linux/time32.h:13,
> 	                 from ./include/linux/time.h:60,
> 	                 from ./include/linux/skbuff.h:15,
> 	                 from ./include/linux/if_ether.h:19,
> 	                 from ./include/linux/habanalabs/cpucp_if.h:12,
> 	                 from drivers/accel/habanalabs/common/habanalabs.h:11,
> 	                 from drivers/accel/habanalabs/common/habanalabs_ioctl.c:11:
> 	./include/asm-generic/timex.h:8:23: note: previous declaration of ‘cycles_t’ with type ‘cycles_t’ {aka ‘long unsigned int’}
> 	    8 | typedef unsigned long cycles_t;
> 	      |                       ^~~~~~~~
> 
> To resolve these kinds of problems and to allow <asm/tsc.h> to be included on UML,
> add a simplified version of <asm/tsc.h>, which only adds the rdtsc() definition.
> 
> Reported-by: kernel test robot <lkp@intel.com>
> Signed-off-by: Ingo Molnar <mingo@kernel.org>
> Cc: Johannes Berg <johannes.berg@intel.com>
> Link: https://lore.kernel.org/r/202505080003.0t7ewxGp-lkp@intel.com
> ---
>  arch/um/include/asm/tsc.h | 25 +++++++++++++++++++++++++
>  1 file changed, 25 insertions(+)
>  create mode 100644 arch/um/include/asm/tsc.h
> 
> diff --git a/arch/um/include/asm/tsc.h b/arch/um/include/asm/tsc.h
> new file mode 100644
> index 0000000..a52b0e4
> --- /dev/null
> +++ b/arch/um/include/asm/tsc.h
> @@ -0,0 +1,25 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +#ifndef _ASM_UM_TSC_H
> +#define _ASM_UM_TSC_H
> +
> +#include <asm/asm.h>
> +
> +/**
> + * rdtsc() - returns the current TSC without ordering constraints
> + *
> + * rdtsc() returns the result of RDTSC as a 64-bit integer.  The
> + * only ordering constraint it supplies is the ordering implied by
> + * "asm volatile": it will put the RDTSC in the place you expect.  The
> + * CPU can and will speculatively execute that RDTSC, though, so the
> + * results can be non-monotonic if compared on different CPUs.
> + */
> +static __always_inline u64 rdtsc(void)
> +{
> +	EAX_EDX_DECLARE_ARGS(val, low, high);
> +
> +	asm volatile("rdtsc" : EAX_EDX_RET(val, low, high));
> +
> +	return EAX_EDX_VAL(val, low, high);
> +}
> +
> +#endif /* _ASM_UM_TSC_H */

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [tip: x86/msr] um: Add UML version of <asm/tsc.h> to define rdtsc()
  2025-05-07 18:40 ` [tip: x86/msr] um: Add UML version of <asm/tsc.h> to define rdtsc() tip-bot2 for Ingo Molnar
  2025-05-07 18:47   ` Ingo Molnar
@ 2025-05-07 20:36   ` Johannes Berg
  2025-05-08  8:57     ` [PATCH -v2] accel/habanalabs: Don't build the driver on UML Ingo Molnar
  1 sibling, 1 reply; 9+ messages in thread
From: Johannes Berg @ 2025-05-07 20:36 UTC (permalink / raw)
  To: linux-kernel@vger.kernel.org, linux-tip-commits@vger.kernel.org
  Cc: lkp, Ingo Molnar, x86@kernel.org, linux-um

+linux-um

On Wed, 2025-05-07 at 18:40 +0000, tip-bot2 for Ingo Molnar wrote:
> 
> To resolve these kinds of problems and to allow <asm/tsc.h> to be included on UML,
> add a simplified version of <asm/tsc.h>, which only adds the rdtsc() definition.

OK, weird, why would that be needed - UM isn't really X86.

>  arch/um/include/asm/tsc.h | 25 +++++++++++++++++++++++++

Feels that should be in arch/x86/um/asm/ instead, which I believe is
also included but then at least pretends to keep the notion that UML
could be ported to other architectures ;-)

> +static __always_inline u64 rdtsc(void)
> +{
> +       EAX_EDX_DECLARE_ARGS(val, low, high);
> +
> +       asm volatile("rdtsc" : EAX_EDX_RET(val, low, high));
> +
> +       return EAX_EDX_VAL(val, low, high);
> +}

Though I also wonder where this is called at all that would be relevant
for UML? If it's not then perhaps we should just make using it
unbuildable, a la

u64 __um_has_no_rdtsc(void);
#define rdtsc() __um_has_no_rdtsc()

or something like that... (and then of course keep it in the current
location). But looking at the 0-day report that'd probably break
building the driver on UML; while the driver doesn't seem important we
wouldn't really want that...

Actually, that's just because of the stupid quirk in UML/X86:

config DRM_ACCEL_HABANALABS
        tristate "HabanaLabs AI accelerators"
        depends on DRM_ACCEL
        depends on X86_64

that last line should almost certainly be "depends on X86 && X86_64"
because ARCH=um will set UM and X86_64, but not X86 since the arch
Kconfig symbols are X86 and UM respectively, but the UML subarch still
selects X86_64 ...


I dunno. I guess we can put rdtsc() into UML on x86 as I suggested about
the file placement, or we can also just fix the Kconfig there.

johannes


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH -v2] accel/habanalabs: Don't build the driver on UML
  2025-05-07 20:36   ` Johannes Berg
@ 2025-05-08  8:57     ` Ingo Molnar
  2025-05-08  9:02       ` Johannes Berg
  0 siblings, 1 reply; 9+ messages in thread
From: Ingo Molnar @ 2025-05-08  8:57 UTC (permalink / raw)
  To: Johannes Berg
  Cc: linux-kernel@vger.kernel.org, linux-tip-commits@vger.kernel.org,
	lkp, x86@kernel.org, linux-um


* Johannes Berg <johannes@sipsolutions.net> wrote:

> +linux-um
> 
> On Wed, 2025-05-07 at 18:40 +0000, tip-bot2 for Ingo Molnar wrote:
> > 
> > To resolve these kinds of problems and to allow <asm/tsc.h> to be included on UML,
> > add a simplified version of <asm/tsc.h>, which only adds the rdtsc() definition.
> 
> OK, weird, why would that be needed - UM isn't really X86.
> 
> >  arch/um/include/asm/tsc.h | 25 +++++++++++++++++++++++++
> 
> Feels that should be in arch/x86/um/asm/ instead, which I believe is
> also included but then at least pretends to keep the notion that UML
> could be ported to other architectures ;-)
> 
> > +static __always_inline u64 rdtsc(void)
> > +{
> > +       EAX_EDX_DECLARE_ARGS(val, low, high);
> > +
> > +       asm volatile("rdtsc" : EAX_EDX_RET(val, low, high));
> > +
> > +       return EAX_EDX_VAL(val, low, high);
> > +}
> 
> Though I also wonder where this is called at all that would be relevant
> for UML? If it's not then perhaps we should just make using it
> unbuildable, a la
> 
> u64 __um_has_no_rdtsc(void);
> #define rdtsc() __um_has_no_rdtsc()
> 
> or something like that... (and then of course keep it in the current
> location). But looking at the 0-day report that'd probably break
> building the driver on UML; while the driver doesn't seem important we
> wouldn't really want that...
> 
> Actually, that's just because of the stupid quirk in UML/X86:
> 
> config DRM_ACCEL_HABANALABS
>         tristate "HabanaLabs AI accelerators"
>         depends on DRM_ACCEL
>         depends on X86_64
> 
> that last line should almost certainly be "depends on X86 && X86_64"
> because ARCH=um will set UM and X86_64, but not X86 since the arch
> Kconfig symbols are X86 and UM respectively, but the UML subarch still
> selects X86_64 ...
> 
> 
> I dunno. I guess we can put rdtsc() into UML on x86 as I suggested about
> the file placement, or we can also just fix the Kconfig there.

The Kconfig solution looks much simpler to me too :)

Patch attached, does this look good to you?

Thanks,

	Ingo

===================================>
From: Ingo Molnar <mingo@kernel.org>
Date: Wed, 7 May 2025 20:25:59 +0200
Subject: [PATCH] accel/habanalabs: Don't build the driver on UML

The following commit:

  288a4ff0ad29 ("x86/msr: Move rdtsc{,_ordered}() to <asm/tsc.h>")

removed the <asm/msr.h> include from the accel/habanalabs driver, which broke
the build on UML:

   drivers/accel/habanalabs/common/habanalabs_ioctl.c:326:23: error: call to undeclared function 'rdtsc'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]

Make the driver depend on 'X86 && X86_64', instead of just 'X86_64',
thus it won't be built on UML.

Suggested-by: Johannes Berg <johannes.berg@intel.com>
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Ofir Bitton <obitton@habana.ai>
Cc: Oded Gabbay <ogabbay@kernel.org>
Link: https://lore.kernel.org/r/202505080003.0t7ewxGp-lkp@intel.com
---
 drivers/accel/habanalabs/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/accel/habanalabs/Kconfig b/drivers/accel/habanalabs/Kconfig
index be85336107f9..1919fbb169c7 100644
--- a/drivers/accel/habanalabs/Kconfig
+++ b/drivers/accel/habanalabs/Kconfig
@@ -6,7 +6,7 @@
 config DRM_ACCEL_HABANALABS
 	tristate "HabanaLabs AI accelerators"
 	depends on DRM_ACCEL
-	depends on X86_64
+	depends on X86 && X86_64
 	depends on PCI && HAS_IOMEM
 	select GENERIC_ALLOCATOR
 	select HWMON


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH -v2] accel/habanalabs: Don't build the driver on UML
  2025-05-08  8:57     ` [PATCH -v2] accel/habanalabs: Don't build the driver on UML Ingo Molnar
@ 2025-05-08  9:02       ` Johannes Berg
  2025-05-08  9:03         ` Ingo Molnar
  0 siblings, 1 reply; 9+ messages in thread
From: Johannes Berg @ 2025-05-08  9:02 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel@vger.kernel.org, linux-tip-commits@vger.kernel.org,
	lkp, x86@kernel.org, linux-um

On Thu, 2025-05-08 at 10:57 +0200, Ingo Molnar wrote:
> > 
> > I dunno. I guess we can put rdtsc() into UML on x86 as I suggested about
> > the file placement, or we can also just fix the Kconfig there.
> 
> The Kconfig solution looks much simpler to me too :)
> 
> Patch attached, does this look good to you?

Yeah looks good to me. Common gotcha really.

Reviewed-by: Johannes Berg <johannes@sipsolutions.net>

If anyone _really_ needs to have this driver built on UML (say for
simulations/testing, we do build iwlwifi for all the time), then they'd
probably want to replace the rdtsc() anyway with something else there.

johannes


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH -v2] accel/habanalabs: Don't build the driver on UML
  2025-05-08  9:02       ` Johannes Berg
@ 2025-05-08  9:03         ` Ingo Molnar
  0 siblings, 0 replies; 9+ messages in thread
From: Ingo Molnar @ 2025-05-08  9:03 UTC (permalink / raw)
  To: Johannes Berg
  Cc: linux-kernel@vger.kernel.org, linux-tip-commits@vger.kernel.org,
	lkp, x86@kernel.org, linux-um


* Johannes Berg <johannes@sipsolutions.net> wrote:

> On Thu, 2025-05-08 at 10:57 +0200, Ingo Molnar wrote:
> > > 
> > > I dunno. I guess we can put rdtsc() into UML on x86 as I suggested about
> > > the file placement, or we can also just fix the Kconfig there.
> > 
> > The Kconfig solution looks much simpler to me too :)
> > 
> > Patch attached, does this look good to you?
> 
> Yeah looks good to me. Common gotcha really.
> 
> Reviewed-by: Johannes Berg <johannes@sipsolutions.net>

Thanks, applied to tip:x86/msr.

> If anyone _really_ needs to have this driver built on UML (say for 
> simulations/testing, we do build iwlwifi for all the time), then 
> they'd probably want to replace the rdtsc() anyway with something 
> else there.

Yeah.

	Ingo


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [tip: x86/msr] accel/habanalabs: Don't build the driver on UML
  2025-05-07 16:41 [tip:x86/msr 5/19] drivers/accel/habanalabs/common/habanalabs_ioctl.c:326:23: error: call to undeclared function 'rdtsc'; ISO C99 and later do not support implicit function declarations kernel test robot
  2025-05-07 18:40 ` [tip: x86/msr] accel/habanalabs: Add explicit include of <asm/tsc.h> to pick up the rdtsc() definition tip-bot2 for Ingo Molnar
  2025-05-07 18:40 ` [tip: x86/msr] um: Add UML version of <asm/tsc.h> to define rdtsc() tip-bot2 for Ingo Molnar
@ 2025-05-08  9:09 ` tip-bot2 for Ingo Molnar
  2 siblings, 0 replies; 9+ messages in thread
From: tip-bot2 for Ingo Molnar @ 2025-05-08  9:09 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: Johannes Berg, kernel test robot, Ingo Molnar, Johannes Berg,
	Ofir Bitton, Oded Gabbay, x86, linux-kernel

The following commit has been merged into the x86/msr branch of tip:

Commit-ID:     9cf78722003178b09c409df9aafe9d79e5b9a74e
Gitweb:        https://git.kernel.org/tip/9cf78722003178b09c409df9aafe9d79e5b9a74e
Author:        Ingo Molnar <mingo@kernel.org>
AuthorDate:    Wed, 07 May 2025 20:25:59 +02:00
Committer:     Ingo Molnar <mingo@kernel.org>
CommitterDate: Thu, 08 May 2025 11:02:46 +02:00

accel/habanalabs: Don't build the driver on UML

The following commit:

  288a4ff0ad29 ("x86/msr: Move rdtsc{,_ordered}() to <asm/tsc.h>")

removed the <asm/msr.h> include from the accel/habanalabs driver, which broke
the build on UML:

   drivers/accel/habanalabs/common/habanalabs_ioctl.c:326:23: error: call to undeclared function 'rdtsc'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]

Make the driver depend on 'X86 && X86_64', instead of just 'X86_64',
thus it won't be built on UML.

Suggested-by: Johannes Berg <johannes.berg@intel.com>
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Reviewed-by: Johannes Berg <johannes@sipsolutions.net>
Cc: Ofir Bitton <obitton@habana.ai>
Cc: Oded Gabbay <ogabbay@kernel.org>
Link: https://lore.kernel.org/r/202505080003.0t7ewxGp-lkp@intel.com
---
 drivers/accel/habanalabs/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/accel/habanalabs/Kconfig b/drivers/accel/habanalabs/Kconfig
index be85336..1919fbb 100644
--- a/drivers/accel/habanalabs/Kconfig
+++ b/drivers/accel/habanalabs/Kconfig
@@ -6,7 +6,7 @@
 config DRM_ACCEL_HABANALABS
 	tristate "HabanaLabs AI accelerators"
 	depends on DRM_ACCEL
-	depends on X86_64
+	depends on X86 && X86_64
 	depends on PCI && HAS_IOMEM
 	select GENERIC_ALLOCATOR
 	select HWMON

^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2025-05-08  9:24 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-07 16:41 [tip:x86/msr 5/19] drivers/accel/habanalabs/common/habanalabs_ioctl.c:326:23: error: call to undeclared function 'rdtsc'; ISO C99 and later do not support implicit function declarations kernel test robot
2025-05-07 18:40 ` [tip: x86/msr] accel/habanalabs: Add explicit include of <asm/tsc.h> to pick up the rdtsc() definition tip-bot2 for Ingo Molnar
2025-05-07 18:40 ` [tip: x86/msr] um: Add UML version of <asm/tsc.h> to define rdtsc() tip-bot2 for Ingo Molnar
2025-05-07 18:47   ` Ingo Molnar
2025-05-07 20:36   ` Johannes Berg
2025-05-08  8:57     ` [PATCH -v2] accel/habanalabs: Don't build the driver on UML Ingo Molnar
2025-05-08  9:02       ` Johannes Berg
2025-05-08  9:03         ` Ingo Molnar
2025-05-08  9:09 ` [tip: x86/msr] " tip-bot2 for Ingo Molnar

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.