[PATCH 2/2] arch_timer: acpi: add hisi timer erratum data
Shameerali Kolothum Thodi
shameerali.kolothum.thodi at huawei.com
Tue Jan 24 05:28:45 PST 2017
> -----Original Message-----
> From: Marc Zyngier [mailto:marc.zyngier at arm.com]
> Sent: Tuesday, January 24, 2017 1:09 PM
> To: John Garry; Mark Rutland; Guohanjun (Hanjun Guo)
> Cc: Will Deacon; Daniel Lezcano; Rafael J. Wysocki; Lorenzo Pieralisi;
> Fu Wei; Dingtianhong; linux-acpi at vger.kernel.org; linux-arm-
> kernel at lists.infradead.org; Linuxarm; Hanjun Guo; Shameerali Kolothum
> Thodi
> Subject: Re: [PATCH 2/2] arch_timer: acpi: add hisi timer erratum data
>
> On 24/01/17 12:35, John Garry wrote:
> > On 24/01/2017 11:32, Marc Zyngier wrote:
> >> On 24/01/17 10:57, Mark Rutland wrote:
> >>> On Tue, Jan 24, 2017 at 06:39:51PM +0800, Hanjun Guo wrote:
> >>>> From: Hanjun Guo <hanjun.guo at linaro.org>
> >>>>
> >>>> Add hisilicon timer specific erratum fixes.
> >>>>
> >>>> Signed-off-by: Hanjun Guo <hanjun.guo at linaro.org>
> >>>> ---
> >>>> drivers/clocksource/arm_arch_timer.c | 22 ++++++++++++++++++++++
> >>>> 1 file changed, 22 insertions(+)
> >>>>
> >>>> diff --git a/drivers/clocksource/arm_arch_timer.c
> b/drivers/clocksource/arm_arch_timer.c
> >>>> index 80d6f76..3e62a09 100644
> >>>> --- a/drivers/clocksource/arm_arch_timer.c
> >>>> +++ b/drivers/clocksource/arm_arch_timer.c
> >>>> @@ -1156,10 +1156,32 @@ struct gtdt_arch_timer_fixup {
> >>>> void *context;
> >>>> };
> >>>>
> >>>> +#ifdef CONFIG_HISILICON_ERRATUM_161010101
> >>>> +static void __init hisi_erratum_workaroud_enable(void *context)
> >>>> +{
> >>>> + int i;
> >>>> +
> >>>> + for (i = 0; i < ARRAY_SIZE(ool_workarounds); i++) {
> >>>> + if (!strcmp(context, ool_workarounds[i].id)) {
> >>>> + timer_unstable_counter_workaround =
> &ool_workarounds[i];
> >>>> +
> static_branch_enable(&arch_timer_read_ool_enabled);
> >>>> + pr_info("arch_timer: Enabling workaround for
> %s\n",
> >>>> + timer_unstable_counter_workaround->id);
> >>>> + break;
> >>>> + }
> >>>> + }
> >>>> +}
> >>>> +#endif
> >>>> +
> >>>> /* note: this needs to be updated according to the doc of OEM ID
> >>>> * and TABLE ID for different board.
> >>>> */
> >>>> static struct gtdt_arch_timer_fixup arch_timer_quirks[]
> __initdata = {
> >>>> +#ifdef CONFIG_HISILICON_ERRATUM_161010101
> >>>> + {"HISI ", "HIP05 ", 0, &hisi_erratum_workaroud_enable,
> "hisilicon,erratum-161010101"},
> >>>> + {"HISI ", "HIP06 ", 0, &hisi_erratum_workaroud_enable,
> "hisilicon,erratum-161010101"},
> >>>> + {"HISI ", "HIP07 ", 0, &hisi_erratum_workaroud_enable,
> "hisilicon,erratum-161010101"},
> >>>> +#endif
> >>>> };
> >>>
> >>> NAK. This duplicates logic unnecessarily (for enabling the
> workaround),
> >>> and (ab)uses the id, which was intended to be specific to DT (since
> it
> >>> is a DT property name).
> >>
> >> Agreed, that's properly revolting.
> >>
> >>> We should split the matching from the particular workaround (and
> >>> enabling thereof), so that we can go straight from ACPI match to
> >>> workaround (without having to use the DT id in this manner), and
> don't
> >>> have to duplicate the logic to enable the workaround.
> >>>
> >>> I believe Marc is looking at some rework in this area which may
> enable
> >>> this, so please wait for that to appear.
> >>
> >> Yeah, I'm implementing a semi-flexible way to add new quirk types,
> and
> >> the last thing I want to see is two (or more) tables describing the
> same
> >> thing.
> >>
> >
> > FYI, We have a similar requirement to enable a quirk on the GICv3 ITS
> > driver. For that driver the current quirk framework relies on
> matching
> > the IIDR, which is not properly populated for our hardware. So will
> this
> > framework cover this/many/all drivers?
>
> Most probably not. Each driver has its own requirements, and it is
> unlikely that the timer's fit with the GIC's. But maybe we can use
> similar patterns.
>
> > Shameer has prepared the patchset for this quirk - should it send it?
> It
> > will be rejected for the same reason as this one, but at least it is
> > more reference for this framework wishlist.
>
> Well, try and see it the other way around. If you don't send the patch,
> it can't be rejected! ;-) Now, if you're genuinely interested in
> finding
> out what I think of it, and possibly some advise on how to address the
> issue, then please post it.
Sure :).
Thanks,
Shameer
More information about the linux-arm-kernel
mailing list