Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp643575imm; Wed, 19 Sep 2018 04:46:55 -0700 (PDT) X-Google-Smtp-Source: ANB0VdbYUGc3qKpPe0WdJBRsKwOnYYYjYetljU7DJC+Ck8rDNETRrugItg2zre4+j6G05AXARXqC X-Received: by 2002:a17:902:6808:: with SMTP id h8-v6mr34494530plk.27.1537357615341; Wed, 19 Sep 2018 04:46:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1537357615; cv=none; d=google.com; s=arc-20160816; b=tnBMC+TELe9vksISUDDH7wBhkGEJJ6ygqVpJk9i90V1AyhBsVUhhA8l41CAzSfH/mS +jLFiDGzDtdgygNUQWC4KeWZaeG2zewQQcHCbctTmCc4GjFLwQMX+b3RNkqhdAkvHKB6 99lPIYacPGXTpgQO+YPsPLdxd5gl/EgdIu95jO+HFgzEyAvmlgo1kn/neKiybEVuy0ow cmW0blX9P2WsZznUTDSYo/Dgq8iTfhY964oA548T74MmdsOCiaEON/N6qKA8iH2XO0vh MDP4S2KIdEVakFnFYDMlSnkh+CC0ZQrk7xYgabWg8p8Ip7EQAkav+sOM069rtR7QDw3v 6bnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:date:subject:user-agent:message-id :references:cc:in-reply-to:from:to:content-transfer-encoding :mime-version; bh=8rMuTKbsENfnQQISAS+0Idkmd7OOvrerfS6U6ZZ0biM=; b=NlSxAvfJoqyDX5WmST33t4AqY1R642XkVRW2UJelvYp99cmiciWY0op/YBTP59gE+p Y7guGa4atTm6COSxqsTBYaYFiBbyMEL4cAepDua1J933YPcoU56nFw7ytNqyja3ycnxo PHOSVkHlZQdDHBcgfVuwj5ktcTYAnCyIJT029R7kzXVSaRGUqqLPIRfqZJ81xU33YOJB 0fxt9iC2+QWc2brNl2Dw5SsOkREHI4TzdBBtks4Fr96LPD7ubRe7xCx2zH7IS/Drz5Jr 3M1VrUFOZHZSfYuU+6eTr2twUaHtxa9p7F9blV26YarShYZ/gn9FCSzvUHZ1eXqOaTuh xcaA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v3-v6si21058604plp.85.2018.09.19.04.46.39; Wed, 19 Sep 2018 04:46:55 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731230AbeISRU5 convert rfc822-to-8bit (ORCPT + 99 others); Wed, 19 Sep 2018 13:20:57 -0400 Received: from mail.fireflyinternet.com ([109.228.58.192]:55530 "EHLO fireflyinternet.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727820AbeISRU4 (ORCPT ); Wed, 19 Sep 2018 13:20:56 -0400 X-Default-Received-SPF: pass (skip=forwardok (res=PASS)) x-ip-name=78.156.65.138; Received: from localhost (unverified [78.156.65.138]) by fireflyinternet.com (Firefly Internet (M1)) with ESMTP (TLS) id 13820826-1500050 for multiple; Wed, 19 Sep 2018 12:43:14 +0100 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8BIT To: Chris Chiu , airlied@linux.ie, jani.nikula@intel.com, joonas.lahtinen@linux.intel.com, rodrigo.vivi@intel.com From: Chris Wilson In-Reply-To: <20180919112933.47382-1-chiu@endlessm.com> Cc: Chris Chiu , intel-gfx@lists.freedesktop.org, linux@endlessm.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org References: <20180919112933.47382-1-chiu@endlessm.com> Message-ID: <153735739367.31835.11641995651905357659@skylake-alporthouse-com> User-Agent: alot/0.6 Subject: Re: [Intel-gfx] [PATCH] drm/i915: re-check the hotplug with a delayed work Date: Wed, 19 Sep 2018 12:43:13 +0100 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Quoting Chris Chiu (2018-09-19 12:29:33) > I have few ASUS laptops, X705FD(Intel i7-8565), X560UD(Intel i5-8250U) > and X530UN(Intel i7-8550U) share the same problem. The HDMI connector > status stays 'connected' even the HDMI cable has been unplugged. > Then the status in sysfs would never change since then until we > do 'xrandr' to reprobe the devices. It would also cause the audio > output path cannot correctly swicth based on the connector status. > > This commit kicks off a delayed work when the status remains unchanged > in the first hotplug event handling, which may not be the perfect > timing in some special cases. > > Signed-off-by: Chris Chiu > --- > drivers/gpu/drm/i915/i915_drv.h | 1 + > drivers/gpu/drm/i915/intel_hotplug.c | 35 +++++++++++++++++++++++++++++++---- > 2 files changed, 32 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > index d51d8574a679..78e2cf09cc10 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -286,6 +286,7 @@ struct i915_hotplug { > } stats[HPD_NUM_PINS]; > u32 event_bits; > struct delayed_work reenable_work; > + struct delayed_work recheck_work; > > struct intel_digital_port *irq_port[I915_MAX_PORTS]; > u32 long_port_mask; > diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c > index 43aa92beff2a..089a24588ec8 100644 > --- a/drivers/gpu/drm/i915/intel_hotplug.c > +++ b/drivers/gpu/drm/i915/intel_hotplug.c > @@ -349,14 +349,15 @@ static void i915_digport_work_func(struct work_struct *work) > } > } > > +#define HPD_RECHECK_DELAY (2 * 1000) Or just (2 * HZ) > /* > * Handle hotplug events outside the interrupt handler proper. > */ > -static void i915_hotplug_work_func(struct work_struct *work) > +static void do_i915_hotplug_check(struct work_struct *work, > + struct drm_i915_private *dev_priv, > + struct drm_device *dev, bool do_recheck) struct drm_i915_private == struct drm_device, no need for tautology Local struct drm_device *dev = &i915->drm; are eliminated by the compiler. -Chris