[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v5] x86: detect CMOS aliasing on ports other than 0x70/0x71
On 03.04.2023 13:44, Roger Pau Monné wrote: > On Mon, Apr 03, 2023 at 01:26:41PM +0200, Jan Beulich wrote: >> On 03.04.2023 13:09, Roger Pau Monné wrote: >>> On Thu, Mar 30, 2023 at 12:40:38PM +0200, Jan Beulich wrote: >>>> +bool is_cmos_port(unsigned int port, unsigned int bytes, const struct >>>> domain *d) >>>> +{ >>>> + unsigned int offs; >>>> + >>>> + if ( !is_hardware_domain(d) || >>>> + !(acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_CMOS_RTC) ) >>>> + return port <= RTC_PORT(1) && port + bytes > RTC_PORT(0); >>>> + >>>> + if ( acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_CMOS_RTC ) >>>> + return false; >>>> + >>>> + for ( offs = 2; offs <= cmos_alias_mask; offs <<= 1 ) >>>> + { >>>> + if ( !(offs & cmos_alias_mask) ) >>>> + continue; >>>> + if ( port <= RTC_PORT(offs | 1) && port + bytes > RTC_PORT(offs) ) >>>> + return true; >>>> + } >>> >>> Maybe I'm confused, but doesn't this loop start at RTC_PORT(2), and >>> hence you need to check for the RTC_PORT(0,1) pair outside of the >>> loop? >> >> The loop starts at offset 2, yes, but see the initial if() in the >> function. Or at least I thought I got that right, but it looks like >> I didn't (failed attempt to try to address a specific request of >> yours, iirc). > > Hm, doesn't that first if() cause that on all systems with an RTC only > PORTS(0,1) are allowed? Indeed, hence why I said "failed attempt". Looking at it now I really don't know what I was thinking when writing it that way. Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |