15 Dec, 2020

1 commit

  • Disable interrupts when using DCC fifo to prevent deadlock if interrupt
    occurs that causes a console write.

    Bug: 175415911
    Fixes: 61d87acb9318 ("FROMLIST: hvc_dcc: bind driver to core0 for reads
    and writes")
    Change-Id: I645bafef1d8bc58ee93b086b46d822c046aece2d
    Signed-off-by: Elliot Berman

    Elliot Berman
     

26 Oct, 2020

1 commit


09 Oct, 2020

2 commits


02 Oct, 2020

1 commit

  • Some debuggers, such as Trace32 from Lauterbach GmbH, do not handle
    reads/writes from/to DCC on secondary cores. Each core has its
    own DCC device registers, so when a core reads or writes from/to DCC,
    it only accesses its own DCC device. Since kernel code can run on
    any core, every time the kernel wants to write to the console, it
    might write to a different DCC.

    In SMP mode, Trace32 only uses the DCC on core 0. In AMP mode, it
    creates multiple windows, and each window shows the DCC output
    only from that core's DCC. The result is that console output is
    either lost or scattered across windows.

    Selecting this option will enable code that serializes all console
    input and output to core 0. The DCC driver will create input and
    output FIFOs that all cores will use. Reads and writes from/to DCC
    are handled by a workqueue that runs only core 0.

    Bug: 169129589
    Link: https://lore.kernel.org/lkml/1435344756-20901-1-git-send-email-timur@codeaurora.org/
    Signed-off-by: Shanker Donthineni
    Acked-by: Adam Wallis
    Signed-off-by: Timur Tabi
    [eberman@codeaurora.org: Resolve trivial merge conflicts]
    Signed-off-by: Elliot Berman
    Change-Id: Ie5e3f25ad74a0f07edb862b8258ad875ea308d30

    Timur Tabi
     

27 Sep, 2020

1 commit

  • aarch64-linux-gnu-ld: drivers/tty/hvc/hvc_dcc.o: in function `dcc_early_write':
    hvc_dcc.c:(.text+0x164): undefined reference to `uart_console_write'

    The driver uses the uart_console_write(), but SERIAL_CORE_CONSOLE is not
    selected, so uart_console_write is not defined, then we get the error.
    Fix this by selecting SERIAL_CORE_CONSOLE.

    Fixes: d1a1af2cdf19 ("hvc: dcc: Add earlycon support")
    Reported-by: Hulk Robot
    Signed-off-by: Yang Yingliang
    Link: https://lore.kernel.org/r/20200919063535.2809707-1-yangyingliang@huawei.com
    Signed-off-by: Greg Kroah-Hartman

    Yang Yingliang
     

05 Sep, 2020

1 commit

  • The code currently NULLs tty->driver_data in hvcs_close() with the
    intent of informing the next call to hvcs_open() that device needs to be
    reconfigured. However, when hvcs_cleanup() is called we copy hvcsd from
    tty->driver_data which was previoulsy NULLed by hvcs_close() and our
    call to tty_port_put(&hvcsd->port) doesn't actually do anything since
    &hvcsd->port ends up translating to NULL by chance. This has the side
    effect that when hvcs_remove() is called we have one too many port
    references preventing hvcs_destuct_port() from ever being called. This
    also prevents us from reusing the /dev/hvcsX node in a future
    hvcs_probe() and we can eventually run out of /dev/hvcsX devices.

    Fix this by waiting to NULL tty->driver_data in hvcs_cleanup().

    Fixes: 27bf7c43a19c ("TTY: hvcs, add tty install")
    Signed-off-by: Tyrel Datwyler
    Link: https://lore.kernel.org/r/20200820234643.70412-1-tyreld@linux.ibm.com
    Signed-off-by: Greg Kroah-Hartman

    Tyrel Datwyler
     

24 Aug, 2020

1 commit

  • Replace the existing /* fall through */ comments and its variants with
    the new pseudo-keyword macro fallthrough[1]. Also, remove unnecessary
    fall-through markings when it is the case.

    [1] https://www.kernel.org/doc/html/v5.7/process/deprecated.html?highlight=fallthrough#implicit-switch-case-fall-through

    Signed-off-by: Gustavo A. R. Silva

    Gustavo A. R. Silva
     

25 Jun, 2020

2 commits

  • Use the 'common' foo_console_setup() naming scheme. There are 71
    foo_console_setup() callbacks and only one foo_setup_console().

    Signed-off-by: Sergey Senozhatsky
    Cc: Andy Shevchenko
    Cc: Steven Rostedt
    Cc: Greg Kroah-Hartman
    Cc: Jiri Slaby
    Signed-off-by: Petr Mladek
    Link: https://lore.kernel.org/r/20200619172240.754910-1-sergey.senozhatsky@gmail.com

    Sergey Senozhatsky
     
  • For unifying console ->setup() handling, which is poorly documented,
    return error code, rather than non-zero arbitrary number.

    Signed-off-by: Andy Shevchenko
    Reviewed-by: Petr Mladek
    Signed-off-by: Petr Mladek
    Link: https://lore.kernel.org/r/20200618164751.56828-5-andriy.shevchenko@linux.intel.com

    Andy Shevchenko
     

27 May, 2020

1 commit

  • hvc_open sets tty->driver_data to NULL when open fails at some point.
    Typically, the failure happens in hp->ops->notifier_add(). If there is
    a racing process which tries to open such mangled tty, which was not
    closed yet, the process will crash in hvc_open as tty->driver_data is
    NULL.

    All this happens because close wants to know whether open failed or not.
    But ->open should not NULL this and other tty fields for ->close to be
    happy. ->open should call tty_port_set_initialized(true) and close
    should check by tty_port_initialized() instead. So do this properly in
    this driver.

    So this patch removes these from ->open:
    * tty_port_tty_set(&hp->port, NULL). This happens on last close.
    * tty->driver_data = NULL. Dtto.
    * tty_port_put(&hp->port). This happens in shutdown and until now, this
    must have been causing a reference underflow, if I am not missing
    something.

    Signed-off-by: Jiri Slaby
    Cc: stable
    Reported-and-tested-by: Raghavendra
    Link: https://lore.kernel.org/r/20200526145632.13879-1-jslaby@suse.cz
    Signed-off-by: Greg Kroah-Hartman

    Jiri Slaby
     

12 May, 2020

1 commit

  • This reverts commit e2bd1dcbe1aa34ff5570b3427c530e4332ecf0fe.

    In discussion on the mailing list, it has been determined that this is
    not the correct type of fix for this issue. Revert it so that we can do
    this correctly.

    Reported-by: Jiri Slaby
    Reported-by: Greg Kroah-Hartman
    Link: https://lore.kernel.org/r/20200428032601.22127-1-rananta@codeaurora.org
    Cc: Raghavendra Rao Ananta
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

11 May, 2020

1 commit


30 Apr, 2020

1 commit

  • Pull RISC-V fixes from Palmer Dabbelt:
    "A handful of fixes.

    Specifically:

    - fix linker argument to allow linking with lld

    - build fix for configurations without a frame pointer

    - a handful of build fixes related the SBI 0.1 vs 0.2 split

    - remove STRICT_KERNEL_RWX for !MMU, which isn't useful"

    * tag 'riscv-for-linus-5.7-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux:
    riscv: select ARCH_HAS_STRICT_KERNEL_RWX only if MMU
    riscv: sbi: Fix undefined reference to sbi_shutdown
    tty: riscv: Using RISCV_SBI_V01 instead of RISCV_SBI
    riscv: sbi: Correct sbi_shutdown() and sbi_clear_ipi() export
    riscv: fix vdso build with lld
    RISC-V: stacktrace: Declare sp_in_global outside ifdef

    Linus Torvalds
     

28 Apr, 2020

1 commit

  • Potentially, hvc_open() can be called in parallel when two tasks calls
    open() on /dev/hvcX. In such a scenario, if the hp->ops->notifier_add()
    callback in the function fails, where it sets the tty->driver_data to
    NULL, the parallel hvc_open() can see this NULL and cause a memory abort.
    Hence, serialize hvc_open and check if tty->private_data is NULL before
    proceeding ahead.

    The issue can be easily reproduced by launching two tasks simultaneously
    that does nothing but open() and close() on /dev/hvcX.
    For example:
    $ ./simple_open_close /dev/hvc0 & ./simple_open_close /dev/hvc0 &

    Signed-off-by: Raghavendra Rao Ananta
    Link: https://lore.kernel.org/r/20200428032601.22127-1-rananta@codeaurora.org
    Signed-off-by: Greg Kroah-Hartman

    Raghavendra Rao Ananta
     

27 Apr, 2020

1 commit


23 Apr, 2020

2 commits

  • If there is a lot(more then 16) of virtio-console devices
    or virtio_console module is reloaded
    - buffers 'vtermnos' and 'cons_ops' are overflowed.
    In older kernels it overruns spinlock which leads to kernel freezing:
    https://bugzilla.redhat.com/show_bug.cgi?id=1786239

    To reproduce the issue, you can try simple script that
    loads/unloads module. Something like this:
    while [ 1 ]
    do
    modprobe virtio_console
    sleep 2
    modprobe -r virtio_console
    sleep 2
    done

    Description of problem:
    Guest get 'Call Trace' when loading module "virtio_console"
    and unloading it frequently - clearly reproduced on kernel-4.18.0:

    [ 81.498208] ------------[ cut here ]------------
    [ 81.499263] pvqspinlock: lock 0xffffffff92080020 has corrupted value 0xc0774ca0!
    [ 81.501000] WARNING: CPU: 0 PID: 785 at kernel/locking/qspinlock_paravirt.h:500 __pv_queued_spin_unlock_slowpath+0xc0/0xd0
    [ 81.503173] Modules linked in: virtio_console fuse xt_CHECKSUM ipt_MASQUERADE xt_conntrack ipt_REJECT nft_counter nf_nat_tftp nft_objref nf_conntrack_tftp tun bridge stp llc nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_ct nf_tables_set nft_chain_nat_ipv6 nf_conntrack_ipv6 nf_defrag_ipv6 nf_nat_ipv6 nft_chain_route_ipv6 nft_chain_nat_ipv4 nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack nft_chain_route_ipv4 ip6_tables nft_compat ip_set nf_tables nfnetlink sunrpc bochs_drm drm_vram_helper ttm drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm i2c_piix4 pcspkr crct10dif_pclmul crc32_pclmul joydev ghash_clmulni_intel ip_tables xfs libcrc32c sd_mod sg ata_generic ata_piix virtio_net libata crc32c_intel net_failover failover serio_raw virtio_scsi dm_mirror dm_region_hash dm_log dm_mod [last unloaded: virtio_console]
    [ 81.517019] CPU: 0 PID: 785 Comm: kworker/0:2 Kdump: loaded Not tainted 4.18.0-167.el8.x86_64 #1
    [ 81.518639] Hardware name: Red Hat KVM, BIOS 1.12.0-5.scrmod+el8.2.0+5159+d8aa4d83 04/01/2014
    [ 81.520205] Workqueue: events control_work_handler [virtio_console]
    [ 81.521354] RIP: 0010:__pv_queued_spin_unlock_slowpath+0xc0/0xd0
    [ 81.522450] Code: 07 00 48 63 7a 10 e8 bf 64 f5 ff 66 90 c3 8b 05 e6 cf d6 01 85 c0 74 01 c3 8b 17 48 89 fe 48 c7 c7 38 4b 29 91 e8 3a 6c fa ff 0b c3 0f 0b 90 90 90 90 90 90 90 90 90 90 90 0f 1f 44 00 00 48
    [ 81.525830] RSP: 0018:ffffb51a01ffbd70 EFLAGS: 00010282
    [ 81.526798] RAX: 0000000000000000 RBX: 0000000000000010 RCX: 0000000000000000
    [ 81.528110] RDX: ffff9e66f1826480 RSI: ffff9e66f1816a08 RDI: ffff9e66f1816a08
    [ 81.529437] RBP: ffffffff9153ff10 R08: 000000000000026c R09: 0000000000000053
    [ 81.530732] R10: 0000000000000000 R11: ffffb51a01ffbc18 R12: ffff9e66cd682200
    [ 81.532133] R13: ffffffff9153ff10 R14: ffff9e6685569500 R15: ffff9e66cd682000
    [ 81.533442] FS: 0000000000000000(0000) GS:ffff9e66f1800000(0000) knlGS:0000000000000000
    [ 81.534914] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 81.535971] CR2: 00005624c55b14d0 CR3: 00000003a023c000 CR4: 00000000003406f0
    [ 81.537283] Call Trace:
    [ 81.537763] __raw_callee_save___pv_queued_spin_unlock_slowpath+0x11/0x20
    [ 81.539011] .slowpath+0x9/0xe
    [ 81.539585] hvc_alloc+0x25e/0x300
    [ 81.540237] init_port_console+0x28/0x100 [virtio_console]
    [ 81.541251] handle_control_message.constprop.27+0x1c4/0x310 [virtio_console]
    [ 81.542546] control_work_handler+0x70/0x10c [virtio_console]
    [ 81.543601] process_one_work+0x1a7/0x3b0
    [ 81.544356] worker_thread+0x30/0x390
    [ 81.545025] ? create_worker+0x1a0/0x1a0
    [ 81.545749] kthread+0x112/0x130
    [ 81.546358] ? kthread_flush_work_fn+0x10/0x10
    [ 81.547183] ret_from_fork+0x22/0x40
    [ 81.547842] ---[ end trace aa97649bd16c8655 ]---
    [ 83.546539] general protection fault: 0000 [#1] SMP NOPTI
    [ 83.547422] CPU: 5 PID: 3225 Comm: modprobe Kdump: loaded Tainted: G W --------- - - 4.18.0-167.el8.x86_64 #1
    [ 83.549191] Hardware name: Red Hat KVM, BIOS 1.12.0-5.scrmod+el8.2.0+5159+d8aa4d83 04/01/2014
    [ 83.550544] RIP: 0010:__pv_queued_spin_lock_slowpath+0x19a/0x2a0
    [ 83.551504] Code: c4 c1 ea 12 41 be 01 00 00 00 4c 8d 6d 14 41 83 e4 03 8d 42 ff 49 c1 e4 05 48 98 49 81 c4 40 a5 02 00 4c 03 24 c5 60 48 34 91 89 2c 24 b8 00 80 00 00 eb 15 84 c0 75 0a 41 0f b6 54 24 14 84
    [ 83.554449] RSP: 0018:ffffb51a0323fdb0 EFLAGS: 00010202
    [ 83.555290] RAX: 000000000000301c RBX: ffffffff92080020 RCX: 0000000000000001
    [ 83.556426] RDX: 000000000000301d RSI: 0000000000000000 RDI: 0000000000000000
    [ 83.557556] RBP: ffff9e66f196a540 R08: 000000000000028a R09: ffff9e66d2757788
    [ 83.558688] R10: 0000000000000000 R11: 0000000000000000 R12: 646e61725f770b07
    [ 83.559821] R13: ffff9e66f196a554 R14: 0000000000000001 R15: 0000000000180000
    [ 83.560958] FS: 00007fd5032e8740(0000) GS:ffff9e66f1940000(0000) knlGS:0000000000000000
    [ 83.562233] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 83.563149] CR2: 00007fd5022b0da0 CR3: 000000038c334000 CR4: 00000000003406e0

    Signed-off-by: Andrew Melnychenko
    Cc: stable
    Link: https://lore.kernel.org/r/20200414191503.3471783-1-andrew@daynix.com
    Signed-off-by: Greg Kroah-Hartman

    Andrew Melnychenko
     
  • No users of hvcs_driver_string, remove it. This fixes the following gcc
    warning:

    drivers/tty/hvc/hvcs.c:199:19: warning: ‘hvcs_driver_string’ defined but
    not used [-Wunused-const-variable=]
    static const char hvcs_driver_string[]
    ^~~~~~~~~~~~~~~~~~

    Reported-by: Hulk Robot
    Signed-off-by: Jason Yan
    Acked-by: Jiri Slaby
    Link: https://lore.kernel.org/r/20200403071325.3721-1-yanaijie@huawei.com
    Signed-off-by: Greg Kroah-Hartman

    Jason Yan
     

