> -----Original Message----- > From: Zheng, Lv > Sent: Monday, October 24, 2016 12:36 AM > To: Deak, Imre <imre.deak@xxxxxxxxx>; Moore, Robert > <robert.moore@xxxxxxxxx>; Wysocki, Rafael J > <rafael.j.wysocki@xxxxxxxxx>; linux-acpi@xxxxxxxxxxxxxxx; > devel@xxxxxxxxxx > Subject: RE: 4.9-rc1: [TMP_] ACPI namespace lookup failure, > AE_ALREADY_EXISTS > > Hi, Imre > > > From: Deak, Imre > > Subject: Re: 4.9-rc1: [TMP_] ACPI namespace lookup failure, > > AE_ALREADY_EXISTS > > > > On Fri, 2016-10-21 at 22:46 +0300, Zheng, Lv wrote: > > > [...] > > > I checked the code, only found one issue. > > > And I'm not sure if it is related. > > > Please send me the full dmesg containing the errors and the acpidump > > >output. > > > > I attached the dmesg containing the error during boot (happened 1 out > > of 200 boots), during reboot (20 out of 200 reboots), during suspend > > (happened all the time). > > I just checked the error and the related code. > > 1. What the error is > The error message is generated by an old method auto-serial mechanism. > However this mechanism should have been disabled by new auto-serial > approach. [Moore, Robert] We kept the original auto-serialize mechanism because the new one is not 100% deterministic. Thus, the original mechanism is a fallback case, that is why it is still there. It should not be removed. > > See: the error is generated by the code in > drivers/acpi/acpica/psparse.c: > if ((status == AE_ALREADY_EXISTS) && > (!(walk_state->method_desc->method. > info_flags & ACPI_METHOD_SERIALIZED))) { > /* > * Method is not serialized and tried to create an > object > * twice. The probable cause is that the method > cannot > * handle reentrancy. Mark as "pending serialized" > now, and > * then mark "serialized" when the last thread > exits. > */ > walk_state->method_desc->method.info_flags |= > ACPI_METHOD_SERIALIZED_PENDING; > } > It can only happen when ACPI_METHOD_SERIALIZED flag is not set. > However, in the upstream kernel, this flag is set by the code in > drivers/acpi/acpica/dsinit.c: > if (obj_desc->method.info_flags & ACPI_METHOD_SERIALIZED) { > info->serial_method_count++; > break; > } > > if (acpi_gbl_auto_serialize_methods) { > > /* Parse/scan method and serialize it if necessary */ > > acpi_ds_auto_serialize_method(node, obj_desc); > if (obj_desc->method. > info_flags & ACPI_METHOD_SERIALIZED) { > > /* Method was just converted to Serialized */ > > info->serial_method_count++; > info->serialized_method_count++; > break; > } > } > Which is invoked by acpi_ds_initialize_objects(), always invoked in > acpi_ns_load_table(). > Unless acpi_gbl_auto_serialize_methods = false or acpi_ns_parse_table() > failed, the flag won't be remained unset. > > The error message is generated by old auto-serialize implementation. > And acpi_gbl_auto_serialize_methods is meant to mute the warnings. > > Both mechanism should work, thus this error message is not fatal. > It just makes ACPICA to fall back to use old auto-serial method. > So the issue is not urgent. > > 2. Why the error message is caused > I couldn't see whether the bisected commit can be related to this > feature. > It seems we need your help to debug what the problem is. > > First, please try the mentioned branch here: > https://github.com/zetalog/linux > acpica-lock branch. > > As I may need to ask for several debugging steps, let me file a kernel > Bugzilla bug for this. > So that we can communicate there in order not to bother others: > > https://bugzilla.kernel.org/show_bug.cgi?id=180111 > > Thanks and best regards > Lv > > > > > > I attached the acpidump output. > > > > > Please give the fix a try (see attachment). > > > > The patch didn't apply on 4.9-rc1 or Linus' master, please see the > > attached patch for my attempt to resolve the conflicts. With the patch > > applied I could still trigger the same problem during suspend. > > > > --Imre > > > > > I'm sorry for sending fix patch using attachment. > > > It's not convenient for me due to my current working environment. > > > > > > Thanks and best regards > > > Lv ��.n��������+%������w��{.n�����{�����ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f