Re: [PATCH 0/2] Fix potential merge conflict for dw_apb_timer_of
Hi Pavel, Am Dienstag, 18. Juni 2013, 17:02:44 schrieb Pavel Machek: Hi! The following 2 patches will eliminate the need for the patch in John Stultz's tree. If there is to be merge of the 2 trees, then the patch: dw_apb_timer_of.c: Remove parts that were picoxcell-specific can be removed from John's tree to avoid a merge-conflict. Based on arm-soc/for-next: PATCH[1/2] - Rename dw-apb-timer-osc and dw-apb-timer-sp bindings to just dw-apb-timer PATCH[2/2] - Fix user/system reporting by fixing read_sched_clock() Pavel/Jamie: Can you take a look at these too and make sure these cover what you were doing. [It seems like Heiko Stübner was not aware of patches in the clock tree, so did pretty much equivalent patch.] Correct ... I was going after what was in linux-next and the tip.git [which I also only saw recently at all] does not seem to be part of it. Dinh's changes look good to me, but [PATCH v2 4/4] clocksource: dw_apb_timer_of: use clocksource_of_init does not exactly look nice: (I'm sorry I did not see original series, before it was merged to -soc.). The function counts number of times it was called, and behaves differently in each case. It is not very traditional kernel code at the very least. +static int num_called; +static void __init dw_apb_timer_init(struct device_node *timer) { - struct device_node *event_timer, *source_timer; - - event_timer = of_find_matching_node(NULL, osctimer_ids); - if (!event_timer) - panic(No timer for clockevent); - add_clockevent(event_timer); - - source_timer = of_find_matching_node(event_timer, osctimer_ids); - if (!source_timer) - panic(No timer for clocksource); - add_clocksource(source_timer); - - of_node_put(source_timer); + switch (num_called) { + case 0: + pr_debug(%s: found clockevent timer\n, __func__); + add_clockevent(timer); + of_node_put(timer); + break; + case 1: + pr_debug(%s: found clocksource timer\n, __func__); + add_clocksource(timer); + of_node_put(timer); + init_sched_clock(); + break; + default: + break; + } - init_sched_clock(); + num_called++; } Heiko, can you take a look at John Stultz tree? We modified this area already... I understand you only have one timer on your silicon? nope, my silicon has actually three timers of this type (all of them of the snps,dw-apb-timer-osc type ... which did change it seems). But the clocksource also needs to provide the sched_clock on it. Due to the multiple matching I came up with the numbering, because the of- clocksource must match the timer ips multiple times and needs to use one as clockevent and one as clocksource. Would perhaps parameter on dw_apb_timer_init telling it what to do be better solution? I don't like the num_called variable too much... The problem I see is, how do you want to distinguish between the timer used as clockevent and the one used as clocksource. The ip blocks are the same, so the dt binding must also be the same, as it only describes the hardware. And the CLOCKSOURCE_OF_DECLARE(apb_timer, snps,dw-apb-timer-osc, dw_apb_timer_init); of course also matches against all the timer nodes in the dt. Heiko ___ devicetree-discuss mailing list devicetree-discuss@lists.ozlabs.org https://lists.ozlabs.org/listinfo/devicetree-discuss
Re: [PATCH 0/2] Fix potential merge conflict for dw_apb_timer_of
On 06/18/2013 11:28 AM, Heiko Stübner wrote: Am Dienstag, 18. Juni 2013, 17:38:35 schrieb Heiko Stübner: Hi Pavel, Am Dienstag, 18. Juni 2013, 17:02:44 schrieb Pavel Machek: Hi! The following 2 patches will eliminate the need for the patch in John Stultz's tree. If there is to be merge of the 2 trees, then the patch: dw_apb_timer_of.c: Remove parts that were picoxcell-specific can be removed from John's tree to avoid a merge-conflict. Based on arm-soc/for-next: PATCH[1/2] - Rename dw-apb-timer-osc and dw-apb-timer-sp bindings to just dw-apb-timer PATCH[2/2] - Fix user/system reporting by fixing read_sched_clock() Pavel/Jamie: Can you take a look at these too and make sure these cover what you were doing. [It seems like Heiko Stübner was not aware of patches in the clock tree, so did pretty much equivalent patch.] Correct ... I was going after what was in linux-next and the tip.git [which I also only saw recently at all] does not seem to be part of it. Dinh's changes look good to me, but [PATCH v2 4/4] clocksource: dw_apb_timer_of: use clocksource_of_init does not exactly look nice: (I'm sorry I did not see original series, before it was merged to -soc.). The function counts number of times it was called, and behaves differently in each case. It is not very traditional kernel code at the very least. +static int num_called; +static void __init dw_apb_timer_init(struct device_node *timer) { - struct device_node *event_timer, *source_timer; - - event_timer = of_find_matching_node(NULL, osctimer_ids); - if (!event_timer) - panic(No timer for clockevent); - add_clockevent(event_timer); - - source_timer = of_find_matching_node(event_timer, osctimer_ids); - if (!source_timer) - panic(No timer for clocksource); - add_clocksource(source_timer); - - of_node_put(source_timer); + switch (num_called) { + case 0: + pr_debug(%s: found clockevent timer\n, __func__); + add_clockevent(timer); + of_node_put(timer); + break; + case 1: + pr_debug(%s: found clocksource timer\n, __func__); + add_clocksource(timer); + of_node_put(timer); + init_sched_clock(); + break; + default: + break; + } - init_sched_clock(); + num_called++; } Heiko, can you take a look at John Stultz tree? We modified this area already... I understand you only have one timer on your silicon? also it seems like not being able to use the apb_timer as sched_clock will hurt my platform too. I've tried to use the arm_arch_timer, but when the arch_timer_get_cntfrq() function gets called, I only get an undefined instruction Oops for the executed asm in there. As there is no manual available for the SoC, I can only guess that it doesn't contain such a component. This is fueled additionally by the PPI part of the gic only having 3 interrupt sources [there is small excerpt of the soc-manual floating around that contains this information], with one already being the twd interrupt, while the arm_arch_timer seems to require 4 itself. Therefore it would cool, if we could keep the sched_clock functionality (provided by the clocksource timer) around somehow. So whats the plan now? I'm feeling likely to revert dw_apb_timer_of.c: Remove parts that were picoxcell-specific in my tree and leave the rest of the wreckage to the arm-soc folks to sort out (either getting the fix in or reverting the lot and trying again for 3.12), unless we get some agreed upon path forward sorted quickly here. thanks -john ___ devicetree-discuss mailing list devicetree-discuss@lists.ozlabs.org https://lists.ozlabs.org/listinfo/devicetree-discuss
Re: [PATCH 0/2] Fix potential merge conflict for dw_apb_timer_of
Am Dienstag, 18. Juni 2013, 17:38:35 schrieb Heiko Stübner: Hi Pavel, Am Dienstag, 18. Juni 2013, 17:02:44 schrieb Pavel Machek: Hi! The following 2 patches will eliminate the need for the patch in John Stultz's tree. If there is to be merge of the 2 trees, then the patch: dw_apb_timer_of.c: Remove parts that were picoxcell-specific can be removed from John's tree to avoid a merge-conflict. Based on arm-soc/for-next: PATCH[1/2] - Rename dw-apb-timer-osc and dw-apb-timer-sp bindings to just dw-apb-timer PATCH[2/2] - Fix user/system reporting by fixing read_sched_clock() Pavel/Jamie: Can you take a look at these too and make sure these cover what you were doing. [It seems like Heiko Stübner was not aware of patches in the clock tree, so did pretty much equivalent patch.] Correct ... I was going after what was in linux-next and the tip.git [which I also only saw recently at all] does not seem to be part of it. Dinh's changes look good to me, but [PATCH v2 4/4] clocksource: dw_apb_timer_of: use clocksource_of_init does not exactly look nice: (I'm sorry I did not see original series, before it was merged to -soc.). The function counts number of times it was called, and behaves differently in each case. It is not very traditional kernel code at the very least. +static int num_called; +static void __init dw_apb_timer_init(struct device_node *timer) { - struct device_node *event_timer, *source_timer; - - event_timer = of_find_matching_node(NULL, osctimer_ids); - if (!event_timer) - panic(No timer for clockevent); - add_clockevent(event_timer); - - source_timer = of_find_matching_node(event_timer, osctimer_ids); - if (!source_timer) - panic(No timer for clocksource); - add_clocksource(source_timer); - - of_node_put(source_timer); + switch (num_called) { + case 0: + pr_debug(%s: found clockevent timer\n, __func__); + add_clockevent(timer); + of_node_put(timer); + break; + case 1: + pr_debug(%s: found clocksource timer\n, __func__); + add_clocksource(timer); + of_node_put(timer); + init_sched_clock(); + break; + default: + break; + } - init_sched_clock(); + num_called++; } Heiko, can you take a look at John Stultz tree? We modified this area already... I understand you only have one timer on your silicon? also it seems like not being able to use the apb_timer as sched_clock will hurt my platform too. I've tried to use the arm_arch_timer, but when the arch_timer_get_cntfrq() function gets called, I only get an undefined instruction Oops for the executed asm in there. As there is no manual available for the SoC, I can only guess that it doesn't contain such a component. This is fueled additionally by the PPI part of the gic only having 3 interrupt sources [there is small excerpt of the soc-manual floating around that contains this information], with one already being the twd interrupt, while the arm_arch_timer seems to require 4 itself. Therefore it would cool, if we could keep the sched_clock functionality (provided by the clocksource timer) around somehow. Heiko nope, my silicon has actually three timers of this type (all of them of the snps,dw-apb-timer-osc type ... which did change it seems). But the clocksource also needs to provide the sched_clock on it. Due to the multiple matching I came up with the numbering, because the of- clocksource must match the timer ips multiple times and needs to use one as clockevent and one as clocksource. Would perhaps parameter on dw_apb_timer_init telling it what to do be better solution? I don't like the num_called variable too much... The problem I see is, how do you want to distinguish between the timer used as clockevent and the one used as clocksource. The ip blocks are the same, so the dt binding must also be the same, as it only describes the hardware. And the CLOCKSOURCE_OF_DECLARE(apb_timer, snps,dw-apb-timer-osc, dw_apb_timer_init); of course also matches against all the timer nodes in the dt. ___ devicetree-discuss mailing list devicetree-discuss@lists.ozlabs.org https://lists.ozlabs.org/listinfo/devicetree-discuss
Re: [PATCH 0/2] Fix potential merge conflict for dw_apb_timer_of
On Tue, Jun 18, 2013 at 11:40 AM, John Stultz john.stu...@linaro.org wrote: On 06/18/2013 11:28 AM, Heiko Stübner wrote: Am Dienstag, 18. Juni 2013, 17:38:35 schrieb Heiko Stübner: Hi Pavel, Am Dienstag, 18. Juni 2013, 17:02:44 schrieb Pavel Machek: Hi! The following 2 patches will eliminate the need for the patch in John Stultz's tree. If there is to be merge of the 2 trees, then the patch: dw_apb_timer_of.c: Remove parts that were picoxcell-specific can be removed from John's tree to avoid a merge-conflict. Based on arm-soc/for-next: PATCH[1/2] - Rename dw-apb-timer-osc and dw-apb-timer-sp bindings to just dw-apb-timer PATCH[2/2] - Fix user/system reporting by fixing read_sched_clock() Pavel/Jamie: Can you take a look at these too and make sure these cover what you were doing. [It seems like Heiko Stübner was not aware of patches in the clock tree, so did pretty much equivalent patch.] Correct ... I was going after what was in linux-next and the tip.git [which I also only saw recently at all] does not seem to be part of it. Dinh's changes look good to me, but [PATCH v2 4/4] clocksource: dw_apb_timer_of: use clocksource_of_init does not exactly look nice: (I'm sorry I did not see original series, before it was merged to -soc.). The function counts number of times it was called, and behaves differently in each case. It is not very traditional kernel code at the very least. +static int num_called; +static void __init dw_apb_timer_init(struct device_node *timer) { - struct device_node *event_timer, *source_timer; - - event_timer = of_find_matching_node(NULL, osctimer_ids); - if (!event_timer) - panic(No timer for clockevent); - add_clockevent(event_timer); - - source_timer = of_find_matching_node(event_timer, osctimer_ids); - if (!source_timer) - panic(No timer for clocksource); - add_clocksource(source_timer); - - of_node_put(source_timer); + switch (num_called) { + case 0: + pr_debug(%s: found clockevent timer\n, __func__); + add_clockevent(timer); + of_node_put(timer); + break; + case 1: + pr_debug(%s: found clocksource timer\n, __func__); + add_clocksource(timer); + of_node_put(timer); + init_sched_clock(); + break; + default: + break; + } - init_sched_clock(); + num_called++; } Heiko, can you take a look at John Stultz tree? We modified this area already... I understand you only have one timer on your silicon? also it seems like not being able to use the apb_timer as sched_clock will hurt my platform too. I've tried to use the arm_arch_timer, but when the arch_timer_get_cntfrq() function gets called, I only get an undefined instruction Oops for the executed asm in there. As there is no manual available for the SoC, I can only guess that it doesn't contain such a component. This is fueled additionally by the PPI part of the gic only having 3 interrupt sources [there is small excerpt of the soc-manual floating around that contains this information], with one already being the twd interrupt, while the arm_arch_timer seems to require 4 itself. Therefore it would cool, if we could keep the sched_clock functionality (provided by the clocksource timer) around somehow. So whats the plan now? I'm feeling likely to revert dw_apb_timer_of.c: Remove parts that were picoxcell-specific in my tree and leave the rest of the wreckage to the arm-soc folks to sort out (either getting the fix in or reverting the lot and trying again for 3.12), unless we get some agreed upon path forward sorted quickly here. It was bad timing that linux-next was down for a week right around the time of all of this, but not much we can do about in hindsight. I'd be OK with reverting on your side and revisiting for 3.12. Arnd is doing arm-soc merges for a bit so it's up to him if he wants to try merging it without conflicts on our side. -Olof ___ devicetree-discuss mailing list devicetree-discuss@lists.ozlabs.org https://lists.ozlabs.org/listinfo/devicetree-discuss
Re: [PATCH 0/2] Fix potential merge conflict for dw_apb_timer_of
On 06/17/2013 05:08 PM, dingu...@altera.com wrote: From: Dinh Nguyen dingu...@altera.com Hi Arnd/Olof, Because of the following patch series that is currently in arm-soc/for-next: 10021488997317d1121505a7ac659124c058efed clocksource: dw_apb_timer_of: use clocksource_of_init 1b4eca0f634be2a99f2baa6c29dfd183590ead3f clocksource: dw_apb_timer_of: select DW_APB_TIMER a8b447f2a737ff4478f498d7f83c75a9461b clocksource: dw_apb_timer_of: add clock-handling a1198f83407ae3421f3f58355a0f296d5ea6249c clocksource: dw_apb_timer_of: enable the use the clocksource as sched clock there will be a merge conflict with: 55a68c23e0a675b2b8ac2656fd6edbf98b78e4c6 dw_apb_timer_of.c: Remove parts that were picoxcell-specific that is currently in John Stultz's tree fortglx/3.11/time. :( That one is also in Thomas' tip/timers/core already. The following 2 patches will eliminate the need for the patch in John Stultz's tree. If there is to be merge of the 2 trees, then the patch: dw_apb_timer_of.c: Remove parts that were picoxcell-specific can be removed from John's tree to avoid a merge-conflict. Based on arm-soc/for-next: PATCH[1/2] - Rename dw-apb-timer-osc and dw-apb-timer-sp bindings to just dw-apb-timer PATCH[2/2] - Fix user/system reporting by fixing read_sched_clock() Pavel/Jamie: Can you take a look at these too and make sure these cover what you were doing. So Dinh, just to get this right, you're wanting me to revert Remove parts that were picoxcell-specific and apply your two changes to my tree? The other 4 patches above are then fine to go in via arm-soc? Or do I need to merge those in too? thanks -john ___ devicetree-discuss mailing list devicetree-discuss@lists.ozlabs.org https://lists.ozlabs.org/listinfo/devicetree-discuss