diff mbox

[v2,1/4] clocksource: rockchip: Make the driver more compatible

Message ID 1443147298-12603-2-git-send-email-wxt@rock-chips.com (mailing list archive)
State New, archived
Headers show

Commit Message

Caesar Wang Sept. 25, 2015, 2:14 a.m. UTC
Build the arm64 SoCs (e.g.: RK3368) on Rockchip platform,
There are some failure with build up on timer driver for rockchip.

Says:
/tmp/ccdAnNy5.s:47: Error: missing immediate expression at  operand 1 --
`dsb`
...

The problem was different semantics of dsb on btw arm32 and arm64,
Here we can convert the dsb with insteading of dsb(sy).The "sy" param
is the default which you are allow to omit, so on arm32 dsb()and dsb(sy)
are the same.

Signed-off-by: Caesar Wang <wxt@rock-chips.com>
---

Changes in v2:
- As Heiko/Daniel comments, let's split it into two patch.

Changes in v1:
- As Russell, Thomas, Daniel comments, let's replace NO_IRQ by '!irq'.

 drivers/clocksource/rockchip_timer.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Comments

Daniel Lezcano Sept. 29, 2015, 4:18 a.m. UTC | #1
On 09/25/2015 04:14 AM, Caesar Wang wrote:
> Build the arm64 SoCs (e.g.: RK3368) on Rockchip platform,
> There are some failure with build up on timer driver for rockchip.
>
> Says:
> /tmp/ccdAnNy5.s:47: Error: missing immediate expression at  operand 1 --
> `dsb`
> ...
>
> The problem was different semantics of dsb on btw arm32 and arm64,
> Here we can convert the dsb with insteading of dsb(sy).The "sy" param
> is the default which you are allow to omit, so on arm32 dsb()and dsb(sy)
> are the same.
>
> Signed-off-by: Caesar Wang <wxt@rock-chips.com>

Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Heiko Stübner Sept. 30, 2015, 7:14 p.m. UTC | #2
Hi Daniel,

Am Dienstag, 29. September 2015, 06:18:03 schrieb Daniel Lezcano:
> On 09/25/2015 04:14 AM, Caesar Wang wrote:
> > Build the arm64 SoCs (e.g.: RK3368) on Rockchip platform,
> > There are some failure with build up on timer driver for rockchip.
> > 
> > Says:
> > /tmp/ccdAnNy5.s:47: Error: missing immediate expression at  operand 1 --
> > `dsb`
> > ...
> > 
> > The problem was different semantics of dsb on btw arm32 and arm64,
> > Here we can convert the dsb with insteading of dsb(sy).The "sy" param
> > is the default which you are allow to omit, so on arm32 dsb()and dsb(sy)
> > are the same.
> > 
> > Signed-off-by: Caesar Wang <wxt@rock-chips.com>
> 
> Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>

as you have "just" Acked these patches, I guess you are expecting them to go 
through the same tree as the devicetree changes, right?

Thanks
Heiko
Caesar Wang Oct. 30, 2015, 3:43 a.m. UTC | #3
Hi Daniel,

? 2015?10?01? 03:14, Heiko Stübner ??:
> Hi Daniel,
>
> Am Dienstag, 29. September 2015, 06:18:03 schrieb Daniel Lezcano:
>> On 09/25/2015 04:14 AM, Caesar Wang wrote:
>>> Build the arm64 SoCs (e.g.: RK3368) on Rockchip platform,
>>> There are some failure with build up on timer driver for rockchip.
>>>
>>> Says:
>>> /tmp/ccdAnNy5.s:47: Error: missing immediate expression at  operand 1 --
>>> `dsb`
>>> ...
>>>
>>> The problem was different semantics of dsb on btw arm32 and arm64,
>>> Here we can convert the dsb with insteading of dsb(sy).The "sy" param
>>> is the default which you are allow to omit, so on arm32 dsb()and dsb(sy)
>>> are the same.
>>>
>>> Signed-off-by: Caesar Wang <wxt@rock-chips.com>
>> Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> as you have "just" Acked these patches, I guess you are expecting them to go
> through the same tree as the devicetree changes, right?

