Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp4258955imu; Mon, 7 Jan 2019 19:22:08 -0800 (PST) X-Google-Smtp-Source: ALg8bN6cwX5Fs4wzrBcOW1oNB5DioYXaW7ajsZd9LVmkQlFVcZdtq9VM2lcZkKWTP0bsH9bfLKEY X-Received: by 2002:a63:e051:: with SMTP id n17mr84781pgj.258.1546917728453; Mon, 07 Jan 2019 19:22:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1546917728; cv=none; d=google.com; s=arc-20160816; b=1EYuEgnxwhB0N6rxoefhxbrdgIMP7KEDlJ2MqqWOYgBYJza9NW7JhmR+0WejdXgG1q IDhSsXfs8S4hB08iuUBoDRqSbI8bFuQYcmwR4d827n8GEHpW3gCYHIFHsM92O/ck2hFS GcXEMd7FDgTuy5NFqIcTKx00CT1SkVHRTKqFJ3FDMkApxtVQgc/1vKbz4kao3CoNRQTK My83bQ6o7EXwYVjqsEwb/0TbtJ+J5src5i3AA2+C2dj2vvyilTZ26g6eriHjrzrdgmSV fftHGPGEQmP5oN6cllK5kroASlWFeZYVdm3/Fq0xQFUb6g3qqe10uCSXu15mp5wH2gjL 24ag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature:dkim-filter; bh=a+86zybEjf1G0Z7C+9XqCQhInOTEfD3m7EouQ3r6vA8=; b=xUuR07ezWRIDlxmlwDPDLt41eUSXPTPW9jVRghUErUzJZmAUNE7EG5zZoJgxI4NRGA 9vfYbpBYYygSbSt8vpB0iX/dwqhEcgtCggNaZ/YBAlkGuBBGRW8R4bFIi14ZZsjDEGfS jKI7hO5yHsKN7XFEZNUBJUn+hgSjCM4m/K4zhX1B+8iasj4RinovVm94IwTJn9MGNSO4 BC/VIqvWwqp5aPREm5ZzI6U+buzkLi/YFxhkY+1ZCEWI2gh4NzaA5RYwm72CRUJSZbku 312DNjkUEnSJss3zdgTZGfGllrNLuPaOwrEFIaqiL3AzN1qTBhVS+7EHTaKwcVBMLkOh /pcw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nifty.com header.s=dec2015msa header.b=xFqUudw7; 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 m1si67241041pfi.286.2019.01.07.19.21.53; Mon, 07 Jan 2019 19:22:08 -0800 (PST) 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=@nifty.com header.s=dec2015msa header.b=xFqUudw7; 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 S1727373AbfAHDUJ (ORCPT + 99 others); Mon, 7 Jan 2019 22:20:09 -0500 Received: from conssluserg-06.nifty.com ([210.131.2.91]:46277 "EHLO conssluserg-06.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727051AbfAHDUJ (ORCPT ); Mon, 7 Jan 2019 22:20:09 -0500 Received: from mail-vs1-f48.google.com (mail-vs1-f48.google.com [209.85.217.48]) (authenticated) by conssluserg-06.nifty.com with ESMTP id x083K5mA015685; Tue, 8 Jan 2019 12:20:05 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conssluserg-06.nifty.com x083K5mA015685 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1546917606; bh=a+86zybEjf1G0Z7C+9XqCQhInOTEfD3m7EouQ3r6vA8=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=xFqUudw7GrqCLDJ96WMs1/gSZyKv/bYCVPU2vbK7vmCYq3PnI9t2e8doeMv3A05Lc xm9kO2/v/nibVcK6GAAxS3dGqwM/aJdNMH/QWZINB60QZXz7Fd8+P28Ch4HEApm5ty vVsjWCuPL4mlb8Qf4cH955E6tsBvuaOm21x65rvJruhKz91ZgYRoo4lkAkl6MCoP31 dkOLyrzsbkdPb1qEpMrBJ9vIzZGnfiOlOrS9Bb0T6KwQLnWWRMeSQskO1ZGqRK4nPO ASJVfTYz6UsRsCLe0HXOVQ1oDr6VZMW59zH4P0oWuG5w7TxJ2YQA9b4/ZnCOnI8HLR sQSA1n2XexqHw== X-Nifty-SrcIP: [209.85.217.48] Received: by mail-vs1-f48.google.com with SMTP id v205so1621326vsc.3; Mon, 07 Jan 2019 19:20:05 -0800 (PST) X-Gm-Message-State: AJcUukd9JhNLCUMtrzhngq/kETOcmzT+vWzxgv5hYQpqErNC/TsbBiWX +cwe35cCYy217ESsNGc/SO77zQtv30FYAepFf90= X-Received: by 2002:a67:f1c2:: with SMTP id v2mr24097vsm.181.1546917604398; Mon, 07 Jan 2019 19:20:04 -0800 (PST) MIME-Version: 1.0 References: <20190104195714.30045-1-labbott@redhat.com> <874lakc09x.fsf@concordia.ellerman.id.au> <20190107120716.51d95854.cohuck@redhat.com> <20190107131341.00581863@x1.home> <4b9b6cf2-d39e-8dd2-9271-158489b03a61@ozlabs.ru> <20190107172437.0f0b5331@x1.home> <34647ed9-6aa3-6e38-f3a5-87da87e9341a@ozlabs.ru> In-Reply-To: <34647ed9-6aa3-6e38-f3a5-87da87e9341a@ozlabs.ru> From: Masahiro Yamada Date: Tue, 8 Jan 2019 12:19:28 +0900 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH] vfio_pci: Add local source directory as include To: Alexey Kardashevskiy Cc: Alex Williamson , Cornelia Huck , Michael Ellerman , Laura Abbott , kvm@vger.kernel.org, Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jan 8, 2019 at 11:59 AM Alexey Kardashevskiy wrote: > > > > On 08/01/2019 13:38, Masahiro Yamada wrote: > > On Tue, Jan 8, 2019 at 11:22 AM Alexey Kardashevskiy wrote: > >> > >> > >> > >> On 08/01/2019 11:24, Alex Williamson wrote: > >>> On Tue, 8 Jan 2019 10:52:43 +1100 > >>> Alexey Kardashevskiy wrote: > >>> > >>>> On 08/01/2019 07:13, Alex Williamson wrote: > >>>>> On Mon, 7 Jan 2019 20:39:19 +0900 > >>>>> Masahiro Yamada wrote: > >>>>> > >>>>>> On Mon, Jan 7, 2019 at 8:09 PM Cornelia Huck wrote: > >>>>>>> > >>>>>>> On Mon, 7 Jan 2019 19:12:10 +0900 > >>>>>>> Masahiro Yamada wrote: > >>>>>>> > >>>>>>>> On Mon, Jan 7, 2019 at 6:18 PM Michael Ellerman wrote: > >>>>>>>>> > >>>>>>>>> Laura Abbott writes: > >>>>>>>>>> Commit 7f92891778df ("vfio_pci: Add NVIDIA GV100GL [Tesla V100 SXM2] > >>>>>>>>>> subdriver") introduced a trace.h file in the local directory but > >>>>>>>>>> missed adding the local include path, resulting in compilation > >>>>>>>>>> failures with tracepoints: > >>>>>>>>>> > >>>>>>>>>> In file included from drivers/vfio/pci/trace.h:102, > >>>>>>>>>> from drivers/vfio/pci/vfio_pci_nvlink2.c:29: > >>>>>>>>>> ./include/trace/define_trace.h:89:42: fatal error: ./trace.h: No such file or directory > >>>>>>>>>> #include TRACE_INCLUDE(TRACE_INCLUDE_FILE) > >>>>>>>>>> > >>>>>>>>>> Fix this by adjusting the include path. > >>>>>>>>>> > >>>>>>>>>> Fixes: 7f92891778df ("vfio_pci: Add NVIDIA GV100GL [Tesla V100 SXM2] subdriver") > >>>>>>>>>> Signed-off-by: Laura Abbott > >>>>>>> > >>>>>>> (...) > >>>>>>> > >>>>>>>>> Alex I assume you'll merge this fix via the vfio tree? > >>>>>>>>> > >>>>>>>>> cheers > >>>>>>>>> > >>>>>>>>>> diff --git a/drivers/vfio/pci/Makefile b/drivers/vfio/pci/Makefile > >>>>>>>>>> index 9662c063a6b1..08d4676a8495 100644 > >>>>>>>>>> --- a/drivers/vfio/pci/Makefile > >>>>>>>>>> +++ b/drivers/vfio/pci/Makefile > >>>>>>>>>> @@ -1,3 +1,4 @@ > >>>>>>>>>> +ccflags-y += -I$(src) > >>>>>>>>>> > >>>>>>>>>> vfio-pci-y := vfio_pci.o vfio_pci_intrs.o vfio_pci_rdwr.o vfio_pci_config.o > >>>>>>>>>> vfio-pci-$(CONFIG_VFIO_PCI_IGD) += vfio_pci_igd.o > >>>>>>>>>> -- > >>>>>>>>>> 2.20.1 > >>>>>>>> > >>>>>>>> > >>>>>>>> Hi. > >>>>>>>> > >>>>>>>> If I correctly understand the usage of TRACE_INCLUDE_PATH, > >>>>>>>> the correct fix should be like follows: > >>>>>>>> > >>>>>>>> > >>>>>>>> diff --git a/drivers/vfio/pci/trace.h b/drivers/vfio/pci/trace.h > >>>>>>>> index 228ccdb..4d13e51 100644 > >>>>>>>> --- a/drivers/vfio/pci/trace.h > >>>>>>>> +++ b/drivers/vfio/pci/trace.h > >>>>>>>> @@ -94,7 +94,7 @@ TRACE_EVENT(vfio_pci_npu2_mmap, > >>>>>>>> #endif /* _TRACE_VFIO_PCI_H */ > >>>>>>>> > >>>>>>>> #undef TRACE_INCLUDE_PATH > >>>>>>>> -#define TRACE_INCLUDE_PATH . > >>>>>>>> +#define TRACE_INCLUDE_PATH ../../drivers/vfio/pci > >>>>>>>> #undef TRACE_INCLUDE_FILE > >>>>>>>> #define TRACE_INCLUDE_FILE trace > >>>>>>> > >>>>>>> Going from the comments in samples/trace_events/trace-events-sample.h, > >>>>>>> I think both approaches are possible, and I see both used in various > >>>>>>> places. > >>>>>>> > >>>>>>> Personally, I'd prefer Laura's patch, as it doesn't involve hardcoding > >>>>>>> a path. > >>>>> > >>>>> Numbering options for clarity: > >>>>> > >>>>> 1) > >>>>>> ccflags-y += -I$(src) > >>>>>> would add the header search path for all files in drivers/vfio/pci/ > >>>>>> whereas only the drivers/vfio/pci/vfio_pci_nvlink2.c needs it. > >>>>>> > >>>>> > >>>>> 2) > >>>>>> CFLAGS_vfio_pci_nvlink2.o += -I$(src) > >>>>>> is a bit better. > >>>>>> However, it is not obvious why this extra header search path is needed > >>>>>> until you find vfio_pci_nvlink2.c including trace.h > >>>>>> > >>>>> > >>>>> 3) > >>>>>> #define TRACE_INCLUDE_PATH ../../drivers/vfio/pci > >>>>>> clarifies the intention because the related code is all placed in trace.h > >>>>>> > >>>>>> > >>>>>> > >>>>>> From the comment in include/trace/define_trace.h > >>>>>> TRACE_INCLUDE_PATH is relative to include/trace/define_trace.h > >>>>> > >>>>> In my scan of the tree, the most common solution seems to be 2) as this > >>>>> is essentially recommended in the sample file. 3) is well represented, > >>>>> with much fewer examples of 1), though it might depend how liberally > >>>>> we grep out or examine the use cases. Choice 1) also seems to be the > >>>>> most shotgun approach, adding to the search path for all files. > >>>> > >>>> > >>>> The shotgun approach is always used when compiling out of tree which is > >>>> what many people do anyway without realizing that there are additional > >>>> -I. Why do not we make in-tree behave the same way? Thanks, > >>> > >>> Are you suggesting bandaging this individual leaf directory, as in > >>> choice 1), because it's no worse than what happens for an out-of-tree > >>> build anyway, > >> > >> > >> I suggest making in-tree and out-of-tree behavior equal - both either > >> fail or compile. Just makes sense to me. > >> > >> Since out-of-tree adds extra -I, then there should have been a reason > >> for that at the time (before 2005 though). Unfortunately git blame does > >> not say why it was done this way for out-of-tree so imho the safest > >> thing is to add -I for in-tree as well. Or ditch extra -I and do 2) or > >> 3) - this is fine too and can count as an impressive compile > >> optimization, although... look below :) > > > > > > For the out-of-tree building, > > scripts/Makefile.lib adds -I$(srctree)/$(src) and -I$(obj). > > > > > > In my understanding, -I$(srctree)/$(src) is for > > including check-in headers from generated C files. > > > > -I$(obj) is for including generated headers from check-in C files. > > > > > > One example of the correct usage of this is, > > > > crypto/rsa_helper.c (check-in file) > > > > includes > > > > crypto/rsapubkey.asn1.h (generated fle) > > > > > > > > Those extra header search paths are unneeded for in-tree building > > since generated files and check-in files exist in the same tree. > > > > > > > > You just happened to find it works for out-of-tree building. > > > > > > We are talking about how to make include/trace/define_trace.h > > include drivers/vfio/pci/trace.h > > > > The build system cannot (should not) > > cater to such a particular case. > > > Oh well, thanks for the explanation. > > Alex, how do we proceed now? I like 2) + comment as in > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/misc/ocxl/Makefile?h=v4.20#n8 It is clear, but 3) TRACE_INCLUDE_PATH solution is self-documenting. > better than 3) as relative paths make it dependable on what file > actually includes it and it is not clear what is that and what happens > if that file moves deeper in the tree (unlikely to happen though). From the build system PoV, I'd like to discourage people from adding crappy header search path like this. Both 2) and 3) have pros and cons. I just sent 3) patch, but it is the maintainer's call after all. > > > > > -- > Alexey -- Best Regards Masahiro Yamada