lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:   Sun, 31 Oct 2021 04:44:03 +0800
From:   kernel test robot <lkp@...el.com>
To:     Romain Perier <romain.perier@...il.com>
Cc:     kbuild-all@...ts.01.org, linux-kernel@...r.kernel.org
Subject: [chenxing:rperier-timer 14/16]
 drivers/clocksource/timer-msc313e.c:44:28: error: field 'delay' has
 incomplete type

tree:   git://github.com/linux-chenxing/linux.git rperier-timer
head:   2c2964b90b3016b69281286af5e9559ccb6fbbcc
commit: fcb8c30c9d205fa8600690505ee8df8ff9c37351 [14/16] clocksource: Add support for timekeeping on MStar MSC313e (WIP)
config: riscv-allyesconfig (attached as .config)
compiler: riscv64-linux-gcc (GCC) 11.2.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://github.com/linux-chenxing/linux/commit/fcb8c30c9d205fa8600690505ee8df8ff9c37351
        git remote add chenxing git://github.com/linux-chenxing/linux.git
        git fetch --no-tags chenxing rperier-timer
        git checkout fcb8c30c9d205fa8600690505ee8df8ff9c37351
        # save the attached .config to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=riscv SHELL=/bin/bash drivers/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@...el.com>

All errors (new ones prefixed by >>):

>> drivers/clocksource/timer-msc313e.c:44:28: error: field 'delay' has incomplete type
      44 |         struct delay_timer delay;
         |                            ^~~~~
   drivers/clocksource/timer-msc313e.c: In function 'msc313e_delay_init':
>> drivers/clocksource/timer-msc313e.c:209:9: error: implicit declaration of function 'register_current_timer_delay' [-Werror=implicit-function-declaration]
     209 |         register_current_timer_delay(&msc313e_delay->delay);
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   cc1: all warnings being treated as errors