I'm wonder if someone will apply this series patchs but the wait.:-)
In fact, I'm no sure that the Acked is really meaning.:-

>
> Thanks
> Heiko
>
> _______________________________________________
> Linux-rockchip mailing list
> Linux-rockchip@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-rockchip
Daniel Lezcano Oct. 30, 2015, 10:42 a.m. UTC | #4
On 10/30/2015 04:43 AM, Caesar Wang wrote:
> Hi Daniel,
>
> ? 2015?10?01? 03:14, Heiko Stübner ??:
>> Hi Daniel,
>>
>> Am Dienstag, 29. September 2015, 06:18:03 schrieb Daniel Lezcano:
>>> On 09/25/2015 04:14 AM, Caesar Wang wrote:
>>>> Build the arm64 SoCs (e.g.: RK3368) on Rockchip platform,
>>>> There are some failure with build up on timer driver for rockchip.
>>>>
>>>> Says:
>>>> /tmp/ccdAnNy5.s:47: Error: missing immediate expression at  operand
>>>> 1 --
>>>> `dsb`
>>>> ...
>>>>
>>>> The problem was different semantics of dsb on btw arm32 and arm64,
>>>> Here we can convert the dsb with insteading of dsb(sy).The "sy" param
>>>> is the default which you are allow to omit, so on arm32 dsb()and
>>>> dsb(sy)
>>>> are the same.
>>>>
>>>> Signed-off-by: Caesar Wang <wxt@rock-chips.com>
>>> Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
>> as you have "just" Acked these patches, I guess you are expecting them
>> to go
>> through the same tree as the devicetree changes, right?
>
> I'm wonder if someone will apply this series patchs but the wait.:-)
> In fact, I'm no sure that the Acked is really meaning.:-

Yes, by acking the patch I say I am ok with it and I agree it can go 
through another tree.

I suggest before sending patches you read carefully the file 
Documentation/SubmittingPatches.

Especially, 11), 12) and 13).

Thanks.

   -- Daniel
Heiko Stübner Oct. 30, 2015, 11:47 p.m. UTC | #5
Hi Daniel,

Am Freitag, 30. Oktober 2015, 11:42:29 schrieb Daniel Lezcano:
> On 10/30/2015 04:43 AM, Caesar Wang wrote:
> > Hi Daniel,
> >
> > ? 2015?10?01? 03:14, Heiko Stübner ??:
> >> Hi Daniel,
> >>
> >> Am Dienstag, 29. September 2015, 06:18:03 schrieb Daniel Lezcano:
> >>> On 09/25/2015 04:14 AM, Caesar Wang wrote:
> >>>> Build the arm64 SoCs (e.g.: RK3368) on Rockchip platform,
> >>>> There are some failure with build up on timer driver for rockchip.
> >>>>
> >>>> Says:
> >>>> /tmp/ccdAnNy5.s:47: Error: missing immediate expression at  operand
> >>>> 1 --
> >>>> `dsb`
> >>>> ...
> >>>>
> >>>> The problem was different semantics of dsb on btw arm32 and arm64,
> >>>> Here we can convert the dsb with insteading of dsb(sy).The "sy" param
> >>>> is the default which you are allow to omit, so on arm32 dsb()and
> >>>> dsb(sy)
> >>>> are the same.
> >>>>
> >>>> Signed-off-by: Caesar Wang <wxt@rock-chips.com>
> >>> Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> >> as you have "just" Acked these patches, I guess you are expecting them
> >> to go
> >> through the same tree as the devicetree changes, right?
> >
> > I'm wonder if someone will apply this series patchs but the wait.:-)
> > In fact, I'm no sure that the Acked is really meaning.:-
> 
> Yes, by acking the patch I say I am ok with it and I agree it can go 
> through another tree.

although I guess the two clocksource changes could very well just go
through your tree. dsb() -> dsb(sy) is supposed to be equal and the second
one is just cosmetics.  The Kconfig and dts changes need to wait in any case
for 4.5 ... but I guess that may be true for the clocksource changes as well?


