Merge tag 'xtensa-20210902' of git://github.com/jcmvbkbc/linux-xtensa
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 2 Sep 2021 20:12:44 +0000 (13:12 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 2 Sep 2021 20:12:44 +0000 (13:12 -0700)
Pull Xtensa updates from Max Filippov:

 - fix kconfig unmet dependency warning for HAVE_FUTEX_CMPXCHG

 - add fairness to handling IRQs of the same priority

 - fix pointer usage before NULL check in ISS console driver

 - build system cleanups

* tag 'xtensa-20210902' of git://github.com/jcmvbkbc/linux-xtensa:
  xtensa: move core-y in arch/xtensa/Makefile to arch/xtensa/Kbuild
  xtensa: build platform directories unconditionally
  xtensa: do not build variants directory
  xtensa: remove unneeded exports
  xtensa: ISS: don't use string pointer before NULL check
  xtensa: add fairness to IRQ handling
  xtensa: fix kconfig unmet dependency warning for HAVE_FUTEX_CMPXCHG

1  2 
arch/xtensa/Kconfig
arch/xtensa/platforms/iss/console.c

diff --combined arch/xtensa/Kconfig
@@@ -7,8 -7,6 +7,8 @@@ config XTENS
        select ARCH_HAS_SYNC_DMA_FOR_CPU if MMU
        select ARCH_HAS_SYNC_DMA_FOR_DEVICE if MMU
        select ARCH_HAS_DMA_SET_UNCACHED if MMU
 +      select ARCH_HAS_STRNCPY_FROM_USER if !KASAN
 +      select ARCH_HAS_STRNLEN_USER
        select ARCH_USE_MEMTEST
        select ARCH_USE_QUEUED_RWLOCKS
        select ARCH_USE_QUEUED_SPINLOCKS
@@@ -22,6 -20,7 +22,6 @@@
        select GENERIC_IRQ_SHOW
        select GENERIC_PCI_IOMAP
        select GENERIC_SCHED_CLOCK
 -      select GENERIC_STRNCPY_FROM_USER if KASAN
        select HAVE_ARCH_AUDITSYSCALL
        select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL
        select HAVE_ARCH_KASAN if MMU && !XIP_KERNEL
@@@ -31,7 -30,7 +31,7 @@@
        select HAVE_DMA_CONTIGUOUS
        select HAVE_EXIT_THREAD
        select HAVE_FUNCTION_TRACER
-       select HAVE_FUTEX_CMPXCHG if !MMU
+       select HAVE_FUTEX_CMPXCHG if !MMU && FUTEX
        select HAVE_HW_BREAKPOINT if PERF_EVENTS
        select HAVE_IRQ_TIME_ACCOUNTING
        select HAVE_PCI
@@@ -136,41 -136,28 +136,41 @@@ static const struct tty_operations seri
  
  static int __init rs_init(void)
  {
 -      tty_port_init(&serial_port);
 +      struct tty_driver *driver;
 +      int ret;
 +
 +      driver = tty_alloc_driver(SERIAL_MAX_NUM_LINES, TTY_DRIVER_REAL_RAW);
 +      if (IS_ERR(driver))
 +              return PTR_ERR(driver);
  
 -      serial_driver = alloc_tty_driver(SERIAL_MAX_NUM_LINES);
 +      tty_port_init(&serial_port);
  
        /* Initialize the tty_driver structure */
  
 -      serial_driver->driver_name = "iss_serial";
 -      serial_driver->name = "ttyS";
 -      serial_driver->major = TTY_MAJOR;
 -      serial_driver->minor_start = 64;
 -      serial_driver->type = TTY_DRIVER_TYPE_SERIAL;
 -      serial_driver->subtype = SERIAL_TYPE_NORMAL;
 -      serial_driver->init_termios = tty_std_termios;
 -      serial_driver->init_termios.c_cflag =
 +      driver->driver_name = "iss_serial";
 +      driver->name = "ttyS";
 +      driver->major = TTY_MAJOR;
 +      driver->minor_start = 64;
 +      driver->type = TTY_DRIVER_TYPE_SERIAL;
 +      driver->subtype = SERIAL_TYPE_NORMAL;
 +      driver->init_termios = tty_std_termios;
 +      driver->init_termios.c_cflag =
                B9600 | CS8 | CREAD | HUPCL | CLOCAL;
 -      serial_driver->flags = TTY_DRIVER_REAL_RAW;
  
 -      tty_set_operations(serial_driver, &serial_ops);
 -      tty_port_link_device(&serial_port, serial_driver, 0);
 +      tty_set_operations(driver, &serial_ops);
 +      tty_port_link_device(&serial_port, driver, 0);
 +
 +      ret = tty_register_driver(driver);
 +      if (ret) {
 +              pr_err("Couldn't register serial driver\n");
 +              tty_driver_kref_put(driver);
 +              tty_port_destroy(&serial_port);
 +
 +              return ret;
 +      }
 +
 +      serial_driver = driver;
  
 -      if (tty_register_driver(serial_driver))
 -              panic("Couldn't register serial driver\n");
        return 0;
  }
  
  static __exit void rs_exit(void)
  {
        tty_unregister_driver(serial_driver);
 -      put_tty_driver(serial_driver);
 +      tty_driver_kref_put(serial_driver);
        tty_port_destroy(&serial_port);
  }
  
@@@ -199,10 -186,10 +199,10 @@@ late_initcall(rs_init)
  
  static void iss_console_write(struct console *co, const char *s, unsigned count)
  {
-       int len = strlen(s);
-       if (s != 0 && *s != 0)
+       if (s && *s != 0) {
+               int len = strlen(s);
                simc_write(1, s, count < len ? count : len);
+       }
  }
  
  static struct tty_driver* iss_console_device(struct console *c, int *index)