-
Notifications
You must be signed in to change notification settings - Fork 43
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
acs_pcie.c needs reads added to preserve memory ordering #422
Comments
Hi @cdwilde , Thank you raising this. We are looking into this. Can you provide us more information on which enable and disable of which test got out of order. This will help us for better understanding the issue. The particular enable mentioned here is more generic and is used by multiple tests. If the enable hadn't occurred, the tests would not have proceeded. We would like to understand if this occurred for all tests or only for one. Request you to please share the information on the tests run and the list of PCIe devices in the system. Thanks, |
Hi, yes. There is one test that fails: 830 : Check Cmd Reg memory space enable. Without the reads, we get: With the reads, we get: |
Checking the runs without the change requested, the same issue exists on SBSA test 830. They both have the same title: "Check Cmd Reg memory space enable" I am going to target a local fix for these tests, and we can just change them if you are amenable. Testing now. |
Hi @cdwilde, We are working on the changes to fix this. The same will be reflected for SBSA as well. Thanks, |
Yes, I have a local fix that is working by just modifying the 830 tests on both BSA and SBSA. and
(just adding a read following the enable and disable) |
acs_pcie.c has many PCIe writes. During testing, we ran into an issue where a disable and enable got out of order. This is because writes in PCIe can go out of order. To ensure that this doesn't happen, we can add a read after each write to ensure ordering.
/* Set SERR# Enable bit in the Command Register to enable reporting
*/
val_pcie_read_cfg(bdf, TYPE01_CR, ®_value);
dis_mask = (1 << CR_SERRE_SHIFT);
val_pcie_write_cfg(bdf, TYPE01_CR, reg_value | dis_mask);
val_pcie_read_cfg(bdf, TYPE01_CR, ®_value);
The text was updated successfully, but these errors were encountered: