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

Virtual address space specification, assignment, and booting. #453

Merged
merged 17 commits into from
Jun 26, 2022

Conversation

gparmer
Copy link
Collaborator

@gparmer gparmer commented Jun 4, 2022

Summary of this Pull Request (PR)

Adds support for virtual address space knowledge and management into the composer, and feeds that into the booter through the initargs.

  • Adds a specification for address spaces including a hierarchy
  • Adds intelligence into the composer to assign virtual address names to components that share (or split from) a VAS.
  • Adds an initargs description of the address spaces, and integrates them into llbooter.

I'm hoping that this can get rid of the llbooter_vas.c stuff, so I didn't modify that code.

To review, it might be easiest to go through the commits as they are structured in a sequence of successive functionality.

Steps:

  1. Parsing and validation of composition scripts. 6340d95 (and commits leading up to it)
  2. Add an AS representation to the pass structure of the composer for later pass access. 187b371
  3. Order ASes by the parent relationship. ff5cd1c
  4. Assign virtual addresses based on ASes and the parent relation. 8d11d13
  5. Synthesize the initargs based on the ASes and addresses. fe7001a
  6. Use the initargs and the AS specification in the booter. 8a77c31

Intent for your PR

Choose one (Mandatory):

  • This PR is for a code-review and is intended to get feedback, but not to be pulled yet.
  • This PR is mature, and ready to be integrated into the repo.

Reviewers (Mandatory):

@evanstella @WenyuanShao @betahxy

Code Quality

As part of this pull request, I've considered the following:

Style:

  • Comments adhere to the Style Guide (SG)
  • Spacing adhere's to the SG
  • Naming adhere's to the SG
  • All other aspects of the SG are adhered to, or exceptions are justified in this pull request
  • I have run the auto formatter on my code before submitting this PR (see doc/auto_formatter.md for instructions)

Code Craftsmanship:

  • I've made an attempt to remove all redundant code
  • I've considered ways in which my changes might impact existing code, and cleaned it up
  • I've formatted the code in an effort to make it easier to read (proper error handling, function use, etc...)
  • I've commented appropriately where code is tricky
  • I agree that there is no "throw-away" code, and that code in this PR is of high quality

Testing

Some coverage of the tests.

Commit 0: Add the parsing and validation logic to the composer
…nd validation of composition scripts, and added access to AS representation in the composer's state.

The overall goal is to add full initargs support for address spaces, going all the way back to a specification for address spaces from the composition scripts.

Steps:

1. DONE: parsing and validation of composition scripts.
2. DONE: add an AS representation to the pass structure of the composer for later pass access.
3. Order ASes by the parent relationship.
4. Assign virtual addresses based on ASes and the parent relation.
5. Synthesize the initargs based on the ASes and addresses.
6. Use the initargs and the AS specification in the booter.
…zation (with containing components, and exclusive AS components)

Steps:
1. DONE: parsing and validation of composition scripts.
2. DONE: add an AS representation to the pass structure of the composer for later pass access.
3. -> DONE: Order ASes by the parent relationship.
4. Assign virtual addresses based on ASes and the parent relation.
5. Synthesize the initargs based on the ASes and addresses.
6. Use the initargs and the AS specification in the booter.
1. DONE: parsing and validation of composition scripts.
2. DONE: add an AS representation to the pass structure of the composer for later pass access.
3. DONE: Order ASes by the parent relationship.
4. -> DONE: Assign virtual addresses based on ASes and the parent relation.
    This is *not yet integrated into the output*. That's next commit.

5. Synthesize the initargs based on the ASes and addresses.
6. Use the initargs and the AS specification in the booter.
1. DONE: parsing and validation of composition scripts.
2. DONE: add an AS representation to the pass structure of the composer for later pass access.
3. DONE: Order ASes by the parent relationship.
4. DONE: Assign virtual addresses based on ASes and the parent relation.
    -> Now integrated into the output!
5. Synthesize the initargs based on the ASes and addresses.
6. Use the initargs and the AS specification in the booter.
…fication.

Steps:
1. DONE: parsing and validation of composition scripts.
2. DONE: add an AS representation to the pass structure of the composer for later pass access.
3. DONE: Order ASes by the parent relationship.
4. DONE: Assign virtual addresses based on ASes and the parent relation.
5. -> DONE: Synthesize the initargs based on the ASes and addresses.
6. Use the initargs and the AS specification in the booter.
Steps:
1. DONE: parsing and validation of composition scripts.
2. DONE: add an AS representation to the pass structure of the composer for later pass access.
3. DONE: Order ASes by the parent relationship.
4. DONE: Assign virtual addresses based on ASes and the parent relation.
5. DONE: Synthesize the initargs based on the ASes and addresses.
6. -> DONE: Use the initargs and the AS specification in the booter.

Pending: BUG for split ASes that don't properly maintain non-overlapping ASes.
Steps:
1. DONE: parsing and validation of composition scripts.
2. DONE: add an AS representation to the pass structure of the composer for later pass access.
3. DONE: Order ASes by the parent relationship.
4. DONE: Assign virtual addresses based on ASes and the parent relation.
5. DONE: Synthesize the initargs based on the ASes and addresses.
6. DONE: Use the initargs and the AS specification in the booter.
@betahxy
Copy link
Contributor

betahxy commented Jun 12, 2022

Excellent PR! Thanks for the detailed review steps here.

@gparmer gparmer merged commit 0da657c into gwsystems:main Jun 26, 2022
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