Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751917AbdF2XG2 (ORCPT ); Thu, 29 Jun 2017 19:06:28 -0400 Received: from mail-pg0-f48.google.com ([74.125.83.48]:36150 "EHLO mail-pg0-f48.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751649AbdF2XG0 (ORCPT ); Thu, 29 Jun 2017 19:06:26 -0400 Date: Thu, 29 Jun 2017 16:06:22 -0700 From: Jakub Kicinski To: "Luis R. Rodriguez" Cc: Nicolas Broeking , Linus Torvalds , Davidlohr Bueso , Thomas Gleixner , Greg KH , Martin Fuzzey , "Eric W. Biederman" , Dmitry Torokhov , Daniel Wagner , David Woodhouse , jewalt@lgsinnovations.com, rafal@milecki.pl, Arend Van Spriel , "Rafael J. Wysocki" , "Li, Yi" , atull@kernel.org, Moritz Fischer , Petr Mladek , Johannes Berg , Emmanuel Grumbach , "Coelho, Luciano" , Kalle Valo , Andrew Lutomirski , Kees Cook , "AKASHI, Takahiro" , David Howells , Peter Jones , Hans de Goede , Alan Cox , "Theodore Ts'o" , Michael Kerrisk , Paul Gortmaker , Marcelo Tosatti , Matthew Wilcox , Linux API , linux-fsdevel , Linux Kernel Mailing List , "stable # 4 . 6" Subject: Re: [PATCH 2/4] swait: add the missing killable swaits Message-ID: <20170629160622.58193b74@cakuba.netronome.com> In-Reply-To: References: <20170629133530.GA14747@kroah.com> <20170629174046.GC3954@linux-80c1.suse> <20170629183339.GD3954@linux-80c1.suse> <20170629194015.GQ21846@wotan.suse.de> <20170629194455.GR21846@wotan.suse.de> <20170629135822.366fd67a@cakuba.netronome.com> <20170629225003.GU21846@wotan.suse.de> <20170629155323.06445ddf@cakuba.netronome.com> Organization: Netronome Systems, Ltd. MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2905 Lines: 70 On Thu, 29 Jun 2017 16:00:32 -0700, Luis R. Rodriguez wrote: > On Thu, Jun 29, 2017 at 3:53 PM, Jakub Kicinski > wrote: > > On Fri, 30 Jun 2017 00:50:03 +0200, Luis R. Rodriguez wrote: > >> On Thu, Jun 29, 2017 at 01:58:22PM -0700, Jakub Kicinski wrote: > >> > On Thu, 29 Jun 2017 21:44:55 +0200, Luis R. Rodriguez wrote: > >> > > > Since this swake_up() --> swake_up_all() reportedly *fixed* the one wake up > >> > > > issue it would seem this does queue [0]. That said, I don't see any simple tests > >> > > > tools/testing/selftests/swait but then again we don't have test for regular > >> > > > waits either... > >> > > > > >> > > > [0] https://bugzilla.kernel.org/show_bug.cgi?id=195477 > >> > > > >> > > I should also note that the swake_up_all() should have only helped in cases where > >> > > 3 cards were used, as if only 2 were used that should have been covered by just > >> > > the swake_up(). Unless of course I hear otherwise by the reporter, Nicolas or > >> > > from Jakub. > >> > > >> > I was hitting this with 2 cards. > >> > >> Thanks! > >> > >> Thing is I'm not convinced the issue with 2 cards was the swake_up() Vs > >> swake_up_all() in this case though. Let's recall also the missing wake up on > >> errors! And the fact that netronome has optional firmware, which naturally can > >> fail. > >> > >> So could the issue with 2 cards instead of the miss of a wake up on error due > >> to batched requests ? If so then that still would not put blame on the > >> swake_up()! > > > > Sorry, that was during manual tests. I had the driver request the > > firmware with _nowait() without an uevent, > > Can you provide the output of > > grep CONFIG_FW_LOADER_USER_HELPER .config > > I'd like to see if CONFIG_FW_LOADER_USER_HELPER_FALLBACK was disabled. > Not to be confused with the CONFIG_FW_LOADER_USER_HELPER. > > When the uevent is not set its also known as "a custom fallback > mechanism" and by default that has set a timeout of > MAX_SCHEDULE_TIMEOUT, which means that even if the direct filesystem > lookup failed the fallback mechanism would be used and just sit and > wait for what seems to be forever until user input was provided. FWIW CONFIG_FW_LOADER=y CONFIG_FW_LOADER_USER_HELPER=y CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y # CONFIG_FW_CFG_SYSFS is not set > > and then after I manually > > wrote -1 to loading only one would get woken up. > > Great, this helps, so for those not familiar with the firmware sysfs > fallback mechanism: > > The relevant values one could use are: > > 1: Start a load, discarding any previous partial load. > 0: Conclude the load and hand the data to the driver code. > -1: Conclude the load with an error and discard any written data. > > So you are triggering a failure. And indeed I expect the patch I just > provided to be the one to fix your issue with 2 cards. Cool, thanks.