1. 09 Sep, 2017 1 commit
  2. 21 Aug, 2017 3 commits
  3. 19 May, 2017 1 commit
    • Olof Johansson's avatar
      devicetree: Move include prefixes from arch to separate directory · d5d332d3
      Olof Johansson authored
      We use a directory under arch/$ARCH/boot/dts as an include path
      that has links outside of the subtree to find dt-bindings from under
      include/dt-bindings. That's been working well, but new DT architectures
      haven't been adding them by default.
      Recently there's been a desire to share some of the DT material between
      arm and arm64, which originally caused developers to create symlinks or
      relative includes between the subtrees. This isn't ideal -- it breaks
      if the DT files aren't stored in the exact same hierarchy as the kernel
      tree, and generally it's just icky.
      As a somewhat cleaner solution we decided to add a $ARCH/ prefix link
      once, and allow DTS files to reference dtsi (and dts) files in other
      architectures that way.
      Original approach was to create these links under each architecture,
      but it lead to the problem of recursive symlinks.
      As a remedy, move the include link directories out of the architecture
      trees into a common location. At the same time, they can now share one
      directory and one dt-bindings/ link as well.
      Fixes: 4027494a
       ('ARM: dts: add arm/arm64 include symlinks')
      Reported-by: default avatarRussell King <linux@armlinux.org.uk>
      Reported-by: default avatarOmar Sandoval <osandov@osandov.com>
      Reviewed-by: default avatarHeiko Stuebner <heiko@sntech.de>
      Reviewed-by: Masahiro Yamada's avatarMasahiro Yamada <yamada.masahiro@socionext.com>
      Tested-by: default avatarHeiko Stuebner <heiko@sntech.de>
      Acked-by: default avatarRob Herring <robh@kernel.org>
      Cc: Heiko Stuebner <heiko@sntech.de>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Russell King <linux@armlinux.org.uk>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Will Deacon <will.deacon@arm.com>
      Cc: Mikael Starvik <starvik@axis.com>
      Cc: Jesper Nilsson <jesper.nilsson@axis.com>
      Cc: James Hogan <james.hogan@imgtec.com>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: Frank Rowand <frowand.list@gmail.com>
      Cc: linux-arch <linux-arch@vger.kernel.org>
      Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
  4. 27 Apr, 2017 1 commit
  5. 23 Apr, 2017 2 commits
  6. 12 Apr, 2017 1 commit
  7. 29 Mar, 2017 1 commit
  8. 11 Mar, 2017 1 commit
  9. 02 Aug, 2016 1 commit
  10. 18 Jul, 2016 1 commit
    • Arnd Bergmann's avatar
      Kbuild: don't add obj tree in additional includes · db547ef1
      Arnd Bergmann authored
      When building with separate object directories and driver specific
      Makefiles that add additional header include paths, Kbuild adjusts
      the gcc flags so that we include both the directory in the source
      tree and in the object tree.
      However, due to another bug I fixed earlier, this did not actually
      include the correct directory in the object tree, so we know that
      we only really need the source tree here. Also, including the
      object tree sometimes causes warnings about nonexisting directories
      when the include path only exists in the source.
      This changes the logic to only emit the -I argument for the srctree,
      not for objects. We still need both $(srctree)/$(src) and $(obj)
      though, so I'm adding them manually.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.com>
  11. 20 Apr, 2016 1 commit
  12. 31 Mar, 2016 1 commit
  13. 22 Mar, 2016 1 commit
    • Dmitry Vyukov's avatar
      kernel: add kcov code coverage · 5c9a8750
      Dmitry Vyukov authored
      kcov provides code coverage collection for coverage-guided fuzzing
      (randomized testing).  Coverage-guided fuzzing is a testing technique
      that uses coverage feedback to determine new interesting inputs to a
      system.  A notable user-space example is AFL
      (http://lcamtuf.coredump.cx/afl/).  However, this technique is not
      widely used for kernel testing due to missing compiler and kernel
      kcov does not aim to collect as much coverage as possible.  It aims to
      collect more or less stable coverage that is function of syscall inputs.
      To achieve this goal it does not collect coverage in soft/hard
      interrupts and instrumentation of some inherently non-deterministic or
      non-interesting parts of kernel is disbled (e.g.  scheduler, locking).
      Currently there is a single coverage collection mode (tracing), but the
      API anticipates additional collection modes.  Initially I also
      implemented a second mode which exposes coverage in a fixed-size hash
      table of counters (what Quentin used in his original patch).  I've
      dropped the second mode for simplicity.
      This patch adds the necessary support on kernel side.  The complimentary
      compiler support was added in gcc revision 231296.
      We've used this support to build syzkaller system call fuzzer, which has
      found 90 kernel bugs in just 2 months:
      We've also found 30+ bugs in our internal systems with syzkaller.
      Another (yet unexplored) direction where kcov coverage would greatly
      help is more traditional "blob mutation".  For example, mounting a
      random blob as a filesystem, or receiving a random blob over wire.
      Why not gcov.  Typical fuzzing loop looks as follows: (1) reset
      coverage, (2) execute a bit of code, (3) collect coverage, repeat.  A
      typical coverage can be just a dozen of basic blocks (e.g.  an invalid
      input).  In such context gcov becomes prohibitively expensive as
      reset/collect coverage steps depend on total number of basic
      blocks/edges in program (in case of kernel it is about 2M).  Cost of
      kcov depends only on number of executed basic blocks/edges.  On top of
      that, kernel requires per-thread coverage because there are always
      background threads and unrelated processes that also produce coverage.
      With inlined gcov instrumentation per-thread coverage is not possible.
      kcov exposes kernel PCs and control flow to user-space which is
      insecure.  But debugfs should not be mapped as user accessible.
      Based on a patch by Quentin Casasnovas.
      [akpm@linux-foundation.org: make task_struct.kcov_mode have type `enum kcov_mode']
      [akpm@linux-foundation.org: unbreak allmodconfig]
      [akpm@linux-foundation.org: follow x86 Makefile layout standards]
      Signed-off-by: default avatarDmitry Vyukov <dvyukov@google.com>
      Reviewed-by: default avatarKees Cook <keescook@chromium.org>
      Cc: syzkaller <syzkaller@googlegroups.com>
      Cc: Vegard Nossum <vegard.nossum@oracle.com>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Tavis Ormandy <taviso@google.com>
      Cc: Will Deacon <will.deacon@arm.com>
      Cc: Quentin Casasnovas <quentin.casasnovas@oracle.com>
      Cc: Kostya Serebryany <kcc@google.com>
      Cc: Eric Dumazet <edumazet@google.com>
      Cc: Alexander Potapenko <glider@google.com>
      Cc: Kees Cook <keescook@google.com>
      Cc: Bjorn Helgaas <bhelgaas@google.com>
      Cc: Sasha Levin <sasha.levin@oracle.com>
      Cc: David Drysdale <drysdale@google.com>
      Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
      Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
      Cc: Kirill A. Shutemov <kirill@shutemov.name>
      Cc: Jiri Slaby <jslaby@suse.cz>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
  14. 23 Feb, 2016 1 commit
  15. 21 Jan, 2016 1 commit
  16. 18 Dec, 2015 1 commit
  17. 25 Nov, 2015 1 commit
    • Michal Marek's avatar
      kbuild: Allow to specify composite modules with modname-m · cf4f2193
      Michal Marek authored
      This allows to write
        drm-$(CONFIG_AGP) += drm_agpsupport.o
      without having to handle CONFIG_AGP=y vs. CONFIG_AGP=m. Only support
      this syntax for modules, since built-in code depending on something
      modular cannot work and init/Makefile actually relies on the current
      semantics. There are a few drivers which adapted to the current
      semantics out of necessity; these are fixed to also work when the
      respective subsystem is modular.
      Acked-by: Peter Chen <peter.chen@freescale.com> [chipidea]
      Signed-off-by: default avatarMichal Marek <mmarek@suse.com>
  18. 03 Apr, 2015 1 commit
  19. 14 Feb, 2015 1 commit
    • Andrey Ryabinin's avatar
      kasan: add kernel address sanitizer infrastructure · 0b24becc
      Andrey Ryabinin authored
      Kernel Address sanitizer (KASan) is a dynamic memory error detector.  It
      provides fast and comprehensive solution for finding use-after-free and
      out-of-bounds bugs.
      KASAN uses compile-time instrumentation for checking every memory access,
      therefore GCC > v4.9.2 required.  v4.9.2 almost works, but has issues with
      putting symbol aliases into the wrong section, which breaks kasan
      instrumentation of globals.
      This patch only adds infrastructure for kernel address sanitizer.  It's
      not available for use yet.  The idea and some code was borrowed from [1].
      Basic idea:
      The main idea of KASAN is to use shadow memory to record whether each byte
      of memory is safe to access or not, and use compiler's instrumentation to
      check the shadow memory on each memory access.
      Address sanitizer uses 1/8 of the memory addressable in kernel for shadow
      memory and uses direct mapping with a scale and offset to translate a
      memory address to its corresponding shadow address.
      Here is function to translate address to corresponding shadow address:
           unsigned long kasan_mem_to_shadow(unsigned long addr)
                      return (addr >> KASAN_SHADOW_SCALE_SHIFT) + KASAN_SHADOW_OFFSET;
      So for every 8 bytes there is one corresponding byte of shadow memory.
      The following encoding used for each shadow byte: 0 means that all 8 bytes
      of the corresponding memory region are valid for access; k (1 <= k <= 7)
      means that the first k bytes are valid for access, and other (8 - k) bytes
      are not; Any negative value indicates that the entire 8-bytes are
      inaccessible.  Different negative values used to distinguish between
      different kinds of inaccessible memory (redzones, freed memory) (see
      To be able to detect accesses to bad memory we need a special compiler.
      Such compiler inserts a specific function calls (__asan_load*(addr),
      __asan_store*(addr)) before each memory access of size 1, 2, 4, 8 or 16.
      These functions check whether memory region is valid to access or not by
      checking corresponding shadow memory.  If access is not valid an error
      Historical background of the address sanitizer from Dmitry Vyukov:
      	"We've developed the set of tools, AddressSanitizer (Asan),
      	ThreadSanitizer and MemorySanitizer, for user space. We actively use
      	them for testing inside of Google (continuous testing, fuzzing,
      	running prod services). To date the tools have found more than 10'000
      	scary bugs in Chromium, Google internal codebase and various
      	open-source projects (Firefox, OpenSSL, gcc, clang, ffmpeg, MySQL and
      	lots of others): [2] [3] [4].
      	The tools are part of both gcc and clang compilers.
      	We have not yet done massive testing under the Kernel AddressSanitizer
      	(it's kind of chicken and egg problem, you need it to be upstream to
      	start applying it extensively). To date it has found about 50 bugs.
      	Bugs that we've found in upstream kernel are listed in [5].
      	We've also found ~20 bugs in out internal version of the kernel. Also
      	people from Samsung and Oracle have found some.
      	As others noted, the main feature of AddressSanitizer is its
      	performance due to inline compiler instrumentation and simple linear
      	shadow memory. User-space Asan has ~2x slowdown on computational
      	programs and ~2x memory consumption increase. Taking into account that
      	kernel usually consumes only small fraction of CPU and memory when
      	running real user-space programs, I would expect that kernel Asan will
      	have ~10-30% slowdown and similar memory consumption increase (when we
      	finish all tuning).
      	I agree that Asan can well replace kmemcheck. We have plans to start
      	working on Kernel MemorySanitizer that finds uses of unitialized
      	memory. Asan+Msan will provide feature-parity with kmemcheck. As
      	others noted, Asan will unlikely replace debug slab and pagealloc that
      	can be enabled at runtime. Asan uses compiler instrumentation, so even
      	if it is disabled, it still incurs visible overheads.
      	Asan technology is easily portable to other architectures. Compiler
      	instrumentation is fully portable. Runtime has some arch-dependent
      	parts like shadow mapping and atomic operation interception. They are
      	relatively easy to port."
      Comparison with other debugging features:
        - KASan can do almost everything that kmemcheck can.  KASan uses
          compile-time instrumentation, which makes it significantly faster than
          kmemcheck.  The only advantage of kmemcheck over KASan is detection of
          uninitialized memory reads.
          Some brief performance testing showed that kasan could be
          x500-x600 times faster than kmemcheck:
      $ netperf -l 30
      		MIGRATED TCP STREAM TEST from ( port 0 AF_INET to localhost ( port 0 AF_INET
      		Recv   Send    Send
      		Socket Socket  Message  Elapsed
      		Size   Size    Size     Time     Throughput
      		bytes  bytes   bytes    secs.    10^6bits/sec
      no debug:	87380  16384  16384    30.00    41624.72
      kasan inline:	87380  16384  16384    30.00    12870.54
      kasan outline:	87380  16384  16384    30.00    10586.39
      kmemcheck: 	87380  16384  16384    30.03      20.23
        - Also kmemcheck couldn't work on several CPUs.  It always sets
          number of CPUs to 1.  KASan doesn't have such limitation.
      	- KASan is slower than DEBUG_PAGEALLOC, but KASan works on sub-page
      	  granularity level, so it able to find more bugs.
      SLUB_DEBUG (poisoning, redzones):
      	- SLUB_DEBUG has lower overhead than KASan.
      	- SLUB_DEBUG in most cases are not able to detect bad reads,
      	  KASan able to detect both reads and writes.
      	- In some cases (e.g. redzone overwritten) SLUB_DEBUG detect
      	  bugs only on allocation/freeing of object. KASan catch
      	  bugs right before it will happen, so we always know exact
      	  place of first bad read/write.
      [1] https://code.google.com/p/address-sanitizer/wiki/AddressSanitizerForKernel
      [2] https://code.google.com/p/address-sanitizer/wiki/FoundBugs
      [3] https://code.google.com/p/thread-sanitizer/wiki/FoundBugs
      [4] https://code.google.com/p/memory-sanitizer/wiki/FoundBugs
      [5] https://code.google.com/p/address-sanitizer/wiki/AddressSanitizerForKernel#Trophies
      Based on work by Andrey Konovalov.
      Signed-off-by: default avatarAndrey Ryabinin <a.ryabinin@samsung.com>
      Acked-by: default avatarMichal Marek <mmarek@suse.cz>
      Signed-off-by: default avatarAndrey Konovalov <adech.fo@gmail.com>
      Cc: Dmitry Vyukov <dvyukov@google.com>
      Cc: Konstantin Serebryany <kcc@google.com>
      Cc: Dmitry Chernenkov <dmitryc@google.com>
      Cc: Yuri Gribov <tetra2005@gmail.com>
      Cc: Konstantin Khlebnikov <koct9i@gmail.com>
      Cc: Sasha Levin <sasha.levin@oracle.com>
      Cc: Christoph Lameter <cl@linux.com>
      Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
      Cc: Dave Hansen <dave.hansen@intel.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Christoph Lameter <cl@linux.com>
      Cc: Pekka Enberg <penberg@kernel.org>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Stephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
  20. 21 Oct, 2014 1 commit
  21. 19 Aug, 2014 1 commit
    • Masahiro Yamada's avatar
      kbuild: handle multi-objs dependency appropriately · c8589d1e
      Masahiro Yamada authored
      The comment in scripts/Makefile.build says as follows:
        We would rather have a list of rules like
              foo.o: $(foo-objs)
        but that's not so easy, so we rather make all composite objects depend
        on the set of all their parts
      This commit makes it possible!
      For example, assume a Makefile like this
        obj-m = foo.o bar.o
        foo-objs := foo1.o foo2.o
        bar-objs := bar1.o bar2.o
      Without this patch, foo.o depends on all of
      foo1.o foo2.o bar1.o bar2.o.
      It looks funny that foo.o is regenerated when bar1.c is updated.
      Now we can handle the dependency of foo.o and bar.o separately.
      Signed-off-by: default avatarMasahiro Yamada <yamada.m@jp.panasonic.com>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
  22. 30 Apr, 2014 1 commit
  23. 29 Mar, 2014 1 commit
  24. 20 Feb, 2014 2 commits
    • Jason Cooper's avatar
      kbuild: dtbs_install: new make target · f4d4ffc0
      Jason Cooper authored
      Unlike other build products in the Linux kernel, there is no 'make
      *install' mechanism to put devicetree blobs in a standard place.
      This commit adds a new 'dtbs_install' make target which copies all of
      the dtbs into the INSTALL_DTBS_PATH directory. INSTALL_DTBS_PATH can be
      set before calling make to change the default install directory. If not
      set then it defaults to:
      This is done to keep dtbs from different kernel versions separate until
      things have settled down.  Once the dtbs are stable, and not so strongly
      linked to the kernel version, the devicetree files will most likely move
      to their own repo.  Users will need to upgrade install scripts at that
      v7: (reworked by Grant Likely)
      - Moved rules from arch/arm/Makefile to arch/arm/boot/dts/Makefile so
        that each dtb install could have a separate target and be reported as
        part of the make output.
      - Fixed dependency problem to ensure $KERNELRELEASE is calculated before
        attempting to install
      - Removed option to call external script. Copying the files should be
        sufficient and a build system can post-process the install directory.
        Despite the fact an external script is used for installing the kernel,
        I don't think that is a pattern that should be encouraged. I would
        rather see buildroot type tools post process the install directory to
        rename or move dtb files after installing to a staging directory.
        - Plus it is easy to add a hook after the fact without blocking the
          rest of this feature.
      - Move the helper targets into scripts/Makefile.lib with the rest of the
        common dtb rules
      Signed-off-by: default avatarJason Cooper <jason@lakedaemon.net>
      Signed-off-by: default avatarGrant Likely <grant.likely@linaro.org>
      Cc: Michal Marek <mmarek@suse.cz>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Rob Herring <robh+dt@kernel.org>
    • Grant Likely's avatar
      of: Move testcase FDT data into drivers/of · b5190516
      Grant Likely authored
      The testcase data is usable by any platform. This patch moves it into
      the drivers/of directory so it can be included by any architecture.
      Using the test cases requires manually adding #include <testcases.dtsi>
      to the end of the boards .dtsi file and enabling CONFIG_OF_SELFTEST. Not
      pretty though. A useful project would be to make the testcase code
      easier to execute.
      Signed-off-by: default avatarGrant Likely <grant.likely@linaro.org>
  25. 09 Jul, 2013 1 commit
  26. 03 Jul, 2013 1 commit
    • 张忠山's avatar
      kbuild: create directory for dir/file.o · 4d47dde4
      张忠山 authored
      When add a obj with dir to obj-y, like this
          obj-y += dir/file.o
      The $(obj)/dir not created, this patch fix this.
      When try to add a file(which in a subdir) to my board's obj-y, the build
      progress crashed.
      For example, I use at91rm9200ek board, and in kernel dir run:
        mkdir objtree
        make O=objtree at91rm9200_defconfig
        mkdir arch/arm/mach-at91/dir
        touch arch/arm/mach-at91/dir/file.c
      and edit arch/arm/mach-at91/dir/file.c to add some code.
      then edit arch/arm/mach-at91/Makefile, change the following line:
        obj-$(CONFIG_MACH_AT91RM9200EK) += board-rm9200ek.o
        obj-$(CONFIG_MACH_AT91RM9200EK) += board-rm9200ek.o dir/file.o
      Now build it:
        make O=objtree
      Then the error appears:
        CC      arch/arm/mach-at91/board-rm9200dk.o
        CC      arch/arm/mach-at91/board-rm9200ek.o
        CC      arch/arm/mach-at91/dir/file.o
          fatal error: opening dependency file
          arch/arm/mach-at91/dir/.file.o.d: No such file or directory
      Check the objtree:
        LANG=en ls objtree/arch/arm/mach-at91/dir
        ls: cannot access objtree/arch/arm/mach-at91/dir: No such file or directory
      It's apparently that the target dir not created for file.o
      Check kbuild source code. It seems that kbuild create dirs for that in
      $(obj-dirs).  But if the dir need not to create a built-in.o, It should
      never in  $(obj-dirs).
      So I make this patch to make sure It in  $(obj-dirs)
      this bug caused by commit
      Signed-off-by: default avatar张忠山 <zzs0213@gmail.com>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
  27. 13 Jun, 2013 2 commits
  28. 23 May, 2013 1 commit
    • Matthijs Kooijman's avatar
      kbuild: Don't assume dts files live in arch/*/boot/dts · ad061568
      Matthijs Kooijman authored
      In commit b40b25ff
       (kbuild: always run gcc -E on *.dts, remove cmd_dtc_cpp),
      dts building was changed to always use the C preprocessor. This meant
      that the .dts file passed to dtc is not the original, but the
      preprocessed one.
      When compiling with a separate build directory (i.e., with O=), this
      preprocessed file will not live in the same directory as the original.
      When the .dts file includes .dtsi files, dtc will look for them in the
      build directory, not in the source directory and compilation will fail.
      The commit referenced above tried to fix this by passing arch/*/boot/dts
      as an include path to dtc. However, for mips, the .dts files are not in
      this directory, so dts compilation on mips breaks for some targets.
      Instead of hardcoding this particular include path, this commit just
      uses the directory of the .dts file that is being compiled, which
      effectively restores the previous behaviour wrt includes. For most .dts
      files, this path is just the same as the previous hardcoded
      arch/*/boot/dts path.
      This was tested on a mips (rt3052) and an arm (bcm2835) target.
      Signed-off-by: default avatarMatthijs Kooijman <matthijs@stdin.nl>
      Reviewed-by: Stephen Warren's avatarStephen Warren <swarren@nvidia.com>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
  29. 05 Apr, 2013 3 commits
    • Stephen Warren's avatar
      kbuild: always run gcc -E on *.dts, remove cmd_dtc_cpp · b40b25ff
      Stephen Warren authored
      Replace cmd_dtc with cmd_dtc_cpp, and delete the latter.
      Previously, a special file extension (.dtsp) was required to trigger
      the C pre-processor to run on device tree files. This was ugly. Now that
      previous changes have enhanced cmd_dtc_cpp to collect dependency
      information from both gcc -E and dtc, we can transparently run the pre-
      processor on all device tree files, irrespective of whether they
      use /include/ or #include syntax to include *.dtsi.
      Signed-off-by: Stephen Warren's avatarStephen Warren <swarren@nvidia.com>
      Acked-by: default avatarRob Herring <rob.herring@calxeda.com>
    • Stephen Warren's avatar
      kbuild: cmd_dtc_cpp: extract deps from both gcc -E and dtc · 85f02be8
      Stephen Warren authored
      Prior to this change, when compiling *.dts to *.dtb, the dependency
      output from dtc would be used, and when compiling *.dtsp to *.dtb, the
      dependency output from gcc -E alone would be used, despite dtc also
      being invoked (on a temporary file that was guaranteed to have no
      With this change, when compiling *.dtsp to *.dtb, the dependency files
      from both gcc -E and dtc are used. This will allow cmd_dtc_cpp to
      replace cmd_dtc in a future change. In turn, that will allow the C pre-
      processor to be run transparently on *.dts, without the need to a
      separate rule or file extension to trigger it.
      Signed-off-by: Stephen Warren's avatarStephen Warren <swarren@nvidia.com>
      Acked-by: default avatarRob Herring <rob.herring@calxeda.com>
    • Stephen Warren's avatar
      kbuild: create an "include chroot" for DT bindings · c58299aa
      Stephen Warren authored
      The recent dtc+cpp support allows header files and C pre-processor
      defines/macros to be used when compiling device tree files. These
      headers will typically define various constants that are part of the
      device tree bindings.
      The original patch which set up the dtc+cpp include path only considered
      using those headers from device tree files. However, most are also
      useful for kernel code which needs to interpret the device tree.
      In both the DT files and the kernel, I'd like to include the DT-related
      headers in the same way, for example, <dt-bindings/gpio/tegra-gpio.h>.
      That will simplify any text which discusses the DT header locations.
      Creating a <dt-bindings/> for kernel source to use is as simple as
      placing files into include/dt-bindings/.
      However, when compiling DT files, the include path should be restricted
      so that only the dt-bindings path is available; arbitrary kernel headers
      shouldn't be exposed. For this reason, create a specific include
  30. 15 Mar, 2013 1 commit
    • Rusty Russell's avatar
      CONFIG_SYMBOL_PREFIX: cleanup. · b92021b0
      Rusty Russell authored
      We have CONFIG_SYMBOL_PREFIX, which three archs define to the string
      "_".  But Al Viro broke this in "consolidate cond_syscall and
      SYSCALL_ALIAS declarations" (in linux-next), and he's not the first to
      do so.
      Using CONFIG_SYMBOL_PREFIX is awkward, since we usually just want to
      prefix it so something.  So various places define helpers which are
      defined to nothing if CONFIG_SYMBOL_PREFIX isn't set:
      1) include/asm-generic/unistd.h defines __SYMBOL_PREFIX.
      2) include/asm-generic/vmlinux.lds.h defines VMLINUX_SYMBOL(sym)
      3) include/linux/export.h defines MODULE_SYMBOL_PREFIX.
      4) include/linux/kernel.h defines SYMBOL_PREFIX (which differs from #7)
      5) kernel/modsign_certificate.S defines ASM_SYMBOL(sym)
      6) scripts/modpost.c defines MODULE_SYMBOL_PREFIX
      7) scripts/Makefile.lib defines SYMBOL_PREFIX on the commandline if
         CONFIG_SYMBOL_PREFIX is set, so that we have a non-string version
         for pasting.
      (arch/h8300/include/asm/linkage.h defines SYMBOL_NAME(), too).
      Let's solve this properly:
      1) No more generic prefix, just CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX.
      2) Make linux/export.h usable from asm.
      4) Make everyone use them.
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      Reviewed-by: default avatarJames Hogan <james.hogan@imgtec.com>
      Tested-by: James Hogan <james.hogan@imgtec.com> (metag)
  31. 13 Feb, 2013 1 commit
    • Stephen Warren's avatar
      kbuild: limit dtc+cpp include path · e570d7c1
      Stephen Warren authored
      Device tree source files may now include header files. The intent is
      that those header files define/name constants used as part of the DT
      bindings. Currently this feature is open to abuse, since any kernel
      header file at all can be included, This could allow device tree files
      to become dependant on kernel headers files, and thus make them no
      longer OS-independent. This would also prevent separating the device
      tree source files from the kernel repository.
      Solve this by limiting the cpp include path for device tree files to
      separate directories.
      Signed-off-by: Stephen Warren's avatarStephen Warren <swarren@nvidia.com>
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
  32. 08 Feb, 2013 1 commit
  33. 30 Nov, 2012 1 commit
    • Stephen Warren's avatar
      kbuild: centralize .dts->.dtb rule · 90b335fb
      Stephen Warren authored
      All architectures that use cmd_dtc do so in almost the same way. Create
      a central build rule to avoid duplication. The one difference is that
      most current uses of dtc build $(obj)/%.dtb from $(src)/dts/%.dts rather
      than building the .dtb in the same directory as the .dts file. This
      difference will be eliminated arch-by-arch in future patches.
      MIPS is the exception here; it already uses the exact same rule as the
      new common rule, so the duplicate is removed in this patch to avoid any
      conflict. arch/mips changes courtesy of Ralf Baechle.
      Update Documentation/kbuild to remove the explicit call to cmd_dtc from
      the example, now that the rule exists in a centralized location.
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: Olof Johansson <olof@lixom.net>
      Cc: Russell King <linux@arm.linux.org.uk>
      Acked-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
      Cc: Jonas Bonn <jonas@southpole.se>
      Cc: linux@lists.openrisc.net
      Cc: Aurelien Jacquiot <a-jacquiot@ti.com>
      Cc: linux-c6x-dev@linux-c6x.org
      Cc: Mark Salter <msalter@redhat.com>
      Cc: Michal Simek <monstr@monstr.eu>
      Cc: microblaze-uclinux@itee.uq.edu.au
      Cc: Chris Zankel <chris@zankel.net>
      Cc: linux-xtensa@linux-xtensa.org
      Cc: Max Filippov <jcmvbkbc@gmail.com>
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      Signed-off-by: Stephen Warren's avatarStephen Warren <swarren@nvidia.com>
      Signed-off-by: default avatarRob Herring <rob.herring@calxeda.com>