Received: by 2002:a05:6358:1087:b0:cb:c9d3:cd90 with SMTP id j7csp7027679rwi; Mon, 24 Oct 2022 08:59:03 -0700 (PDT) X-Google-Smtp-Source: AMsMyM63kTeMZ1MrUygJlFP/MfYjh612i58e+C3q8PlBLpCfMQFObKsUSHC24OSzz0gygovxohuK X-Received: by 2002:a05:6402:3705:b0:454:e006:82 with SMTP id ek5-20020a056402370500b00454e0060082mr31206427edb.360.1666627143288; Mon, 24 Oct 2022 08:59:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666627143; cv=none; d=google.com; s=arc-20160816; b=PAVhWA2bozLt9SnuwJBC+hpQk2slkTpyU9IrS1rmO0UrMZra1brZ4juy7ixpAWxShi aufr6GCZn2odqIE0nN1u9d7oSS8OuHG3aIHLE0SlvInYZIdpcyY5lgFIE3TmRuC/+1pD tg2PXgzpmlE205re2X+1nLgCMqHyYfgmP9Jj5rQG1e6TpkAArdEeRcG15c9/quanmc8Q OdVrk5DyGl9WAG0kQDrtrPxuuyoG2nA2KAiqlMTPvW7VjyIjbxQ23LGVYS11dPT+Wpsd 4zZSnAj8poYo38Wl2HpYnyN9Aqe/QBUnxlcfAKPQqqsD/qbhopmq3kI5PEDZSDSartwa vFAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:references :cc:to:from:content-language:subject:user-agent:mime-version:date :message-id:dkim-signature; bh=wkknqfE8N8iJl5XEQQmyIBiDl6R0jV4HGlicMSZl2gQ=; b=dIdgeL3D9+FcpTkgyTRVR0x4Gqmv4SBDVSfyrQFuGUVEorfenihZDiZoj08sTV6U+c xrz+ImOfaAVtIMQwrgrw0jZHwUzhYSHSaOE5rr4XU13BWC+PN1GZ7Lf9Z/M9sCNPVsfx 6PstgmvaOhO79YliAm2cQ9lTekNal+5e+tpsa0cewf7LhJjBmI6xOCj0hpNCZjmjLO9W tCHjcOmCVGyD8XtoCnIi1+/OW2t6yuqnq241oszOm86sDbJ9MOd2yEPKW3CNHbIZPRjb KumY3qrLZmxzBTWMPG8FwCwpNxIULgSBc7dbC6q3CgkBB+LTx5dl9nFGu4TjBN4zTkyW 5c4A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@daynix-com.20210112.gappssmtp.com header.s=20210112 header.b="L0/1RRlk"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id nd32-20020a17090762a000b0078e1e216396si143267ejc.66.2022.10.24.08.58.36; Mon, 24 Oct 2022 08:59:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@daynix-com.20210112.gappssmtp.com header.s=20210112 header.b="L0/1RRlk"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230138AbiJXPoM (ORCPT + 99 others); Mon, 24 Oct 2022 11:44:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53152 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230257AbiJXPnp (ORCPT ); Mon, 24 Oct 2022 11:43:45 -0400 Received: from mail-pj1-f44.google.com (mail-pj1-f44.google.com [209.85.216.44]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2FFB295E52 for ; Mon, 24 Oct 2022 07:35:25 -0700 (PDT) Received: by mail-pj1-f44.google.com with SMTP id h14so8246903pjv.4 for ; Mon, 24 Oct 2022 07:35:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=daynix-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:in-reply-to:references:cc:to:from :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=wkknqfE8N8iJl5XEQQmyIBiDl6R0jV4HGlicMSZl2gQ=; b=L0/1RRlkmYmA8CLIifUuUlVJ74Kz+AS0tmR8KIQvxLhzv2mfq4GRaFSzf6y7ExNPMt 0JMZA7nNRAT//74v5qJU7bQBu9l+wJClqFc6pDeSKQ+AYJN+EOAUDDNv6XD3AjR9AOaH woTW5Wvk4jghdUjKZn0Szj7uOj8nN2IpQjXF9jr/bA963Cnftma2v/vygHFtKVZjQRh8 2nGaht+ZSPBBxljf4ve53oU6E/u+s0bGvW8WQ+rw1qYeRn33wNMm3GPyocuKQd6eLN0X tvkX/rZlb+YA+EpML8EgckKck+AwIrn6gKUISkLAzey62Co2gw5l77imQVOsx3pNb9sY BwXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:references:cc:to:from :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=wkknqfE8N8iJl5XEQQmyIBiDl6R0jV4HGlicMSZl2gQ=; b=piI95U14i+RBG5vJu28RGc4xxsbruNxgxYACq/MoTnGCMEfSEB6/oxjt4Dox7kw2Qj uCJcruT9xAiX/Sfi3a6h08vQlcyHKLS9hBi0Z4FcDdWfpkath8Ggi/NHWHiI4nknBoWN UlLN8yUsYLAaFzNdzvbifyZxr+YkkD/ZqR0zDjGB9gG2KQQ4G3p0uUr4rSTfVNVZbRZU 0uXW2x7dGO8FoJl1mZv0TfXHrcHPzjxQ1fwczl1VcSTe2e7E2VozIoJRe/NoRGd3xljW XRjswY1ckQtYRhcDsrGW3vIX9+aoFUp1ScJKHKOZFSSnsMrIanKCVqpgj5/k7Ahr/zDI QjcQ== X-Gm-Message-State: ACrzQf1J8FuZQ78SwRM5jcVWOUcaZ9iuaeDiO5L287GQC1CoOtRXOZLS jr3wTYAQbaTYB1+0vNbqQCXXoA== X-Received: by 2002:a17:90a:b28d:b0:20d:6790:19fa with SMTP id c13-20020a17090ab28d00b0020d679019famr73827828pjr.68.1666621885509; Mon, 24 Oct 2022 07:31:25 -0700 (PDT) Received: from ?IPV6:2400:4050:c360:8200:8ae8:3c4:c0da:7419? ([2400:4050:c360:8200:8ae8:3c4:c0da:7419]) by smtp.gmail.com with ESMTPSA id l3-20020a170903244300b00174f7d107c8sm19771856pls.293.2022.10.24.07.31.17 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 24 Oct 2022 07:31:24 -0700 (PDT) Message-ID: <7373e258-f7cc-4416-9b1c-c8c9dab59ada@daynix.com> Date: Mon, 24 Oct 2022 23:31:16 +0900 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.3 Subject: Re: [PATCH 00/22] Fallback to native backlight Content-Language: en-US From: Akihiko Odaki To: Hans de Goede Cc: David Airlie , Daniel Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Jonathan Corbet , "Rafael J. Wysocki" , Len Brown , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin , "Lee, Chun-Yi" , Mark Gross , Corentin Chary , Cezary Jackiewicz , Matthew Garrett , =?UTF-8?Q?Pali_Roh=c3=a1r?= , Jonathan Woithe , Ike Panhc , Daniel Dadap , Kenneth Chan , Mattia Dongili , Henrique de Moraes Holschuh , Azael Avalos , Lee Jones , Daniel Thompson , Jingoo Han , Helge Deller , Robert Moore , dri-devel@lists.freedesktop.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, intel-gfx@lists.freedesktop.org, platform-driver-x86@vger.kernel.org, acpi4asus-user@lists.sourceforge.net, ibm-acpi-devel@lists.sourceforge.net, linux-fbdev@vger.kernel.org, devel@acpica.org References: <20221024113513.5205-1-akihiko.odaki@daynix.com> <746e5cc6-516f-8f69-9d4b-8fe237de8fd6@redhat.com> <60672af8-05d2-113c-12b9-d635608be0dd@redhat.com> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2022/10/24 23:06, Akihiko Odaki wrote: > On 2022/10/24 22:21, Hans de Goede wrote: >> Hi, >> >> On 10/24/22 14:58, Akihiko Odaki wrote: >>> On 2022/10/24 20:53, Hans de Goede wrote: >>>> Hi Akihiko, >>>> >>>> On 10/24/22 13:34, Akihiko Odaki wrote: >>>>> Commit 2600bfa3df99 ("ACPI: video: Add >>>>> acpi_video_backlight_use_native() >>>>> helper") and following commits made native backlight unavailable if >>>>> CONFIG_ACPI_VIDEO is set and the backlight feature of ACPI video is >>>>> unavailable, which broke the backlight functionality on Lenovo >>>>> ThinkPad >>>>> C13 Yoga Chromebook. Allow to fall back to native backlight in such >>>>> cases. >>>> >>>> I appreciate your work on this, but what this in essence does is >>>> it allows 2 backlight drivers (vendor + native) to get registered >>>> for the same panel again. While the whole goal of the backlight >>>> refactor >>>> series landing in 6.1 was to make it so that there always is only >>>> *1* backlight device registered instead of (possibly) registering >>>> multiple and letting userspace figure it out. It is also important >>>> to only always have 1 backlight device per panel for further >>>> upcoming changes. >>>> >>>> So nack for this solution, sorry. >>>> >>>> I am aware that this breaks backlight control on some Chromebooks, >>>> this was already reported and I wrote a long reply explaining why >>>> things are done the way they are done now and also suggesting >>>> 2 possible (much simpler) fixes, see: >>>> https://lore.kernel.org/linux-acpi/42a5f2c9-a1dc-8fc0-7334-fe6c390ecfbb@redhat.com/ >>>> >>>> Unfortunately the reported has not followed-up on this and >>>> I don't have the hardware to test this myself. >>>> >>>> Can you please try implementing 1 of the fixes suggested there >>>> and then submit that upstream ? >>>> >>>> Regards, >>>> >>>> Hans >>>> >>> >>> Hi Hans, >>> >>> Thanks for reviewing and letting me know the prior attempt. >>> >>> In this case, there is only a native backlight device and no vendor >>> backlight device so the duplication of backlight devices does not >>> happen. I think it is better to handle such a case without quirks. >> >> Adding a single heuristic for all chromebooks is something completely >> different >> then adding per model quirks which indeed ideally should be avoided >> (but this >> is not always possible). >> >>> I understand it is still questionable to cover the case by allowing >>> duplication when both of a vendor backlight device and native one. To >>> explain my understanding and reasoning for *not* trying to apply the >>> de-duplication rule to the vendor/native combination, let me first >>> describe that the de-duplication which happens in >>> acpi_video_get_backlight_type() is a heuristics and limited. >>> >>> As the background of acpi_video_get_backlight_type(), there is an >>> assumption that it should be common that both of the firmware, >>> implementing ACPI, and the kernel have code to drive backlight. In >>> the case, the more reliable one should be picked instead of using >>> both, and that is what the statements in `if (video_caps & >>> ACPI_VIDEO_BACKLIGHT)` does. >>> >>> However, the method has two limitations: >>> 1. It does not cover the case where two backlight devices with the >>> same type exist. >> >> This only happens when there are 2 panels; or 2 gpus driving a single >> panel >> which are both special cases where we actually want 2 backlight devices. >> >>> 2. The underlying assumption does not apply to vendor/native >>> combination. >>> >>> Regarding the second limitation, I don't even understand the >>> difference between vendor and native. My guess is that a vendor >>> backlight device uses vendor-specific ACPI interface, and a native >>> one directly uses hardware registers. If my guess is correct, the >>> difference between vendor and native does not imply that both of them >>> are likely to exist at the same time. As the conclusion, there is no >>> more motivation to try to de-duplicate the vendor/native combination >>> than to try to de-duplicate combination of devices with a single type. >>> >>> Of course, it is better if we could also avoid registering two >>> devices with one type for one physical device. Possibly we can do so >>> by providing a parameter to indicate that it is for the same >>> "internal" backlight to devm_backlight_device_register(), and let the >>> function check for the duplication. However, this rule may be too >>> restrict, or may have problems I missed. >>> >>> Based on the discussion above, we can deduce three possibilities: >>> a. There is no reason to distinguish vendor and native in this case, >>> and we can stick to my current proposal. >>> b. There is a valid reason to distinguish vendor and native, and we >>> can adopt the same strategy that already adopted for ACPI >>> video/vendor combination. >>> c. We can implement de-duplication in devm_backlight_device_register(). >>> d. The other possible options are not worth, and we can just >>> implement quirks specific to Chromebook/coreboot. >>> >>> In case b, it should be noted that vendor and native backlight device >>> do not require ACPI video, and CONFIG_ACPI_VIDEO may not be enabled. >>> In the case, the de-duplication needs to be implemented in backlight >>> class device. >> >> I have been working on the ACPI/x86 backlight detection code since >> 2015, please trust >> me when I say that allowing both vendor + native backlight devices at >> the same time >> is a bad idea. >> >> I'm currently in direct contact with the ChromeOS team about fixing >> the Chromebook >> backlight issue introduced in 6.1-rc1. >> >> If you wan to help, please read: >> >> https://lore.kernel.org/linux-acpi/42a5f2c9-a1dc-8fc0-7334-fe6c390ecfbb@redhat.com/ >> >> And try implementing 1 if the 2 solutions suggested there. >> >> Regards, >> >> Hans > > Hi, > > I just wanted to confirm your intention that we should distinguish > vendor and native. In the case I think it is better to modify > __acpi_video_get_backlight_type() and add "native_available" check in > case of no ACPI video as already done for the ACPI video/native > combination. > > Unfortunately this has one pitfall though: it does not work if > CONFIG_ACPI_VIDEO is disabled. If it is, acpi_video_get_backlight_type() > always return acpi_backlight_vendor, and > acpi_video_backlight_use_native() always returns true. It is not a > regression but the current behavior. Fixing it requires also refactoring > touching both of ACPI video and backlight class driver so I guess I'm > not an appropriate person to do that, and I should just add > "native_available" check to __acpi_video_get_backlight_type(). > > Does that sound good? Well, it would not be that easy since just adding native_available cannot handle the case where the vendor driver gets registered first. Checking with "native_available" was possible for ACPI video/vendor combination because ACPI video registers its backlight after some delay. I still think it does not overcomplicate things to modify __acpi_video_get_backlight_type() so that it can use both of vendor and native as fallback while preventing duplicate registration. Regards, Akihiko Odaki > > Regards, > Akihiko Odaki > >>  > >> >>>>> Akihiko Odaki (22): >>>>>     drm/i915/opregion: Improve backlight request condition >>>>>     ACPI: video: Introduce acpi_video_get_backlight_types() >>>>>     LoongArch: Use acpi_video_get_backlight_types() >>>>>     platform/x86: acer-wmi: Use acpi_video_get_backlight_types() >>>>>     platform/x86: asus-laptop: Use acpi_video_get_backlight_types() >>>>>     platform/x86: asus-wmi: Use acpi_video_get_backlight_types() >>>>>     platform/x86: compal-laptop: Use acpi_video_get_backlight_types() >>>>>     platform/x86: eeepc-laptop: Use acpi_video_get_backlight_types() >>>>>     platform/x86: fujitsu-laptop: Use acpi_video_get_backlight_types() >>>>>     platform/x86: ideapad-laptop: Use acpi_video_get_backlight_types() >>>>>     platform/x86: msi-laptop: Use acpi_video_get_backlight_types() >>>>>     platform/x86: msi-wmi: Use acpi_video_get_backlight_types() >>>>>     platform/x86: nvidia-wmi-ec-backlight: Use >>>>>       acpi_video_get_backlight_types() >>>>>     platform/x86: panasonic-laptop: Use >>>>> acpi_video_get_backlight_types() >>>>>     platform/x86: samsung-laptop: Use acpi_video_get_backlight_types() >>>>>     platform/x86: sony-laptop: Use acpi_video_get_backlight_types() >>>>>     platform/x86: thinkpad_acpi: Use acpi_video_get_backlight_types() >>>>>     platform/x86: toshiba_acpi: Use acpi_video_get_backlight_types() >>>>>     platform/x86: dell-laptop: Use acpi_video_get_backlight_types() >>>>>     platform/x86: intel_oaktrail: Use acpi_video_get_backlight_types() >>>>>     ACPI: video: Remove acpi_video_get_backlight_type() >>>>>     ACPI: video: Fallback to native backlight >>>>> >>>>>    Documentation/gpu/todo.rst                    |  8 +-- >>>>>    drivers/acpi/acpi_video.c                     |  2 +- >>>>>    drivers/acpi/video_detect.c                   | 54 >>>>> ++++++++++--------- >>>>>    drivers/gpu/drm/i915/display/intel_opregion.c |  3 +- >>>>>    drivers/platform/loongarch/loongson-laptop.c  |  4 +- >>>>>    drivers/platform/x86/acer-wmi.c               |  2 +- >>>>>    drivers/platform/x86/asus-laptop.c            |  2 +- >>>>>    drivers/platform/x86/asus-wmi.c               |  4 +- >>>>>    drivers/platform/x86/compal-laptop.c          |  2 +- >>>>>    drivers/platform/x86/dell/dell-laptop.c       |  2 +- >>>>>    drivers/platform/x86/eeepc-laptop.c           |  2 +- >>>>>    drivers/platform/x86/fujitsu-laptop.c         |  4 +- >>>>>    drivers/platform/x86/ideapad-laptop.c         |  2 +- >>>>>    drivers/platform/x86/intel/oaktrail.c         |  2 +- >>>>>    drivers/platform/x86/msi-laptop.c             |  2 +- >>>>>    drivers/platform/x86/msi-wmi.c                |  2 +- >>>>>    .../platform/x86/nvidia-wmi-ec-backlight.c    |  2 +- >>>>>    drivers/platform/x86/panasonic-laptop.c       |  2 +- >>>>>    drivers/platform/x86/samsung-laptop.c         |  2 +- >>>>>    drivers/platform/x86/sony-laptop.c            |  2 +- >>>>>    drivers/platform/x86/thinkpad_acpi.c          |  4 +- >>>>>    drivers/platform/x86/toshiba_acpi.c           |  2 +- >>>>>    drivers/video/backlight/backlight.c           | 18 +++++++ >>>>>    include/acpi/video.h                          | 21 ++++---- >>>>>    include/linux/backlight.h                     |  1 + >>>>>    25 files changed, 85 insertions(+), 66 deletions(-) >>>>> >>>> >>> >>