Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unprivileged Load Store #94

Open
BugraEryilmaz opened this issue Dec 18, 2024 · 1 comment
Open

Unprivileged Load Store #94

BugraEryilmaz opened this issue Dec 18, 2024 · 1 comment
Assignees

Comments

@BugraEryilmaz
Copy link
Contributor

BugraEryilmaz commented Dec 18, 2024

Description
Unprivileged load and store instructions (LDTR and STTR) are decoded properly, but they cause pagefult in Flexus because the memory hierarchy does not take into account that those instructions should use different page table base addresses.

Steps to Reproduce
Run data caching image with 2 cores
After some time, there will be LDTR and STTR instructions that cause a pagefult although they shouldn't.
Expected Behavior
There should be no pageful.

Actual Behavior
Those instructions cause a page fault and resynchronize.

@BugraEryilmaz BugraEryilmaz self-assigned this Dec 18, 2024
@BugraEryilmaz
Copy link
Contributor Author

Actually, after further inspection, the memory hierarchy was working properly. It was not using the exception level to determine which page table base address to use but it was using the virtual address range to determine it.

However, the problem was with QEMU side translation check. Because QEMU is not aware of the different page table base address needed to use for that translation, the check was causing page fault. Modified the QEMU interface so that it gets unprivileged flag as a parameter while doing the translation and uses the correct page table base address and stuff. Fix: 2878fa0 and also modification to libqflex: parsa-epfl/libqflex@29383f3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant