From: Marc Zyngier <marc.zyngier@arm.com> To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Mark Rutland <mark.rutland@arm.com>, Daniel Lezcano <daniel.lezcano@linaro.org>, Scott Wood <oss@buserror.net>, Will Deacon <will.deacon@arm.com>, Catalin Marinas <catalin.marinas@arm.com>, Hanjun Guo <hanjun.guo@linaro.org>, Ding Tianhong <dingtianhong@huawei.com> Subject: [PATCH 02/17] arm64: arch_timer: Add erratum handler for globally defined capability Date: Mon, 6 Mar 2017 11:26:07 +0000 [thread overview] Message-ID: <20170306112622.13853-3-marc.zyngier@arm.com> (raw) In-Reply-To: <20170306112622.13853-1-marc.zyngier@arm.com> Should we ever have a workaround for an erratum that is detected using a capability (and affecting the whole system), it'd be nice to have a way to probe them directly. Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> --- arch/arm64/include/asm/arch_timer.h | 1 + drivers/clocksource/arm_arch_timer.c | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/arch/arm64/include/asm/arch_timer.h b/arch/arm64/include/asm/arch_timer.h index 1c92d52619a6..8b8beab20bb6 100644 --- a/arch/arm64/include/asm/arch_timer.h +++ b/arch/arm64/include/asm/arch_timer.h @@ -39,6 +39,7 @@ extern struct static_key_false arch_timer_read_ool_enabled; enum arch_timer_erratum_match_type { ate_match_dt, + ate_match_global_cap_id, }; struct arch_timer_erratum_workaround { diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c index 36980cdd5c0a..0470b07af6fe 100644 --- a/drivers/clocksource/arm_arch_timer.c +++ b/drivers/clocksource/arm_arch_timer.c @@ -214,6 +214,13 @@ bool arch_timer_check_dt_erratum(const struct arch_timer_erratum_workaround *wa, return of_property_read_bool(np, wa->id); } +static +bool arch_timer_check_global_cap_erratum(const struct arch_timer_erratum_workaround *wa, + const void *arg) +{ + return cpus_have_cap((uintptr_t)wa->id); +} + static const struct arch_timer_erratum_workaround * arch_timer_iterate_errata(enum arch_timer_erratum_match_type type, ate_match_fn_t match_fn, @@ -252,6 +259,9 @@ static void arch_timer_check_ool_workaround(enum arch_timer_erratum_match_type t case ate_match_dt: match_fn = arch_timer_check_dt_erratum; break; + case ate_match_global_cap_id: + match_fn = arch_timer_check_global_cap_erratum; + break; } wa = arch_timer_iterate_errata(type, match_fn, arg); @@ -1029,6 +1039,7 @@ static int __init arch_timer_of_init(struct device_node *np) /* Check for globally applicable workarounds */ arch_timer_check_ool_workaround(ate_match_dt, np); + arch_timer_check_ool_workaround(ate_match_global_cap_id, NULL); /* * If we cannot rely on firmware initializing the timer registers then @@ -1185,6 +1196,9 @@ static int __init arch_timer_acpi_init(struct acpi_table_header *table) /* Always-on capability */ arch_timer_c3stop = !(gtdt->non_secure_el1_flags & ACPI_GTDT_ALWAYS_ON); + /* Check for globally applicable workarounds */ + arch_timer_check_ool_workaround(ate_match_global_cap_id, NULL); + arch_timer_init(); return 0; } -- 2.11.0
WARNING: multiple messages have this Message-ID (diff)
From: marc.zyngier@arm.com (Marc Zyngier) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 02/17] arm64: arch_timer: Add erratum handler for globally defined capability Date: Mon, 6 Mar 2017 11:26:07 +0000 [thread overview] Message-ID: <20170306112622.13853-3-marc.zyngier@arm.com> (raw) In-Reply-To: <20170306112622.13853-1-marc.zyngier@arm.com> Should we ever have a workaround for an erratum that is detected using a capability (and affecting the whole system), it'd be nice to have a way to probe them directly. Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> --- arch/arm64/include/asm/arch_timer.h | 1 + drivers/clocksource/arm_arch_timer.c | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/arch/arm64/include/asm/arch_timer.h b/arch/arm64/include/asm/arch_timer.h index 1c92d52619a6..8b8beab20bb6 100644 --- a/arch/arm64/include/asm/arch_timer.h +++ b/arch/arm64/include/asm/arch_timer.h @@ -39,6 +39,7 @@ extern struct static_key_false arch_timer_read_ool_enabled; enum arch_timer_erratum_match_type { ate_match_dt, + ate_match_global_cap_id, }; struct arch_timer_erratum_workaround { diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c index 36980cdd5c0a..0470b07af6fe 100644 --- a/drivers/clocksource/arm_arch_timer.c +++ b/drivers/clocksource/arm_arch_timer.c @@ -214,6 +214,13 @@ bool arch_timer_check_dt_erratum(const struct arch_timer_erratum_workaround *wa, return of_property_read_bool(np, wa->id); } +static +bool arch_timer_check_global_cap_erratum(const struct arch_timer_erratum_workaround *wa, + const void *arg) +{ + return cpus_have_cap((uintptr_t)wa->id); +} + static const struct arch_timer_erratum_workaround * arch_timer_iterate_errata(enum arch_timer_erratum_match_type type, ate_match_fn_t match_fn, @@ -252,6 +259,9 @@ static void arch_timer_check_ool_workaround(enum arch_timer_erratum_match_type t case ate_match_dt: match_fn = arch_timer_check_dt_erratum; break; + case ate_match_global_cap_id: + match_fn = arch_timer_check_global_cap_erratum; + break; } wa = arch_timer_iterate_errata(type, match_fn, arg); @@ -1029,6 +1039,7 @@ static int __init arch_timer_of_init(struct device_node *np) /* Check for globally applicable workarounds */ arch_timer_check_ool_workaround(ate_match_dt, np); + arch_timer_check_ool_workaround(ate_match_global_cap_id, NULL); /* * If we cannot rely on firmware initializing the timer registers then @@ -1185,6 +1196,9 @@ static int __init arch_timer_acpi_init(struct acpi_table_header *table) /* Always-on capability */ arch_timer_c3stop = !(gtdt->non_secure_el1_flags & ACPI_GTDT_ALWAYS_ON); + /* Check for globally applicable workarounds */ + arch_timer_check_ool_workaround(ate_match_global_cap_id, NULL); + arch_timer_init(); return 0; } -- 2.11.0
next prev parent reply other threads:[~2017-03-06 11:31 UTC|newest] Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-03-06 11:26 [PATCH 00/17] clocksource/arch_timer: Errara workaround infrastructure rework Marc Zyngier 2017-03-06 11:26 ` Marc Zyngier 2017-03-06 11:26 ` [PATCH 01/17] arm64: arch_timer: Add infrastructure for multiple erratum detection methods Marc Zyngier 2017-03-06 11:26 ` Marc Zyngier 2017-03-07 13:03 ` Hanjun Guo 2017-03-07 13:03 ` Hanjun Guo 2017-03-20 13:51 ` Mark Rutland 2017-03-20 13:51 ` Mark Rutland 2017-03-06 11:26 ` Marc Zyngier [this message] 2017-03-06 11:26 ` [PATCH 02/17] arm64: arch_timer: Add erratum handler for globally defined capability Marc Zyngier 2017-03-06 11:26 ` [PATCH 03/17] arm64: Allow checking of a CPU-local erratum Marc Zyngier 2017-03-06 11:26 ` Marc Zyngier 2017-03-20 13:56 ` Mark Rutland 2017-03-20 13:56 ` Mark Rutland 2017-03-20 14:09 ` Suzuki K Poulose 2017-03-20 14:09 ` Suzuki K Poulose 2017-03-06 11:26 ` [PATCH 04/17] arm64: arch_timer: Add erratum handler for CPU-specific capability Marc Zyngier 2017-03-06 11:26 ` Marc Zyngier 2017-03-06 11:26 ` [PATCH 05/17] arm64: arch_timer: Move arch_timer_reg_read/write around Marc Zyngier 2017-03-06 11:26 ` Marc Zyngier 2017-03-20 13:59 ` Mark Rutland 2017-03-20 13:59 ` Mark Rutland 2017-03-06 11:26 ` [PATCH 06/17] arm64: arch_timer: Get rid of erratum_workaround_set_sne Marc Zyngier 2017-03-06 11:26 ` Marc Zyngier 2017-03-20 14:06 ` Mark Rutland 2017-03-20 14:06 ` Mark Rutland 2017-03-20 16:59 ` Marc Zyngier 2017-03-20 16:59 ` Marc Zyngier 2017-03-06 11:26 ` [PATCH 07/17] arm64: arch_timer: Rework the set_next_event workarounds Marc Zyngier 2017-03-06 11:26 ` Marc Zyngier 2017-03-07 13:25 ` Hanjun Guo 2017-03-07 13:25 ` Hanjun Guo 2017-03-06 11:26 ` [PATCH 08/17] arm64: arch_timer: Make workaround methods optional Marc Zyngier 2017-03-06 11:26 ` Marc Zyngier 2017-03-06 11:26 ` [PATCH 09/17] arm64: arch_timer: Allows a CPU-specific erratum to only affect a subset of CPUs Marc Zyngier 2017-03-06 11:26 ` Marc Zyngier 2017-03-06 11:26 ` [PATCH 10/17] arm64: Add CNTVCT_EL0 trap handler Marc Zyngier 2017-03-06 11:26 ` Marc Zyngier 2017-03-20 14:52 ` Mark Rutland 2017-03-20 14:52 ` Mark Rutland 2017-03-06 11:26 ` [PATCH 11/17] arm64: arch_timer: Move clocksource_counter and co around Marc Zyngier 2017-03-06 11:26 ` Marc Zyngier 2017-03-06 11:26 ` [PATCH 12/17] arm64: arch_timer: Enable CNTVCT_EL0 trap if workaround is enabled Marc Zyngier 2017-03-06 11:26 ` Marc Zyngier 2017-03-06 11:26 ` [PATCH 13/17] arm64: cpu_errata: Allow an erratum to be match for all revisions of a core Marc Zyngier 2017-03-06 11:26 ` Marc Zyngier 2017-03-20 14:56 ` Mark Rutland 2017-03-20 14:56 ` Mark Rutland 2017-03-20 15:30 ` Suzuki K Poulose 2017-03-20 15:30 ` Suzuki K Poulose 2017-03-06 11:26 ` [PATCH 14/17] arm64: Define Cortex-A73 MIDR Marc Zyngier 2017-03-06 11:26 ` Marc Zyngier 2017-03-06 11:26 ` [PATCH 15/17] arm64: arch_timer: Workaround for Cortex-A73 erratum 858921 Marc Zyngier 2017-03-06 11:26 ` Marc Zyngier 2017-03-20 14:58 ` Mark Rutland 2017-03-20 14:58 ` Mark Rutland 2017-03-06 11:26 ` [PATCH 16/17] arm64: arch_timer: Allow erratum matching with ACPI OEM information Marc Zyngier 2017-03-06 11:26 ` Marc Zyngier 2017-03-07 13:12 ` Hanjun Guo 2017-03-07 13:12 ` Hanjun Guo 2017-03-06 11:26 ` [PATCH 17/17] arm64: arch_timer: Add HISILICON_ERRATUM_161010101 ACPI matching data Marc Zyngier 2017-03-06 11:26 ` Marc Zyngier 2017-03-07 13:19 ` Hanjun Guo 2017-03-07 13:19 ` Hanjun Guo 2017-03-20 15:00 ` Mark Rutland 2017-03-20 15:00 ` Mark Rutland 2017-03-06 21:48 ` [PATCH 00/17] clocksource/arch_timer: Errara workaround infrastructure rework dann frazier 2017-03-06 21:48 ` dann frazier 2017-03-07 12:56 ` Hanjun Guo 2017-03-07 12:56 ` Hanjun Guo 2017-03-20 15:07 ` Mark Rutland 2017-03-20 15:07 ` Mark Rutland 2017-03-20 15:25 ` Marc Zyngier 2017-03-20 15:25 ` Marc Zyngier
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20170306112622.13853-3-marc.zyngier@arm.com \ --to=marc.zyngier@arm.com \ --cc=catalin.marinas@arm.com \ --cc=daniel.lezcano@linaro.org \ --cc=dingtianhong@huawei.com \ --cc=hanjun.guo@linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mark.rutland@arm.com \ --cc=oss@buserror.net \ --cc=will.deacon@arm.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.