target/riscv/csr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
These variables should be target_ulong. If truncated to int,
the bool conditions they indicate will be wrong.
As satp is very important for Linux, this bug almost fails every boot.
Signed-off-by: LIU Zhiwei <zhiwei_liu@c-sky.com>
---
target/riscv/csr.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/target/riscv/csr.c b/target/riscv/csr.c
index 50a2c3a3b4..ba9818f6a5 100644
--- a/target/riscv/csr.c
+++ b/target/riscv/csr.c
@@ -986,7 +986,7 @@ static RISCVException read_satp(CPURISCVState *env, int csrno,
static RISCVException write_satp(CPURISCVState *env, int csrno,
target_ulong val)
{
- int vm, mask, asid;
+ target_ulong vm, mask, asid;
if (!riscv_feature(env, RISCV_FEATURE_MMU)) {
return RISCV_EXCP_NONE;
--
2.25.1
On Wed, Sep 1, 2021 at 10:51 PM LIU Zhiwei <zhiwei_liu@c-sky.com> wrote: > > These variables should be target_ulong. If truncated to int, > the bool conditions they indicate will be wrong. > > As satp is very important for Linux, this bug almost fails every boot. > > Signed-off-by: LIU Zhiwei <zhiwei_liu@c-sky.com> Thanks! Applied to riscv-to-apply.next Alistair > --- > target/riscv/csr.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/target/riscv/csr.c b/target/riscv/csr.c > index 50a2c3a3b4..ba9818f6a5 100644 > --- a/target/riscv/csr.c > +++ b/target/riscv/csr.c > @@ -986,7 +986,7 @@ static RISCVException read_satp(CPURISCVState *env, int csrno, > static RISCVException write_satp(CPURISCVState *env, int csrno, > target_ulong val) > { > - int vm, mask, asid; > + target_ulong vm, mask, asid; > > if (!riscv_feature(env, RISCV_FEATURE_MMU)) { > return RISCV_EXCP_NONE; > -- > 2.25.1 > >
On Wed, Sep 1, 2021 at 8:51 PM LIU Zhiwei <zhiwei_liu@c-sky.com> wrote: > > These variables should be target_ulong. If truncated to int, > the bool conditions they indicate will be wrong. > > As satp is very important for Linux, this bug almost fails every boot. Could you please describe which Linux configuration is broken? I have a 64-bit 5.10 kernel and it boots fine. Please add: Fixes: 419ddf00ed78 ("target/riscv: Remove the hardcoded SATP_MODE macro") > Signed-off-by: LIU Zhiwei <zhiwei_liu@c-sky.com> > --- > target/riscv/csr.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/target/riscv/csr.c b/target/riscv/csr.c > index 50a2c3a3b4..ba9818f6a5 100644 > --- a/target/riscv/csr.c > +++ b/target/riscv/csr.c > @@ -986,7 +986,7 @@ static RISCVException read_satp(CPURISCVState *env, int csrno, > static RISCVException write_satp(CPURISCVState *env, int csrno, > target_ulong val) > { > - int vm, mask, asid; > + target_ulong vm, mask, asid; > > if (!riscv_feature(env, RISCV_FEATURE_MMU)) { > return RISCV_EXCP_NONE; Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
On 2021/9/1 下午9:05, Bin Meng wrote: > On Wed, Sep 1, 2021 at 8:51 PM LIU Zhiwei <zhiwei_liu@c-sky.com> wrote: >> These variables should be target_ulong. If truncated to int, >> the bool conditions they indicate will be wrong. >> >> As satp is very important for Linux, this bug almost fails every boot. > Could you please describe which Linux configuration is broken? I use the image from: https://gitlab.com/c-sky/buildroot/-/jobs/1251564514/artifacts/browse/output/images/ > I have > a 64-bit 5.10 kernel and it boots fine. The login is mostly OK for me. But the busybox can't run properly. Thanks, Zhiwei > Please add: > > Fixes: 419ddf00ed78 ("target/riscv: Remove the hardcoded SATP_MODE macro") > >> Signed-off-by: LIU Zhiwei <zhiwei_liu@c-sky.com> >> --- >> target/riscv/csr.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/target/riscv/csr.c b/target/riscv/csr.c >> index 50a2c3a3b4..ba9818f6a5 100644 >> --- a/target/riscv/csr.c >> +++ b/target/riscv/csr.c >> @@ -986,7 +986,7 @@ static RISCVException read_satp(CPURISCVState *env, int csrno, >> static RISCVException write_satp(CPURISCVState *env, int csrno, >> target_ulong val) >> { >> - int vm, mask, asid; >> + target_ulong vm, mask, asid; >> >> if (!riscv_feature(env, RISCV_FEATURE_MMU)) { >> return RISCV_EXCP_NONE; > Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
On Thu, Sep 2, 2021 at 9:02 AM LIU Zhiwei <zhiwei_liu@c-sky.com> wrote: > > > On 2021/9/1 下午9:05, Bin Meng wrote: > > On Wed, Sep 1, 2021 at 8:51 PM LIU Zhiwei <zhiwei_liu@c-sky.com> wrote: > >> These variables should be target_ulong. If truncated to int, > >> the bool conditions they indicate will be wrong. > >> > >> As satp is very important for Linux, this bug almost fails every boot. > > Could you please describe which Linux configuration is broken? > > I use the image from: > > https://gitlab.com/c-sky/buildroot/-/jobs/1251564514/artifacts/browse/output/images/ > > > I have > > a 64-bit 5.10 kernel and it boots fine. > > The login is mostly OK for me. But the busybox can't run properly. Which kernel version is this? Could you please investigate and indicate in the commit message? I just tested current qemu-system-riscv64 can boot to Ubuntu 20.04 distro user space. Regards, Bin
On 2021/9/2 上午9:59, Bin Meng wrote: > On Thu, Sep 2, 2021 at 9:02 AM LIU Zhiwei <zhiwei_liu@c-sky.com> wrote: >> >> On 2021/9/1 下午9:05, Bin Meng wrote: >>> On Wed, Sep 1, 2021 at 8:51 PM LIU Zhiwei <zhiwei_liu@c-sky.com> wrote: >>>> These variables should be target_ulong. If truncated to int, >>>> the bool conditions they indicate will be wrong. >>>> >>>> As satp is very important for Linux, this bug almost fails every boot. >>> Could you please describe which Linux configuration is broken? >> I use the image from: >> >> https://gitlab.com/c-sky/buildroot/-/jobs/1251564514/artifacts/browse/output/images/ >> >>> I have >>> a 64-bit 5.10 kernel and it boots fine. >> The login is mostly OK for me. But the busybox can't run properly. > Which kernel version is this? 5.10.4 > Could you please investigate and > indicate in the commit message? > > I just tested current qemu-system-riscv64 can boot to Ubuntu 20.04 > distro user space. Very strange. This will cause tlb_flush can't be called in this function. Thanks, Zhiwei > > Regards, > Bin
On Thu, Sep 2, 2021 at 10:44 AM LIU Zhiwei <zhiwei_liu@c-sky.com> wrote: > > > On 2021/9/2 上午9:59, Bin Meng wrote: > > On Thu, Sep 2, 2021 at 9:02 AM LIU Zhiwei <zhiwei_liu@c-sky.com> wrote: > >> > >> On 2021/9/1 下午9:05, Bin Meng wrote: > >>> On Wed, Sep 1, 2021 at 8:51 PM LIU Zhiwei <zhiwei_liu@c-sky.com> wrote: > >>>> These variables should be target_ulong. If truncated to int, > >>>> the bool conditions they indicate will be wrong. > >>>> > >>>> As satp is very important for Linux, this bug almost fails every boot. > >>> Could you please describe which Linux configuration is broken? > >> I use the image from: > >> > >> https://gitlab.com/c-sky/buildroot/-/jobs/1251564514/artifacts/browse/output/images/ > >> > >>> I have > >>> a 64-bit 5.10 kernel and it boots fine. > >> The login is mostly OK for me. But the busybox can't run properly. > > Which kernel version is this? > 5.10.4 > > Could you please investigate and > > indicate in the commit message? > > > > I just tested current qemu-system-riscv64 can boot to Ubuntu 20.04 > > distro user space. > > Very strange. This will cause tlb_flush can't be called in this function. > Did your kernel enable asid? Regards, Bin
On 2021/9/2 上午10:47, Bin Meng wrote: > On Thu, Sep 2, 2021 at 10:44 AM LIU Zhiwei <zhiwei_liu@c-sky.com> wrote: >> >> On 2021/9/2 上午9:59, Bin Meng wrote: >>> On Thu, Sep 2, 2021 at 9:02 AM LIU Zhiwei <zhiwei_liu@c-sky.com> wrote: >>>> On 2021/9/1 下午9:05, Bin Meng wrote: >>>>> On Wed, Sep 1, 2021 at 8:51 PM LIU Zhiwei <zhiwei_liu@c-sky.com> wrote: >>>>>> These variables should be target_ulong. If truncated to int, >>>>>> the bool conditions they indicate will be wrong. >>>>>> >>>>>> As satp is very important for Linux, this bug almost fails every boot. >>>>> Could you please describe which Linux configuration is broken? >>>> I use the image from: >>>> >>>> https://gitlab.com/c-sky/buildroot/-/jobs/1251564514/artifacts/browse/output/images/ >>>> >>>>> I have >>>>> a 64-bit 5.10 kernel and it boots fine. >>>> The login is mostly OK for me. But the busybox can't run properly. >>> Which kernel version is this? >> 5.10.4 >>> Could you please investigate and >>> indicate in the commit message? >>> >>> I just tested current qemu-system-riscv64 can boot to Ubuntu 20.04 >>> distro user space. >> Very strange. This will cause tlb_flush can't be called in this function. >> > Did your kernel enable asid? Yes. Is it matter? Thanks, Zhiwei > > Regards, > Bin
On Mon, Sep 6, 2021 at 11:23 AM LIU Zhiwei <zhiwei_liu@c-sky.com> wrote: > > > On 2021/9/2 上午10:47, Bin Meng wrote: > > On Thu, Sep 2, 2021 at 10:44 AM LIU Zhiwei <zhiwei_liu@c-sky.com> wrote: > >> > >> On 2021/9/2 上午9:59, Bin Meng wrote: > >>> On Thu, Sep 2, 2021 at 9:02 AM LIU Zhiwei <zhiwei_liu@c-sky.com> wrote: > >>>> On 2021/9/1 下午9:05, Bin Meng wrote: > >>>>> On Wed, Sep 1, 2021 at 8:51 PM LIU Zhiwei <zhiwei_liu@c-sky.com> wrote: > >>>>>> These variables should be target_ulong. If truncated to int, > >>>>>> the bool conditions they indicate will be wrong. > >>>>>> > >>>>>> As satp is very important for Linux, this bug almost fails every boot. > >>>>> Could you please describe which Linux configuration is broken? > >>>> I use the image from: > >>>> > >>>> https://gitlab.com/c-sky/buildroot/-/jobs/1251564514/artifacts/browse/output/images/ > >>>> > >>>>> I have > >>>>> a 64-bit 5.10 kernel and it boots fine. > >>>> The login is mostly OK for me. But the busybox can't run properly. > >>> Which kernel version is this? > >> 5.10.4 > >>> Could you please investigate and > >>> indicate in the commit message? > >>> > >>> I just tested current qemu-system-riscv64 can boot to Ubuntu 20.04 > >>> distro user space. > >> Very strange. This will cause tlb_flush can't be called in this function. > >> > > Did your kernel enable asid? > > Yes. Is it matter? Not sure, the tbl_flush is on the ASID path. I suspect the kernel we (Alistair and me) tested did not enable ASID. Regards, Bin
On 2021/9/6 上午11:26, Bin Meng wrote: > On Mon, Sep 6, 2021 at 11:23 AM LIU Zhiwei <zhiwei_liu@c-sky.com> wrote: >> >> On 2021/9/2 上午10:47, Bin Meng wrote: >>> On Thu, Sep 2, 2021 at 10:44 AM LIU Zhiwei <zhiwei_liu@c-sky.com> wrote: >>>> On 2021/9/2 上午9:59, Bin Meng wrote: >>>>> On Thu, Sep 2, 2021 at 9:02 AM LIU Zhiwei <zhiwei_liu@c-sky.com> wrote: >>>>>> On 2021/9/1 下午9:05, Bin Meng wrote: >>>>>>> On Wed, Sep 1, 2021 at 8:51 PM LIU Zhiwei <zhiwei_liu@c-sky.com> wrote: >>>>>>>> These variables should be target_ulong. If truncated to int, >>>>>>>> the bool conditions they indicate will be wrong. >>>>>>>> >>>>>>>> As satp is very important for Linux, this bug almost fails every boot. >>>>>>> Could you please describe which Linux configuration is broken? >>>>>> I use the image from: >>>>>> >>>>>> https://gitlab.com/c-sky/buildroot/-/jobs/1251564514/artifacts/browse/output/images/ >>>>>> >>>>>>> I have >>>>>>> a 64-bit 5.10 kernel and it boots fine. >>>>>> The login is mostly OK for me. But the busybox can't run properly. >>>>> Which kernel version is this? >>>> 5.10.4 >>>>> Could you please investigate and >>>>> indicate in the commit message? >>>>> >>>>> I just tested current qemu-system-riscv64 can boot to Ubuntu 20.04 >>>>> distro user space. >>>> Very strange. This will cause tlb_flush can't be called in this function. >>>> >>> Did your kernel enable asid? >> Yes. Is it matter? > Not sure, the tbl_flush is on the ASID path. I suspect the kernel we > (Alistair and me) tested did not enable ASID. In my opinion, if the ASID is open, we should not flush tlb when ASID changes in most cases. If ASID is not open. > Regards, > Bin
On Thu, Sep 2, 2021 at 11:59 AM Bin Meng <bmeng.cn@gmail.com> wrote: > > On Thu, Sep 2, 2021 at 9:02 AM LIU Zhiwei <zhiwei_liu@c-sky.com> wrote: > > > > > > On 2021/9/1 下午9:05, Bin Meng wrote: > > > On Wed, Sep 1, 2021 at 8:51 PM LIU Zhiwei <zhiwei_liu@c-sky.com> wrote: > > >> These variables should be target_ulong. If truncated to int, > > >> the bool conditions they indicate will be wrong. > > >> > > >> As satp is very important for Linux, this bug almost fails every boot. > > > Could you please describe which Linux configuration is broken? > > > > I use the image from: > > > > https://gitlab.com/c-sky/buildroot/-/jobs/1251564514/artifacts/browse/output/images/ > > > > > I have > > > a 64-bit 5.10 kernel and it boots fine. > > > > The login is mostly OK for me. But the busybox can't run properly. > > Which kernel version is this? Could you please investigate and > indicate in the commit message? > > I just tested current qemu-system-riscv64 can boot to Ubuntu 20.04 > distro user space. I also have never seen any issues. Looking at this `vm` is set from a `static const char valid_vm_1_10_64` so an int is fine. It probably is a good idea for `mask` and `asid` to be target_ulong as they are set by bit operations on target_ulong's. I guess if your host int is 32-bits SATP64_ASID will overflow that. Anyway with 128-bit RISC-V and maybe the ability to run 64-bit guests no 32-bit hosts this seems like a good step Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Alistair > > Regards, > Bin >
© 2016 - 2024 Red Hat, Inc.