1. 02 Dec, 2016 3 commits
    • Heiko Carstens's avatar
      s390/setup: fix memblock usage · db7ad636
      Heiko Carstens authored
      When converting from bootmem to memblock I missed a subtle difference:
      the memblock_alloc() functions return uninitialized memory, while the
      memblock_virt_alloc() functions return zeroed memory.
      
      This led to quite random early boot crashes.
      
      Therefore use the correct version everywhere now.
      Hopefully.
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      db7ad636
    • Lars-Peter Clausen's avatar
      s390/zcrypt: Convert to PM ops · 3e488c95
      Lars-Peter Clausen authored
      Switch the zcrypt bus from legacy suspend/resume callbacks to dev_pm_ops.
      The conversion is straight forward with the help of SIMPLE_DEV_PM_OPS().
      The new dev_pm_ops based version is functionally equivalent to the legacy
      callbacks version.
      
      This will allow to eventually remove support for legacy suspend/resume
      callbacks from the kernel altogether.
      Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: default avatarHarald Freudenberger <freude@linux.vnet.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      3e488c95
    • Heiko Carstens's avatar
      s390/kexec: use node 0 when re-adding crash kernel memory · 9f88eb4d
      Heiko Carstens authored
      When re-adding crash kernel memory within setup_resources() the
      function memblock_add() is used. That function will add memory by
      default to node "MAX_NUMNODES" instead of node 0, like the memory
      detection code does. In case of !NUMA this will trigger this warning
      when the kernel generates the vmemmap:
      
      Usage of MAX_NUMNODES is deprecated. Use NUMA_NO_NODE instead
      WARNING: CPU: 0 PID: 0 at mm/memblock.c:1261 memblock_virt_alloc_internal+0x76/0x220
      CPU: 0 PID: 0 Comm: swapper Not tainted 4.9.0-rc6 #16
      Call Trace:
       [<0000000000d0b2e8>] memblock_virt_alloc_try_nid+0x88/0xc8
       [<000000000083c8ea>] __earlyonly_bootmem_alloc.constprop.1+0x42/0x50
       [<000000000083e7f4>] vmemmap_populate+0x1ac/0x1e0
       [<0000000000840136>] sparse_mem_map_populate+0x46/0x68
       [<0000000000d0c59c>] sparse_init+0x184/0x238
       [<0000000000cf45f6>] paging_init+0xbe/0xf8
       [<0000000000cf1d4a>] setup_arch+0xa02/0xae0
       [<0000000000ced75a>] start_kernel+0x72/0x450
       [<0000000000100020>] _stext+0x20/0x80
      
      If NUMA is selected numa_setup_memory() will fix the node assignments
      before the vmemmap will be populated; so this warning will only appear
      if NUMA is not selected.
      
      To fix this simply use memblock_add_node() and re-add crash kernel
      memory explicitly to node 0.
      Reported-and-tested-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
      Fixes: 4e042af4 ("s390/kexec: fix crash on resize of reserved memory")
      Cc: <stable@vger.kernel.org> # v4.8+
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      9f88eb4d
  2. 29 Nov, 2016 4 commits
  3. 25 Nov, 2016 2 commits
  4. 23 Nov, 2016 6 commits
  5. 17 Nov, 2016 5 commits
  6. 15 Nov, 2016 1 commit
  7. 11 Nov, 2016 6 commits
  8. 08 Nov, 2016 1 commit
  9. 07 Nov, 2016 2 commits
  10. 31 Oct, 2016 9 commits
    • Paul Gortmaker's avatar
      s390: virtio: make ccw explicitly non-modular · acc50ec7
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      arch/s390/Kconfig:config S390_GUEST
      arch/s390/Kconfig:      def_bool y
      
      ...meaning that it currently is not being built as a module by anyone.
      
      Lets remove the modular code that is essentially orphaned, so that
      when reading the driver there is no doubt it is builtin-only.
      
      Since module_init translates to device_initcall in the non-modular
      case, the init ordering remains unchanged with this commit.
      
      Also note that MODULE_DEVICE_TABLE is a no-op for non-modular code.
      
      We replace module.h with moduleparam.h since the file does declare
      some module_param() and leaving that as-is is currently the easiest
      way to remain compatible with existing boot arg use cases.
      
      Cc: Christian Borntraeger <borntraeger@de.ibm.com>
      Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
      Cc: linux-s390@vger.kernel.org
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      acc50ec7
    • Paul Gortmaker's avatar
      s390: hotplug: make pci_hpc explicitly non-modular · 0729dcf2
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/pci/hotplug/Kconfig:config HOTPLUG_PCI_S390
      drivers/pci/hotplug/Kconfig:    bool "System z PCI Hotplug Support"
      
      ...meaning that it currently is not being built as a module by anyone.
      
      Lets remove the couple traces of modular infrastructure use, so that
      when reading the driver there is no doubt it is builtin-only.
      
      We also delete the MODULE_LICENSE tag etc. since all that information
      was (or is now) contained at the top of the file in the comments.
      
      We don't exchange module.h for init.h or export.h since the file
      does not contain any initcalls or EXPORT of symbols.
      
      Cc: Sebastian Ott <sebott@linux.vnet.ibm.com>
      Cc: Gerald Schaefer <gerald.schaefer@de.ibm.com>
      Cc: Bjorn Helgaas <bhelgaas@google.com>
      Cc: linux-s390@vger.kernel.org
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      0729dcf2
    • Paul Gortmaker's avatar
      s390: kernel: make lgr explicitly non-modular · 8ba8b05f
      Paul Gortmaker authored
      The Makefile currently controlling compilation of this code is obj-y
      meaning that it currently is not being built as a module by anyone.
      
      Lets remove the couple traces of modular infrastructure use, so that
      when reading the driver there is no doubt it is builtin-only.
      
      Since module_init translates to device_initcall in the non-modular
      case, the init ordering remains unchanged with this commit.
      
      We replace module.h with init.h and export.h since the file does
      export some symbols.
      
      Cc: linux-s390@vger.kernel.org
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      8ba8b05f
    • Paul Gortmaker's avatar
      s390: hypfs: make inode explicitly non-modular · cee672e1
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      arch/s390/Kconfig:config S390_HYPFS_FS
      arch/s390/Kconfig:      def_bool y
      
      ...meaning that it currently is not being built as a module by anyone.
      
      Lets remove the couple traces of modular infrastructure use, so that
      when reading the driver there is no doubt it is builtin-only.
      
      Since module_init translates to device_initcall in the non-modular
      case, the init ordering remains unchanged with this commit.
      
      Also note that MODULE_ALIAS is a no-op for non-modular code.
      
      We also delete the MODULE_LICENSE tag etc. since all that information
      was (or is now) contained at the top of the file in the comments.
      
      Build testing indicated the presence of module.h was masking an
      implicit include of kobject.h, hence the addition of that.
      
      Cc: linux-s390@vger.kernel.org
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      cee672e1
    • Paul Gortmaker's avatar
      s390: char: make slcp_quiesce explicitly non-modular · aae175d2
      Paul Gortmaker authored
      The Makefile currently controlling compilation of this code is obj-y,
      meaning that it currently is not being built as a module by anyone.
      
      Lets remove the couple traces of modular infrastructure, so that
      when reading the driver there is no doubt it is builtin-only.
      
      Since module_init translates to device_initcall in the non-modular
      case, the init ordering remains unchanged with this commit.
      
      Cc: linux-s390@vger.kernel.org
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      aae175d2
    • Paul Gortmaker's avatar
      s390: char: make sclp_tty explicitly non-modular · 238b9285
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/s390/char/Kconfig:config SCLP_TTY
      drivers/s390/char/Kconfig:      def_bool y
      
      ...meaning that it currently is not being built as a module by anyone.
      
      Lets remove the couple traces of modular infrastructure use, so that
      when reading the driver there is no doubt it is builtin-only.
      
      Since module_init translates to device_initcall in the non-modular
      case, the init ordering remains unchanged with this commit.
      
      We don't replace module.h with init.h since the file already has that.
      
      Cc: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
      Cc: linux-s390@vger.kernel.org
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      238b9285
    • Paul Gortmaker's avatar
      s390: char: make con3215 explicitly non-modular · 6e4c1d84
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/s390/char/Kconfig:config TN3215
      drivers/s390/char/Kconfig:      def_bool y
      
      ...meaning that it currently is not being built as a module by anyone.
      
      Lets remove the modular code that is essentially orphaned, so that
      when reading the driver there is no doubt it is builtin-only.
      
      Since module_init translates to device_initcall in the non-modular
      case, the init ordering remains unchanged with this commit.
      
      We don't replace module.h with init.h since the file already has that.
      
      Cc: linux-s390@vger.kernel.org
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      6e4c1d84
    • Paul Gortmaker's avatar
      s390: char: make zcore explicitly non-modular · cbe62fac
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      arch/s390/Kconfig:config CRASH_DUMP
      arch/s390/Kconfig:      bool "kernel crash dumps"
      
      ...meaning that it currently is not being built as a module by anyone.
      
      Lets remove the modular code that is essentially orphaned, so that
      when reading the driver there is no doubt it is builtin-only.
      
      Since module_init wasn't even being used by this file, the init
      ordering remains unchanged with this commit.
      
      We also delete the MODULE_LICENSE tag etc. since all that information
      was (or is now) contained at the top of the file in the comments.
      
      We don't replace module.h with init.h since the file already has that.
      
      Cc: linux-s390@vger.kernel.org
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      cbe62fac
    • Paul Gortmaker's avatar
      s390: cio: make it explicitly non-modular · a00f761f
      Paul Gortmaker authored
      The Makefile currently controlling compilation of this code is:
      
        obj-y += airq.o blacklist.o chsc.o cio.o css.o chp.o idset.o isc.o \
                fcx.o itcw.o crw.o ccwreq.o trace.o ioasm.o
        ccw_device-objs += device.o device_fsm.o device_ops.o
        ccw_device-objs += device_id.o device_pgid.o device_status.o
        obj-y += ccw_device.o cmf.o
      
      ...meaning that the files here are not being built as modular.
      
      Lets remove the couple traces of modular infrastructure use, so that
      when reading the code there is no doubt it is builtin-only.
      
      Since module_init translates to device_initcall in the non-modular
      case, the init ordering remains unchanged with this commit.
      
      Also note that MODULE_DEVICE_TABLE is a no-op for non-modular code.
      
      We delete the MODULE_LICENSE tag etc. since all that information
      was (or is now) contained at the top of the file in the comments.
      
      We replace module.h with export.h where the file does export some
      symbols.
      
      Cc: Sebastian Ott <sebott@linux.vnet.ibm.com>
      Cc: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
      Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
      Cc: Arnd Bergmann <arndb@de.ibm.com>
      Cc: linux-s390@vger.kernel.org
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      a00f761f
  11. 28 Oct, 2016 1 commit
    • Jan Höppner's avatar
      s390/dasd: Fix locking issue when changing RO attribute · 9f9d53e5
      Jan Höppner authored
      The function dasd_ro_store() calls set_disk_ro() to set the device in
      question read-only. Since set_disk_ro() might sleep, we can't call it
      while holding a lock. However, we also can't simply check if the device,
      block, and gdp references are valid before we call set_disk_ro() because
      an offline processing might have been started in the meanwhile which
      will destroy those references.
      
      In order to reliably call set_disk_ro() we have to ensure several
      things:
      
      - Still check validity of the mentioned references but additionally
        check if offline processing is running and bail out accordingly. Also,
        do this while holding the device lock.
      - To ensure that the block device is still safe after the lock, increase
        the open_count while still holding the device lock.
      Reviewed-by: default avatarStefan Haberland <sth@linux.vnet.ibm.com>
      Signed-off-by: default avatarJan Höppner <hoeppner@linux.vnet.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      9f9d53e5