22 Apr, 2020

1 commit

  • As shown in SBI v0.2, the legacy console SBI functions (sbi_console_getchar()
    and sbi_console_putchar()) are expected to be deprecated; they have no replacement.

    Let's HVC_RISCV_SBI and SERIAL_EARLYCON_RISCV_SBI depends on RISCV_SBI_V01.

    Fixes: efca13989250 ("RISC-V: Introduce a new config for SBI v0.1")
    Signed-off-by: Kefeng Wang
    Reviewed-by: Anup Patel
    Signed-off-by: Palmer Dabbelt

    Kefeng Wang
     

04 Apr, 2020

1 commit

  • Pull char/misc driver updates from Greg KH:
    "Here is the big set of char/misc/other driver patches for 5.7-rc1.

    Lots of things in here, and it's later than expected due to some
    reverts to resolve some reported issues. All is now clean with no
    reported problems in linux-next.

    Included in here is:
    - interconnect updates
    - mei driver updates
    - uio updates
    - nvmem driver updates
    - soundwire updates
    - binderfs updates
    - coresight updates
    - habanalabs updates
    - mhi new bus type and core
    - extcon driver updates
    - some Kconfig cleanups
    - other small misc driver cleanups and updates

    As mentioned, all have been in linux-next for a while, and with the
    last two reverts, all is calm and good"

    * tag 'char-misc-5.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (174 commits)
    Revert "driver core: platform: Initialize dma_parms for platform devices"
    Revert "amba: Initialize dma_parms for amba devices"
    amba: Initialize dma_parms for amba devices
    driver core: platform: Initialize dma_parms for platform devices
    bus: mhi: core: Drop the references to mhi_dev in mhi_destroy_device()
    bus: mhi: core: Initialize bhie field in mhi_cntrl for RDDM capture
    bus: mhi: core: Add support for reading MHI info from device
    misc: rtsx: set correct pcr_ops for rts522A
    speakup: misc: Use dynamic minor numbers for speakup devices
    mei: me: add cedar fork device ids
    coresight: do not use the BIT() macro in the UAPI header
    Documentation: provide IBM contacts for embargoed hardware
    nvmem: core: remove nvmem_sysfs_get_groups()
    nvmem: core: use is_bin_visible for permissions
    nvmem: core: use device_register and device_unregister
    nvmem: core: add root_only member to nvmem device struct
    extcon: axp288: Add wakeup support
    extcon: Mark extcon_get_edev_name() function as exported symbol
    extcon: palmas: Hide error messages if gpio returns -EPROBE_DEFER
    dt-bindings: extcon: usbc-cros-ec: convert extcon-usbc-cros-ec.txt to yaml format
    ...

    Linus Torvalds
     

