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

SCHED0021 fails on star64 platform when config LibUtilsDefaultZfLogLevel is 0 #109

Closed
canarysnort01 opened this issue Nov 11, 2023 · 4 comments

Comments

@canarysnort01
Copy link

I suspect the extra debug prints might be causing the timing measurements to be off.

I'm testing this on the pinetab-v hardware as described in seL4/seL4#1019 (comment).

When building sel4test like this, all is well in the universe:

../init-build.sh -DPLATFORM=star64 -DKernelRiscvExtD=true -DUseRiscVOpenSBI=false -DSIMULATION=false -DMCS=true -DSMP=false

Output: sel4test-star64-mcs.txt

However, when built with verbose logging, SCHED0021 fails:

../init-build.sh -DPLATFORM=star64 -DKernelRiscvExtD=true -DUseRiscVOpenSBI=false -DSIMULATION=false -DMCS=true -DSMP=false -DLibUtilsDefaultZfLogLevel=0

Output: sel4test-star64-mcs-verbose.txt

@Indanz
Copy link
Contributor

Indanz commented Nov 12, 2023

I bet it works with the following fixes:

  • The ZF_LOGD("Releasing Threads"); should be before the uint64_t start = time_now(env);.
  • There should be another yield call before test_simple_preempt_start = 1; and the start timestamp.
  • Remove all the ZF_LOGD calls from test_simple_preempt_runner() .

(Edit: I thought ZF_LOGD in the helper thread wasn't shown, but it's just swamped by the other output. It's the most likely cause.)

@canarysnort01
Copy link
Author

canarysnort01 commented Nov 12, 2023

Oh, some of these changes have already been made recently, sorry for the confusion. My sel4test wasn't current. I will make the remaining changes.

@canarysnort01
Copy link
Author

  • The ZF_LOGD("Releasing Threads"); should be before the uint64_t start = time_now(env);.

  • There should be another yield call before test_simple_preempt_start = 1; and the start timestamp.

These have already been done recently and with these changes the tests pass on my hardware.

  • Remove all the ZF_LOGD calls from test_simple_preempt_runner() .

Do you want me to go ahead and make this change?

@canarysnort01 canarysnort01 closed this as not planned Won't fix, can't repro, duplicate, stale Nov 12, 2023
@Indanz
Copy link
Contributor

Indanz commented Nov 12, 2023

Do you want me to go ahead and make this change?

If it passes with the other changes, just leave it for now.

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

2 participants