From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hans de Goede Subject: [PATCH 2/2] efifb: Copy the ACPI BGRT boot graphics to the framebuffer Date: Sun, 17 Jun 2018 17:32:35 +0200 Message-ID: <20180617153235.16219-3-hdegoede@redhat.com> References: <20180617153235.16219-1-hdegoede@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180617153235.16219-1-hdegoede@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ard Biesheuvel , Bartlomiej Zolnierkiewicz Cc: Hans de Goede , linux-fbdev@vger.kernel.org, linux-efi@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: linux-efi@vger.kernel.org T24gc3lzdGVtcyB3aGVyZSBmYmNvbiBpcyBjb25maWd1cmVkIGZvciBkZWZlcnJlZCBjb25zb2xl IHRha2VvdmVyLCB0aGUKaW50ZW5kIGlzIGZvciB0aGUgZnJhbWVidWZmZXIgdG8gc2hvdyB0aGUg Ym9vdCBncmFwaGljcyAoZS5nIGEgdmVuZG9yCmxvZ28pIHVudGlsIHNvbWUgbWVzc2FnZSAoZS5n LiBhbiBlcnJvcikgaXMgcHJpbnRlZCBvciBhIGdyYXBoaWNhbApzZXNzaW9uIHRha2VzIG92ZXIu CgpTb21lIGZpcm13YXJlIGhvd2V2ZXIgcmVsaWVzIG9uIHRoZSBPUyB0byBzaG93IHRoZSBib290 IGdyYXBoaWNzCihpbmRpY2F0ZWQgYnkgYmdydF90YWIuc3RhdHVzIGJlaW5nIDApIGFuZCB0aGUg Ym9vdCBncmFwaGljcyBtYXkgaGF2ZQpiZWVuIGRlc3Ryb3llZCBieSBlLmcuIHRoZSBncnViIGJv b3QgbWVudS4KClRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IHRvIGVmaWZiIHRvIHNob3cgdGhlIGJv b3QgZ3JhcGhpY3MgYW5kCmF1dG9tYXRpY2FsbHkgZW5hYmxlcyB0aGlzIHdoZW4gZmJjb24gaXMg Y29uZmlndXJlZCBmb3IgZGVmZXJyZWQKY29uc29sZSB0YWtlb3Zlci4KClNpZ25lZC1vZmYtYnk6 IEhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+Ci0tLQogZHJpdmVycy92aWRlby9m YmRldi9lZmlmYi5jIHwgMTQ3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog MSBmaWxlIGNoYW5nZWQsIDE0NyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92 aWRlby9mYmRldi9lZmlmYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9lZmlmYi5jCmluZGV4IDQ2 YTQ0ODRlM2RhNy4uYjA0MWQ5MzZhNDM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2 L2VmaWZiLmMKKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9lZmlmYi5jCkBAIC05LDE2ICs5LDM5 IEBACiAKICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KICNpbmNsdWRlIDxsaW51eC9lZmkuaD4K KyNpbmNsdWRlIDxsaW51eC9lZmktYmdydC5oPgogI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CiAj aW5jbHVkZSA8bGludXgvZmIuaD4KICNpbmNsdWRlIDxsaW51eC9wY2kuaD4KICNpbmNsdWRlIDxs aW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9wcmludGsuaD4KICNpbmNs dWRlIDxsaW51eC9zY3JlZW5faW5mby5oPgogI2luY2x1ZGUgPHZpZGVvL3ZnYS5oPgogI2luY2x1 ZGUgPGFzbS9lZmkuaD4KICNpbmNsdWRlIDxkcm0vZHJtX3V0aWxzLmg+IC8qIEZvciBkcm1fZ2V0 X3BhbmVsX29yaWVudGF0aW9uX3F1aXJrICovCiAjaW5jbHVkZSA8ZHJtL2RybV9jb25uZWN0b3Iu aD4gIC8qIEZvciBEUk1fTU9ERV9QQU5FTF9PUklFTlRBVElPTl8qICovCiAKK3N0cnVjdCBibXBf ZmlsZV9oZWFkZXIgeworCXUxNiBpZDsKKwl1MzIgZmlsZV9zaXplOworCXUzMiByZXNlcnZlZDsK Kwl1MzIgYml0bWFwX29mZnNldDsKK30gX19wYWNrZWQ7CisKK3N0cnVjdCBibXBfZGliX2hlYWRl ciB7CisJdTMyIGRpYl9oZWFkZXJfc2l6ZTsKKwlzMzIgd2lkdGg7CisJczMyIGhlaWdodDsKKwl1 MTYgcGxhbmVzOworCXUxNiBicHA7CisJdTMyIGNvbXByZXNzaW9uOworCXUzMiBiaXRtYXBfc2l6 ZTsKKwl1MzIgaG9yel9yZXNvbHV0aW9uOworCXUzMiB2ZXJ0X3Jlc29sdXRpb247CisJdTMyIGNv bG9yc191c2VkOworCXUzMiBjb2xvcnNfaW1wb3J0YW50OworfSBfX3BhY2tlZDsKKwogc3RhdGlj IGJvb2wgcmVxdWVzdF9tZW1fc3VjY2VlZGVkID0gZmFsc2U7CiBzdGF0aWMgYm9vbCBub3djID0g ZmFsc2U7CiAKQEAgLTY2LDYgKzg5LDEyOCBAQCBzdGF0aWMgaW50IGVmaWZiX3NldGNvbHJlZyh1 bnNpZ25lZCByZWdubywgdW5zaWduZWQgcmVkLCB1bnNpZ25lZCBncmVlbiwKIAlyZXR1cm4gMDsK IH0KIAorLyoKKyAqIElmIGZiY29uIGRlZmZlcmVkIGNvbnNvbGUgdGFrZW92ZXIgaXMgY29uZmln dXJlZCwgdGhlIGludGVudCBpcyBmb3IgdGhlCisgKiBmcmFtZWJ1ZmZlciB0byBzaG93IHRoZSBi b290IGdyYXBoaWNzIChlLmcuIHZlbmRvciBsb2dvKSB1bnRpbCB0aGVyZSBpcyBzb21lCisgKiAo ZXJyb3IpIG1lc3NhZ2UgdG8gZGlzcGxheS4gQnV0IHRoZSBib290IGdyYXBoaWNzIG1heSBoYXZl IGJlZW4gZGVzdHJveWVkIGJ5CisgKiBlLmcuIG9wdGlvbiBST00gb3V0cHV0LCBkZXRlY3QgdGhp cyBhbmQgcmVzdG9yZSB0aGUgYm9vdCBncmFwaGljcy4KKyAqLworI2lmIGRlZmluZWQgQ09ORklH X0ZSQU1FQlVGRkVSX0NPTlNPTEVfREVGRVJSRURfVEFLRU9WRVIgJiYgXAorICAgIGRlZmluZWQg Q09ORklHX0FDUElfQkdSVAorc3RhdGljIHZvaWQgZWZpZmJfc2hvd19ib290X2dyYXBoaWNzKHN0 cnVjdCBmYl9pbmZvICppbmZvKQoreworCXUzMiAqZHN0LCBibXBfd2lkdGgsIGJtcF9oZWlnaHQs IGJtcF9waXRjaCwgc2NyZWVuX3BpdGNoOworCXN0cnVjdCBzY3JlZW5faW5mbyAqc2kgPSAmc2Ny ZWVuX2luZm87CisJc3RydWN0IGJtcF9maWxlX2hlYWRlciAqZmlsZV9oZWFkZXI7CisJc3RydWN0 IGJtcF9kaWJfaGVhZGVyICpkaWJfaGVhZGVyOworCXZvaWQgKmJncnRfaW1hZ2UgPSBOVUxMOwor CXU4ICpzcmMsIHIsIGcsIGI7CisJczMyIHgsIHk7CisKKwlpZiAoIWJncnRfdGFiLmltYWdlX2Fk ZHJlc3MpIHsKKwkJcHJfaW5mbygiZWZpZmI6IE5vIEJHUlQsIG5vdCBzaG93aW5nIGJvb3QgZ3Jh cGhpY3NcbiIpOworCQlyZXR1cm47CisJfQorCisJLyogQXZvaWQgZmxhc2hpbmcgdGhlIGxvZ28g aWYgd2UncmUgZ29pbmcgdG8gcHJpbnQgc3RkIHByb2JlIG1lc3NhZ2VzICovCisJaWYgKGNvbnNv bGVfbG9nbGV2ZWwgPiBDT05TT0xFX0xPR0xFVkVMX1FVSUVUKQorCQlyZXR1cm47CisKKwkvKgor CSAqIFdlIGRvIG5vdCBjaGVjayBiZ3J0X3RhYi5zdGF0dXMgaGVyZSBiZWNhdXNlIHRoaXMgc2Vl bXMgdG8gb25seQorCSAqIHJlZmxlY3QgaWYgdGhlIGZpcm13YXJlIGhhcyBzaG93biB0aGUgYm9v dCBncmFwaGljcyBhdCBhbGwsIGlmIGl0CisJICogbGF0ZXIgZ290IGRlc3Ryb3llZCBieSBzb21l dGhpbmcgc3RhdHVzIHdpbGwgc3RpbGwgYmUgMS4KKwkgKiBTaW5jZSB3ZSBkcmF3IHRoZSBleGFj dCBzYW1lIGdyYXBoaWMgYXQgdGhlIGV4YWN0IHNhbWUgcGxhY2UgdGhpcworCSAqIHdpbGwgbm90 IGxlYWQgdG8gYW55IHRlYXJpbmcgaWYgdGhlIGJvb3QgZ3JhcGhpYyBpcyBhbHJlYWR5IHRoZXJl LgorCSAqLworCisJaWYgKHNpLT5sZmJfZGVwdGggIT0gMzIpIHsKKwkJcHJfaW5mbygiZWZpZmI6 IG5vdCAzMiBiaXRzLCBub3Qgc2hvd2luZyBib290IGdyYXBoaWNzXG4iKTsKKwkJcmV0dXJuOwor CX0KKworCWJncnRfaW1hZ2UgPSBtZW1yZW1hcChiZ3J0X3RhYi5pbWFnZV9hZGRyZXNzLCBiZ3J0 X2ltYWdlX3NpemUsCisJCQkgICAgICBNRU1SRU1BUF9XQik7CisJaWYgKCFiZ3J0X2ltYWdlKSB7 CisJCXByX3dhcm4oImVmaWZiOiBJZ25vcmluZyBCR1JUOiBmYWlsZWQgdG8gbWFwIGltYWdlIG1l bW9yeVxuIik7CisJCXJldHVybjsKKwl9CisKKwlpZiAoYmdydF9pbWFnZV9zaXplIDwgKHNpemVv ZigqZmlsZV9oZWFkZXIpICsgc2l6ZW9mKCpkaWJfaGVhZGVyKSkpCisJCWdvdG8gZXJyb3I7CisK KwlmaWxlX2hlYWRlciA9IGJncnRfaW1hZ2U7CisJaWYgKGZpbGVfaGVhZGVyLT5pZCAhPSAweDRk NDIgfHwgZmlsZV9oZWFkZXItPnJlc2VydmVkICE9IDApCisJCWdvdG8gZXJyb3I7CisKKwlkaWJf aGVhZGVyID0gYmdydF9pbWFnZSArIHNpemVvZigqZmlsZV9oZWFkZXIpOworCWlmIChkaWJfaGVh ZGVyLT5kaWJfaGVhZGVyX3NpemUgIT0gNDAgfHwgZGliX2hlYWRlci0+d2lkdGggPCAwIHx8CisJ ICAgIGRpYl9oZWFkZXItPnBsYW5lcyAhPSAxIHx8IGRpYl9oZWFkZXItPmJwcCAhPSAyNCB8fAor CSAgICBkaWJfaGVhZGVyLT5jb21wcmVzc2lvbiAhPSAwKQorCQlnb3RvIGVycm9yOworCisJYm1w X3dpZHRoID0gZGliX2hlYWRlci0+d2lkdGg7CisJYm1wX2hlaWdodCA9IGFicyhkaWJfaGVhZGVy LT5oZWlnaHQpOworCWJtcF9waXRjaCA9IHJvdW5kX3VwKDMgKiBibXBfd2lkdGgsIDQpOworCXNj cmVlbl9waXRjaCA9IHNpLT5sZmJfbGluZWxlbmd0aDsKKworCWlmICgoZmlsZV9oZWFkZXItPmJp dG1hcF9vZmZzZXQgKyBibXBfcGl0Y2ggKiBibXBfaGVpZ2h0KSA+CisJCQkJYmdydF9pbWFnZV9z aXplKQorCQlnb3RvIGVycm9yOworCisJaWYgKChiZ3J0X3RhYi5pbWFnZV9vZmZzZXRfeCArIGJt cF93aWR0aCkgPiBzaS0+bGZiX3dpZHRoIHx8CisJICAgIChiZ3J0X3RhYi5pbWFnZV9vZmZzZXRf eSArIGJtcF9oZWlnaHQpID4gc2ktPmxmYl9oZWlnaHQpCisJCWdvdG8gZXJyb3I7CisKKwlwcl9p bmZvKCJlZmlmYjogc2hvd2luZyBib290IGdyYXBoaWNzXG4iKTsKKworCXNyYyA9IGJncnRfaW1h Z2UgKyBmaWxlX2hlYWRlci0+Yml0bWFwX29mZnNldDsKKwlibXBfcGl0Y2ggLT0gMyAqIGJtcF93 aWR0aDsKKwlpZiAoZGliX2hlYWRlci0+aGVpZ2h0IDwgMCkgeworCQlmb3IgKHkgPSAwOyB5IDwg Ym1wX2hlaWdodDsgeSsrKSB7CisJCQlkc3QgPSAodTMyICopKAorCQkJCWluZm8tPnNjcmVlbl9i YXNlICsKKwkJCQkoYmdydF90YWIuaW1hZ2Vfb2Zmc2V0X3kgKyB5KSAqIHNjcmVlbl9waXRjaCAr CisJCQkJYmdydF90YWIuaW1hZ2Vfb2Zmc2V0X3ggKiA0KTsKKwkJCWZvciAoeCA9IDA7IHggPCBi bXBfd2lkdGg7IHgrKykgeworCQkJCWIgPSAqc3JjKys7CisJCQkJZyA9ICpzcmMrKzsKKwkJCQly ID0gKnNyYysrOworCQkJCSpkc3QrKyA9IChyIDw8IHNpLT5yZWRfcG9zKSAgIHwKKwkJCQkJIChn IDw8IHNpLT5ncmVlbl9wb3MpIHwKKwkJCQkJIChiIDw8IHNpLT5ibHVlX3Bvcyk7CisJCQl9CisJ CQlzcmMgKz0gYm1wX3BpdGNoOworCQl9CisJfSBlbHNlIHsKKwkJZm9yICh5ID0gKGJtcF9oZWln aHQgLSAxKTsgeSA+PSAwOyB5LS0pIHsKKwkJCWRzdCA9ICh1MzIgKikoCisJCQkJaW5mby0+c2Ny ZWVuX2Jhc2UgKworCQkJCShiZ3J0X3RhYi5pbWFnZV9vZmZzZXRfeSArIHkpICogc2NyZWVuX3Bp dGNoICsKKwkJCQliZ3J0X3RhYi5pbWFnZV9vZmZzZXRfeCAqIDQpOworCQkJZm9yICh4ID0gMDsg eCA8IGJtcF93aWR0aDsgeCsrKSB7CisJCQkJYiA9ICpzcmMrKzsKKwkJCQlnID0gKnNyYysrOwor CQkJCXIgPSAqc3JjKys7CisJCQkJKmRzdCsrID0gKHIgPDwgc2ktPnJlZF9wb3MpICAgfAorCQkJ CQkgKGcgPDwgc2ktPmdyZWVuX3BvcykgfAorCQkJCQkgKGIgPDwgc2ktPmJsdWVfcG9zKTsKKwkJ CX0KKwkJCXNyYyArPSBibXBfcGl0Y2g7CisJCX0KKwl9CisKKwltZW11bm1hcChiZ3J0X2ltYWdl KTsKKwlyZXR1cm47CisKK2Vycm9yOgorCW1lbXVubWFwKGJncnRfaW1hZ2UpOworCXByX3dhcm4o ImVmaWZiOiBJZ25vcmluZyBCR1JUOiB1bmV4cGVjdGVkIG9yIGludmFsaWQgQk1QIGRhdGFcbiIp OworfQorI2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9pZCBlZmlmYl9zaG93X2Jvb3RfZ3JhcGhpY3Mo c3RydWN0IGZiX2luZm8gKmluZm8pIHt9CisjZW5kaWYKKwogc3RhdGljIHZvaWQgZWZpZmJfZGVz dHJveShzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKIHsKIAlpZiAoaW5mby0+c2NyZWVuX2Jhc2UpCkBA IC0yODMsNiArNDI4LDggQEAgc3RhdGljIGludCBlZmlmYl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpkZXYpCiAJCWdvdG8gZXJyX3JlbGVhc2VfZmI7CiAJfQogCisJZWZpZmJfc2hvd19i b290X2dyYXBoaWNzKGluZm8pOworCiAJcHJfaW5mbygiZWZpZmI6IGZyYW1lYnVmZmVyIGF0IDB4 JWx4LCB1c2luZyAlZGssIHRvdGFsICVka1xuIiwKIAkgICAgICAgZWZpZmJfZml4LnNtZW1fc3Rh cnQsIHNpemVfcmVtYXAvMTAyNCwgc2l6ZV90b3RhbC8xMDI0KTsKIAlwcl9pbmZvKCJlZmlmYjog bW9kZSBpcyAlZHglZHglZCwgbGluZWxlbmd0aD0lZCwgcGFnZXM9JWRcbiIsCi0tIAoyLjE3LjEK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hans de Goede Date: Sun, 17 Jun 2018 15:32:35 +0000 Subject: [PATCH 2/2] efifb: Copy the ACPI BGRT boot graphics to the framebuffer Message-Id: <20180617153235.16219-3-hdegoede@redhat.com> List-Id: References: <20180617153235.16219-1-hdegoede@redhat.com> In-Reply-To: <20180617153235.16219-1-hdegoede@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Ard Biesheuvel , Bartlomiej Zolnierkiewicz Cc: Hans de Goede , linux-fbdev@vger.kernel.org, linux-efi@vger.kernel.org, dri-devel@lists.freedesktop.org On systems where fbcon is configured for deferred console takeover, the intend is for the framebuffer to show the boot graphics (e.g a vendor logo) until some message (e.g. an error) is printed or a graphical session takes over. Some firmware however relies on the OS to show the boot graphics (indicated by bgrt_tab.status being 0) and the boot graphics may have been destroyed by e.g. the grub boot menu. This patch adds support to efifb to show the boot graphics and automatically enables this when fbcon is configured for deferred console takeover. Signed-off-by: Hans de Goede --- drivers/video/fbdev/efifb.c | 147 ++++++++++++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) diff --git a/drivers/video/fbdev/efifb.c b/drivers/video/fbdev/efifb.c index 46a4484e3da7..b041d936a438 100644 --- a/drivers/video/fbdev/efifb.c +++ b/drivers/video/fbdev/efifb.c @@ -9,16 +9,39 @@ #include #include +#include #include #include #include #include +#include #include #include