[PATCH v23 09/11] acpi/arm64: Add memory-mapped timer support in GTDT driver

Mark Rutland mark.rutland at arm.com
Thu Apr 6 03:07:02 PDT 2017


On Wed, Apr 05, 2017 at 07:38:09PM +0100, Mark Rutland wrote:
> I tried to fix the issue that Lornzo raised, such that I could queue
> these patches. From looking at this patch in more detail however, I
> think there are further issues that need to be addressed.

Looking again, I see that I was mistaken w.r.t. the multi GT block case.

> > +int __init acpi_arch_timer_mem_init(struct arch_timer_mem *timer_mem,
> > +				    int *timer_count)
> > +{
> > +	int ret;
> > +	void *platform_timer;
> > +
> > +	*timer_count = 0;
> > +	for_each_platform_timer(platform_timer) {
> > +		if (is_timer_block(platform_timer)) {
> > +			ret = gtdt_parse_timer_block(platform_timer, timer_mem);
> > +			if (ret)
> > +				return ret;
> > +			timer_mem++;
> > +			(*timer_count)++;
> > +		}
> > +	}
> 
> If we were to have multiple GT blocks, this would leave timer_mem in an
> inconsistent state. In gtdt_parse_timer_block we'll blat any existing
> timer_mem->cntctlbase, and blat some arbitrary set of frames. however,
> *some* frames may have been held over from a previous iteration.

This is not the case; I had somehow missed the timer_mem++.

Sorry for the noise.

Thanks,
Mark.



More information about the linux-arm-kernel mailing list