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

Update Darjeeling implementation #65

Merged
merged 65 commits into from
May 31, 2024

Conversation

rivos-eblot
Copy link

  • add alert handler initial support
  • add OT PLIC extensions
  • add generic interrupt interception to devproxy: now support any kind of interrupt, not only sysbus IRQs
  • fix timer issue with STEP=0
  • fix mailbox IRQs
  • update JTAG/TAP controller support (mutiple instances are now supported)
    -jtag tcp::3335 is replaced with -chardev socket,id=taprbb,host=localhost,port=3335,server=on,wait=off
  • improve pyot.py
  • update linter and format rules to support LLVM 18

rivos-eblot and others added 30 commits May 30, 2024 19:57
Also fix an invalid error report type.

Signed-off-by: Emmanuel Blot <[email protected]>
- explicit timeout message
- add close() to ProxyEngine
- add quit() wrapper to DeviceProxy

Signed-off-by: Emmanuel Blot <[email protected]>
- discard casting-through-void, as QEMU heavily relies on ptr casting
- discard multi-level-implicit-pointer-conversion, as Glib likes casts
- discard macro-to-enum which is not fitted for C language
- discard redundant-casting which consider bool and int as strictly eq.
- discard avoid-nested-conditional-operator, useful for ?: operator
…andler

EarlGrey/Darjeeling alert handlers will be replaced by a new shared
implementation in a later commit.
Disable instantiation of current versions to avoid breaking bisect during the
transition.

Signed-off-by: Loïc Lefort <[email protected]>
Also move instantiation calls instance_init.

Signed-off-by: Emmanuel Blot <[email protected]>
This option may be used in a test configuration section, to tell pyot.py
what QEMU is expected to fail with a specific error code.

Signed-off-by: Emmanuel Blot <[email protected]>
rivos-eblot and others added 24 commits May 30, 2024 19:57
Count of arguments exchanged between a couple of methods in pyot.py as
grown to a hardly readable list. Replace it with a dictionary which is
easier to debug and extend with new features.

Signed-off-by: Emmanuel Blot <[email protected]>
debug may be None, overriding the pre-parsed default setting.

Signed-off-by: Emmanuel Blot <[email protected]>
- do not use critical log level for expected failure
- post context execution should be performed if failure matches expected one

Signed-off-by: Emmanuel Blot <[email protected]>
Update protocol and implementation to generalize interrupt interception
to all qemu_irq of a device, not only the system bus IRQs.

Signed-off-by: Emmanuel Blot <[email protected]>
It helps differentiating QEMU traces from pyot.py and other tool messages

Signed-off-by: Emmanuel Blot <[email protected]>
getLevelNamesMapping() has been added in Python 3.11.
Add a replacement function for previous Python releases.

Signed-off-by: Emmanuel Blot <[email protected]>
When setting CFG0.STEP to 0 and a compare value greater than the current timer
value, QEMU would crash with a division by 0.

Fix this issue by skipping QEMU internal timer scheduling when STEP=0 (same as a
disabled ot_timer).

Signed-off-by: Loïc Lefort <[email protected]>
Copy link

@loiclefort loiclefort left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM (already reviewed and tested at Rivos)

@rivos-eblot rivos-eblot merged commit 77ff7d9 into lowRISC:ot-darjeeling-8.2.0 May 31, 2024
5 checks passed
@rivos-eblot rivos-eblot deleted the dev/ebl/update_dj branch May 31, 2024 14:04
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

Successfully merging this pull request may close these issues.

2 participants