Heiko
Daniel Lezcano Oct. 31, 2015, 1:04 p.m. UTC | #6
On 10/31/2015 12:47 AM, Heiko Stuebner wrote:
> Hi Daniel,
>
> Am Freitag, 30. Oktober 2015, 11:42:29 schrieb Daniel Lezcano:
>> On 10/30/2015 04:43 AM, Caesar Wang wrote:
>>> Hi Daniel,
>>>
>>> ? 2015?10?01? 03:14, Heiko Stübner ??:
>>>> Hi Daniel,
>>>>
>>>> Am Dienstag, 29. September 2015, 06:18:03 schrieb Daniel Lezcano:
>>>>> On 09/25/2015 04:14 AM, Caesar Wang wrote:
>>>>>> Build the arm64 SoCs (e.g.: RK3368) on Rockchip platform,
>>>>>> There are some failure with build up on timer driver for rockchip.
>>>>>>
>>>>>> Says:
>>>>>> /tmp/ccdAnNy5.s:47: Error: missing immediate expression at  operand
>>>>>> 1 --
>>>>>> `dsb`
>>>>>> ...
>>>>>>
>>>>>> The problem was different semantics of dsb on btw arm32 and arm64,
>>>>>> Here we can convert the dsb with insteading of dsb(sy).The "sy" param
>>>>>> is the default which you are allow to omit, so on arm32 dsb()and
>>>>>> dsb(sy)
>>>>>> are the same.
>>>>>>
>>>>>> Signed-off-by: Caesar Wang <wxt@rock-chips.com>
>>>>> Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
>>>> as you have "just" Acked these patches, I guess you are expecting them
>>>> to go
>>>> through the same tree as the devicetree changes, right?
>>>
>>> I'm wonder if someone will apply this series patchs but the wait.:-)
>>> In fact, I'm no sure that the Acked is really meaning.:-
>>
>> Yes, by acking the patch I say I am ok with it and I agree it can go
>> through another tree.
>
> although I guess the two clocksource changes could very well just go
> through your tree. dsb() -> dsb(sy) is supposed to be equal and the second
> one is just cosmetics.  The Kconfig and dts changes need to wait in any case
> for 4.5 ... but I guess that may be true for the clocksource changes as well?

Ok, I will take the two first patches through my tree.

Thanks
   -- Daniel
Daniel Lezcano Nov. 2, 2015, 5:28 p.m. UTC | #7
On 10/31/2015 12:47 AM, Heiko Stuebner wrote:
> Hi Daniel,
>
> Am Freitag, 30. Oktober 2015, 11:42:29 schrieb Daniel Lezcano:
>> On 10/30/2015 04:43 AM, Caesar Wang wrote:
>>> Hi Daniel,
>>>
>>> ? 2015?10?01? 03:14, Heiko Stübner ??:
>>>> Hi Daniel,
>>>>
>>>> Am Dienstag, 29. September 2015, 06:18:03 schrieb Daniel Lezcano:
>>>>> On 09/25/2015 04:14 AM, Caesar Wang wrote:
>>>>>> Build the arm64 SoCs (e.g.: RK3368) on Rockchip platform,
>>>>>> There are some failure with build up on timer driver for rockchip.
>>>>>>
>>>>>> Says:
>>>>>> /tmp/ccdAnNy5.s:47: Error: missing immediate expression at  operand
>>>>>> 1 --
>>>>>> `dsb`
>>>>>> ...
>>>>>>
>>>>>> The problem was different semantics of dsb on btw arm32 and arm64,
>>>>>> Here we can convert the dsb with insteading of dsb(sy).The "sy" param
>>>>>> is the default which you are allow to omit, so on arm32 dsb()and
>>>>>> dsb(sy)
>>>>>> are the same.
>>>>>>
>>>>>> Signed-off-by: Caesar Wang <wxt@rock-chips.com>
>>>>> Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
>>>> as you have "just" Acked these patches, I guess you are expecting them
>>>> to go
>>>> through the same tree as the devicetree changes, right?
>>>
>>> I'm wonder if someone will apply this series patchs but the wait.:-)
>>> In fact, I'm no sure that the Acked is really meaning.:-
>>
>> Yes, by acking the patch I say I am ok with it and I agree it can go
>> through another tree.
>
> although I guess the two clocksource changes could very well just go
> through your tree. dsb() -> dsb(sy) is supposed to be equal and the second
> one is just cosmetics.  The Kconfig and dts changes need to wait in any case
> for 4.5 ... but I guess that may be true for the clocksource changes as well?

