Public bug reported: [ Impact ]
sv57 breaks Go since Go uses the upper bits of a pointer to store data, and it is not ready for sv57 yet. It probably breaks other type of software using this "pointer tagging" technic. The following patch fixes this: at the moment, there is no way to indicate to the kernel to downgrade to sv48, so we must patch the kernel. diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c index 2c4a64e97aec..18a0c70ed313 100644 --- a/arch/riscv/mm/init.c +++ b/arch/riscv/mm/init.c @@ -775,6 +775,10 @@ static __init void set_satp_mode(void) disable_pgtable_l4(); } + /* UBUNTU: Force disable sv57 and fallback to sv48 */ + if (pgtable_l5_enabled) + disable_pgtable_l5(); + memset(early_pg_dir, 0, PAGE_SIZE); memset(early_p4d, 0, PAGE_SIZE); memset(early_pud, 0, PAGE_SIZE); [ Test Plan ] Build an image with the new kernel and make sure snapd started correctly, or that you can compile a simple helloworld written in Go. [ Where problems could occur ] The patch could be wrong, but I already built a kernel with it and it worked fine. ** Affects: linux-riscv (Ubuntu) Importance: Undecided Status: New -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to linux-riscv in Ubuntu. https://bugs.launchpad.net/bugs/1991790 Title: Disable sv57 as the userspace is not ready Status in linux-riscv package in Ubuntu: New Bug description: [ Impact ] sv57 breaks Go since Go uses the upper bits of a pointer to store data, and it is not ready for sv57 yet. It probably breaks other type of software using this "pointer tagging" technic. The following patch fixes this: at the moment, there is no way to indicate to the kernel to downgrade to sv48, so we must patch the kernel. diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c index 2c4a64e97aec..18a0c70ed313 100644 --- a/arch/riscv/mm/init.c +++ b/arch/riscv/mm/init.c @@ -775,6 +775,10 @@ static __init void set_satp_mode(void) disable_pgtable_l4(); } + /* UBUNTU: Force disable sv57 and fallback to sv48 */ + if (pgtable_l5_enabled) + disable_pgtable_l5(); + memset(early_pg_dir, 0, PAGE_SIZE); memset(early_p4d, 0, PAGE_SIZE); memset(early_pud, 0, PAGE_SIZE); [ Test Plan ] Build an image with the new kernel and make sure snapd started correctly, or that you can compile a simple helloworld written in Go. [ Where problems could occur ] The patch could be wrong, but I already built a kernel with it and it worked fine. To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux-riscv/+bug/1991790/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp