1. 23 Sep, 2019 3 commits
  2. 22 Sep, 2019 1 commit
    • Jens Axboe's avatar
      pktcdvd: remove warning on attempting to register non-passthrough dev · eb09b3cc
      Jens Axboe authored
      Anatoly reports that he gets the below warning when booting -git on
      a sparc64 box on debian unstable:
      
      ...
      [   13.352975] aes_sparc64: Using sparc64 aes opcodes optimized AES
      implementation
      [   13.428002] ------------[ cut here ]------------
      [   13.428081] WARNING: CPU: 21 PID: 586 at
      drivers/block/pktcdvd.c:2597 pkt_setup_dev+0x2e4/0x5a0 [pktcdvd]
      [   13.428147] Attempt to register a non-SCSI queue
      [   13.428184] Modules linked in: pktcdvd libdes cdrom aes_sparc64
      n2_rng md5_sparc64 sha512_sparc64 rng_core sha256_sparc64 flash
      sha1_sparc64 ip_tables x_tables ipv6 crc_ccitt nf_defrag_ipv6 autofs4
      ext4 crc16 mbcache jbd2 raid10 raid456 async_raid6_recov async_memcpy
      async_pq async_xor xor async_tx raid6_pq raid1 raid0 multipath linear
      md_mod crc32c_sparc64
      [   13.428452] CPU: 21 PID: 586 Comm: pktsetup Not tainted
      5.3.0-10169-g574cc453 #1234
      [   13.428507] Call Trace:
      [   13.428542]  [00000000004635c0] __warn+0xc0/0x100
      [   13.428582]  [0000000000463634] warn_slowpath_fmt+0x34/0x60
      [   13.428626]  [000000001045b244] pkt_setup_dev+0x2e4/0x5a0 [pktcdvd]
      [   13.428674]  [000000001045ccf4] pkt_ctl_ioctl+0x94/0x220 [pktcdvd]
      [   13.428724]  [00000000006b95c8] do_vfs_ioctl+0x628/0x6e0
      [   13.428764]  [00000000006b96c8] ksys_ioctl+0x48/0x80
      [   13.428803]  [00000000006b9714] sys_ioctl+0x14/0x40
      [   13.428847]  [0000000000406294] linux_sparc_syscall+0x34/0x44
      [   13.428890] irq event stamp: 4181
      [   13.428924] hardirqs last  enabled at (4189): [<00000000004e0a74>]
      console_unlock+0x634/0x6c0
      [   13.428984] hardirqs last disabled at (4196): [<00000000004e0540>]
      console_unlock+0x100/0x6c0
      [   13.429048] softirqs last  enabled at (3978): [<0000000000b2e2d8>]
      __do_softirq+0x498/0x520
      [   13.429110] softirqs last disabled at (3967): [<000000000042cfb4>]
      do_softirq_own_stack+0x34/0x60
      [   13.429172] ---[ end trace 2220ca468f32967d ]---
      [   13.430018] pktcdvd: setup of pktcdvd device failed
      [   13.455589] des_sparc64: Using sparc64 des opcodes optimized DES
      implementation
      [   13.515334] camellia_sparc64: Using sparc64 camellia opcodes
      optimized CAMELLIA implementation
      [   13.522856] pktcdvd: setup of pktcdvd device failed
      [   13.529327] pktcdvd: setup of pktcdvd device failed
      [   13.532932] pktcdvd: setup of pktcdvd device failed
      [   13.536165] pktcdvd: setup of pktcdvd device failed
      [   13.539372] pktcdvd: setup of pktcdvd device failed
      [   13.542834] pktcdvd: setup of pktcdvd device failed
      [   13.546536] pktcdvd: setup of pktcdvd device failed
      [   15.431071] XFS (dm-0): Mounting V5 Filesystem
      ...
      
      Apparently debian auto-attaches any cdrom like device to pktcdvd, which
      can lead to the above warning. There's really no reason to warn for this
      situation, kill it.
      Reported-by: default avatarAnatoly Pugachev <matorola@gmail.com>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      eb09b3cc
  3. 19 Sep, 2019 1 commit
  4. 18 Sep, 2019 8 commits
    • Xiubo Li's avatar
      nbd: fix possible page fault for nbd disk · 8454d685
      Xiubo Li authored
      When the NBD_CFLAG_DESTROY_ON_DISCONNECT flag is set and at the same
      time when the socket is closed due to the server daemon is restarted,
      just before the last DISCONNET is totally done if we start a new connection
      by using the old nbd_index, there will be crashing randomly, like:
      
      <3>[  110.151949] block nbd1: Receive control failed (result -32)
      <1>[  110.152024] BUG: unable to handle page fault for address: 0000058000000840
      <1>[  110.152063] #PF: supervisor read access in kernel mode
      <1>[  110.152083] #PF: error_code(0x0000) - not-present page
      <6>[  110.152094] PGD 0 P4D 0
      <4>[  110.152106] Oops: 0000 [#1] SMP PTI
      <4>[  110.152120] CPU: 0 PID: 6698 Comm: kworker/u5:1 Kdump: loaded Not tainted 5.3.0-rc4+ #2
      <4>[  110.152136] Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
      <4>[  110.152166] Workqueue: knbd-recv recv_work [nbd]
      <4>[  110.152187] RIP: 0010:__dev_printk+0xd/0x67
      <4>[  110.152206] Code: 10 e8 c5 fd ff ff 48 8b 4c 24 18 65 48 33 0c 25 28 00 [...]
      <4>[  110.152244] RSP: 0018:ffffa41581f13d18 EFLAGS: 00010206
      <4>[  110.152256] RAX: ffffa41581f13d30 RBX: ffff96dd7374e900 RCX: 0000000000000000
      <4>[  110.152271] RDX: ffffa41581f13d20 RSI: 00000580000007f0 RDI: ffffffff970ec24f
      <4>[  110.152285] RBP: ffffa41581f13d80 R08: ffff96dd7fc17908 R09: 0000000000002e56
      <4>[  110.152299] R10: ffffffff970ec24f R11: 0000000000000003 R12: ffff96dd7374e900
      <4>[  110.152313] R13: 0000000000000000 R14: ffff96dd7374e9d8 R15: ffff96dd6e3b02c8
      <4>[  110.152329] FS:  0000000000000000(0000) GS:ffff96dd7fc00000(0000) knlGS:0000000000000000
      <4>[  110.152362] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      <4>[  110.152383] CR2: 0000058000000840 CR3: 0000000067cc6002 CR4: 00000000001606f0
      <4>[  110.152401] Call Trace:
      <4>[  110.152422]  _dev_err+0x6c/0x83
      <4>[  110.152435]  nbd_read_stat.cold+0xda/0x578 [nbd]
      <4>[  110.152448]  ? __switch_to_asm+0x34/0x70
      <4>[  110.152468]  ? __switch_to_asm+0x40/0x70
      <4>[  110.152478]  ? __switch_to_asm+0x34/0x70
      <4>[  110.152491]  ? __switch_to_asm+0x40/0x70
      <4>[  110.152501]  ? __switch_to_asm+0x34/0x70
      <4>[  110.152511]  ? __switch_to_asm+0x40/0x70
      <4>[  110.152522]  ? __switch_to_asm+0x34/0x70
      <4>[  110.152533]  recv_work+0x35/0x9e [nbd]
      <4>[  110.152547]  process_one_work+0x19d/0x340
      <4>[  110.152558]  worker_thread+0x50/0x3b0
      <4>[  110.152568]  kthread+0xfb/0x130
      <4>[  110.152577]  ? process_one_work+0x340/0x340
      <4>[  110.152609]  ? kthread_park+0x80/0x80
      <4>[  110.152637]  ret_from_fork+0x35/0x40
      
      This is very easy to reproduce by running the nbd-runner.
      Reviewed-by: default avatarJosef Bacik <josef@toxicpanda.com>
      Signed-off-by: default avatarXiubo Li <xiubli@redhat.com>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      8454d685
    • Xiubo Li's avatar
      nbd: rename the runtime flags as NBD_RT_ prefixed · ec76a7b9
      Xiubo Li authored
      Preparing for the destory when disconnecting crash fixing.
      Reviewed-by: default avatarJosef Bacik <josef@toxicpanda.com>
      Signed-off-by: default avatarXiubo Li <xiubli@redhat.com>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      ec76a7b9
    • Paolo Valente's avatar
      block, bfq: push up injection only after setting service time · 58494c98
      Paolo Valente authored
      If equal to 0, the injection limit for a bfq_queue is pushed to 1
      after a first sample of the total service time of the I/O requests of
      the queue is computed (to allow injection to start). Yet, because of a
      mistake in the branch that performs this action, the push may happen
      also in some other case. This commit fixes this issue.
      Tested-by: default avatarOleksandr Natalenko <oleksandr@natalenko.name>
      Signed-off-by: default avatarPaolo Valente <paolo.valente@linaro.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      58494c98
    • Paolo Valente's avatar
      block, bfq: increase update frequency of inject limit · 17c3d266
      Paolo Valente authored
      The update period of the injection limit has been tentatively set to
      100 ms, to reduce fluctuations. This value however proved to cause,
      occasionally, the limit to be decremented for some bfq_queue only
      after the queue underwent excessive injection for a lot of time. This
      commit reduces the period to 10 ms.
      Tested-by: default avatarOleksandr Natalenko <oleksandr@natalenko.name>
      Signed-off-by: default avatarPaolo Valente <paolo.valente@linaro.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      17c3d266
    • Paolo Valente's avatar
      block, bfq: reduce upper bound for inject limit to max_rq_in_driver+1 · c1e0a182
      Paolo Valente authored
      Upon an increment attempt of the injection limit, the latter is
      constrained not to become higher than twice the maximum number
      max_rq_in_driver of I/O requests that have happened to be in service
      in the drive. This high bound allows the injection limit to grow
      beyond max_rq_in_driver, which may then cause max_rq_in_driver itself
      to grow.
      
      However, since the limit is incremented by only one unit at a time,
      there is no need for such a high bound, and just max_rq_in_driver+1 is
      enough.
      Tested-by: default avatarOleksandr Natalenko <oleksandr@natalenko.name>
      Signed-off-by: default avatarPaolo Valente <paolo.valente@linaro.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      c1e0a182
    • Paolo Valente's avatar
      block, bfq: update inject limit only after injection occurred · 23ed570a
      Paolo Valente authored
      BFQ updates the injection limit of each bfq_queue as a function of how
      much the limit inflates the service times experienced by the I/O
      requests of the queue. So only service times affected by injection
      must be taken into account. Unfortunately, in the current
      implementation of this update scheme, the service time of an I/O
      request rq not affected by injection may happen to be considered in
      the following case: there is no I/O request in service when rq
      arrives.
      
      This commit fixes this issue by making sure that only service times
      affected by injection are considered for updating the injection
      limit. In particular, the service time of an I/O request rq is now
      considered only if at least one of the following two conditions holds:
      - the destination bfq_queue for rq underwent injection before rq
      arrival, and there is still I/O in service in the drive on rq arrival
      (the service of such unfinished I/O may delay the service of rq);
      - injection occurs between the arrival and the completion time of rq.
      Tested-by: default avatarOleksandr Natalenko <oleksandr@natalenko.name>
      Signed-off-by: default avatarPaolo Valente <paolo.valente@linaro.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      23ed570a
    • Max Gurtovoy's avatar
      block: centralize PI remapping logic to the block layer · 54d4e6ab
      Max Gurtovoy authored
      Currently t10_pi_prepare/t10_pi_complete functions are called during the
      NVMe and SCSi layers command preparetion/completion, but their actual
      place should be the block layer since T10-PI is a general data integrity
      feature that is used by block storage protocols. Introduce .prepare_fn
      and .complete_fn callbacks within the integrity profile that each type
      can implement according to its needs.
      Suggested-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Suggested-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Signed-off-by: default avatarMax Gurtovoy <maxg@mellanox.com>
      
      Fixed to not call queue integrity functions if BLK_DEV_INTEGRITY
      isn't defined in the config.
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      54d4e6ab
    • Max Gurtovoy's avatar
      block: use symbolic constants for t10_pi type · 5eaed68d
      Max Gurtovoy authored
      Replace all hard-coded values with T10_PI_TYPES to make the code more
      readable.
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Signed-off-by: default avatarMax Gurtovoy <maxg@mellanox.com>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      5eaed68d
  5. 17 Sep, 2019 27 commits
    • Linus Torvalds's avatar
      Merge tag 'for-5.4/block-2019-09-16' of git://git.kernel.dk/linux-block · 7ad67ca5
      Linus Torvalds authored
      Pull block updates from Jens Axboe:
      
       - Two NVMe pull requests:
           - ana log parse fix from Anton
           - nvme quirks support for Apple devices from Ben
           - fix missing bio completion tracing for multipath stack devices
             from Hannes and Mikhail
           - IP TOS settings for nvme rdma and tcp transports from Israel
           - rq_dma_dir cleanups from Israel
           - tracing for Get LBA Status command from Minwoo
           - Some nvme-tcp cleanups from Minwoo, Potnuri and Myself
           - Some consolidation between the fabrics transports for handling
             the CAP register
           - reset race with ns scanning fix for fabrics (move fabrics
             commands to a dedicated request queue with a different lifetime
             from the admin request queue)."
           - controller reset and namespace scan races fixes
           - nvme discovery log change uevent support
           - naming improvements from Keith
           - multiple discovery controllers reject fix from James
           - some regular cleanups from various people
      
       - Series fixing (and re-fixing) null_blk debug printing and nr_devices
         checks (André)
      
       - A few pull requests from Song, with fixes from Andy, Guoqing,
         Guilherme, Neil, Nigel, and Yufen.
      
       - REQ_OP_ZONE_RESET_ALL support (Chaitanya)
      
       - Bio merge handling unification (Christoph)
      
       - Pick default elevator correctly for devices with special needs
         (Damien)
      
       - Block stats fixes (Hou)
      
       - Timeout and support devices nbd fixes (Mike)
      
       - Series fixing races around elevator switching and device add/remove
         (Ming)
      
       - sed-opal cleanups (Revanth)
      
       - Per device weight support for BFQ (Fam)
      
       - Support for blk-iocost, a new model that can properly account cost of
         IO workloads. (Tejun)
      
       - blk-cgroup writeback fixes (Tejun)
      
       - paride queue init fixes (zhengbin)
      
       - blk_set_runtime_active() cleanup (Stanley)
      
       - Block segment mapping optimizations (Bart)
      
       - lightnvm fixes (Hans/Minwoo/YueHaibing)
      
       - Various little fixes and cleanups
      
      * tag 'for-5.4/block-2019-09-16' of git://git.kernel.dk/linux-block: (186 commits)
        null_blk: format pr_* logs with pr_fmt
        null_blk: match the type of parameter nr_devices
        null_blk: do not fail the module load with zero devices
        block: also check RQF_STATS in blk_mq_need_time_stamp()
        block: make rq sector size accessible for block stats
        bfq: Fix bfq linkage error
        raid5: use bio_end_sector in r5_next_bio
        raid5: remove STRIPE_OPS_REQ_PENDING
        md: add feature flag MD_FEATURE_RAID0_LAYOUT
        md/raid0: avoid RAID0 data corruption due to layout confusion.
        raid5: don't set STRIPE_HANDLE to stripe which is in batch list
        raid5: don't increment read_errors on EILSEQ return
        nvmet: fix a wrong error status returned in error log page
        nvme: send discovery log page change events to userspace
        nvme: add uevent variables for controller devices
        nvme: enable aen regardless of the presence of I/O queues
        nvme-fabrics: allow discovery subsystems accept a kato
        nvmet: Use PTR_ERR_OR_ZERO() in nvmet_init_discovery()
        nvme: Remove redundant assignment of cq vector
        nvme: Assign subsys instance from first ctrl
        ...
      7ad67ca5
    • Linus Torvalds's avatar
      Merge tag 'for-5.4/libata-2019-09-15' of git://git.kernel.dk/linux-block · 5260c2b8
      Linus Torvalds authored
      Pull libata updates from Jens Axboe:
      
       - Kill unused export (Andy)
      
       - Use dma_set_mask_and_coherent() throughout (Christoph)
      
       - Drop PCS quirk on Denverton, which has different register layout
         (Dan)
      
       - Support non-boot time detection for pata_buddha (Max)
      
      * tag 'for-5.4/libata-2019-09-15' of git://git.kernel.dk/linux-block:
        libata/ahci: Drop PCS quirk for Denverton and beyond
        ahci: Do not export local variable ahci_em_messages
        libata: switch remaining drivers to use dma_set_mask_and_coherent
        sata_sil24: use dma_set_mask_and_coherent
        sata_qstor: use dma_set_mask_and_coherent
        sata_nv: use dma_set_mask_and_coherent
        sata_mv: use dma_set_mask_and_coherent
        pdc_adma: use dma_set_mask_and_coherent
        ahci: use dma_set_mask_and_coherent
        acard_ahci: use dma_set_mask_and_coherent
        ata/pata_buddha: Probe via modalias instead of initcall
      5260c2b8
    • Linus Torvalds's avatar
      Merge tag 'for-5.4/io_uring-2019-09-15' of git://git.kernel.dk/linux-block · 1e6fa3a3
      Linus Torvalds authored
      Pull io_uring updates from Jens Axboe:
      
       - Allocate SQ/CQ ring together, more efficient. Expose this through a
         feature flag as well, so we can reduce the number of mmaps by 1
         (Hristo and me)
      
       - Fix for sequence logic with SQ thread (Jackie).
      
       - Add support for links with drain commands (Jackie).
      
       - Improved async merging (me)
      
       - Improved buffered async write performance (me)
      
       - Support SQ poll wakeup + event get in single io_uring_enter() (me)
      
       - Support larger SQ ring size. For epoll conversions, the 4k limit was
         too small for some prod workloads (Daniel).
      
       - put_user_page() usage (John)
      
      * tag 'for-5.4/io_uring-2019-09-15' of git://git.kernel.dk/linux-block:
        io_uring: increase IORING_MAX_ENTRIES to 32K
        io_uring: make sqpoll wakeup possible with getevents
        io_uring: extend async work merging
        io_uring: limit parallelism of buffered writes
        io_uring: add io_queue_async_work() helper
        io_uring: optimize submit_and_wait API
        io_uring: add support for link with drain
        io_uring: fix wrong sequence setting logic
        io_uring: expose single mmap capability
        io_uring: allocate the two rings together
        fs/io_uring.c: convert put_page() to put_user_page*()
      1e6fa3a3
    • Linus Torvalds's avatar
      Merge tag 'docs-5.4' of git://git.lwn.net/linux · 7c672abc
      Linus Torvalds authored
      Pull documentation updates from Jonathan Corbet:
       "It's a somewhat calmer cycle for docs this time, as the churn of the
        mass RST conversion is happily mostly behind us.
      
         - A new document on reproducible builds.
      
         - We finally got around to zapping the documentation for hardware
           support that was removed in 2004; one doesn't want to rush these
           things.
      
         - The usual assortment of fixes, typo corrections, etc"
      
      * tag 'docs-5.4' of git://git.lwn.net/linux: (67 commits)
        Documentation: kbuild: Add document about reproducible builds
        docs: printk-formats: Stop encouraging use of unnecessary %h[xudi] and %hh[xudi]
        Documentation: Add "earlycon=sbi" to the admin guide
        doc:lock: remove reference to clever use of read-write lock
        devices.txt: improve entry for comedi (char major 98)
        docs: mtd: Update spi nor reference driver
        doc: arm64: fix grammar dtb placed in no attributes region
        Documentation: sysrq: don't recommend 'S' 'U' before 'B'
        mailmap: Update email address for Quentin Perret
        docs: ftrace: clarify when tracing is disabled by the trace file
        docs: process: fix broken link
        Documentation/arm/samsung-s3c24xx: Remove stray U+FEFF character to fix title
        Documentation/arm/sa1100/assabet: Fix 'make assabet_defconfig' command
        Documentation/arm/sa1100: Remove some obsolete documentation
        docs/zh_CN: update Chinese howto.rst for latexdocs making
        Documentation: virt: Fix broken reference to virt tree's index
        docs: Fix typo on pull requests guide
        kernel-doc: Allow anonymous enum
        Documentation: sphinx: Don't parse socket() as identifier reference
        Documentation: sphinx: Add missing comma to list of strings
        ...
      7c672abc
    • Linus Torvalds's avatar
      Merge branch 'for-5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/dennis/percpu · 19023141
      Linus Torvalds authored
      Pull percpu updates from Dennis Zhou:
       "A couple of updates to clean up the code with no change in behavior"
      
      * 'for-5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/dennis/percpu:
        percpu: Use struct_size() helper
        percpu: fix typo in pcpu_setup_first_chunk() comment
        percpu: Make pcpu_setup_first_chunk() void function
      19023141
    • Linus Torvalds's avatar
      Merge branch 'for-5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup · 3ee8d6c5
      Linus Torvalds authored
      Pull cgroup updates from Tejun Heo:
       "Three minor cleanup patches"
      
      * 'for-5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:
        Use kvmalloc in cgroups-v1
        cgroup: minor tweak for logic to get cgroup css
        cgroup: Replace a seq_printf() call by seq_puts() in cgroup_print_ss_mask()
      3ee8d6c5
    • Linus Torvalds's avatar
      Merge tag 'asm-generic-5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic · b8456f94
      Linus Torvalds authored
      Pull asm-generic updates from Arnd Bergmann:
       "Here are three small cleanup patches for the include/asm-generic
        directory.
      
        Christoph removes the __ioremap as part of a cleanup, Nico improves
        the constant do_div() optimization, and Denis changes BUG_ON() to be
        consistent with other implementations"
      
      * tag 'asm-generic-5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic:
        asm-generic: add unlikely to default BUG_ON(x)
        __div64_const32(): improve the generic C version
        asm-generic: don't provide __ioremap
      b8456f94
    • Linus Torvalds's avatar
      Merge tag 'xtensa-20190917' of git://github.com/jcmvbkbc/linux-xtensa · 6dec8c15
      Linus Torvalds authored
      Pull Xtensa updates from Max Filippov:
      
       - add support for xtensa call0 ABI in userspace
      
       - update xtensa virt board DTS for PCI root complex in KIO range
      
       - remove free_initrd_mem
      
      * tag 'xtensa-20190917' of git://github.com/jcmvbkbc/linux-xtensa:
        xtensa: virt: move PCI root complex to KIO range
        xtensa: add support for call0 ABI in userspace
        xtensa: clean up PS_WOE_BIT usage
        xtensa: remove free_initrd_mem
      6dec8c15
    • Linus Torvalds's avatar
      Merge tag 's390-5.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux · d5902844
      Linus Torvalds authored
      Pull s390 updates from Vasily Gorbik:
      
       - Add support for IBM z15 machines.
      
       - Add SHA3 and CCA AES cipher key support in zcrypt and pkey
         refactoring.
      
       - Move to arch_stack_walk infrastructure for the stack unwinder.
      
       - Various kasan fixes and improvements.
      
       - Various command line parsing fixes.
      
       - Improve decompressor phase debuggability.
      
       - Lift no bss usage restriction for the early code.
      
       - Use refcount_t for reference counters for couple of places in mm
         code.
      
       - Logging improvements and return code fix in vfio-ccw code.
      
       - Couple of zpci fixes and minor refactoring.
      
       - Remove some outdated documentation.
      
       - Fix secure boot detection.
      
       - Other various minor code clean ups.
      
      * tag 's390-5.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (48 commits)
        s390: remove pointless drivers-y in drivers/s390/Makefile
        s390/cpum_sf: Fix line length and format string
        s390/pci: fix MSI message data
        s390: add support for IBM z15 machines
        s390/crypto: Support for SHA3 via CPACF (MSA6)
        s390/startup: add pgm check info printing
        s390/crypto: xts-aes-s390 fix extra run-time crypto self tests finding
        vfio-ccw: fix error return code in vfio_ccw_sch_init()
        s390: vfio-ap: fix warning reset not completed
        s390/base: remove unused s390_base_mcck_handler
        s390/sclp: Fix bit checked for has_sipl
        s390/zcrypt: fix wrong handling of cca cipher keygenflags
        s390/kasan: add kdump support
        s390/setup: avoid using strncmp with hardcoded length
        s390/sclp: avoid using strncmp with hardcoded length
        s390/module: avoid using strncmp with hardcoded length
        s390/pci: avoid using strncmp with hardcoded length
        s390/kaslr: reserve memory for kasan usage
        s390/mem_detect: provide single get_mem_detect_end
        s390/cmma: reuse kstrtobool for option value parsing
        ...
      d5902844
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://github.com/openrisc/linux · 1e24aaab
      Linus Torvalds authored
      Pull OpenRISC updates from Stafford Horne:
       "Few small things for 5.4:
      
         - Fixup ethoc ethernet device tree descriptors which were previously
           broken, now ethernet works on FPGAs running OpenRISC!
      
         - Switch ioremap to use uncached semantics - from Christoph Hellwig"
      
      * tag 'for-linus' of git://github.com/openrisc/linux:
        openrisc: map as uncached in ioremap
        or1k: dts: Add ethoc device to SMP devicetree
        or1k: dts: Fix ethoc network configuration in or1ksim devicetree
      1e24aaab
    • Linus Torvalds's avatar
      Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu · 16da0961
      Linus Torvalds authored
      Pull m68knommu fix from Greg Ungerer:
       "Only a single change, fix up header include in ColdFire specific GPIO
        handling code"
      
      * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu:
        m68k: coldfire: Include the GPIO driver header
      16da0961
    • Linus Torvalds's avatar
      Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 7f2444d3
      Linus Torvalds authored
      Pull core timer updates from Thomas Gleixner:
       "Timers and timekeeping updates:
      
         - A large overhaul of the posix CPU timer code which is a preparation
           for moving the CPU timer expiry out into task work so it can be
           properly accounted on the task/process.
      
           An update to the bogus permission checks will come later during the
           merge window as feedback was not complete before heading of for
           travel.
      
         - Switch the timerqueue code to use cached rbtrees and get rid of the
           homebrewn caching of the leftmost node.
      
         - Consolidate hrtimer_init() + hrtimer_init_sleeper() calls into a
           single function
      
         - Implement the separation of hrtimers to be forced to expire in hard
           interrupt context even when PREEMPT_RT is enabled and mark the
           affected timers accordingly.
      
         - Implement a mechanism for hrtimers and the timer wheel to protect
           RT against priority inversion and live lock issues when a (hr)timer
           which should be canceled is currently executing the callback.
           Instead of infinitely spinning, the task which tries to cancel the
           timer blocks on a per cpu base expiry lock which is held and
           released by the (hr)timer expiry code.
      
         - Enable the Hyper-V TSC page based sched_clock for Hyper-V guests
           resulting in faster access to timekeeping functions.
      
         - Updates to various clocksource/clockevent drivers and their device
           tree bindings.
      
         - The usual small improvements all over the place"
      
      * 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (101 commits)
        posix-cpu-timers: Fix permission check regression
        posix-cpu-timers: Always clear head pointer on dequeue
        hrtimer: Add a missing bracket and hide `migration_base' on !SMP
        posix-cpu-timers: Make expiry_active check actually work correctly
        posix-timers: Unbreak CONFIG_POSIX_TIMERS=n build
        tick: Mark sched_timer to expire in hard interrupt context
        hrtimer: Add kernel doc annotation for HRTIMER_MODE_HARD
        x86/hyperv: Hide pv_ops access for CONFIG_PARAVIRT=n
        posix-cpu-timers: Utilize timerqueue for storage
        posix-cpu-timers: Move state tracking to struct posix_cputimers
        posix-cpu-timers: Deduplicate rlimit handling
        posix-cpu-timers: Remove pointless comparisons
        posix-cpu-timers: Get rid of 64bit divisions
        posix-cpu-timers: Consolidate timer expiry further
        posix-cpu-timers: Get rid of zero checks
        rlimit: Rewrite non-sensical RLIMIT_CPU comment
        posix-cpu-timers: Respect INFINITY for hard RTTIME limit
        posix-cpu-timers: Switch thread group sampling to array
        posix-cpu-timers: Restructure expiry array
        posix-cpu-timers: Remove cputime_expires
        ...
      7f2444d3
    • Linus Torvalds's avatar
      Merge branch 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · c5f12fdb
      Linus Torvalds authored
      Pull x86 apic updates from Thomas Gleixner:
      
       - Cleanup the apic IPI implementation by removing duplicated code and
         consolidating the functions into the APIC core.
      
       - Implement a safe variant of the IPI broadcast mode. Contrary to
         earlier attempts this uses the core tracking of which CPUs have been
         brought online at least once so that a broadcast does not end up in
         some dead end in BIOS/SMM code when the CPU is still waiting for
         init. Once all CPUs have been brought up once, IPI broadcasting is
         enabled. Before that regular one by one IPIs are issued.
      
       - Drop the paravirt CR8 related functions as they have no user anymore
      
       - Initialize the APIC TPR to block interrupt 16-31 as they are reserved
         for CPU exceptions and should never be raised by any well behaving
         device.
      
       - Emit a warning when vector space exhaustion breaks the admin set
         affinity of an interrupt.
      
       - Make sure to use the NMI fallback when shutdown via reboot vector IPI
         fails. The original code had conditions which prevent the code path
         to be reached.
      
       - Annotate various APIC config variables as RO after init.
      
      [ The ipi broadcase change came in earlier through the cpu hotplug
        branch, but I left the explanation in the commit message since it was
        shared between the two different branches    - Linus ]
      
      * 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (28 commits)
        x86/apic/vector: Warn when vector space exhaustion breaks affinity
        x86/apic: Annotate global config variables as "read-only after init"
        x86/apic/x2apic: Implement IPI shorthands support
        x86/apic/flat64: Remove the IPI shorthand decision logic
        x86/apic: Share common IPI helpers
        x86/apic: Remove the shorthand decision logic
        x86/smp: Enhance native_send_call_func_ipi()
        x86/smp: Move smp_function_call implementations into IPI code
        x86/apic: Provide and use helper for send_IPI_allbutself()
        x86/apic: Add static key to Control IPI shorthands
        x86/apic: Move no_ipi_broadcast() out of 32bit
        x86/apic: Add NMI_VECTOR wait to IPI shorthand
        x86/apic: Remove dest argument from __default_send_IPI_shortcut()
        x86/hotplug: Silence APIC and NMI when CPU is dead
        x86/cpu: Move arch_smt_update() to a neutral place
        x86/apic/uv: Make x2apic_extra_bits static
        x86/apic: Consolidate the apic local headers
        x86/apic: Move apic_flat_64 header into apic directory
        x86/apic: Move ipi header into apic directory
        x86/apic: Cleanup the include maze
        ...
      c5f12fdb
    • Linus Torvalds's avatar
      Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · a572ba63
      Linus Torvalds authored
      Pull core irq updates from Thomas Gleixner:
       "Updates from the irq departement:
      
         - Update the interrupt spreading code so it handles numa node with
           different CPU counts properly.
      
         - A large overhaul of the ARM GiCv3 driver to support new PPI and SPI
           ranges.
      
         - Conversion of all alloc_fwnode() users to use physical addresses
           instead of virtual addresses so the virtual addresses are not
           leaked. The physical address is sufficient to identify the
           associated interrupt chip.
      
         - Add support for Marvel MMP3, Amlogic Meson SM1 interrupt chips.
      
         - Enforce interrupt threading at compile time if RT is enabled.
      
         - Small updates and improvements all over the place"
      
      * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (37 commits)
        irqchip/gic-v3-its: Fix LPI release for Multi-MSI devices
        irqchip/uniphier-aidet: Use devm_platform_ioremap_resource()
        irqdomain: Add the missing assignment of domain->fwnode for named fwnode
        irqchip/mmp: Coexist with GIC root IRQ controller
        irqchip/mmp: Mask off interrupts from other cores
        irqchip/mmp: Add missing chained_irq_{enter,exit}()
        irqchip/mmp: Do not use of_address_to_resource() to get mux regs
        irqchip/meson-gpio: Add support for meson sm1 SoCs
        dt-bindings: interrupt-controller: New binding for the meson sm1 SoCs
        genirq/affinity: Remove const qualifier from node_to_cpumask argument
        genirq/affinity: Spread vectors on node according to nr_cpu ratio
        genirq/affinity: Improve __irq_build_affinity_masks()
        irqchip: Remove dev_err() usage after platform_get_irq()
        irqchip: Add include guard to irq-partition-percpu.h
        irqchip/mmp: Do not call irq_set_default_host() on DT platforms
        irqchip/gic-v3-its: Remove the redundant set_bit for lpi_map
        irqchip/gic-v3: Add quirks for HIP06/07 invalid GICD_TYPER erratum 161010803
        irqchip/gic: Skip DT quirks when evaluating IIDR-based quirks
        irqchip/gic-v3: Warn about inconsistent implementations of extended ranges
        irqchip/gic-v3: Add EPPI range support
        ...
      a572ba63
    • Linus Torvalds's avatar
      Merge branch 'x86-irq-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 258b16ec
      Linus Torvalds authored
      Pull x86 interrupt updates from Thomas Gleixner:
       "A small set of changes to simplify and improve the interrupt handling
        in do_IRQ() by moving the common case into common code and thereby
        cleaning it up"
      
      * 'x86-irq-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/irq: Check for VECTOR_UNUSED directly
        x86/irq: Move IS_ERR_OR_NULL() check into common do_IRQ() code
        x86/irq: Improve definition of VECTOR_SHUTDOWN et al
      258b16ec
    • Linus Torvalds's avatar
      Merge branch 'x86-pti-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 3fb7f3a6
      Linus Torvalds authored
      Pull x86 pti updates from Thomas Gleixner:
       "Two small PTI updates:
      
         - Handle unaligned addresses gracefully in pti_clone_pagetable(). Not
           an issue with current callers, but a correctness problem. Adds a
           warning so any caller which hands in an unaligned address gets
           pointed out clearly.
      
         - Prevent PTI functions from being invoked when PTI is disabled at
           boottime. While this does not cause any harm today, it's pointless
           code executed and prone to cause subtle issues if the PTI
           implementation changes internally over time"
      
      * 'x86-pti-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/mm/pti: Do not invoke PTI functions when PTI is disabled
        x86/mm/pti: Handle unaligned address gracefully in pti_clone_pagetable()
      3fb7f3a6
    • Linus Torvalds's avatar
      Merge branch 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 3cd04622
      Linus Torvalds authored
      Pull CPU hotplug updates from Thomas Gleixner:
       "A small update for the SMP hotplug code code:
      
         - Track "booted once" CPUs in a cpumask so the x86 APIC code has an
           easy way to decide whether broadcast IPIs are safe to use or not.
      
         - Implement a cpumask_or_equal() helper for the IPI broadcast
           evaluation.
      
           The above two changes have been also pulled into the x86/apic
           branch for implementing the conditional IPI broadcast feature.
      
         - Cache the number of online CPUs instead of reevaluating it over and
           over. num_online_cpus() is an unreliable snapshot anyway except
           when it is used outside a cpu hotplug locked region. The cached
           access is not changing this, but it's definitely faster than
           calculating the bitmap wheight especially in hot paths"
      
      * 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        cpu/hotplug: Cache number of online CPUs
        cpumask: Implement cpumask_or_equal()
        smp/hotplug: Track booted once CPUs in a cpumask
      3cd04622
    • Linus Torvalds's avatar
      Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 16208cd6
      Linus Torvalds authored
      Pull timer fix from Thomas Gleixner:
       "A single fix to prevent the alarm timer code from returning ENOTSUPP
        to user space.
      
        ENOTSUPP is a purely kernel internal error code related to NFSv3 and
        should never be handed back to user space. The risk for ABI breakage
        is low as the number of systems which do not have a working RTC is
        very limited"
      
      * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        alarmtimer: Use EOPNOTSUPP instead of ENOTSUPP
      16208cd6
    • Linus Torvalds's avatar
      Merge tag 'platform-drivers-x86-v5.4-1' of git://git.infradead.org/linux-platform-drivers-x86 · ad062195
      Linus Torvalds authored
      Pull x86 platform-drivers updates from Andy Shevchenko:
      
       - ASUS WMI driver got a couple of updates, i.e. support of FAN is fixed
         for recent products and the charge threshold support has been added
      
       - Two uknown key events for Dell laptops are being ignored now to avoid
         spamming users with harmless messages
      
       - HP ZBook 17 G5 and ASUS Zenbook UX430UNR got accelerometer support.
      
       - Intel CherryTrail platforms had a regression with wake up. Now it's
         fixed
      
       - Intel PMC driver got fixed in order to work nicely in Xen
         environment
      
       - Intel Speed Select driver provides bucket vs core count relationship.
         Besides that the tools has been updated for better output
      
       - The PrivacyGuard is enabled on Lenovo ThinkPad laptops
      
       - Three tablets - Trekstor Primebook C11B 2-in-1, Irbis TW90 and Chuwi
         Surbook Mini - got touchscreen support
      
      * tag 'platform-drivers-x86-v5.4-1' of git://git.infradead.org/linux-platform-drivers-x86: (53 commits)
        MAINTAINERS: Switch PDx86 subsystem status to Odd Fixes
        platform/x86: asus-wmi: Refactor charge threshold to use the battery hooking API
        platform/x86: asus-wmi: Rename CHARGE_THRESHOLD to RSOC
        platform/x86: asus-wmi: Reorder ASUS_WMI_CHARGE_THRESHOLD
        tools/power/x86/intel-speed-select: Display core count for bucket
        platform/x86: ISST: Allow additional TRL MSRs
        tools/power/x86/intel-speed-select: Fix memory leak
        tools/power/x86/intel-speed-select: Output success/failed for command output
        tools/power/x86/intel-speed-select: Output human readable CPU list
        tools/power/x86/intel-speed-select: Change turbo ratio output to maximum turbo frequency
        tools/power/x86/intel-speed-select: Switch output to MHz
        tools/power/x86/intel-speed-select: Simplify output for turbo-freq and base-freq
        tools/power/x86/intel-speed-select: Fix cpu-count output
        tools/power/x86/intel-speed-select: Fix help option typo
        tools/power/x86/intel-speed-select: Fix package typo
        tools/power/x86/intel-speed-select: Fix a read overflow in isst_set_tdp_level_msr()
        platform/x86: intel_int0002_vgpio: Use device_init_wakeup
        platform/x86: intel_int0002_vgpio: Fix wakeups not working on Cherry Trail
        platform/x86: compal-laptop: Initialize "value" in ec_read_u8()
        platform/x86: touchscreen_dmi: Add info for the Trekstor Primebook C11B 2-in-1
        ...
      ad062195
    • Linus Torvalds's avatar
      Merge branch 'x86-vmware-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 7ac63f6b
      Linus Torvalds authored
      Pull x86 vmware updates from Ingo Molnar:
       "This updates the VMWARE guest driver with support for VMCALL/VMMCALL
        based hypercalls"
      
      * 'x86-vmware-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        input/vmmouse: Update the backdoor call with support for new instructions
        drm/vmwgfx: Update the backdoor call with support for new instructions
        x86/vmware: Add a header file for hypercall definitions
        x86/vmware: Update platform detection code for VMCALL/VMMCALL hypercalls
      7ac63f6b
    • Linus Torvalds's avatar
      Merge branch 'x86-hyperv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · e2bddc20
      Linus Torvalds authored
      Pull x86 hyperv updates from Ingo Molnar:
       "Misc updates related to page size abstractions within the HyperV code,
        in preparation for future features"
      
      * 'x86-hyperv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        drivers: hv: vmbus: Replace page definition with Hyper-V specific one
        x86/hyperv: Add functions to allocate/deallocate page for Hyper-V
        x86/hyperv: Create and use Hyper-V page definitions
      e2bddc20
    • Linus Torvalds's avatar
      Merge branch 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 6f246714
      Linus Torvalds authored
      Pull x86 platform update from Ingo Molnar:
       "The biggest change is the rework of the intel/iosf_mbi locking code
        which used a few non-standard locking patterns, to make it work under
        lockdep"
      
      * 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/platform/uv: Fix kmalloc() NULL check routine
        x86/platform/intel/iosf_mbi Rewrite locking
      6f246714
    • Linus Torvalds's avatar
      Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · ac51667b
      Linus Torvalds authored
      Pull x86 mm updates from Ingo Molnar:
      
       - Make cpumask_of_node() more robust against invalid node IDs
      
       - Simplify and speed up load_mm_cr4()
      
       - Unexport and remove various unused set_memory_*() APIs
      
       - Misc cleanups
      
      * 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/mm: Fix cpumask_of_node() error condition
        x86/mm: Remove the unused set_memory_wt() function
        x86/mm: Remove set_pages_x() and set_pages_nx()
        x86/mm: Remove the unused set_memory_array_*() functions
        x86/mm: Unexport set_memory_x() and set_memory_nx()
        x86/fixmap: Cleanup outdated comments
        x86/kconfig: Remove X86_DIRECT_GBPAGES dependency on !DEBUG_PAGEALLOC
        x86/mm: Avoid redundant interrupt disable in load_mm_cr4()
      ac51667b
    • Linus Torvalds's avatar
      Merge branch 'x86-entry-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · e0d60a1e
      Linus Torvalds authored
      Pull x86 entry updates from Ingo Molnar:
       "This contains x32 and compat syscall improvements, the biggest one of
        which splits x32 syscalls into their own table, which allows new
        syscalls to share the x32 and x86-64 number - which turns the
        512-547 special syscall numbers range into a legacy wart that won't be
        extended going forward"
      
      * 'x86-entry-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/syscalls: Split the x32 syscalls into their own table
        x86/syscalls: Disallow compat entries for all types of 64-bit syscalls
        x86/syscalls: Use the compat versions of rt_sigsuspend() and rt_sigprocmask()
        x86/syscalls: Make __X32_SYSCALL_BIT be unsigned long
      e0d60a1e
    • Linus Torvalds's avatar
      Merge branch 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 22331f89
      Linus Torvalds authored
      Pull x86 cpu-feature updates from Ingo Molnar:
      
       - Rework the Intel model names symbols/macros, which were decades of
         ad-hoc extensions and added random noise. It's now a coherent, easy
         to follow nomenclature.
      
       - Add new Intel CPU model IDs:
          - "Tiger Lake" desktop and mobile models
          - "Elkhart Lake" model ID
          - and the "Lightning Mountain" variant of Airmont, plus support code
      
       - Add the new AVX512_VP2INTERSECT instruction to cpufeatures
      
       - Remove Intel MPX user-visible APIs and the self-tests, because the
         toolchain (gcc) is not supporting it going forward. This is the
         first, lowest-risk phase of MPX removal.
      
       - Remove X86_FEATURE_MFENCE_RDTSC
      
       - Various smaller cleanups and fixes
      
      * 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (25 commits)
        x86/cpu: Update init data for new Airmont CPU model
        x86/cpu: Add new Airmont variant to Intel family
        x86/cpu: Add Elkhart Lake to Intel family
        x86/cpu: Add Tiger Lake to Intel family
        x86: Correct misc typos
        x86/intel: Add common OPTDIFFs
        x86/intel: Aggregate microserver naming
        x86/intel: Aggregate big core graphics naming
        x86/intel: Aggregate big core mobile naming
        x86/intel: Aggregate big core client naming
        x86/cpufeature: Explain the macro duplication
        x86/ftrace: Remove mcount() declaration
        x86/PCI: Remove superfluous returns from void functions
        x86/msr-index: Move AMD MSRs where they belong
        x86/cpu: Use constant definitions for CPU models
        lib: Remove redundant ftrace flag removal
        x86/crash: Remove unnecessary comparison
        x86/bitops: Use __builtin_constant_p() directly instead of IS_IMMEDIATE()
        x86: Remove X86_FEATURE_MFENCE_RDTSC
        x86/mpx: Remove MPX APIs
        ...
      22331f89
    • Linus Torvalds's avatar
      Merge branch 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · fc6fd139
      Linus Torvalds authored
      Pull x86 build cleanup from Ingo Molnar:
       "A single change that removes unnecessary asm-generic wrappers"
      
      * 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/build: Remove unneeded uapi asm-generic wrappers
      fc6fd139
    • Linus Torvalds's avatar
      Merge branch 'x86-boot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 49a21e52
      Linus Torvalds authored
      Pull x86 boot code cleanup from Ingo Molnar:
       "Clean up the BUILD_BUG_ON() definition which can cause build warnings"
      
      * 'x86-boot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/boot: Use common BUILD_BUG_ON
      49a21e52