1. 23 Sep, 2020 2 commits
    • Xiaofei Tan's avatar
      HID: i2c-hid: fix kerneldoc warnings in i2c-hid-core.c · ca43ab1e
      Xiaofei Tan authored
      Fix following warnings caused by mismatch bewteen function parameters
      and comments.
      drivers/hid/i2c-hid/i2c-hid-core.c:331: warning: Function parameter or member 'data_len' not described in 'i2c_hid_set_or_send_report'
      drivers/hid/i2c-hid/i2c-hid-core.c:331: warning: Excess function parameter 'len' description in 'i2c_hid_set_or_send_report'
      Signed-off-by: default avatarXiaofei Tan <tanxiaofei@huawei.com>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      ca43ab1e
    • Xiaofei Tan's avatar
      HID: core: fix kerneldoc warnings in hid-core.c · 5f94e9c8
      Xiaofei Tan authored
      Fix following warnings caused by mismatch bewteen function parameters
      and comments.
      drivers/hid/hid-core.c:931: warning: Function parameter or member 'hid' not described in 'hid_parse_report'
      drivers/hid/hid-core.c:931: warning: Excess function parameter 'device' description in 'hid_parse_report'
      drivers/hid/hid-core.c:961: warning: Function parameter or member 'hid' not described in 'hid_validate_values'
      drivers/hid/hid-core.c:961: warning: Excess function parameter 'device' description in 'hid_validate_values'
      drivers/hid/hid-core.c:1452: warning: Function parameter or member 'report' not described in 'hid_match_report'
      drivers/hid/hid-core.c:1452: warning: Excess function parameter 'report_type' description in 'hid_match_report'
      drivers/hid/hid-core.c:2132: warning: Function parameter or member 'drv' not described in 'new_id_store'
      drivers/hid/hid-core.c:2132: warning: Excess function parameter 'driver' description in 'new_id_store'
      Signed-off-by: default avatarXiaofei Tan <tanxiaofei@huawei.com>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      5f94e9c8
  2. 22 Sep, 2020 3 commits
  3. 09 Sep, 2020 2 commits
    • Hans de Goede's avatar
      HID: ite: Add USB id match for Acer One S1003 keyboard dock · 5bf2f2f3
      Hans de Goede authored
      The Acer One S1003 2-in-1 keyboard dock uses a Synaptics S910xx touchpad
      which is connected to an ITE 8910 USB keyboard controller chip.
      
      This keyboard has the same quirk for its rfkill / airplane mode hotkey as
      other keyboards with ITE keyboard chips, it only sends a single release
      event when pressed and released, it never sends a press event.
      
      This commit adds this keyboards USB id to the hid-ite id-table, fixing
      the rfkill key not working on this keyboard. Note that like for the
      Acer Aspire Switch 10 (SW5-012) the id-table entry matches on the
      HID_GROUP_GENERIC generic group so that hid-ite only binds to the
      keyboard interface and the mouse/touchpad interface is left untouched
      so that hid-multitouch can bind to it.
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      5bf2f2f3
    • Dan Carpenter's avatar
      HID: roccat: add bounds checking in kone_sysfs_write_settings() · d4f98dbf
      Dan Carpenter authored
      This code doesn't check if "settings->startup_profile" is within bounds
      and that could result in an out of bounds array access.  What the code
      does do is it checks if the settings can be written to the firmware, so
      it's possible that the firmware has a bounds check?  It's safer and
      easier to verify when the bounds checking is done in the kernel.
      
      Fixes: 14bf62cd ("HID: add driver for Roccat Kone gaming mouse")
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      d4f98dbf
  4. 01 Sep, 2020 3 commits
  5. 31 Aug, 2020 2 commits
  6. 18 Aug, 2020 1 commit
  7. 17 Aug, 2020 5 commits
  8. 10 Aug, 2020 5 commits
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid · b7b8e368
      Linus Torvalds authored
      Pull HID updates from Jiri Kosina:
      
       - fix for some modern devices that return multi-byte battery report,
         from Grant Likely
      
       - fix for devices with Resolution Multiplier, from Peter Hutterer
      
       - device probing speed increase, from Dmitry Torokhov
      
       - ThinkPad 10 Ultrabook Keyboard support, from Hans de Goede
      
       - other small assorted fixes and device ID additions
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid:
        HID: quirks: add NOGET quirk for Logitech GROUP
        HID: Replace HTTP links with HTTPS ones
        HID: udraw-ps3: Replace HTTP links with HTTPS ones
        HID: mcp2221: Replace HTTP links with HTTPS ones
        HID: input: Fix devices that return multiple bytes in battery report
        HID: lenovo: Fix spurious F23 key press report during resume from suspend
        HID: lenovo: Add ThinkPad 10 Ultrabook Keyboard fn_lock support
        HID: lenovo: Add ThinkPad 10 Ultrabook Keyboard support
        HID: lenovo: Rename fn_lock sysfs attr handlers to make them generic
        HID: lenovo: Factor out generic parts of the LED code
        HID: lenovo: Merge tpkbd and cptkbd data structures
        HID: intel-ish-hid: Replace PCI_DEV_FLAGS_NO_D3 with pci_save_state
        HID: Wiimote: Treat the d-pad as an analogue stick
        HID: input: do not run GET_REPORT unless there's a Resolution Multiplier
        HID: usbhid: remove redundant assignment to variable retval
        HID: usbhid: do not sleep when opening device
      b7b8e368
    • Jiri Kosina's avatar
      e6b6e19a
    • Jiri Kosina's avatar
      Merge branch 'for-5.9/lenovo' into for-linus · ccac9cec
      Jiri Kosina authored
      - ThinkPad 10 Ultrabook Keyboard support, from Hans de Goede
      ccac9cec
    • Jiri Kosina's avatar
      cd6cad55
    • Jiri Kosina's avatar
      Merge branch 'for-5.9/core-v2' into for-linus · a66eebd7
      Jiri Kosina authored
      - fix for some modern devices that return multi-byte battery report, from
        Grant Likely
      - fix for devices with Resolution Multiplier, from Peter Hutterer
      - device probing speed increase, from Dmitry Torokhov
      a66eebd7
  9. 09 Aug, 2020 16 commits
    • Linus Torvalds's avatar
      Merge tag 'kbuild-v5.9' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild · fc80c51f
      Linus Torvalds authored
      Pull Kbuild updates from Masahiro Yamada:
      
       - run the checker (e.g. sparse) after the compiler
      
       - remove unneeded cc-option tests for old compiler flags
      
       - fix tar-pkg to install dtbs
      
       - introduce ccflags-remove-y and asflags-remove-y syntax
      
       - allow to trace functions in sub-directories of lib/
      
       - introduce hostprogs-always-y and userprogs-always-y syntax
      
       - various Makefile cleanups
      
      * tag 'kbuild-v5.9' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
        kbuild: stop filtering out $(GCC_PLUGINS_CFLAGS) from cc-option base
        kbuild: include scripts/Makefile.* only when relevant CONFIG is enabled
        kbuild: introduce hostprogs-always-y and userprogs-always-y
        kbuild: sort hostprogs before passing it to ifneq
        kbuild: move host .so build rules to scripts/gcc-plugins/Makefile
        kbuild: Replace HTTP links with HTTPS ones
        kbuild: trace functions in subdirectories of lib/
        kbuild: introduce ccflags-remove-y and asflags-remove-y
        kbuild: do not export LDFLAGS_vmlinux
        kbuild: always create directories of targets
        powerpc/boot: add DTB to 'targets'
        kbuild: buildtar: add dtbs support
        kbuild: remove cc-option test of -ffreestanding
        kbuild: remove cc-option test of -fno-stack-protector
        Revert "kbuild: Create directory for target DTB"
        kbuild: run the checker after the compiler
      fc80c51f
    • Linus Torvalds's avatar
      Merge tag 'nfsd-5.9' of git://git.linux-nfs.org/projects/cel/cel-2.6 · 7a6b6044
      Linus Torvalds authored
      Pull NFS server updates from Chuck Lever:
       "Highlights:
         - Support for user extended attributes on NFS (RFC 8276)
         - Further reduce unnecessary NFSv4 delegation recalls
      
        Notable fixes:
         - Fix recent krb5p regression
         - Address a few resource leaks and a rare NULL dereference
      
        Other:
         - De-duplicate RPC/RDMA error handling and other utility functions
         - Replace storage and display of kernel memory addresses by tracepoints"
      
      * tag 'nfsd-5.9' of git://git.linux-nfs.org/projects/cel/cel-2.6: (38 commits)
        svcrdma: CM event handler clean up
        svcrdma: Remove transport reference counting
        svcrdma: Fix another Receive buffer leak
        SUNRPC: Refresh the show_rqstp_flags() macro
        nfsd: netns.h: delete a duplicated word
        SUNRPC: Fix ("SUNRPC: Add "@len" parameter to gss_unwrap()")
        nfsd: avoid a NULL dereference in __cld_pipe_upcall()
        nfsd4: a client's own opens needn't prevent delegations
        nfsd: Use seq_putc() in two functions
        svcrdma: Display chunk completion ID when posting a rw_ctxt
        svcrdma: Record send_ctxt completion ID in trace_svcrdma_post_send()
        svcrdma: Introduce Send completion IDs
        svcrdma: Record Receive completion ID in svc_rdma_decode_rqst
        svcrdma: Introduce Receive completion IDs
        svcrdma: Introduce infrastructure to support completion IDs
        svcrdma: Add common XDR encoders for RDMA and Read segments
        svcrdma: Add common XDR decoders for RDMA and Read segments
        SUNRPC: Add helpers for decoding list discriminators symbolically
        svcrdma: Remove declarations for functions long removed
        svcrdma: Clean up trace_svcrdma_send_failed() tracepoint
        ...
      7a6b6044
    • Linus Torvalds's avatar
      Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 8d3e09b4
      Linus Torvalds authored
      Pull regset conversion fix from Al Viro:
       "Fix a regression from an unnoticed bisect hazard in the regset series.
      
        A bunch of old (aout, originally) primitives used by coredumps became
        dead code after fdpic conversion to regsets. Removal of that dead code
        had been the first commit in the followups to regset series;
        unfortunately, it happened to hide the bisect hazard on sh (extern for
        fpregs_get() had not been updated in the main series when it should
        have been; followup simply made fpregs_get() static). And without that
        followup commit this bisect hazard became breakage in the mainline"
      Tested-by: default avatarJohn Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
      
      * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        kill unused dump_fpu() instances
      8d3e09b4
    • Linus Torvalds's avatar
      Merge tag 'pinctrl-v5.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl · 9420f1ce
      Linus Torvalds authored
      Pull pin control updates from Linus Walleij:
       "This is the bulk of the pin control changes for the v5.9 kernel
        series:
      
        Core changes:
      
         - The GPIO patch "gpiolib: Introduce for_each_requested_gpio_in_range()
           macro" was put in an immutable branch and merged into the pinctrl
           tree as well. We see these changes also here.
      
         - Improved debug output for pins used as GPIO.
      
        New drivers:
      
         - Ocelot Sparx5 SoC driver.
      
         - Intel Emmitsburg SoC subdriver.
      
         - Intel Tiger Lake-H SoC subdriver.
      
         - Qualcomm PM660 SoC subdriver.
      
         - Renesas SH-PFC R8A774E1 subdriver.
      
        Driver improvements:
      
         - Linear improvement and cleanups of the Intel drivers for
           Cherryview, Lynxpoint, Baytrail etc. Improved locking among other
           things.
      
         - Renesas SH-PFC has added support for RPC pins, groups, and
           functions to r8a77970 and r8a77980.
      
         - The newere Freescale (now NXP) i.MX8 pin controllers have been
           modularized. This is driven by the Google Android GKI initiative I
           think.
      
         - Open drain support for pins on the Qualcomm IPQ4019.
      
         - The Ingenic driver can handle both edges IRQ detection.
      
         - A big slew of documentation fixes all over the place.
      
         - A few irqchip template conversions by yours truly.
      
      * tag 'pinctrl-v5.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: (107 commits)
        dt-bindings: pinctrl: add bindings for MediaTek MT6779 SoC
        pinctrl: stmfx: Use irqchip template
        pinctrl: amd: Use irqchip template
        pinctrl: mediatek: fix build for tristate changes
        pinctrl: samsung: Use bank name as irqchip name
        pinctrl: core: print gpio in pins debugfs file
        pinctrl: mediatek: add mt6779 eint support
        pinctrl: mediatek: add pinctrl support for MT6779 SoC
        pinctrl: mediatek: avoid virtual gpio trying to set reg
        pinctrl: mediatek: update pinmux definitions for mt6779
        pinctrl: stm32: use the hwspin_lock_timeout_in_atomic() API
        pinctrl: mcp23s08: Use irqchip template
        pinctrl: sx150x: Use irqchip template
        dt-bindings: ingenic,pinctrl: Support pinmux/pinconf nodes
        pinctrl: intel: Add Intel Emmitsburg pin controller support
        pinctl: ti: iodelay: Replace HTTP links with HTTPS ones
        Revert "gpio: omap: handle pin config bias flags"
        pinctrl: single: Use fallthrough pseudo-keyword
        pinctrl: qcom: spmi-gpio: Use fallthrough pseudo-keyword
        pinctrl: baytrail: Use fallthrough pseudo-keyword
        ...
      9420f1ce
    • Linus Torvalds's avatar
      Merge tag 'mtd/for-5.9' of git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux · dec1fbbc
      Linus Torvalds authored
      Pull mtd updates from Miquel Raynal:
       "MTD core changes:
         - Spelling
         - http to https updates
      
        NAND core changes:
         - Drop useless 'depends on' in Kconfig
         - Add an extra level in the Kconfig hierarchy
         - Trivial spellings
         - Dynamic allocation of the interface configurations
         - Dropping the default ONFI timing mode
         - Various cleanup (types, structures, naming, comments)
         - Hide the chip->data_interface indirection
         - Add the generic rb-gpios property
         - Add the ->choose_interface_config() hook
         - Introduce nand_choose_best_sdr_timings()
         - Use default values for tPROG_max and tBERS_max
         - Avoid redefining tR_max and tCCS_min
         - Add a helper to find the closest ONFI mode
         - bcm63xx MTD parsers: simplify CFE detection
      
        Raw NAND controller drivers changes:
         - fsl-upm: Deprecation of specific DT properties
         - fsl_upm: Driver rework and cleanup in favor of ->exec_op()
         - Ingenic: Cleanup ARRAY_SIZE() vs sizeof() use
         - brcmnand: ECC error handling on EDU transfers
         - brcmnand: Don't default to EDU transfers
         - qcom: Set BAM mode only if not set already
         - qcom: Avoid write to unavailable register
         - gpio: Driver rework in favor of ->exec_op()
         - tango: ->exec_op() conversion
         - mtk: ->exec_op() conversion
      
        Raw NAND chip drivers changes:
         - toshiba: Implement ->choose_interface_config() for TH58NVG2S3HBAI4,
           TC58NVG0S3E, and TC58TEG5DCLTA00
         - hynix: Implement ->choose_interface_config() for H27UCG8T2ATR-BC
      
        SPI NOR core changes:
         - Disable Quad Mode in spi_nor_restore().
         - Don't abort BFPT parsing when QER reserved value is used.
         - Add support/update capabilities for few flashes.
         - Drop s70fl01gs flash: it does not support RDSR(05h) which is
           critical for erase/write.
         - Merge the SPIMEM DTR bits in spi-nor/next to avoid conflicts during
           the release cycle.
      
        SPI NOR controller drivers changes:
         - Move the cadence-quadspi driver to spi-mem. The series was taken
           through the SPI tree. Merge it also in spi-nor/next to avoid
           conflicts during the release cycle.
         - intel-spi:
            - Add new PCI IDs.
            - Ignore the Write Disable command, the controller doesn't support
              it.
            - Fix performance regression"
      
      * tag 'mtd/for-5.9' of git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux: (79 commits)
        MTD: pfow.h: drop a duplicated word
        MTD: mtd-abi.h: drop a duplicated word
        mtd: rawnand: omap_elm: Replace HTTP links with HTTPS ones
        mtd: Replace HTTP links with HTTPS ones
        mtd: hyperbus: Replace HTTP links with HTTPS ones
        mtd: revert "spi-nor: intel: provide a range for poll_timout"
        mtd: spi-nor: update read capabilities for w25q64 and s25fl064k
        mtd: spi-nor: micron: Add SPI_NOR_DUAL_READ flag on mt25qu02g
        mtd: spi-nor: macronix: Add support for mx66u2g45g
        mtd: spi-nor: intel-spi: Simulate WRDI command
        mtd: spi-nor: Disable the flash quad mode in spi_nor_restore()
        mtd: spi-nor: Add capability to disable flash quad mode
        mtd: spi-nor: spansion: Remove s70fl01gs from flash_info
        mtd: spi-nor: sfdp: do not make invalid quad enable fatal
        dt-bindings: mtd: fsl-upm-nand: Deprecate chip-delay and fsl, upm-wait-flags
        mtd: rawnand: stm32_fmc2: get resources from parent node
        mtd: rawnand: stm32_fmc2: use regmap APIs
        memory: stm32-fmc2-ebi: add STM32 FMC2 EBI controller driver
        dt-bindings: memory-controller: add STM32 FMC2 EBI controller documentation
        dt-bindings: mtd: update STM32 FMC2 NAND controller documentation
        ...
      dec1fbbc
    • Stephen Rothwell's avatar
    • Masahiro Yamada's avatar
      kbuild: stop filtering out $(GCC_PLUGINS_CFLAGS) from cc-option base · 132305b3
      Masahiro Yamada authored
      Commit d26e9414 ("kbuild: no gcc-plugins during cc-option tests")
      was neeeded because scripts/Makefile.gcc-plugins was too early.
      
      This is unneeded by including scripts/Makefile.gcc-plugins last,
      and being careful to not add cc-option tests after it.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      132305b3
    • Masahiro Yamada's avatar
      kbuild: include scripts/Makefile.* only when relevant CONFIG is enabled · e0fe0bbe
      Masahiro Yamada authored
      Currently, the top Makefile includes all of scripts/Makefile.<feature>
      even if the associated CONFIG option is disabled.
      
      Do not include unneeded Makefiles in order to slightly optimize the
      parse stage.
      
      Include $(include-y), and ignore $(include-).
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      e0fe0bbe
    • Masahiro Yamada's avatar
      kbuild: introduce hostprogs-always-y and userprogs-always-y · faabed29
      Masahiro Yamada authored
      To build host programs, you need to add the program names to 'hostprogs'
      to use the necessary build rule, but it is not enough to build them
      because there is no dependency.
      
      There are two types of host programs: built as the prerequisite of
      another (e.g. gen_crc32table in lib/Makefile), or always built when
      Kbuild visits the Makefile (e.g. genksyms in scripts/genksyms/Makefile).
      
      The latter is typical in Makefiles under scripts/, which contains host
      programs globally used during the kernel build. To build them, you need
      to add them to both 'hostprogs' and 'always-y'.
      
      This commit adds hostprogs-always-y as a shorthand.
      
      The same applies to user programs. net/bpfilter/Makefile builds
      bpfilter_umh on demand, hence always-y is unneeded. In contrast,
      programs under samples/ are added to both 'userprogs' and 'always-y'
      so they are always built when Kbuild visits the Makefiles.
      
      userprogs-always-y works as a shorthand.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Acked-by: default avatarMiguel Ojeda <miguel.ojeda.sandonis@gmail.com>
      faabed29
    • Masahiro Yamada's avatar
      kbuild: sort hostprogs before passing it to ifneq · 85569d19
      Masahiro Yamada authored
      The conditional:
      
        ifneq ($(hostprogs),)
      
      ... is evaluated to true if $(hostprogs) does not contain any word but
      whitespace characters.
      
        ifneq ($(strip $(hostprogs)),)
      
      ... is a safe way to avoid interpreting whitespace as a non-empty value,
      but I'd rather want to use the side-effect of $(sort ...) to do the
      equivalent.
      
      $(sort ...) is used in scripts/Makefile.host in order to drop duplication
      in $(hostprogs). It is also useful to strip excessive spaces.
      
      Move $(sort ...) before evaluating the ifneq.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      85569d19
    • Masahiro Yamada's avatar
      kbuild: move host .so build rules to scripts/gcc-plugins/Makefile · 42640b13
      Masahiro Yamada authored
      The host shared library rules are currently implemented in
      scripts/Makefile.host, but actually GCC-plugin is the only user of
      them. (The VDSO .so files are built for the target by different
      build rules) Hence, they do not need to be treewide available.
      
      Move all the relevant build rules to scripts/gcc-plugins/Makefile.
      
      I also optimized the build steps so *.so is directly built from .c
      because every upstream plugin is compiled from a single source file.
      
      I am still keeping the multi-file plugin support, which Kees Cook
      mentioned might be needed by out-of-tree plugins.
      (https://lkml.org/lkml/2019/1/11/1107)
      
      If the plugin, foo.so, is compiled from two files foo.c and foo2.c,
      then you can do like follows:
      
        foo-objs := foo.o foo2.o
      
      Single-file plugins do not need the *-objs notation.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Acked-by: default avatarKees Cook <keescook@chromium.org>
      42640b13
    • Alexander A. Klimov's avatar
      kbuild: Replace HTTP links with HTTPS ones · 16a122c7
      Alexander A. Klimov authored
      Rationale:
      Reduces attack surface on kernel devs opening the links for MITM
      as HTTPS traffic is much harder to manipulate.
      
      Deterministic algorithm:
      For each file:
        If not .svg:
          For each line:
            If doesn't contain `\bxmlns\b`:
              For each link, `\bhttp://[^# \t\r\n]*(?:\w|/)`:
      	  If neither `\bgnu\.org/license`, nor `\bmozilla\.org/MPL\b`:
                  If both the HTTP and HTTPS versions
                  return 200 OK and serve the same content:
                    Replace HTTP with HTTPS.
      Signed-off-by: default avatarAlexander A. Klimov <grandmaster@al2klimov.de>
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      16a122c7
    • Masahiro Yamada's avatar
      kbuild: trace functions in subdirectories of lib/ · b16838c6
      Masahiro Yamada authored
      ccflags-remove-$(CONFIG_FUNCTION_TRACER) += $(CC_FLAGS_FTRACE)
      
      exists here in sub-directories of lib/ to keep the behavior of
      commit 2464a609 ("ftrace: do not trace library functions").
      
      Since that commit, not only the objects in lib/ but also the ones in
      the sub-directories are excluded from ftrace (although the commit
      description did not explicitly mention this).
      
      However, most of library functions in sub-directories are not so hot.
      Re-add them to ftrace.
      
      Going forward, only the objects right under lib/ will be excluded.
      
      Cc: Ingo Molnar <mingo@kernel.org>
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Acked-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
      b16838c6
    • Masahiro Yamada's avatar
      kbuild: introduce ccflags-remove-y and asflags-remove-y · 15d5761a
      Masahiro Yamada authored
      CFLAGS_REMOVE_<file>.o filters out flags when compiling a particular
      object, but there is no convenient way to do that for every object in
      a directory.
      
      Add ccflags-remove-y and asflags-remove-y to make it easily.
      
      Use ccflags-remove-y to clean up some Makefiles.
      
      The add/remove order works as follows:
      
       [1] KBUILD_CFLAGS specifies compiler flags used globally
      
       [2] ccflags-y adds compiler flags for all objects in the
           current Makefile
      
       [3] ccflags-remove-y removes compiler flags for all objects in the
           current Makefile (New feature)
      
       [4] CFLAGS_<file> adds compiler flags per file.
      
       [5] CFLAGS_REMOVE_<file> removes compiler flags per file.
      
      Having [3] before [4] allows us to remove flags from most (but not all)
      objects in the current Makefile.
      
      For example, kernel/trace/Makefile removes $(CC_FLAGS_FTRACE)
      from all objects in the directory, then adds it back to
      trace_selftest_dynamic.o and CFLAGS_trace_kprobe_selftest.o
      
      The same applies to lib/livepatch/Makefile.
      
      Please note ccflags-remove-y has no effect to the sub-directories.
      In contrast, the previous notation got rid of compiler flags also from
      all the sub-directories.
      
      The following are not affected because they have no sub-directories:
      
        arch/arm/boot/compressed/
        arch/powerpc/xmon/
        arch/sh/
        kernel/trace/
      
      However, lib/ has several sub-directories.
      
      To keep the behavior, I added ccflags-remove-y to all Makefiles
      in subdirectories of lib/, except the following:
      
        lib/vdso/Makefile        - Kbuild does not descend into this Makefile
        lib/raid/test/Makefile   - This is not used for the kernel build
      
      I think commit 2464a609 ("ftrace: do not trace library functions")
      excluded too much. In the next commit, I will remove ccflags-remove-y
      from the sub-directories of lib/.
      Suggested-by: default avatarSami Tolvanen <samitolvanen@google.com>
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Acked-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
      Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc)
      Acked-by: Brendan Higgins <brendanhiggins@google.com> (KUnit)
      Tested-by: default avatarAnders Roxell <anders.roxell@linaro.org>
      15d5761a
    • Masahiro Yamada's avatar
      kbuild: do not export LDFLAGS_vmlinux · 3ec8a5b3
      Masahiro Yamada authored
      When you clean the build tree for ARCH=arm, you may see the following
      error message from 'nm' command:
      
      $ make -j24 ARCH=arm clean
        CLEAN   arch/arm/crypto
        CLEAN   arch/arm/kernel
        CLEAN   arch/arm/mach-at91
        CLEAN   arch/arm/mach-omap2
        CLEAN   arch/arm/vdso
        CLEAN   certs
        CLEAN   lib
        CLEAN   usr
        CLEAN   net/wireless
        CLEAN   drivers/firmware/efi/libstub
      nm: 'arch/arm/boot/compressed/../../../../vmlinux': No such file
      /bin/sh: 1: arithmetic expression: expecting primary: " "
        CLEAN   arch/arm/boot/compressed
        CLEAN   drivers/scsi
        CLEAN   drivers/tty/vt
        CLEAN   arch/arm/boot
        CLEAN   vmlinux.symvers modules.builtin modules.builtin.modinfo
      
      Even if you rerun the same command, the error message will not be
      shown despite vmlinux is already gone.
      
      To reproduce it, the parallel option -j is needed. Single thread
      cleaning always executes 'archclean', 'vmlinuxclean' in this order,
      so vmlinux still exists when arch/arm/boot/compressed/ is cleaned.
      
      Looking at arch/arm/boot/compressed/Makefile does not help understand
      the reason of the error message. Both KBSS_SZ and LDFLAGS_vmlinux are
      assigned with '=' operator, hence, they are not expanded unless used.
      Obviously, 'make clean' does not use them.
      
      In fact, the root cause exists in the top Makefile:
      
        export LDFLAGS_vmlinux
      
      Since LDFLAGS_vmlinux is an exported variable, LDFLAGS_vmlinux in
      arch/arm/boot/compressed/Makefile is expanded when scripts/Makefile.clean
      has a command to execute. This is why the error message shows up only
      when there exist build artifacts in arch/arm/boot/compressed/.
      
      Adding 'unexport LDFLAGS_vmlinux' to arch/arm/boot/compressed/Makefile
      will fix it as far as ARCH=arm is concerned, but I think the proper fix
      is to get rid of 'export LDFLAGS_vmlinux' from the top Makefile.
      
      LDFLAGS_vmlinux in the top Makefile contains linker flags for the top
      vmlinux. LDFLAGS_vmlinux in arch/arm/boot/compressed/Makefile is for
      arch/arm/boot/compressed/vmlinux. They just happen to have the same
      variable name, but are used for different purposes. Stop shadowing
      LDFLAGS_vmlinux.
      
      This commit passes LDFLAGS_vmlinux to scripts/link-vmlinux.sh via a
      command line parameter instead of via an environment variable. LD and
      KBUILD_LDFLAGS are exported, but I did the same for consistency. Anyway,
      they must be included in cmd_link-vmlinux to allow if_changed to detect
      the changes in LD or KBUILD_LDFLAGS.
      
      The following Makefiles are not affected:
      
        arch/arm/boot/compressed/Makefile
        arch/h8300/boot/compressed/Makefile
        arch/nios2/boot/compressed/Makefile
        arch/parisc/boot/compressed/Makefile
        arch/s390/boot/compressed/Makefile
        arch/sh/boot/compressed/Makefile
        arch/sh/boot/romimage/Makefile
        arch/x86/boot/compressed/Makefile
      
      They use ':=' or '=' to clear the LDFLAGS_vmlinux inherited from the
      top Makefile.
      
      We need to take a closer look at the impact to unicore32 and xtensa.
      
      arch/unicore32/boot/compressed/Makefile only uses '+=' operator for
      LDFLAGS_vmlinux. So, the decompressor previously inherited the linker
      flags from the top Makefile.
      
      However, commit 70fac51f ("unicore32 additional architecture files:
      boot process") was merged before commit 1f2bfbd0 ("kbuild: link of
      vmlinux moved to a script"). So, I rather consider this is a bug fix of
      1f2bfbd0.
      
      arch/xtensa/boot/boot-elf/Makefile is also affected, but this is also
      considered a fix for the same reason. It did not inherit LDFLAGS_vmlinux
      when commit 4bedea94 ("[PATCH] xtensa: Architecture support for
      Tensilica Xtensa Part 2") was merged. I deleted $(LDFLAGS_vmlinux),
      which is now empty.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      Tested-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      3ec8a5b3
    • Masahiro Yamada's avatar
      kbuild: always create directories of targets · cc8a51ca
      Masahiro Yamada authored
      Currently, the directories of objects are automatically created
      only for O= builds.
      
      It should not hurt to cater to this for in-tree builds too.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      cc8a51ca
  10. 08 Aug, 2020 1 commit