1. 20 Feb, 2023 3 commits
    • Yang Jihong's avatar
      x86/kprobes: Fix arch_check_optimized_kprobe check within optimized_kprobe range · f1c97a1b
      Yang Jihong authored
      When arch_prepare_optimized_kprobe calculating jump destination address,
      it copies original instructions from jmp-optimized kprobe (see
      __recover_optprobed_insn), and calculated based on length of original
      instruction.
      
      arch_check_optimized_kprobe does not check KPROBE_FLAG_OPTIMATED when
      checking whether jmp-optimized kprobe exists.
      As a result, setup_detour_execution may jump to a range that has been
      overwritten by jump destination address, resulting in an inval opcode error.
      
      For example, assume that register two kprobes whose addresses are
      <func+9> and <func+11> in "func" function.
      The original code of "func" function is as follows:
      
         0xffffffff816cb5e9 <+9>:     push   %r12
         0xffffffff816cb5eb <+11>:    xor    %r12d,%r12d
         0xffffffff816cb5ee <+14>:    test   %rdi,%rdi
         0xffffffff816cb5f1 <+17>:    setne  %r12b
         0xffffffff816cb5f5 <+21>:    push   %rbp
      
      1.Register the kprobe for <func+11>, assume that is kp1, corresponding optimized_kprobe is op1.
        After the optimization, "func" code changes to:
      
         0xffffffff816cc079 <+9>:     push   %r12
         0xffffffff816cc07b <+11>:    jmp    0xffffffffa0210000
         0xffffffff816cc080 <+16>:    incl   0xf(%rcx)
         0xffffffff816cc083 <+19>:    xchg   %eax,%ebp
         0xffffffff816cc084 <+20>:    (bad)
         0xffffffff816cc085 <+21>:    push   %rbp
      
      Now op1->flags == KPROBE_FLAG_OPTIMATED;
      
      2. Register the kprobe for <func+9>, assume that is kp2, corresponding optimized_kprobe is op2.
      
      register_kprobe(kp2)
        register_aggr_kprobe
          alloc_aggr_kprobe
            __prepare_optimized_kprobe
              arch_prepare_optimized_kprobe
                __recover_optprobed_insn    // copy original bytes from kp1->optinsn.copied_insn,
                                            // jump address = <func+14>
      
      3. disable kp1:
      
      disable_kprobe(kp1)
        __disable_kprobe
          ...
          if (p == orig_p || aggr_kprobe_disabled(orig_p)) {
            ret = disarm_kprobe(orig_p, true)       // add op1 in unoptimizing_list, not unoptimized
            orig_p->flags |= KPROBE_FLAG_DISABLED;  // op1->flags ==  KPROBE_FLAG_OPTIMATED | KPROBE_FLAG_DISABLED
          ...
      
      4. unregister kp2
      __unregister_kprobe_top
        ...
        if (!kprobe_disabled(ap) && !kprobes_all_disarmed) {
          optimize_kprobe(op)
            ...
            if (arch_check_optimized_kprobe(op) < 0) // because op1 has KPROBE_FLAG_DISABLED, here not return
              return;
            p->kp.flags |= KPROBE_FLAG_OPTIMIZED;   //  now op2 has KPROBE_FLAG_OPTIMIZED
        }
      
      "func" code now is:
      
         0xffffffff816cc079 <+9>:     int3
         0xffffffff816cc07a <+10>:    push   %rsp
         0xffffffff816cc07b <+11>:    jmp    0xffffffffa0210000
         0xffffffff816cc080 <+16>:    incl   0xf(%rcx)
         0xffffffff816cc083 <+19>:    xchg   %eax,%ebp
         0xffffffff816cc084 <+20>:    (bad)
         0xffffffff816cc085 <+21>:    push   %rbp
      
      5. if call "func", int3 handler call setup_detour_execution:
      
        if (p->flags & KPROBE_FLAG_OPTIMIZED) {
          ...
          regs->ip = (unsigned long)op->optinsn.insn + TMPL_END_IDX;
          ...
        }
      
      The code for the destination address is
      
         0xffffffffa021072c:  push   %r12
         0xffffffffa021072e:  xor    %r12d,%r12d
         0xffffffffa0210731:  jmp    0xffffffff816cb5ee <func+14>
      
      However, <func+14> is not a valid start instruction address. As a result, an error occurs.
      
      Link: https://lore.kernel.org/all/20230216034247.32348-3-yangjihong1@huawei.com/
      
      Fixes: f66c0447 ("kprobes: Set unoptimized flag after unoptimizing code")
      Signed-off-by: default avatarYang Jihong <yangjihong1@huawei.com>
      Cc: stable@vger.kernel.org
      Acked-by: default avatarMasami Hiramatsu (Google) <mhiramat@kernel.org>
      Signed-off-by: default avatarMasami Hiramatsu (Google) <mhiramat@kernel.org>
      f1c97a1b
    • Yang Jihong's avatar
      x86/kprobes: Fix __recover_optprobed_insn check optimizing logic · 868a6fc0
      Yang Jihong authored
      Since the following commit:
      
        commit f66c0447 ("kprobes: Set unoptimized flag after unoptimizing code")
      
      modified the update timing of the KPROBE_FLAG_OPTIMIZED, a optimized_kprobe
      may be in the optimizing or unoptimizing state when op.kp->flags
      has KPROBE_FLAG_OPTIMIZED and op->list is not empty.
      
      The __recover_optprobed_insn check logic is incorrect, a kprobe in the
      unoptimizing state may be incorrectly determined as unoptimizing.
      As a result, incorrect instructions are copied.
      
      The optprobe_queued_unopt function needs to be exported for invoking in
      arch directory.
      
      Link: https://lore.kernel.org/all/20230216034247.32348-2-yangjihong1@huawei.com/
      
      Fixes: f66c0447 ("kprobes: Set unoptimized flag after unoptimizing code")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarYang Jihong <yangjihong1@huawei.com>
      Acked-by: default avatarMasami Hiramatsu (Google) <mhiramat@kernel.org>
      Signed-off-by: default avatarMasami Hiramatsu (Google) <mhiramat@kernel.org>
      868a6fc0
    • Masami Hiramatsu (Google)'s avatar
      kprobes: Fix to handle forcibly unoptimized kprobes on freeing_list · 4fbd2f83
      Masami Hiramatsu (Google) authored
      Since forcibly unoptimized kprobes will be put on the freeing_list directly
      in the unoptimize_kprobe(), do_unoptimize_kprobes() must continue to check
      the freeing_list even if unoptimizing_list is empty.
      
      This bug can happen if a kprobe is put in an instruction which is in the
      middle of the jump-replaced instruction sequence of an optprobe, *and* the
      optprobe is recently unregistered and queued on unoptimizing_list.
      In this case, the optprobe will be unoptimized forcibly (means immediately)
      and put it into the freeing_list, expecting the optprobe will be handled in
      do_unoptimize_kprobe().
      But if there is no other optprobes on the unoptimizing_list, current code
      returns from the do_unoptimize_kprobe() soon and does not handle the
      optprobe which is on the freeing_list. Then the optprobe will hit the
      WARN_ON_ONCE() in the do_free_cleaned_kprobes(), because it is not handled
      in the latter loop of the do_unoptimize_kprobe().
      
      To solve this issue, do not return from do_unoptimize_kprobes() immediately
      even if unoptimizing_list is empty.
      
      Moreover, this change affects another case. kill_optimized_kprobes() expects
      kprobe_optimizer() will just free the optprobe on freeing_list.
      So I changed it to just do list_move() to freeing_list if optprobes are on
      unoptimizing list. And the do_unoptimize_kprobe() will skip
      arch_disarm_kprobe() if the probe on freeing_list has gone flag.
      
      Link: https://lore.kernel.org/all/Y8URdIfVr3pq2X8w@xpf.sh.intel.com/
      Link: https://lore.kernel.org/all/167448024501.3253718.13037333683110512967.stgit@devnote3/
      
      Fixes: e4add247 ("kprobes: Fix optimize_kprobe()/unoptimize_kprobe() cancellation logic")
      Reported-by: default avatarPengfei Xu <pengfei.xu@intel.com>
      Signed-off-by: default avatarMasami Hiramatsu (Google) <mhiramat@kernel.org>
      Cc: stable@vger.kernel.org
      Acked-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      4fbd2f83
  2. 19 Feb, 2023 4 commits
  3. 18 Feb, 2023 4 commits
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm · 5e725d11
      Linus Torvalds authored
      Pull kvm/x86 fixes from Paolo Bonzini:
      
       - zero all padding for KVM_GET_DEBUGREGS
      
       - fix rST warning
      
       - disable vPMU support on hybrid CPUs
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
        kvm: initialize all of the kvm_debugregs structure before sending it to userspace
        perf/x86: Refuse to export capabilities for hybrid PMUs
        KVM: x86/pmu: Disable vPMU support on hybrid CPUs (host PMUs)
        Documentation/hw-vuln: Fix rST warning
      5e725d11
    • Linus Torvalds's avatar
      Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux · 0c2822b1
      Linus Torvalds authored
      Pull arm64 regression fix from Will Deacon:
       "Apologies for the _extremely_ late pull request here, but we had a
        'perf' (i.e. CPU PMU) regression on the Apple M1 reported on Wednesday
        [1] which was introduced by bd275681 ("perf: Rewrite core context
        handling") during the merge window.
      
        Mark and I looked into this and noticed an additional problem caused
        by the same patch, where the 'CHAIN' event (used to combine two
        adjacent 32-bit counters into a single 64-bit counter) was not being
        filtered correctly. Mark posted a series on Thursday [2] which
        addresses both of these regressions and I queued it the same day.
      
        The changes are small, self-contained and have been confirmed to fix
        the original regression.
      
        Summary:
      
         - Fix 'perf' regression for non-standard CPU PMU hardware (i.e. Apple
           M1)"
      
      * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
        arm64: perf: reject CHAIN events at creation time
        arm_pmu: fix event CPU filtering
      0c2822b1
    • Linus Torvalds's avatar
      Merge tag 'block-6.2-2023-02-17' of git://git.kernel.dk/linux · 0e9fd589
      Linus Torvalds authored
      Pull block fix from Jens Axboe:
       "I guess this is what can happen when you prep things early for going
        away, something else comes in last minute. This one fixes another
        regression in 6.2 for NVMe, from this release, and hence we should
        probably get it submitted for 6.2.
      
        Still waiting for the original reporter (see bugzilla linked in the
        commit) to test this, but Keith managed to setup and recreate the
        issue and tested the patch that way"
      
      * tag 'block-6.2-2023-02-17' of git://git.kernel.dk/linux:
        nvme-pci: refresh visible attrs for cmb attributes
      0e9fd589
    • Linus Torvalds's avatar
      Merge tag 'mm-hotfixes-stable-2023-02-17-15-16-2' of... · 38f8ccde
      Linus Torvalds authored
      Merge tag 'mm-hotfixes-stable-2023-02-17-15-16-2' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
      
      Pull misc fixes from Andrew Morton:
       "Six hotfixes. Five are cc:stable: four for MM, one for nilfs2.
      
        Also a MAINTAINERS update"
      
      * tag 'mm-hotfixes-stable-2023-02-17-15-16-2' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm:
        nilfs2: fix underflow in second superblock position calculations
        hugetlb: check for undefined shift on 32 bit architectures
        mm/migrate: fix wrongly apply write bit after mkdirty on sparc64
        MAINTAINERS: update FPU EMULATOR web page
        mm/MADV_COLLAPSE: set EAGAIN on unexpected page refcount
        mm/filemap: fix page end in filemap_get_read_batch
      38f8ccde
  4. 17 Feb, 2023 20 commits
  5. 16 Feb, 2023 9 commits
    • Dave Airlie's avatar
      Merge tag 'drm-intel-fixes-2023-02-16' of... · f7597e3c
      Dave Airlie authored
      Merge tag 'drm-intel-fixes-2023-02-16' of git://anongit.freedesktop.org/drm/drm-intel into drm-fixes
      
      - Moving gen11 hw wa to the right place. (Matt)
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/Y+47eUvwbafER35/@intel.com
      f7597e3c
    • Dave Airlie's avatar
      Merge tag 'drm-misc-fixes-2023-02-16' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes · a2a04b51
      Dave Airlie authored
      Multiple fixes in vc4 to address issues with YUV planes, HDMI and CRTC;
      an invalid page access fix for fbdev, mark dynamic debug as broken, a
      double free and refcounting fix for vmwgfx.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Maxime Ripard <maxime@cerno.tech>
      Link: https://patchwork.freedesktop.org/patch/msgid/20230216091905.i5wswy4dd74x4br5@houat
      a2a04b51
    • Dave Airlie's avatar
      Merge tag 'amd-drm-fixes-6.2-2023-02-15' of... · caa068c9
      Dave Airlie authored
      Merge tag 'amd-drm-fixes-6.2-2023-02-15' of https://gitlab.freedesktop.org/agd5f/linux into drm-fixes
      
      amd-drm-fixes-6.2-2023-02-15:
      
      amdgpu:
      - Fix GC11.x suspend warning
      - Fix display warning
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      From: Alex Deucher <alexander.deucher@amd.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20230216041122.7714-1-alexander.deucher@amd.com
      caa068c9
    • Mark Rutland's avatar
      arm64: perf: reject CHAIN events at creation time · 853e2dac
      Mark Rutland authored
      Currently it's possible for a user to open CHAIN events arbitrarily,
      which we previously tried to rule out in commit:
      
        ca2b4972 ("arm64: perf: Reject stand-alone CHAIN events for PMUv3")
      
      Which allowed the events to be opened, but prevented them from being
      scheduled by by using an arm_pmu::filter_match hook to reject the
      relevant events.
      
      The CHAIN event filtering in the arm_pmu::filter_match hook was silently
      removed in commit:
      
        bd275681 ("perf: Rewrite core context handling")
      
      As a result, it's now possible for users to open CHAIN events, and for
      these to be installed arbitrarily.
      
      Fix this by rejecting CHAIN events at creation time. This avoids the
      creation of events which will never count, and doesn't require using the
      dynamic filtering.
      
      Attempting to open a CHAIN event (0x1e) will now be rejected:
      
      | # ./perf stat -e armv8_pmuv3/config=0x1e/ ls
      | perf
      |
      |  Performance counter stats for 'ls':
      |
      |    <not supported>      armv8_pmuv3/config=0x1e/
      |
      |        0.002197470 seconds time elapsed
      |
      |        0.000000000 seconds user
      |        0.002294000 seconds sys
      
      Other events (e.g. CPU_CYCLES / 0x11) will open as usual:
      
      | # ./perf stat -e armv8_pmuv3/config=0x11/ ls
      | perf
      |
      |  Performance counter stats for 'ls':
      |
      |            2538761      armv8_pmuv3/config=0x11/
      |
      |        0.002227330 seconds time elapsed
      |
      |        0.002369000 seconds user
      |        0.000000000 seconds sys
      
      Fixes: bd275681 ("perf: Rewrite core context handling")
      Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Ravi Bangoria <ravi.bangoria@amd.com>
      Cc: Will Deacon <will@kernel.org>
      Link: https://lore.kernel.org/r/20230216141240.3833272-3-mark.rutland@arm.comSigned-off-by: default avatarWill Deacon <will@kernel.org>
      853e2dac
    • Mark Rutland's avatar
      arm_pmu: fix event CPU filtering · 61d03862
      Mark Rutland authored
      Janne reports that perf has been broken on Apple M1 as of commit:
      
        bd275681 ("perf: Rewrite core context handling")
      
      That commit replaced the pmu::filter_match() callback with
      pmu::filter(), whose return value has the opposite polarity, with true
      implying events should be ignored rather than scheduled. While an
      attempt was made to update the logic in armv8pmu_filter() and
      armpmu_filter() accordingly, the return value remains inverted in a
      couple of cases:
      
      * If the arm_pmu does not have an arm_pmu::filter() callback,
        armpmu_filter() will always return whether the CPU is supported rather
        than whether the CPU is not supported.
      
        As a result, the perf core will not schedule events on supported CPUs,
        resulting in a loss of events. Additionally, the perf core will
        attempt to schedule events on unsupported CPUs, but this will be
        rejected by armpmu_add(), which may result in a loss of events from
        other PMUs on those unsupported CPUs.
      
      * If the arm_pmu does have an arm_pmu::filter() callback, and
        armpmu_filter() is called on a CPU which is not supported by the
        arm_pmu, armpmu_filter() will return false rather than true.
      
        As a result, the perf core will attempt to schedule events on
        unsupported CPUs, but this will be rejected by armpmu_add(), which may
        result in a loss of events from other PMUs on those unsupported CPUs.
      
      This means a loss of events can be seen with any arm_pmu driver, but
      with the ARMv8 PMUv3 driver (which is the only arm_pmu driver with an
      arm_pmu::filter() callback) the event loss will be more limited and may
      go unnoticed, which is how this issue evaded testing so far.
      
      Fix the CPU filtering by performing this consistently in
      armpmu_filter(), and remove the redundant arm_pmu::filter() callback and
      armv8pmu_filter() implementation.
      
      Commit bd275681 also silently removed the CHAIN event filtering from
      armv8pmu_filter(), which will be addressed by a separate patch without
      using the filter callback.
      
      Fixes: bd275681 ("perf: Rewrite core context handling")
      Reported-by: default avatarJanne Grunau <j@jannau.net>
      Link: https://lore.kernel.org/asahi/20230215-arm_pmu_m1_regression-v1-1-f5a266577c8d@jannau.net/Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
      Cc: Will Deacon <will@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Ravi Bangoria <ravi.bangoria@amd.com>
      Cc: Asahi Lina <lina@asahilina.net>
      Cc: Eric Curtin <ecurtin@redhat.com>
      Tested-by: default avatarJanne Grunau <j@jannau.net>
      Link: https://lore.kernel.org/r/20230216141240.3833272-2-mark.rutland@arm.comSigned-off-by: default avatarWill Deacon <will@kernel.org>
      61d03862
    • Linus Torvalds's avatar
      Merge tag 'net-6.2-final' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · 3ac88fa4
      Linus Torvalds authored
      Pull networking fixes from Jakub Kicinski:
       "Fixes from the main networking tree only, probably because all
        sub-trees have backed off and haven't submitted their changes.
      
        None of the fixes here are particularly scary and no outstanding
        regressions. In an ideal world the "current release" sections would be
        empty at this stage but that never happens.
      
        Current release - regressions:
      
         - fix unwanted sign extension in netdev_stats_to_stats64()
      
        Current release - new code bugs:
      
         - initialize net->notrefcnt_tracker earlier
      
         - devlink: fix netdev notifier chain corruption
      
         - nfp: make sure mbox accesses in IPsec code are atomic
      
         - ice: fix check for weight and priority of a scheduling node
      
        Previous releases - regressions:
      
         - ice: xsk: fix cleaning of XDP_TX frame, prevent inf loop
      
         - igb: fix I2C bit banging config with external thermal sensor
      
        Previous releases - always broken:
      
         - sched: tcindex: update imperfect hash filters respecting rcu
      
         - mpls: fix stale pointer if allocation fails during device rename
      
         - dccp/tcp: avoid negative sk_forward_alloc by ipv6_pinfo.pktoptions
      
         - remove WARN_ON_ONCE(sk->sk_forward_alloc) from
           sk_stream_kill_queues()
      
         - af_key: fix heap information leak
      
         - ipv6: fix socket connection with DSCP (correct interpretation of
           the tclass field vs fib rule matching)
      
         - tipc: fix kernel warning when sending SYN message
      
         - vmxnet3: read RSS information from the correct descriptor (eop)"
      
      * tag 'net-6.2-final' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (35 commits)
        devlink: Fix netdev notifier chain corruption
        igb: conditionalize I2C bit banging on external thermal sensor support
        net: mpls: fix stale pointer if allocation fails during device rename
        net/sched: tcindex: search key must be 16 bits
        tipc: fix kernel warning when sending SYN message
        igb: Fix PPS input and output using 3rd and 4th SDP
        net: use a bounce buffer for copying skb->mark
        ixgbe: add double of VLAN header when computing the max MTU
        i40e: add double of VLAN header when computing the max MTU
        ixgbe: allow to increase MTU to 3K with XDP enabled
        net: stmmac: Restrict warning on disabling DMA store and fwd mode
        net/sched: act_ctinfo: use percpu stats
        net: stmmac: fix order of dwmac5 FlexPPS parametrization sequence
        ice: fix lost multicast packets in promisc mode
        ice: Fix check for weight and priority of a scheduling node
        bnxt_en: Fix mqprio and XDP ring checking logic
        net: Fix unwanted sign extension in netdev_stats_to_stats64()
        net/usb: kalmia: Don't pass act_len in usb_bulk_msg error path
        net: openvswitch: fix possible memory leak in ovs_meter_cmd_set()
        af_key: Fix heap information leak
        ...
      3ac88fa4
    • Linus Torvalds's avatar
      Merge tag 'block-6.2-2023-02-16' of git://git.kernel.dk/linux · d3d6f0eb
      Linus Torvalds authored
      Pull block fixes from Jens Axboe:
       "Just a few NVMe fixes that should go into the 6.2 release, adding a
        quirk and fixing two issues introduced in this release:
      
         - NVMe fixes via Christoph:
             - Always return an ERR_PTR from nvme_pci_alloc_dev (Irvin Cote)
             - Add bogus ID quirk for ADATA SX6000PNP (Daniel Wagner)
             - Set the DMA mask earlier (Christoph Hellwig)"
      
      * tag 'block-6.2-2023-02-16' of git://git.kernel.dk/linux:
        nvme-pci: always return an ERR_PTR from nvme_pci_alloc_dev
        nvme-pci: set the DMA mask earlier
        nvme-pci: add bogus ID quirk for ADATA SX6000PNP
      d3d6f0eb
    • Linus Torvalds's avatar
      Merge tag 'spi-v6.2-rc8-abi' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi · b5596f1d
      Linus Torvalds authored
      Pull spi fix from Mark Brown:
       "One more last minute patch for v6.2 updating the parsing of the newly
        added spi-cs-setup-delay-ns.
      
        It's been pointed out that due to the way DT parsing works the change
        in property size is ABI visible so let's not let a release go out
        without it being fixed. The change got split from some earlier ABI
        related fixes to the property since the first version sent had a build
        error"
      
      * tag 'spi-v6.2-rc8-abi' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi:
        spi: Use a 32-bit DT property for spi-cs-setup-delay-ns
      b5596f1d
    • Linus Torvalds's avatar
      Merge tag 'gpio-fixes-for-v6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux · 18902059
      Linus Torvalds authored
      Pull gpio fixes from Bartosz Golaszewski:
      
       - fix a potential Kconfig issue with gpio-mlxbf2 not selecting
         GPIOLIB_IRQCHIP
      
       - another immutable irqchip conversion, this time for gpio-vf610
      
       - fix a wakeup issue on Clevo NH5xAx
      
      * tag 'gpio-fixes-for-v6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux:
        gpio: mlxbf2: select GPIOLIB_IRQCHIP
        gpiolib: acpi: Add a ignore wakeup quirk for Clevo NH5xAx
        gpio: vf610: make irq_chip immutable
        gpiolib: acpi: remove redundant declaration
      18902059