dev-amdgpu: Default MMIO reads when previously written

If an MMIO was previously written and the driver reads it, we should
return the value that was previously read. This overwrites the MMIO
trace value which is the last resort fallback for finding an MMIO value.
This is needed to initialize newer GPU devices in gem5.

Change-Id: Ida2435290b706288e88518b5d920691cdb6dcc09
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70039
Maintainer: Matt Sinclair <mattdsinclair@gmail.com>
Reviewed-by: Matt Sinclair <mattdsinclair@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
Matthew Poremba
2023-04-21 14:07:01 -05:00
parent 9c3107c762
commit 6c1b95ea41

View File

@@ -248,6 +248,13 @@ AMDGPUDevice::readMMIO(PacketPtr pkt, Addr offset)
DPRINTF(AMDGPUDevice, "Read MMIO %#lx\n", offset);
mmioReader.readFromTrace(pkt, MMIO_BAR, offset);
if (regs.find(pkt->getAddr()) != regs.end()) {
uint64_t value = regs[pkt->getAddr()];
DPRINTF(AMDGPUDevice, "Reading what kernel wrote before: %#x\n",
value);
pkt->setUintX(value, ByteOrder::little);
}
switch (aperture) {
case NBIO_BASE:
switch (aperture_offset) {