This in preparation to allow pc_pci_hole64_start() to be called early
in pc_memory_init(), handle CXL memory region end when its underlying
memory region isn't yet initialized.

Cc: Jonathan Cameron <jonathan.came...@huawei.com>
Signed-off-by: Joao Martins <joao.m.mart...@oracle.com>
---
 hw/i386/pc.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 8655cc3b8894..d6dff71012ab 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -857,6 +857,19 @@ static uint64_t pc_get_cxl_range_end(PCMachineState *pcms)
                 start = fw->mr.addr + memory_region_size(&fw->mr);
             }
         }
+    } else {
+        hwaddr cxl_size = MiB;
+
+        start = pc_get_cxl_range_start(pcms);
+        if (pcms->cxl_devices_state.fixed_windows) {
+            GList *it;
+
+            start = ROUND_UP(start + cxl_size, 256 * MiB);
+            for (it = pcms->cxl_devices_state.fixed_windows; it; it = 
it->next) {
+                CXLFixedWindow *fw = it->data;
+                start += fw->size;
+            }
+        }
     }
 
     return start;
-- 
2.17.2


Reply via email to