Heiko, Caesar,

I am wondering if the dsb() is really necessary. Is it possible you test 
the timer by removing this instruction ? Otherwise I will have to setup 
my board again and it will take awhile.
Caesar Wang Nov. 3, 2015, 2 a.m. UTC | #8
Daniel,

? 2015?11?03? 01:28, Daniel Lezcano ??:
> On 10/31/2015 12:47 AM, Heiko Stuebner wrote:
>> Hi Daniel,
>>
>> Am Freitag, 30. Oktober 2015, 11:42:29 schrieb Daniel Lezcano:
>>> On 10/30/2015 04:43 AM, Caesar Wang wrote:
>>>> Hi Daniel,
>>>>
>>>> ? 2015?10?01? 03:14, Heiko Stübner ??:
>>>>> Hi Daniel,
>>>>>
>>>>> Am Dienstag, 29. September 2015, 06:18:03 schrieb Daniel Lezcano:
>>>>>> On 09/25/2015 04:14 AM, Caesar Wang wrote:
>>>>>>> Build the arm64 SoCs (e.g.: RK3368) on Rockchip platform,
>>>>>>> There are some failure with build up on timer driver for rockchip.
>>>>>>>
>>>>>>> Says:
>>>>>>> /tmp/ccdAnNy5.s:47: Error: missing immediate expression at  operand
>>>>>>> 1 --
>>>>>>> `dsb`
>>>>>>> ...
>>>>>>>
>>>>>>> The problem was different semantics of dsb on btw arm32 and arm64,
>>>>>>> Here we can convert the dsb with insteading of dsb(sy).The "sy" 
>>>>>>> param
>>>>>>> is the default which you are allow to omit, so on arm32 dsb()and
>>>>>>> dsb(sy)
>>>>>>> are the same.
>>>>>>>
>>>>>>> Signed-off-by: Caesar Wang <wxt@rock-chips.com>
>>>>>> Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
>>>>> as you have "just" Acked these patches, I guess you are expecting 
>>>>> them
>>>>> to go
>>>>> through the same tree as the devicetree changes, right?
>>>>
>>>> I'm wonder if someone will apply this series patchs but the wait.:-)
>>>> In fact, I'm no sure that the Acked is really meaning.:-
>>>
>>> Yes, by acking the patch I say I am ok with it and I agree it can go
>>> through another tree.
>>
>> although I guess the two clocksource changes could very well just go
>> through your tree. dsb() -> dsb(sy) is supposed to be equal and the 
>> second
>> one is just cosmetics.  The Kconfig and dts changes need to wait in 
>> any case
>> for 4.5 ... but I guess that may be true for the clocksource changes 
>> as well?
>
> Heiko, Caesar,
>
> I am wondering if the dsb() is really necessary. Is it possible you 
> test the timer by removing this instruction ? Otherwise I will have to 
> setup my board again and it will take awhile.
>

As the @Arnd suggestion,

That's seem ok for me.
Although the writel_relaxed() and writel() a bit different  with DSB() 
and L2's sync.

Do I need send the patch v3?  I will test that on my board.

