efi/earlycon: Remap entire framebuffer after page initialization
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Fri, 6 Dec 2019 16:55:42 +0000 (16:55 +0000)
committerIngo Molnar <mingo@kernel.org>
Sun, 8 Dec 2019 11:42:19 +0000 (12:42 +0100)
commitb418d660bb9798d2249ac6a46c844389ef50b6a5
treea9471893ef19fde5fef722fbe5149d2a0584edb2
parent9fa76ca7b8bdcdf51fc8c7b7b7a7bfc4eccceb58
efi/earlycon: Remap entire framebuffer after page initialization

When commit:

  69c1f396f25b ("efi/x86: Convert x86 EFI earlyprintk into generic earlycon implementation")

moved the x86 specific EFI earlyprintk implementation to a shared location,
it also tweaked the behaviour. In particular, it dropped a trick with full
framebuffer remapping after page initialization, leading to two regressions:

  1) very slow scrolling after page initialization,
  2) kernel hang when the 'keep_bootcon' command line argument is passed.

Putting the tweak back fixes #2 and mitigates #1, i.e., it limits the slow
behavior to the early boot stages, presumably due to eliminating heavy
map()/unmap() operations per each pixel line on the screen.

 [ ardb: ensure efifb is unmapped again unless keep_bootcon is in effect. ]
 [ mingo: speling fixes. ]

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Cc: Arvind Sankar <nivedita@alum.mit.edu>
Cc: Bhupesh Sharma <bhsharma@redhat.com>
Cc: Masayoshi Mizuma <m.mizuma@jp.fujitsu.com>
Cc: linux-efi@vger.kernel.org
Fixes: 69c1f396f25b ("efi/x86: Convert x86 EFI earlyprintk into generic earlycon implementation")
Link: https://lkml.kernel.org/r/20191206165542.31469-7-ardb@kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
drivers/firmware/efi/earlycon.c