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

Reply via email to