[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.
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |