On Fri, Oct 11, 2024, at 11:12, Andy Shevchenko wrote: > On Fri, Oct 11, 2024 at 09:59:46AM +0000, Arnd Bergmann wrote: >> On Fri, Oct 11, 2024, at 09:53, Andy Shevchenko wrote: >> > On Fri, Oct 11, 2024 at 06:18:18AM +0000, Arnd Bergmann wrote: >> >> + if (!IS_ENABLED(CONFIG_HAS_IOPORT)) { >> >> + *value = BIT_MASK(width); >> >> + return AE_NOT_IMPLEMENTED; >> > >> > Perhaps it has already been discussed, but why do we need to file value with >> > semi-garbage when we know it's invalid anyway? >> >> It's not strictly necessary, just precaution for possible callers >> that use the resulting data without checking the error code. > > Do you have any examples of that in the kernel? drivers/acpi/processor_throttling.c: acpi_os_read_port((acpi_io_address) throttling->status_register. -- drivers/cpufreq/acpi-cpufreq.c- drivers/cpufreq/acpi-cpufreq.c: acpi_os_read_port(reg->address, &val, reg->bit_width); $ git grep ^[^=]*acpi_os_read_port drivers/acpi/processor_throttling.c: acpi_os_read_port(\ (acpi_io_address) throttling->status_register. drivers/cpufreq/acpi-cpufreq.c: acpi_os_read_port(reg->address, &val, reg->bit_width); >> The all-ones data is what an x86 PC would see when an I/O >> port is read that is not connected to any device. > > Yes, but it's not what your code does. My bad, I was confused about what BIT_MASK() does. I'll change it to "GENMASK(width, 0)", which should do what I intended. Arnd