From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 46DB4C2BA83 for ; Fri, 14 Feb 2020 15:54:49 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1D57024673 for ; Fri, 14 Feb 2020 15:54:49 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="JpqiPEqS" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1D57024673 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id A15346F9CD; Fri, 14 Feb 2020 15:54:48 +0000 (UTC) Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by gabe.freedesktop.org (Postfix) with ESMTPS id A92C36F9CD for ; Fri, 14 Feb 2020 15:54:46 +0000 (UTC) Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B676624687; Fri, 14 Feb 2020 15:54:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1581695686; bh=QbWRlUITLJpYKqnJ3E/iusWRdHIa/QVaTjWPeop29PI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JpqiPEqSftY7aUfbPam+IPZPfbgWrQ5O3Lw7CTHEbFRb2fgXq3aKIVlquieGJT4Ax hj86CPXXUxSxtPkLc3KJ1CNvrYL9HI3SKANpaFWfx1TsPEoj3FkkyxcOSTMB87S6cZ 1W8sQoWCqgbCVMoN6UTBMr+ejhb74Fwha44MxXj4= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH AUTOSEL 5.5 271/542] drm/fbdev: Fallback to non tiled mode if all tiles not present Date: Fri, 14 Feb 2020 10:44:23 -0500 Message-Id: <20200214154854.6746-271-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200214154854.6746-1-sashal@kernel.org> References: <20200214154854.6746-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Manasi Navare , Dave Airlie , dri-devel@lists.freedesktop.org, Sasha Levin Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" RnJvbTogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KClsgVXBzdHJl YW0gY29tbWl0IGYyNWM3YTAwNmNkMWMwNzI1NDc4MGUzNDA2ZTQ1Y2VlNDg0MmI5MzMgXQoKSW4g Y2FzZSBvZiB0aWxlZCBkaXNwbGF5cywgaWYgd2UgaG90cGx1ZyBqdXN0IG9uZSBjb25uZWN0b3Is CmZiY29uIGN1cnJlbnRseSBqdXN0IHNlbGVjdHMgdGhlIHByZWZlcnJlZCBtb2RlIGFuZCBpZiBp dCBpcwp0aWxlZCBtb2RlIHRoZW4gdGhhdCBiZWNvbWVzIGEgcHJvYmxlbSBpZiByZXN0IG9mIHRo ZSB0aWxlcyBhcmUKbm90IHByZXNlbnQuClNvIGluIHRoZSBmYmRldiBkcml2ZXIgb24gaG90cGx1 ZyB3aGVuIHdlIHByb2JlIHRoZSBjbGllbnQgbW9kZXNldCwKaWYgd2UgZG9udCBmaW5kIGFsbCB0 aGUgY29ubmVjdG9ycyBmb3IgYWxsIHRpbGVzLCB0aGVuIG9uIGEgY29ubmVjdG9yCndpdGggb25l IHRpbGUsIGp1c3QgZmFsbGJhY2sgdG8gdGhlIGZpcnN0IGF2YWlsYWJsZSBub24gdGlsZWQgbW9k ZQp0byBkaXNwbGF5IG92ZXIgYSBzaW5nbGUgY29ubmVjdG9yLgpPbiB0aGUgaG90cGx1ZyBvZiB0 aGUgY29uc2VjdXRpdmUgdGlsZWQgY29ubmVjdG9ycywgaWYgdGhlIHRpbGVkIG1vZGUKbm8gbG9u Z2VyIGV4aXN0cyBiZWNhdXNlIG9mIGZiY29uIHNpemUgbGltaXRhdGlvbiwgdGhlbiByZXR1cm4K bm8gbW9kZXMgZm9yIGNvbnNlY3V0aXZlIHRpbGVzIGJ1dCByZXRhaW4gdGhlIG5vbiB0aWxlZCBt b2RlCm9uIHRoZSAwdGggdGlsZS4KVXNlIHRoZSBzYW1lIGxvZ2ljIGluIGNhc2Ugb2YgY29ubmVj dGVkIGJvb3QgY2FzZSBhcyB3ZWxsLgpUaGlzIGhhcyBiZWVuIHRlc3RlZCB3aXRoIERlbGwgVVAz MjhLIHRpbGVkIG1vbml0b3IuCgp2MjoKKiBTZXQgdGhlIG1vZGVzIG9uIGNvbnNlY3V0aXZlIGhv dHBsdWdnZWQgdGlsZXMgdG8gbm8gbW9kZQppZiB0aWxlZCBtb2RlIGlzIHBydW5lZCAoRGF2ZSkK djE6CiogSnVzdCBoYW5kbGUgdGhlIDFzdCBjb25uZWN0b3IgaG90cGx1ZyBjYXNlCiogdjEgUmV2 aWV3ZWQtYnk6IERhdmUgQWlybGllIDxhaXJsaWVkQHJlZGhhdC5jb20+CgpTdWdnZXN0ZWQtYnk6 IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+ClN1Z2dlc3Rl ZC1ieTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KQ2M6IFZpbGxlIFN5cmrDpGzD pCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+CkNjOiBEYXZlIEFpcmxpZSA8YWlybGll ZEByZWRoYXQuY29tPgpTaWduZWQtb2ZmLWJ5OiBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZh cmVAaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNv bT4KTGluazogaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoL21zZ2lkLzIw MTkxMTEzMjIyOTUyLjkyMzEtMS1tYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tClNpZ25lZC1vZmYt Ynk6IFNhc2hhIExldmluIDxzYXNoYWxAa2VybmVsLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0v ZHJtX2NsaWVudF9tb2Rlc2V0LmMgfCA3MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAx IGZpbGUgY2hhbmdlZCwgNzIgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21v ZGVzZXQuYwppbmRleCA4OTViNzNmMjMwNzlhLi42ZDRhMjllOTlhZTI2IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2RybV9jbGllbnRfbW9kZXNldC5jCkBAIC0xMTQsNiArMTE0LDMzIEBAIGRybV9jbGllbnRfZmlu ZF9tb2Rlc2V0KHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50LCBzdHJ1Y3QgZHJtX2NydGMg KmNydGMpCiAJcmV0dXJuIE5VTEw7CiB9CiAKK3N0YXRpYyBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqCitkcm1fY29ubmVjdG9yX2dldF90aWxlZF9tb2RlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IpCit7CisJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7CisKKwlsaXN0X2Zv cl9lYWNoX2VudHJ5KG1vZGUsICZjb25uZWN0b3ItPm1vZGVzLCBoZWFkKSB7CisJCWlmIChtb2Rl LT5oZGlzcGxheSA9PSBjb25uZWN0b3ItPnRpbGVfaF9zaXplICYmCisJCSAgICBtb2RlLT52ZGlz cGxheSA9PSBjb25uZWN0b3ItPnRpbGVfdl9zaXplKQorCQkJcmV0dXJuIG1vZGU7CisJfQorCXJl dHVybiBOVUxMOworfQorCitzdGF0aWMgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKgorZHJtX2Nv bm5lY3Rvcl9mYWxsYmFja19ub25fdGlsZWRfbW9kZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yKQoreworCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlOworCisJbGlzdF9mb3Jf ZWFjaF9lbnRyeShtb2RlLCAmY29ubmVjdG9yLT5tb2RlcywgaGVhZCkgeworCQlpZiAobW9kZS0+ aGRpc3BsYXkgPT0gY29ubmVjdG9yLT50aWxlX2hfc2l6ZSAmJgorCQkgICAgbW9kZS0+dmRpc3Bs YXkgPT0gY29ubmVjdG9yLT50aWxlX3Zfc2l6ZSkKKwkJCWNvbnRpbnVlOworCQlyZXR1cm4gbW9k ZTsKKwl9CisJcmV0dXJuIE5VTEw7Cit9CisKIHN0YXRpYyBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqCiBkcm1fY29ubmVjdG9yX2hhc19wcmVmZXJyZWRfbW9kZShzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CkBAIC0zNDgsOCArMzc1LDE1 IEBAIHN0YXRpYyBib29sIGRybV9jbGllbnRfdGFyZ2V0X3ByZWZlcnJlZChzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqKmNvbm5lY3RvcnMsCiAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsK IAl1NjQgY29ubl9jb25maWd1cmVkID0gMDsKIAlpbnQgdGlsZV9wYXNzID0gMDsKKwlpbnQgbnVt X3RpbGVkX2Nvbm5zID0gMDsKIAlpbnQgaTsKIAorCWZvciAoaSA9IDA7IGkgPCBjb25uZWN0b3Jf Y291bnQ7IGkrKykgeworCQlpZiAoY29ubmVjdG9yc1tpXS0+aGFzX3RpbGUgJiYKKwkJICAgIGNv bm5lY3RvcnNbaV0tPnN0YXR1cyA9PSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCkKKwkJCW51 bV90aWxlZF9jb25ucysrOworCX0KKwogcmV0cnk6CiAJZm9yIChpID0gMDsgaSA8IGNvbm5lY3Rv cl9jb3VudDsgaSsrKSB7CiAJCWNvbm5lY3RvciA9IGNvbm5lY3RvcnNbaV07CkBAIC0zOTksNiAr NDMzLDI4IEBAIHN0YXRpYyBib29sIGRybV9jbGllbnRfdGFyZ2V0X3ByZWZlcnJlZChzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqKmNvbm5lY3RvcnMsCiAJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KG1vZGVz W2ldLCAmY29ubmVjdG9yLT5tb2RlcywgaGVhZCkKIAkJCQlicmVhazsKIAkJfQorCQkvKgorCQkg KiBJbiBjYXNlIG9mIHRpbGVkIG1vZGUgaWYgYWxsIHRpbGVzIG5vdCBwcmVzZW50IGZhbGxiYWNr IHRvCisJCSAqIGZpcnN0IGF2YWlsYWJsZSBub24gdGlsZWQgbW9kZS4KKwkJICogQWZ0ZXIgYWxs IHRpbGVzIGFyZSBwcmVzZW50LCB0cnkgdG8gZmluZCB0aGUgdGlsZWQgbW9kZQorCQkgKiBmb3Ig YWxsIGFuZCBpZiB0aWxlZCBtb2RlIG5vdCBwcmVzZW50IGR1ZSB0byBmYmNvbiBzaXplCisJCSAq IGxpbWl0YXRpb25zLCB1c2UgZmlyc3Qgbm9uIHRpbGVkIG1vZGUgb25seSBmb3IKKwkJICogdGls ZSAwLDAgYW5kIHNldCB0byBubyBtb2RlIGZvciBhbGwgb3RoZXIgdGlsZXMuCisJCSAqLworCQlp ZiAoY29ubmVjdG9yLT5oYXNfdGlsZSkgeworCQkJaWYgKG51bV90aWxlZF9jb25ucyA8CisJCQkg ICAgY29ubmVjdG9yLT5udW1faF90aWxlICogY29ubmVjdG9yLT5udW1fdl90aWxlIHx8CisJCQkg ICAgKGNvbm5lY3Rvci0+dGlsZV9oX2xvYyA9PSAwICYmCisJCQkgICAgIGNvbm5lY3Rvci0+dGls ZV92X2xvYyA9PSAwICYmCisJCQkgICAgICFkcm1fY29ubmVjdG9yX2dldF90aWxlZF9tb2RlKGNv bm5lY3RvcikpKSB7CisJCQkJRFJNX0RFQlVHX0tNUygiRmFsbGluZyBiYWNrIHRvIG5vbiB0aWxl ZCBtb2RlIG9uIENvbm5lY3RvciAlZFxuIiwKKwkJCQkJICAgICAgY29ubmVjdG9yLT5iYXNlLmlk KTsKKwkJCQltb2Rlc1tpXSA9IGRybV9jb25uZWN0b3JfZmFsbGJhY2tfbm9uX3RpbGVkX21vZGUo Y29ubmVjdG9yKTsKKwkJCX0gZWxzZSB7CisJCQkJbW9kZXNbaV0gPSBkcm1fY29ubmVjdG9yX2dl dF90aWxlZF9tb2RlKGNvbm5lY3Rvcik7CisJCQl9CisJCX0KKwogCQlEUk1fREVCVUdfS01TKCJm b3VuZCBtb2RlICVzXG4iLCBtb2Rlc1tpXSA/IG1vZGVzW2ldLT5uYW1lIDoKIAkJCSAgIm5vbmUi KTsKIAkJY29ubl9jb25maWd1cmVkIHw9IEJJVF9VTEwoaSk7CkBAIC01MTUsNiArNTcxLDcgQEAg c3RhdGljIGJvb2wgZHJtX2NsaWVudF9maXJtd2FyZV9jb25maWcoc3RydWN0IGRybV9jbGllbnRf ZGV2ICpjbGllbnQsCiAJYm9vbCBmYWxsYmFjayA9IHRydWUsIHJldCA9IHRydWU7CiAJaW50IG51 bV9jb25uZWN0b3JzX2VuYWJsZWQgPSAwOwogCWludCBudW1fY29ubmVjdG9yc19kZXRlY3RlZCA9 IDA7CisJaW50IG51bV90aWxlZF9jb25ucyA9IDA7CiAJc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVp cmVfY3R4IGN0eDsKIAogCWlmICghZHJtX2Rydl91c2VzX2F0b21pY19tb2Rlc2V0KGRldikpCkBA IC01MzIsNiArNTg5LDExIEBAIHN0YXRpYyBib29sIGRybV9jbGllbnRfZmlybXdhcmVfY29uZmln KHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50LAogCW1lbWNweShzYXZlX2VuYWJsZWQsIGVu YWJsZWQsIGNvdW50KTsKIAltYXNrID0gR0VOTUFTSyhjb3VudCAtIDEsIDApOwogCWNvbm5fY29u ZmlndXJlZCA9IDA7CisJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKwkJaWYgKGNvbm5l Y3RvcnNbaV0tPmhhc190aWxlICYmCisJCSAgICBjb25uZWN0b3JzW2ldLT5zdGF0dXMgPT0gY29u bmVjdG9yX3N0YXR1c19jb25uZWN0ZWQpCisJCQludW1fdGlsZWRfY29ubnMrKzsKKwl9CiByZXRy eToKIAljb25uX3NlcSA9IGNvbm5fY29uZmlndXJlZDsKIAlmb3IgKGkgPSAwOyBpIDwgY291bnQ7 IGkrKykgewpAQCAtNjMxLDYgKzY5MywxNiBAQCBzdGF0aWMgYm9vbCBkcm1fY2xpZW50X2Zpcm13 YXJlX2NvbmZpZyhzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwKIAkJCQkgICAgICBjb25u ZWN0b3ItPm5hbWUpOwogCQkJbW9kZXNbaV0gPSAmY29ubmVjdG9yLT5zdGF0ZS0+Y3J0Yy0+bW9k ZTsKIAkJfQorCQkvKgorCQkgKiBJbiBjYXNlIG9mIHRpbGVkIG1vZGVzLCBpZiBhbGwgdGlsZXMg YXJlIG5vdCBwcmVzZW50CisJCSAqIHRoZW4gZmFsbGJhY2sgdG8gYSBub24gdGlsZWQgbW9kZS4K KwkJICovCisJCWlmIChjb25uZWN0b3ItPmhhc190aWxlICYmCisJCSAgICBudW1fdGlsZWRfY29u bnMgPCBjb25uZWN0b3ItPm51bV9oX3RpbGUgKiBjb25uZWN0b3ItPm51bV92X3RpbGUpIHsKKwkJ CURSTV9ERUJVR19LTVMoIkZhbGxpbmcgYmFjayB0byBub24gdGlsZWQgbW9kZSBvbiBDb25uZWN0 b3IgJWRcbiIsCisJCQkJICAgICAgY29ubmVjdG9yLT5iYXNlLmlkKTsKKwkJCW1vZGVzW2ldID0g ZHJtX2Nvbm5lY3Rvcl9mYWxsYmFja19ub25fdGlsZWRfbW9kZShjb25uZWN0b3IpOworCQl9CiAJ CWNydGNzW2ldID0gbmV3X2NydGM7CiAKIAkJRFJNX0RFQlVHX0tNUygiY29ubmVjdG9yICVzIG9u IFtDUlRDOiVkOiVzXTogJWR4JWQlc1xuIiwKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BB8ABC2BA83 for ; Fri, 14 Feb 2020 18:06:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 8B03D2168B for ; Fri, 14 Feb 2020 18:06:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1581703605; bh=QbWRlUITLJpYKqnJ3E/iusWRdHIa/QVaTjWPeop29PI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=Cab9kN42K51QtOLU3GbN2rWP5UNBuTITt8P6GosiJXyGiwNec17LHn89fBmbHUtj4 K0QTQdiBNsOVzk+JolWvrJeS0m4HKfUm8RiX5HZk3ZuDNJbqmcA9msKR8utOZG9OUx 7YC6fcaFctEhUFW+7uH15FzNbJZlMcMWWdF3O7sY= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387705AbgBNSGo (ORCPT ); Fri, 14 Feb 2020 13:06:44 -0500 Received: from mail.kernel.org ([198.145.29.99]:35170 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731628AbgBNPyr (ORCPT ); Fri, 14 Feb 2020 10:54:47 -0500 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B676624687; Fri, 14 Feb 2020 15:54:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1581695686; bh=QbWRlUITLJpYKqnJ3E/iusWRdHIa/QVaTjWPeop29PI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JpqiPEqSftY7aUfbPam+IPZPfbgWrQ5O3Lw7CTHEbFRb2fgXq3aKIVlquieGJT4Ax hj86CPXXUxSxtPkLc3KJ1CNvrYL9HI3SKANpaFWfx1TsPEoj3FkkyxcOSTMB87S6cZ 1W8sQoWCqgbCVMoN6UTBMr+ejhb74Fwha44MxXj4= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Manasi Navare , =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , Dave Airlie , Sasha Levin , dri-devel@lists.freedesktop.org Subject: [PATCH AUTOSEL 5.5 271/542] drm/fbdev: Fallback to non tiled mode if all tiles not present Date: Fri, 14 Feb 2020 10:44:23 -0500 Message-Id: <20200214154854.6746-271-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200214154854.6746-1-sashal@kernel.org> References: <20200214154854.6746-1-sashal@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Manasi Navare [ Upstream commit f25c7a006cd1c07254780e3406e45cee4842b933 ] In case of tiled displays, if we hotplug just one connector, fbcon currently just selects the preferred mode and if it is tiled mode then that becomes a problem if rest of the tiles are not present. So in the fbdev driver on hotplug when we probe the client modeset, if we dont find all the connectors for all tiles, then on a connector with one tile, just fallback to the first available non tiled mode to display over a single connector. On the hotplug of the consecutive tiled connectors, if the tiled mode no longer exists because of fbcon size limitation, then return no modes for consecutive tiles but retain the non tiled mode on the 0th tile. Use the same logic in case of connected boot case as well. This has been tested with Dell UP328K tiled monitor. v2: * Set the modes on consecutive hotplugged tiles to no mode if tiled mode is pruned (Dave) v1: * Just handle the 1st connector hotplug case * v1 Reviewed-by: Dave Airlie Suggested-by: Ville Syrjälä Suggested-by: Dave Airlie Cc: Ville Syrjälä Cc: Dave Airlie Signed-off-by: Manasi Navare Reviewed-by: Dave Airlie Link: https://patchwork.freedesktop.org/patch/msgid/20191113222952.9231-1-manasi.d.navare@intel.com Signed-off-by: Sasha Levin --- drivers/gpu/drm/drm_client_modeset.c | 72 ++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c index 895b73f23079a..6d4a29e99ae26 100644 --- a/drivers/gpu/drm/drm_client_modeset.c +++ b/drivers/gpu/drm/drm_client_modeset.c @@ -114,6 +114,33 @@ drm_client_find_modeset(struct drm_client_dev *client, struct drm_crtc *crtc) return NULL; } +static struct drm_display_mode * +drm_connector_get_tiled_mode(struct drm_connector *connector) +{ + struct drm_display_mode *mode; + + list_for_each_entry(mode, &connector->modes, head) { + if (mode->hdisplay == connector->tile_h_size && + mode->vdisplay == connector->tile_v_size) + return mode; + } + return NULL; +} + +static struct drm_display_mode * +drm_connector_fallback_non_tiled_mode(struct drm_connector *connector) +{ + struct drm_display_mode *mode; + + list_for_each_entry(mode, &connector->modes, head) { + if (mode->hdisplay == connector->tile_h_size && + mode->vdisplay == connector->tile_v_size) + continue; + return mode; + } + return NULL; +} + static struct drm_display_mode * drm_connector_has_preferred_mode(struct drm_connector *connector, int width, int height) { @@ -348,8 +375,15 @@ static bool drm_client_target_preferred(struct drm_connector **connectors, struct drm_connector *connector; u64 conn_configured = 0; int tile_pass = 0; + int num_tiled_conns = 0; int i; + for (i = 0; i < connector_count; i++) { + if (connectors[i]->has_tile && + connectors[i]->status == connector_status_connected) + num_tiled_conns++; + } + retry: for (i = 0; i < connector_count; i++) { connector = connectors[i]; @@ -399,6 +433,28 @@ static bool drm_client_target_preferred(struct drm_connector **connectors, list_for_each_entry(modes[i], &connector->modes, head) break; } + /* + * In case of tiled mode if all tiles not present fallback to + * first available non tiled mode. + * After all tiles are present, try to find the tiled mode + * for all and if tiled mode not present due to fbcon size + * limitations, use first non tiled mode only for + * tile 0,0 and set to no mode for all other tiles. + */ + if (connector->has_tile) { + if (num_tiled_conns < + connector->num_h_tile * connector->num_v_tile || + (connector->tile_h_loc == 0 && + connector->tile_v_loc == 0 && + !drm_connector_get_tiled_mode(connector))) { + DRM_DEBUG_KMS("Falling back to non tiled mode on Connector %d\n", + connector->base.id); + modes[i] = drm_connector_fallback_non_tiled_mode(connector); + } else { + modes[i] = drm_connector_get_tiled_mode(connector); + } + } + DRM_DEBUG_KMS("found mode %s\n", modes[i] ? modes[i]->name : "none"); conn_configured |= BIT_ULL(i); @@ -515,6 +571,7 @@ static bool drm_client_firmware_config(struct drm_client_dev *client, bool fallback = true, ret = true; int num_connectors_enabled = 0; int num_connectors_detected = 0; + int num_tiled_conns = 0; struct drm_modeset_acquire_ctx ctx; if (!drm_drv_uses_atomic_modeset(dev)) @@ -532,6 +589,11 @@ static bool drm_client_firmware_config(struct drm_client_dev *client, memcpy(save_enabled, enabled, count); mask = GENMASK(count - 1, 0); conn_configured = 0; + for (i = 0; i < count; i++) { + if (connectors[i]->has_tile && + connectors[i]->status == connector_status_connected) + num_tiled_conns++; + } retry: conn_seq = conn_configured; for (i = 0; i < count; i++) { @@ -631,6 +693,16 @@ static bool drm_client_firmware_config(struct drm_client_dev *client, connector->name); modes[i] = &connector->state->crtc->mode; } + /* + * In case of tiled modes, if all tiles are not present + * then fallback to a non tiled mode. + */ + if (connector->has_tile && + num_tiled_conns < connector->num_h_tile * connector->num_v_tile) { + DRM_DEBUG_KMS("Falling back to non tiled mode on Connector %d\n", + connector->base.id); + modes[i] = drm_connector_fallback_non_tiled_mode(connector); + } crtcs[i] = new_crtc; DRM_DEBUG_KMS("connector %s on [CRTC:%d:%s]: %dx%d%s\n", -- 2.20.1