[Bug 219495] New: [TPM2] tpm_tis driver crashs during the boot time.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



https://bugzilla.kernel.org/show_bug.cgi?id=219495

            Bug ID: 219495
           Summary: [TPM2] tpm_tis driver crashs during the boot time.
           Product: Drivers
           Version: 2.5
          Hardware: All
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P3
         Component: Platform_x86
          Assignee: drivers_platform_x86@xxxxxxxxxxxxxxxxxxxx
          Reporter: andy.liang@xxxxxxx
        Regression: No

Created attachment 307212
  --> https://bugzilla.kernel.org/attachment.cgi?id=307212&action=edit
binary_bios_measurements file

When the TPM2 ACPI table sets the Minimum Log Length size more then 4MB, a call
trace occurs during the boot time. The reason is the kmalloc limits the maximum
size to 4MB for x86 arch.

======
https://elixir.bootlin.com/linux/v6.8/source/arch/x86/include/asm/page_types.h#L10
#define PAGE_SHIFT 12
#define KMALLOC_SHIFT_MAX (MAX_PAGE_ORDER + PAGE_SHIFT)

https://elixir.bootlin.com/linux/v6.8/source/include/linux/mmzone.h#L30
#define MAX_PAGE_ORDER 10

https://elixir.bootlin.com/linux/v6.8/source/include/linux/slab.h#L309
#define KMALLOC_MAX_SIZE (1UL << KMALLOC_SHIFT_MAX)
The max size  = (1UL <<  MAX_PAGE_ORDER + PAGE_SHIFT) = ( 1UL << (10 + 12)) =
2^22 =4,194,304 (4MB)
======

https://elixir.bootlin.com/linux/v6.8/source/drivers/char/tpm/eventlog/acpi.c#L87
[   11.795176] kernel:  __kmalloc+0x2b1/0x330
[   11.795179] kernel:  tpm_read_log_acpi+0x95/0x1e0

Problems:
[   11.795129] kernel: Call Trace:
[   11.795131] kernel:  <TASK>
[   11.795133] kernel:  ? show_trace_log_lvl+0x1d6/0x2ea
[   11.795139] kernel:  ? show_trace_log_lvl+0x1d6/0x2ea
[   11.795141] kernel:  ? alloc_page_interleave+0x19/0x90
[   11.795145] kernel:  ? show_regs.part.0+0x23/0x29
[   11.795146] kernel:  ? show_regs.cold+0x8/0xd
[   11.795148] kernel:  ? __alloc_pages+0x2b0/0x330
[   11.795150] kernel:  ? __warn+0x8c/0x100
[   11.795154] kernel:  ? __alloc_pages+0x2b0/0x330
[   11.795156] kernel:  ? report_bug+0xa4/0xd0
[   11.795160] kernel:  ? handle_bug+0x39/0x90
[   11.795162] kernel:  ? exc_invalid_op+0x19/0x70
[   11.795164] kernel:  ? asm_exc_invalid_op+0x1b/0x20
[   11.795167] kernel:  ? __alloc_pages+0x2b0/0x330
[   11.795169] kernel:  alloc_page_interleave+0x19/0x90
[   11.795171] kernel:  alloc_pages+0x131/0x1e0
[   11.795173] kernel:  kmalloc_order+0x2f/0xd0
[   11.795175] kernel:  kmalloc_order_trace+0x1d/0x90
[   11.795176] kernel:  __kmalloc+0x2b1/0x330
[   11.795179] kernel:  tpm_read_log_acpi+0x95/0x1e0
[   11.795183] kernel:  tpm_bios_log_setup+0x54/0x270
[   11.795185] kernel:  tpm_chip_register.part.0+0x32/0x1f0
[   11.795186] kernel:  tpm_chip_register+0x61/0xa0
[   11.795188] kernel:  tpm_tis_core_init.cold+0x206/0x448
[   11.795191] kernel:  tpm_tis_init.part.0+0xb4/0x130
[   11.795193] kernel:  tpm_tis_plat_probe+0xd4/0x100

[   11.795195] kernel:  platform_probe+0x46/0xd0
[   11.795201] kernel:  really_probe+0x21f/0x420
[   11.795203] kernel:  __driver_probe_device+0xe8/0x140
[   11.795205] kernel:  driver_probe_device+0x23/0xc0
[   11.795207] kernel:  __driver_attach+0xf7/0x1f0
[   11.795209] kernel:  ? __device_attach_driver+0x140/0x140
[   11.795211] kernel:  bus_for_each_dev+0x7c/0xd0
[   11.795213] kernel:  driver_attach+0x1e/0x30
[   11.795215] kernel:  bus_add_driver+0x148/0x220
[   11.795217] kernel:  driver_register+0x95/0x100
[   11.795219] kernel:  ? tpm_init+0x68/0xfa

-- 
You may reply to this email to add a comment.

You are receiving this mail because:
You are watching the assignee of the bug.




[Index of Archives]     [Linux Kernel Development]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux