From: Fu Wei <redacted>
This patchset:
(1)Preparation for adding GTDT support in arm_arch_timer:
1. Move some enums and marcos to header file;
2. Add a new enum for spi type;
3. Improve printk relevant 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:
(1)ARM Foundation v8 model
Changelog:
V10: https://lkml.org/lkml/2016/7/26/
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 <linux/module.h>" 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 (8):
clocksource/drivers/arm_arch_timer: Move enums and defines to header
file
clocksource/drivers/arm_arch_timer: Add a new enum for spi type
clocksource/drivers/arm_arch_timer: Improve printk relevant code
acpi/arm64: Add GTDT table parse driver
clocksource/drivers/arm_arch_timer: Simplify ACPI support code.
acpi/arm64: Add memory-mapped timer support in GTDT driver
clocksource/drivers/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/Kconfig | 5 +
drivers/acpi/Makefile | 1 +
drivers/acpi/arm64/Kconfig | 5 +
drivers/acpi/arm64/Makefile | 1 +
drivers/acpi/arm64/acpi_gtdt.c | 309 +++++++++++++++++++++++++++++++++++
drivers/clocksource/Kconfig | 2 +-
drivers/clocksource/arm_arch_timer.c | 225 +++++++++++++++++--------
drivers/watchdog/Kconfig | 1 +
include/clocksource/arm_arch_timer.h | 32 ++++
include/linux/acpi.h | 7 +
11 files changed, 518 insertions(+), 71 deletions(-)
create mode 100644 drivers/acpi/arm64/Kconfig
create mode 100644 drivers/acpi/arm64/Makefile
create mode 100644 drivers/acpi/arm64/acpi_gtdt.c
--
2.5.5
From: Fu Wei <redacted>
To support the arm_arch_timer via ACPI we need to share defines and enums
between the driver and the ACPI parser code.
Split out the relevant defines and enums into arm_arch_timer.h.
No functional change.
Signed-off-by: Fu Wei <redacted>
---
drivers/clocksource/arm_arch_timer.c | 11 -----------
include/clocksource/arm_arch_timer.h | 11 +++++++++++
2 files changed, 11 insertions(+), 11 deletions(-)
From: Fu Wei <redacted>
This patch add a new enum "spi_nr" and use it in the driver.
Just for code's readability, no functional change.
Signed-off-by: Fu Wei <redacted>
---
drivers/clocksource/arm_arch_timer.c | 4 ++--
include/clocksource/arm_arch_timer.h | 6 ++++++
2 files changed, 8 insertions(+), 2 deletions(-)
From: Fu Wei <redacted>
This patch defines pr_fmt(fmt) for all pr_* functions,
then the pr_* doesn't need to add "arch_timer:" everytime.
Also delete some Blank Spaces in arch_timer_banner,
according to the suggestion from checkpatch.pl.
No functional change.
Signed-off-by: Fu Wei <redacted>
---
drivers/clocksource/arm_arch_timer.c | 53 ++++++++++++++++++------------------
1 file changed, 27 insertions(+), 26 deletions(-)
@@ -396,24 +399,24 @@ arch_timer_detect_rate(void __iomem *cntbase, struct device_node *np)/* Check the timer frequency. */if(arch_timer_rate==0)-pr_warn("Architected timer frequency not available\n");+pr_warn("frequency not available\n");}staticvoidarch_timer_banner(unsignedtype){-pr_info("Architected %s%s%s timer(s) running at %lu.%02luMHz (%s%s%s).\n",-type&ARCH_CP15_TIMER?"cp15":"",-type==(ARCH_CP15_TIMER|ARCH_MEM_TIMER)?" and ":"",-type&ARCH_MEM_TIMER?"mmio":"",-(unsignedlong)arch_timer_rate/1000000,-(unsignedlong)(arch_timer_rate/10000)%100,-type&ARCH_CP15_TIMER?-(arch_timer_uses_ppi==VIRT_PPI)?"virt":"phys":-"",-type==(ARCH_CP15_TIMER|ARCH_MEM_TIMER)?"/":"",-type&ARCH_MEM_TIMER?-arch_timer_mem_use_virtual?"virt":"phys":-"");+pr_info("%s%s%s timer(s) running@%lu.%02luMHz (%s%s%s).\n",+type&ARCH_CP15_TIMER?"cp15":"",+type==(ARCH_CP15_TIMER|ARCH_MEM_TIMER)?" and ":"",+type&ARCH_MEM_TIMER?"mmio":"",+(unsignedlong)arch_timer_rate/1000000,+(unsignedlong)(arch_timer_rate/10000)%100,+type&ARCH_CP15_TIMER?+(arch_timer_uses_ppi==VIRT_PPI)?"virt":"phys":+"",+type==(ARCH_CP15_TIMER|ARCH_MEM_TIMER)?"/":"",+type&ARCH_MEM_TIMER?+arch_timer_mem_use_virtual?"virt":"phys":+"");}u32arch_timer_get_rate(void)
@@ -506,8 +509,7 @@ static void __init arch_counter_register(unsigned type)staticvoidarch_timer_stop(structclock_event_device*clk){-pr_debug("arch_timer_teardown disable IRQ%d cpu #%d\n",-clk->irq,smp_processor_id());+pr_debug("disable IRQ%d cpu #%d\n",clk->irq,smp_processor_id());disable_percpu_irq(arch_timer_ppi[arch_timer_uses_ppi]);if(arch_timer_has_nonsecure_ppi())
@@ -658,7 +659,7 @@ static int __init arch_timer_mem_register(void __iomem *base, unsigned int irq)ret=request_irq(irq,func,IRQF_TIMER,"arch_mem_timer",&t->evt);if(ret){-pr_err("arch_timer: Failed to request mem timer irq\n");+pr_err("Failed to request mem timer irq\n");kfree(t);}
@@ -736,7 +737,7 @@ static int __init arch_timer_init(void)}if(!has_ppi){-pr_warn("arch_timer: No interrupt available, giving up\n");+pr_warn("No interrupt available, giving up\n");return-EINVAL;}}
@@ -759,7 +760,7 @@ static int __init arch_timer_of_init(struct device_node *np)inti;if(arch_timers_present&ARCH_CP15_TIMER){-pr_warn("arch_timer: multiple nodes in dt, skipping\n");+pr_warn("multiple nodes in dt, skipping\n");return0;}
From: Fu Wei <redacted>
This patch adds support for parsing arch timer in GTDT,
provides some kernel APIs to parse all the PPIs and
always-on info in GTDT and export them.
By this driver, we can simplify arm_arch_timer drivers, and
separate the ACPI GTDT knowledge from it.
Signed-off-by: Fu Wei <redacted>
Signed-off-by: Hanjun Guo <redacted>
---
arch/arm64/Kconfig | 1 +
drivers/acpi/Kconfig | 5 ++
drivers/acpi/Makefile | 1 +
drivers/acpi/arm64/Kconfig | 5 ++
drivers/acpi/arm64/Makefile | 1 +
drivers/acpi/arm64/acpi_gtdt.c | 152 +++++++++++++++++++++++++++++++++++++++++
drivers/clocksource/Kconfig | 1 -
include/linux/acpi.h | 6 ++
8 files changed, 171 insertions(+), 1 deletion(-)
From: Fu Wei <redacted>
The patch update arm_arch_timer driver to use the function
provided by the new GTDT driver of ACPI.
By this way, arm_arch_timer.c can be simplified, and separate
all the ACPI GTDT knowledge from this timer driver.
Signed-off-by: Fu Wei <redacted>
Signed-off-by: Hanjun Guo <redacted>
---
drivers/clocksource/Kconfig | 1 +
drivers/clocksource/arm_arch_timer.c | 50 +++++++++---------------------------
2 files changed, 13 insertions(+), 38 deletions(-)
From: Fu Wei <redacted>
On platforms booting with ACPI, architected memory-mapped timers'
configuration data is provided by firmware through the ACPI GTDT
static table.
The clocksource architected timer kernel driver requires a firmware
interface to collect timer configuration and configure its driver.
this infrastructure is present for device tree systems, but it is
missing on systems booting with ACPI.
Implement the kernel infrastructure required to parse the static
ACPI GTDT table so that the architected timer clocksource driver can
make use of it on systems booting with ACPI, therefore enabling
the corresponding timers configuration.
Signed-off-by: Fu Wei <redacted>
Signed-off-by: Hanjun Guo <redacted>
---
drivers/acpi/arm64/acpi_gtdt.c | 70 ++++++++++++++++++++++++++++++++++++
include/clocksource/arm_arch_timer.h | 15 ++++++++
include/linux/acpi.h | 1 +
3 files changed, 86 insertions(+)
From: Fu Wei <redacted>
The patch add memory-mapped timer register support by using the information
provided by the new GTDT driver of ACPI.
Signed-off-by: Fu Wei <redacted>
---
drivers/clocksource/arm_arch_timer.c | 127 ++++++++++++++++++++++++++++++++++-
1 file changed, 124 insertions(+), 3 deletions(-)
@@ -870,7 +870,128 @@ CLOCKSOURCE_OF_DECLARE(armv7_arch_timer_mem, "arm,armv7-timer-mem",arch_timer_mem_init);#ifdef CONFIG_ACPI_GTDT-/* Initialize per-processor generic timer */+staticstructgt_timer_data__init*arch_timer_mem_get_timer(+structgt_block_data*gt_blocks)+{+structgt_block_data*gt_block=gt_blocks;+structgt_timer_data*best_frame=NULL;+void__iomem*cntctlbase;+u32cnttidr;+inti;++/*+*AccordingtoARMv8ArchitectureReferenceManual(ARM),+*thesizeofCNTCTLBaseframeofmemory-mappedtimer+*isSZ_4K(Offset0x000?0xFFF).+*/+cntctlbase=ioremap(gt_block->cntctlbase_phy,SZ_4K);+if(!cntctlbase){+pr_err("Failed to map mem timer control frame base address\n");+returnNULL;+}+cnttidr=readl_relaxed(cntctlbase+CNTTIDR);++/*+*Trytofindavirtualcapableframe.Otherwisefallbacktoa+*physicalcapableframe.+*/+for(i=0;i<gt_block->timer_count;i++){+intn;+u32cntacr;++n=gt_block->timer[i].frame_nr;++/* Try enabling everything, and see what sticks */+cntacr=CNTACR_RFRQ|CNTACR_RWPT|CNTACR_RPCT|+CNTACR_RWVT|CNTACR_RVOFF|CNTACR_RVCT;+writel_relaxed(cntacr,cntctlbase+CNTACR(n));+cntacr=readl_relaxed(cntctlbase+CNTACR(n));++if((cnttidr&CNTTIDR_VIRT(n))&&+!(~cntacr&(CNTACR_RWVT|CNTACR_RVCT))){+best_frame=>_block->timer[i];+arch_timer_mem_use_virtual=true;+break;+}++if(~cntacr&(CNTACR_RWPT|CNTACR_RPCT))+continue;++best_frame=>_block->timer[i];+}+iounmap(cntctlbase);++returnbest_frame;+}++staticint__initarch_timer_mem_acpi_init(size_ttimer_count)+{+structgt_block_data*gt_blocks;+structgt_timer_data*gt_timer;+void__iomem*timer_cntbase;+intret=-EINVAL;+inttimer_irq;++/*+*Ifwedon'thaveanyPlatformTimerStructures,justreturn.+*/+if(!timer_count)+return0;++/*+*beforereallycheckallthePlatformTimerStructures,+*weassumetheyareGTblock,andallocatememoryforthem.+*Wewillfreethesememoryoncewefinishtheinitialization.+*/+gt_blocks=kcalloc(timer_count,sizeof(*gt_blocks),GFP_KERNEL);+if(!gt_blocks)+return-ENOMEM;++if(gtdt_arch_timer_mem_init(gt_blocks)>0){+gt_timer=arch_timer_mem_get_timer(gt_blocks);+if(!gt_timer){+pr_err("Failed to get mem timer info.\n");+gotoerror;+}++if(arch_timer_mem_use_virtual)+timer_irq=gt_timer->virtual_irq;+else+timer_irq=gt_timer->irq;+if(!timer_irq){+pr_err("Failed to get %s irq for mem timer.",+arch_timer_mem_use_virtual?"virt":"phys");+gotoerror;+}++/*+*AccordingtoARMv8ArchitectureReferenceManual(ARM),+*thesizeofCNTBaseNframesofmemory-mappedtimer+*isSZ_4K(Offset0x000?0xFFF).+*/+timer_cntbase=ioremap(gt_timer->cntbase_phy,SZ_4K);+if(!timer_cntbase){+pr_err("Failed to map mem timer base address.\n");+gotoerror;+}++ret=arch_timer_mem_register(timer_cntbase,timer_irq);+if(ret){+iounmap(timer_cntbase);+pr_err("Failed to register mem timer.\n");+gotoerror;+}++arch_counter_base=timer_cntbase;+arch_timers_present|=ARCH_MEM_TIMER;+}++error:+kfree(gt_blocks);+returnret;+}++/* Initialize per-processor generic timer and memory-mapped timer(if present) */staticint__initarch_timer_acpi_init(structacpi_table_header*table){inttimer_count;
@@ -894,8 +1015,8 @@ static int __init arch_timer_acpi_init(struct acpi_table_header *table)/* Get the frequency from CNTFRQ */arch_timer_detect_rate(NULL,NULL);-if(timer_count<0)-pr_err("Failed to get platform timer info, skipping.\n");+if(timer_count<0||arch_timer_mem_acpi_init((size_t)timer_count))+pr_err("Failed to initialize memory-mapped timer, skipping.\n");returnarch_timer_init();}
From: Fu Wei <redacted>
This driver adds support for parsing SBSA Generic Watchdog timer
in GTDT, parse all info in SBSA Generic Watchdog Structure in GTDT,
and creating a platform device with that information.
This allows the operating system to obtain device data from the
resource of platform device. The platform device named "sbsa-gwdt"
can be used by the ARM SBSA Generic Watchdog driver.
Signed-off-by: Fu Wei <redacted>
Signed-off-by: Hanjun Guo <redacted>
---
drivers/acpi/arm64/acpi_gtdt.c | 87 ++++++++++++++++++++++++++++++++++++++++++
drivers/watchdog/Kconfig | 1 +
2 files changed, 88 insertions(+)
@@ -220,3 +221,89 @@ int __init gtdt_arch_timer_mem_init(struct gt_block_data *data)returnindex;}++/*+*InitializeaSBSAgenericWatchdogplatformdeviceinfofromGTDT+*/+staticint__initgtdt_import_sbsa_gwdt(structacpi_gtdt_watchdog*wd,+intindex)+{+structplatform_device*pdev;+intirq=map_gt_gsi(wd->timer_interrupt,wd->timer_flags);+intno_irq=1;++/*+*AccordingtoSBSAspecificationthesizeofrefreshandcontrol+*framesofSBSAGenericWatchdogisSZ_4K(Offset0x000?0xFFF).+*/+structresourceres[]={+DEFINE_RES_MEM(wd->control_frame_address,SZ_4K),+DEFINE_RES_MEM(wd->refresh_frame_address,SZ_4K),+DEFINE_RES_IRQ(irq),+};++pr_debug("found a Watchdog (0x%llx/0x%llx gsi:%u flags:0x%x).\n",+wd->refresh_frame_address,wd->control_frame_address,+wd->timer_interrupt,wd->timer_flags);++if(!(wd->refresh_frame_address&&wd->control_frame_address)){+pr_err(FW_BUG"failed to get the Watchdog base address.\n");+return-EINVAL;+}++if(!wd->timer_interrupt)+pr_warn(FW_BUG"failed to get the Watchdog interrupt.\n");+elseif(irq<=0)+pr_warn("failed to map the Watchdog interrupt.\n");+else+no_irq=0;++/*+*Addaplatformdevicenamed"sbsa-gwdt"tomatchtheplatformdriver.+*"sbsa-gwdt":SBSA(ServerBaseSystemArchitecture)GenericWatchdog+*Theplatformdriver(likedrivers/watchdog/sbsa_gwdt.c)cangetdevice+*infobelowbymatchingthisname.+*/+pdev=platform_device_register_simple("sbsa-gwdt",index,res,+ARRAY_SIZE(res)-no_irq);+if(IS_ERR(pdev)){+acpi_unregister_gsi(wd->timer_interrupt);+returnPTR_ERR(pdev);+}++return0;+}++staticint__initgtdt_sbsa_gwdt_init(void)+{+structacpi_table_header*table;+void*platform_timer;+intindex=0;+intret;++if(acpi_disabled)+return0;++if(ACPI_FAILURE(acpi_get_table(ACPI_SIG_GTDT,0,&table)))+return-EINVAL;++ret=acpi_gtdt_init(table);+if(ret<=0)+returnret;++for_each_platform_timer(platform_timer){+if(!is_watchdog(platform_timer))+continue;+ret=gtdt_import_sbsa_gwdt(platform_timer,index);+if(ret)+break;+index++;+}++if(index)+pr_info("found %d SBSA generic Watchdog(s).\n",index);++returnret;+}++device_initcall(gtdt_sbsa_gwdt_init);
From: Tomasz Nowicki <hidden> Date: 2016-08-11 09:37:56
Hi Fu,
Do you mind if I send IORT series where new drivers/acpi/arm64 directory
would be introduced in first place ? This means your GTDT set would
depend on IORT.
Thanks,
Tomasz
On 26.07.2016 14:19, fu.wei at linaro.org wrote:
From: Fu Wei <redacted>
This patchset:
(1)Preparation for adding GTDT support in arm_arch_timer:
1. Move some enums and marcos to header file;
2. Add a new enum for spi type;
3. Improve printk relevant 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:
(1)ARM Foundation v8 model
Changelog:
V10: https://lkml.org/lkml/2016/7/26/
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 <linux/module.h>" 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 (8):
clocksource/drivers/arm_arch_timer: Move enums and defines to header
file
clocksource/drivers/arm_arch_timer: Add a new enum for spi type
clocksource/drivers/arm_arch_timer: Improve printk relevant code
acpi/arm64: Add GTDT table parse driver
clocksource/drivers/arm_arch_timer: Simplify ACPI support code.
acpi/arm64: Add memory-mapped timer support in GTDT driver
clocksource/drivers/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/Kconfig | 5 +
drivers/acpi/Makefile | 1 +
drivers/acpi/arm64/Kconfig | 5 +
drivers/acpi/arm64/Makefile | 1 +
drivers/acpi/arm64/acpi_gtdt.c | 309 +++++++++++++++++++++++++++++++++++
drivers/clocksource/Kconfig | 2 +-
drivers/clocksource/arm_arch_timer.c | 225 +++++++++++++++++--------
drivers/watchdog/Kconfig | 1 +
include/clocksource/arm_arch_timer.h | 32 ++++
include/linux/acpi.h | 7 +
11 files changed, 518 insertions(+), 71 deletions(-)
create mode 100644 drivers/acpi/arm64/Kconfig
create mode 100644 drivers/acpi/arm64/Makefile
create mode 100644 drivers/acpi/arm64/acpi_gtdt.c
Hi Fu,
Do you mind if I send IORT series where new drivers/acpi/arm64 directory
would be introduced in first place ? This means your GTDT set would
depend on IORT.
I think it's reasonable as the IORT for ITS is the key device enablement
for PCI MSI. I talked to Fuwei offline and he is fine with it.
But both the GTDT patchset and IORT are in good shape now, can we
targeting both of them for 4.9 kernel (since all go via tip tree)?
Thanks
Hanjun
Hi Hanjun, Tomasz,
On 11 August 2016 at 18:15, Hanjun Guo [off-list ref] wrote:
Hi,
On 2016/8/11 17:37, Tomasz Nowicki wrote:
quoted
Hi Fu,
Do you mind if I send IORT series where new drivers/acpi/arm64 directory
would be introduced in first place ? This means your GTDT set would
depend on IORT.
I think it's reasonable as the IORT for ITS is the key device enablement
for PCI MSI. I talked to Fuwei offline and he is fine with it.
That's no problem at all, will do.
Can I do this:
(1)apply Tomasz's v8 patchset on the master branch of upstream kernel
(2)rebase my v10 on the top of Tomasz's v8
(3)git format-patch as v11, repost it
Is that OK for everyone? :-)
But both the GTDT patchset and IORT are in good shape now, can we
targeting both of them for 4.9 kernel (since all go via tip tree)?
Thanks
Hanjun
From: Lorenzo Pieralisi <hidden> Date: 2016-08-11 10:59:02
On Thu, Aug 11, 2016 at 06:22:03PM +0800, Fu Wei wrote:
Hi Hanjun, Tomasz,
On 11 August 2016 at 18:15, Hanjun Guo [off-list ref] wrote:
quoted
Hi,
On 2016/8/11 17:37, Tomasz Nowicki wrote:
quoted
Hi Fu,
Do you mind if I send IORT series where new drivers/acpi/arm64 directory
would be introduced in first place ? This means your GTDT set would
depend on IORT.
I think it's reasonable as the IORT for ITS is the key device enablement
for PCI MSI. I talked to Fuwei offline and he is fine with it.
That's no problem at all, will do.
Can I do this:
(1)apply Tomasz's v8 patchset on the master branch of upstream kernel
(2)rebase my v10 on the top of Tomasz's v8
(3)git format-patch as v11, repost it
Is that OK for everyone? :-)
I do not think you need a v11 just to remove the drivers/acpi/arm64
directory creation, you need to get Daniel/Thomas review/ack on
the respective patches though, I do not see the point of churning
out another series just because drivers/acpi/arm64 is now created
in the IORT patch series. If v10 is ok you will rebase it on top of
Tomasz's series and mention the dependency in the respective pull
request.
If there is need for a v11 following Daniel/Thomas review yes,
you can proceed as above.
Lorenzo
From: Timur Tabi <hidden> Date: 2016-08-17 19:02:28
Lorenzo Pieralisi wrote:
I do not think you need a v11 just to remove the drivers/acpi/arm64
directory creation, you need to get Daniel/Thomas review/ack on
the respective patches though, I do not see the point of churning
out another series just because drivers/acpi/arm64 is now created
in the IORT patch series. If v10 is ok you will rebase it on top of
Tomasz's series and mention the dependency in the respective pull
request.
If there is need for a v11 following Daniel/Thomas review yes,
you can proceed as above.
What's the latest on this patchset? I really want them in 4.9. Is
everything queued up, or are still issues that need to be resolved.
Who will be merging these patches?
--
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm
Technologies, Inc. Qualcomm Technologies, Inc. is a member of the
Code Aurora Forum, a Linux Foundation Collaborative Project.
Hi Timur,
On 18 August 2016 at 03:01, Timur Tabi [off-list ref] wrote:
Lorenzo Pieralisi wrote:
quoted
I do not think you need a v11 just to remove the drivers/acpi/arm64
directory creation, you need to get Daniel/Thomas review/ack on
the respective patches though, I do not see the point of churning
out another series just because drivers/acpi/arm64 is now created
in the IORT patch series. If v10 is ok you will rebase it on top of
Tomasz's series and mention the dependency in the respective pull
request.
If there is need for a v11 following Daniel/Thomas review yes,
you can proceed as above.
What's the latest on this patchset? I really want them in 4.9. Is
everything queued up, or are still issues that need to be resolved.
we are trying to let Tomasz's series be merged first, then this patch set
will be rebased on the top of it.
If everyone is OK with this patchset, I guess "in 4.9" is not a problem.
I don't see any suggestion and comment for now, will keep my eyes on it.
Who will be merging these patches?
I think the clocksource maintainer will take care of it, and GTDT patch
has got Rafael's ACK.
--
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm
Technologies, Inc. Qualcomm Technologies, Inc. is a member of the
Code Aurora Forum, a Linux Foundation Collaborative Project.