From: me@tobin.cc (Tobin C. Harding)
To: kernelnewbies@lists.kernelnewbies.org
Subject: powerpc build fail
Date: Wed, 22 Feb 2017 10:37:52 +1100 [thread overview]
Message-ID: <20170221233752.GA28173@eros> (raw)
In-Reply-To: <20170221105301.GA6678@eros>
On Tue, Feb 21, 2017 at 09:53:01PM +1100, Tobin C. Harding wrote:
> The current (2bfe01e) torvalds git tree fails to build with the following error
>
> arch/powerpc/kernel/time.c: In function ?running_clock?:
> arch/powerpc/kernel/time.c:712:25: error: implicit declaration of function ?cputime_to_nsecs? [-Werror=implicit-function-declaration]
> return local_clock() - cputime_to_nsecs(kcpustat_this_cpu->cpustat[CPUTIME_STEAL]);
> ^
> I would like to do more than just file a bug report. Further
> investigation (cputime.h) shows that cputime_to_nsecs has a
> preprocessor guard on the config option (currently enabled)
> CONFIG_VIRT_CPU_ACCOUNTING_NATIVE.
Mistake made, CONFIG_VIRT_CPU_ACCOUNTING_NATIVE is *not* enabled.
$ cat .config | grep CONFIG_VIRT_CPU
# CONFIG_VIRT_CPU_ACCOUNTING_NATIVE is not set
# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set
$ cat .config | grep CONFIG_PPC_PSERIES
CONFIG_PPC_PSERIES=y
>
> CONFIG_PPC_PSERIES is also enabled.
>
> The offending code in arch/powerpc/kernel/time.c is
>
> #ifdef CONFIG_PPC_PSERIES
>
> /*
> * Running clock - attempts to give a view of time passing for a virtualised
> * kernels.
> * Uses the VTB register if available otherwise a next best guess.
> */
> unsigned long long running_clock(void)
> {
> /*
> * Don't read the VTB as a host since KVM does not switch in host
> * timebase into the VTB when it takes a guest off the CPU, reading the
> * VTB would result in reading 'last switched out' guest VTB.
> *
> * Host kernels are often compiled with CONFIG_PPC_PSERIES checked, it
> * would be unsafe to rely only on the #ifdef above.
> */
> if (firmware_has_feature(FW_FEATURE_LPAR) &&
> cpu_has_feature(CPU_FTR_ARCH_207S))
> return mulhdu(get_vtb() - boot_tb, tb_to_ns_scale) << tb_to_ns_shift;
>
> /*
> * This is a next best approximation without a VTB.
> * On a host which is running bare metal there should never be any stolen
> * time and on a host which doesn't do any virtualisation TB *should* equal
> * VTB so it makes no difference anyway.
> */
> return local_clock() - cputime_to_nsecs(kcpustat_this_cpu->cpustat[CPUTIME_STEAL]);
> }
> #endif
>
> Can anyone give me a hint on this one? Where to start reading?
Removing the compile time guard allows the build to proceed, surely
this is not the correct solution though.
diff --git a/arch/powerpc/include/asm/cputime.h b/arch/powerpc/include/asm/cputime.h
index 99b5418..15482cb 100644
--- a/arch/powerpc/include/asm/cputime.h
+++ b/arch/powerpc/include/asm/cputime.h
@@ -16,7 +16,7 @@
#ifndef __POWERPC_CPUTIME_H
#define __POWERPC_CPUTIME_H
-#ifdef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE
+
#include <linux/types.h>
#include <linux/time.h>
@@ -53,5 +53,5 @@ void arch_vtime_task_switch(struct task_struct *tsk);
#endif
#endif /* __KERNEL__ */
-#endif /* CONFIG_VIRT_CPU_ACCOUNTING_NATIVE */
+
#endif /* __POWERPC_CPUTIME_H */
diff --git a/include/linux/cputime.h b/include/linux/cputime.h
index a691dc4..f730c14 100644
--- a/include/linux/cputime.h
+++ b/include/linux/cputime.h
@@ -1,13 +1,13 @@
#ifndef __LINUX_CPUTIME_H
#define __LINUX_CPUTIME_H
-#ifdef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE
+
#include <asm/cputime.h>
#ifndef cputime_to_nsecs
-# define cputime_to_nsecs(__ct) \
+#define cputime_to_nsecs(__ct) \
(cputime_to_usecs(__ct) * NSEC_PER_USEC)
#endif
-#endif /* CONFIG_VIRT_CPU_ACCOUNTING_NATIVE */
+
#endif /* __LINUX_CPUTIME_H */
thanks,
Tobin.
next prev parent reply other threads:[~2017-02-21 23:37 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-21 10:53 powerpc build fail Tobin C. Harding
2017-02-21 23:37 ` Tobin C. Harding [this message]
-- strict thread matches above, loose matches on Subject: below --
2017-02-22 1:22 PowerPC " Tobin C. Harding
2017-02-22 2:46 ` Andrew Donnellan
2017-02-27 10:38 ` Michael Ellerman
2017-02-27 20:04 ` Tobin C. Harding
2017-02-28 3:42 ` Michael Ellerman
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=20170221233752.GA28173@eros \
--to=me@tobin.cc \
--cc=kernelnewbies@lists.kernelnewbies.org \
/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 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.