pcie: Fix bridge window's mmio alignment

Bridge window's mmio alignment went wrong during our refactor, fix
it in this commit.

BUG=b:185084350
TEST=Check bridge window and pci device mmio setting in CrOS

Change-Id: Ia1a01d1740f943ec7aa36812defe3aabffcfcbde
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3498219
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
This commit is contained in:
Xiong Zhang 2022-03-02 12:22:16 +08:00 committed by Commit Bot
parent e1042a1098
commit edc7ad4091

View file

@ -443,7 +443,7 @@ impl PciDevice for PciBridge {
}
// align window_size to 1MB
if window_size & (BR_WINDOW_ALIGNMENT - 1) != 0 {
window_size = (window_size + BR_WINDOW_ALIGNMENT - 1) & BR_WINDOW_ALIGNMENT;
window_size = (window_size + BR_WINDOW_ALIGNMENT - 1) & (!(BR_WINDOW_ALIGNMENT - 1));
}
// if window_base isn't set, allocate a new one
if window_base == u64::MAX {
@ -467,7 +467,8 @@ impl PciDevice for PciBridge {
} else {
// align window_base to 1MB
if window_base & (BR_WINDOW_ALIGNMENT - 1) != 0 {
window_base = (window_base + BR_WINDOW_ALIGNMENT - 1) & BR_WINDOW_ALIGNMENT;
window_base =
(window_base + BR_WINDOW_ALIGNMENT - 1) & (!(BR_WINDOW_ALIGNMENT - 1));
}
}
@ -477,7 +478,8 @@ impl PciDevice for PciBridge {
}
// align pref_window_size to 1MB
if pref_window_size & (BR_WINDOW_ALIGNMENT - 1) != 0 {
pref_window_size = (pref_window_size + BR_WINDOW_ALIGNMENT - 1) & BR_WINDOW_ALIGNMENT;
pref_window_size =
(pref_window_size + BR_WINDOW_ALIGNMENT - 1) & (!(BR_WINDOW_ALIGNMENT - 1));
}
// if pref_window_base isn't set, allocate a new one
if pref_window_base == u64::MAX {
@ -503,7 +505,8 @@ impl PciDevice for PciBridge {
} else {
// align pref_window_base to 1MB
if pref_window_base & (BR_WINDOW_ALIGNMENT - 1) != 0 {
pref_window_base = (window_base + BR_WINDOW_ALIGNMENT - 1) & BR_WINDOW_ALIGNMENT;
pref_window_base =
(window_base + BR_WINDOW_ALIGNMENT - 1) & (!(BR_WINDOW_ALIGNMENT - 1));
}
}