I'm no sure that why the clocksource driver didn't use the 
writel_relaxed() to work.
Okay, I think we should according to the suggestion or required.
Daniel Lezcano Nov. 3, 2015, 8:32 a.m. UTC | #9
On 11/03/2015 03:00 AM, Caesar Wang wrote:
> Daniel,
>
> ? 2015?11?03? 01:28, Daniel Lezcano ??:
>> On 10/31/2015 12:47 AM, Heiko Stuebner wrote:
>>> Hi Daniel,
>>>
>>> Am Freitag, 30. Oktober 2015, 11:42:29 schrieb Daniel Lezcano:
>>>> On 10/30/2015 04:43 AM, Caesar Wang wrote:
>>>>> Hi Daniel,
>>>>>
>>>>> ? 2015?10?01? 03:14, Heiko Stübner ??:
>>>>>> Hi Daniel,
>>>>>>
>>>>>> Am Dienstag, 29. September 2015, 06:18:03 schrieb Daniel Lezcano:
>>>>>>> On 09/25/2015 04:14 AM, Caesar Wang wrote:
>>>>>>>> Build the arm64 SoCs (e.g.: RK3368) on Rockchip platform,
>>>>>>>> There are some failure with build up on timer driver for rockchip.
>>>>>>>>
>>>>>>>> Says:
>>>>>>>> /tmp/ccdAnNy5.s:47: Error: missing immediate expression at  operand
>>>>>>>> 1 --
>>>>>>>> `dsb`
>>>>>>>> ...
>>>>>>>>
>>>>>>>> The problem was different semantics of dsb on btw arm32 and arm64,
>>>>>>>> Here we can convert the dsb with insteading of dsb(sy).The "sy"
>>>>>>>> param
>>>>>>>> is the default which you are allow to omit, so on arm32 dsb()and
>>>>>>>> dsb(sy)
>>>>>>>> are the same.
>>>>>>>>
>>>>>>>> Signed-off-by: Caesar Wang <wxt@rock-chips.com>
>>>>>>> Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
>>>>>> as you have "just" Acked these patches, I guess you are expecting
>>>>>> them
>>>>>> to go
>>>>>> through the same tree as the devicetree changes, right?
>>>>>
>>>>> I'm wonder if someone will apply this series patchs but the wait.:-)
>>>>> In fact, I'm no sure that the Acked is really meaning.:-
>>>>
>>>> Yes, by acking the patch I say I am ok with it and I agree it can go
>>>> through another tree.
>>>
>>> although I guess the two clocksource changes could very well just go
>>> through your tree. dsb() -> dsb(sy) is supposed to be equal and the
>>> second
>>> one is just cosmetics.  The Kconfig and dts changes need to wait in
>>> any case
>>> for 4.5 ... but I guess that may be true for the clocksource changes
>>> as well?
>>
>> Heiko, Caesar,
>>
>> I am wondering if the dsb() is really necessary. Is it possible you
>> test the timer by removing this instruction ? Otherwise I will have to
>> setup my board again and it will take awhile.
>>
>
> As the @Arnd suggestion,
>
> That's seem ok for me.
> Although the writel_relaxed() and writel() a bit different  with DSB()
> and L2's sync.
>
> Do I need send the patch v3?  I will test that on my board.
>
> I'm no sure that why the clocksource driver didn't use the
> writel_relaxed() to work.
> Okay, I think we should according to the suggestion or required.

I think the patch is trivial enough I can do the change myself if you 
test the change on your side. But it would be a good practice to send 
the patch you have tested. Up to you ;)

Thanks !

   -- Daniel
