* [rcu:dev.2017.09.17a 32/32] kernel/cpu.c:721:6: error: 'cpuhp_state_down_key' undeclared
@ 2017-09-19 16:56 kbuild test robot
0 siblings, 0 replies; only message in thread
From: kbuild test robot @ 2017-09-19 16:56 UTC (permalink / raw)
To: Peter Zijlstra; +Cc: kbuild-all, linux-kernel, Paul E. McKenney
[-- Attachment #1: Type: text/plain, Size: 7732 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git dev.2017.09.17a
head: 0cb8379979ad024d4024bd552bb0287d46a19b0c
commit: 0cb8379979ad024d4024bd552bb0287d46a19b0c [32/32] EXP smp/hotplug,lockdep: Annotate cpuhp_state
config: i386-randconfig-x079-201738 (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
git checkout 0cb8379979ad024d4024bd552bb0287d46a19b0c
# save the attached .config to linux build tree
make ARCH=i386
All errors (new ones prefixed by >>):
In file included from include/linux/spinlock_types.h:18:0,
from include/linux/spinlock.h:81,
from include/linux/wait.h:8,
from include/linux/wait_bit.h:7,
from include/linux/fs.h:5,
from include/linux/proc_fs.h:8,
from kernel/cpu.c:6:
kernel/cpu.c: In function '_cpu_down':
>> kernel/cpu.c:721:6: error: 'cpuhp_state_down_key' undeclared (first use in this function)
&cpuhp_state_down_key, 0);
^
include/linux/lockdep.h:505:29: note: in definition of macro 'lockdep_init_map'
do { (void)(name); (void)(key); } while (0)
^~~
kernel/cpu.c:721:6: note: each undeclared identifier is reported only once for each function it appears in
&cpuhp_state_down_key, 0);
^
include/linux/lockdep.h:505:29: note: in definition of macro 'lockdep_init_map'
do { (void)(name); (void)(key); } while (0)
^~~
kernel/cpu.c: In function '_cpu_up':
>> kernel/cpu.c:837:6: error: 'cpuhp_state_up_key' undeclared (first use in this function)
&cpuhp_state_up_key, 0);
^
include/linux/lockdep.h:505:29: note: in definition of macro 'lockdep_init_map'
do { (void)(name); (void)(key); } while (0)
^~~
vim +/cpuhp_state_down_key +721 kernel/cpu.c
703
704 /* Requires cpu_add_remove_lock to be held */
705 static int __ref _cpu_down(unsigned int cpu, int tasks_frozen,
706 enum cpuhp_state target)
707 {
708 struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu);
709 int prev_state, ret = 0;
710
711 if (num_online_cpus() == 1)
712 return -EBUSY;
713
714 if (!cpu_present(cpu))
715 return -EINVAL;
716
717 cpus_write_lock();
718
719 lockdep_reinit_st_done();
720 lockdep_init_map(&cpuhp_state_lock_map, "cpuhp_state-down",
> 721 &cpuhp_state_down_key, 0);
722
723 cpuhp_tasks_frozen = tasks_frozen;
724
725 prev_state = st->state;
726 st->target = target;
727 /*
728 * If the current CPU state is in the range of the AP hotplug thread,
729 * then we need to kick the thread.
730 */
731 if (st->state > CPUHP_TEARDOWN_CPU) {
732 ret = cpuhp_kick_ap_work(cpu);
733 /*
734 * The AP side has done the error rollback already. Just
735 * return the error code..
736 */
737 if (ret)
738 goto out;
739
740 /*
741 * We might have stopped still in the range of the AP hotplug
742 * thread. Nothing to do anymore.
743 */
744 if (st->state > CPUHP_TEARDOWN_CPU)
745 goto out;
746 }
747 /*
748 * The AP brought itself down to CPUHP_TEARDOWN_CPU. So we need
749 * to do the further cleanups.
750 */
751 ret = cpuhp_down_callbacks(cpu, st, target);
752 if (ret && st->state > CPUHP_TEARDOWN_CPU && st->state < prev_state) {
753 st->target = prev_state;
754 st->rollback = true;
755 cpuhp_kick_ap_work(cpu);
756 }
757
758 out:
759 cpus_write_unlock();
760 return ret;
761 }
762
763 static int do_cpu_down(unsigned int cpu, enum cpuhp_state target)
764 {
765 int err;
766
767 cpu_maps_update_begin();
768
769 if (cpu_hotplug_disabled) {
770 err = -EBUSY;
771 goto out;
772 }
773
774 err = _cpu_down(cpu, 0, target);
775
776 out:
777 cpu_maps_update_done();
778 return err;
779 }
780 int cpu_down(unsigned int cpu)
781 {
782 return do_cpu_down(cpu, CPUHP_OFFLINE);
783 }
784 EXPORT_SYMBOL(cpu_down);
785
786 #else
787 #define takedown_cpu NULL
788 #endif /*CONFIG_HOTPLUG_CPU*/
789
790 /**
791 * notify_cpu_starting(cpu) - Invoke the callbacks on the starting CPU
792 * @cpu: cpu that just started
793 *
794 * It must be called by the arch code on the new cpu, before the new cpu
795 * enables interrupts and before the "boot" cpu returns from __cpu_up().
796 */
797 void notify_cpu_starting(unsigned int cpu)
798 {
799 struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu);
800 enum cpuhp_state target = min((int)st->target, CPUHP_AP_ONLINE);
801
802 rcu_cpu_starting(cpu); /* Enables RCU usage on this CPU. */
803 while (st->state < target) {
804 st->state++;
805 cpuhp_invoke_callback(cpu, st->state, true, NULL);
806 }
807 }
808
809 /*
810 * Called from the idle task. Wake up the controlling task which brings the
811 * stopper and the hotplug thread of the upcoming CPU up and then delegates
812 * the rest of the online bringup to the hotplug thread.
813 */
814 void cpuhp_online_idle(enum cpuhp_state state)
815 {
816 struct cpuhp_cpu_state *st = this_cpu_ptr(&cpuhp_state);
817
818 /* Happens for the boot cpu */
819 if (state != CPUHP_AP_ONLINE_IDLE)
820 return;
821
822 st->state = CPUHP_AP_ONLINE_IDLE;
823 complete(&st->done);
824 }
825
826 /* Requires cpu_add_remove_lock to be held */
827 static int _cpu_up(unsigned int cpu, int tasks_frozen, enum cpuhp_state target)
828 {
829 struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu);
830 struct task_struct *idle;
831 int ret = 0;
832
833 cpus_write_lock();
834
835 lockdep_reinit_st_done();
836 lockdep_init_map(&cpuhp_state_lock_map, "cpuhp_state-up",
> 837 &cpuhp_state_up_key, 0);
838
839 if (!cpu_present(cpu)) {
840 ret = -EINVAL;
841 goto out;
842 }
843
844 /*
845 * The caller of do_cpu_up might have raced with another
846 * caller. Ignore it for now.
847 */
848 if (st->state >= target)
849 goto out;
850
851 if (st->state == CPUHP_OFFLINE) {
852 /* Let it fail before we try to bring the cpu up */
853 idle = idle_thread_get(cpu);
854 if (IS_ERR(idle)) {
855 ret = PTR_ERR(idle);
856 goto out;
857 }
858 }
859
860 cpuhp_tasks_frozen = tasks_frozen;
861
862 st->target = target;
863 /*
864 * If the current CPU state is in the range of the AP hotplug thread,
865 * then we need to kick the thread once more.
866 */
867 if (st->state > CPUHP_BRINGUP_CPU) {
868 ret = cpuhp_kick_ap_work(cpu);
869 /*
870 * The AP side has done the error rollback already. Just
871 * return the error code..
872 */
873 if (ret)
874 goto out;
875 }
876
877 /*
878 * Try to reach the target state. We max out on the BP at
879 * CPUHP_BRINGUP_CPU. After that the AP hotplug thread is
880 * responsible for bringing it up to the target state.
881 */
882 target = min((int)target, CPUHP_BRINGUP_CPU);
883 ret = cpuhp_up_callbacks(cpu, st, target);
884 out:
885 cpus_write_unlock();
886 return ret;
887 }
888
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 26866 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2017-09-19 16:56 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-09-19 16:56 [rcu:dev.2017.09.17a 32/32] kernel/cpu.c:721:6: error: 'cpuhp_state_down_key' undeclared kbuild test robot
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.