| Summary: | MMU PortInterface raises addr_ok_o even on a misaligned access exception | ||
|---|---|---|---|
| Product: | Libre-SOC's first SoC | Reporter: | Cesar Strauss <cestrauss> |
| Component: | Source Code | Assignee: | Luke Kenneth Casson Leighton <lkcl> |
| Status: | CONFIRMED --- | ||
| Severity: | major | CC: | libre-soc-bugs |
| Priority: | High | ||
| Version: | unspecified | ||
| Hardware: | PC | ||
| OS: | Linux | ||
| See Also: |
https://bugs.libre-soc.org/show_bug.cgi?id=491 https://bugs.libre-soc.org/show_bug.cgi?id=465 https://bugs.libre-soc.org/show_bug.cgi?id=450 |
||
| NLnet milestone: | --- | total budget (EUR) for completion of task and all subtasks: | 0 |
| budget (EUR) for this task, excluding subtasks' budget: | 0 | parent task for budget allocation: | |
| child tasks for budget allocation: | The table of payments (in EUR) for this task; TOML format: | ||
|
Description
Cesar Strauss
2021-09-12 14:20:23 BST
yes, that's critically important that no possible indicator of success or permitting of proceeding to a stage that REQUIRES 100% guaranteed completion. this is down to the "House Contract Of Sale" protocol, which is: * Offer * Exchange * Complete. Wishbone is a "TAKE IT OR LEAVE IT" Contract. you get someone walking up to you on the street, saying, "buy my goods at reduced price! take it or leave it!". Speculative multi-issue execution *cannot* work on top of a take-it-or-leave-it Contract. you *have* to have a "conditional offer" phase. ONLY past the "Exchange" point does it become a 100% cast-iron guaranteed requirement to "Complete". addr_ok_o is is part of the "Exchange" process, stating that there are no objections to proceeding to "Complete" if addr_ok_o is being raise at the *same time* as an indication that the "Offer" is *REJECTED* (exc_happened) then that's extremely serious. Indeed. It can also be more easily seen to happen with test_misalign_mmu() in src/soc/experiment/test/test_ldst_pi.py I guess it has to do with LoadStore1 being derived from PortInterfaceBase, which seems to unconditionally raise addr_ok_o on receiving an addr.ok. Maybe it should somehow consult its derived class before doing so. exceptions are the way that the "Offer" is refused. because we are only just now starting to add exceptions, there will be a lot of areas that need to support the "House Sale" protocol. up until now, if a problem ever occurred, it was completely ignored! there is even no error-checking on any wishbone bus exchanges, only acknowledgements. |