Caesar Wang Nov. 3, 2015, 9:59 a.m. UTC | #10
? 2015?11?03? 16:32, Daniel Lezcano ??:
> On 11/03/2015 03:00 AM, Caesar Wang wrote:
>> Daniel,
>>
>> ? 2015?11?03? 01:28, Daniel Lezcano ??:
>>> On 10/31/2015 12:47 AM, Heiko Stuebner wrote:
>>>> Hi Daniel,
>>>>
>>>> Am Freitag, 30. Oktober 2015, 11:42:29 schrieb Daniel Lezcano:
>>>>> On 10/30/2015 04:43 AM, Caesar Wang wrote:
>>>>>> Hi Daniel,
>>>>>>
>>>>>> ? 2015?10?01? 03:14, Heiko Stübner ??:
>>>>>>> Hi Daniel,
>>>>>>>
>>>>>>> Am Dienstag, 29. September 2015, 06:18:03 schrieb Daniel Lezcano:
>>>>>>>> On 09/25/2015 04:14 AM, Caesar Wang wrote:
>>>>>>>>> Build the arm64 SoCs (e.g.: RK3368) on Rockchip platform,
>>>>>>>>> There are some failure with build up on timer driver for 
>>>>>>>>> rockchip.
>>>>>>>>>
>>>>>>>>> Says:
>>>>>>>>> /tmp/ccdAnNy5.s:47: Error: missing immediate expression at  
>>>>>>>>> operand
>>>>>>>>> 1 --
>>>>>>>>> `dsb`
>>>>>>>>> ...
>>>>>>>>>
>>>>>>>>> The problem was different semantics of dsb on btw arm32 and 
>>>>>>>>> arm64,
>>>>>>>>> Here we can convert the dsb with insteading of dsb(sy).The "sy"
>>>>>>>>> param
>>>>>>>>> is the default which you are allow to omit, so on arm32 dsb()and
>>>>>>>>> dsb(sy)
>>>>>>>>> are the same.
>>>>>>>>>
>>>>>>>>> Signed-off-by: Caesar Wang <wxt@rock-chips.com>
>>>>>>>> Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
>>>>>>> as you have "just" Acked these patches, I guess you are expecting
>>>>>>> them
>>>>>>> to go
>>>>>>> through the same tree as the devicetree changes, right?
>>>>>>
>>>>>> I'm wonder if someone will apply this series patchs but the wait.:-)
>>>>>> In fact, I'm no sure that the Acked is really meaning.:-
>>>>>
>>>>> Yes, by acking the patch I say I am ok with it and I agree it can go
>>>>> through another tree.
>>>>
>>>> although I guess the two clocksource changes could very well just go
>>>> through your tree. dsb() -> dsb(sy) is supposed to be equal and the
>>>> second
>>>> one is just cosmetics.  The Kconfig and dts changes need to wait in
>>>> any case
>>>> for 4.5 ... but I guess that may be true for the clocksource changes
>>>> as well?
>>>
>>> Heiko, Caesar,
>>>
>>> I am wondering if the dsb() is really necessary. Is it possible you
>>> test the timer by removing this instruction ? Otherwise I will have to
>>> setup my board again and it will take awhile.
>>>
>>
>> As the @Arnd suggestion,
>>
>> That's seem ok for me.
>> Although the writel_relaxed() and writel() a bit different  with DSB()
>> and L2's sync.
>>
>> Do I need send the patch v3?  I will test that on my board.
>>
>> I'm no sure that why the clocksource driver didn't use the
>> writel_relaxed() to work.
>> Okay, I think we should according to the suggestion or required.
>
> I think the patch is trivial enough I can do the change myself if you 
> test the change on your side. But it would be a good practice to send 
> the patch you have tested. Up to you ;)
>

Yup, that's also happy work.

Feel free add my test tag if you remove the dsb().
Tested-by: Caesar Wang <wxt@rock-chips.com>

Thanks your send!

> Thanks !
>
>   -- Daniel
>
>
diff mbox

Patch

diff --git a/drivers/clocksource/rockchip_timer.c b/drivers/clocksource/rockchip_timer.c
index bb2c2b0..3ace7ac 100644
--- a/drivers/clocksource/rockchip_timer.c
+++ b/drivers/clocksource/rockchip_timer.c
@@ -49,14 +49,14 @@  static inline void __iomem *rk_base(struct clock_event_device *ce)
 static inline void rk_timer_disable(struct clock_event_device *ce)
 {
 	writel_relaxed(TIMER_DISABLE, rk_base(ce) + TIMER_CONTROL_REG);
-	dsb();
+	dsb(sy);
 }
 
 static inline void rk_timer_enable(struct clock_event_device *ce, u32 flags)
 {
 	writel_relaxed(TIMER_ENABLE | TIMER_INT_UNMASK | flags,
 		       rk_base(ce) + TIMER_CONTROL_REG);
-	dsb();
+	dsb(sy);
 }
 
 static void rk_timer_update_counter(unsigned long cycles,
@@ -64,13 +64,13 @@  static void rk_timer_update_counter(unsigned long cycles,
 {
 	writel_relaxed(cycles, rk_base(ce) + TIMER_LOAD_COUNT0);
 	writel_relaxed(0, rk_base(ce) + TIMER_LOAD_COUNT1);
-	dsb();
+	dsb(sy);
 }
 
 static void rk_timer_interrupt_clear(struct clock_event_device *ce)
 {
 	writel_relaxed(1, rk_base(ce) + TIMER_INT_STATUS);
-	dsb();
+	dsb(sy);
 }
 
 static inline int rk_timer_set_next_event(unsigned long cycles,