1. 12 Mar, 2020 10 commits
  2. 10 Mar, 2020 1 commit
  3. 09 Mar, 2020 3 commits
    • Linus Torvalds's avatar
      Linux 5.6-rc5 · 2c523b34
      Linus Torvalds authored
      2c523b34
    • Linus Torvalds's avatar
      Merge tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc · 62790268
      Linus Torvalds authored
      Pull ARM SoC fixes from Olof Johansson:
       "We've been accruing these for a couple of weeks, so the batch is a bit
        bigger than usual.
      
        Largest delta is due to a led-bl driver that is added -- there was a
        miscommunication before the merge window and the driver didn't make it
        in. Due to this, the platforms needing it regressed. At this point, it
        seemed easier to add the new driver than unwind the changes.
      
        Besides that, there are a handful of various fixes:
      
         - AMD tee memory leak fix
      
         - A handful of fixlets for i.MX SCU communication
      
         - A few maintainers woke up and realized DEBUG_FS had been missing
           for a while, so a few updates of that.
      
        ... and the usual collection of smaller fixes to various platforms"
      
      * tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (37 commits)
        ARM: socfpga_defconfig: Add back DEBUG_FS
        arm64: dts: socfpga: agilex: Fix gmac compatible
        ARM: bcm2835_defconfig: Explicitly restore CONFIG_DEBUG_FS
        arm64: dts: meson: fix gxm-khadas-vim2 wifi
        arm64: dts: meson-sm1-sei610: add missing interrupt-names
        ARM: meson: Drop unneeded select of COMMON_CLK
        ARM: dts: bcm2711: Add pcie0 alias
        ARM: dts: bcm283x: Add missing properties to the PWR LED
        tee: amdtee: fix memory leak in amdtee_open_session()
        ARM: OMAP2+: Fix compile if CONFIG_HAVE_ARM_SMCCC is not set
        arm: dts: dra76x: Fix mmc3 max-frequency
        ARM: dts: dra7: Add "dma-ranges" property to PCIe RC DT nodes
        bus: ti-sysc: Fix 1-wire reset quirk
        ARM: dts: r8a7779: Remove deprecated "renesas, rcar-sata" compatible value
        soc: imx-scu: Align imx sc msg structs to 4
        firmware: imx: Align imx_sc_msg_req_cpu_start to 4
        firmware: imx: scu-pd: Align imx sc msg structs to 4
        firmware: imx: misc: Align imx sc msg structs to 4
        firmware: imx: scu: Ensure sequential TX
        ARM: dts: imx7-colibri: Fix frequency for sd/mmc
        ...
      62790268
    • Linus Torvalds's avatar
      Merge tag 'edac_urgent-2020-03-08' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras · efe582a1
      Linus Torvalds authored
      Pull EDAC fix from Borislav Petkov:
       "Error reporting fix for synopsys_edac: do not overwrite partial
        decoded error message (Sherry Sun)"
      
      * tag 'edac_urgent-2020-03-08' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras:
        EDAC/synopsys: Do not print an error with back-to-back snprintf() calls
      efe582a1
  4. 08 Mar, 2020 5 commits
    • Linus Torvalds's avatar
      Merge tag 'char-misc-5.6-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc · 378fee2e
      Linus Torvalds authored
      Pull char/misc fixes from Greg KH:
       "Here are four small char/misc driver fixes for reported issues for
        5.6-rc5.
      
        These fixes are:
      
         - binder fix for a potential use-after-free problem found (took two
           tries to get it right)
      
         - interconnect core fix
      
         - altera-stapl driver fix
      
        All four of these have been in linux-next for a while with no reported
        issues"
      
      * tag 'char-misc-5.6-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
        binder: prevent UAF for binderfs devices II
        interconnect: Handle memory allocation errors
        altera-stapl: altera_get_note: prevent write beyond end of 'key'
        binder: prevent UAF for binderfs devices
      378fee2e
    • Linus Torvalds's avatar
      Merge tag 'driver-core-5.6-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core · b34e5c13
      Linus Torvalds authored
      Pull driver core and debugfs fixes from Greg KH:
       "Here are four small driver core / debugfs patches for 5.6-rc3:
      
         - debugfs api cleanup now that all debugfs_create_regset32() callers
           have been fixed up. This was waiting until after the -rc1 merge as
           these fixes came in through different trees
      
         - driver core sync state fixes based on reports of minor issues found
           in the feature
      
        All of these have been in linux-next with no reported issues"
      
      * tag 'driver-core-5.6-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
        driver core: Skip unnecessary work when device doesn't have sync_state()
        driver core: Add dev_has_sync_state()
        driver core: Call sync_state() even if supplier has no consumers
        debugfs: remove return value of debugfs_create_regset32()
      b34e5c13
    • Linus Torvalds's avatar
      Merge tag 'tty-5.6-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty · cc432aee
      Linus Torvalds authored
      Pull tty/serial fixes from Greg KH:
       "Here are some small tty/serial fixes for 5.6-rc5
      
        Just some small serial driver fixes, and a vt core fixup, full details
        are:
      
         - vt fixes for issues found by syzbot
      
         - serdev fix for Apple boxes
      
         - fsl_lpuart serial driver fixes
      
         - MAINTAINER update for incorrect serial files
      
         - new device ids for 8250_exar driver
      
         - mvebu-uart fix
      
        All of these have been in linux-next with no reported issues"
      
      * tag 'tty-5.6-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
        tty: serial: fsl_lpuart: free IDs allocated by IDA
        Revert "tty: serial: fsl_lpuart: drop EARLYCON_DECLARE"
        serdev: Fix detection of UART devices on Apple machines.
        MAINTAINERS: Add missed files related to Synopsys DesignWare UART
        serial: 8250_exar: add support for ACCES cards
        tty:serial:mvebu-uart:fix a wrong return
        vt: selection, push sel_lock up
        vt: selection, push console lock down
      cc432aee
    • Linus Torvalds's avatar
      Merge tag 'usb-5.6-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb · fd3f6cc9
      Linus Torvalds authored
      Pull USB/PHY fixes from Greg KH:
       "Here are some small USB and PHY driver fixes for reported issues for
        5.6-rc5.
      
        Included in here are:
      
         - phy driver fixes
      
         - new USB quirks
      
         - USB cdns3 gadget driver fixes
      
         - USB hub core fixes
      
        All of these have been in linux-next with no reported issues"
      
      * tag 'usb-5.6-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
        usb: dwc3: gadget: Update chain bit correctly when using sg list
        usb: core: port: do error out if usb_autopm_get_interface() fails
        usb: core: hub: do error out if usb_autopm_get_interface() fails
        usb: core: hub: fix unhandled return by employing a void function
        usb: storage: Add quirk for Samsung Fit flash
        usb: quirks: add NO_LPM quirk for Logitech Screen Share
        usb: usb251xb: fix regulator probe and error handling
        phy: allwinner: Fix GENMASK misuse
        usb: cdns3: gadget: toggle cycle bit before reset endpoint
        usb: cdns3: gadget: link trb should point to next request
        phy: mapphone-mdm6600: Fix timeouts by adding wake-up handling
        phy: brcm-sata: Correct MDIO operations for 40nm platforms
        phy: ti: gmii-sel: do not fail in case of gmii
        phy: ti: gmii-sel: fix set of copy-paste errors
        phy: core: Fix phy_get() to not return error on link creation failure
        phy: mapphone-mdm6600: Fix write timeouts with shorter GPIO toggle interval
      fd3f6cc9
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma · 61a09258
      Linus Torvalds authored
      Pull rdma fixes from Jason Gunthorpe:
       "Nothing particularly exciting, some small ODP regressions from the mmu
        notifier rework, another bunch of syzkaller fixes, and a bug fix for a
        botched syzkaller fix in the first rc pull request.
      
         - Fix busted syzkaller fix in 'get_new_pps' - this turned out to
           crash on certain HW configurations
      
         - Bug fixes for various missed things in error unwinds
      
         - Add a missing rcu_read_lock annotation in hfi/qib
      
         - Fix two ODP related regressions from the recent mmu notifier
           changes
      
         - Several more syzkaller bugs in siw, RDMA netlink, verbs and iwcm
      
         - Revert an old patch in CMA as it is now shown to not be allocating
           port numbers properly"
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma:
        RDMA/iwcm: Fix iwcm work deallocation
        RDMA/siw: Fix failure handling during device creation
        RDMA/nldev: Fix crash when set a QP to a new counter but QPN is missing
        RDMA/odp: Ensure the mm is still alive before creating an implicit child
        RDMA/core: Fix protection fault in ib_mr_pool_destroy
        IB/mlx5: Fix implicit ODP race
        IB/hfi1, qib: Ensure RCU is locked when accessing list
        RDMA/core: Fix pkey and port assignment in get_new_pps
        RMDA/cm: Fix missing ib_cm_destroy_id() in ib_cm_insert_listen()
        RDMA/rw: Fix error flow during RDMA context initialization
        RDMA/core: Fix use of logical OR in get_new_pps
        Revert "RDMA/cma: Simplify rdma_resolve_addr() error flow"
      61a09258
  5. 07 Mar, 2020 21 commits
    • Linus Torvalds's avatar
      Merge tag 'io_uring-5.6-2020-03-07' of git://git.kernel.dk/linux-block · c2003765
      Linus Torvalds authored
      Pull io_uring fixes from Jens Axboe:
       "Here are a few io_uring fixes that should go into this release. This
        contains:
      
         - Removal of (now) unused io_wq_flush() and associated flag (Pavel)
      
         - Fix cancelation lockup with linked timeouts (Pavel)
      
         - Fix for potential use-after-free when freeing percpu ref for fixed
           file sets
      
         - io-wq cancelation fixups (Pavel)"
      
      * tag 'io_uring-5.6-2020-03-07' of git://git.kernel.dk/linux-block:
        io_uring: fix lockup with timeouts
        io_uring: free fixed_file_data after RCU grace period
        io-wq: remove io_wq_flush and IO_WQ_WORK_INTERNAL
        io-wq: fix IO_WQ_WORK_NO_CANCEL cancellation
      c2003765
    • Linus Torvalds's avatar
      Merge tag 'block-5.6-2020-03-07' of git://git.kernel.dk/linux-block · 5dfcc139
      Linus Torvalds authored
      Pull block fixes from Jens Axboe:
       "Here are a few fixes that should go into this release. This contains:
      
         - Revert of a bad bcache patch from this merge window
      
         - Removed unused function (Daniel)
      
         - Fixup for the blktrace fix from Jan from this release (Cengiz)
      
         - Fix of deeper level bfqq overwrite in BFQ (Carlo)"
      
      * tag 'block-5.6-2020-03-07' of git://git.kernel.dk/linux-block:
        block, bfq: fix overwrite of bfq_group pointer in bfq_find_set_group()
        blktrace: fix dereference after null check
        Revert "bcache: ignore pending signals when creating gc and allocator thread"
        block: Remove used kblockd_schedule_work_on()
      5dfcc139
    • Linus Torvalds's avatar
      Merge tag 'media/v5.6-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media · 6f784a31
      Linus Torvalds authored
      Pull media fixes from Mauro Carvalho Chehab:
      
       - a fix for the media controller links in both hantro driver and in
         v4l2-mem2mem core
      
       - some fixes for the pulse8-cec driver
      
       - vicodec: handle alpha channel for RGB32 formats, as it may be used
      
       - mc-entity.c: fix handling of pad flags
      
      * tag 'media/v5.6-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
        media: hantro: Fix broken media controller links
        media: mc-entity.c: use & to check pad flags, not ==
        media: v4l2-mem2mem.c: fix broken links
        media: vicodec: process all 4 components for RGB32 formats
        media: pulse8-cec: close serio in disconnect, not adap_free
        media: pulse8-cec: INIT_DELAYED_WORK was called too late
      6f784a31
    • Pavel Begunkov's avatar
      io_uring: fix lockup with timeouts · f0e20b89
      Pavel Begunkov authored
      There is a recipe to deadlock the kernel: submit a timeout sqe with a
      linked_timeout (e.g.  test_single_link_timeout_ception() from liburing),
      and SIGKILL the process.
      
      Then, io_kill_timeouts() takes @ctx->completion_lock, but the timeout
      isn't flagged with REQ_F_COMP_LOCKED, and will try to double grab it
      during io_put_free() to cancel the linked timeout. Probably, the same
      can happen with another io_kill_timeout() call site, that is
      io_commit_cqring().
      Signed-off-by: default avatarPavel Begunkov <asml.silence@gmail.com>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      f0e20b89
    • Linus Torvalds's avatar
      Merge tag 's390-5.6-5' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux · 9d588f63
      Linus Torvalds authored
      Pull s390 fixes from Vasily Gorbik:
      
       - Fix panic in gup_fast on large pud by providing an implementation of
         pud_write. This has been overlooked during migration to common gup
         code.
      
       - Fix unexpected write combining on PCI stores.
      
      * tag 's390-5.6-5' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
        s390/pci: Fix unexpected write combine on resource
        s390/mm: fix panic in gup_fast on large pud
      9d588f63
    • Linus Torvalds's avatar
      Merge tag 'powerpc-5.6-4' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux · 5236647a
      Linus Torvalds authored
      Pull powerpc fixes from Michael Ellerman:
       "Some more powerpc fixes for 5.6:
      
         - One fix for a recent regression to our breakpoint/watchpoint code.
      
         - Another fix for our KUAP support, this time a missing annotation in
           a rarely used path in signal handling.
      
         - A fix for our handling of a CPU feature that effects the PMU, when
           booting guests in some configurations.
      
         - A minor fix to our linker script to explicitly include the .BTF
           section.
      
        Thanks to: Christophe Leroy, Desnes A. Nunes do Rosario, Leonardo
        Bras, Naveen N. Rao, Ravi Bangoria, Stefan Berger"
      
      * tag 'powerpc-5.6-4' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
        powerpc/mm: Fix missing KUAP disable in flush_coherent_icache()
        powerpc: fix hardware PMU exception bug on PowerVM compatibility mode systems
        powerpc: Include .BTF section
        powerpc/watchpoint: Don't call dar_within_range() for Book3S
      5236647a
    • Linus Torvalds's avatar
      Merge tag 'for-linus-5.6b-rc5-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip · cbee7c8b
      Linus Torvalds authored
      Pull xen fixes from Juergen Gross:
       "Four fixes and a small cleanup patch:
      
         - two fixes by Dongli Zhang fixing races in the xenbus driver
      
         - two fixes by me fixing issues introduced in 5.6
      
         - a small cleanup by Gustavo Silva replacing a zero-length array with
           a flexible-array"
      
      * tag 'for-linus-5.6b-rc5-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
        xen/blkfront: fix ring info addressing
        xen/xenbus: fix locking
        xenbus: req->err should be updated before req->state
        xenbus: req->body should be updated before req->state
        xen: Replace zero-length array with flexible-array member
      cbee7c8b
    • Linus Torvalds's avatar
      Merge tag 'for-linus-2020-03-07' of gitolite.kernel.org:pub/scm/linux/kernel/git/brauner/linux · fa883d6a
      Linus Torvalds authored
      Pull thread fixes from Christian Brauner:
       "Here are a few hopefully uncontroversial fixes:
      
         - Use RCU_INIT_POINTER() when initializing rcu protected members in
           task_struct to fix sparse warnings.
      
         - Add pidfd_fdinfo_test binary to .gitignore file"
      
      * tag 'for-linus-2020-03-07' of gitolite.kernel.org:pub/scm/linux/kernel/git/brauner/linux:
        selftests: pidfd: Add pidfd_fdinfo_test in .gitignore
        exit: Fix Sparse errors and warnings
        fork: Use RCU_INIT_POINTER() instead of rcu_access_pointer()
      fa883d6a
    • Linus Torvalds's avatar
      Merge tag 'sound-5.6-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 676fc8de
      Linus Torvalds authored
      Pull sound fixes from Takashi Iwai:
       "The regular "bump-in-the-middle" updates, containing mostly ASoC-
        related fixes at this time. All changes are reasonably small.
      
        A few entries are for ASoC and ALSA core parts (DAPM, PCM, topology)
        for followups of the recent changes and potential buffer overflow by
        snprintf(), while the rest are (both new and old) device-specific
        fixes for Intel, meson, tas2562, rt1015, as well as the usual HD-audio
        quirks"
      
      * tag 'sound-5.6-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (25 commits)
        ALSA: sgio2audio: Remove usage of dropped hw_params/hw_free functions
        ALSA: hda/realtek - Enable the headset of ASUS B9450FA with ALC294
        ALSA: hda/realtek - Fix silent output on Gigabyte X570 Aorus Master
        ALSA: hda/realtek - Add Headset Button supported for ThinkPad X1
        ALSA: hda/realtek - Add Headset Mic supported
        ASoC: wm8741: Fix typo in Kconfig prompt
        ASoC: stm32: sai: manage rebind issue
        ASoC: SOF: Fix snd_sof_ipc_stream_posn()
        ASoC: rt1015: modify pre-divider for sysclk
        ASoC: rt1015: add operation callback function for rt1015_dai[]
        ASoC: soc-component: tidyup snd_soc_pcm_component_sync_stop()
        ASoC: dapm: Correct DAPM handling of active widgets during shutdown
        ASoC: tas2562: Fix sample rate error message
        ASoC: Intel: Skylake: Fix available clock counter incrementation
        ASoC: soc-pcm/soc-compress: don't use snd_soc_dapm_stream_stop()
        ASoC: meson: g12a: add tohdmitx reset
        ASoC: pcm512x: Fix unbalanced regulator enable call in probe error path
        ASoC: soc-core: fix for_rtd_codec_dai_rollback() macro
        ASoC: topology: Fix memleak in soc_tplg_manifest_load()
        ASoC: topology: Fix memleak in soc_tplg_link_elems_load()
        ...
      676fc8de
    • Serge Semin's avatar
      tty: mips_ejtag_fdc: Mark expected switch fall-through · d24e163a
      Serge Semin authored
      Mark mips_ejtag_fdc_encode() methods switch-case-4 as expecting to
      fall through.
      
      This patch fixes the following warning:
      
      drivers/tty/mips_ejtag_fdc.c: In function ‘mips_ejtag_fdc_encode’:
      drivers/tty/mips_ejtag_fdc.c:245:13: warning: this statement may fall through [-Wimplicit-fallthrough=]
         word.word &= 0x00ffffff;
         ~~~~~~~~~~^~~~~~~~~~~~~
      drivers/tty/mips_ejtag_fdc.c:246:2: note: here
        case 3:
        ^~~~
      Signed-off-by: default avatarSerge Semin <Sergey.Semin@baikalelectronics.ru>
      Signed-off-by: default avatarAlexey Malahov <Alexey.Malahov@baikalelectronics.ru>
      Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
      Cc: Paul Burton <paulburton@kernel.org>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Link: https://lore.kernel.org/r/20200306124913.151A68030792@mail.baikalelectronics.ruSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d24e163a
    • Dmitry Safonov's avatar
      serial/sysrq: Add MAGIC_SYSRQ_SERIAL_SEQUENCE · 68af4317
      Dmitry Safonov authored
      Many embedded boards have a disconnected TTL level serial which can
      generate some garbage that can lead to spurious false sysrq detects.
      
      Currently, sysrq can be either completely disabled for serial console
      or always disabled (with CONFIG_MAGIC_SYSRQ_SERIAL), since
      commit 732dbf3a ("serial: do not accept sysrq characters via serial port")
      
      At Arista, we have such boards that can generate BREAK and random
      garbage. While disabling sysrq for serial console would solve
      the problem with spurious false sysrq triggers, it's also desirable
      to have a way to enable sysrq back.
      
      As a measure of balance between on and off options, add
      MAGIC_SYSRQ_SERIAL_SEQUENCE which is a string sequence that can enable
      sysrq if it follows BREAK on a serial line. The longer the string - the
      less likely it may be in the garbage.
      
      Having the way to enable sysrq was beneficial to debug lockups with
      a manual investigation in field and on the other side preventing false
      sysrq detections.
      Based-on-patch-by: default avatarVasiliy Khoruzhick <vasilykh@arista.com>
      Signed-off-by: default avatarDmitry Safonov <dima@arista.com>
      Link: https://lore.kernel.org/r/20200302175135.269397-3-dima@arista.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      68af4317
    • Dmitry Safonov's avatar
      sysctl/sysrq: Remove __sysrq_enabled copy · eaee4172
      Dmitry Safonov authored
      Many embedded boards have a disconnected TTL level serial which can
      generate some garbage that can lead to spurious false sysrq detects.
      
      Currently, sysrq can be either completely disabled for serial console
      or always disabled (with CONFIG_MAGIC_SYSRQ_SERIAL), since
      commit 732dbf3a ("serial: do not accept sysrq characters via serial port")
      
      At Arista, we have such boards that can generate BREAK and random
      garbage. While disabling sysrq for serial console would solve
      the problem with spurious false sysrq triggers, it's also desirable
      to have a way to enable sysrq back.
      
      Having the way to enable sysrq was beneficial to debug lockups with
      a manual investigation in field and on the other side preventing false
      sysrq detections.
      
      As a preparation to add sysrq_toggle_support() call into uart,
      remove a private copy of sysrq_enabled from sysctl - it should reflect
      the actual status of sysrq.
      
      Furthermore, the private copy isn't correct already in case
      sysrq_always_enabled is true. So, remove __sysrq_enabled and use a
      getter-helper sysrq_mask() to check sysrq_key_op enabled status.
      
      Cc: Iurii Zaikin <yzaikin@google.com>
      Cc: Jiri Slaby <jslaby@suse.com>
      Cc: Luis Chamberlain <mcgrof@kernel.org>
      Cc: Kees Cook <keescook@chromium.org>
      Cc: linux-fsdevel@vger.kernel.org
      Signed-off-by: default avatarDmitry Safonov <dima@arista.com>
      Link: https://lore.kernel.org/r/20200302175135.269397-2-dima@arista.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      eaee4172
    • Lukas Wunner's avatar
      serial: 8250: Support console on software emulated rs485 ports · 7f980307
      Lukas Wunner authored
      Commit e490c914 ("tty: Add software emulated RS485 support for 8250")
      introduced support to use RTS as an rs485 Transmit Enable signal if data
      is transmitted through the tty layer.
      
      Console messages bypass the tty layer and instead are emitted via
      serial8250_console_write().  Amend that function to drive RTS as well,
      allowing for a console on rs485 ports.
      
      Note that serial8250_console_write() may be called concurrently to the
      tty layer accessing the port.  The two protect their accesses with the
      port lock, but serial8250_console_write() may find RTS still being
      asserted by the tty layer, in which case it shouldn't be deasserted
      after the console message has been printed.  Recognize such situations
      by checking the em485->tx_stopped flag.
      
      If a delay_rts_before_send or delay_rts_after_send has been specified,
      serial8250_console_write() busy-waits for its duration.  Optimizations
      for those wait times are conceivable:  E.g. if RTS is already asserted,
      we could check whether em485->start_tx_timer is active and wait only
      for the remaining expire time.  But this would require calling into
      the hrtimer infrastructure, which involves acquiring locks and
      potentially reprogramming timer hardware.  Such operations seem too
      risky in the context of console printout, which needs to work even when
      the kernel has crashed and emits a BUG splat.  So I've gone with a
      simplistic solution which just always waits for the full delay.
      Signed-off-by: default avatarLukas Wunner <lukas@wunner.de>
      Cc: Matwey V. Kornilov <matwey@sai.msu.ru>
      Link: https://lore.kernel.org/r/65edffce4670a19e598015c03cbe46f1ffd93e43.1582895077.git.lukas@wunner.deSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      7f980307
    • Lukas Wunner's avatar
      serial: 8250_bcm2835aux: Support rs485 software emulation · f93bf758
      Lukas Wunner authored
      Amend 8250_bcm2835aux.c to support rs485 as introduced for 8250_omap.c
      by commit e490c914 ("tty: Add software emulated RS485 support for
      8250").
      
      The bcm2835aux differs from omap chips by inverting the meaning of RTS
      in the MCR register:  If the bit is clear, RTS is high.  With omap, it's
      apparently the other way round.
      
      Moreover, omap achieves half-duplex mode by disabling the UART_IER_RDI
      interrupt and clearing the RX FIFO when TX stops.  This approach doesn't
      work on bcm2835aux because the UART_LSR_DR bit is set even when
      UART_IER_RDI is disabled.  Consequently, serial8250_handle_irq() invokes
      serial8250_rx_chars() to empty the FIFO and characters are received even
      though the user requested half-duplex.  Solve by disabling the receiver
      using the non-standard CNTL register.
      
      Cache that register in the driver's private data for performance.  Set
      the private data pointer before calling serial8250_register_8250_port()
      to prevent a null pointer deref in case one of the rs485 callbacks is
      invoked immediately after port registration.
      Signed-off-by: default avatarLukas Wunner <lukas@wunner.de>
      Cc: Matwey V. Kornilov <matwey@sai.msu.ru>
      Link: https://lore.kernel.org/r/dd86460e20a8f979b7272a0bde73640312b902b1.1582895077.git.lukas@wunner.deSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f93bf758
    • Lukas Wunner's avatar
      serial: 8250: Generalize rs485 software emulation · 058bc104
      Lukas Wunner authored
      Commit e490c914 ("tty: Add software emulated RS485 support for 8250")
      introduced support to use RTS as an rs485 Transmit Enable signal.
      So far the only drivers taking advantage of it are 8250_omap.c and
      8250_of.c.
      
      We're about to make use of the feature in 8250_bcm2835aux.c as well.
      The bcm2835aux differs from omap chips by inverting the meaning of RTS
      in the MCR register.  Moreover, omap achieves half-duplex mode by
      disabling the RX interrupt and clearing the RX FIFO when TX stops.
      The bcm2835aux requires disabling the receiver instead.
      
      Support these behavioral differences by generalizing the rs485 emulation:
      Introduce ->rs485_start_tx() and ->rs485_stop_tx() callbacks in struct
      uart_8250_port, provide generic implementations containing the existing
      code and use them as callbacks in 8250_omap.c and 8250_of.c.
      
      start_tx_rs485() is idempotent in that it recognizes whether RTS is
      already asserted.  Achieve the same by introducing a tx_stopped flag in
      struct uart_8250_em485.  This may even perform a little better on arches
      where memory access is faster than mmio access.
      Signed-off-by: default avatarLukas Wunner <lukas@wunner.de>
      Cc: Matwey V. Kornilov <matwey@sai.msu.ru>
      Link: https://lore.kernel.org/r/5ac0464ae4414708e723a1e0d52b0c1b2bd41b9b.1582895077.git.lukas@wunner.deSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      058bc104
    • Lukas Wunner's avatar
      serial: 8250: Deduplicate rs485 active_timer assignment · 41a70b7f
      Lukas Wunner authored
      When rs485 transmission over an 8250 port stops, __stop_tx() assigns
      active_timer = NULL before calling __stop_tx_rs485().
      
      That function in turn either assigns active_timer = stop_tx_timer and
      rearms the timer (in case a delay_rts_after_send needs to be observed)
      or directly calls __do_stop_tx_rs485().
      
      Move the assignment active_timer = NULL to __stop_tx_rs485() into the
      branch which directly calls __do_stop_tx_rs485(), thereby avoiding a
      duplicate assignment and simplifying the code.
      Signed-off-by: default avatarLukas Wunner <lukas@wunner.de>
      Cc: Matwey V. Kornilov <matwey@sai.msu.ru>
      Link: https://lore.kernel.org/r/bca638405550eaf92f0c6060b553b687f35885e0.1582895077.git.lukas@wunner.deSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      41a70b7f
    • Lukas Wunner's avatar
      serial: 8250: Sanitize rs485 config harder · 6d3e54e1
      Lukas Wunner authored
      Amend the generic ->rs485_config() callback to sanitize RTS polarity and
      zero-fill the padding (in addition to the existing sanitization of the
      RTS delays).
      Signed-off-by: default avatarLukas Wunner <lukas@wunner.de>
      Cc: Matwey V. Kornilov <matwey@sai.msu.ru>
      Link: https://lore.kernel.org/r/ff833721bc372d38678f289eb2a44dbf016d5203.1582895077.git.lukas@wunner.deSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      6d3e54e1
    • Lukas Wunner's avatar
      serial: 8250: Deduplicate ->rs485_config() callback · 283e096f
      Lukas Wunner authored
      Commit e490c914 ("tty: Add software emulated RS485 support for 8250")
      introduced support to use RTS as an rs485 Transmit Enable signal.
      Drivers opt in to the feature by calling serial8250_em485_init() from
      their ->rs485_config() callback.
      
      So far there are two drivers doing that, 8250_omap.c and 8250_of.c.
      Both use an identical callback.  We're about to add a third user of that
      callback, therefore deduplicate it and move it to 8250_port.c.
      
      Drivers now opt in to rs485 software emulation by assigning the generic
      serial8250_rs485_config() callback introduced herein to their
      .rs485_config struct member.  This change allows unexporting
      serial8250_em485_init() and declaring it static.
      Signed-off-by: default avatarLukas Wunner <lukas@wunner.de>
      Cc: Matwey V. Kornilov <matwey@sai.msu.ru>
      Cc: Heiko Schocher <hs@denx.de>
      Link: https://lore.kernel.org/r/fcef63642dc4eae41ae7842d23747b2bf5d40285.1582895077.git.lukas@wunner.deSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      283e096f
    • Lukas Wunner's avatar
      serial: 8250: Support rs485 devicetree properties · fe7f0fa4
      Lukas Wunner authored
      Retrieve rs485 devicetree properties on registration of 8250 ports in
      case they are attached to an rs485 transceiver.
      
      If the property "linux,rs485-enabled-at-boot-time" is present, invoke
      the ->rs485_config() callback to immediately deassert RTS, thereby
      ceasing control of the bus.
      Signed-off-by: default avatarLukas Wunner <lukas@wunner.de>
      Cc: Giulio Benetti <giulio.benetti@micronovasrl.com>
      Cc: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
      Link: https://lore.kernel.org/r/5908ea89b7f9da54872d6634b606d83db032297a.1582895077.git.lukas@wunner.deSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      fe7f0fa4
    • Lukas Wunner's avatar
      serial: 8250: Don't touch RTS modem control while in rs485 mode · f45709df
      Lukas Wunner authored
      serial8250_do_set_mctrl() currently allows modifying the RTS modem
      control line even when RTS is used as an rs485 Transmit Enable signal.
      It is thus possible for user space to interfere with rs485 communication
      by invoking a TIOCMSET ioctl().
      
      Ignore such change requests and retain the current RTS polarity when in
      rs485 mode.  Note that serial8250_set_mctrl() is always called with
      port->lock held, so there's no risk that RTS is changed concurrently.
      Signed-off-by: default avatarLukas Wunner <lukas@wunner.de>
      Cc: Matwey V. Kornilov <matwey@sai.msu.ru>
      Link: https://lore.kernel.org/r/b1ce34ca9bc4d7bdc6e9852fcf30b1f4e37c8a80.1582895077.git.lukas@wunner.deSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f45709df
    • Michael Walle's avatar
      serial: earlycon: prefer EARLYCON_DECLARE() variant · f8c3686c
      Michael Walle authored
      If a driver exposes early consoles with EARLYCON_DECLARE() and
      OF_EARLYCON_DECLARE(), pefer the non-OF variant if the user specifies it
      by
        earlycon=<driver>,<options>
      
      The rationale behind this is that some drivers register multiple setup
      functions under the same driver name. Eg.
      
      OF_EARLYCON_DECLARE(lpuart, "fsl,vf610-lpuart", lpuart_early_console_setup);
      OF_EARLYCON_DECLARE(lpuart32, "fsl,ls1021a-lpuart", lpuart32_early_console_setup);
      OF_EARLYCON_DECLARE(lpuart32, "fsl,imx7ulp-lpuart", lpuart32_imx_early_console_setup);
      EARLYCON_DECLARE(lpuart, lpuart_early_console_setup);
      EARLYCON_DECLARE(lpuart32, lpuart32_early_console_setup);
      
      It depends on the order of the entries which console_setup() actually
      gets called. To make things worse, I guess it also depends on the
      compiler how these are ordered. Thus always prefer the EARLYCON_DECLARE()
      ones.
      Signed-off-by: default avatarMichael Walle <michael@walle.cc>
      Link: https://lore.kernel.org/r/20200220174607.24285-1-michael@walle.ccSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f8c3686c