From mboxrd@z Thu Jan 1 00:00:00 1970 From: Xiongfeng Wang Subject: Re: [PATCH v23 00/11] acpi, clocksource: add GTDT driver and GTDT support in arm_arch_timer Date: Sat, 1 Apr 2017 10:14:10 +0800 Message-ID: <8c017a47-02d5-454d-f42c-a1b5bb29df1b@huawei.com> References: <20170331175105.8370-1-fu.wei@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit Return-path: Received: from szxga02-in.huawei.com ([45.249.212.188]:4892 "EHLO dggrg02-dlp.huawei.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1750966AbdDACPW (ORCPT ); Fri, 31 Mar 2017 22:15:22 -0400 In-Reply-To: <20170331175105.8370-1-fu.wei@linaro.org> Sender: linux-acpi-owner@vger.kernel.org List-Id: linux-acpi@vger.kernel.org To: fu.wei@linaro.org, rjw@rjwysocki.net, lenb@kernel.org, daniel.lezcano@linaro.org, tglx@linutronix.de, marc.zyngier@arm.com, mark.rutland@arm.com, lorenzo.pieralisi@arm.com, sudeep.holla@arm.com, hanjun.guo@linaro.org Cc: linaro-acpi@lists.linaro.org, catalin.marinas@arm.com, will.deacon@arm.com, linux-kernel@vger.kernel.org, wim@iguana.be, wei@redhat.com, al.stone@linaro.org, tn@semihalf.com, timur@codeaurora.org, linux-acpi@vger.kernel.org, linux@roeck-us.net, harba@codeaurora.org, julien.grall@arm.com, linux-watchdog@vger.kernel.org, arnd@arndb.de, jcm@redhat.com, cov@codeaurora.org, linux-arm-kernel@lists.infradead.org, graeme.gregory@linaro.org, rruigrok@codeaurora.org, leo.duran@amd.com, Suravee.Suthikulpanit@amd.com, christoffer.dall@linaro.org On 2017/4/1 1:50, fu.wei@linaro.org wrote: > From: Fu Wei > > This patchset: > (1)Preparation for adding GTDT support in arm_arch_timer: > 1. Introduce a MMIO CNTFRQ helper. > 2. separate out device-tree code from arch_timer_detect_rate > 3. remove arch_timer_detect_rate use arch_timer_*get_cntfrq directly > 4. Refactor arch_timer_needs_probing, and move it into DT init call > 5. Introduce some new structs and refactor the MMIO timer init code > for reusing some common code. > > (2)Introduce ACPI GTDT parser: drivers/acpi/arm64/acpi_gtdt.c > Parse all kinds of timer in GTDT table of ACPI:arch timer, > memory-mapped timer and SBSA Generic Watchdog timer. > This driver can help to simplify all the relevant timer drivers, > and separate all the ACPI GTDT knowledge from them. > > (3)Simplify ACPI code for arm_arch_timer > > (4)Add GTDT support for ARM memory-mapped timer. > > This patchset has been tested on the following platforms with ACPI enabled: > (1)ARM Foundation v8 model > for arm_arch_timer(not memory-mapped) and sbsa watchdog part, Tested-by: wangxiongfeng2@huawei.com Thanks, Wang Xiongfeng . > Changelog: > v23: https://lkml.org/lkml/2017/3/31/ > Rebase to git://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git arch-timer/cleanup > Improve the data struct of arch_timer_mem and arch_timer_mem_frame to > improve the parser of GT blocks and arch_timer_mem initualization. > Improve arch_timer_rate detection: sysreg frequency is primary in DT boot > Improve some comments in GTDT parser driver. > Improve acpi_gtdt_init function, and make a comment for the multiple calls. > Improve the unwinding for the irq of timers, when an error occurs. > Handle the case of virtual timer GSIV is 0. > > v22: https://lkml.org/lkml/2017/3/21/523 > Rebase to git://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git arch-timer/cleanup > Only Introduce arch_timer_mem_get_cntfrq to get the frequency from mmio. > Merged patch 2,3(about arch_timer_detect_rate). > Keep arch_timer_rate, do NOT split it for different types of timer. > Improve memory-mapped timer support by comments and variable name: > data-->timer_mem > frame-->gtdt_frame > Delete zero check for SBSA watchdog irq. > Skip secure SBSA watchdog in GTDT driver. > Delete Kconfig modification for SBSA watchdog driver. > Delete no_irq, using nr_res instead. > > v21: https://lkml.org/lkml/2017/2/6/734 > Introduce two functions to get the frequency from mmio and sysreg. > Remove arch_timer_detect_rate use arch_timer_get_*_freq directly > Split arch_timer_rate for different types of timer. > Skip secure timer frame in GTDT driver. > Rebase to git://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git arch-timer/cleanup > (The first 6 patches in v20 have been merged into arch-timer/cleanup branch) > > v20: https://lkml.org/lkml/2017/1/18/534 > Reorder the first 4 patches and split the 4th patches. > Leave CNTHCTL_* as they originally were. > Fix the bug in arch_timer_select_ppi. > Split "Rework counter frequency detection" patch. > Rework the arch_timer_detect_rate function. > Improve the commit message of "Refactor MMIO timer probing". > Rebase to 4.10.0-rc4 > > v19: https://lkml.org/lkml/2016/12/21/25 > Fix a '\n' missing in a error message in arch_timer_mem_init. > Add "request_mem_region" for ioremapping cntbase, according to > f947ee1 clocksource/drivers/arm_arch_timer: Map frame with of_io_request_and_map() > Rebase to 4.9.0-gfb779ff > > v18: https://lkml.org/lkml/2016/12/8/446 > Fix 8/15 patch problem of "int ret;" in arch_timer_acpi_init. > Rebase to 4.9.0-rc8-g9269898 > > v17: https://lkml.org/lkml/2016/11/25/140 > Take out some cleanups from 4/15. > Merge 5/15 and 6/15, improve PPI determination code, > improve commit message. > Rework counter frequency detection. > Move arch_timer_needs_of_probing into DT init call. > Move Platform Timer scan loop back to timer init call to avoid allocating > and free memory. > Improve all the exported functions' comment. > > v16: https://lkml.org/lkml/2016/11/16/268 > Fix patchset problem about static enum ppi_nr of 01/13 in v15. > Refactor arch_timer_detect_rate. > Refactor arch_timer_needs_probing. > > v15: https://lkml.org/lkml/2016/11/15/366 > Re-order patches > Add arm_arch_timer refactoring patches to prepare for GTDT: > 1. rename some enums and defines, and some cleanups > 2. separate out arch_timer_uses_ppi init code and fix a potential bug > 3. Improve some new structs, refactor the timer init code. > Since the some structs have been changed, GTDT parser for memory-mapped > timer and SBSA Generic Watchdog timer have been update. > > v14: https://lkml.org/lkml/2016/9/28/573 > Separate memory-mapped timer GTDT support into two patches > 1. Refactor the timer init code to prepare for GTDT > 2. Add GTDT support for memory-mapped timer > > v13: http://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1231717.html > Improve arm_arch_timer code for memory-mapped > timer GTDT support, refactor original memory-mapped timer > dt support for reusing some common code. > > v12: https://lkml.org/lkml/2016/9/13/250 > Rebase to latest Linux 4.8-rc6 > Delete the confusing "skipping" in the error message. > > V11: https://lkml.org/lkml/2016/9/6/354 > Rebase to latest Linux 4.8-rc5 > Delete typedef (suggested by checkpatch.pl) > > V10: https://lkml.org/lkml/2016/7/26/215 > Drop the "readq" patch. > Rebase to latest Linux 4.7. > > V9: https://lkml.org/lkml/2016/7/25/345 > Improve pr_err message in acpi gtdt driver. > Update Commit message for 7/9 > shorten the irq mapping function name > Improve GTDT driver for memory-mapped timer > > v8: https://lkml.org/lkml/2016/7/19/660 > Improve "pr_fmt(fmt)" definition: add "ACPI" in front of "GTDT", > and also improve printk message. > Simplify is_timer_block and is_watchdog. > Merge acpi_gtdt_desc_init and gtdt_arch_timer_init into acpi_gtdt_init(); > Delete __init in include/linux/acpi.h for GTDT API > Make ARM64 select GTDT. > Delete "#include " from acpi_gtdt.c > Simplify GT block parse code. > > v7: https://lkml.org/lkml/2016/7/13/769 > Move the GTDT driver to drivers/acpi/arm64 > Add add the ARM64-specific ACPI Support maintainers in MAINTAINERS > Merge 3 patches of GTDT parser driver. > Fix the for_each_platform_timer bug. > > v6: https://lkml.org/lkml/2016/6/29/580 > split the GTDT driver to 4 parts: basic, arch_timer, memory-mapped timer, > and SBSA Generic Watchdog timer > Improve driver by suggestions and example code from Daniel Lezcano > > v5: https://lkml.org/lkml/2016/5/24/356 > Sorting out all patches, simplify the API of GTDT driver: > GTDT driver just fills the data struct for arm_arch_timer driver. > > v4: https://lists.linaro.org/pipermail/linaro-acpi/2016-March/006667.html > Delete the kvm relevant patches > Separate two patches for sorting out the code for arm_arch_timer. > Improve irq info export code to allow missing irq info in GTDT table. > > v3: https://lkml.org/lkml/2016/2/1/658 > Improve GTDT driver code: > (1)improve pr_* by defining pr_fmt(fmt) > (2)simplify gtdt_sbsa_gwdt_init > (3)improve gtdt_arch_timer_data_init, if table is NULL, it will try > to get GTDT table. > Move enum ppi_nr to arm_arch_timer.h, and add enum spi_nr. > Add arm_arch_timer get ppi from DT and GTDT support for kvm. > > v2: https://lkml.org/lkml/2015/12/2/10 > Rebase to latest kernel version(4.4-rc3). > Fix the bug about the config problem, > use CONFIG_ACPI_GTDT instead of CONFIG_ACPI in arm_arch_timer.c > > v1: The first upstreaming version: https://lkml.org/lkml/2015/10/28/553 > > Fu Wei (11): > clocksource: arm_arch_timer: add MMIO CNTFRQ helper > clocksource: arm_arch_timer: split dt-only rate handling > clocksource: arm_arch_timer: refactor arch_timer_needs_probing > clocksource: arm_arch_timer: move arch_timer_needs_of_probing into DT > init call > clocksource: arm_arch_timer: add structs to describe MMIO timer > clocksource: arm_arch_timer: refactor MMIO timer probing. > acpi/arm64: Add GTDT table parse driver > clocksource: arm_arch_timer: simplify ACPI support code. > acpi/arm64: Add memory-mapped timer support in GTDT driver > clocksource: arm_arch_timer: add GTDT support for memory-mapped timer > acpi/arm64: Add SBSA Generic Watchdog support in GTDT driver > > arch/arm64/Kconfig | 1 + > drivers/acpi/arm64/Kconfig | 3 + > drivers/acpi/arm64/Makefile | 1 + > drivers/acpi/arm64/gtdt.c | 406 +++++++++++++++++++++++++++++++++++ > drivers/clocksource/arm_arch_timer.c | 338 ++++++++++++++++++----------- > include/clocksource/arm_arch_timer.h | 16 ++ > include/linux/acpi.h | 7 + > 7 files changed, 648 insertions(+), 124 deletions(-) > create mode 100644 drivers/acpi/arm64/gtdt.c > From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751394AbdDACPZ (ORCPT ); Fri, 31 Mar 2017 22:15:25 -0400 Received: from szxga02-in.huawei.com ([45.249.212.188]:4892 "EHLO dggrg02-dlp.huawei.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1750966AbdDACPW (ORCPT ); Fri, 31 Mar 2017 22:15:22 -0400 Subject: Re: [PATCH v23 00/11] acpi, clocksource: add GTDT driver and GTDT support in arm_arch_timer To: , , , , , , , , , References: <20170331175105.8370-1-fu.wei@linaro.org> CC: , , , , , , , , , , , , , , , , , , , , , , From: Xiongfeng Wang Message-ID: <8c017a47-02d5-454d-f42c-a1b5bb29df1b@huawei.com> Date: Sat, 1 Apr 2017 10:14:10 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 MIME-Version: 1.0 In-Reply-To: <20170331175105.8370-1-fu.wei@linaro.org> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.177.32.209] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020206.58DF0D04.00A2,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0, ip=0.0.0.0, so=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 6b9742ee705fd4a7af8df4bea950c556 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2017/4/1 1:50, fu.wei@linaro.org wrote: > From: Fu Wei > > This patchset: > (1)Preparation for adding GTDT support in arm_arch_timer: > 1. Introduce a MMIO CNTFRQ helper. > 2. separate out device-tree code from arch_timer_detect_rate > 3. remove arch_timer_detect_rate use arch_timer_*get_cntfrq directly > 4. Refactor arch_timer_needs_probing, and move it into DT init call > 5. Introduce some new structs and refactor the MMIO timer init code > for reusing some common code. > > (2)Introduce ACPI GTDT parser: drivers/acpi/arm64/acpi_gtdt.c > Parse all kinds of timer in GTDT table of ACPI:arch timer, > memory-mapped timer and SBSA Generic Watchdog timer. > This driver can help to simplify all the relevant timer drivers, > and separate all the ACPI GTDT knowledge from them. > > (3)Simplify ACPI code for arm_arch_timer > > (4)Add GTDT support for ARM memory-mapped timer. > > This patchset has been tested on the following platforms with ACPI enabled: > (1)ARM Foundation v8 model > for arm_arch_timer(not memory-mapped) and sbsa watchdog part, Tested-by: wangxiongfeng2@huawei.com Thanks, Wang Xiongfeng . > Changelog: > v23: https://lkml.org/lkml/2017/3/31/ > Rebase to git://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git arch-timer/cleanup > Improve the data struct of arch_timer_mem and arch_timer_mem_frame to > improve the parser of GT blocks and arch_timer_mem initualization. > Improve arch_timer_rate detection: sysreg frequency is primary in DT boot > Improve some comments in GTDT parser driver. > Improve acpi_gtdt_init function, and make a comment for the multiple calls. > Improve the unwinding for the irq of timers, when an error occurs. > Handle the case of virtual timer GSIV is 0. > > v22: https://lkml.org/lkml/2017/3/21/523 > Rebase to git://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git arch-timer/cleanup > Only Introduce arch_timer_mem_get_cntfrq to get the frequency from mmio. > Merged patch 2,3(about arch_timer_detect_rate). > Keep arch_timer_rate, do NOT split it for different types of timer. > Improve memory-mapped timer support by comments and variable name: > data-->timer_mem > frame-->gtdt_frame > Delete zero check for SBSA watchdog irq. > Skip secure SBSA watchdog in GTDT driver. > Delete Kconfig modification for SBSA watchdog driver. > Delete no_irq, using nr_res instead. > > v21: https://lkml.org/lkml/2017/2/6/734 > Introduce two functions to get the frequency from mmio and sysreg. > Remove arch_timer_detect_rate use arch_timer_get_*_freq directly > Split arch_timer_rate for different types of timer. > Skip secure timer frame in GTDT driver. > Rebase to git://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git arch-timer/cleanup > (The first 6 patches in v20 have been merged into arch-timer/cleanup branch) > > v20: https://lkml.org/lkml/2017/1/18/534 > Reorder the first 4 patches and split the 4th patches. > Leave CNTHCTL_* as they originally were. > Fix the bug in arch_timer_select_ppi. > Split "Rework counter frequency detection" patch. > Rework the arch_timer_detect_rate function. > Improve the commit message of "Refactor MMIO timer probing". > Rebase to 4.10.0-rc4 > > v19: https://lkml.org/lkml/2016/12/21/25 > Fix a '\n' missing in a error message in arch_timer_mem_init. > Add "request_mem_region" for ioremapping cntbase, according to > f947ee1 clocksource/drivers/arm_arch_timer: Map frame with of_io_request_and_map() > Rebase to 4.9.0-gfb779ff > > v18: https://lkml.org/lkml/2016/12/8/446 > Fix 8/15 patch problem of "int ret;" in arch_timer_acpi_init. > Rebase to 4.9.0-rc8-g9269898 > > v17: https://lkml.org/lkml/2016/11/25/140 > Take out some cleanups from 4/15. > Merge 5/15 and 6/15, improve PPI determination code, > improve commit message. > Rework counter frequency detection. > Move arch_timer_needs_of_probing into DT init call. > Move Platform Timer scan loop back to timer init call to avoid allocating > and free memory. > Improve all the exported functions' comment. > > v16: https://lkml.org/lkml/2016/11/16/268 > Fix patchset problem about static enum ppi_nr of 01/13 in v15. > Refactor arch_timer_detect_rate. > Refactor arch_timer_needs_probing. > > v15: https://lkml.org/lkml/2016/11/15/366 > Re-order patches > Add arm_arch_timer refactoring patches to prepare for GTDT: > 1. rename some enums and defines, and some cleanups > 2. separate out arch_timer_uses_ppi init code and fix a potential bug > 3. Improve some new structs, refactor the timer init code. > Since the some structs have been changed, GTDT parser for memory-mapped > timer and SBSA Generic Watchdog timer have been update. > > v14: https://lkml.org/lkml/2016/9/28/573 > Separate memory-mapped timer GTDT support into two patches > 1. Refactor the timer init code to prepare for GTDT > 2. Add GTDT support for memory-mapped timer > > v13: http://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1231717.html > Improve arm_arch_timer code for memory-mapped > timer GTDT support, refactor original memory-mapped timer > dt support for reusing some common code. > > v12: https://lkml.org/lkml/2016/9/13/250 > Rebase to latest Linux 4.8-rc6 > Delete the confusing "skipping" in the error message. > > V11: https://lkml.org/lkml/2016/9/6/354 > Rebase to latest Linux 4.8-rc5 > Delete typedef (suggested by checkpatch.pl) > > V10: https://lkml.org/lkml/2016/7/26/215 > Drop the "readq" patch. > Rebase to latest Linux 4.7. > > V9: https://lkml.org/lkml/2016/7/25/345 > Improve pr_err message in acpi gtdt driver. > Update Commit message for 7/9 > shorten the irq mapping function name > Improve GTDT driver for memory-mapped timer > > v8: https://lkml.org/lkml/2016/7/19/660 > Improve "pr_fmt(fmt)" definition: add "ACPI" in front of "GTDT", > and also improve printk message. > Simplify is_timer_block and is_watchdog. > Merge acpi_gtdt_desc_init and gtdt_arch_timer_init into acpi_gtdt_init(); > Delete __init in include/linux/acpi.h for GTDT API > Make ARM64 select GTDT. > Delete "#include " from acpi_gtdt.c > Simplify GT block parse code. > > v7: https://lkml.org/lkml/2016/7/13/769 > Move the GTDT driver to drivers/acpi/arm64 > Add add the ARM64-specific ACPI Support maintainers in MAINTAINERS > Merge 3 patches of GTDT parser driver. > Fix the for_each_platform_timer bug. > > v6: https://lkml.org/lkml/2016/6/29/580 > split the GTDT driver to 4 parts: basic, arch_timer, memory-mapped timer, > and SBSA Generic Watchdog timer > Improve driver by suggestions and example code from Daniel Lezcano > > v5: https://lkml.org/lkml/2016/5/24/356 > Sorting out all patches, simplify the API of GTDT driver: > GTDT driver just fills the data struct for arm_arch_timer driver. > > v4: https://lists.linaro.org/pipermail/linaro-acpi/2016-March/006667.html > Delete the kvm relevant patches > Separate two patches for sorting out the code for arm_arch_timer. > Improve irq info export code to allow missing irq info in GTDT table. > > v3: https://lkml.org/lkml/2016/2/1/658 > Improve GTDT driver code: > (1)improve pr_* by defining pr_fmt(fmt) > (2)simplify gtdt_sbsa_gwdt_init > (3)improve gtdt_arch_timer_data_init, if table is NULL, it will try > to get GTDT table. > Move enum ppi_nr to arm_arch_timer.h, and add enum spi_nr. > Add arm_arch_timer get ppi from DT and GTDT support for kvm. > > v2: https://lkml.org/lkml/2015/12/2/10 > Rebase to latest kernel version(4.4-rc3). > Fix the bug about the config problem, > use CONFIG_ACPI_GTDT instead of CONFIG_ACPI in arm_arch_timer.c > > v1: The first upstreaming version: https://lkml.org/lkml/2015/10/28/553 > > Fu Wei (11): > clocksource: arm_arch_timer: add MMIO CNTFRQ helper > clocksource: arm_arch_timer: split dt-only rate handling > clocksource: arm_arch_timer: refactor arch_timer_needs_probing > clocksource: arm_arch_timer: move arch_timer_needs_of_probing into DT > init call > clocksource: arm_arch_timer: add structs to describe MMIO timer > clocksource: arm_arch_timer: refactor MMIO timer probing. > acpi/arm64: Add GTDT table parse driver > clocksource: arm_arch_timer: simplify ACPI support code. > acpi/arm64: Add memory-mapped timer support in GTDT driver > clocksource: arm_arch_timer: add GTDT support for memory-mapped timer > acpi/arm64: Add SBSA Generic Watchdog support in GTDT driver > > arch/arm64/Kconfig | 1 + > drivers/acpi/arm64/Kconfig | 3 + > drivers/acpi/arm64/Makefile | 1 + > drivers/acpi/arm64/gtdt.c | 406 +++++++++++++++++++++++++++++++++++ > drivers/clocksource/arm_arch_timer.c | 338 ++++++++++++++++++----------- > include/clocksource/arm_arch_timer.h | 16 ++ > include/linux/acpi.h | 7 + > 7 files changed, 648 insertions(+), 124 deletions(-) > create mode 100644 drivers/acpi/arm64/gtdt.c > From mboxrd@z Thu Jan 1 00:00:00 1970 From: wangxiongfeng2@huawei.com (Xiongfeng Wang) Date: Sat, 1 Apr 2017 10:14:10 +0800 Subject: [PATCH v23 00/11] acpi, clocksource: add GTDT driver and GTDT support in arm_arch_timer In-Reply-To: <20170331175105.8370-1-fu.wei@linaro.org> References: <20170331175105.8370-1-fu.wei@linaro.org> Message-ID: <8c017a47-02d5-454d-f42c-a1b5bb29df1b@huawei.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 2017/4/1 1:50, fu.wei at linaro.org wrote: > From: Fu Wei > > This patchset: > (1)Preparation for adding GTDT support in arm_arch_timer: > 1. Introduce a MMIO CNTFRQ helper. > 2. separate out device-tree code from arch_timer_detect_rate > 3. remove arch_timer_detect_rate use arch_timer_*get_cntfrq directly > 4. Refactor arch_timer_needs_probing, and move it into DT init call > 5. Introduce some new structs and refactor the MMIO timer init code > for reusing some common code. > > (2)Introduce ACPI GTDT parser: drivers/acpi/arm64/acpi_gtdt.c > Parse all kinds of timer in GTDT table of ACPI:arch timer, > memory-mapped timer and SBSA Generic Watchdog timer. > This driver can help to simplify all the relevant timer drivers, > and separate all the ACPI GTDT knowledge from them. > > (3)Simplify ACPI code for arm_arch_timer > > (4)Add GTDT support for ARM memory-mapped timer. > > This patchset has been tested on the following platforms with ACPI enabled: > (1)ARM Foundation v8 model > for arm_arch_timer(not memory-mapped) and sbsa watchdog part, Tested-by: wangxiongfeng2 at huawei.com Thanks, Wang Xiongfeng . > Changelog: > v23: https://lkml.org/lkml/2017/3/31/ > Rebase to git://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git arch-timer/cleanup > Improve the data struct of arch_timer_mem and arch_timer_mem_frame to > improve the parser of GT blocks and arch_timer_mem initualization. > Improve arch_timer_rate detection: sysreg frequency is primary in DT boot > Improve some comments in GTDT parser driver. > Improve acpi_gtdt_init function, and make a comment for the multiple calls. > Improve the unwinding for the irq of timers, when an error occurs. > Handle the case of virtual timer GSIV is 0. > > v22: https://lkml.org/lkml/2017/3/21/523 > Rebase to git://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git arch-timer/cleanup > Only Introduce arch_timer_mem_get_cntfrq to get the frequency from mmio. > Merged patch 2,3(about arch_timer_detect_rate). > Keep arch_timer_rate, do NOT split it for different types of timer. > Improve memory-mapped timer support by comments and variable name: > data-->timer_mem > frame-->gtdt_frame > Delete zero check for SBSA watchdog irq. > Skip secure SBSA watchdog in GTDT driver. > Delete Kconfig modification for SBSA watchdog driver. > Delete no_irq, using nr_res instead. > > v21: https://lkml.org/lkml/2017/2/6/734 > Introduce two functions to get the frequency from mmio and sysreg. > Remove arch_timer_detect_rate use arch_timer_get_*_freq directly > Split arch_timer_rate for different types of timer. > Skip secure timer frame in GTDT driver. > Rebase to git://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git arch-timer/cleanup > (The first 6 patches in v20 have been merged into arch-timer/cleanup branch) > > v20: https://lkml.org/lkml/2017/1/18/534 > Reorder the first 4 patches and split the 4th patches. > Leave CNTHCTL_* as they originally were. > Fix the bug in arch_timer_select_ppi. > Split "Rework counter frequency detection" patch. > Rework the arch_timer_detect_rate function. > Improve the commit message of "Refactor MMIO timer probing". > Rebase to 4.10.0-rc4 > > v19: https://lkml.org/lkml/2016/12/21/25 > Fix a '\n' missing in a error message in arch_timer_mem_init. > Add "request_mem_region" for ioremapping cntbase, according to > f947ee1 clocksource/drivers/arm_arch_timer: Map frame with of_io_request_and_map() > Rebase to 4.9.0-gfb779ff > > v18: https://lkml.org/lkml/2016/12/8/446 > Fix 8/15 patch problem of "int ret;" in arch_timer_acpi_init. > Rebase to 4.9.0-rc8-g9269898 > > v17: https://lkml.org/lkml/2016/11/25/140 > Take out some cleanups from 4/15. > Merge 5/15 and 6/15, improve PPI determination code, > improve commit message. > Rework counter frequency detection. > Move arch_timer_needs_of_probing into DT init call. > Move Platform Timer scan loop back to timer init call to avoid allocating > and free memory. > Improve all the exported functions' comment. > > v16: https://lkml.org/lkml/2016/11/16/268 > Fix patchset problem about static enum ppi_nr of 01/13 in v15. > Refactor arch_timer_detect_rate. > Refactor arch_timer_needs_probing. > > v15: https://lkml.org/lkml/2016/11/15/366 > Re-order patches > Add arm_arch_timer refactoring patches to prepare for GTDT: > 1. rename some enums and defines, and some cleanups > 2. separate out arch_timer_uses_ppi init code and fix a potential bug > 3. Improve some new structs, refactor the timer init code. > Since the some structs have been changed, GTDT parser for memory-mapped > timer and SBSA Generic Watchdog timer have been update. > > v14: https://lkml.org/lkml/2016/9/28/573 > Separate memory-mapped timer GTDT support into two patches > 1. Refactor the timer init code to prepare for GTDT > 2. Add GTDT support for memory-mapped timer > > v13: http://www.mail-archive.com/linux-kernel at vger.kernel.org/msg1231717.html > Improve arm_arch_timer code for memory-mapped > timer GTDT support, refactor original memory-mapped timer > dt support for reusing some common code. > > v12: https://lkml.org/lkml/2016/9/13/250 > Rebase to latest Linux 4.8-rc6 > Delete the confusing "skipping" in the error message. > > V11: https://lkml.org/lkml/2016/9/6/354 > Rebase to latest Linux 4.8-rc5 > Delete typedef (suggested by checkpatch.pl) > > V10: https://lkml.org/lkml/2016/7/26/215 > Drop the "readq" patch. > Rebase to latest Linux 4.7. > > V9: https://lkml.org/lkml/2016/7/25/345 > Improve pr_err message in acpi gtdt driver. > Update Commit message for 7/9 > shorten the irq mapping function name > Improve GTDT driver for memory-mapped timer > > v8: https://lkml.org/lkml/2016/7/19/660 > Improve "pr_fmt(fmt)" definition: add "ACPI" in front of "GTDT", > and also improve printk message. > Simplify is_timer_block and is_watchdog. > Merge acpi_gtdt_desc_init and gtdt_arch_timer_init into acpi_gtdt_init(); > Delete __init in include/linux/acpi.h for GTDT API > Make ARM64 select GTDT. > Delete "#include " from acpi_gtdt.c > Simplify GT block parse code. > > v7: https://lkml.org/lkml/2016/7/13/769 > Move the GTDT driver to drivers/acpi/arm64 > Add add the ARM64-specific ACPI Support maintainers in MAINTAINERS > Merge 3 patches of GTDT parser driver. > Fix the for_each_platform_timer bug. > > v6: https://lkml.org/lkml/2016/6/29/580 > split the GTDT driver to 4 parts: basic, arch_timer, memory-mapped timer, > and SBSA Generic Watchdog timer > Improve driver by suggestions and example code from Daniel Lezcano > > v5: https://lkml.org/lkml/2016/5/24/356 > Sorting out all patches, simplify the API of GTDT driver: > GTDT driver just fills the data struct for arm_arch_timer driver. > > v4: https://lists.linaro.org/pipermail/linaro-acpi/2016-March/006667.html > Delete the kvm relevant patches > Separate two patches for sorting out the code for arm_arch_timer. > Improve irq info export code to allow missing irq info in GTDT table. > > v3: https://lkml.org/lkml/2016/2/1/658 > Improve GTDT driver code: > (1)improve pr_* by defining pr_fmt(fmt) > (2)simplify gtdt_sbsa_gwdt_init > (3)improve gtdt_arch_timer_data_init, if table is NULL, it will try > to get GTDT table. > Move enum ppi_nr to arm_arch_timer.h, and add enum spi_nr. > Add arm_arch_timer get ppi from DT and GTDT support for kvm. > > v2: https://lkml.org/lkml/2015/12/2/10 > Rebase to latest kernel version(4.4-rc3). > Fix the bug about the config problem, > use CONFIG_ACPI_GTDT instead of CONFIG_ACPI in arm_arch_timer.c > > v1: The first upstreaming version: https://lkml.org/lkml/2015/10/28/553 > > Fu Wei (11): > clocksource: arm_arch_timer: add MMIO CNTFRQ helper > clocksource: arm_arch_timer: split dt-only rate handling > clocksource: arm_arch_timer: refactor arch_timer_needs_probing > clocksource: arm_arch_timer: move arch_timer_needs_of_probing into DT > init call > clocksource: arm_arch_timer: add structs to describe MMIO timer > clocksource: arm_arch_timer: refactor MMIO timer probing. > acpi/arm64: Add GTDT table parse driver > clocksource: arm_arch_timer: simplify ACPI support code. > acpi/arm64: Add memory-mapped timer support in GTDT driver > clocksource: arm_arch_timer: add GTDT support for memory-mapped timer > acpi/arm64: Add SBSA Generic Watchdog support in GTDT driver > > arch/arm64/Kconfig | 1 + > drivers/acpi/arm64/Kconfig | 3 + > drivers/acpi/arm64/Makefile | 1 + > drivers/acpi/arm64/gtdt.c | 406 +++++++++++++++++++++++++++++++++++ > drivers/clocksource/arm_arch_timer.c | 338 ++++++++++++++++++----------- > include/clocksource/arm_arch_timer.h | 16 ++ > include/linux/acpi.h | 7 + > 7 files changed, 648 insertions(+), 124 deletions(-) > create mode 100644 drivers/acpi/arm64/gtdt.c >