Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp2528075imm; Thu, 7 Jun 2018 12:10:00 -0700 (PDT) X-Google-Smtp-Source: ADUXVKJsZNIQ2LrVaoDvmfFqWpEos0lHvoUr14/DoAu1MAndzgpIF6pIyWg2kG0CUrayLv4PLm4C X-Received: by 2002:a62:1358:: with SMTP id b85-v6mr2895807pfj.238.1528398599963; Thu, 07 Jun 2018 12:09:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528398599; cv=none; d=google.com; s=arc-20160816; b=MEYtGb8j50hEb/uDKgvaBOBuKS+GYCBQHLhsr7TI03BzNLlgBfpWsArZDvhTcNiirc 0W0ecvniWlOkqguoDUzvkcX3hPPCSRBGe6MmyMbifJYusKDUouygEkjB6/sNTLgi5BDI pCDvJm9qhDG/cz+CngFF06mD3Vryu54Nox9eVbcPOh0YQ7B4mouAkSAJ5mXieydA7GlY sn1vRziguwI2QkmqE/mz1FgoTpOEf+SELrdIAC8+xGKxICk2dFgt/1E55u2AVOoa4jsg CuiyU8NgqDrws4qd7l4WiUFwgAX7Za9+VopRiJbowmpqWTO2MTdTbtwcwWYyAXbTyItK XdCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:arc-authentication-results; bh=awA4HfwWhvjMiQz0D2EfImFnFJ43wtXC1a6TZ6zh8x4=; b=MRutMZaPwxuY5kEXxWj8p70mF2sCDiRMSvDCfDvwfGhJJvN5v4eepc7nIs3vhigxXx AAS4Tkrx8xotY9LorQ6fnt12VmTerKuwE2om2oY9mucuUqh07aO0/5R6m+XGKQdLwD/7 NRGU/U1X43JT2Ja6LJcjp2pHs6ra1hOuGHh022sQfdU8mAXcLwGOCV58K26mjCNXRoDu TG6xa2QfEn0G7hD517wrexYwoHQnZhqyTJcMKOS0fczFAFzJjxc3yFIPV5g7+El0gPvy wKls8xQrcIKYQU06NEDq8y/JTkFDhzW68lsw7ApGciJxwbGjx2W1szYkUt2O9wGoVhz9 /62w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b34-v6si55358647pld.272.2018.06.07.12.09.45; Thu, 07 Jun 2018 12:09:59 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935738AbeFGSXF (ORCPT + 99 others); Thu, 7 Jun 2018 14:23:05 -0400 Received: from mx2.suse.de ([195.135.220.15]:51481 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932775AbeFGSXC (ORCPT ); Thu, 7 Jun 2018 14:23:02 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (charybdis-ext-too.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 225B9AD73; Thu, 7 Jun 2018 18:23:00 +0000 (UTC) Date: Thu, 7 Jun 2018 20:22:56 +0200 From: "Luis R. Rodriguez" To: Bjorn Andersson Cc: "Luis R. Rodriguez" , Martijn Coenen , Andy Gross , David Brown , Mimi Zohar , Stephen Boyd , Vikram Mulukutla , Arve Hj?nnev?g , Todd Kjos , Andrew Morton , linux-security-module@vger.kernel.org, Chris Wright , David Howells , Alan Cox , Kees Cook , Hans de Goede , Darren Hart , Andy Shevchenko , Ard Biesheuvel , Greg Kroah-Hartman , Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , platform-driver-x86@vger.kernel.org, LKML , Peter Jones , Dave Olsthoorn , Will Deacon , Andy Lutomirski , Matt Fleming , Josh Triplett , dmitry.torokhov@gmail.com, mfuzzey@parkeon.com, Kalle Valo , Arend Van Spriel , Linus Torvalds , nbroeking@me.com, Torsten Duwe , x86@kernel.org, linux-efi , "open list:ANDROID DRIVERS" , linux-arm-msm@vger.kernel.org Subject: Re: [PATCH v3 2/5] efi: Add embedded peripheral firmware support Message-ID: <20180607182256.GE5527@wotan.suse.de> References: <20180423211143.GZ14440@wotan.suse.de> <71e6a45a-398d-b7a4-dab0-8b9936683226@redhat.com> <1524586021.3364.20.camel@linux.vnet.ibm.com> <20180424234219.GX14440@wotan.suse.de> <1524632409.3371.48.camel@linux.vnet.ibm.com> <20180425175557.GY14440@wotan.suse.de> <20180508153805.GC27853@wotan.suse.de> <20180508161037.GE27853@wotan.suse.de> <20180607164950.GP510@tuxbook-pro> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180607164950.GP510@tuxbook-pro> User-Agent: Mutt/1.6.0 (2016-04-01) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jun 07, 2018 at 09:49:50AM -0700, Bjorn Andersson wrote: > On Tue 08 May 09:10 PDT 2018, Luis R. Rodriguez wrote: > > > On Tue, May 08, 2018 at 03:38:05PM +0000, Luis R. Rodriguez wrote: > > > On Fri, May 04, 2018 at 12:44:37PM -0700, Martijn Coenen wrote: > > > > On Wed, Apr 25, 2018 at 10:55 AM, Luis R. Rodriguez wrote: > [..] > > > > 2) Most of those paths are not mounted by the time the corresponding > > > > drivers are loaded, because pretty much all Android kernels today are > > > > built without module support, and therefore drivers are loaded well > > > > before the firmware partition is mounted > > > > I've given this some more thought and you can address this with initramfs, > > this is how other Linux distributions are addressing this. One way to > > address this automatically is to scrape the drivers built-in or needed early on > > boot in initamfs and if the driver has a MODULE_FIRMWARE() its respective > > firmware is added to initramfs as well. > > > > That could be done, but it would not change the fact that the > /sys/class/firmware is ABI and you may not break it. Right, this is now well documented and also the latest changes to the firmware API have made the sysfs fallback loader an option through a sysctl knob. The code should be much easier to follow and test now. > And it doesn't change the fact that the ramdisk would have to be over > 100mb to facilitate this. Indeed, this is now acknowledged in the latest Kconfig for the firmware loader. > > If you *don't* use initramfs, then yes you can obviously run into issues > > where your firmware may not be accessible if the driver is somehow loaded > > early. > > > > This is still a problem that lacks a solution. The firmwared solution capturing uevents and using the sysfs fallback mechanism should resolve this. Its also now properly documented on the firmware loader Kconfig. > > > > 3) I think we use _FALLBACK because doing this with uevents is just > > > > the easiest thing to do; our init code has a firmware helper that > > > > deals with this and searches the paths that we care about > > > > > > > > 2) will change at some point, because Android is moving towards a > > > > model where device-specific peripheral drivers will be loaded as > > > > modules, and since those modules would likely come from the same > > > > partition as the firmware, it's possible that the direct load would > > > > succeed (depending on whether the custom path is configured there or > > > > not). But I don't think we can rely on the direct loader even in those > > > > cases, unless we could configure it with multiple custom paths. > > > > Using initramfs will help, but because of the custom path needs -- you're > > right, we don't have anything for that yet, its also a bit unclear if > > something nice and clean can be drawn up for it. So perhaps dealing with > > the fallback mechanism is the way to go for this for sure, since we already > > have support for it. > > > > Just keep in mind that the fallback mechanism costs you about ~13436 bytes. > > > > Remember that putting the firmware in the ramdisk would cost about > 10000x (yes, ten thousand times) more ram. Indeed, this is now documented on the Kconfig too. > > So, if someone comes up with a clean interface for custom paths I'd love > > to consider it to avoid those 13436 bytes. > > > > Combined with a way of synchronizing this with the availability of the > firmware, this would be a nice thing! The firmwared solution seems to be the way to go for now. Luis