Message ID | 1418245000.23374.26.camel@t520.localdomain (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, Dec 10, 2014 at 12:56 PM, Mark Salter <msalter@redhat.com> wrote: > Using Linus' tree from this morning, I am hitting: > > [ 0.000000] BUG: failure at ./arch/arm64/include/asm/arch_timer.h:112/arch_counter_get_cntpct! > > This is triggered by commit 0b46b8a718 ("clocksource: arch_timer: Fix > code to use physical timers when requested") which addresses an armv7 > problem. Arm64 wants to always use a virtual timer. I used this to avoid > the BUG and get a booting kernel: > > diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch > index 71846f9..4d8a01e 100644 > --- a/drivers/clocksource/arm_arch_timer.c > +++ b/drivers/clocksource/arm_arch_timer.c > @@ -468,7 +468,7 @@ static void __init arch_counter_register(unsigned type) > > /* Register the CP15 based counter if we have one */ > if (type & ARCH_CP15_TIMER) { > - if (arch_timer_use_virtual) > + if (IS_ENABLED(CONFIG_ARM64) || arch_timer_use_virtual) > arch_timer_read_counter = arch_counter_get_cntvct; > else > arch_timer_read_counter = arch_counter_get_cntpct; > > Yes Catalin has prepared a similar patch: https://patchwork.kernel.org/patch/5468031/
On Wed, Dec 10, 2014 at 10:43:54PM +0000, Sonny Rao wrote: > On Wed, Dec 10, 2014 at 12:56 PM, Mark Salter <msalter@redhat.com> wrote: > > Using Linus' tree from this morning, I am hitting: > > > > [ 0.000000] BUG: failure at ./arch/arm64/include/asm/arch_timer.h:112/arch_counter_get_cntpct! > > > > This is triggered by commit 0b46b8a718 ("clocksource: arch_timer: Fix > > code to use physical timers when requested") which addresses an armv7 > > problem. Arm64 wants to always use a virtual timer. I used this to avoid > > the BUG and get a booting kernel: > > > > diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch > > index 71846f9..4d8a01e 100644 > > --- a/drivers/clocksource/arm_arch_timer.c > > +++ b/drivers/clocksource/arm_arch_timer.c > > @@ -468,7 +468,7 @@ static void __init arch_counter_register(unsigned type) > > > > /* Register the CP15 based counter if we have one */ > > if (type & ARCH_CP15_TIMER) { > > - if (arch_timer_use_virtual) > > + if (IS_ENABLED(CONFIG_ARM64) || arch_timer_use_virtual) > > arch_timer_read_counter = arch_counter_get_cntvct; > > else > > arch_timer_read_counter = arch_counter_get_cntpct; > > > > > > Yes Catalin has prepared a similar patch: > https://patchwork.kernel.org/patch/5468031/ Indeed. Daniel will be pushing it upstream.
Hello. On 12/10/2014 11:56 PM, Mark Salter wrote: > Using Linus' tree from this morning, I am hitting: > [ 0.000000] BUG: failure at ./arch/arm64/include/asm/arch_timer.h:112/arch_counter_get_cntpct! > This is triggered by commit 0b46b8a718 ("clocksource: arch_timer: Fix > code to use physical timers when requested") which addresses an armv7 > problem. Arm64 wants to always use a virtual timer. I used this to avoid > the BUG and get a booting kernel: You didn't sign off on the patch, so it can't be applied. [...] WBR, Sergei
On Thu, 2014-12-11 at 22:00 +0300, Sergei Shtylyov wrote: > Hello. > > On 12/10/2014 11:56 PM, Mark Salter wrote: > > > Using Linus' tree from this morning, I am hitting: > > > [ 0.000000] BUG: failure at ./arch/arm64/include/asm/arch_timer.h:112/arch_counter_get_cntpct! > > > This is triggered by commit 0b46b8a718 ("clocksource: arch_timer: Fix > > code to use physical timers when requested") which addresses an armv7 > > problem. Arm64 wants to always use a virtual timer. I used this to avoid > > the BUG and get a booting kernel: > > You didn't sign off on the patch, so it can't be applied. > > [...] > > WBR, Sergei > Right. That was more for discussion. I wasn't sure if that was the best way to fix the problem so I just included what I did to work around it. As it turns out, I wasn't the first to spot the problem or come up with a patch. So, the first patch will go in without my further involvement.
diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch index 71846f9..4d8a01e 100644 --- a/drivers/clocksource/arm_arch_timer.c +++ b/drivers/clocksource/arm_arch_timer.c @@ -468,7 +468,7 @@ static void __init arch_counter_register(unsigned type) /* Register the CP15 based counter if we have one */ if (type & ARCH_CP15_TIMER) { - if (arch_timer_use_virtual) + if (IS_ENABLED(CONFIG_ARM64) || arch_timer_use_virtual) arch_timer_read_counter = arch_counter_get_cntvct; else arch_timer_read_counter = arch_counter_get_cntpct;