2019-07-22 13:34:24

by Bartosz Golaszewski

[permalink] [raw]
Subject: [RESEND PATCH 00/10] ARM: davinci: use the new clocksource driver

From: Bartosz Golaszewski <[email protected]>

Sekhar,

the following patches switch DaVinci to using the new clocksource driver which
is now upstream. They are rebased on top of v5.3-rc1. Additionally the
following two patches were reverted locally due to a regression in v5.3-rc1
about which the relevant maintainers have been already notified:

2eef1399a866 modules: fix BUG when load module with rodata=n
93651f80dcb6 modules: fix compile error if don't have strict module rwx

Bartosz Golaszewski (10):
ARM: davinci: enable the clocksource driver for DT mode
ARM: davinci: WARN_ON() if clk_get() fails
ARM: davinci: da850: switch to using the clocksource driver
ARM: davinci: da830: switch to using the clocksource driver
ARM: davinci: move timer definitions to davinci.h
ARM: davinci: dm355: switch to using the clocksource driver
ARM: davinci: dm365: switch to using the clocksource driver
ARM: davinci: dm644x: switch to using the clocksource driver
ARM: davinci: dm646x: switch to using the clocksource driver
ARM: davinci: remove legacy timer support

arch/arm/Kconfig | 1 +
arch/arm/mach-davinci/Makefile | 3 +-
arch/arm/mach-davinci/da830.c | 45 +--
arch/arm/mach-davinci/da850.c | 50 +--
arch/arm/mach-davinci/davinci.h | 3 +
arch/arm/mach-davinci/devices-da8xx.c | 1 -
arch/arm/mach-davinci/devices.c | 19 -
arch/arm/mach-davinci/dm355.c | 28 +-
arch/arm/mach-davinci/dm365.c | 26 +-
arch/arm/mach-davinci/dm644x.c | 28 +-
arch/arm/mach-davinci/dm646x.c | 28 +-
arch/arm/mach-davinci/include/mach/common.h | 17 -
arch/arm/mach-davinci/include/mach/time.h | 35 --
arch/arm/mach-davinci/time.c | 414 --------------------
14 files changed, 110 insertions(+), 588 deletions(-)
delete mode 100644 arch/arm/mach-davinci/include/mach/time.h
delete mode 100644 arch/arm/mach-davinci/time.c

--
2.21.0


2019-07-22 15:46:35

by Bartosz Golaszewski

[permalink] [raw]
Subject: [RESEND PATCH 01/10] ARM: davinci: enable the clocksource driver for DT mode

From: Bartosz Golaszewski <[email protected]>

Switch all davinci boards supporting device tree to using the new
clocksource driver: remove the previous OF_TIMER_DECLARE() from
mach-davinci and select davinci-timer for ARCH_DAVINCI.

Signed-off-by: Bartosz Golaszewski <[email protected]>
Reviewed-by: David Lechner <[email protected]>
---
arch/arm/Kconfig | 1 +
arch/arm/mach-davinci/time.c | 14 --------------
2 files changed, 1 insertion(+), 14 deletions(-)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 33b00579beff..92ff58be1a43 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -583,6 +583,7 @@ config ARCH_DAVINCI
select ARCH_HAS_HOLES_MEMORYMODEL
select COMMON_CLK
select CPU_ARM926T
+ select DAVINCI_TIMER
select GENERIC_ALLOCATOR
select GENERIC_CLOCKEVENTS
select GENERIC_IRQ_CHIP
diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c
index 5a6de5368ab0..740410a3bb6a 100644
--- a/arch/arm/mach-davinci/time.c
+++ b/arch/arm/mach-davinci/time.c
@@ -398,17 +398,3 @@ void __init davinci_timer_init(struct clk *timer_clk)
for (i=0; i< ARRAY_SIZE(timers); i++)
timer32_config(&timers[i]);
}
-
-static int __init of_davinci_timer_init(struct device_node *np)
-{
- struct clk *clk;
-
- clk = of_clk_get(np, 0);
- if (IS_ERR(clk))
- return PTR_ERR(clk);
-
- davinci_timer_init(clk);
-
- return 0;
-}
-TIMER_OF_DECLARE(davinci_timer, "ti,da830-timer", of_davinci_timer_init);
--
2.21.0

2019-07-22 15:46:38

by Bartosz Golaszewski

[permalink] [raw]
Subject: [RESEND PATCH 10/10] ARM: davinci: remove legacy timer support

From: Bartosz Golaszewski <[email protected]>

All platforms have now been switched to the new clocksource driver.
Remove the old code and various no longer needed bits and pieces.