18 Mar, 2020

1 commit

  • This patch corrects the SPDX License Identifier style in
    header file related to the HVC driver.
    For C header files Documentation/process/license-rules.rst
    mandates C-like comments (opposed to C source files where
    C++ style should be used).

    Changes made by using a script provided by Joe Perches here:
    https://lkml.org/lkml/2019/2/7/46.

    Suggested-by: Joe Perches
    Signed-off-by: Nishad Kamdar
    Link: https://lore.kernel.org/r/20200301170419.GA7125@nishad
    Signed-off-by: Greg Kroah-Hartman

    Nishad Kamdar
     

13 Mar, 2020

1 commit

  • 'source' (include) all of the tty/*/Kconfig files from
    drivers/tty/Kconfig instead of from drivers/char/Kconfig.
    This consolidates them both in source code and in menu
    presentation to the user.

    Move hvc/Kconfig and serial/Kconfig 'source' lines into the
    if TTY/endif block and remove the if TTY/endif blocks from
    those 2 files.

    Cc: linux-serial@vger.kernel.org
    Cc: Jiri Slaby
    Cc: Greg Kroah-Hartman
    Cc: Arnd Bergmann
    Suggested-by: Jiri Slaby
    Suggested-by: Arnd Bergmann
    Acked-by: Arnd Bergmann
    Signed-off-by: Randy Dunlap
    Link: https://lore.kernel.org/r/20200311225736.32147-3-rdunlap@infradead.org
    Signed-off-by: Greg Kroah-Hartman

    Randy Dunlap
     

04 Dec, 2019

1 commit

  • Pull tty/serial updates from Greg KH:
    "Here is the "big" tty and serial driver patches for 5.5-rc1.

    It's a bit later in the merge window than normal as I wanted to make
    sure some last-minute patches applied to it were all sane. They seem
    to be :)

    There's a lot of little stuff in here, for the tty core, and for lots
    of serial drivers:

    - reverts of uartlite serial driver patches that were wrong

    - msm-serial driver fixes

    - serial core updates and fixes

    - tty core fixes

    - serial driver dma mapping api changes

    - lots of other tiny fixes and updates for serial drivers

    All of these have been in linux-next for a while with no reported
    issues"

    * tag 'tty-5.5-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (58 commits)
    Revert "serial/8250: Add support for NI-Serial PXI/PXIe+485 devices"
    vcs: prevent write access to vcsu devices
    tty: vt: keyboard: reject invalid keycodes
    tty: don't crash in tty_init_dev when missing tty_port
    serial: stm32: fix clearing interrupt error flags
    tty: Fix Kconfig indentation, continued
    serial: serial_core: Perform NULL checks for break_ctl ops
    tty: remove unused argument from tty_open_by_driver()
    tty: Fix Kconfig indentation
    {tty: serial, nand: onenand}: samsung: rename to fix build warning
    serial: ifx6x60: add missed pm_runtime_disable
    serial: pl011: Fix DMA ->flush_buffer()
    Revert "serial-uartlite: Move the uart register"
    Revert "serial-uartlite: Add get serial id if not provided"
    Revert "serial-uartlite: Do not use static struct uart_driver out of probe()"
    Revert "serial-uartlite: Add runtime support"
    Revert "serial-uartlite: Change logic how console_port is setup"
    Revert "serial-uartlite: Use allocated structure instead of static ones"
    tty: serial: msm_serial: Use dma_request_chan() directly for channel request
    tty: serial: tegra: Use dma_request_chan() directly for channel request
    ...

    Linus Torvalds
     

21 Nov, 2019

1 commit

  • Adjust indentation from seven spaces to tab (+optional two spaces) as in
    coding style with command like:
    $ sed -e 's/^ /\t/' -i */Kconfig

    Signed-off-by: Krzysztof Kozlowski
    Link: https://lore.kernel.org/r/20191121132847.29015-1-krzk@kernel.org
    Signed-off-by: Greg Kroah-Hartman

    Krzysztof Kozlowski
     

