@@ -153,29 +153,21 @@ def __init__(
153153 # ends.
154154 if isinstance (remote_memory , ExternalRemoteMemory ) == True :
155155 if remote_memory .get_physical_address_ranges () is None :
156- # If the remote_memory_addr_range is not provided, we'll assume
157- # that it starts at 0x100000000 + local_memory_size and ends at
158- # it's own size
156+ # If the remote_memory_addr_range is not provided, we'll crash
157+ # the simulation as ranges could not be verified.
159158 fatal ("External memory address range is not set!" )
160- warn (
161- "An address range is not specified! The simulation may "
162- "crash!"
163- )
164- self ._remoteMemoryAddressRange = AddrRange (
165- 0x100000000 + self ._localMemory .get_size (),
166- size = self ._remoteMemory .get_size (),
167- )
168159 else :
169160 # We trust the user to put the correct memory range.
170- print (
171- "remote_range" , remote_memory .get_physical_address_ranges ()
172- )
173161 self ._remoteMemoryAddressRange = (
174162 remote_memory .get_physical_address_ranges ()[0 ]
175163 )
176164 else :
177- # This is gem5 memory. Let gem5 figure our the memory range.
178- self ._remoteMemoryAddressRange = None
165+ # This is gem5 memory. Let gem5 figure our the memory range. Warn
166+ # the user that this memory starts at 4G
167+ warn ("A range was not provided. Assuming memory starts a 4G" )
168+ self ._remoteMemoryAddressRange = AddrRange (
169+ start = 0x100000000 , size = remote_memory .get_size ()
170+ )
179171 super ().__init__ (
180172 clk_freq = clk_freq ,
181173 processor = processor ,
@@ -323,7 +315,7 @@ def get_remote_mem_ports(self) -> Sequence[Tuple[AddrRange, Port]]:
323315 """
324316 return self .get_remote_memory ().get_mem_ports ()
325317
326- def get_remote_memory_addr_range (self ):
318+ def get_remote_memory_addr_range (self ) -> AddrRange :
327319 """Get the range of the remote memory. This can be omitted in the
328320 future iteration of the board.
329321 :returns: AddrRange of the remote memory
@@ -344,23 +336,22 @@ def _setup_memory_ranges(self):
344336
345337 memory_size = [local_memory .get_size (), remote_memory .get_size ()]
346338
347- memory_ranges = [
348- AddrRange (start = 0x0 , size = local_memory .get_size ()),
349- # Remote memory is set using addresses!
350- self ._remoteMemoryAddressRange ,
351- ]
352-
339+ # Make sure ranges are compatible with both gem5 and SST configurations
353340 self .mem_ranges = [
354341 AddrRange (start = 0x0 , size = local_memory .get_size ()),
355- self ._remoteMemoryAddressRange ,
342+ self .get_remote_memory_addr_range () ,
356343 AddrRange (0xC0000000 , size = 0x100000 ), # For I/0
357344 ]
345+ # else:
346+ # This is gem5 AbstractMemorySystem which does not use address
347+ # ranges explicitly
348+ # pass
358349
359350 local_memory .set_memory_range (
360351 [AddrRange (start = 0x0 , size = local_memory .get_size ())]
361352 )
362353 # XXX: Stop hardcoding addresses @kg
363- remote_memory .set_memory_range ([self ._remoteMemoryAddressRange ])
354+ remote_memory .set_memory_range ([self .get_remote_memory_addr_range () ])
364355
365356 @overrides (X86Board )
366357 def get_default_kernel_args (self ) -> List [str ]:
@@ -369,8 +360,6 @@ def get_default_kernel_args(self) -> List[str]:
369360 "console=ttyS0" ,
370361 "lpj=7999923" ,
371362 "root=/dev/sda1" ,
372- # "init=/bin/bash",
373- # "numa=fake=2",
374363 ]
375364
376365 @overrides (X86Board )
@@ -553,8 +542,8 @@ def assignISAInt(irq, apicPin):
553542 srat_entries .append (
554543 X86ACPISratMemAffinity (
555544 proximity_domain = 1 ,
556- base_address = self ._remoteMemoryAddressRange .start ,
557- length = self ._remoteMemoryAddressRange .size (),
545+ base_address = self .get_remote_memory_addr_range () .start ,
546+ length = self .get_remote_memory_addr_range () .size (),
558547 flags = 1 ,
559548 )
560549 )
@@ -576,8 +565,8 @@ def assignISAInt(irq, apicPin):
576565 ),
577566 # XXX: Stop hardcoding addresses @kg
578567 X86E820Entry (
579- addr = self ._remoteMemoryAddressRange .start ,
580- size = f"{ self ._remoteMemoryAddressRange .size ()} B" ,
568+ addr = self .get_remote_memory_addr_range () .start ,
569+ size = f"{ self .get_remote_memory_addr_range () .size ()} B" ,
581570 range_type = 1 ,
582571 ),
583572 ]
@@ -587,7 +576,6 @@ def assignISAInt(irq, apicPin):
587576 X86E820Entry (addr = 0xFFFF0000 , size = "64kB" , range_type = 2 )
588577 )
589578
590- print (entries )
591579 self .workload .e820_table .entries = entries
592580
593581 def add_remote_link (self ) -> None :
@@ -727,7 +715,6 @@ def _setup_io_devices(self):
727715 APIC_range_size = 1 << 12
728716
729717 # Setup memory system specific settings.
730- print (self .get_cache_hierarchy ())
731718 if self .get_cache_hierarchy ().is_ruby ():
732719 self .pc .attachIO (self .get_io_bus (), [self .pc .south_bridge .ide .dma ])
733720 else :
@@ -933,8 +920,8 @@ def assignISAInt(irq, apicPin):
933920 range_type = 1 ,
934921 ),
935922 X86E820Entry (
936- addr = int (self ._remoteMemoryAddressRange .start ),
937- size = f"{ self .remote_memory . get_size ()} B" ,
923+ addr = int (self .get_remote_memory_addr_range () .start ),
924+ size = f"{ self .get_remote_memory_addr_range (). size ()} B" ,
938925 range_type = 12 ,
939926 ),
940927 ]
@@ -956,8 +943,8 @@ def _setup_memory_ranges(self):
956943 AddrRange (0xC0000000 , size = 0x100000 ), # For I/0
957944 AddrRange (0x100000000 , size = self .memory .get_size ()),
958945 AddrRange (
959- int (self ._remoteMemoryAddressRange .start ),
960- size = self .remote_memory . get_size () ,
946+ int (self .get_remote_memory_addr_range () .start ),
947+ size = self .get_remote_memory_addr_range (). size ,
961948 ),
962949 ]
963950
0 commit comments