Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp6586405iob; Wed, 11 May 2022 00:22:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxFgVhjvS5IXJKcPTJcp441wm+Xb2kq9vecnll1os0kiZ9VuNnRPnsdzaqF34tYNbL2mGOg X-Received: by 2002:a17:90b:3b81:b0:1dc:32ac:a66b with SMTP id pc1-20020a17090b3b8100b001dc32aca66bmr3880218pjb.49.1652253779407; Wed, 11 May 2022 00:22:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652253779; cv=none; d=google.com; s=arc-20160816; b=JeJ2oxBhMhAz8j/DuhG9L5WMWf0PpeKUQwxFZZrRrKJddYYj7sSUyiYoqbjJuDydFy kRAyh+yfouTrHLWevzwX8kJQQbB5Mz1JuWFs+5FRB+ypGBKXaehpG/ZpOVaiAYqWHM9O 7Xros8f2TBHVAzD1jb7xbqV8LN9QpEr24OoG7mx71rb+7hfMOyaZoIo9jhv/gcqbRzm8 eif6DJN36kihX/MYVnArdyzmSr4s3LqXZycwMV283RMHc9ELStMJbCmo8yVOGHhrfLEC 1Z05giZrLOjMPzVdOR0RVy7ShR8EQihjzRaY5xD7CilaogYfW1XF0k7rSEUwJTvZs3BD 9WoA== 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:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id:dkim-signature; bh=arXQR9RA80tLXKmu33RYWppSPN+xDoh5MJosgwaWAgw=; b=fbNSk8nrsr59qqz3mfFn6YL1dLvtdUkGaJbQ2DtfenQNZ52edBZOnY/lyyceSQGvrT 8lHuQOLHcnKE2jySnQHNCj6sV7ArVPscwV6k89cLt76AGlkPa1IOyd8yYxUMHksm52iJ hgbx1+HiAm29zjTua9EVPUtUUUP+lw94hVKUdUaorA3T+XTR7PRq8hlOCQvP56gX/W6z mJedZofnJ12CJ8O/IV8CIlTKLGVk80RlCLPdr0qvXXfswkei4fII6ZeOv/wwYX7AFn3B HiEHAJkL859O+LgVkEqOJ8gNRuc8EmpHxGWdvVEJjedLl+lU5zWW1tBt9q5ZBbJZ5SxF m9wA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcdkim header.b=rglOEs1K; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id p4-20020a63e644000000b003c69e8eb047si2041153pgj.140.2022.05.11.00.22.46; Wed, 11 May 2022 00:22:59 -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=@quicinc.com header.s=qcdkim header.b=rglOEs1K; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235147AbiEJVdd (ORCPT + 99 others); Tue, 10 May 2022 17:33:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49748 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231445AbiEJVdc (ORCPT ); Tue, 10 May 2022 17:33:32 -0400 Received: from alexa-out-sd-01.qualcomm.com (alexa-out-sd-01.qualcomm.com [199.106.114.38]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 04E9018430F; Tue, 10 May 2022 14:33:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1652218411; x=1683754411; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=arXQR9RA80tLXKmu33RYWppSPN+xDoh5MJosgwaWAgw=; b=rglOEs1KzzVKVEwFLsnXGQwirZ7gqI2Olfp0vFvIJ0H/0C+KMOSmhzO6 kmSqhPOhWt2Z9YATDQwn2ZQihPu4cHvPAd0rxq3Cze/L7mH2ZkEX5N17h nNu2AlYbKBsn0kvmtxyg6Vj27n/F1wr1ukXfMj0QuyXLiMs1VdgbwfOBz E=; Received: from unknown (HELO ironmsg-SD-alpha.qualcomm.com) ([10.53.140.30]) by alexa-out-sd-01.qualcomm.com with ESMTP; 10 May 2022 14:33:30 -0700 X-QCInternal: smtphost Received: from nasanex01c.na.qualcomm.com ([10.47.97.222]) by ironmsg-SD-alpha.qualcomm.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 May 2022 14:33:30 -0700 Received: from nalasex01a.na.qualcomm.com (10.47.209.196) by nasanex01c.na.qualcomm.com (10.47.97.222) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.22; Tue, 10 May 2022 14:33:29 -0700 Received: from [10.38.241.82] (10.80.80.8) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.22; Tue, 10 May 2022 14:33:26 -0700 Message-ID: <685a547b-175e-68db-a5f6-0e85dacd075a@quicinc.com> Date: Tue, 10 May 2022 14:33:24 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.6.2 Subject: Re: [RFC PATCH] drm/edid: drm_add_modes_noedid() should set lowest resolution as preferred Content-Language: en-US To: Doug Anderson CC: Jani Nikula , dri-devel , =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= , Sankeerth Billakanti , Thomas Zimmermann , "David Airlie" , linux-arm-msm , Stephen Boyd , Dmitry Baryshkov , "Aravind Venkateswaran (QUIC)" , "Kuogee Hsieh (QUIC)" , LKML References: <20220426132121.RFC.1.I31ec454f8d4ffce51a7708a8092f8a6f9c929092@changeid> <874k22lxmh.fsf@intel.com> <8ea03441-b835-f5db-5cc3-85e5330dfe3f@quicinc.com> From: Abhinav Kumar In-Reply-To: Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) To nalasex01a.na.qualcomm.com (10.47.209.196) X-Spam-Status: No, score=-5.3 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED 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 Hi Doug On 5/10/2022 1:53 PM, Doug Anderson wrote: > Hi, > > On Fri, May 6, 2022 at 9:33 AM Abhinav Kumar wrote: >> >> Hi Jani >> >> On 5/6/2022 4:16 AM, Jani Nikula wrote: >>> On Thu, 05 May 2022, Doug Anderson wrote: >>>> Ville, >>>> >>>> On Tue, Apr 26, 2022 at 1:21 PM Douglas Anderson wrote: >>>>> >>>>> If we're unable to read the EDID for a display because it's corrupt / >>>>> bogus / invalid then we'll add a set of standard modes for the >>>>> display. When userspace looks at these modes it doesn't really have a >>>>> good concept for which mode to pick and it'll likely pick the highest >>>>> resolution one by default. That's probably not ideal because the modes >>>>> were purely guesses on the part of the Linux kernel. >>>>> >>>>> Let's instead set 640x480 as the "preferred" mode when we have no EDID. >>>>> >>>>> Signed-off-by: Douglas Anderson >>>>> --- >>>>> >>>>> drivers/gpu/drm/drm_edid.c | 9 +++++++++ >>>>> 1 file changed, 9 insertions(+) >>>> >>>> Someone suggested that you might have an opinion on this patch and >>>> another one I posted recently [1]. Do you have any thoughts on it? >>>> Just to be clear: I'm hoping to land _both_ this patch and [1]. If you >>>> don't have an opinion, that's OK too. >>>> >>>> [1] https://lore.kernel.org/r/20220426114627.2.I4ac7f55aa446699f8c200a23c10463256f6f439f@changeid >>> >>> There are a number of drivers with combos: >>> >>> drm_add_modes_noedid() >>> drm_set_preferred_mode() >>> >>> which I think would be affected by the change. Perhaps you should just >>> call drm_set_preferred_mode() in your referenced patch? > > I'm going to do that and I think it works out pretty well. Patch is at: > > https://lore.kernel.org/r/20220510135101.v2.1.I31ec454f8d4ffce51a7708a8092f8a6f9c929092@changeid > > >> So it seems like many drivers handle the !edid case within their >> respective get_modes() call which probably is because they know the max >> capability of their connector and because they know which mode should be >> set as preferred. But at the same time, perhaps the code below which >> handles the count == 0 case should be changed like below to make sure we >> are within the max_width/height of the connector (to handle the first >> condition)? >> >> diff --git a/drivers/gpu/drm/drm_probe_helper.c >> b/drivers/gpu/drm/drm_probe_helper.c >> index 682359512996..6eb89d90777b 100644 >> --- a/drivers/gpu/drm/drm_probe_helper.c >> +++ b/drivers/gpu/drm/drm_probe_helper.c >> @@ -517,7 +517,8 @@ int drm_helper_probe_single_connector_modes(struct >> drm_connector *connector, >> >> if (count == 0 && (connector->status == >> connector_status_connected || >> connector->status == connector_status_unknown)) >> - count = drm_add_modes_noedid(connector, 1024, 768); >> + count = drm_add_modes_noedid(connector, >> connector->dev->mode_config.max_width, >> + connector->dev->mode_config.max_height); >> count += drm_helper_probe_add_cmdline_mode(connector); >> if (count == 0) >> goto prune; >> >> >>> Alternatively, perhaps drm_set_preferred_mode() should erase the >>> previous preferred mode(s) if it finds a matching new preferred mode. >>> >> >> But still yes, even if we change it like above perhaps for other non-DP >> cases its still better to allow individual drivers to pick their >> preferred modes. >> >> If we call drm_set_preferred_mode() in the referenced patch, it will not >> address the no EDID cases because the patch comes into picture when >> there was a EDID with some modes but not with 640x480. > > I'm not sure I understand the above paragraph. I think the "there's an > EDID but no 640x480" is handled by my other patch [1]. Here we're only > worried about the "no EDID" case, right? > Yes, there are two fixes which have been done (OR have to be done). 1) Case when EDID read failed and count of modes was 0. Here the DRM framework was already adding 640x480@60fps. The fix we had to make was making 640x480@60fps as the preferred mode. Which is what your current patch aims at addressing. https://lore.kernel.org/all/20220510135101.v2.1.I31ec454f8d4ffce51a7708a8092f8a6f9c929092@changeid/ So I thought the suggestion which Jani was giving was to call drm_set_preferred_mode() on the referenced patch which was: https://lore.kernel.org/all/20220510131309.v2.2.I4ac7f55aa446699f8c200a23c10463256f6f439f@changeid/ So that would not have fixed this case. Perhaps, I misunderstood the patch which was being referenced? 2) Case where there were other modes, which got filtered out and in the end no modes were left and we had to end up adding 640x480. No need to set the preferred mode in this case as this would have been the only mode in the list ( so becomes preferred by default ). Thats this change https://lore.kernel.org/all/20220426114627.2.I4ac7f55aa446699f8c200a23c10463256f6f439f@changeid/ I agree with combination of these 2 it should work. > >> So i think the second proposal is a good one. It will cover existing >> users of drm_set_preferred_mode() as typically its called after >> drm_add_modes_noedid() which means the existing users want to "override" >> their preferred mode. > > I looked at this, and I'm pretty sure that we can't clear the > preferred modes. It looks like it's possible for there to be more than > one preferred mode and I'm worried about borking that up. > > [1] https://lore.kernel.org/r/20220510131309.v2.2.I4ac7f55aa446699f8c200a23c10463256f6f439f@changeid > > -Doug