All of lore.kernel.org
 help / color / mirror / Atom feed
From: Deepak Gupta <debug@rivosinc.com>
To: qemu-riscv@nongnu.org, qemu-devel@nongnu.org
Cc: palmer@dabbelt.com, Alistair.Francis@wdc.com, bmeng.cn@gmail.com,
	liwei1518@gmail.com, dbarboza@ventanamicro.com,
	zhiwei_liu@linux.alibaba.com, jim.shu@sifive.com,
	andy.chiu@sifive.com, kito.cheng@sifive.com,
	Deepak Gupta <debug@rivosinc.com>
Subject: [PATCH v5 00/15] riscv support for control flow integrity extensions
Date: Mon, 19 Aug 2024 17:01:14 -0700	[thread overview]
Message-ID: <20240820000129.3522346-1-debug@rivosinc.com> (raw)


v5 for riscv zicfilp and zicfiss extensions support in qemu.

Links for previous versions
[1] - v1 https://lists.nongnu.org/archive/html/qemu-devel/2024-07/msg06017.html
[2] - v2 https://lore.kernel.org/all/ed23bcbc-fdc4-4492-803c-daa95880375a@linaro.org/T/
[3] - v3 https://lists.nongnu.org/archive/html/qemu-devel/2024-08/msg01005.html
[4] - v4 https://lore.kernel.org/all/20240816010711.3055425-6-debug@rivosinc.com/T/

---
v5:
   - Simplified elp tracking and lpad implementation as per suggestion by richard
   - Simplified shadow stack mmu checks as per suggestion by richard
   - Converged zicfiss compressed and non-comressed instructions to same translation
   - Removed trace hooks. Don't need for upstream.

v4:
   - elp state in cpu is true/false instead of enum and elp cleared
     unconditionally on trap entry. elp in *status cleared unconditionally on
     trap return. 
   - Moved logic for branch tracking in instruction translation from tb_start.
   - fixed zicfiss dependency on 'A'
   - `cpu_get_fcfien/bcfien` helpers checks fixed to check for extension first.
   - removed trace hook enums. Instead added dedicated trace helpers wherever needed.
   - fixed/simplified instruction format in decoder for lpad, sspush, sspopchk
   - simplified tlb index logic for shadow stack instructions. Removed SUM TB_FLAG
   - access to ssp CSR is gated on `cpu_get_bcfien` instead of duplicated logic
   - removed vDSO related changes for now. 
v3:
   - Removed prctl specific patches because they need to be upstream
     in kernel first.
   - As suggested by Richard, added TB flag if fcfi enabled
   - Re-worked translation for landing pad and shadow stack instructions
     to not require helper.
   - tcg helpers only for cfi violation cases so that trace hooks can be
     placed.
   - Style changes.
   - fixes assert condition in accel/tcg

v2:
   - added missed file (in v1) for shadow stack instructions implementation.

Deepak Gupta (15):
  target/riscv: Add zicfilp extension
  target/riscv: Introduce elp state and enabling controls for zicfilp
  target/riscv: save and restore elp state on priv transitions
  target/riscv: additional code information for sw check
  target/riscv: tracking indirect branches (fcfi) for zicfilp
  target/riscv: zicfilp `lpad` impl and branch tracking
  disas/riscv: enable `lpad` disassembly
  target/riscv: Add zicfiss extension
  target/riscv: introduce ssp and enabling controls for zicfiss
  target/riscv: tb flag for shadow stack  instructions
  target/riscv: mmu changes for zicfiss shadow stack protection
  target/riscv: implement zicfiss instructions
  target/riscv: compressed encodings for sspush and sspopchk
  disas/riscv: enable disassembly for zicfiss instructions
  disas/riscv: enable disassembly for compressed sspush/sspopchk

 disas/riscv.c                                 |  77 +++++++++-
 disas/riscv.h                                 |   4 +
 target/riscv/cpu.c                            |  17 +++
 target/riscv/cpu.h                            |  15 ++
 target/riscv/cpu_bits.h                       |  17 +++
 target/riscv/cpu_cfg.h                        |   2 +
 target/riscv/cpu_helper.c                     | 140 +++++++++++++++++-
 target/riscv/cpu_user.h                       |   1 +
 target/riscv/csr.c                            |  84 +++++++++++
 target/riscv/insn16.decode                    |   4 +
 target/riscv/insn32.decode                    |  26 +++-
 target/riscv/insn_trans/trans_rva.c.inc       |  41 +++++
 target/riscv/insn_trans/trans_rvi.c.inc       |  55 +++++++
 target/riscv/insn_trans/trans_rvzicfiss.c.inc |  73 +++++++++
 target/riscv/internals.h                      |   3 +
 target/riscv/op_helper.c                      |  18 +++
 target/riscv/pmp.c                            |   5 +
 target/riscv/pmp.h                            |   3 +-
 target/riscv/tcg/tcg-cpu.c                    |  24 +++
 target/riscv/translate.c                      |  30 +++-
 20 files changed, 625 insertions(+), 14 deletions(-)
 create mode 100644 target/riscv/insn_trans/trans_rvzicfiss.c.inc

