linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH RFC] x86 early_ioremap: increase FIX_BTMAPS_SLOTS to 8
@ 2014-08-26  9:06 Dave Young
  2014-08-28  6:40 ` Zheng, Lv
  2014-09-14 14:14 ` Matt Fleming
  0 siblings, 2 replies; 6+ messages in thread
From: Dave Young @ 2014-08-26  9:06 UTC (permalink / raw)
  To: Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86, Andrew Morton,
	matt.fleming, linux-efi, linux-acpi, linux-kernel, devel, lenb,
	rafael.j.wysocki, robert.moore

3.16 kernel boot fail with earlyprintk=efi, it keeps scrolling at the
bottom line of screen.

Bisected, the first bad commit is below:
commit 86dfc6f339886559d80ee0d4bd20fe5ee90450f0
Author: Lv Zheng <lv.zheng@intel.com>
Date:   Fri Apr 4 12:38:57 2014 +0800

    ACPICA: Tables: Fix table checksums verification before installation.


I did some debugging by enabling both serial and efi earlyprintk, below is
some debug dmesg, seems early_ioremap fails in scroll up function due to
no free slot, see below dmesg output:

[snip]
[    0.000000] RAMDISK: [mem 0x3e1b0000-0x3e982fff]
[    0.000000] ACPI: Early table checksum verification disabled
[    0.000000] ACPI: RSDP 0x00000000DB752000 000024 (v02 HPQOEM)
[    0.000000] ACPI: XSDT 0x00000000DB752088 00008C (v01 HPQOEM SLIC-WKS 01072009 AMI  00010013)
[    0.000000] ACPI: FACP 0x00000000DB759590 00010C (v05 HPQOEM SLIC-WKS 01072009 AMI  00010013)
[    0.000000] ------------[ cut here ]------------
[    0.000000] WARNING: CPU: 0 PID: 0 at mm/early_ioremap.c:116 __early_ioremap+0x90/0x1c4()
[    0.000000] __early_ioremap(ed00c800, 00000c80) not found slot
[    0.000000] Modules linked in:
[    0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 3.17.0-rc1+ #204
[    0.000000] Hardware name: Hewlett-Packard HP Z420 Workstation/1589, BIOS J61 v03.15 05/09/2013
[    0.000000]  0000000000000000 ffffffff8173b970 ffffffff814bb919 ffffffff8173b9b8
[    0.000000]  ffffffff8173b9a8 ffffffff810638c9 ffffffff8184ee81 ffffffffff538000
[    0.000000]  0000000000000c80 0000000000000003 0000000000000c80 ffffffff8173ba08
[    0.000000] Call Trace:
[    0.000000]  [<ffffffff814bb919>] dump_stack+0x4e/0x7a
[    0.000000]  [<ffffffff810638c9>] warn_slowpath_common+0x75/0x8e
[    0.000000]  [<ffffffff8184ee81>] ? __early_ioremap+0x90/0x1c4
[    0.000000]  [<ffffffff81063929>] warn_slowpath_fmt+0x47/0x49
[    0.000000]  [<ffffffff8184ee81>] __early_ioremap+0x90/0x1c4
[    0.000000]  [<ffffffff8124cf4d>] ? sprintf+0x46/0x48
[    0.000000]  [<ffffffff8184f169>] early_ioremap+0x13/0x15
[    0.000000]  [<ffffffff814ae4f0>] early_efi_map+0x24/0x26
[    0.000000]  [<ffffffff81060985>] early_efi_scroll_up+0x6d/0xc0
[    0.000000]  [<ffffffff81060b88>] early_efi_write+0x1b0/0x214
[    0.000000]  [<ffffffff8109ec3a>] call_console_drivers.constprop.21+0x73/0x7e
[    0.000000]  [<ffffffff8109fab4>] console_unlock+0x151/0x3b2
[    0.000000]  [<ffffffff810a01b4>] ? vprintk_emit+0x49f/0x532
[    0.000000]  [<ffffffff810a0236>] vprintk_emit+0x521/0x532
[    0.000000]  [<ffffffff8109fce6>] ? console_unlock+0x383/0x3b2
[    0.000000]  [<ffffffff814b6f01>] printk+0x4f/0x51
[    0.000000]  [<ffffffff81292f9c>] acpi_os_vprintf+0x2b/0x2d
[    0.000000]  [<ffffffff81292fe1>] acpi_os_printf+0x43/0x45
[    0.000000]  [<ffffffff812bc44c>] acpi_info+0x5c/0x63
[    0.000000]  [<ffffffff8183cdfa>] ? __acpi_map_table+0x13/0x18
[    0.000000]  [<ffffffff814afc88>] ? acpi_os_map_iomem+0x21/0x147
[    0.000000]  [<ffffffff812b7e59>] acpi_tb_print_table_header+0x177/0x186
[    0.000000]  [<ffffffff812b79da>] acpi_tb_install_table_with_override+0x4b/0x62
[    0.000000]  [<ffffffff812b7b80>] acpi_tb_install_standard_table+0xd9/0x215
[    0.000000]  [<ffffffff8184f169>] ? early_ioremap+0x13/0x15
[    0.000000]  [<ffffffff8183cdfa>] ? __acpi_map_table+0x13/0x18
[    0.000000]  [<ffffffff81857545>] acpi_tb_parse_root_table+0x16e/0x1b4
[    0.000000]  [<ffffffff818575e2>] acpi_initialize_tables+0x57/0x59
[    0.000000]  [<ffffffff8185591d>] acpi_table_init+0x50/0xce
[    0.000000]  [<ffffffff8183cea2>] acpi_boot_table_init+0x1e/0x85
[    0.000000]  [<ffffffff81834638>] setup_arch+0x9b7/0xcc4
[    0.000000]  [<ffffffff81830b3e>] start_kernel+0x94/0x42d
[    0.000000]  [<ffffffff81830120>] ? early_idt_handlers+0x120/0x120
[    0.000000]  [<ffffffff818304a2>] x86_64_start_reservations+0x2a/0x2c
[    0.000000]  [<ffffffff81830597>] x86_64_start_kernel+0xf3/0x100
[    0.000000] ---[ end trace 48732c7db414b8fe ]---
[    0.000000] ------------[ cut here ]------------
[    0.000000] WARNING: CPU: 0 PID: 0 at mm/early_ioremap.c:116 __early_ioremap+0x90/0x1c4()
[    0.000000] __early_ioremap(ed00c800, 00000c80) not found slot
[    0.000000] Modules linked in:
[    0.000000] CPU: 0 PID: 0 Comm: swapper Tainted: G        W      3.17.0-rc1+ #204
[    0.000000] Hardware name: Hewlett-Packard HP Z420 Workstation/1589, BIOS J61 v03.15 05/09/2013
[    0.000000]  0000000000000000 ffffffff8173b970 ffffffff814bb919 ffffffff8173b9b8
[    0.000000]  ffffffff8173b9a8 ffffffff810638c9 ffffffff8184ee81 ffffffffff538000
[    0.000000]  0000000000000c80 0000000000000003 0000000000000c80 ffffffff8173ba08
[    0.000000] Call Trace:
[    0.000000]  [<ffffffff814bb919>] dump_stack+0x4e/0x7a
[    0.000000]  [<ffffffff810638c9>] warn_slowpath_common+0x75/0x8e
[    0.000000]  [<ffffffff8184ee81>] ? __early_ioremap+0x90/0x1c4
[    0.000000]  [<ffffffff81063929>] warn_slowpath_fmt+0x47/0x49
[    0.000000]  [<ffffffff8184ee81>] __early_ioremap+0x90/0x1c4
[    0.000000]  [<ffffffff8184f169>] early_ioremap+0x13/0x15
[    0.000000]  [<ffffffff814ae4f0>] early_efi_map+0x24/0x26
[    0.000000]  [<ffffffff81060985>] early_efi_scroll_up+0x6d/0xc0
[    0.000000]  [<ffffffff81060b88>] early_efi_write+0x1b0/0x214
[    0.000000]  [<ffffffff8109ec3a>] call_console_drivers.constprop.21+0x73/0x7e
[    0.000000]  [<ffffffff8109fb5d>] console_unlock+0x1fa/0x3b2
[    0.000000]  [<ffffffff810a0236>] vprintk_emit+0x521/0x532
[    0.000000]  [<ffffffff8109fce6>] ? console_unlock+0x383/0x3b2
[    0.000000]  [<ffffffff814b6f01>] printk+0x4f/0x51
[    0.000000]  [<ffffffff81292f9c>] acpi_os_vprintf+0x2b/0x2d
[    0.000000]  [<ffffffff81292fe1>] acpi_os_printf+0x43/0x45
[    0.000000]  [<ffffffff812bc44c>] acpi_info+0x5c/0x63
[    0.000000]  [<ffffffff8183cdfa>] ? __acpi_map_table+0x13/0x18
[    0.000000]  [<ffffffff814afc88>] ? acpi_os_map_iomem+0x21/0x147
[    0.000000]  [<ffffffff812b7e59>] acpi_tb_print_table_header+0x177/0x186
[    0.000000]  [<ffffffff812b79da>] acpi_tb_install_table_with_override+0x4b/0x62
[    0.000000]  [<ffffffff812b7b80>] acpi_tb_install_standard_table+0xd9/0x215
[    0.000000]  [<ffffffff8184f169>] ? early_ioremap+0x13/0x15
[    0.000000]  [<ffffffff8183cdfa>] ? __acpi_map_table+0x13/0x18
[    0.000000]  [<ffffffff81857545>] acpi_tb_parse_root_table+0x16e/0x1b4
[    0.000000]  [<ffffffff818575e2>] acpi_initialize_tables+0x57/0x59
[    0.000000]  [<ffffffff8185591d>] acpi_table_init+0x50/0xce
[    0.000000]  [<ffffffff8183cea2>] acpi_boot_table_init+0x1e/0x85
[    0.000000]  [<ffffffff81834638>] setup_arch+0x9b7/0xcc4
[    0.000000]  [<ffffffff81830b3e>] start_kernel+0x94/0x42d
[    0.000000]  [<ffffffff81830120>] ? early_idt_handlers+0x120/0x120
[    0.000000]  [<ffffffff818304a2>] x86_64_start_reservations+0x2a/0x2c


Quote reply from Lv.zheng about the early ioremap slot usage in this case:

"""
In early_efi_scroll_up(), 2 mapping entries will be used for the src/dst screen buffer.
In drivers/acpi/acpica/tbutils.c, we've improved the early table loading code in acpi_tb_parse_root_table().
We now need 2 mapping entries:
1. One mapping entry is used for RSDT table mapping. Each RSDT entry contains an address for another ACPI table.
2. For each entry in RSDP, we need another mapping entry to map the table to perform necessary check/override before installing it.

When acpi_tb_parse_root_table() prints something through EFI earlyprintk console, we'll have 4 mapping entries used.
The current 4 slots setting of early_ioremap() seems to be too small for such a use case.
"""

Thus increase the slot to 8 in this patch to fix this issue.
boot-time mappings become 512 page with this patch.

Signed-off-by: Dave Young <dyoung@redhat.com>
---
I'm not sure if this is ok in 32bit, review and comments are appreciated.
 arch/x86/include/asm/fixmap.h |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Index: linux/arch/x86/include/asm/fixmap.h
===================================================================
--- linux.orig/arch/x86/include/asm/fixmap.h
+++ linux/arch/x86/include/asm/fixmap.h
@@ -106,14 +106,14 @@ enum fixed_addresses {
 	__end_of_permanent_fixed_addresses,
 
 	/*
-	 * 256 temporary boot-time mappings, used by early_ioremap(),
+	 * 512 temporary boot-time mappings, used by early_ioremap(),
 	 * before ioremap() is functional.
 	 *
-	 * If necessary we round it up to the next 256 pages boundary so
+	 * If necessary we round it up to the next 512 pages boundary so
 	 * that we can have a single pgd entry and a single pte table:
 	 */
 #define NR_FIX_BTMAPS		64
-#define FIX_BTMAPS_SLOTS	4
+#define FIX_BTMAPS_SLOTS	8
 #define TOTAL_FIX_BTMAPS	(NR_FIX_BTMAPS * FIX_BTMAPS_SLOTS)
 	FIX_BTMAP_END =
 	 (__end_of_permanent_fixed_addresses ^

^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: [PATCH RFC] x86 early_ioremap: increase FIX_BTMAPS_SLOTS to 8
  2014-08-26  9:06 [PATCH RFC] x86 early_ioremap: increase FIX_BTMAPS_SLOTS to 8 Dave Young
@ 2014-08-28  6:40 ` Zheng, Lv
  2014-09-14 14:14 ` Matt Fleming
  1 sibling, 0 replies; 6+ messages in thread
From: Zheng, Lv @ 2014-08-28  6:40 UTC (permalink / raw)
  To: Dave Young, Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86,
	Andrew Morton, Fleming, Matt, linux-efi, linux-acpi,
	linux-kernel, devel, lenb, Wysocki, Rafael J, Moore, Robert

Hi,

> From: linux-acpi-owner@vger.kernel.org [mailto:linux-acpi-owner@vger.kernel.org] On Behalf Of Dave Young
> Sent: Tuesday, August 26, 2014 5:07 PM
> 
> 3.16 kernel boot fail with earlyprintk=efi, it keeps scrolling at the
> bottom line of screen.
> 
> Bisected, the first bad commit is below:
> commit 86dfc6f339886559d80ee0d4bd20fe5ee90450f0
> Author: Lv Zheng <lv.zheng@intel.com>
> Date:   Fri Apr 4 12:38:57 2014 +0800
> 
>     ACPICA: Tables: Fix table checksums verification before installation.
> 
> 
> I did some debugging by enabling both serial and efi earlyprintk, below is
> some debug dmesg, seems early_ioremap fails in scroll up function due to
> no free slot, see below dmesg output:
> 
> [snip]
> [    0.000000] RAMDISK: [mem 0x3e1b0000-0x3e982fff]
> [    0.000000] ACPI: Early table checksum verification disabled
> [    0.000000] ACPI: RSDP 0x00000000DB752000 000024 (v02 HPQOEM)
> [    0.000000] ACPI: XSDT 0x00000000DB752088 00008C (v01 HPQOEM SLIC-WKS 01072009 AMI  00010013)
> [    0.000000] ACPI: FACP 0x00000000DB759590 00010C (v05 HPQOEM SLIC-WKS 01072009 AMI  00010013)
> [    0.000000] ------------[ cut here ]------------
> [    0.000000] WARNING: CPU: 0 PID: 0 at mm/early_ioremap.c:116 __early_ioremap+0x90/0x1c4()
> [    0.000000] __early_ioremap(ed00c800, 00000c80) not found slot
> [    0.000000] Modules linked in:
> [    0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 3.17.0-rc1+ #204
> [    0.000000] Hardware name: Hewlett-Packard HP Z420 Workstation/1589, BIOS J61 v03.15 05/09/2013
> [    0.000000]  0000000000000000 ffffffff8173b970 ffffffff814bb919 ffffffff8173b9b8
> [    0.000000]  ffffffff8173b9a8 ffffffff810638c9 ffffffff8184ee81 ffffffffff538000
> [    0.000000]  0000000000000c80 0000000000000003 0000000000000c80 ffffffff8173ba08
> [    0.000000] Call Trace:
> [    0.000000]  [<ffffffff814bb919>] dump_stack+0x4e/0x7a
> [    0.000000]  [<ffffffff810638c9>] warn_slowpath_common+0x75/0x8e
> [    0.000000]  [<ffffffff8184ee81>] ? __early_ioremap+0x90/0x1c4
> [    0.000000]  [<ffffffff81063929>] warn_slowpath_fmt+0x47/0x49
> [    0.000000]  [<ffffffff8184ee81>] __early_ioremap+0x90/0x1c4
> [    0.000000]  [<ffffffff8124cf4d>] ? sprintf+0x46/0x48
> [    0.000000]  [<ffffffff8184f169>] early_ioremap+0x13/0x15
> [    0.000000]  [<ffffffff814ae4f0>] early_efi_map+0x24/0x26
> [    0.000000]  [<ffffffff81060985>] early_efi_scroll_up+0x6d/0xc0
> [    0.000000]  [<ffffffff81060b88>] early_efi_write+0x1b0/0x214
> [    0.000000]  [<ffffffff8109ec3a>] call_console_drivers.constprop.21+0x73/0x7e
> [    0.000000]  [<ffffffff8109fab4>] console_unlock+0x151/0x3b2
> [    0.000000]  [<ffffffff810a01b4>] ? vprintk_emit+0x49f/0x532
> [    0.000000]  [<ffffffff810a0236>] vprintk_emit+0x521/0x532
> [    0.000000]  [<ffffffff8109fce6>] ? console_unlock+0x383/0x3b2
> [    0.000000]  [<ffffffff814b6f01>] printk+0x4f/0x51
> [    0.000000]  [<ffffffff81292f9c>] acpi_os_vprintf+0x2b/0x2d
> [    0.000000]  [<ffffffff81292fe1>] acpi_os_printf+0x43/0x45
> [    0.000000]  [<ffffffff812bc44c>] acpi_info+0x5c/0x63
> [    0.000000]  [<ffffffff8183cdfa>] ? __acpi_map_table+0x13/0x18
> [    0.000000]  [<ffffffff814afc88>] ? acpi_os_map_iomem+0x21/0x147
> [    0.000000]  [<ffffffff812b7e59>] acpi_tb_print_table_header+0x177/0x186
> [    0.000000]  [<ffffffff812b79da>] acpi_tb_install_table_with_override+0x4b/0x62
> [    0.000000]  [<ffffffff812b7b80>] acpi_tb_install_standard_table+0xd9/0x215
> [    0.000000]  [<ffffffff8184f169>] ? early_ioremap+0x13/0x15
> [    0.000000]  [<ffffffff8183cdfa>] ? __acpi_map_table+0x13/0x18
> [    0.000000]  [<ffffffff81857545>] acpi_tb_parse_root_table+0x16e/0x1b4
> [    0.000000]  [<ffffffff818575e2>] acpi_initialize_tables+0x57/0x59
> [    0.000000]  [<ffffffff8185591d>] acpi_table_init+0x50/0xce
> [    0.000000]  [<ffffffff8183cea2>] acpi_boot_table_init+0x1e/0x85
> [    0.000000]  [<ffffffff81834638>] setup_arch+0x9b7/0xcc4
> [    0.000000]  [<ffffffff81830b3e>] start_kernel+0x94/0x42d
> [    0.000000]  [<ffffffff81830120>] ? early_idt_handlers+0x120/0x120
> [    0.000000]  [<ffffffff818304a2>] x86_64_start_reservations+0x2a/0x2c
> [    0.000000]  [<ffffffff81830597>] x86_64_start_kernel+0xf3/0x100
> [    0.000000] ---[ end trace 48732c7db414b8fe ]---
> [    0.000000] ------------[ cut here ]------------
> [    0.000000] WARNING: CPU: 0 PID: 0 at mm/early_ioremap.c:116 __early_ioremap+0x90/0x1c4()
> [    0.000000] __early_ioremap(ed00c800, 00000c80) not found slot
> [    0.000000] Modules linked in:
> [    0.000000] CPU: 0 PID: 0 Comm: swapper Tainted: G        W      3.17.0-rc1+ #204
> [    0.000000] Hardware name: Hewlett-Packard HP Z420 Workstation/1589, BIOS J61 v03.15 05/09/2013
> [    0.000000]  0000000000000000 ffffffff8173b970 ffffffff814bb919 ffffffff8173b9b8
> [    0.000000]  ffffffff8173b9a8 ffffffff810638c9 ffffffff8184ee81 ffffffffff538000
> [    0.000000]  0000000000000c80 0000000000000003 0000000000000c80 ffffffff8173ba08
> [    0.000000] Call Trace:
> [    0.000000]  [<ffffffff814bb919>] dump_stack+0x4e/0x7a
> [    0.000000]  [<ffffffff810638c9>] warn_slowpath_common+0x75/0x8e
> [    0.000000]  [<ffffffff8184ee81>] ? __early_ioremap+0x90/0x1c4
> [    0.000000]  [<ffffffff81063929>] warn_slowpath_fmt+0x47/0x49
> [    0.000000]  [<ffffffff8184ee81>] __early_ioremap+0x90/0x1c4
> [    0.000000]  [<ffffffff8184f169>] early_ioremap+0x13/0x15
> [    0.000000]  [<ffffffff814ae4f0>] early_efi_map+0x24/0x26
> [    0.000000]  [<ffffffff81060985>] early_efi_scroll_up+0x6d/0xc0
> [    0.000000]  [<ffffffff81060b88>] early_efi_write+0x1b0/0x214
> [    0.000000]  [<ffffffff8109ec3a>] call_console_drivers.constprop.21+0x73/0x7e
> [    0.000000]  [<ffffffff8109fb5d>] console_unlock+0x1fa/0x3b2
> [    0.000000]  [<ffffffff810a0236>] vprintk_emit+0x521/0x532
> [    0.000000]  [<ffffffff8109fce6>] ? console_unlock+0x383/0x3b2
> [    0.000000]  [<ffffffff814b6f01>] printk+0x4f/0x51
> [    0.000000]  [<ffffffff81292f9c>] acpi_os_vprintf+0x2b/0x2d
> [    0.000000]  [<ffffffff81292fe1>] acpi_os_printf+0x43/0x45
> [    0.000000]  [<ffffffff812bc44c>] acpi_info+0x5c/0x63
> [    0.000000]  [<ffffffff8183cdfa>] ? __acpi_map_table+0x13/0x18
> [    0.000000]  [<ffffffff814afc88>] ? acpi_os_map_iomem+0x21/0x147
> [    0.000000]  [<ffffffff812b7e59>] acpi_tb_print_table_header+0x177/0x186
> [    0.000000]  [<ffffffff812b79da>] acpi_tb_install_table_with_override+0x4b/0x62
> [    0.000000]  [<ffffffff812b7b80>] acpi_tb_install_standard_table+0xd9/0x215
> [    0.000000]  [<ffffffff8184f169>] ? early_ioremap+0x13/0x15
> [    0.000000]  [<ffffffff8183cdfa>] ? __acpi_map_table+0x13/0x18
> [    0.000000]  [<ffffffff81857545>] acpi_tb_parse_root_table+0x16e/0x1b4
> [    0.000000]  [<ffffffff818575e2>] acpi_initialize_tables+0x57/0x59
> [    0.000000]  [<ffffffff8185591d>] acpi_table_init+0x50/0xce
> [    0.000000]  [<ffffffff8183cea2>] acpi_boot_table_init+0x1e/0x85
> [    0.000000]  [<ffffffff81834638>] setup_arch+0x9b7/0xcc4
> [    0.000000]  [<ffffffff81830b3e>] start_kernel+0x94/0x42d
> [    0.000000]  [<ffffffff81830120>] ? early_idt_handlers+0x120/0x120
> [    0.000000]  [<ffffffff818304a2>] x86_64_start_reservations+0x2a/0x2c
> 
> 
> Quote reply from Lv.zheng about the early ioremap slot usage in this case:
> 
> """
> In early_efi_scroll_up(), 2 mapping entries will be used for the src/dst screen buffer.
> In drivers/acpi/acpica/tbutils.c, we've improved the early table loading code in acpi_tb_parse_root_table().
> We now need 2 mapping entries:
> 1. One mapping entry is used for RSDT table mapping. Each RSDT entry contains an address for another ACPI table.
> 2. For each entry in RSDP, we need another mapping entry to map the table to perform necessary check/override before installing it.
> 
> When acpi_tb_parse_root_table() prints something through EFI earlyprintk console, we'll have 4 mapping entries used.
> The current 4 slots setting of early_ioremap() seems to be too small for such a use case.
> """

In my reply, I only talked about 4 mapping entries which doesn't exceed the current number of early ioremap slot.
Was it better to offer early_ioremap_debug log to prove that we really need to increase it?
And to prove that all of the mappings are done by the code already upstreamed?

Thanks and best regards
-Lv

> 
> Thus increase the slot to 8 in this patch to fix this issue.
> boot-time mappings become 512 page with this patch.
> 
> Signed-off-by: Dave Young <dyoung@redhat.com>
> ---
> I'm not sure if this is ok in 32bit, review and comments are appreciated.
>  arch/x86/include/asm/fixmap.h |    6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> Index: linux/arch/x86/include/asm/fixmap.h
> ===================================================================
> --- linux.orig/arch/x86/include/asm/fixmap.h
> +++ linux/arch/x86/include/asm/fixmap.h
> @@ -106,14 +106,14 @@ enum fixed_addresses {
>  	__end_of_permanent_fixed_addresses,
> 
>  	/*
> -	 * 256 temporary boot-time mappings, used by early_ioremap(),
> +	 * 512 temporary boot-time mappings, used by early_ioremap(),
>  	 * before ioremap() is functional.
>  	 *
> -	 * If necessary we round it up to the next 256 pages boundary so
> +	 * If necessary we round it up to the next 512 pages boundary so
>  	 * that we can have a single pgd entry and a single pte table:
>  	 */
>  #define NR_FIX_BTMAPS		64
> -#define FIX_BTMAPS_SLOTS	4
> +#define FIX_BTMAPS_SLOTS	8
>  #define TOTAL_FIX_BTMAPS	(NR_FIX_BTMAPS * FIX_BTMAPS_SLOTS)
>  	FIX_BTMAP_END =
>  	 (__end_of_permanent_fixed_addresses ^
> --
> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH RFC] x86 early_ioremap: increase FIX_BTMAPS_SLOTS to 8
  2014-08-26  9:06 [PATCH RFC] x86 early_ioremap: increase FIX_BTMAPS_SLOTS to 8 Dave Young
  2014-08-28  6:40 ` Zheng, Lv
@ 2014-09-14 14:14 ` Matt Fleming
  2014-09-15  2:38   ` Dave Young
  1 sibling, 1 reply; 6+ messages in thread
From: Matt Fleming @ 2014-09-14 14:14 UTC (permalink / raw)
  To: Dave Young
  Cc: Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86, Andrew Morton,
	matt.fleming, linux-efi, linux-acpi, linux-kernel, devel, lenb,
	rafael.j.wysocki, robert.moore

On Tue, 26 Aug, at 05:06:41PM, Dave Young wrote:
> 3.16 kernel boot fail with earlyprintk=efi, it keeps scrolling at the
> bottom line of screen.
> 
> Bisected, the first bad commit is below:
> commit 86dfc6f339886559d80ee0d4bd20fe5ee90450f0
> Author: Lv Zheng <lv.zheng@intel.com>
> Date:   Fri Apr 4 12:38:57 2014 +0800
> 
>     ACPICA: Tables: Fix table checksums verification before installation.

[...]

> Quote reply from Lv.zheng about the early ioremap slot usage in this case:
> 
> """
> In early_efi_scroll_up(), 2 mapping entries will be used for the src/dst screen buffer.
> In drivers/acpi/acpica/tbutils.c, we've improved the early table loading code in acpi_tb_parse_root_table().
> We now need 2 mapping entries:
> 1. One mapping entry is used for RSDT table mapping. Each RSDT entry contains an address for another ACPI table.
> 2. For each entry in RSDP, we need another mapping entry to map the table to perform necessary check/override before installing it.
> 
> When acpi_tb_parse_root_table() prints something through EFI earlyprintk console, we'll have 4 mapping entries used.
> The current 4 slots setting of early_ioremap() seems to be too small for such a use case.
> """
> 
> Thus increase the slot to 8 in this patch to fix this issue.
> boot-time mappings become 512 page with this patch.
 
This analysis and solution makes sense to me, but I was really hoping
for one of the x86 maintainers to ACK the below patch. I'm happy to take
it through the EFI tree if it's not picked up into tip meanwhile.

Also, Dave, it sounds like this should be tagged for stable if the bug
has been around since v3.16?

> Signed-off-by: Dave Young <dyoung@redhat.com>
> ---
> I'm not sure if this is ok in 32bit, review and comments are appreciated.
>  arch/x86/include/asm/fixmap.h |    6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> Index: linux/arch/x86/include/asm/fixmap.h
> ===================================================================
> --- linux.orig/arch/x86/include/asm/fixmap.h
> +++ linux/arch/x86/include/asm/fixmap.h
> @@ -106,14 +106,14 @@ enum fixed_addresses {
>  	__end_of_permanent_fixed_addresses,
>  
>  	/*
> -	 * 256 temporary boot-time mappings, used by early_ioremap(),
> +	 * 512 temporary boot-time mappings, used by early_ioremap(),
>  	 * before ioremap() is functional.
>  	 *
> -	 * If necessary we round it up to the next 256 pages boundary so
> +	 * If necessary we round it up to the next 512 pages boundary so
>  	 * that we can have a single pgd entry and a single pte table:
>  	 */
>  #define NR_FIX_BTMAPS		64
> -#define FIX_BTMAPS_SLOTS	4
> +#define FIX_BTMAPS_SLOTS	8
>  #define TOTAL_FIX_BTMAPS	(NR_FIX_BTMAPS * FIX_BTMAPS_SLOTS)
>  	FIX_BTMAP_END =
>  	 (__end_of_permanent_fixed_addresses ^


-- 
Matt Fleming, Intel Open Source Technology Center

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH RFC] x86 early_ioremap: increase FIX_BTMAPS_SLOTS to 8
  2014-09-14 14:14 ` Matt Fleming
@ 2014-09-15  2:38   ` Dave Young
  2014-09-15  2:42     ` Greg KH
  0 siblings, 1 reply; 6+ messages in thread
From: Dave Young @ 2014-09-15  2:38 UTC (permalink / raw)
  To: Matt Fleming
  Cc: Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86, Andrew Morton,
	matt.fleming, linux-efi, linux-acpi, linux-kernel, devel, lenb,
	rafael.j.wysocki, robert.moore, stable, gregkh

On 09/14/14 at 03:14pm, Matt Fleming wrote:
> On Tue, 26 Aug, at 05:06:41PM, Dave Young wrote:
> > 3.16 kernel boot fail with earlyprintk=efi, it keeps scrolling at the
> > bottom line of screen.
> > 
> > Bisected, the first bad commit is below:
> > commit 86dfc6f339886559d80ee0d4bd20fe5ee90450f0
> > Author: Lv Zheng <lv.zheng@intel.com>
> > Date:   Fri Apr 4 12:38:57 2014 +0800
> > 
> >     ACPICA: Tables: Fix table checksums verification before installation.
> 
> [...]
> 
> > Quote reply from Lv.zheng about the early ioremap slot usage in this case:
> > 
> > """
> > In early_efi_scroll_up(), 2 mapping entries will be used for the src/dst screen buffer.
> > In drivers/acpi/acpica/tbutils.c, we've improved the early table loading code in acpi_tb_parse_root_table().
> > We now need 2 mapping entries:
> > 1. One mapping entry is used for RSDT table mapping. Each RSDT entry contains an address for another ACPI table.
> > 2. For each entry in RSDP, we need another mapping entry to map the table to perform necessary check/override before installing it.
> > 
> > When acpi_tb_parse_root_table() prints something through EFI earlyprintk console, we'll have 4 mapping entries used.
> > The current 4 slots setting of early_ioremap() seems to be too small for such a use case.
> > """
> > 
> > Thus increase the slot to 8 in this patch to fix this issue.
> > boot-time mappings become 512 page with this patch.
>  
> This analysis and solution makes sense to me, but I was really hoping
> for one of the x86 maintainers to ACK the below patch. I'm happy to take
> it through the EFI tree if it's not picked up into tip meanwhile.
> 
> Also, Dave, it sounds like this should be tagged for stable if the bug
> has been around since v3.16?

Matt, yes, it should be a stable issue, ccing Greg and stable list.

> 
> > Signed-off-by: Dave Young <dyoung@redhat.com>
> > ---
> > I'm not sure if this is ok in 32bit, review and comments are appreciated.
> >  arch/x86/include/asm/fixmap.h |    6 +++---
> >  1 file changed, 3 insertions(+), 3 deletions(-)
> > 
> > Index: linux/arch/x86/include/asm/fixmap.h
> > ===================================================================
> > --- linux.orig/arch/x86/include/asm/fixmap.h
> > +++ linux/arch/x86/include/asm/fixmap.h
> > @@ -106,14 +106,14 @@ enum fixed_addresses {
> >  	__end_of_permanent_fixed_addresses,
> >  
> >  	/*
> > -	 * 256 temporary boot-time mappings, used by early_ioremap(),
> > +	 * 512 temporary boot-time mappings, used by early_ioremap(),
> >  	 * before ioremap() is functional.
> >  	 *
> > -	 * If necessary we round it up to the next 256 pages boundary so
> > +	 * If necessary we round it up to the next 512 pages boundary so
> >  	 * that we can have a single pgd entry and a single pte table:
> >  	 */
> >  #define NR_FIX_BTMAPS		64
> > -#define FIX_BTMAPS_SLOTS	4
> > +#define FIX_BTMAPS_SLOTS	8
> >  #define TOTAL_FIX_BTMAPS	(NR_FIX_BTMAPS * FIX_BTMAPS_SLOTS)
> >  	FIX_BTMAP_END =
> >  	 (__end_of_permanent_fixed_addresses ^
> 
> 
> -- 
> Matt Fleming, Intel Open Source Technology Center

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH RFC] x86 early_ioremap: increase FIX_BTMAPS_SLOTS to 8
  2014-09-15  2:38   ` Dave Young
@ 2014-09-15  2:42     ` Greg KH
  2014-09-15  3:33       ` Dave Young
  0 siblings, 1 reply; 6+ messages in thread
From: Greg KH @ 2014-09-15  2:42 UTC (permalink / raw)
  To: Dave Young
  Cc: Matt Fleming, Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86,
	Andrew Morton, matt.fleming, linux-efi, linux-acpi, linux-kernel,
	devel, lenb, rafael.j.wysocki, robert.moore, stable

On Mon, Sep 15, 2014 at 10:38:05AM +0800, Dave Young wrote:
> On 09/14/14 at 03:14pm, Matt Fleming wrote:
> > On Tue, 26 Aug, at 05:06:41PM, Dave Young wrote:
> > > 3.16 kernel boot fail with earlyprintk=efi, it keeps scrolling at the
> > > bottom line of screen.
> > > 
> > > Bisected, the first bad commit is below:
> > > commit 86dfc6f339886559d80ee0d4bd20fe5ee90450f0
> > > Author: Lv Zheng <lv.zheng@intel.com>
> > > Date:   Fri Apr 4 12:38:57 2014 +0800
> > > 
> > >     ACPICA: Tables: Fix table checksums verification before installation.
> > 
> > [...]
> > 
> > > Quote reply from Lv.zheng about the early ioremap slot usage in this case:
> > > 
> > > """
> > > In early_efi_scroll_up(), 2 mapping entries will be used for the src/dst screen buffer.
> > > In drivers/acpi/acpica/tbutils.c, we've improved the early table loading code in acpi_tb_parse_root_table().
> > > We now need 2 mapping entries:
> > > 1. One mapping entry is used for RSDT table mapping. Each RSDT entry contains an address for another ACPI table.
> > > 2. For each entry in RSDP, we need another mapping entry to map the table to perform necessary check/override before installing it.
> > > 
> > > When acpi_tb_parse_root_table() prints something through EFI earlyprintk console, we'll have 4 mapping entries used.
> > > The current 4 slots setting of early_ioremap() seems to be too small for such a use case.
> > > """
> > > 
> > > Thus increase the slot to 8 in this patch to fix this issue.
> > > boot-time mappings become 512 page with this patch.
> >  
> > This analysis and solution makes sense to me, but I was really hoping
> > for one of the x86 maintainers to ACK the below patch. I'm happy to take
> > it through the EFI tree if it's not picked up into tip meanwhile.
> > 
> > Also, Dave, it sounds like this should be tagged for stable if the bug
> > has been around since v3.16?
> 
> Matt, yes, it should be a stable issue, ccing Greg and stable list.

<formletter>

This is not the correct way to submit patches for inclusion in the
stable kernel tree.  Please read Documentation/stable_kernel_rules.txt
for how to do this properly.

</formletter>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH RFC] x86 early_ioremap: increase FIX_BTMAPS_SLOTS to 8
  2014-09-15  2:42     ` Greg KH
@ 2014-09-15  3:33       ` Dave Young
  0 siblings, 0 replies; 6+ messages in thread
From: Dave Young @ 2014-09-15  3:33 UTC (permalink / raw)
  To: Greg KH
  Cc: Matt Fleming, Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86,
	Andrew Morton, matt.fleming, linux-efi, linux-acpi, linux-kernel,
	devel, lenb, rafael.j.wysocki, robert.moore, stable

On 09/14/14 at 07:42pm, Greg KH wrote:
> On Mon, Sep 15, 2014 at 10:38:05AM +0800, Dave Young wrote:
> > On 09/14/14 at 03:14pm, Matt Fleming wrote:
> > > On Tue, 26 Aug, at 05:06:41PM, Dave Young wrote:
> > > > 3.16 kernel boot fail with earlyprintk=efi, it keeps scrolling at the
> > > > bottom line of screen.
> > > > 
> > > > Bisected, the first bad commit is below:
> > > > commit 86dfc6f339886559d80ee0d4bd20fe5ee90450f0
> > > > Author: Lv Zheng <lv.zheng@intel.com>
> > > > Date:   Fri Apr 4 12:38:57 2014 +0800
> > > > 
> > > >     ACPICA: Tables: Fix table checksums verification before installation.
> > > 
> > > [...]
> > > 
> > > > Quote reply from Lv.zheng about the early ioremap slot usage in this case:
> > > > 
> > > > """
> > > > In early_efi_scroll_up(), 2 mapping entries will be used for the src/dst screen buffer.
> > > > In drivers/acpi/acpica/tbutils.c, we've improved the early table loading code in acpi_tb_parse_root_table().
> > > > We now need 2 mapping entries:
> > > > 1. One mapping entry is used for RSDT table mapping. Each RSDT entry contains an address for another ACPI table.
> > > > 2. For each entry in RSDP, we need another mapping entry to map the table to perform necessary check/override before installing it.
> > > > 
> > > > When acpi_tb_parse_root_table() prints something through EFI earlyprintk console, we'll have 4 mapping entries used.
> > > > The current 4 slots setting of early_ioremap() seems to be too small for such a use case.
> > > > """
> > > > 
> > > > Thus increase the slot to 8 in this patch to fix this issue.
> > > > boot-time mappings become 512 page with this patch.
> > >  
> > > This analysis and solution makes sense to me, but I was really hoping
> > > for one of the x86 maintainers to ACK the below patch. I'm happy to take
> > > it through the EFI tree if it's not picked up into tip meanwhile.
> > > 
> > > Also, Dave, it sounds like this should be tagged for stable if the bug
> > > has been around since v3.16?
> > 
> > Matt, yes, it should be a stable issue, ccing Greg and stable list.
> 
> <formletter>
> 
> This is not the correct way to submit patches for inclusion in the
> stable kernel tree.  Please read Documentation/stable_kernel_rules.txt
> for how to do this properly.
> 
> </formletter>

Frankly I did not know the exact work flow about stable patches. Thanks for
pointing me the documentation. I was just assuming I should cc your guys 
about the issues which could be stable candidate even though it has not been
accepted now, so it can get noticed by stable people.

Thanks
Dave

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2014-09-15  3:34 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-08-26  9:06 [PATCH RFC] x86 early_ioremap: increase FIX_BTMAPS_SLOTS to 8 Dave Young
2014-08-28  6:40 ` Zheng, Lv
2014-09-14 14:14 ` Matt Fleming
2014-09-15  2:38   ` Dave Young
2014-09-15  2:42     ` Greg KH
2014-09-15  3:33       ` Dave Young

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).