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 : [email protected]
Unsubscribe : https://launchpad.net/~kernel-packages
More help : https://help.launchpad.net/ListHelp