-- 
2.44.0



             reply	other threads:[~2024-08-20  0:02 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-20  0:01 Deepak Gupta [this message]
2024-08-20  0:01 ` [PATCH v5 01/15] target/riscv: Add zicfilp extension Deepak Gupta
2024-08-20  0:01 ` [PATCH v5 02/15] target/riscv: Introduce elp state and enabling controls for zicfilp Deepak Gupta
2024-08-20  5:17   ` Richard Henderson
2024-08-20  0:01 ` [PATCH v5 03/15] target/riscv: save and restore elp state on priv transitions Deepak Gupta
2024-08-20  0:01 ` [PATCH v5 04/15] target/riscv: additional code information for sw check Deepak Gupta
2024-08-20  0:01 ` [PATCH v5 05/15] target/riscv: tracking indirect branches (fcfi) for zicfilp Deepak Gupta
2024-08-20  5:24   ` Richard Henderson
2024-08-20  0:01 ` [PATCH v5 06/15] target/riscv: zicfilp `lpad` impl and branch tracking Deepak Gupta
2024-08-20  5:29   ` Richard Henderson
2024-08-20  0:01 ` [PATCH v5 07/15] disas/riscv: enable `lpad` disassembly Deepak Gupta
2024-08-20  0:01 ` [PATCH v5 08/15] target/riscv: Add zicfiss extension Deepak Gupta
2024-08-20  0:01 ` [PATCH v5 09/15] target/riscv: introduce ssp and enabling controls for zicfiss Deepak Gupta
2024-08-20  5:34   ` Richard Henderson
2024-08-20  0:01 ` [PATCH v5 10/15] target/riscv: tb flag for shadow stack instructions Deepak Gupta
2024-08-20  0:01 ` [PATCH v5 11/15] target/riscv: mmu changes for zicfiss shadow stack protection Deepak Gupta
2024-08-20  7:35   ` Deepak Gupta
2024-08-20  9:20     ` Richard Henderson
2024-08-20 18:55       ` Deepak Gupta
2024-08-20 19:45         ` Deepak Gupta
2024-08-20 22:33         ` Richard Henderson
2024-08-20  0:01 ` [PATCH v5 12/15] target/riscv: implement zicfiss instructions Deepak Gupta
2024-08-20  0:01 ` [PATCH v5 13/15] target/riscv: compressed encodings for sspush and sspopchk Deepak Gupta
2024-08-20  0:01 ` [PATCH v5 14/15] disas/riscv: enable disassembly for zicfiss instructions Deepak Gupta
2024-08-20  0:01 ` [PATCH v5 15/15] disas/riscv: enable disassembly for compressed sspush/sspopchk Deepak Gupta

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240820000129.3522346-1-debug@rivosinc.com \
    --to=debug@rivosinc.com \
    --cc=Alistair.Francis@wdc.com \
    --cc=andy.chiu@sifive.com \
    --cc=bmeng.cn@gmail.com \
    --cc=dbarboza@ventanamicro.com \
    --cc=jim.shu@sifive.com \
    --cc=kito.cheng@sifive.com \
    --cc=liwei1518@gmail.com \
    --cc=palmer@dabbelt.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-riscv@nongnu.org \
    --cc=zhiwei_liu@linux.alibaba.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.