Signed-off-by: Bartosz Golaszewski <[email protected]>
Reviewed-by: David Lechner <[email protected]>
---
arch/arm/mach-davinci/Makefile | 3 +-
arch/arm/mach-davinci/devices-da8xx.c | 1 -
arch/arm/mach-davinci/devices.c | 19 -
arch/arm/mach-davinci/include/mach/common.h | 17 -
arch/arm/mach-davinci/include/mach/time.h | 33 --
arch/arm/mach-davinci/time.c | 400 --------------------
6 files changed, 1 insertion(+), 472 deletions(-)
delete mode 100644 arch/arm/mach-davinci/include/mach/time.h
delete mode 100644 arch/arm/mach-davinci/time.c

diff --git a/arch/arm/mach-davinci/Makefile b/arch/arm/mach-davinci/Makefile
index f76a8482784f..d9af8c0c0b87 100644
--- a/arch/arm/mach-davinci/Makefile
+++ b/arch/arm/mach-davinci/Makefile
@@ -5,8 +5,7 @@
#

# Common objects
-obj-y := time.o serial.o usb.o \
- common.o sram.o
+obj-y := serial.o usb.o common.o sram.o

obj-$(CONFIG_DAVINCI_MUX) += mux.o

diff --git a/arch/arm/mach-davinci/devices-da8xx.c b/arch/arm/mach-davinci/devices-da8xx.c
index 2d69e704f7f6..feb206bdf6e1 100644
--- a/arch/arm/mach-davinci/devices-da8xx.c
+++ b/arch/arm/mach-davinci/devices-da8xx.c
@@ -21,7 +21,6 @@
#include <mach/common.h>
#include <mach/cputype.h>
#include <mach/da8xx.h>
-#include <mach/time.h>

#include "asp.h"
#include "cpuidle.h"
diff --git a/arch/arm/mach-davinci/devices.c b/arch/arm/mach-davinci/devices.c
index 3e447d468845..d912d62a0eca 100644
--- a/arch/arm/mach-davinci/devices.c
+++ b/arch/arm/mach-davinci/devices.c
@@ -17,7 +17,6 @@
#include <mach/hardware.h>
#include <mach/cputype.h>
#include <mach/mux.h>
-#include <mach/time.h>

#include "davinci.h"
#include "irqs.h"
@@ -303,21 +302,3 @@ int davinci_gpio_register(struct resource *res, int size, void *pdata)
davinci_gpio_device.dev.platform_data = pdata;
return platform_device_register(&davinci_gpio_device);
}
-
-/*-------------------------------------------------------------------------*/
-
-/*-------------------------------------------------------------------------*/
-
-struct davinci_timer_instance davinci_timer_instance[2] = {
- {
- .base = DAVINCI_TIMER0_BASE,
- .bottom_irq = DAVINCI_INTC_IRQ(IRQ_TINT0_TINT12),
- .top_irq = DAVINCI_INTC_IRQ(IRQ_TINT0_TINT34),
- },
- {
- .base = DAVINCI_TIMER1_BASE,
- .bottom_irq = DAVINCI_INTC_IRQ(IRQ_TINT1_TINT12),
- .top_irq = DAVINCI_INTC_IRQ(IRQ_TINT1_TINT34),
- },
-};
-
diff --git a/arch/arm/mach-davinci/include/mach/common.h b/arch/arm/mach-davinci/include/mach/common.h
index 9526e5da0d33..139b83de011d 100644
--- a/arch/arm/mach-davinci/include/mach/common.h
+++ b/arch/arm/mach-davinci/include/mach/common.h
@@ -22,22 +22,6 @@
#define DAVINCI_INTC_START NR_IRQS
#define DAVINCI_INTC_IRQ(_irqnum) (DAVINCI_INTC_START + (_irqnum))

-void davinci_timer_init(struct clk *clk);
-
-struct davinci_timer_instance {
- u32 base;
- u32 bottom_irq;
- u32 top_irq;
- unsigned long cmp_off;
- unsigned int cmp_irq;
-};
-
-struct davinci_timer_info {
- struct davinci_timer_instance *timers;
- unsigned int clockevent_id;
- unsigned int clocksource_id;
-};
-
struct davinci_gpio_controller;

