diff --git a/src/python/gem5/components/boards/arm_board.py b/src/python/gem5/components/boards/arm_board.py index b439edf970..82b7a39107 100644 --- a/src/python/gem5/components/boards/arm_board.py +++ b/src/python/gem5/components/boards/arm_board.py @@ -354,7 +354,7 @@ class ArmBoard(ArmSystem, AbstractBoard, KernelDiskWorkload): ) @overrides(KernelDiskWorkload) - def get_disk_device(self): + def _get_default_disk_device(self): return "/dev/vda" @overrides(KernelDiskWorkload) diff --git a/src/python/gem5/components/boards/experimental/lupv_board.py b/src/python/gem5/components/boards/experimental/lupv_board.py index ad130b7273..cba50a1d56 100644 --- a/src/python/gem5/components/boards/experimental/lupv_board.py +++ b/src/python/gem5/components/boards/experimental/lupv_board.py @@ -539,7 +539,7 @@ class LupvBoard(AbstractSystemBoard, KernelDiskWorkload): return ["console=ttyLIO0", "root={root_value}", "rw"] @overrides(KernelDiskWorkload) - def get_disk_device(self) -> str: + def set_default_disk_device(self) -> str: return "/dev/lda" @overrides(KernelDiskWorkload) diff --git a/src/python/gem5/components/boards/kernel_disk_workload.py b/src/python/gem5/components/boards/kernel_disk_workload.py index 15e0cdf303..79d55ba8b4 100644 --- a/src/python/gem5/components/boards/kernel_disk_workload.py +++ b/src/python/gem5/components/boards/kernel_disk_workload.py @@ -39,6 +39,7 @@ import os from pathlib import Path import m5 +from m5 import warn class KernelDiskWorkload: @@ -84,11 +85,25 @@ class KernelDiskWorkload: """ raise NotImplementedError - @abstractmethod def get_disk_device(self) -> str: """ Get the disk device, e.g., "/dev/sda", where the disk image is placed. + :returns: The disk device. + """ + if self._disk_device is None: + warn("No disk device set, ie where the disk image is located. Defaulting to board disk device") + return _get_default_disk_device() + else: + return self._disk_device + + + + @abstractmethod + def _get_default_disk_device(self) -> str: + """ + Set a default disk device, in case user does not specify a disk device. + :returns: The disk device. """ raise NotImplementedError @@ -139,6 +154,7 @@ class KernelDiskWorkload: kernel: KernelResource, disk_image: DiskImageResource, bootloader: Optional[BootloaderResource] = None, + _disk_device: Optional[str] = None, readfile: Optional[str] = None, readfile_contents: Optional[str] = None, kernel_args: Optional[List[str]] = None, @@ -171,6 +187,9 @@ class KernelDiskWorkload: # Abstract board. This function will not work otherwise. assert isinstance(self, AbstractBoard) + # Set the disk device + self._disk_device = _disk_device + # If we are setting a workload of this type, we need to run as a # full-system simulation. self._set_fullsystem(True) @@ -192,6 +211,7 @@ class KernelDiskWorkload: if bootloader is not None: self._bootloader = [bootloader.get_local_path()] + # Set the readfile. if readfile: self.readfile = readfile diff --git a/src/python/gem5/components/boards/riscv_board.py b/src/python/gem5/components/boards/riscv_board.py index 25f1fac562..d8020d1974 100644 --- a/src/python/gem5/components/boards/riscv_board.py +++ b/src/python/gem5/components/boards/riscv_board.py @@ -467,7 +467,7 @@ class RiscvBoard(AbstractSystemBoard, KernelDiskWorkload): fdt.writeDtbFile(os.path.join(outdir, "device.dtb")) @overrides(KernelDiskWorkload) - def get_disk_device(self): + def _get_default_disk_device(self): return "/dev/vda" @overrides(KernelDiskWorkload) diff --git a/src/python/gem5/components/boards/x86_board.py b/src/python/gem5/components/boards/x86_board.py index 04fec617c1..1a3b9fa1c8 100644 --- a/src/python/gem5/components/boards/x86_board.py +++ b/src/python/gem5/components/boards/x86_board.py @@ -296,7 +296,7 @@ class X86Board(AbstractSystemBoard, KernelDiskWorkload): ] @overrides(KernelDiskWorkload) - def get_disk_device(self): + def _get_default_disk_device(self): return "/dev/hda" @overrides(KernelDiskWorkload) diff --git a/src/python/gem5/prebuilt/riscvmatched/riscvmatched_board.py b/src/python/gem5/prebuilt/riscvmatched/riscvmatched_board.py index 9ca95839f8..3411ea61be 100644 --- a/src/python/gem5/prebuilt/riscvmatched/riscvmatched_board.py +++ b/src/python/gem5/prebuilt/riscvmatched/riscvmatched_board.py @@ -539,7 +539,7 @@ class RISCVMatchedBoard( fdt.writeDtbFile(os.path.join(outdir, "device.dtb")) @overrides(KernelDiskWorkload) - def get_disk_device(self): + def _get_default_disk_device(self): return "/dev/vda" @overrides(KernelDiskWorkload)