tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 7cf726a59435301046250c42131554d9ccc566b8 commit: 975434f8b24a55af31daa4634972890c061a0a0c clocksource/drivers/sp804: Delete the leading "__" of some functions date: 4 weeks ago config: riscv-randconfig-r015-20201019 (attached as .config) compiler: riscv32-linux-gcc (GCC) 9.3.0 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 # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=975434f8b24a55af31daa4634972890c061a0a0c git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 975434f8b24a55af31daa4634972890c061a0a0c # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=riscv
If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <l...@intel.com> All warnings (new ones prefixed by >>): >> drivers/clocksource/timer-sp804.c:68:12: warning: no previous prototype for >> 'sp804_clocksource_and_sched_clock_init' [-Wmissing-prototypes] 68 | int __init sp804_clocksource_and_sched_clock_init(void __iomem *base, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/clocksource/timer-sp804.c:162:12: warning: no previous prototype for >> 'sp804_clockevents_init' [-Wmissing-prototypes] 162 | int __init sp804_clockevents_init(void __iomem *base, unsigned int irq, | ^~~~~~~~~~~~~~~~~~~~~~ vim +/sp804_clocksource_and_sched_clock_init +68 drivers/clocksource/timer-sp804.c 67 > 68 int __init sp804_clocksource_and_sched_clock_init(void __iomem *base, 69 const char *name, 70 struct clk *clk, 71 int use_sched_clock) 72 { 73 long rate; 74 75 rate = sp804_get_clock_rate(clk, name); 76 if (rate < 0) 77 return -EINVAL; 78 79 /* setup timer 0 as free-running clocksource */ 80 writel(0, base + TIMER_CTRL); 81 writel(0xffffffff, base + TIMER_LOAD); 82 writel(0xffffffff, base + TIMER_VALUE); 83 writel(TIMER_CTRL_32BIT | TIMER_CTRL_ENABLE | TIMER_CTRL_PERIODIC, 84 base + TIMER_CTRL); 85 86 clocksource_mmio_init(base + TIMER_VALUE, name, 87 rate, 200, 32, clocksource_mmio_readl_down); 88 89 if (use_sched_clock) { 90 sched_clock_base = base; 91 sched_clock_register(sp804_read, 32, rate); 92 } 93 94 return 0; 95 } 96 97 98 static void __iomem *clkevt_base; 99 static unsigned long clkevt_reload; 100 101 /* 102 * IRQ handler for the timer 103 */ 104 static irqreturn_t sp804_timer_interrupt(int irq, void *dev_id) 105 { 106 struct clock_event_device *evt = dev_id; 107 108 /* clear the interrupt */ 109 writel(1, clkevt_base + TIMER_INTCLR); 110 111 evt->event_handler(evt); 112 113 return IRQ_HANDLED; 114 } 115 116 static inline void timer_shutdown(struct clock_event_device *evt) 117 { 118 writel(0, clkevt_base + TIMER_CTRL); 119 } 120 121 static int sp804_shutdown(struct clock_event_device *evt) 122 { 123 timer_shutdown(evt); 124 return 0; 125 } 126 127 static int sp804_set_periodic(struct clock_event_device *evt) 128 { 129 unsigned long ctrl = TIMER_CTRL_32BIT | TIMER_CTRL_IE | 130 TIMER_CTRL_PERIODIC | TIMER_CTRL_ENABLE; 131 132 timer_shutdown(evt); 133 writel(clkevt_reload, clkevt_base + TIMER_LOAD); 134 writel(ctrl, clkevt_base + TIMER_CTRL); 135 return 0; 136 } 137 138 static int sp804_set_next_event(unsigned long next, 139 struct clock_event_device *evt) 140 { 141 unsigned long ctrl = TIMER_CTRL_32BIT | TIMER_CTRL_IE | 142 TIMER_CTRL_ONESHOT | TIMER_CTRL_ENABLE; 143 144 writel(next, clkevt_base + TIMER_LOAD); 145 writel(ctrl, clkevt_base + TIMER_CTRL); 146 147 return 0; 148 } 149 150 static struct clock_event_device sp804_clockevent = { 151 .features = CLOCK_EVT_FEAT_PERIODIC | 152 CLOCK_EVT_FEAT_ONESHOT | 153 CLOCK_EVT_FEAT_DYNIRQ, 154 .set_state_shutdown = sp804_shutdown, 155 .set_state_periodic = sp804_set_periodic, 156 .set_state_oneshot = sp804_shutdown, 157 .tick_resume = sp804_shutdown, 158 .set_next_event = sp804_set_next_event, 159 .rating = 300, 160 }; 161 > 162 int __init sp804_clockevents_init(void __iomem *base, unsigned int irq, 163 struct clk *clk, const char *name) 164 { 165 struct clock_event_device *evt = &sp804_clockevent; 166 long rate; 167 168 rate = sp804_get_clock_rate(clk, name); 169 if (rate < 0) 170 return -EINVAL; 171 172 clkevt_base = base; 173 clkevt_reload = DIV_ROUND_CLOSEST(rate, HZ); 174 evt->name = name; 175 evt->irq = irq; 176 evt->cpumask = cpu_possible_mask; 177 178 writel(0, base + TIMER_CTRL); 179 180 if (request_irq(irq, sp804_timer_interrupt, IRQF_TIMER | IRQF_IRQPOLL, 181 "timer", &sp804_clockevent)) 182 pr_err("%s: request_irq() failed\n", "timer"); 183 clockevents_config_and_register(evt, rate, 0xf, 0xffffffff); 184 185 return 0; 186 } 187 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
.config.gz
Description: application/gzip