/*
@@ -58,7 +42,6 @@ struct davinci_soc_info {
u32 pinmux_base;
const struct mux_config *pinmux_pins;
unsigned long pinmux_pins_num;
- struct davinci_timer_info *timer_info;
int gpio_type;
u32 gpio_base;
unsigned gpio_num;
diff --git a/arch/arm/mach-davinci/include/mach/time.h b/arch/arm/mach-davinci/include/mach/time.h
deleted file mode 100644
index ba913736990f..000000000000
--- a/arch/arm/mach-davinci/include/mach/time.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Local header file for DaVinci time code.
- *
- * Author: Kevin Hilman, MontaVista Software, Inc. <[email protected]>
- *
- * 2007 (c) MontaVista Software, Inc. This file is licensed under
- * the terms of the GNU General Public License version 2. This program
- * is licensed "as is" without any warranty of any kind, whether express
- * or implied.
- */
-#ifndef __ARCH_ARM_MACH_DAVINCI_TIME_H
-#define __ARCH_ARM_MACH_DAVINCI_TIME_H
-
-#define DAVINCI_TIMER1_BASE (IO_PHYS + 0x21800)
-
-enum {
- T0_BOT,
- T0_TOP,
- T1_BOT,
- T1_TOP,
- NUM_TIMERS
-};
-
-#define IS_TIMER1(id) (id & 0x2)
-#define IS_TIMER0(id) (!IS_TIMER1(id))
-#define IS_TIMER_TOP(id) ((id & 0x1))
-#define IS_TIMER_BOT(id) (!IS_TIMER_TOP(id))
-
-#define ID_TO_TIMER(id) (IS_TIMER1(id) != 0)
-
-extern struct davinci_timer_instance davinci_timer_instance[];
-
-#endif /* __ARCH_ARM_MACH_DAVINCI_TIME_H */
diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c
deleted file mode 100644
index 740410a3bb6a..000000000000
--- a/arch/arm/mach-davinci/time.c
+++ /dev/null
@@ -1,400 +0,0 @@
-/*
- * DaVinci timer subsystem
- *
- * Author: Kevin Hilman, MontaVista Software, Inc. <[email protected]>
- *
- * 2007 (c) MontaVista Software, Inc. This file is licensed under
- * the terms of the GNU General Public License version 2. This program
- * is licensed "as is" without any warranty of any kind, whether express
- * or implied.
- */
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/types.h>
-#include <linux/interrupt.h>
-#include <linux/clocksource.h>
-#include <linux/clockchips.h>
-#include <linux/io.h>
-#include <linux/clk.h>
-#include <linux/err.h>
-#include <linux/of.h>
-#include <linux/platform_device.h>
-#include <linux/sched_clock.h>
-
-#include <asm/mach/irq.h>
-#include <asm/mach/time.h>
-
-#include <mach/cputype.h>
-#include <mach/hardware.h>
-#include <mach/time.h>
-
-static struct clock_event_device clockevent_davinci;
-static unsigned int davinci_clock_tick_rate;
-
-/*
- * This driver configures the 2 64-bit count-up timers as 4 independent
- * 32-bit count-up timers used as follows:
- */
-
-enum {
- TID_CLOCKEVENT,
- TID_CLOCKSOURCE,
-};
-
-/* Timer register offsets */
-#define PID12 0x0
-#define TIM12 0x10
-#define TIM34 0x14
-#define PRD12 0x18
-#define PRD34 0x1c
-#define TCR 0x20
-#define TGCR 0x24
-#define WDTCR 0x28
-
-/* Offsets of the 8 compare registers */
-#define CMP12_0 0x60
-#define CMP12_1 0x64
-#define CMP12_2 0x68
-#define CMP12_3 0x6c
-#define CMP12_4 0x70
-#define CMP12_5 0x74
-#define CMP12_6 0x78
-#define CMP12_7 0x7c
-
-/* Timer register bitfields */
-#define TCR_ENAMODE_DISABLE 0x0
-#define TCR_ENAMODE_ONESHOT 0x1
-#define TCR_ENAMODE_PERIODIC 0x2
-#define TCR_ENAMODE_MASK 0x3
-
-#define TGCR_TIMMODE_SHIFT 2
-#define TGCR_TIMMODE_64BIT_GP 0x0
-#define TGCR_TIMMODE_32BIT_UNCHAINED 0x1
-#define TGCR_TIMMODE_64BIT_WDOG 0x2
-#define TGCR_TIMMODE_32BIT_CHAINED 0x3
-
-#define TGCR_TIM12RS_SHIFT 0
-#define TGCR_TIM34RS_SHIFT 1
-#define TGCR_RESET 0x0
-#define TGCR_UNRESET 0x1
-#define TGCR_RESET_MASK 0x3
-
-struct timer_s {
- char *name;
- unsigned int id;
- unsigned long period;
- unsigned long opts;
- unsigned long flags;
- void __iomem *base;
- unsigned long tim_off;
- unsigned long prd_off;
- unsigned long enamode_shift;
- struct irqaction irqaction;
-};
-static struct timer_s timers[];
-
-/* values for 'opts' field of struct timer_s */
-#define TIMER_OPTS_DISABLED 0x01
-#define TIMER_OPTS_ONESHOT 0x02
-#define TIMER_OPTS_PERIODIC 0x04
-#define TIMER_OPTS_STATE_MASK 0x07
-
-#define TIMER_OPTS_USE_COMPARE 0x80000000
-#define USING_COMPARE(t) ((t)->opts & TIMER_OPTS_USE_COMPARE)
-
-static char *id_to_name[] = {
- [T0_BOT] = "timer0_0",
- [T0_TOP] = "timer0_1",
- [T1_BOT] = "timer1_0",
- [T1_TOP] = "timer1_1",
-};
-
-static int timer32_config(struct timer_s *t)
-{
- u32 tcr;
- struct davinci_soc_info *soc_info = &davinci_soc_info;
-
- if (USING_COMPARE(t)) {
- struct davinci_timer_instance *dtip =
- soc_info->timer_info->timers;
- int event_timer = ID_TO_TIMER(timers[TID_CLOCKEVENT].id);
-
- /*
- * Next interrupt should be the current time reg value plus
- * the new period (using 32-bit unsigned addition/wrapping
- * to 0 on overflow). This assumes that the clocksource
- * is setup to count to 2^32-1 before wrapping around to 0.
- */
- __raw_writel(__raw_readl(t->base + t->tim_off) + t->period,
- t->base + dtip[event_timer].cmp_off);
- } else {
- tcr = __raw_readl(t->base + TCR);
-
- /* disable timer */
- tcr &= ~(TCR_ENAMODE_MASK << t->enamode_shift);
- __raw_writel(tcr, t->base + TCR);
-
- /* reset counter to zero, set new period */
- __raw_writel(0, t->base + t->tim_off);
- __raw_writel(t->period, t->base + t->prd_off);
-
- /* Set enable mode */
- if (t->opts & TIMER_OPTS_ONESHOT)
- tcr |= TCR_ENAMODE_ONESHOT << t->enamode_shift;
- else if (t->opts & TIMER_OPTS_PERIODIC)
- tcr |= TCR_ENAMODE_PERIODIC << t->enamode_shift;
-
- __raw_writel(tcr, t->base + TCR);
- }
- return 0;
-}
-
-static inline u32 timer32_read(struct timer_s *t)
-{
- return __raw_readl(t->base + t->tim_off);
-}
-
-static irqreturn_t timer_interrupt(int irq, void *dev_id)
-{
- struct clock_event_device *evt = &clockevent_davinci;
-
- evt->event_handler(evt);
- return IRQ_HANDLED;
-}
-
-/* called when 32-bit counter wraps */
-static irqreturn_t freerun_interrupt(int irq, void *dev_id)
-{
- return IRQ_HANDLED;
-}
-
-static struct timer_s timers[] = {
- [TID_CLOCKEVENT] = {
- .name = "clockevent",
- .opts = TIMER_OPTS_DISABLED,
- .irqaction = {
- .flags = IRQF_TIMER,
- .handler = timer_interrupt,
- }
- },
- [TID_CLOCKSOURCE] = {
- .name = "free-run counter",
- .period = ~0,
- .opts = TIMER_OPTS_PERIODIC,
- .irqaction = {
- .flags = IRQF_TIMER,
- .handler = freerun_interrupt,
- }
- },
-};
-
-static void __init timer_init(void)
-{
- struct davinci_soc_info *soc_info = &davinci_soc_info;
- struct davinci_timer_instance *dtip = soc_info->timer_info->timers;
- void __iomem *base[2];
- int i;
-
- /* Global init of each 64-bit timer as a whole */
- for(i=0; i<2; i++) {
- u32 tgcr;
-
- base[i] = ioremap(dtip[i].base, SZ_4K);
- if (WARN_ON(!base[i]))
- continue;
-
- /* Disabled, Internal clock source */
- __raw_writel(0, base[i] + TCR);
-
- /* reset both timers, no pre-scaler for timer34 */
- tgcr = 0;
- __raw_writel(tgcr, base[i] + TGCR);
-
- /* Set both timers to unchained 32-bit */
- tgcr = TGCR_TIMMODE_32BIT_UNCHAINED << TGCR_TIMMODE_SHIFT;
- __raw_writel(tgcr, base[i] + TGCR);
-
- /* Unreset timers */
- tgcr |= (TGCR_UNRESET << TGCR_TIM12RS_SHIFT) |
- (TGCR_UNRESET << TGCR_TIM34RS_SHIFT);
- __raw_writel(tgcr, base[i] + TGCR);
-
- /* Init both counters to zero */
- __raw_writel(0, base[i] + TIM12);
- __raw_writel(0, base[i] + TIM34);
- }
-
- /* Init of each timer as a 32-bit timer */
- for (i=0; i< ARRAY_SIZE(timers); i++) {
- struct timer_s *t = &timers[i];
- int timer = ID_TO_TIMER(t->id);
- u32 irq;
-
- t->base = base[timer];
- if (!t->base)
- continue;
-
- if (IS_TIMER_BOT(t->id)) {
- t->enamode_shift = 6;
- t->tim_off = TIM12;
- t->prd_off = PRD12;
- irq = dtip[timer].bottom_irq;
- } else {
- t->enamode_shift = 22;
- t->tim_off = TIM34;
- t->prd_off = PRD34;
- irq = dtip[timer].top_irq;
- }
-
- /* Register interrupt */
- t->irqaction.name = t->name;
- t->irqaction.dev_id = (void *)t;
-
- if (t->irqaction.handler != NULL) {
- irq = USING_COMPARE(t) ? dtip[i].cmp_irq : irq;
- setup_irq(irq, &t->irqaction);
- }
- }
-}
-
-/*
- * clocksource
- */
-static u64 read_cycles(struct clocksource *cs)
-{
- struct timer_s *t = &timers[TID_CLOCKSOURCE];
-
- return (cycles_t)timer32_read(t);
-}
-
-static struct clocksource clocksource_davinci = {
- .rating = 300,
- .read = read_cycles,
- .mask = CLOCKSOURCE_MASK(32),
- .flags = CLOCK_SOURCE_IS_CONTINUOUS,
-};
-
-/*
- * Overwrite weak default sched_clock with something more precise
- */
-static u64 notrace davinci_read_sched_clock(void)
-{
- return timer32_read(&timers[TID_CLOCKSOURCE]);
-}
-
-/*
- * clockevent
- */
-static int davinci_set_next_event(unsigned long cycles,
- struct clock_event_device *evt)
-{
- struct timer_s *t = &timers[TID_CLOCKEVENT];
-
- t->period = cycles;
- timer32_config(t);
- return 0;
-}
-
-static int davinci_shutdown(struct clock_event_device *evt)
-{
- struct timer_s *t = &timers[TID_CLOCKEVENT];
-
- t->opts &= ~TIMER_OPTS_STATE_MASK;
- t->opts |= TIMER_OPTS_DISABLED;
- return 0;
-}
-
-static int davinci_set_oneshot(struct clock_event_device *evt)
-{
- struct timer_s *t = &timers[TID_CLOCKEVENT];
-
- t->opts &= ~TIMER_OPTS_STATE_MASK;
- t->opts |= TIMER_OPTS_ONESHOT;
- return 0;
-}
-
-static int davinci_set_periodic(struct clock_event_device *evt)
-{
- struct timer_s *t = &timers[TID_CLOCKEVENT];
-
- t->period = davinci_clock_tick_rate / (HZ);
- t->opts &= ~TIMER_OPTS_STATE_MASK;
- t->opts |= TIMER_OPTS_PERIODIC;
- timer32_config(t);
- return 0;
-}
-
-static struct clock_event_device clockevent_davinci = {
- .features = CLOCK_EVT_FEAT_PERIODIC |
- CLOCK_EVT_FEAT_ONESHOT,
- .set_next_event = davinci_set_next_event,
- .set_state_shutdown = davinci_shutdown,
- .set_state_periodic = davinci_set_periodic,
- .set_state_oneshot = davinci_set_oneshot,
-};
-
-void __init davinci_timer_init(struct clk *timer_clk)
-{
- struct davinci_soc_info *soc_info = &davinci_soc_info;
- unsigned int clockevent_id;
- unsigned int clocksource_id;
- int i;
-
- clockevent_id = soc_info->timer_info->clockevent_id;
- clocksource_id = soc_info->timer_info->clocksource_id;
-
- timers[TID_CLOCKEVENT].id = clockevent_id;
- timers[TID_CLOCKSOURCE].id = clocksource_id;
-
- /*
- * If using same timer for both clock events & clocksource,
- * a compare register must be used to generate an event interrupt.
- * This is equivalent to a oneshot timer only (not periodic).
- */
- if (clockevent_id == clocksource_id) {
- struct davinci_timer_instance *dtip =
- soc_info->timer_info->timers;
- int event_timer = ID_TO_TIMER(clockevent_id);
-
- /* Only bottom timers can use compare regs */
- if (IS_TIMER_TOP(clockevent_id))
- pr_warn("%s: Invalid use of system timers. Results unpredictable.\n",
- __func__);
- else if ((dtip[event_timer].cmp_off == 0)
- || (dtip[event_timer].cmp_irq == 0))
- pr_warn("%s: Invalid timer instance setup. Results unpredictable.\n",
- __func__);
- else {
- timers[TID_CLOCKEVENT].opts |= TIMER_OPTS_USE_COMPARE;
- clockevent_davinci.features = CLOCK_EVT_FEAT_ONESHOT;
- }
- }
-
- BUG_ON(IS_ERR(timer_clk));
- clk_prepare_enable(timer_clk);
-
- /* init timer hw */
- timer_init();
-
- davinci_clock_tick_rate = clk_get_rate(timer_clk);
-
- /* setup clocksource */
- clocksource_davinci.name = id_to_name[clocksource_id];
- if (clocksource_register_hz(&clocksource_davinci,
- davinci_clock_tick_rate))
- pr_err("%s: can't register clocksource!\n",
- clocksource_davinci.name);
-
- sched_clock_register(davinci_read_sched_clock, 32,
- davinci_clock_tick_rate);
-
- /* setup clockevent */
- clockevent_davinci.name = id_to_name[timers[TID_CLOCKEVENT].id];
-
- clockevent_davinci.cpumask = cpumask_of(0);
- clockevents_config_and_register(&clockevent_davinci,
- davinci_clock_tick_rate, 1, 0xfffffffe);
-
- for (i=0; i< ARRAY_SIZE(timers); i++)
- timer32_config(&timers[i]);
-}
--
2.21.0

