diff -Nru opensbi-1.1/debian/changelog opensbi-1.1/debian/changelog --- opensbi-1.1/debian/changelog 2022-07-01 00:14:17.000000000 +0200 +++ opensbi-1.1/debian/changelog 2022-11-07 14:25:01.000000000 +0100 @@ -1,3 +1,11 @@ +opensbi (1.1-1ubuntu1) lunar; urgency=medium + + * Fix emulation of fence.tso hanging in endless loop on Allwinner D1 + d/p/lib-sbi_illegal_insn-Fix-FENCE.TSO-emulation-infinit.patch + (LP: #1995860) + + -- Heinrich Schuchardt Mon, 07 Nov 2022 14:25:01 +0100 + opensbi (1.1-1) unstable; urgency=medium * New upstream release. diff -Nru opensbi-1.1/debian/control opensbi-1.1/debian/control --- opensbi-1.1/debian/control 2022-06-30 23:52:18.000000000 +0200 +++ opensbi-1.1/debian/control 2022-11-07 13:22:11.000000000 +0100 @@ -1,7 +1,8 @@ Source: opensbi Section: misc Priority: optional -Maintainer: Vagrant Cascadian +Maintainer: Ubuntu Developers +XSCB-Original-Maintainer: Vagrant Cascadian Uploaders: Karsten Merker Build-Depends: debhelper-compat (=13), gcc-riscv64-linux-gnu, diff -Nru opensbi-1.1/debian/patches/lib-sbi_illegal_insn-Fix-FENCE.TSO-emulation-infinit.patch opensbi-1.1/debian/patches/lib-sbi_illegal_insn-Fix-FENCE.TSO-emulation-infinit.patch --- opensbi-1.1/debian/patches/lib-sbi_illegal_insn-Fix-FENCE.TSO-emulation-infinit.patch 1970-01-01 01:00:00.000000000 +0100 +++ opensbi-1.1/debian/patches/lib-sbi_illegal_insn-Fix-FENCE.TSO-emulation-infinit.patch 2022-11-07 13:18:42.000000000 +0100 @@ -0,0 +1,35 @@ +From 111afc12306e4368fa112f97d31ea802c4561294 Mon Sep 17 00:00:00 2001 +From: Rahul Pathak +Date: Fri, 12 Aug 2022 19:24:42 +0530 +Subject: [PATCH] lib: sbi_illegal_insn: Fix FENCE.TSO emulation infinite trap + loop + +In case of missing "FENCE.TSO" instruction implementation, +opensbi can emulate the "FENCE.TSO" with "FENCE RW,RW", but +mepc was not incremented to continue from the next instruction +causing infinite trap. + +Fixes: cb8271c8 ("lib: sbi_illegal_insn: Add emulation for fence.tso") +Signed-off-by: Rahul Pathak +Reviewed-by: Andrew Jones +Reviewed-by: Xiang W +Reviewed-by: Samuel Holland +--- + lib/sbi/sbi_illegal_insn.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/lib/sbi/sbi_illegal_insn.c b/lib/sbi/sbi_illegal_insn.c +index ecd3508..9691bce 100644 +--- a/lib/sbi/sbi_illegal_insn.c ++++ b/lib/sbi/sbi_illegal_insn.c +@@ -40,6 +40,7 @@ static int misc_mem_opcode_insn(ulong insn, struct sbi_trap_regs *regs) + /* Errata workaround: emulate `fence.tso` as `fence rw, rw`. */ + if ((insn & INSN_MASK_FENCE_TSO) == INSN_MATCH_FENCE_TSO) { + smp_mb(); ++ regs->mepc += 4; + return 0; + } + +-- +2.37.2 + diff -Nru opensbi-1.1/debian/patches/series opensbi-1.1/debian/patches/series --- opensbi-1.1/debian/patches/series 1970-01-01 01:00:00.000000000 +0100 +++ opensbi-1.1/debian/patches/series 2022-11-07 13:18:42.000000000 +0100 @@ -0,0 +1 @@ +lib-sbi_illegal_insn-Fix-FENCE.TSO-emulation-infinit.patch