mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Nathan Chancellor <nathan@kernel.org>
To: Borislav Petkov <bp@alien8.de>
Cc: kernel test robot <lkp@intel.com>,
	Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
	linux-kernel@vger.kernel.org,
	Jiaxun Yang <jiaxun.yang@flygoat.com>
Subject: Re: arch/mips/include/asm/timex.h:75:10: error: instruction requires a CPU feature not currently enabled
Date: Wed, 19 Apr 2023 16:18:34 -0700	[thread overview]
Message-ID: <20230419231834.GA1269248@dev-arch.thelio-3990X> (raw)
In-Reply-To: <20230419223707.GAZEBtE1vZGy5B4EUR@fat_crate.local>

+ Jiaxun, who has been looking into MIPS + LLVM issues recently and has
been a big help :)

On Thu, Apr 20, 2023 at 12:37:07AM +0200, Borislav Petkov wrote:
> + Thomas.
> 
> On Mon, Apr 17, 2023 at 07:57:04AM +0800, kernel test robot wrote:
> > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> > head:   6a8f57ae2eb07ab39a6f0ccad60c760743051026
> > commit: aba5b397cad7d398b385aaf5029f99f41b690466 hamradio: baycom_epp: Do not use x86-specific rdtsc()
> > date:   4 months ago
> > config: mips-buildonly-randconfig-r001-20230417 (https://download.01.org/0day-ci/archive/20230417/202304170748.Fg9VIgGd-lkp@intel.com/config)
> > compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project 9638da200e00bd069e6dd63604e14cbafede9324)
> 
> Where do I get clang 17?

I think they intend for you to get it via their make.cross script but
this issue reproduces with clang 16.0.2 from
https://mirrors.edge.kernel.org/pub/tools/llvm/ for me locally.

> In any case, this
> 
> "error: instruction requires a CPU feature not currently enabled"
> 
> sounds like clang is trying to generate invalid code for the wrong
> target. .config issue?

I am far from a MIPS expert but this usually means that there is some
assembler directive that we are missing to allow access to certain
instructions in newer ISA versions than the one specified via '-march'.
I have no idea if that is the case here or not but I do see the correct
target flags when building with V=1, so it is not something obvious like
that. I can double back to this later this week or next week if nobody
else is able to.

Regardless, this seems like a pre-existing issue that was just exposed
by your patch, not the root cause of it.

Cheers,
Nathan