vim +/delay +44 drivers/clocksource/timer-msc313e.c

    41	
    42	struct msc313e_delay {
    43		void __iomem * base;
  > 44		struct delay_timer delay;
    45	};
    46	
    47	static struct timer_of *msc313e_clkevt;
    48	static void __iomem *msc313e_clksrc;
    49	static struct msc313e_delay *msc313e_delay;
    50	
    51	#define to_msc313e_timer(ptr) container_of(ptr, struct msc313e_timer, clksrc)
    52	
    53	static int msc313e_timer_clkevt_shutdown(struct clock_event_device *evt)
    54	{
    55		struct timer_of *timer = to_timer_of(evt);
    56		u16 reg;
    57	
    58		pr_info("shutdown\n");
    59	
    60		reg = readw(timer->of_base.base + REG_CTRL);
    61		reg &= ~CTRL_ENABLE;
    62		writew(reg, timer->of_base.base + REG_CTRL);
    63	
    64		return 0;
    65	}
    66	
    67	static int msc313e_timer_clkevt_set_oneshot(struct clock_event_device *evt)
    68	{
    69		pr_info("%s: one shot\n", __func__);
    70	
    71		//result = readw_relaxed(timer->oftimer.of_base.base + REG_COUNTER_LOW);
    72	
    73		return 0;
    74	}
    75	
    76	static int msc313e_timer_set_periodic(struct clock_event_device *evt)
    77	{
    78		struct timer_of *timer = to_timer_of(evt);
    79	
    80		pr_info("periodic\n");
    81	
    82		writew(CTRL_ENABLE | CTRL_IRQ, timer->of_base.base + REG_CTRL);
    83		return 0;
    84	}
    85	
    86	static int msc313e_timer_clkevt_next_event(unsigned long evt, struct clock_event_device *clkevt)
    87	{
    88		pr_info("%s: next\n", __func__);
    89	
    90		return 0;
    91	}
    92	
    93	static irqreturn_t msc313e_timer_clkevt_irq(int irq, void *dev_id)
    94	{
    95		struct clock_event_device *evt = dev_id;
    96	
    97		evt->event_handler(evt);
    98	
    99		return IRQ_HANDLED;
   100	}
   101	
   102	static u64 msc313e_timer_read(struct clocksource *cs)
   103	{
   104		u64 result = 0;
   105		u16 low;
   106		u16 high;
   107	
   108		low  = readw(msc313e_clksrc + REG_COUNTER_LOW);
   109		high = readw(msc313e_clksrc + REG_COUNTER_HIGH);
   110	
   111		result = (high << 16 ) | low;
   112		return result & cs->mask;
   113	}
   114	
   115	static unsigned long msc313e_read_delay_timer_read(void)
   116	{
   117		unsigned long result;
   118	
   119		result = readw(msc313e_delay->base + REG_COUNTER_LOW);
   120		result |= readw(msc313e_delay->base + REG_COUNTER_HIGH) << 16;
   121	
   122		return result;
   123	}
   124	
   125	static u64 msc313e_timer_sched_clock_read(void)
   126	{
   127		u64 result;
   128	
   129		result = readw(msc313e_clksrc + REG_COUNTER_LOW);
   130		result |= readw(msc313e_clksrc + REG_COUNTER_HIGH) << 16;
   131	
   132		return result;
   133	}
   134	
   135	static int __init msc313e_clkevt_init(struct device_node *np)
   136	{
   137		int ret;
   138	
   139		msc313e_clkevt = kzalloc(sizeof(struct timer_of), GFP_KERNEL);
   140		if (!msc313e_clkevt)
   141			return -ENOMEM;
   142	
   143		msc313e_clkevt->flags = TIMER_OF_IRQ | TIMER_OF_CLOCK | TIMER_OF_BASE,
   144		msc313e_clkevt->clkevt.name = TIMER_NAME,
   145		msc313e_clkevt->clkevt.rating = 300,
   146		msc313e_clkevt->clkevt.features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT;
   147		msc313e_clkevt->clkevt.set_state_shutdown = msc313e_timer_clkevt_shutdown;
   148		msc313e_clkevt->clkevt.set_state_periodic = msc313e_timer_set_periodic;
   149		msc313e_clkevt->clkevt.set_state_oneshot = msc313e_timer_clkevt_set_oneshot;
   150		msc313e_clkevt->clkevt.tick_resume = msc313e_timer_clkevt_shutdown;
   151		msc313e_clkevt->clkevt.set_next_event = msc313e_timer_clkevt_next_event;
   152		msc313e_clkevt->clkevt.cpumask = cpu_possible_mask;
   153		msc313e_clkevt->of_irq.handler = msc313e_timer_clkevt_irq;
   154		msc313e_clkevt->of_irq.flags = IRQF_TIMER | IRQF_IRQPOLL;
   155	
   156		ret = timer_of_init(np, msc313e_clkevt);
   157		if (ret)
   158			return ret;
   159	
   160		clockevents_config_and_register(&msc313e_clkevt->clkevt, timer_of_rate(msc313e_clkevt),
   161						TIMER_SYNC_TICKS, 0xffffffff);
   162		return 0;
   163	}
   164	
   165	static int __init msc313e_clksrc_init(struct device_node *np)
   166	{
   167		struct timer_of to = { 0 };
   168		int ret;
   169		u16 reg;
   170	
   171		to.flags = TIMER_OF_BASE | TIMER_OF_CLOCK;
   172		ret = timer_of_init(np, &to);
   173		if (ret)
   174			return ret;
   175	
   176		msc313e_clksrc = timer_of_base(&to);
   177		reg = readw(msc313e_clksrc + REG_CTRL);
   178		reg |= CTRL_ENABLE;
   179		writew(reg, msc313e_clksrc + REG_CTRL);
   180	
   181		sched_clock_register(msc313e_timer_sched_clock_read, 32, timer_of_rate(&to));
   182		return clocksource_mmio_init(timer_of_base(&to), TIMER_NAME, timer_of_rate(&to), 300, 32,
   183					     msc313e_timer_read);
   184	}
   185	
   186	static int __init msc313e_delay_init(struct device_node *np)
   187	{
   188		struct timer_of to = { 0 };
   189		int ret;
   190		u16 reg;
   191	
   192		to.flags = TIMER_OF_BASE | TIMER_OF_CLOCK;
   193		ret = timer_of_init(np, &to);
   194		if (ret)
   195			return ret;
   196	
   197		msc313e_delay = kzalloc(sizeof(struct msc313e_delay), GFP_KERNEL);
   198		if (!msc313e_delay)
   199			return -ENOMEM;
   200	
   201		msc313e_delay->base = timer_of_base(&to);
   202		msc313e_delay->delay.read_current_timer = msc313e_read_delay_timer_read;
   203		msc313e_delay->delay.freq = timer_of_rate(&to);
   204	
   205		reg = readw(msc313e_delay->base + REG_CTRL);
   206		reg |= CTRL_ENABLE;
   207		writew(reg, msc313e_delay->base + REG_CTRL);
   208	
 > 209		register_current_timer_delay(&msc313e_delay->delay);
   210	
   211		return 0;
   212	}
   213	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

Download attachment ".config.gz" of type "application/gzip" (71104 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