Re: Regression on linux-next (next-20250708)

Damien Le Moal
2025-07-28T22:20:39Z

On 7/29/25 01:37, Borah, Chaitanya Kumar wrote:
>> The question is though: do we want the user to "ignore" hotplug capability and
>> instead priviledge low power states. I guess we should have such capability.
>>
>
> Atleast a case can be made for debugging and testing use-cases.
>
>>> Also, are there other ways to detect a port is external other than
>>> receiving EOPNOTSUPP on the sysfs write?
>>
>> There is not. But it would be easy to add a sysfs port attribute, e.g.
>> /sys/class/ata_port/ata1/external which says "0" for regular ports and "1" for
>> external ports. We could also make this attribute writable in the case of
>> external port so that doing:
>>
>> echo 0 > /sys/class/ata_port/ata1/external
>>
>> forces the kernel to ignore the external nature of the port and allow user
>> control of the port/device LPM state.
>>
>> Would that work for your case ?
>>
>
> Something like this should solve our problem.

I looked at this, but it is not a trivial change because of how we manage
features, which is that we do not really differentiate between "port/device
supports feature X" and "Disable X because of Y". So disabling something at
runtime instead of at device scan time (or revalidation) needs some code
massaging to remember the initial "port/device supports feature X".

One thing that would be easy to add is a "libata.force=ignore_external_ports"
module parameter to completely ignore the external nature of ports. That
probably will be the easiest solution for your case.