> > reproduce (this is a W=1 build):
> >         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> >         chmod +x ~/bin/make.cross
> >         # install mips cross compiling tool for clang build
> >         # apt-get install binutils-mipsel-linux-gnu
> >         # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=aba5b397cad7d398b385aaf5029f99f41b690466
> >         git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
> >         git fetch --no-tags linus master
> >         git checkout aba5b397cad7d398b385aaf5029f99f41b690466
> >         # save the config file
> >         mkdir build_dir && cp config build_dir/.config
> >         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=mips olddefconfig
> >         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=mips SHELL=/bin/bash drivers/net/hamradio/
> > 
> > If you fix the issue, kindly add following tag where applicable
> > | Reported-by: kernel test robot <lkp@intel.com>
> > | Link: https://lore.kernel.org/oe-kbuild-all/202304170748.Fg9VIgGd-lkp@intel.com/
> > 
> > All errors (new ones prefixed by >>):
> > 
> >    In file included from drivers/net/hamradio/baycom_epp.c:29:
> >    In file included from include/linux/module.h:13:
> >    In file included from include/linux/stat.h:19:
> >    In file included from include/linux/time.h:60:
> >    In file included from include/linux/time32.h:13:
> >    In file included from include/linux/timex.h:67:
> > >> arch/mips/include/asm/timex.h:75:10: error: instruction requires a CPU feature not currently enabled
> >                    return read_c0_count();
> >                           ^
> >    arch/mips/include/asm/mipsregs.h:1712:26: note: expanded from macro 'read_c0_count'
> >    #define read_c0_count()         __read_32bit_c0_register($9, 0)
> >                                    ^
> >    arch/mips/include/asm/mipsregs.h:1453:2: note: expanded from macro '__read_32bit_c0_register'
> >            ___read_32bit_c0_register(source, sel, __volatile__)
> >            ^
> >    arch/mips/include/asm/mipsregs.h:1419:4: note: expanded from macro '___read_32bit_c0_register'
> >                            "mfc0\t%0, " #source "\n\t"                     \
> >                            ^
> >    <inline asm>:1:2: note: instantiated into assembly here
> >            mfc0    $4, $9
> >            ^
> >    In file included from drivers/net/hamradio/baycom_epp.c:29:
> >    In file included from include/linux/module.h:13:
> >    In file included from include/linux/stat.h:19:
> >    In file included from include/linux/time.h:60:
> >    In file included from include/linux/time32.h:13:
> >    In file included from include/linux/timex.h:67:
> > >> arch/mips/include/asm/timex.h:75:10: error: instruction requires a CPU feature not currently enabled
> >                    return read_c0_count();
> >                           ^
> >    arch/mips/include/asm/mipsregs.h:1712:26: note: expanded from macro 'read_c0_count'
> >    #define read_c0_count()         __read_32bit_c0_register($9, 0)
> >                                    ^
> >    arch/mips/include/asm/mipsregs.h:1453:2: note: expanded from macro '__read_32bit_c0_register'
> >            ___read_32bit_c0_register(source, sel, __volatile__)
> >            ^
> >    arch/mips/include/asm/mipsregs.h:1419:4: note: expanded from macro '___read_32bit_c0_register'
> >                            "mfc0\t%0, " #source "\n\t"                     \
> >                            ^
> >    <inline asm>:1:2: note: instantiated into assembly here
> >            mfc0    $2, $9
> >            ^
> >    In file included from drivers/net/hamradio/baycom_epp.c:29:
> >    In file included from include/linux/module.h:13:
> >    In file included from include/linux/stat.h:19:
> >    In file included from include/linux/time.h:60:
> >    In file included from include/linux/time32.h:13:
> >    In file included from include/linux/timex.h:67:
> > >> arch/mips/include/asm/timex.h:75:10: error: instruction requires a CPU feature not currently enabled
> >                    return read_c0_count();
> >                           ^
> >    arch/mips/include/asm/mipsregs.h:1712:26: note: expanded from macro 'read_c0_count'
> >    #define read_c0_count()         __read_32bit_c0_register($9, 0)
> >                                    ^
> >    arch/mips/include/asm/mipsregs.h:1453:2: note: expanded from macro '__read_32bit_c0_register'
> >            ___read_32bit_c0_register(source, sel, __volatile__)
> >            ^
> >    arch/mips/include/asm/mipsregs.h:1419:4: note: expanded from macro '___read_32bit_c0_register'
> >                            "mfc0\t%0, " #source "\n\t"                     \
> >                            ^
> >    <inline asm>:1:2: note: instantiated into assembly here
> >            mfc0    $2, $9
> >            ^
> >    In file included from drivers/net/hamradio/baycom_epp.c:29:
> >    In file included from include/linux/module.h:13:
> >    In file included from include/linux/stat.h:19:
> >    In file included from include/linux/time.h:60:
> >    In file included from include/linux/time32.h:13:
> >    In file included from include/linux/timex.h:67:
> > >> arch/mips/include/asm/timex.h:75:10: error: instruction requires a CPU feature not currently enabled
> >                    return read_c0_count();
> >                           ^
> >    arch/mips/include/asm/mipsregs.h:1712:26: note: expanded from macro 'read_c0_count'
> >    #define read_c0_count()         __read_32bit_c0_register($9, 0)
> >                                    ^
> >    arch/mips/include/asm/mipsregs.h:1453:2: note: expanded from macro '__read_32bit_c0_register'
> >            ___read_32bit_c0_register(source, sel, __volatile__)
> >            ^
> >    arch/mips/include/asm/mipsregs.h:1419:4: note: expanded from macro '___read_32bit_c0_register'
> >                            "mfc0\t%0, " #source "\n\t"                     \
> >                            ^
> >    <inline asm>:1:2: note: instantiated into assembly here
> >            mfc0    $2, $9
> >            ^
> >    4 errors generated.
> > 
> > 
> > vim +75 arch/mips/include/asm/timex.h
> > 
> > 9c9b415c50bc29 Ralf Baechle       2013-09-12  71  
> > 06947aaaf9bf7d Maciej W. Rozycki  2014-04-06  72  static inline cycles_t get_cycles(void)
> > 06947aaaf9bf7d Maciej W. Rozycki  2014-04-06  73  {
> > 06947aaaf9bf7d Maciej W. Rozycki  2014-04-06  74  	if (can_use_mips_counter(read_c0_prid()))
> > 9c9b415c50bc29 Ralf Baechle       2013-09-12 @75  		return read_c0_count();
> > 06947aaaf9bf7d Maciej W. Rozycki  2014-04-06  76  	else
> > 06947aaaf9bf7d Maciej W. Rozycki  2014-04-06  77  		return 0;	/* no usable counter */
> > 9c9b415c50bc29 Ralf Baechle       2013-09-12  78  }
> > 1c99c6a7c3c599 Jason A. Donenfeld 2022-04-08  79  #define get_cycles get_cycles
> > 9c9b415c50bc29 Ralf Baechle       2013-09-12  80  
> > 
> > :::::: The code at line 75 was first introduced by commit
> > :::::: 9c9b415c50bc298ac61412dff856eae2f54889ee MIPS: Reimplement get_cycles().
> > 
> > :::::: TO: Ralf Baechle <ralf@linux-mips.org>
> > :::::: CC: Ralf Baechle <ralf@linux-mips.org>
> > 
> > -- 
> > 0-DAY CI Kernel Test Service
> > https://github.com/intel/lkp-tests
> 
> -- 
> Regards/Gruss,
>     Boris.
> 
> https://people.kernel.org/tglx/notes-about-netiquette

  reply	other threads:[~2023-04-19 23:18 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-16 23:57 kernel test robot
2023-04-19 22:37 ` Borislav Petkov
2023-04-19 23:18   ` Nathan Chancellor [this message]
2023-04-19 23:41     ` Jiaxun Yang
2023-04-24 20:01       ` Nathan Chancellor
2023-04-25  9:01         ` Jiaxun Yang

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=20230419231834.GA1269248@dev-arch.thelio-3990X \
    --to=nathan@kernel.org \
    --cc=bp@alien8.de \
    --cc=jiaxun.yang@flygoat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=llvm@lists.linux.dev \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=tsbogend@alpha.franken.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®