2019-08-05 08:31:46

by Bartosz Golaszewski

[permalink] [raw]
Subject: Re: [RESEND PATCH 00/10] ARM: davinci: use the new clocksource driver

pon., 22 lip 2019 o 15:17 Bartosz Golaszewski <[email protected]> napisał(a):
>
> From: Bartosz Golaszewski <[email protected]>
>
> Sekhar,
>
> the following patches switch DaVinci to using the new clocksource driver which
> is now upstream. They are rebased on top of v5.3-rc1. Additionally the
> following two patches were reverted locally due to a regression in v5.3-rc1
> about which the relevant maintainers have been already notified:
>
> 2eef1399a866 modules: fix BUG when load module with rodata=n
> 93651f80dcb6 modules: fix compile error if don't have strict module rwx
>
> Bartosz Golaszewski (10):
> ARM: davinci: enable the clocksource driver for DT mode
> ARM: davinci: WARN_ON() if clk_get() fails
> ARM: davinci: da850: switch to using the clocksource driver
> ARM: davinci: da830: switch to using the clocksource driver
> ARM: davinci: move timer definitions to davinci.h
> ARM: davinci: dm355: switch to using the clocksource driver
> ARM: davinci: dm365: switch to using the clocksource driver
> ARM: davinci: dm644x: switch to using the clocksource driver
> ARM: davinci: dm646x: switch to using the clocksource driver
> ARM: davinci: remove legacy timer support
>
> arch/arm/Kconfig | 1 +
> arch/arm/mach-davinci/Makefile | 3 +-
> arch/arm/mach-davinci/da830.c | 45 +--
> arch/arm/mach-davinci/da850.c | 50 +--
> arch/arm/mach-davinci/davinci.h | 3 +
> arch/arm/mach-davinci/devices-da8xx.c | 1 -
> arch/arm/mach-davinci/devices.c | 19 -
> arch/arm/mach-davinci/dm355.c | 28 +-
> arch/arm/mach-davinci/dm365.c | 26 +-
> arch/arm/mach-davinci/dm644x.c | 28 +-
> arch/arm/mach-davinci/dm646x.c | 28 +-
> arch/arm/mach-davinci/include/mach/common.h | 17 -
> arch/arm/mach-davinci/include/mach/time.h | 35 --
> arch/arm/mach-davinci/time.c | 414 --------------------
> 14 files changed, 110 insertions(+), 588 deletions(-)
> delete mode 100644 arch/arm/mach-davinci/include/mach/time.h
> delete mode 100644 arch/arm/mach-davinci/time.c
>
> --
> 2.21.0
>

