Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp403814yba; Wed, 3 Apr 2019 10:58:02 -0700 (PDT) X-Google-Smtp-Source: APXvYqwo7H1qtpXQnYta2gs8qFzeNqcvDSdfJ5XoUmTs+lZWojXQ04v6TMlUucHc9SjLEe6+KzIu X-Received: by 2002:a17:902:9881:: with SMTP id s1mr1273918plp.99.1554314282227; Wed, 03 Apr 2019 10:58:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554314282; cv=none; d=google.com; s=arc-20160816; b=tK+wIvLUadQax7l9jhEpWkI6aLYi0xwQ+PY4MlFwn32EM6qcSp+12QFjUifwkP1Oag UBBP596XV5osozNF3+O7cxpvwqVoVyhEGH9wp7u8Awidv26+fB28VmySQaqNcbAxSEI7 yL7N9hLv+9BHHmut4WxrUMwU9hR9gH9QUI5Iu0ipc85nd4kvYYX5q1z1gAmZzSOm/CIe I/ajJOR1g3htdf9wsBRZh2HQjkKBQxHKBBNxZuACzj9zKKUiwl3n1g9F0wFt7uMe7+ss ymLOdGVqBJtwI0bqDtrnNYRi4PKb6p4Qq/Q4APoHVav54Co5F8CUNozmueM8P6NKtxTf Dptg== 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:dkim-signature; bh=0plGmtWPxMrVsvJ147H7O6RF7OpndiONXD2KZz+fZDg=; b=qsFLzAiwmc78hfgvdY9Jcv6vd7zVv7256ZESBC4hZbrfvq1A0Zqhqrkcu/PCvcnXsS VByvnY730re+jS7h6gAvSXDzHhXFsrOEhi4PGcGzMvi/nU7YpMGt8Eqz9oWEeUp+YJro zHF3iy9eAp6sTB0ghaUKTTRR6j1BuSCVD5mkNDZYvyoIeKLetPVIJ3d0MzyJA6RV1wO/ 9IMdrb+AUsjqGXsMyfHwqLIIlsBN6Fi3mA6uiOfIMpE6AOrkKDln+nlBtysoZ9L30c8A vH1omp1WMeIQ0fyoTOGTb4kUOcOIxVP1LEOuWnPEs8dqJhd0JgDyi1S/TQx0kNrVOwV1 iKyw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@joelfernandes.org header.s=google header.b=yNirPcDg; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e67si15154829plb.107.2019.04.03.10.57.46; Wed, 03 Apr 2019 10:58:02 -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; dkim=pass header.i=@joelfernandes.org header.s=google header.b=yNirPcDg; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726711AbfDCR5A (ORCPT + 99 others); Wed, 3 Apr 2019 13:57:00 -0400 Received: from mail-pf1-f194.google.com ([209.85.210.194]:43098 "EHLO mail-pf1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726633AbfDCR45 (ORCPT ); Wed, 3 Apr 2019 13:56:57 -0400 Received: by mail-pf1-f194.google.com with SMTP id c8so8516201pfd.10 for ; Wed, 03 Apr 2019 10:56:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=joelfernandes.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=0plGmtWPxMrVsvJ147H7O6RF7OpndiONXD2KZz+fZDg=; b=yNirPcDgTk9QIm/n7OXSAK0CuWqAhNunSvCnfXOvxwFd9zCoUROJ+g+A3YZUI/vVoZ Tl4eQcn8B5gzAN0yzyuNWHqhQdnk1nWvKSEJDIORBxIOBFeW+2L3QEOUokG9BAwo8SQZ HmZg+iWGW9wUQyrYvcTKAXJg0+h9CAYPrX8dM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=0plGmtWPxMrVsvJ147H7O6RF7OpndiONXD2KZz+fZDg=; b=JEZvdaaWffMu1NlR5EI57TtY8FnLSe85DOLMH3lrxK0SgxNOnNvO21h2GkgQ0eNxB2 NwFlWoy96aZfEr7yX9UABUwD8udtePSOs7KwBr5Ci7iYoU2/xL+d2Pt4GCGEm2kD/Gjx YMpPf1071072E8Tk3Xrepi7mVxwR3Z4HfQ9ko/fGdYbsfyo9LKNZTbyeSjMsSWS/7vex XwU+RODUgUxLFxpXcv4LdK8xLzIzFKR6AzduatGO8z1hzA/20XRWuMuvlhPMBFZ3Sex9 xY3njGalzJMz9N6oKfmsz7wRwRGLU1+a7yVJMz3v4XuO7O6p5g3mDI5rSVMDr386fKvu 5fzQ== X-Gm-Message-State: APjAAAWO26Gan+sHeXd2fTCZglZhEHtAB22+wp77zRU98KN2Z4DQ040x q10DXnJbeVOdWbJa7OlVIhBrNA== X-Received: by 2002:a63:550d:: with SMTP id j13mr1072028pgb.18.1554314215558; Wed, 03 Apr 2019 10:56:55 -0700 (PDT) Received: from localhost ([2620:15c:6:12:9c46:e0da:efbf:69cc]) by smtp.gmail.com with ESMTPSA id e1sm19604283pfn.187.2019.04.03.10.56.54 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 03 Apr 2019 10:56:54 -0700 (PDT) Date: Wed, 3 Apr 2019 13:56:53 -0400 From: Joel Fernandes To: Daniel Colascione Cc: Masahiro Yamada , Alexei Starovoitov , Networking , Linux Kernel Mailing List , Andrew Morton , Alexei Starovoitov , atish patra , Dan Williams , Greg Kroah-Hartman , Jonathan Corbet , Karim Yaghmour , Kees Cook , "open list:DOCUMENTATION" , "open list:KERNEL SELFTEST FRAMEWORK" , Manoj Rao , Randy Dunlap Subject: Re: [PATCH v2 1/2] Provide in-kernel headers for making it easy to extend the kernel Message-ID: <20190403175653.GA60809@google.com> References: <20190211143600.15021-1-joel@joelfernandes.org> <20190215031926.ljzluy2cfxp64u6o@ast-mbp> <20190325134947.GA187133@google.com> <20190327173103.GA205980@google.com> <20190403172031.GA260189@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Apr 03, 2019 at 10:46:01AM -0700, Daniel Colascione wrote: > On Wed, Apr 3, 2019 at 10:20 AM Joel Fernandes wrote: > > > > On Wed, Apr 03, 2019 at 04:48:37PM +0900, Masahiro Yamada wrote: > > > On Thu, Mar 28, 2019 at 2:32 AM Joel Fernandes wrote: > > > > > > > > On Mon, Mar 25, 2019 at 09:49:47AM -0400, Joel Fernandes wrote: > > > > > On Thu, Feb 14, 2019 at 07:19:29PM -0800, Alexei Starovoitov wrote: > > > > > > On Mon, Feb 11, 2019 at 09:35:59AM -0500, Joel Fernandes (Google) wrote: > > > > > > > Introduce in-kernel headers and other artifacts which are made available > > > > > > > as an archive through proc (/proc/kheaders.txz file). This archive makes > > > > > > > it possible to build kernel modules, run eBPF programs, and other > > > > > > > tracing programs that need to extend the kernel for tracing purposes > > > > > > > without any dependency on the file system having headers and build > > > > > > > artifacts. > > > > > > > > > > > > > > On Android and embedded systems, it is common to switch kernels but not > > > > > > > have kernel headers available on the file system. Raw kernel headers > > > > > > > also cannot be copied into the filesystem like they can be on other > > > > > > > distros, due to licensing and other issues. There's no linux-headers > > > > > > > package on Android. Further once a different kernel is booted, any > > > > > > > headers stored on the file system will no longer be useful. By storing > > > > > > > the headers as a compressed archive within the kernel, we can avoid these > > > > > > > issues that have been a hindrance for a long time. > > > > > > > > > > > > The set looks good to me and since the main use case is building bpf progs > > > > > > I can route it via bpf-next tree if there are no objections. > > > > > > Masahiro, could you please ack it? > > > > > > > > > > FYI, Masahiro's comments were all address by v5: > > > > > https://lore.kernel.org/patchwork/project/lkml/list/?series=387311 > > > > > > > > > > I believe aren't more outstanding concerns. Could we consider it for v5.2? > > > > > > > > Just to highlight the problem, today I booted v5.0 on an emulated Android > > > > device for some testing, that didn't have a set of prebuilt headers that we > > > > have been packaging on well known kernels, to get around this issue. This > > > > caused great pain and issues with what I was doing. I know me and many others > > > > really want this. With this I can boot an emulated Android device with > > > > IKCONFIG_PROC=y and run BCC with that that. Also I want to do the BCC side of > > > > the development, but first want to know if we can merge this upstream. > > > > > > > > Masahiro, I believe due diligence has been done in solidifying it as posted > > > > in the v5. Anything else we need to do here? Are you with the patches? > > > > > > > > > As you said, these updates are "cosmetic". > > > Nobody is worried about (or interested in) them. > > > Even if we miss something, they are fixable later. > > > > > > I accept embedding headers in the kernel, > > > but I do not like the part about external module build. > > > - kernel embeds build artifacts that depend on a > > > particular host-arch > > > - users do not know which compiler to use > > > Perhaps, you may remember my concerns. > > > https://lore.kernel.org/patchwork/patch/1046307/#1239501 > > > > Masahiro, > > I think we already discussed this right. The compiler issue is a user-issue - > > it is not a problem that has arisen because this patch. Anyone can build a > > kernel module today without this patch - using a compiler that is different > > from the running kernel. So I did not fully understand your concern. This > > patch does not ship a compiler in the archive. The compiler is upto the user > > based on user environment. They can already shoot themself in foot without > > this patch. > > > > Greg, > > Would be great to get your thoughts here as well about Masami's concern. > > > > Honestly, the "kernel module building artifacts" bit is a bonus with this > > patch. The main thing we are adding or that we need is really the headers > > (for BCC). I just thought shipping the kernel build artifacts would also be > > awesome because people can now build kernel modules without needing a kernel > > tree at all. > > > > But I also want this stuff merged so if folks are really unhappy with the > > module build artifacts and only want headers - then that's also fine with me > > and I can yank them - that would also mean though that this work cannot be a > > replacement for linux-headers package on distros, so that would be sad. > > > > thanks! > > IMHO, including the module build stuff is fine, and the stuff that > Masahiro mentions doesn't matter much. To be specific about the > concerns: > > >> > > - kernel embeds build artifacts that depend on a > > > particular host-arch > > What are these artifacts? We build the kernel as a standalone system. > It's not as if we statically link host glibc into it or something. There are some scripts/ that are built in the host-arch ABI. These are also put in the archive because they are needed to build modules. So if you cross-compile then the archive will have scripts/ that are in the host arch, not the target arch. This makes it not possible to build modules on the target using the archive. This is not much of an issue because I already proved that such kernel modules can be built using a chroot in this thread: https://lkml.org/lkml/2019/2/28/1313 And in the non cross-compile case, it will be immensely useful for distros.. > > > - users do not know which compiler to use > > Does that matter much? Do things ever break if the kernel proper is > built with GCC x.y.z and we build a module with GCC x.y.(z+1)? Why > would it? Structure layout is invariant across compiler version, or at > least ought to be. And don't we have exactly the same problem with > any kernel headers package? I don't think it'd hurt to include the > output of $(CC) --version though. Apparently there were some issues in some posting where Greg said we don't support anything but modules built with the same compiler as the kernel its being loaded into, even if such modules do work in practice. I don't recall the details, I can dig up that thread if you want. My point is, whether that's an issue or not - it is not an issue introduced by this patch. That's just a module building issue which we neither solve here, nor introduce. > Like Joel, I'd like to see this change merged. It'll make life easier > for a lot of people. Thanks. - Joel