On Friday, February 28, 2020 12:38:36 AM CET Alex Hung wrote: > BGRT is for displaying seamless OEM logo from booting to login screen; > however, this mechanism does not always work well on all configurations > and the OEM logo can be displayed multiple times. This looks worse than > without BGRT enabled. > > This patch adds a kernel parameter to disable BGRT in boot time. This is > easier than re-compiling a kernel with CONFIG_ACPI_BGRT disabled. > > Signed-off-by: Alex Hung <alex.hung@xxxxxxxxxxxxx> > --- > Documentation/admin-guide/kernel-parameters.txt | 3 +++ > arch/x86/kernel/acpi/boot.c | 10 +++++++++- > 2 files changed, 12 insertions(+), 1 deletion(-) > > diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt > index ffff776..55c5b2f 100644 > --- a/Documentation/admin-guide/kernel-parameters.txt > +++ b/Documentation/admin-guide/kernel-parameters.txt > @@ -442,6 +442,9 @@ > bert_disable [ACPI] > Disable BERT OS support on buggy BIOSes. > > + bgrt_disable [ACPI][X86] > + Disable BGRT to avoid flickering OEM logo. > + > bttv.card= [HW,V4L] bttv (bt848 + bt878 based grabber cards) > bttv.radio= Most important insmod options are available as > kernel args too. > diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c > index 04205ce..d1757ce 100644 > --- a/arch/x86/kernel/acpi/boot.c > +++ b/arch/x86/kernel/acpi/boot.c > @@ -45,6 +45,7 @@ EXPORT_SYMBOL(acpi_disabled); > #define PREFIX "ACPI: " > > int acpi_noirq; /* skip ACPI IRQ initialization */ > +int acpi_nobgrt; /* skip ACPI BGRT */ > int acpi_pci_disabled; /* skip ACPI PCI scan and IRQ initialization */ > EXPORT_SYMBOL(acpi_pci_disabled); > > @@ -1619,7 +1620,7 @@ int __init acpi_boot_init(void) > acpi_process_madt(); > > acpi_table_parse(ACPI_SIG_HPET, acpi_parse_hpet); > - if (IS_ENABLED(CONFIG_ACPI_BGRT)) > + if (IS_ENABLED(CONFIG_ACPI_BGRT) && !acpi_nobgrt) > acpi_table_parse(ACPI_SIG_BGRT, acpi_parse_bgrt); > > if (!acpi_noirq) > @@ -1671,6 +1672,13 @@ static int __init parse_acpi(char *arg) > } > early_param("acpi", parse_acpi); > > +static int __init parse_acpi_bgrt(char *arg) > +{ > + acpi_nobgrt = true; > + return 0; > +} > +early_param("bgrt_disable", parse_acpi_bgrt); > + > /* FIXME: Using pci= for an ACPI parameter is a travesty. */ > static int __init parse_pci(char *arg) > { > It would be good to resend this with a CC to linux-acpi in case somebody on that list is interested.