-
Notifications
You must be signed in to change notification settings - Fork 398
hw: use enum class for PCI config registers #2369
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
Open
uadhran
wants to merge
4
commits into
includeos:main
Choose a base branch
from
uadhran:fix/pci-enum-class
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 1 commit
Commits
Show all changes
4 commits
Select commit
Hold shift + click to select a range
08d7250
hw: use enum class for PCI config registers
uadhran e47ca60
hw: typed PCI config accessors and command bitmask ops
uadhran 9d21426
hw: make config_reg the primary PCI config accessor path
uadhran a502cf9
hw: drop unused ext_cap_id and trim PCI enum docs
uadhran File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See
api/mem/alloc/buddy.hppfor an example ofapi/util/bitops.hpp::enable_bitmask_ops. Casting this touint32_tisn't necessary.That said, can all combinations of enum fields be combined? I'd like for proper bitmask support to check for valid combinations.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also addressed in
e47ca6071— addedenable_bitmask_ops<PCI::command>(same pattern asbuddy.hpp) and the constructor now does:Re combination validity: per PCI spec / Linux
pci_regs.h,PCI_COMMAND_IO,PCI_COMMAND_MEMORY, andPCI_COMMAND_MASTERare independent enable bits (0x01, 0x02, 0x04), so OR'ing them is standard. I also addedcommand::INTX_DISABLE(0x400) for the bit used ininit_msix/intx_enableinstead of a raw(1 << 10).