stdlib: Added LupioBLK Device to LupVBoard

This adds the LupioBLK device to the growing LupVBoard,
as well as removes the VirtIOMMIO Device from the board.

Change-Id: Ibb45ecff07c7ce5d5d7be8cd8e20e9f62b591b02
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/53034
Maintainer: Bobby Bruce <bbruce@ucdavis.edu>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
diff --git a/src/python/gem5/components/boards/lupv_board.py b/src/python/gem5/components/boards/lupv_board.py
index 932fcd7..5fb2b13 100644
--- a/src/python/gem5/components/boards/lupv_board.py
+++ b/src/python/gem5/components/boards/lupv_board.py
@@ -47,6 +47,7 @@
     Clint,
     Plic,
     Terminal,
+    LupioBLK,
     LupioRNG,
     LupioRTC,
     LupioTTY,
@@ -98,7 +99,7 @@
 
         # Initialize all the devices that we want to use on this board
         # Interrupt IDS for PIC Device
-        self._int_ids = { 'TTY': 1, 'DISK': 2, 'RNG': 3}
+        self._int_ids = { 'TTY': 1, 'BLK': 2, 'RNG': 3}
 
         # CLINT
         self.clint = Clint(pio_addr=0x2000000)
@@ -112,6 +113,13 @@
             uart_int_id = self._int_ids['TTY']
         )
 
+        # LUPIO BLK
+        self.lupio_blk = LupioBLK(
+            pio_addr=0x20000000,
+            platform = self.lupv,
+            int_id = self._int_ids['BLK']
+        )
+
         # LUPIO RNG
         self.lupio_rng = LupioRNG(
             pio_addr=0x20005000,
@@ -122,14 +130,6 @@
         # LUPIO RTC
         self.lupio_rtc = LupioRTC(pio_addr=0x20004000)
 
-        # VirtIO Disk
-        self.disk = RiscvMmioVirtIO(
-            vio=VirtIOBlock(),
-            interrupt_id=self._int_ids['DISK'],
-            pio_size=4096,
-            pio_addr=0x10008000,
-        )
-
         # LUPIO TTY
         self.lupio_tty = LupioTTY(
             pio_addr=0x20007000,
@@ -140,7 +140,7 @@
 
         pic_srcs = [
             self._int_ids['TTY'],
-            self._int_ids['DISK'],
+            self._int_ids['BLK'],
             self._int_ids['RNG']
         ]
         self.pic.n_contexts = self.processor.get_num_cores() * 2
@@ -161,8 +161,8 @@
             self.pic,
         ]
         self._off_chip_devices = [
+            self.lupio_blk,
             self.lupio_tty,
-            self.disk,
             self.lupio_rng,
             self.lupio_rtc
         ]
@@ -171,6 +171,7 @@
         """Connect the I/O devices to the I/O bus"""
         for device in self._off_chip_devices:
             device.pio = self.iobus.mem_side_ports
+        self.lupio_blk.dma = self.iobus.cpu_side_ports
 
         for device in self._on_chip_devices:
             device.pio = self.get_cache_hierarchy().get_mem_side_port()
@@ -239,12 +240,12 @@
             read_only=False
         )
         image.child.image_file = disk_image
-        self.disk.vio.image = image
+        self.lupio_blk.image = image
 
         # Linux boot command flags
         kernel_cmd = [
             "earlycon console=ttyLIO0",
-            "root=/dev/vda1",
+            "root=/dev/lda1",
             "ro"
         ]
         self.workload.command_line = " ".join(kernel_cmd)
@@ -370,17 +371,19 @@
 
         soc_node.append(plic_node)
 
-        # VirtIO MMIO disk node
-        disk = self.disk
-        disk_node = disk.generateBasicPioDeviceNode(
-            soc_state, "virtio_mmio", disk.pio_addr, disk.pio_size
-        )
-        disk_node.append(FdtPropertyWords("interrupts", [disk.interrupt_id]))
-        disk_node.append(
-            FdtPropertyWords("interrupt-parent", soc_state.phandle(plic))
-        )
-        disk_node.appendCompatible(["virtio,mmio"])
-        soc_node.append(disk_node)
+        # LupioBLK Device
+        lupio_blk = self.lupio_blk
+        lupio_blk_node = lupio_blk.generateBasicPioDeviceNode(soc_state,
+                            "lupio-blk", lupio_blk.pio_addr,
+                            lupio_blk.pio_size)
+        lupio_blk_node.appendCompatible(["lupio,blk"])
+        lupio_blk_node.append(
+                FdtPropertyWords("interrupts",
+                [self.lupio_blk.int_id]))
+        lupio_blk_node.append(
+                FdtPropertyWords("interrupt-parent",
+                state.phandle(self.pic)))
+        soc_node.append(lupio_blk_node)
 
         # LupioRNG Device
         lupio_rng = self.lupio_rng