Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp4691431pxf; Tue, 30 Mar 2021 14:35:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz8beEakaHNeEKn8QfKuIqKRPy3SL+xSUJmUXEyxwMMZ5jid67oaqzzKxvREjK/rswWsSU6 X-Received: by 2002:a17:906:340f:: with SMTP id c15mr149237ejb.317.1617140139355; Tue, 30 Mar 2021 14:35:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617140139; cv=none; d=google.com; s=arc-20160816; b=ewvny3QShV5dlENK9cOnn1KWxmffyKGfL+0eD5+b3tRNG83LQxlO2A9KH8eUPKkquF ShLwK4+bJVzvaP3LUdKps1HXBpcG+inuIm7AC15GGWP7QDNrK67GP5fhnmSuiTT97msk MpNXX8sqU0M/M7Z59cJMGJVOrdW9CpmYL1WjkczU7y1ocANK/yko+FvxfXKNnCj+1J7L 7GPImL5TpWwqLtIAtwR6Y5iYfAYjGvpNs36+Vwj/jDf/iKJXnOoyaNradayjt771LtLQ 7bN8wLbf33tNUUdTv/WiA9gjY/UP7xRjNV+c7FuUs7NkHpktrHWxyGb99thIGrTu/6iU y5Ag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=moOHpFp6B1slvDCQ1XJe9I8qoROHz5Fk0JNnYcoNKV4=; b=us9mQs2QDvnqC44aEnr8lerTC6FT0Z40Hc3r9+ZQwy6Kz2nmTm4Pe3XWKxBbccjN1+ qcGmjcI+7SA7/BN6OkeIIQn4/RYZ0OXdNsw60xdkgJYjcpI2SUg/IG6ol4x3WIYpkBmP wl3E+D0S2+3dEkYEAQbjpC+1iSLBfUcUFun4KJvpbgsPPlQyZK0axVG4iaXJ7n+EziWN UsZdNHaXvBib8sDOgy0Hwi6KOzm94oMX1Qah2mrx9THEPcuOiK8qEwaZMSJxZj9lr4GX QlmeQ6K/2QkAyMPdJA4IPZsSezxlq5hzgNh1zZfYZZdYVc8XicP+0UDXCYPusPubxtwH sqAw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=dsCS6Svy; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id q1si168336edn.100.2021.03.30.14.35.15; Tue, 30 Mar 2021 14:35:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=dsCS6Svy; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232952AbhC3VcP (ORCPT + 99 others); Tue, 30 Mar 2021 17:32:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52500 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232495AbhC3Vb6 (ORCPT ); Tue, 30 Mar 2021 17:31:58 -0400 Received: from mail-qk1-x72d.google.com (mail-qk1-x72d.google.com [IPv6:2607:f8b0:4864:20::72d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 22B88C061574 for ; Tue, 30 Mar 2021 14:31:58 -0700 (PDT) Received: by mail-qk1-x72d.google.com with SMTP id o5so17424016qkb.0 for ; Tue, 30 Mar 2021 14:31:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=moOHpFp6B1slvDCQ1XJe9I8qoROHz5Fk0JNnYcoNKV4=; b=dsCS6SvyblcG7oQ7ueXLS7xHUVbAxqeIo+mKnPu17yA69BEhq40Vqye7OZla+7EiwM 40/SsDnv0dnE91uCuK9quwkHO04o73NQJ4tZCHawa7syJxJrUIdWKfNc513iTL4TAm+k UEXJL+LM1gAuYeQ+RFrgZrmXO7khismTXEDpo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=moOHpFp6B1slvDCQ1XJe9I8qoROHz5Fk0JNnYcoNKV4=; b=k7G1hy+eJxgpSa5s58m6xPgm/VnrzWg/5wtEg2IDNyVT5+zqFFYiBex2zS/3S6GsJu D1/teIaWEFk04bBrxZQeV6Wcq1pAt+1lKRd41jSigLMwHryOo3CWH87LnFBmUv0EsCpo QSSO5pn4TFU+A3xn5id3zg98j1dDNnAFPAUjbJyM86R9irZedju/bcVUy2bD7kl43Rg9 2ZuEKqbwdVQ2BZuuhBWsXV4HleGCsFN7AvZtLKwbX0Ubpa1f67DGC3TxfOLBOpu8ZC8u KhmqqKxjTntFnNwOve3X8yKpF9eXgAukloHLz2pKB6c1cXf3OGzdVxe23J5G9h9OMauj pYZg== X-Gm-Message-State: AOAM533Hr7dkdMKuAxfC9/5fclNnbP9DXo17W2OBL3Lg3H3r7RGrb2WU RY/2F/KhXNP8JEuzBTBJtncfaHsP9Y5Mgw== X-Received: by 2002:a37:842:: with SMTP id 63mr319651qki.112.1617139916369; Tue, 30 Mar 2021 14:31:56 -0700 (PDT) Received: from mail-yb1-f172.google.com (mail-yb1-f172.google.com. [209.85.219.172]) by smtp.gmail.com with ESMTPSA id m13sm3737qkk.16.2021.03.30.14.31.53 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 30 Mar 2021 14:31:54 -0700 (PDT) Received: by mail-yb1-f172.google.com with SMTP id i144so18933257ybg.1 for ; Tue, 30 Mar 2021 14:31:53 -0700 (PDT) X-Received: by 2002:a25:3741:: with SMTP id e62mr265234yba.343.1617139913337; Tue, 30 Mar 2021 14:31:53 -0700 (PDT) MIME-Version: 1.0 References: <20210330025345.3980086-1-dianders@chromium.org> <20210329195255.v2.9.Ia7e9bb7cf6c51d960b9455fb0fa447cc68ece99d@changeid> In-Reply-To: From: Doug Anderson Date: Tue, 30 Mar 2021 14:31:41 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v2 09/14] drm/edid: Use the cached EDID in drm_get_edid() if eDP To: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= Cc: Andrzej Hajda , Neil Armstrong , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Sam Ravnborg , Rob Clark , Thomas Zimmermann , dri-devel , David Airlie , linux-arm-msm , Steev Klimaszewski , Stephen Boyd , Stanislav Lisovskiy , Bjorn Andersson , LKML Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On Tue, Mar 30, 2021 at 7:01 AM Ville Syrj=C3=A4l=C3=A4 wrote: > > > @@ -2049,15 +2049,39 @@ struct edid *drm_get_edid(struct drm_connector = *connector, > > struct i2c_adapter *adapter) > > { > > struct edid *edid; > > + size_t old_edid_size; > > + const struct edid *old_edid; > > > > if (connector->force =3D=3D DRM_FORCE_OFF) > > return NULL; > > > > - if (connector->force =3D=3D DRM_FORCE_UNSPECIFIED && !drm_probe_d= dc(adapter)) > > - return NULL; > > + if (connector->connector_type =3D=3D DRM_MODE_CONNECTOR_eDP && > > + connector->edid_blob_ptr) { > > + /* > > + * eDP devices are non-removable, or at least not somethi= ng > > + * that's expected to be hot-pluggable. We can freely use > > + * the cached EDID. > > + * > > + * NOTE: technically we could probably even use the cache= d > > + * EDID even for non-eDP because the cached EDID should b= e > > + * cleared if we ever notice a display is not connected, = but > > + * we'll use an abundance of caution and only do it for e= DP. > > + * It's more important for eDP anyway because the EDID ma= y not > > + * always be readable, like when the panel is powered dow= n. > > + */ > > + old_edid =3D (const struct edid *)connector->edid_blob_pt= r->data; > > + old_edid_size =3D ksize(old_edid); > > + edid =3D kmalloc(old_edid_size, GFP_KERNEL); > > + if (edid) > > + memcpy(edid, old_edid, old_edid_size); > > + } else { > > + if (connector->force =3D=3D DRM_FORCE_UNSPECIFIED && !drm= _probe_ddc(adapter)) > > + return NULL; > > + > > + edid =3D drm_do_get_edid(connector, drm_do_probe_ddc_edid= , adapter); > > + drm_connector_update_edid_property(connector, edid); > > + } > > This is a pretty low level function. Too low level for this caching > IMO. So I think better just do it a bit higher up like other drivers. Fair enough. In the past I'd gotten feedback that I'd been jamming too much stuff in my own driver instead of putting it in the core, but I'm happy to leave the EDID caching in the driver if that's what people prefer. It actually makes a bit of the code in the driver a bit less awkward... -Doug