20 Nov, 2019

1 commit

  • Adjust indentation from spaces to tab (+optional two spaces) as in
    coding style with command like:
    $ sed -e 's/^ /\t/' -i */Kconfig

    Signed-off-by: Krzysztof Kozlowski
    Link: https://lore.kernel.org/r/20191120133843.13189-1-krzk@kernel.org
    Signed-off-by: Greg Kroah-Hartman

    Krzysztof Kozlowski
     

14 Nov, 2019

1 commit


11 Oct, 2019

1 commit

  • Add DCC earlycon support for early printks. The patch is useful for SoC
    bringup where HW serial console is broken.

    Signed-off-by: Michal Simek
    Link: https://lore.kernel.org/r/41e2920a6348e65b2e986b0e65b66531e87cd756.1570543923.git.michal.simek@xilinx.com
    Signed-off-by: Greg Kroah-Hartman

    Michal Simek
     

04 Sep, 2019

1 commit

  • Use the typical style of array, not the equivalent &array[0].

    Signed-off-by: Joe Perches
    Link: https://lore.kernel.org/r/1be432798311378947ec4e6051cad1235b6eccbb.1562283944.git.joe@perches.com
    Signed-off-by: Greg Kroah-Hartman

    Joe Perches
     

17 Jul, 2019

