[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 1/1] x86/acpi: Use FADT flags to determine the PMTMR width



On Tue, Jun 16, 2020 at 10:07:05AM +0200, Jan Beulich wrote:
> On 14.06.2020 16:36, Grzegorz Uriasz wrote:
> > --- a/xen/arch/x86/acpi/boot.c
> > +++ b/xen/arch/x86/acpi/boot.c
> > @@ -480,7 +480,10 @@ static int __init acpi_parse_fadt(struct 
> > acpi_table_header *table)
> >             if (fadt->xpm_timer_block.space_id ==
> >                 ACPI_ADR_SPACE_SYSTEM_IO) {
> >                     pmtmr_ioport = fadt->xpm_timer_block.address;
> > -                   pmtmr_width = fadt->xpm_timer_block.bit_width;
> > +                   if (fadt->flags & ACPI_FADT_32BIT_TIMER)
> > +                           pmtmr_width = 32;
> > +                   else
> > +                           pmtmr_width = 24;
> 
> I think disagreement of the two wants logging, and you want to
> default to using the smaller of the two (or even to ignoring the
> timer altogether). Then there wants to be a way to override
> (unless we already have one) our defaulting, in case it's wrong.

TBH, I presume timer_block will always return 32bits, because that's
the size of the register. Then the timer can implement less bits than
the full size of the register, and that's what gets signaled using the
ACPI flags. What we care about here is the number of bits used by the
timer, not the size of the register.

I think we should only ignore the timer if pm_timer_block.bit_width <
pmtmr_width.

Printing a (debug) message when those values disagree is fine, but I
bet it's going to trigger always when the implemented timer is only
using 24bits.

Roger.



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.