Re: [PATCH] serdev: Don't claim unsupported serial devices

Hans de Goede
2019-12-18T10:05:50Z

Hi,

On 18-12-2019 07:56, Punit Agrawal wrote:
> Serdev sub-system claims all serial devices that are not already
> enumerated. As a result, no device node is created for serial port on
> certain boards such as the Apollo Lake based UP2. This has the
> unintended consequence of not being able to raise the login prompt via
> serial connection.
>
> Introduce a blacklist to reject devices that should not be treated as
> a serdev device. Add the Intel HS UART peripheral ids to the blacklist
> to bring back serial port on SoCs carrying them.
>
> Cc: stable@vger.kernel.org
> Signed-off-by: Punit Agrawal <punit1.agrawal@toshiba.co.jp>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Cc: Johan Hovold <johan@kernel.org>
> Cc: Hans de Goede <hdegoede@redhat.com>

Thank you for addressing this long standing issue.

The basic approach here looks good to me, once the minor
comments from other reviewers are addressed you can add my:

Acked-by: Hans de Goede <hdegoede@redhat.com>

to the next version.

Regards,

Hans

> ---
>
> Hi,
>
> The patch has been updated based on feedback recieved on the RFC[0].
>
> Please consider merging if there are no objections.
>
> Thanks,
> Punit
>
> [0] https://www.spinics.net/lists/linux-serial/msg36646.html
>
> drivers/tty/serdev/core.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/drivers/tty/serdev/core.c b/drivers/tty/serdev/core.c
> index 226adeec2aed..0d64fb7d4f36 100644
> --- a/drivers/tty/serdev/core.c
> +++ b/drivers/tty/serdev/core.c
> @@ -663,6 +663,12 @@ static acpi_status acpi_serdev_register_device(struct serdev_controller *ctrl,
> return AE_OK;
> }
>
> +static const struct acpi_device_id serdev_blacklist_devices[] = {
> + {"INT3511", 0},
> + {"INT3512", 0},
> + { },
> +};
> +
> static acpi_status acpi_serdev_add_device(acpi_handle handle, u32 level,
> void *data, void **return_value)
> {
> @@ -675,6 +681,10 @@ static acpi_status acpi_serdev_add_device(acpi_handle handle, u32 level,
> if (acpi_device_enumerated(adev))
> return AE_OK;
>
> + /* Skip if black listed */
> + if (!acpi_match_device_ids(adev, serdev_blacklist_devices))
> + return AE_OK;
> +
> if (acpi_serdev_check_resources(ctrl, adev))
> return AE_OK;
>
>