lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <6615ab2a-3267-477c-ad1b-a72d5a4244e0@roeck-us.net>
Date: Sat, 24 Feb 2024 07:49:13 -0800
From: Guenter Roeck <linux@...ck-us.net>
To: Mark Pearson <mpearson@...ebb.ca>, David Ober <dober6023@...il.com>,
 wim@...ux-watchdog.org
Cc: linux-kernel@...r.kernel.org, linux-watchdog@...r.kernel.org,
 David Ober <dober@...ovo.com>
Subject: Re: [PATCH v3] Watchdog: New module for ITE 5632 watchdog

On 2/23/24 16:43, Mark Pearson wrote:
> Thanks Guenter
> 
> On Fri, Feb 23, 2024, at 3:21 PM, Guenter Roeck wrote:
>> On 2/23/24 11:58, Mark Pearson wrote:
>>> On Fri, Jul 21, 2023, at 8:29 AM, David Ober wrote:
>>>> This modules is to allow for the new ITE 5632 EC chip
>>>> to support the watchdog for initial use in the Lenovo SE10
>>>>
>>>> Signed-off-by: David Ober <dober6023@...il.com>
>>>>
>>>> V2 Fix stop to deactivate wdog on unload of module
>>>> V2 Remove extra logging that is not needed
>>>> V2 change udelays to usleep_range
>>>> V2 Changed to now request region on start and release on stop instead
>>>>      of for every ping and read/write
>>>> V3 add counter to while loops so it will not hang
>>>> V3 rework code to use platform_device_register_simple
>>>> V3 rework getting the Chip ID to remove duplicate code and close IO
>>>> V3 change some extra logging to be debug only
>>>> ---
>> [ ... ]
>>>> +config ITE5632_WDT
>>>> +        tristate "ITE 5632"
>>>> +        select WATCHDOG_CORE
>>>> +        help
>>>> +          If you say yes here you get support for the watchdog
>>>> +          functionality of the ITE 5632 eSIO chip.
>>>> +
>>>> +          This driver can also be built as a module. If so, the module
>>>> +          will be called ite5632_wdt.
>>>> +
>>
>> [ ... ]
>>
>>>
>>>
>>> Please let us know if there is anything else needed to get this accepted. Happy to address any feedback.
>>>
>>
>> I am sure I commented on this before. The fact that the Lenovo SE10 uses an
>> ITE 5632 controller is completely irrelevant. Lenovo could decide tomorrow to
>> replace the ITE chip with a Nuvoton chip, use the same API to talk with it,
>> and the watchdog would work perfectly fine.
>>
>> This is a driver for the watchdog implemented in the embedded controller
>> on Lenovo SE10. It is not a watchdog driver for ITE5632. Again, the EC chip
>> used in that Lenovo system is completely irrelevant, even more so since
>> this seems to be one of those undocumented ITE chips which officially
>> don't even exist. Claiming that this would be a watchdog driver for ITE5632
>> would be not only misleading but simply wrong.
>>
>> It seems that we can not agree on this. That means that, from my perspective,
>> there is no real path to move forward. Wim will have to decide if and how
>> to proceed.
>>
> My apologies - I hadn't realised that was the issue (my fault for missing it). Appreciate the clarification.
> 
> Is this as simple as renaming this driver as (for example) a lenovo_se_wdt device, and adding in the appropriate checking during the init that it is only used on Lenovo SE10 platforms?
> 

There would have to be additional changes. For example, the driver does not
return errors if its wait loops time out, and it doesn't reserve the IO address
range used by the chip. Tying the wait time to the number of wait loops
and not to the elapsed time is also something that would need to be explained.

Also, I notice that the communication is similar to the communication with
Super-IO chips from ITE, but not the same. Specifically, the unlock key is
the same, but the lock key is different. This means that the code may unlock
other chips from ITE in a given system, but not lock them. Some of those chips
are ... let's call it less then perfect. They will act oddly on the bus if left
unlocked. Some of those chips will act oddly if an attempt is made to lock them
after unlocking them, and they have to remain unlocked to avoid corrupting
communication with other chips on the same bus. The impact on other chips
from the same vendor will have to be explored further.

> I don't understand the concern if a different chip was used - wouldn't that need a different driver at that point?
> 

Why would that be the case ?

Maybe I am missing something essential. If you insist to tie this driver to the
ITE5632 and not to the system, you will have to provide additional information.
The chip does not even exist in public, so no one but you and ITE really knows
what its capabilities are. Is this is a chip which is used, or is going to be
used, in a variety of systems, possibly including systems from other vendors ?
Is the communication between main CPU and the chip tied to the chip and will/may
only be used with this chip or variants of it ? Is the ITE5632 a SuperIO-like
chip with fixed capabilities, or is it a programmed micro-controller ?

To a large degree all that is due to ITE and its customers not providing information
about their chips to the public. Due to that lack of information, my assumption was
that it is a programmed micro-controller. The code itself suggests, through the
use of the term "EC" in the driver, that it is an embedded controller, not a Suoer-IO
or other fixed-capability chip. If that is not the case, and if the communication
with the chip is fixed and not programmable, you'll have to explain that.

If it is an EC, the protocol is defined by its microcode, and the driver needs
to be tied to the systems using that microcode. If it is a fixed-capability chip,
the driver should not suggest that it communicates with an embedded controller
but with a fixed-capability chip.

Thanks,
Guenter


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