[Intel-gfx] [PATCH] usb/icl: Work around ACPI boottime crash

Tomi Sarvela tomi.p.sarvela at intel.com
Wed Jul 4 07:34:12 UTC 2018


On 07/03/2018 08:12 PM, Paulo Zanoni wrote:
> Em Seg, 2018-07-02 às 16:57 +0300, Imre Deak escreveu:
>> Work around the following boot time crash:
> 
> I worked around a very similar boot time crash by disabling
> CONFIG_SLAB_FREELIST_HARDENED. Can you please verify if this helps?

 From the CI kernel configuration:

CONFIG_SLUB=y
# CONFIG_SLOB is not set
CONFIG_SLAB_MERGE_DEFAULT=y
# CONFIG_SLAB_FREELIST_RANDOM is not set
# CONFIG_SLAB_FREELIST_HARDENED is not set
CONFIG_SLUB_CPU_PARTIAL=y
# CONFIG_PROFILING is not set

Tomi

> 
> Reference is LCK-5401.
> 
>>
>> [   10.456056] CPU: 1 PID: 220 Comm: systemd-udevd Tainted:
>> G        W         4.17.0-rc7-CI-CI_DRM_4040+ #182
>> [   10.465828] Hardware name: Intel Corporation Ice Lake Client
>> Platform/IceLake U DDR4 SODIMM PD RVP, BIOS
>> +ICLSFWR1.R00.2204.A00.1805172221 05/17/2018
>> [   10.479168] RIP: 0010:acpi_ps_complete_this_op+0xa7/0x22a
>> [   10.484627] RSP: 0018:ffffc900003a7578 EFLAGS: 00010202
>> [   10.489881] RAX: 6b6b6b6b6b6b6b6b RBX: ffff8804abeda9c8 RCX:
>> 0000000000000020
>> [   10.497045] RDX: 0000000000000000 RSI: ffff88049e604a68 RDI:
>> 0000000000000000
>> [   10.504213] RBP: 0000000000000000 R08: ffff8804abeda9c8 R09:
>> 0000000000000000
>> [   10.511376] R10: 0000000000000000 R11: 0000000000000000 R12:
>> 000000000000000e
>> [   10.518542] R13: ffff88049e604a68 R14: ffff88049e604a68 R15:
>> ffffffffa00263c2
>> [   10.525713] FS:  00007ff6d85f18c0(0000) GS:ffff8804be880000(0000)
>> knlGS:0000000000000000
>> [   10.533839] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>> [   10.539616] CR2: 00007ff6d73cff40 CR3: 000000049f794001 CR4:
>> 0000000000760ee0
>> [   10.546783] DR0: 0000000000000000 DR1: 0000000000000000 DR2:
>> 0000000000000000
>> [   10.553949] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7:
>> 0000000000000400
>> [   10.561112] PKRU: 55555554
>> [   10.563849] Call Trace:
>> [   10.566323]  acpi_ps_complete_op+0x49/0x3f1
>> [   10.570537]  acpi_ps_parse_loop+0x94c/0x9bb
>> [   10.574754]  ? acpi_ds_delete_walk_state+0x113/0x131
>> [   10.579750]  acpi_ps_parse_aml+0x1a2/0x4af
>> [   10.583875]  acpi_ps_execute_method+0x1e9/0x2a5
>> [   10.588435]  acpi_ns_evaluate+0x2e4/0x42c
>> [   10.592473]  acpi_evaluate_object+0x1fd/0x3a8
>> [   10.596873]  usb_acpi_find_companion+0xee/0x1f0 [usbcore]
>> [   10.602319]  acpi_platform_notify+0x33/0xa0
>> [   10.606532]  device_add+0x197/0x600
>> [   10.610048]  ? __init_waitqueue_head+0x36/0x50
>> [   10.614529]  usb_hub_create_port_device+0x11d/0x340 [usbcore]
>> [   10.620314]  hub_probe+0x9a5/0x1010 [usbcore]
>> [   10.624701]  ? _raw_spin_unlock_irqrestore+0x51/0x60
>> [   10.629730]  usb_probe_interface+0x13f/0x300 [usbcore]
>> [   10.634900]  driver_probe_device+0x302/0x470
>> [   10.639198]  ? __driver_attach+0xe0/0xe0
>> [   10.643147]  bus_for_each_drv+0x59/0x90
>> [   10.647013]  __device_attach+0xb7/0x130
>> [   10.650878]  bus_probe_device+0x9c/0xb0
>> [   10.654745]  device_add+0x3c5/0x600
>> [   10.658270]  usb_set_configuration+0x540/0x880 [usbcore]
>> [   10.663621]  generic_probe+0x28/0x80 [usbcore]
>> [   10.668097]  driver_probe_device+0x302/0x470
>> [   10.672393]  ? __driver_attach+0xe0/0xe0
>> [   10.676346]  bus_for_each_drv+0x59/0x90
>> [   10.680211]  __device_attach+0xb7/0x130
>> [   10.684076]  bus_probe_device+0x9c/0xb0
>> [   10.687940]  device_add+0x3c5/0x600
>> [   10.691464]  usb_new_device+0x269/0x490 [usbcore]
>> [   10.696206]  usb_add_hcd+0x558/0x850 [usbcore]
>> [   10.700682]  xhci_pci_probe+0x13d/0x240 [xhci_pci]
>> [   10.705534]  pci_device_probe+0xa1/0x130
>> [   10.709484]  driver_probe_device+0x302/0x470
>> [   10.713784]  __driver_attach+0xb9/0xe0
>> [   10.717562]  ? driver_probe_device+0x470/0x470
>> [   10.722033]  ? driver_probe_device+0x470/0x470
>> [   10.726505]  bus_for_each_dev+0x64/0x90
>> [   10.730370]  ? preempt_count_sub+0x92/0xd0
>> [   10.734495]  bus_add_driver+0x164/0x260
>> [   10.738362]  ? 0xffffffffa004e000
>> [   10.741704]  driver_register+0x57/0xc0
>> [   10.745482]  ? 0xffffffffa004e000
>> [   10.748824]  do_one_initcall+0x4a/0x350
>> [   10.752690]  ? do_init_module+0x22/0x20a
>> [   10.756643]  ? rcu_read_lock_sched_held+0x74/0x80
>> [   10.761377]  ? kmem_cache_alloc_trace+0x284/0x2e0
>> [   10.766114]  do_init_module+0x5b/0x20a
>> [   10.769895]  load_module+0x250d/0x2b20
>> [   10.773678]  ? kernel_read+0x2c/0x40
>> [   10.777285]  ? __se_sys_finit_module+0xaa/0xc0
>> [   10.781759]  __se_sys_finit_module+0xaa/0xc0
>> [   10.786061]  do_syscall_64+0x54/0x190
>> [   10.789752]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
>> [   10.794831] RIP: 0033:0x7ff6d74664d9
>> [   10.798430] RSP: 002b:00007ffd91e7dd78 EFLAGS: 00000246 ORIG_RAX:
>> 0000000000000139
>> [   10.806033] RAX: ffffffffffffffda RBX: 0000560519bfae20 RCX:
>> 00007ff6d74664d9
>> [   10.813195] RDX: 0000000000000000 RSI: 00007ff6d795ce23 RDI:
>> 000000000000000e
>> [   10.820360] RBP: 00007ff6d795ce23 R08: 0000000000000000 R09:
>> 0000000000000000
>> [   10.827523] R10: 000000000000000e R11: 0000000000000246 R12:
>> 0000000000000000
>> [   10.834690] R13: 0000560519bf9a30 R14: 0000000000020000 R15:
>> 000000000aba9500
>> [   10.841862] Code: c2 10 5f ea 81 48 c7 c6 f0 5e ea 81 bf 7c 00 00
>> 00 e8 0d 7c 00 00 31 ed e9 88 01 00 00 48 8b 03 31 ed 48 85 c0
>> +0f 84 e9 00 00 00 <4c> 8b 60 28 4d 85 e4 0f 84 dc 00 00 00 0f b7 78
>> 0a e8 62 fe ff
>> [   10.860832] RIP: acpi_ps_complete_this_op+0xa7/0x22a RSP:
>> ffffc900003a7578
>> [   10.867907] ---[ end trace 3a0d2ee1129bc71e ]---
>>
>> Cc: Chris Wilson <chris at chris-wilson.co.uk>
>> Signed-off-by: Imre Deak <imre.deak at intel.com>
>> ---
>>   drivers/usb/core/usb-acpi.c | 24 ++++++++++++++++++++++++
>>   1 file changed, 24 insertions(+)
>>
>> diff --git a/drivers/usb/core/usb-acpi.c b/drivers/usb/core/usb-
>> acpi.c
>> index e221861b3187..8424b3a27e7e 100644
>> --- a/drivers/usb/core/usb-acpi.c
>> +++ b/drivers/usb/core/usb-acpi.c
>> @@ -12,6 +12,7 @@
>>   #include <linux/acpi.h>
>>   #include <linux/pci.h>
>>   #include <linux/usb/hcd.h>
>> +#include <linux/dmi.h>
>>   
>>   #include "hub.h"
>>   
>> @@ -81,6 +82,20 @@ int usb_acpi_set_power_state(struct usb_device
>> *hdev, int index, bool enable)
>>   }
>>   EXPORT_SYMBOL_GPL(usb_acpi_set_power_state);
>>   
>> +static const struct dmi_system_id intel_icl_broken_acpi[] = {
>> +	{
>> +		.ident = "ICL RVP",
>> +		.matches = {
>> +			DMI_MATCH(DMI_SYS_VENDOR, "Intel
>> Corporation"),
>> +			DMI_MATCH(DMI_PRODUCT_NAME, "Ice Lake Client
>> Platform"),
>> +		},
>> +	},
>> +
>> +	{ }
>> +};
>> +
>> +static bool acpi_connection_type_broken;
>> +
>>   static enum usb_port_connect_type
>> usb_acpi_get_connect_type(acpi_handle handle,
>>   		struct acpi_pld_info *pld)
>>   {
>> @@ -89,6 +104,10 @@ static enum usb_port_connect_type
>> usb_acpi_get_connect_type(acpi_handle handle,
>>   	union acpi_object *upc;
>>   	acpi_status status;
>>   
>> +	/* Work around unknown ACPI instruction error on ICL RVP
>> BIOSes. */
>> +	if (acpi_connection_type_broken)
>> +		return USB_PORT_CONNECT_TYPE_UNKNOWN;
>> +
>>   	/*
>>   	 * According to 9.14 in ACPI Spec 6.2. _PLD indicates
>> whether usb port
>>   	 * is user visible and _UPC indicates whether it is
>> connectable. If
>> @@ -235,6 +254,11 @@ static struct acpi_bus_type usb_acpi_bus = {
>>   
>>   int usb_acpi_register(void)
>>   {
>> +	if (dmi_check_system(intel_icl_broken_acpi)) {
>> +		pr_info("USB ACPI connection type broken.\n");
>> +		acpi_connection_type_broken = true;
>> +	}
>> +
>>   	return register_acpi_bus_type(&usb_acpi_bus);
>>   }
>>   


Tomi
-- 
Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo


More information about the Intel-gfx mailing list