1 commit

  • Convert docs to ReST and add them to the arch-specific
    book.

    The conversion here was trivial, as almost every file there
    was already using an elegant format close to ReST standard.

    The changes were mostly to mark literal blocks and add a few
    missing section title identifiers.

    One note with regards to "--": on Sphinx, this can't be used
    to identify a list, as it will format it badly. This can be
    used, however, to identify a long hyphen - and "---" is an
    even longer one.

    At its new index.rst, let's add a :orphan: while this is not linked to
    the main index.rst file, in order to avoid build warnings.

    Signed-off-by: Mauro Carvalho Chehab
    Acked-by: Andrew Donnellan # cxl

    Mauro Carvalho Chehab
     

14 Jun, 2019

1 commit

  • While developing KASAN for 64-bit book3s, I hit the following stack
    over-read.

    It occurs because the hypercall to put characters onto the terminal
    takes 2 longs (128 bits/16 bytes) of characters at a time, and so
    hvc_put_chars() would unconditionally copy 16 bytes from the argument
    buffer, regardless of supplied length. However, udbg_hvc_putc() can
    call hvc_put_chars() with a single-byte buffer, leading to the error.

    ==================================================================
    BUG: KASAN: stack-out-of-bounds in hvc_put_chars+0xdc/0x110
    Read of size 8 at addr c0000000023e7a90 by task swapper/0

    CPU: 0 PID: 0 Comm: swapper Not tainted 5.2.0-rc2-next-20190528-02824-g048a6ab4835b #113
    Call Trace:
    dump_stack+0x104/0x154 (unreliable)
    print_address_description+0xa0/0x30c
    __kasan_report+0x20c/0x224
    kasan_report+0x18/0x30
    __asan_report_load8_noabort+0x24/0x40
    hvc_put_chars+0xdc/0x110
    hvterm_raw_put_chars+0x9c/0x110
    udbg_hvc_putc+0x154/0x200
    udbg_write+0xf0/0x240
    console_unlock+0x868/0xd30
    register_console+0x970/0xe90
    register_early_udbg_console+0xf8/0x114
    setup_arch+0x108/0x790
    start_kernel+0x104/0x784
    start_here_common+0x1c/0x534

    Memory state around the buggy address:
    c0000000023e7980: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    c0000000023e7a00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f1 f1
    >c0000000023e7a80: f1 f1 01 f2 f2 f2 00 00 00 00 00 00 00 00 00 00
    ^
    c0000000023e7b00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    c0000000023e7b80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    ==================================================================

    Document that a 16-byte buffer is requred, and provide it in udbg.

    Signed-off-by: Daniel Axtens
    Signed-off-by: Michael Ellerman

    Daniel Axtens
     

20 May, 2019

1 commit

  • …/git/palmer/riscv-linux

    Pull RISC-V updates from Palmer Dabbelt:
    "This contains an assortment of RISC-V related patches that I'd like to
    target for the 5.2 merge window. Most of the patches are cleanups, but
    there are a handful of user-visible changes:

    - The nosmp and nr_cpus command-line arguments are now supported,
    which work like normal.

    - The SBI console no longer installs itself as a preferred console,
    we rely on standard mechanisms (/chosen, command-line, hueristics)
    instead.

    - sfence_remove_sfence_vma{,_asid} now pass their arguments along to
    the SBI call.

    - Modules now support BUG().

    - A missing sfence.vma during boot has been added. This bug only
    manifests during boot.

    - The arch/riscv support for SiFive's L2 cache controller has been
    merged, which should un-block the EDAC framework work.

    I've only tested this on QEMU again, as I didn't have time to get
    things running on the Unleashed. The latest master from this morning
    merges in cleanly and passes the tests as well"

    * tag 'riscv-for-linus-5.2-mw2' of git://git.kernel.org/pub/scm/linux/kernel/git/palmer/riscv-linux: (31 commits)
    riscv: fix locking violation in page fault handler
    RISC-V: sifive_l2_cache: Add L2 cache controller driver for SiFive SoCs
    RISC-V: Add DT documentation for SiFive L2 Cache Controller
    RISC-V: Avoid using invalid intermediate translations
    riscv: Support BUG() in kernel module
    riscv: Add the support for c.ebreak check in is_valid_bugaddr()
    riscv: support trap-based WARN()
    riscv: fix sbi_remote_sfence_vma{,_asid}.
    riscv: move switch_mm to its own file
    riscv: move flush_icache_{all,mm} to cacheflush.c
    tty: Don't force RISCV SBI console as preferred console
    RISC-V: Access CSRs using CSR numbers
    RISC-V: Add interrupt related SCAUSE defines in asm/csr.h
    RISC-V: Use tabs to align macro values in asm/csr.h
    RISC-V: Fix minor checkpatch issues.
    RISC-V: Support nr_cpus command line option.
    RISC-V: Implement nosmp commandline option.
    RISC-V: Add RISC-V specific arch_match_cpu_phys_id
    riscv: vdso: drop unnecessary cc-ldoption
    riscv: call pm_power_off from machine_halt / machine_power_off
    ...

    Linus Torvalds
     