Hi Sekhar,

a gentle ping. Is this series good to go in for v5.4?

Bart

2019-08-07 19:47:41

by Sekhar Nori

[permalink] [raw]
Subject: Re: [RESEND PATCH 00/10] ARM: davinci: use the new clocksource driver

On 05/08/19 1:59 PM, Bartosz Golaszewski wrote:
> pon., 22 lip 2019 o 15:17 Bartosz Golaszewski <[email protected]> napisał(a):
>>
>> From: Bartosz Golaszewski <[email protected]>
>>
>> Sekhar,
>>
>> the following patches switch DaVinci to using the new clocksource driver which
>> is now upstream. They are rebased on top of v5.3-rc1. Additionally the
>> following two patches were reverted locally due to a regression in v5.3-rc1
>> about which the relevant maintainers have been already notified:
>>
>> 2eef1399a866 modules: fix BUG when load module with rodata=n
>> 93651f80dcb6 modules: fix compile error if don't have strict module rwx
>>
>> Bartosz Golaszewski (10):
>> ARM: davinci: enable the clocksource driver for DT mode
>> ARM: davinci: WARN_ON() if clk_get() fails
>> ARM: davinci: da850: switch to using the clocksource driver
>> ARM: davinci: da830: switch to using the clocksource driver
>> ARM: davinci: move timer definitions to davinci.h
>> ARM: davinci: dm355: switch to using the clocksource driver
>> ARM: davinci: dm365: switch to using the clocksource driver
>> ARM: davinci: dm644x: switch to using the clocksource driver
>> ARM: davinci: dm646x: switch to using the clocksource driver
>> ARM: davinci: remove legacy timer support
>>
>> arch/arm/Kconfig | 1 +
>> arch/arm/mach-davinci/Makefile | 3 +-
>> arch/arm/mach-davinci/da830.c | 45 +--
>> arch/arm/mach-davinci/da850.c | 50 +--
>> arch/arm/mach-davinci/davinci.h | 3 +
>> arch/arm/mach-davinci/devices-da8xx.c | 1 -
>> arch/arm/mach-davinci/devices.c | 19 -
>> arch/arm/mach-davinci/dm355.c | 28 +-
>> arch/arm/mach-davinci/dm365.c | 26 +-
>> arch/arm/mach-davinci/dm644x.c | 28 +-
>> arch/arm/mach-davinci/dm646x.c | 28 +-
>> arch/arm/mach-davinci/include/mach/common.h | 17 -
>> arch/arm/mach-davinci/include/mach/time.h | 35 --
>> arch/arm/mach-davinci/time.c | 414 --------------------
>> 14 files changed, 110 insertions(+), 588 deletions(-)
>> delete mode 100644 arch/arm/mach-davinci/include/mach/time.h
>> delete mode 100644 arch/arm/mach-davinci/time.c
>>
>> --
>> 2.21.0
>>
>
> Hi Sekhar,
>
> a gentle ping. Is this series good to go in for v5.4?

