New function to kernel_disk_workload to allow new disk device location

Added a parameter to kernel_disk_workload which allows users to change the disk device location. Maintained the previous way of setting a disk device as the default, however added a function to allow users to override this default
This commit is contained in:
leoredivo
2023-08-01 16:51:36 -07:00
parent dceabe5fda
commit 052c870058
6 changed files with 26 additions and 6 deletions

View File

@@ -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)

View File

@@ -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)

View File

@@ -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

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)