17 May, 2019

1 commit

  • The Linux kernel will auto-disables all boot consoles whenever it
    gets a preferred real console.

    Currently on RISC-V systems, if we have a real console which is not
    RISCV SBI console then boot consoles (such as earlycon=sbi) are not
    auto-disabled when a real console (ttyS0 or ttySIF0) is available.
    This results in duplicate prints at boot-time after kernel starts
    using real console (i.e. ttyS0 or ttySIF0) if "earlycon=" kernel
    parameter was passed by bootloader.

    The reason for above issue is that RISCV SBI console always adds
    itself as preferred console which is causing other real consoles
    to be not used as preferred console.

    Ideally "console=" kernel parameter passed by bootloaders should
    be the one selecting a preferred real console.

    This patch fixes above issue by not forcing RISCV SBI console as
    preferred console.

    Fixes: afa6b1ccfad5 ("tty: New RISC-V SBI console driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Anup Patel
    Reviewed-by: Atish Patra
    Signed-off-by: Palmer Dabbelt

    Anup Patel
     

16 Apr, 2019

1 commit

  • 'default n' is the default value for any bool or tristate Kconfig
    setting so there is no need to write it explicitly.

    Also since commit f467c5640c29 ("kconfig: only write '# CONFIG_FOO
    is not set' for visible symbols") the Kconfig behavior is the same
    regardless of 'default n' being present or not:

    ...
    One side effect of (and the main motivation for) this change is making
    the following two definitions behave exactly the same:

    config FOO
    bool

    config FOO
    bool
    default n

    With this change, neither of these will generate a
    '# CONFIG_FOO is not set' line (assuming FOO isn't selected/implied).
    That might make it clearer to people that a bare 'default n' is
    redundant.
    ...

    Signed-off-by: Bartlomiej Zolnierkiewicz
    Signed-off-by: Greg Kroah-Hartman

    Bartlomiej Zolnierkiewicz
     

05 Apr, 2019

1 commit


26 Feb, 2019

1 commit

  • In preparation to enabling -Wimplicit-fallthrough, mark switch cases
    where we are expecting to fall through.

    This patch fixes the following warning:

    drivers/tty/hvc/hvc_xen.c: In function ‘xencons_backend_changed’:
    drivers/tty/hvc/hvc_xen.c:493:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
    if (dev->state == XenbusStateClosed)
    ^
    drivers/tty/hvc/hvc_xen.c:496:2: note: here
    case XenbusStateClosing:
    ^~~~

    Warning level 3 was used: -Wimplicit-fallthrough=3

    Notice that, in this particular case, the code comment is modified
    in accordance with what GCC is expecting to find.

    This patch is part of the ongoing efforts to enable
    -Wimplicit-fallthrough

    Signed-off-by: Gustavo A. R. Silva
    Signed-off-by: Greg Kroah-Hartman

    Gustavo A. R. Silva
     

17 Dec, 2018

1 commit

  • Convert string compares of DT node names to use of_node_name_eq helper
    instead. This removes direct access to the node name pointer.

    For hvc, the code can also be simplified by using of_stdout pointer
    instead of searching again for the stdout node.

    Cc: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Cc: Greg Kroah-Hartman
    Cc: Jiri Slaby
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: linux-serial@vger.kernel.org
    Cc: sparclinux@vger.kernel.org
    Signed-off-by: Rob Herring
    Acked-by: Michael Ellerman
    Acked-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    Rob Herring
     

11 Sep, 2018

3 commits

  • Commit 550ddadcc758 ("tty: hvc: hvc_write() may sleep") broke the
    termination condition in case the driver stops accepting characters.
    This can result in unnecessary polling of the busy driver.

    Restore it by testing the hvc_push return code.

    Tested-by: Matteo Croce
    Tested-by: Jason Gunthorpe
    Tested-by: Leon Romanovsky
    Signed-off-by: Nicholas Piggin
    Signed-off-by: Greg Kroah-Hartman

    Nicholas Piggin
     
  • Commit ec97eaad1383 ("tty: hvc: hvc_poll() break hv read loop")
    removes get_chars batching entirely, which slows down large console
    operations like paste -- virtio console "feels worse than a 9600 baud
    serial line," reports Matteo.

    This adds back batching in a more latency friendly way. If the caller
    can sleep then we try to fill the entire flip buffer, releasing the
    lock and scheduling between each iteration. If it can not sleep, then
    batches are limited to 128 bytes. Matteo confirms this fixes the
    performance problem.

    Latency testing the powerpc OPAL console with OpenBMC UART with a
    large paste shows about 0.25ms latency, which seems reasonable. 10ms
    latencies were typical for this case before the latency breaking work,
    so we still see most of the benefit.

    kopald-1204 0d.h. 5us : hvc_poll
    Tested-by: Matteo Croce
    Tested-by: Jason Gunthorpe
    Tested-by: Leon Romanovsky
    Signed-off-by: Nicholas Piggin
    Signed-off-by: Greg Kroah-Hartman

    Nicholas Piggin
     
  • Commit ec97eaad1383 ("tty: hvc: hvc_poll() break hv read loop") causes
    the virtio console to hang at times (e.g., if you paste a bunch of
    characters to it.

    The reason is that get_chars must return 0 before we can be sure the
    driver will kick or poll input again, but this change only scheduled a
    poll if get_chars had returned a full count. Change this to poll on
    any > 0 count.

    Reported-by: Matteo Croce
    Reported-by: Jason Gunthorpe
    Tested-by: Matteo Croce
    Tested-by: Jason Gunthorpe
    Tested-by: Leon Romanovsky
    Signed-off-by: Nicholas Piggin
    Signed-off-by: Greg Kroah-Hartman

    Nicholas Piggin
     

20 Aug, 2018

1 commit