|
[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 |