Hi Bartosz, a quick test shows that DM365 fails to boot after this. Can
you please see if there is anything obviously wrong for that SoC. Rest
seems to be okay.

Thanks,
Sekhar

2019-08-08 08:36:38

by Bartosz Golaszewski

[permalink] [raw]
Subject: Re: [RESEND PATCH 00/10] ARM: davinci: use the new clocksource driver

śr., 7 sie 2019 o 21:28 Sekhar Nori <[email protected]> napisał(a):
>
> On 05/08/19 1:59 PM, Bartosz Golaszewski wrote:
> > pon., 22 lip 2019 o 15:17 Bartosz Golaszewski <[email protected]> napisał(a):
> >>
> >> From: Bartosz Golaszewski <[email protected]>
> >>
> >> Sekhar,
> >>
> >> the following patches switch DaVinci to using the new clocksource driver which
> >> is now upstream. They are rebased on top of v5.3-rc1. Additionally the
> >> following two patches were reverted locally due to a regression in v5.3-rc1
> >> about which the relevant maintainers have been already notified:
> >>
> >> 2eef1399a866 modules: fix BUG when load module with rodata=n
> >> 93651f80dcb6 modules: fix compile error if don't have strict module rwx
> >>
> >> Bartosz Golaszewski (10):
> >> ARM: davinci: enable the clocksource driver for DT mode
> >> ARM: davinci: WARN_ON() if clk_get() fails
> >> ARM: davinci: da850: switch to using the clocksource driver
> >> ARM: davinci: da830: switch to using the clocksource driver
> >> ARM: davinci: move timer definitions to davinci.h
> >> ARM: davinci: dm355: switch to using the clocksource driver
> >> ARM: davinci: dm365: switch to using the clocksource driver
> >> ARM: davinci: dm644x: switch to using the clocksource driver
> >> ARM: davinci: dm646x: switch to using the clocksource driver
> >> ARM: davinci: remove legacy timer support
> >>
> >> arch/arm/Kconfig | 1 +
> >> arch/arm/mach-davinci/Makefile | 3 +-
> >> arch/arm/mach-davinci/da830.c | 45 +--
> >> arch/arm/mach-davinci/da850.c | 50 +--
> >> arch/arm/mach-davinci/davinci.h | 3 +
> >> arch/arm/mach-davinci/devices-da8xx.c | 1 -
> >> arch/arm/mach-davinci/devices.c | 19 -
> >> arch/arm/mach-davinci/dm355.c | 28 +-
> >> arch/arm/mach-davinci/dm365.c | 26 +-
> >> arch/arm/mach-davinci/dm644x.c | 28 +-
> >> arch/arm/mach-davinci/dm646x.c | 28 +-
> >> arch/arm/mach-davinci/include/mach/common.h | 17 -
> >> arch/arm/mach-davinci/include/mach/time.h | 35 --
> >> arch/arm/mach-davinci/time.c | 414 --------------------
> >> 14 files changed, 110 insertions(+), 588 deletions(-)
> >> delete mode 100644 arch/arm/mach-davinci/include/mach/time.h
> >> delete mode 100644 arch/arm/mach-davinci/time.c
> >>
> >> --
> >> 2.21.0
> >>
> >
> > Hi Sekhar,
> >
> > a gentle ping. Is this series good to go in for v5.4?
>
> Hi Bartosz, a quick test shows that DM365 fails to boot after this. Can
> you please see if there is anything obviously wrong for that SoC. Rest
> seems to be okay.
>
> Thanks,
> Sekhar

Hi Sekhar,

just verified on Kevin's dm365-evm rebased on top of v5.3-rc3 and it
boots fine. I know that davinci failed to boot at v5.3-rc1.

Let me know if I can help with debugging.

Bart

2019-08-26 13:34:21

by Sekhar Nori

[permalink] [raw]
Subject: Re: [RESEND PATCH 00/10] ARM: davinci: use the new clocksource driver

On 08/08/19 1:11 PM, Bartosz Golaszewski wrote:
> śr., 7 sie 2019 o 21:28 Sekhar Nori <[email protected]> napisał(a):
>>
>> On 05/08/19 1:59 PM, Bartosz Golaszewski wrote:
>>> pon., 22 lip 2019 o 15:17 Bartosz Golaszewski <[email protected]> napisał(a):
>>>>
>>>> From: Bartosz Golaszewski <[email protected]>
>>>>
>>>> Sekhar,
>>>>
>>>> the following patches switch DaVinci to using the new clocksource driver which
>>>> is now upstream. They are rebased on top of v5.3-rc1. Additionally the
>>>> following two patches were reverted locally due to a regression in v5.3-rc1
>>>> about which the relevant maintainers have been already notified:
>>>>
>>>> 2eef1399a866 modules: fix BUG when load module with rodata=n
>>>> 93651f80dcb6 modules: fix compile error if don't have strict module rwx
>>>>
>>>> Bartosz Golaszewski (10):
>>>> ARM: davinci: enable the clocksource driver for DT mode
>>>> ARM: davinci: WARN_ON() if clk_get() fails
>>>> ARM: davinci: da850: switch to using the clocksource driver
>>>> ARM: davinci: da830: switch to using the clocksource driver
>>>> ARM: davinci: move timer definitions to davinci.h
>>>> ARM: davinci: dm355: switch to using the clocksource driver
>>>> ARM: davinci: dm365: switch to using the clocksource driver
>>>> ARM: davinci: dm644x: switch to using the clocksource driver
>>>> ARM: davinci: dm646x: switch to using the clocksource driver
>>>> ARM: davinci: remove legacy timer support
>>>>
>>>> arch/arm/Kconfig | 1 +
>>>> arch/arm/mach-davinci/Makefile | 3 +-
>>>> arch/arm/mach-davinci/da830.c | 45 +--
>>>> arch/arm/mach-davinci/da850.c | 50 +--
>>>> arch/arm/mach-davinci/davinci.h | 3 +
>>>> arch/arm/mach-davinci/devices-da8xx.c | 1 -
>>>> arch/arm/mach-davinci/devices.c | 19 -
>>>> arch/arm/mach-davinci/dm355.c | 28 +-
>>>> arch/arm/mach-davinci/dm365.c | 26 +-
>>>> arch/arm/mach-davinci/dm644x.c | 28 +-
>>>> arch/arm/mach-davinci/dm646x.c | 28 +-
>>>> arch/arm/mach-davinci/include/mach/common.h | 17 -
>>>> arch/arm/mach-davinci/include/mach/time.h | 35 --
>>>> arch/arm/mach-davinci/time.c | 414 --------------------
>>>> 14 files changed, 110 insertions(+), 588 deletions(-)
>>>> delete mode 100644 arch/arm/mach-davinci/include/mach/time.h
>>>> delete mode 100644 arch/arm/mach-davinci/time.c
>>>>
>>>> --
>>>> 2.21.0
>>>>
>>>
>>> Hi Sekhar,
>>>
>>> a gentle ping. Is this series good to go in for v5.4?
>>
>> Hi Bartosz, a quick test shows that DM365 fails to boot after this. Can
>> you please see if there is anything obviously wrong for that SoC. Rest
>> seems to be okay.
>>
>> Thanks,
>> Sekhar
>
> Hi Sekhar,
>
> just verified on Kevin's dm365-evm rebased on top of v5.3-rc3 and it
> boots fine. I know that davinci failed to boot at v5.3-rc1.
>
> Let me know if I can help with debugging.

Added series except 7/10 and 10/10 to v5.4/soc. Debug of DM365 issue is
still going on offline. DM365 migration is postponed pending conclusion
of that debug.

Thanks,
Sekhar