Skip to content
Permalink
Greentime-Hu/r…
Switch branches/tags

Commits on Nov 9, 2021

  1. riscv: Fix a kernel panic issue if $s2 is set to a specific value bef…

    …ore entering Linux
    
    Panic log:
    [    0.018707] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
    [    0.023060] Oops [#1]
    [    0.023214] Modules linked in:
    [    0.023725] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.14.0 torvalds#33
    [    0.023955] Hardware name: SiFive,FU800 (DT)
    [    0.024150] epc : __vstate_save+0x1c/0x48
    [    0.024654]  ra : arch_dup_task_struct+0x70/0x108
    [    0.024815] epc : ffffffff80005ad8 ra : ffffffff800035a8 sp : ffffffff81203d50
    [    0.025020]  gp : ffffffff812e8290 tp : ffffffff8120bdc0 t0 : 0000000000000000
    [    0.025216]  t1 : 0000000000000000 t2 : 0000000000000000 s0 : ffffffff81203d80
    [    0.025424]  s1 : ffffffff8120bdc0 a0 : ffffffff8120c820 a1 : 0000000000000000
    [    0.025659]  a2 : 0000000000001000 a3 : 0000000000000000 a4 : 0000000000000600
    [    0.025869]  a5 : ffffffff8120cdc0 a6 : ffffffe00160b400 a7 : ffffffff80a1fe60
    [    0.026069]  s2 : ffffffe0016b8000 s3 : ffffffff81204000 s4 : 0000000000004000
    [    0.026267]  s5 : 0000000000000000 s6 : ffffffe0016b8000 s7 : ffffffe0016b9000
    [    0.026475]  s8 : ffffffff81203ee0 s9 : 0000000000800300 s10: ffffffff812e9088
    [    0.026689]  s11: ffffffd004008000 t3 : 0000000000000000 t4 : 0000000000000100
    [    0.026900]  t5 : 0000000000000600 t6 : ffffffe00167bcc4
    [    0.027057] status: 8000000000000720 badaddr: 0000000000000000 cause: 000000000000000f
    [    0.027344] [<ffffffff80005ad8>] __vstate_save+0x1c/0x48
    [    0.027567] [<ffffffff8000abe8>] copy_process+0x266/0x11a0
    [    0.027739] [<ffffffff8000bc98>] kernel_clone+0x90/0x2aa
    [    0.027915] [<ffffffff8000c062>] kernel_thread+0x76/0x92
    [    0.028075] [<ffffffff8072e34c>] rest_init+0x26/0xfc
    [    0.028242] [<ffffffff80800638>] arch_call_rest_init+0x10/0x18
    [    0.028423] [<ffffffff80800c4a>] start_kernel+0x5ce/0x5fe
    [    0.029188] ---[ end trace 9a59af33f7ba3df4 ]---
    [    0.029479] Kernel panic - not syncing: Attempted to kill the idle task!
    [    0.029907] ---[ end Kernel panic - not syncing: Attempted to kill the idle task! ]---
    
    The NULL pointer accessing caused the kernel panic. There is a NULL
    pointer is because in vstate_save() function it will check
    (regs->status & SR_VS) == SR_VS_DIRTY and this is true, but it shouldn't
    be true because vector is not used here. Since vector is not used, datap
    won't be allocated so it is NULL. The reason why regs->status is set to
    a wrong value is because pt_regs->status is put in stack and it is polluted
    after setup_vm() called.
    
    In prologue of setup_vm(), we can observe it will save s2 to stack however
    s2 is meaningless here because the caller is assembly code and s2 is just
    some value from previous stage. The compiler will base on calling
    convention to save the register to stack. Then 0x80008638 in s2 is saved
    to stack. It might be any value. In this failure case it is 0x80008638 and
    it will accidentally cause SR_VS_DIRTY to call the vstate_save() function.
    
    (gdb) info addr setup_vm
    Symbol "setup_vm" is a function at address 0xffffffff80802c8a.
    (gdb) va2pa 0xffffffff80802c8a
    $64 = 0x80a02c8a
    (gdb) x/10i 0x80a02c8a
       0x80a02c8a:  addi    sp,sp,-48
       0x80a02c8c:  li      a3,-1
       0x80a02c8e:  auipc   a5,0xff7fd
       0x80a02c92:  addi    a5,a5,882
       0x80a02c96:  sd      s0,32(sp)
       0x80a02c98:  sd      s2,16(sp) <-- store to stack
    
    After returning from setup_vm()
    (gdb) x/20i  0x0000000080201138
       0x80201138:  mv      a0,s1
       0x8020113a:  auipc   ra,0x802
       0x8020113e:  jalr    -1200(ra)    <-- jump to setup_vm()
       0x80201142:  auipc   a0,0xa03
    (gdb) p/x $sp
    $70 = 0x81404000
    (gdb) p/x *(struct pt_regs*)($sp-0x120)
    $71 = {
      epc = 0x0,
      ra = 0x0,
      sp = 0x0,
      gp = 0x0,
      tp = 0x0,
      t0 = 0x0,
      t1 = 0x0,
      t2 = 0x0,
      s0 = 0x0,
      s1 = 0x0,
      a0 = 0x0,
      a1 = 0x0,
      a2 = 0x0,
      a3 = 0x81403f90,
      a4 = 0x80c04000,
      a5 = 0x1,
      a6 = 0xffffffff81337000,
      a7 = 0x81096700,
      s2 = 0x81400000,
      s3 = 0xffffffff81200000,
      s4 = 0x81403fd0,
      s5 = 0x80a02c6c,
      s6 = 0x8000000000006800,
      s7 = 0x0,
      s8 = 0xfffffffffffffff3,
      s9 = 0x80c01000,
      s10 = 0x81096700,
      s11 = 0x82200000,
      t3 = 0x81404000,
      t4 = 0x80a02dea,
      t5 = 0x0,
      t6 = 0x82200000,
      status = 0x80008638, <- Wrong value in stack!!!
      badaddr = 0x82200000,
      cause = 0x0,
      orig_a0 = 0x80201142
    }
    (gdb) p/x $pc
    $72 = 0x80201142
    (gdb) p/x sizeof(struct pt_regs)
    $73 = 0x120
    
    Co-developed-by: ShihPo Hung <shihpo.hung@sifive.com>
    Signed-off-by: ShihPo Hung <shihpo.hung@sifive.com>
    Co-developed-by: Vincent Chen <vincent.chen@sifive.com>
    Signed-off-by: Vincent Chen <vincent.chen@sifive.com>
    Signed-off-by: Greentime Hu <greentime.hu@sifive.com>
    greentime authored and intel-lab-lkp committed Nov 9, 2021
  2. riscv: Fix an illegal instruction exception when accessing vlenb with…

    …out enable vector first
    
    It triggered an illegal instruction exception when accessing vlenb CSR
    without enable vector first. To fix this issue, we should enable vector
    before using it and disable vector after using it.
    
    Co-developed-by: Vincent Chen <vincent.chen@sifive.com>
    Signed-off-by: Vincent Chen <vincent.chen@sifive.com>
    Signed-off-by: Greentime Hu <greentime.hu@sifive.com>
    greentime authored and intel-lab-lkp committed Nov 9, 2021
  3. riscv: Add vector extension XOR implementation

    This patch adds support for vector optimized XOR it is tested in spike and
    qemu.
    
    Logs in spike:
    [    0.008365] xor: measuring software checksum speed
    [    0.048885]    8regs     :  1719.000 MB/sec
    [    0.089080]    32regs    :  1717.000 MB/sec
    [    0.129275]    rvv       :  7043.000 MB/sec
    [    0.129525] xor: using function: rvv (7043.000 MB/sec)
    
    Logs in qemu:
    [    0.098943] xor: measuring software checksum speed
    [    0.139391]    8regs     :  2911.000 MB/sec
    [    0.181079]    32regs    :  2813.000 MB/sec
    [    0.224260]    rvv       :    45.000 MB/sec
    [    0.225586] xor: using function: 8regs (2911.000 MB/sec)
    
    Co-developed-by: Han-Kuan Chen <hankuan.chen@sifive.com>
    Signed-off-by: Han-Kuan Chen <hankuan.chen@sifive.com>
    Signed-off-by: Greentime Hu <greentime.hu@sifive.com>
    greentime authored and intel-lab-lkp committed Nov 9, 2021
  4. riscv: Use CSR_STATUS to replace sstatus in vector.S

    It should use the same logic here in both m-mode and s-mode.
    
    Signed-off-by: Greentime Hu <greentime.hu@sifive.com>
    Co-developed-by: Vincent Chen <vincent.chen@sifive.com>
    Signed-off-by: Vincent Chen <vincent.chen@sifive.com>
    greentime authored and intel-lab-lkp committed Nov 9, 2021
  5. riscv: Add support for kernel mode vector

    Add <asm/vector.h> containing kernel_rvv_begin()/kernel_rvv_end() function
    declarations and corresponding definitions in kernel_mode_vector.c
    
    These are needed to wrap uses of vector in kernel mode.
    
    Signed-off-by: Greentime Hu <greentime.hu@sifive.com>
    Co-developed-by: Vincent Chen <vincent.chen@sifive.com>
    Signed-off-by: Vincent Chen <vincent.chen@sifive.com>
    greentime authored and intel-lab-lkp committed Nov 9, 2021
  6. riscv: signal: Report signal frame size to userspace via auxv

    The vector register belongs to the signal context. They need to be stored
    and restored as entering and leaving the signal handler. According to the
    V-extension specification, the maximum length of the vector registers can
    be 2^(XLEN-1). Hence, if userspace refers to the MINSIGSTKSZ to create a
    sigframe, it may not be enough. To resolve this problem, this patch refers
    to the commit 94b07c1
    ("arm64: signal: Report signal frame size to userspace via auxv") to enable
    userspace to know the minimum required sigframe size through the auxiliary
    vector and use it to allocate enough memory for signal context.
    
    Signed-off-by: Greentime Hu <greentime.hu@sifive.com>
    Signed-off-by: Vincent Chen <vincent.chen@sifive.com>
    Vincent Chen authored and intel-lab-lkp committed Nov 9, 2021
  7. riscv: Add sigcontext save/restore for vector

    This patch adds sigcontext save/restore for vector. The vector registers
    will be saved in datap pointer. The datap pointer will be allocated
    dynamically when the task needs in kernel space. The datap pointer will
    be set right after the __riscv_v_state data structure to save all the
    vector registers in the signal handler stack.
    
    Co-developed-by: Vincent Chen <vincent.chen@sifive.com>
    Signed-off-by: Vincent Chen <vincent.chen@sifive.com>
    Signed-off-by: Greentime Hu <greentime.hu@sifive.com>
    greentime authored and intel-lab-lkp committed Nov 9, 2021
  8. riscv: Add ptrace vector support

    This patch adds ptrace support for riscv vector. The vector registers will
    be saved in datap pointer of __riscv_v_state. This pointer will be set
    right after the __riscv_v_state data structure then it will be put in ubuf
    for ptrace system call to get or set. It will check if the datap got from
    ubuf is set to the correct address or not when the ptrace system call is
    trying to set the vector registers.
    
    Co-developed-by: Vincent Chen <vincent.chen@sifive.com>
    Signed-off-by: Vincent Chen <vincent.chen@sifive.com>
    Signed-off-by: Greentime Hu <greentime.hu@sifive.com>
    greentime authored and intel-lab-lkp committed Nov 9, 2021
  9. riscv: Add task switch support for vector

    This patch adds task switch support for vector. It supports partial lazy
    save and restore mechanism. It also supports all lengths of vlen.
    
    [guoren@linux.alibaba.com: First available porting to support vector
    context switching]
    [nick.knight@sifive.com: Rewrite vector.S to support dynamic vlen, xlen and
    code refine]
    [vincent.chen@sifive.com: Fix the might_sleep issue in vstate_save,
    vstate_restore]
    [andrew@sifive.com: Optimize task switch codes of vector]
    
    Suggested-by: Andrew Waterman <andrew@sifive.com>
    Co-developed-by: Nick Knight <nick.knight@sifive.com>
    Signed-off-by: Nick Knight <nick.knight@sifive.com>
    Co-developed-by: Guo Ren <guoren@linux.alibaba.com>
    Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
    Co-developed-by: Vincent Chen <vincent.chen@sifive.com>
    Signed-off-by: Vincent Chen <vincent.chen@sifive.com>
    Signed-off-by: Greentime Hu <greentime.hu@sifive.com>
    greentime authored and intel-lab-lkp committed Nov 9, 2021
  10. riscv: Add vector struct and assembler definitions

    Add vector state context struct in struct thread and asm-offsets.c
    definitions.
    
    The vector registers will be saved in datap pointer of __riscv_v_state. It
    will be dynamically allocated in kernel space. It will be put right after
    the __riscv_v_state data structure in user space.
    
    Co-developed-by: Vincent Chen <vincent.chen@sifive.com>
    Signed-off-by: Vincent Chen <vincent.chen@sifive.com>
    Signed-off-by: Greentime Hu <greentime.hu@sifive.com>
    greentime authored and intel-lab-lkp committed Nov 9, 2021
  11. riscv: Reset vector register

    Reset vector registers at boot-time and disable vector instructions
    execution for kernel mode.
    
    Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
    Co-developed-by: Vincent Chen <vincent.chen@sifive.com>
    Signed-off-by: Vincent Chen <vincent.chen@sifive.com>
    Co-developed-by: Han-Kuan Chen <hankuan.chen@sifive.com>
    Signed-off-by: Han-Kuan Chen <hankuan.chen@sifive.com>
    Co-developed-by: Greentime Hu <greentime.hu@sifive.com>
    Signed-off-by: Greentime Hu <greentime.hu@sifive.com>
    guoren83 authored and intel-lab-lkp committed Nov 9, 2021
  12. riscv: Add has_vector/riscv_vsize to save vector features.

    This patch is used to detect vector support status of CPU and use
    riscv_vsize to save the size of all the vector registers. It assumes
    all harts has the same capabilities in SMP system.
    
    [guoren@linux.alibaba.com: add has_vector checking]
    Signed-off-by: Greentime Hu <greentime.hu@sifive.com>
    Co-developed-by: Guo Ren <guoren@linux.alibaba.com>
    Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
    Co-developed-by: Vincent Chen <vincent.chen@sifive.com>
    Signed-off-by: Vincent Chen <vincent.chen@sifive.com>
    greentime authored and intel-lab-lkp committed Nov 9, 2021
  13. riscv: Add vector feature to compile

    This patch adds a new config option which could enable assembler's
    vector feature.
    
    Signed-off-by: Greentime Hu <greentime.hu@sifive.com>
    Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
    Reviewed-by: Greentime Hu <greentime.hu@sifive.com>
    guoren83 authored and intel-lab-lkp committed Nov 9, 2021
  14. riscv: Add new csr defines related to vector extension

    Follow the riscv vector spec to add new csr numbers.
    
    [guoren@linux.alibaba.com: first porting for new vector related csr]
    Signed-off-by: Greentime Hu <greentime.hu@sifive.com>
    Acked-by: Guo Ren <guoren@kernel.org>
    Co-developed-by: Guo Ren <guoren@linux.alibaba.com>
    Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
    Co-developed-by: Vincent Chen <vincent.chen@sifive.com>
    Signed-off-by: Vincent Chen <vincent.chen@sifive.com>
    greentime authored and intel-lab-lkp committed Nov 9, 2021
  15. riscv: Extending cpufeature.c to detect V-extension

    Current cpufeature.c doesn't support detecting V-extension, because
    "rv64" also contain a 'v' letter and we need to skip it.
    
    Signed-off-by: Guo Ren <ren_guo@c-sky.com>
    Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
    Reviewed-by: Anup Patel <anup@brainfault.org>
    Reviewed-by: Greentime Hu <greentime.hu@sifive.com>
    Signed-off-by: Greentime Hu <greentime.hu@sifive.com>
    guoren83 authored and intel-lab-lkp committed Nov 9, 2021
  16. riscv: Rename __switch_to_aux -> fpu

    The name of __switch_to_aux is not clear and rename it with the
    determine function: __switch_to_fpu. Next we could add other regs'
    switch.
    
    Signed-off-by: Guo Ren <ren_guo@c-sky.com>
    Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
    Reviewed-by: Anup Patel <anup@brainfault.org>
    Reviewed-by: Greentime Hu <greentime.hu@sifive.com>
    Signed-off-by: Greentime Hu <greentime.hu@sifive.com>
    guoren83 authored and intel-lab-lkp committed Nov 9, 2021
  17. riscv: Separate patch for cflags and aflags

    Use "subst fd" in Makefile is a hack way and it's not convenient
    to add new ISA feature. Just separate them into riscv-march-cflags
    and riscv-march-aflags.
    
    Signed-off-by: Guo Ren <ren_guo@c-sky.com>
    Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
    Signed-off-by: Greentime Hu <greentime.hu@sifive.com>
    guoren83 authored and intel-lab-lkp committed Nov 9, 2021

Commits on Oct 31, 2021

  1. Linux 5.15

    torvalds committed Oct 31, 2021
  2. Merge tag 'perf-tools-fixes-for-v5.15-2021-10-31' of git://git.kernel…

    ….org/pub/scm/linux/kernel/git/acme/linux
    
    Pull perf tools fixes from Arnaldo Carvalho de Melo:
    
     - Fix compilation of callchain related code on powerpc with gcc11+
    
     - Fix PERF_SAMPLE_WEIGHT_STRUCT support in 'perf script'
    
     - Check session->header.env.arch before using it, fixing a segmentation
       fault
    
     - Suppress 'rm dlfilter' build messages
    
    * tag 'perf-tools-fixes-for-v5.15-2021-10-31' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux:
      perf script: Fix PERF_SAMPLE_WEIGHT_STRUCT support
      perf callchain: Fix compilation on powerpc with gcc11+
      perf script: Check session->header.env.arch before using it
      perf build: Suppress 'rm dlfilter' build message
    torvalds committed Oct 31, 2021
  3. Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm

    Pull kvm fixes from Paolo Bonzini:
    
     - Fixes for s390 interrupt delivery
    
     - Fixes for Xen emulator bugs showing up as debug kernel WARNs
    
     - Fix another issue with SEV/ES string I/O VMGEXITs
    
    * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
      KVM: x86: Take srcu lock in post_kvm_run_save()
      KVM: SEV-ES: fix another issue with string I/O VMGEXITs
      KVM: x86/xen: Fix kvm_xen_has_interrupt() sleeping in kvm_vcpu_block()
      KVM: x86: switch pvclock_gtod_sync_lock to a raw spinlock
      KVM: s390: preserve deliverable_mask in __airqs_kick_single_vcpu
      KVM: s390: clear kicked_mask before sleeping again
    torvalds committed Oct 31, 2021
  4. perf script: Fix PERF_SAMPLE_WEIGHT_STRUCT support

    -F weight in perf script is broken.
    
      # ./perf mem record
      # ./perf script -F weight
      Samples for 'dummy:HG' event do not have WEIGHT attribute set. Cannot
    print 'weight' field.
    
    The sample type, PERF_SAMPLE_WEIGHT_STRUCT, is an alternative of the
    PERF_SAMPLE_WEIGHT sample type. They share the same space, weight. The
    lower 32 bits are exactly the same for both sample type. The higher 32
    bits may be different for different architecture. For a new kernel on
    x86, the PERF_SAMPLE_WEIGHT_STRUCT is used. For an old kernel or other
    ARCHs, the PERF_SAMPLE_WEIGHT is used.
    
    With -F weight, current perf script will only check the input string
    "weight" with the PERF_SAMPLE_WEIGHT sample type. Because the commit
    ea8d0ed ("perf tools: Support PERF_SAMPLE_WEIGHT_STRUCT") didn't
    update the PERF_SAMPLE_WEIGHT_STRUCT sample type for perf script. For a
    new kernel on x86, the check fails.
    
    Use PERF_SAMPLE_WEIGHT_TYPE, which supports both sample types, to
    replace PERF_SAMPLE_WEIGHT
    
    Fixes: ea8d0ed ("perf tools: Support PERF_SAMPLE_WEIGHT_STRUCT")
    Reported-by: Joe Mario <jmario@redhat.com>
    Reviewed-by: Kajol Jain <kjain@linux.ibm.com>
    Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
    Tested-by: Jiri Olsa <jolsa@redhat.com>
    Tested-by: Joe Mario <jmario@redhat.com>
    Acked-by: Jiri Olsa <jolsa@redhat.com>
    Acked-by: Joe Mario <jmario@redhat.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Link: https://lore.kernel.org/r/1632929894-102778-1-git-send-email-kan.liang@linux.intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Kan Liang authored and Arnaldo Carvalho de Melo committed Oct 31, 2021
  5. perf callchain: Fix compilation on powerpc with gcc11+

    Got following build fail on powerpc:
    
        CC      arch/powerpc/util/skip-callchain-idx.o
      In function ‘check_return_reg’,
          inlined from ‘check_return_addr’ at arch/powerpc/util/skip-callchain-idx.c:213:7,
          inlined from ‘arch_skip_callchain_idx’ at arch/powerpc/util/skip-callchain-idx.c:265:7:
      arch/powerpc/util/skip-callchain-idx.c:54:18: error: ‘dwarf_frame_register’ accessing 96 bytes \
      in a region of size 64 [-Werror=stringop-overflow=]
         54 |         result = dwarf_frame_register(frame, ra_regno, ops_mem, &ops, &nops);
            |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      arch/powerpc/util/skip-callchain-idx.c: In function ‘arch_skip_callchain_idx’:
      arch/powerpc/util/skip-callchain-idx.c:54:18: note: referencing argument 3 of type ‘Dwarf_Op *’
      In file included from /usr/include/elfutils/libdwfl.h:32,
                       from arch/powerpc/util/skip-callchain-idx.c:10:
      /usr/include/elfutils/libdw.h:1069:12: note: in a call to function ‘dwarf_frame_register’
       1069 | extern int dwarf_frame_register (Dwarf_Frame *frame, int regno,
            |            ^~~~~~~~~~~~~~~~~~~~
      cc1: all warnings being treated as errors
    
    The dwarf_frame_register args changed with [1],
    Updating ops_mem accordingly.
    
    [1] https://sourceware.org/git/?p=elfutils.git;a=commit;h=5621fe5443da23112170235dd5cac161e5c75e65
    
    Reviewed-by: Kajol Jain <kjain@linux.ibm.com>
    Signed-off-by: Jiri Olsa <jolsa@redhat.com>
    Acked-by: Mark Wieelard <mjw@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Michael Petlan <mpetlan@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
    Link: https://lore.kernel.org/r/20210928195253.1267023-1-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Jiri Olsa authored and Arnaldo Carvalho de Melo committed Oct 31, 2021
  6. perf script: Check session->header.env.arch before using it

    When perf.data is not written cleanly, we would like to process existing
    data as much as possible (please see f_header.data.size == 0 condition
    in perf_session__read_header). However, perf.data with partial data may
    crash perf. Specifically, we see crash in 'perf script' for NULL
    session->header.env.arch.
    
    Fix this by checking session->header.env.arch before using it to determine
    native_arch. Also split the if condition so it is easier to read.
    
    Committer notes:
    
    If it is a pipe, we already assume is a native arch, so no need to check
    session->header.env.arch.
    
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: kernel-team@fb.com
    Cc: stable@vger.kernel.org
    Link: http://lore.kernel.org/lkml/20211004053238.514936-1-songliubraving@fb.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    liu-song-6 authored and Arnaldo Carvalho de Melo committed Oct 31, 2021
  7. perf build: Suppress 'rm dlfilter' build message

    The following build message:
    
    	rm dlfilters/dlfilter-test-api-v0.o
    
    is unwanted.
    
    The object file is being treated as an intermediate file and being
    automatically removed. Mark the object file as .SECONDARY to prevent
    removal and hence the message.
    
    Requested-by: Arnaldo Carvalho de Melo <acme@kernel.org>
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Link: http://lore.kernel.org/lkml/20210930062849.110416-1-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    ahunter6 authored and Arnaldo Carvalho de Melo committed Oct 31, 2021

Commits on Oct 30, 2021

  1. Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/g…

    …it/jejb/scsi
    
    Pull SCSI fixes from James Bottomley:
     "Three small fixes, all in drivers, and one sizeable update to the UFS
      driver to remove the HPB 2.0 feature that has been objected to by Jens
      and Christoph.
    
      Although the UFS patch is large and last minute, it's essentially the
      least intrusive way of resolving the objections in time for the 5.15
      release"
    
    * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
      scsi: ufs: ufshpb: Remove HPB2.0 flows
      scsi: mpt3sas: Fix reference tag handling for WRITE_INSERT
      scsi: ufs: ufs-exynos: Correct timeout value setting registers
      scsi: ibmvfc: Fix up duplicate response detection
    torvalds committed Oct 30, 2021
  2. Merge tag 'clk-fixes-for-linus' of git://git.kernel.org/pub/scm/linux…

    …/kernel/git/clk/linux
    
    Pull clk fix from Stephen Boyd:
     "One fix for the composite clk that broke when we changed this clk type
      to use the determine_rate instead of round_rate clk op by default.
      This caused lots of problems on Rockchip SoCs because they heavily use
      the composite clk code to model the clk tree"
    
    * tag 'clk-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux:
      clk: composite: Also consider .determine_rate for rate + mux composites
    torvalds committed Oct 30, 2021
  3. Merge tag 'riscv-for-linus-5.15-rc8' of git://git.kernel.org/pub/scm/…

    …linux/kernel/git/riscv/linux
    
    Pull RISC-V fixes from Palmer Dabbelt:
     "These are pretty late, but they do fix concrete issues.
    
       - ensure the trap vector's address is aligned.
    
       - avoid re-populating the KASAN shadow memory.
    
       - allow kasan to build without warnings, which have recently become
         errors"
    
    * tag 'riscv-for-linus-5.15-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux:
      riscv: Fix asan-stack clang build
      riscv: Do not re-populate shadow memory with kasan_populate_early_shadow
      riscv: fix misalgned trap vector base address
    torvalds committed Oct 30, 2021
  4. scsi: ufs: ufshpb: Remove HPB2.0 flows

    The Host Performance Buffer feature allows UFS read commands to carry the
    physical media addresses along with the LBAs, thus allowing less internal
    L2P-table switches in the device.  HPB1.0 allowed a single LBA, while
    HPB2.0 increases this capacity up to 255 blocks.
    
    Carrying more than a single record, the read operation is no longer purely
    of type "read" but a "hybrid" command: Writing the physical address to the
    device in one operation and reading back the required payload in another.
    
    The JEDEC HPB spec defines two commands for this operation:
    HPB-WRITE-BUFFER (0x2) to write the physical addresses to device, and
    HPB-READ to read the payload.
    
    With the current HPB design the UFS driver has no alternative but to divide
    the READ request into 2 separate commands: HPB-WRITE-BUFFER and HPB-READ.
    This causes a great deal of aggravation to the block layer guys who
    demanded that we completely revert the entire HPB driver regardless of the
    huge amount of corporate effort already invested in it.
    
    As a compromise, remove only the pieces that implement the 2.0
    specification. This is done as a matter of urgency for the final 5.15
    release.
    
    Link: https://lore.kernel.org/r/20211030062301.248-1-avri.altman@wdc.com
    Tested-by: Avri Altman <avri.altman@wdc.com>
    Tested-by: Bean Huo <beanhuo@micron.com>
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Reviewed-by: Bean Huo <beanhuo@micron.com>
    Co-developed-by: James Bottomley <James.Bottomley@HansenPartnership.com>
    Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
    Signed-off-by: Avri Altman <avri.altman@wdc.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    avri-altman authored and martinkpetersen committed Oct 30, 2021
  5. Merge tag 'powerpc-5.15-6' of git://git.kernel.org/pub/scm/linux/kern…

    …el/git/powerpc/linux
    
    Pull powerpc fixes from Michael Ellerman:
     "Three commits fixing some issues introduced with the recent IOMMU
      changes we merged.
    
      Thanks to Alexey Kardashevskiy"
    
    * tag 'powerpc-5.15-6' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
      powerpc/pseries/iommu: Create huge DMA window if no MMIO32 is present
      powerpc/pseries/iommu: Check if the default window in use before removing it
      powerpc/pseries/iommu: Use correct vfree for it_map
    torvalds committed Oct 30, 2021
  6. Merge tag 'gpio-fixes-for-v5.15' of git://git.kernel.org/pub/scm/linu…

    …x/kernel/git/brgl/linux
    
    Pull gpio fixes from Bartosz Golaszewski:
    
     - fix the return value check when parsing the ngpios property in
       gpio-xgs-iproc
    
     - check the return value of bgpio_init() in gpio-mlxbf2
    
    * tag 'gpio-fixes-for-v5.15' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux:
      gpio: mlxbf2.c: Add check for bgpio_init failure
      gpio: xgs-iproc: fix parsing of ngpios property
    torvalds committed Oct 30, 2021

Commits on Oct 29, 2021

  1. Merge tag 'block-5.15-2021-10-29' of git://git.kernel.dk/linux-block

    Pull block fixes from Jens Axboe:
    
     - NVMe pull request:
          - fix nvmet-tcp header digest verification (Amit Engel)
          - fix a memory leak in nvmet-tcp when releasing a queue (Maurizio
            Lombardi)
          - fix nvme-tcp H2CData PDU send accounting again (Sagi Grimberg)
          - fix digest pointer calculation in nvme-tcp and nvmet-tcp (Varun
            Prakash)
          - fix possible nvme-tcp req->offset corruption (Varun Prakash)
    
     - Queue drain ordering fix (Ming)
    
     - Partition check regression for zoned devices (Shin'ichiro)
    
     - Zone queue restart fix (Naohiro)
    
    * tag 'block-5.15-2021-10-29' of git://git.kernel.dk/linux-block:
      block: Fix partition check for host-aware zoned block devices
      nvmet-tcp: fix header digest verification
      nvmet-tcp: fix data digest pointer calculation
      nvme-tcp: fix data digest pointer calculation
      nvme-tcp: fix possible req->offset corruption
      block: schedule queue restart after BLK_STS_ZONE_RESOURCE
      block: drain queue after disk is removed from sysfs
      nvme-tcp: fix H2CData PDU send accounting (again)
      nvmet-tcp: fix a memory leak when releasing a queue
    torvalds committed Oct 29, 2021
  2. scsi: mpt3sas: Fix reference tag handling for WRITE_INSERT

    Testing revealed a problem with how the reference tag was handled for
    a WRITE_INSERT operation. The SCSI_PROT_REF_CHECK flag is not set when
    the controller is asked to generate the protection information
    (i.e. not DIX). And as a result the initial reference tag would not be
    set in the WRITE_INSERT case.
    
    Separate handling of the REF_CHECK and REF_INCREMENT flags to align
    with both the DIX spec and the MPI implementation.
    
    Link: https://lore.kernel.org/r/20211028034202.24225-1-martin.petersen@oracle.com
    Fixes: b3e2c72 ("scsi: mpt3sas: Use the proper SCSI midlayer interfaces for PI")
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    martinkpetersen committed Oct 29, 2021
  3. Merge tag 'mmc-v5.15-rc5' of git://git.kernel.org/pub/scm/linux/kerne…

    …l/git/ulfh/mmc
    
    Pull MMC fixes from Ulf Hansson:
    
     - tmio: Re-enable card irqs after a reset
    
     - mtk-sd: Fixup probing of cqhci for crypto
    
     - cqhci: Fix support for suspend/resume
    
     - vub300: Fix control-message timeouts
    
     - dw_mmc-exynos: Fix support for tuning
    
     - winbond: Silences build errors on M68K
    
     - sdhci-esdhc-imx: Fix support for tuning
    
     - sdhci-pci: Read card detect from ACPI for Intel Merrifield
    
     - sdhci: Fix eMMC support for Thundercomm TurboX CM2290
    
    * tag 'mmc-v5.15-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc:
      mmc: tmio: reenable card irqs after the reset callback
      mmc: mediatek: Move cqhci init behind ungate clock
      mmc: cqhci: clear HALT state after CQE enable
      mmc: vub300: fix control-message timeouts
      mmc: dw_mmc: exynos: fix the finding clock sample value
      mmc: winbond: don't build on M68K
      mmc: sdhci-esdhc-imx: clear the buffer_read_ready to reset standard tuning circuit
      mmc: sdhci-pci: Read card detect from ACPI for Intel Merrifield
      mmc: sdhci: Map more voltage level to SDHCI_POWER_330
    torvalds committed Oct 29, 2021
  4. Merge tag 'for-5.15-rc7-tag' of git://git.kernel.org/pub/scm/linux/ke…

    …rnel/git/kdave/linux
    
    Pull btrfs fixes from David Sterba:
     "Last minute fixes for crash on 32bit architectures when compression is
      in use. It's a regression introduced in 5.15-rc and I'd really like
      not let this into the final release, fixes via stable trees would add
      unnecessary delay.
    
      The problem is on 32bit architectures with highmem enabled, the pages
      for compression may need to be kmapped, while the patches removed that
      as we don't use GFP_HIGHMEM allocations anymore. The pages that don't
      come from local allocation still may be from highmem. Despite being on
      32bit there's enough such ARM machines in use so it's not a marginal
      issue.
    
      I did full reverts of the patches one by one instead of a huge one.
      There's one exception for the "lzo" revert as there was an
      intermediate patch touching the same code to make it compatible with
      subpage. I can't revert that one too, so the revert in lzo.c is
      manual. Qu Wenruo has worked on that with me and verified the changes"
    
    * tag 'for-5.15-rc7-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux:
      Revert "btrfs: compression: drop kmap/kunmap from lzo"
      Revert "btrfs: compression: drop kmap/kunmap from zlib"
      Revert "btrfs: compression: drop kmap/kunmap from zstd"
      Revert "btrfs: compression: drop kmap/kunmap from generic helpers"
    torvalds committed Oct 29, 2021
  5. Merge tag 'trace-v5.15-rc6-3' of git://git.kernel.org/pub/scm/linux/k…

    …ernel/git/rostedt/linux-trace
    
    Pull tracing comment fixes from Steven Rostedt:
    
     - Some bots have informed me that some of the ftrace functions
       kernel-doc has formatting issues.
    
     - Also, fix my snake instinct.
    
    * tag 'trace-v5.15-rc6-3' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
      tracing: Fix misspelling of "missing"
      ftrace: Fix kernel-doc formatting issues
    torvalds committed Oct 29, 2021
Older