Device: Bump PIO and PCI latencies to more reasonable values
authorAndreas Hansson <andreas.hansson@arm.com>
Mon, 10 Sep 2012 15:57:36 +0000 (11:57 -0400)
committerAndreas Hansson <andreas.hansson@arm.com>
Mon, 10 Sep 2012 15:57:36 +0000 (11:57 -0400)
This patch addresses a previously highlighted issue with the default
latencies used for PIO and PCI devices. The values are merely educated
guesses and might not represent the particular system you want to
model. However, the values in this patch are definitely far more
realistic than the previous ones.

In i8254xGBe, the writeConfig method is updated to use configDelay
instead of pioDelay.

A follow-up patch will update the regression stats.

src/dev/Device.py
src/dev/Pci.py
src/dev/i8254xGBe.cc

index b1a4f69bcc9c17a01e8dbeec3a8e8b0f8c21443b..3a06444cb3680df5ea5468ddf41594fd03e40905 100644 (file)
@@ -40,7 +40,7 @@ class BasicPioDevice(PioDevice):
     type = 'BasicPioDevice'
     abstract = True
     pio_addr = Param.Addr("Device Address")
-    pio_latency = Param.Latency('1ns', "Programmed IO latency")
+    pio_latency = Param.Latency('100ns', "Programmed IO latency")
 
 class DmaDevice(PioDevice):
     type = 'DmaDevice'
index db2791ed5a0d87b4a3818b92fb1330f72a186cf2..4d2baa3e81dd8287c8c0ed7ff71a48614224952f 100644 (file)
@@ -34,9 +34,7 @@ from Device import BasicPioDevice, DmaDevice, PioDevice
 class PciConfigAll(PioDevice):
     type = 'PciConfigAll'
     platform = Param.Platform(Parent.any, "Platform this device is part of.")
-    # @todo: This latency is unrealistically low and only kept at 1 tick
-    # to not change any regressions
-    pio_latency = Param.Latency('1t', "Programmed IO latency")
+    pio_latency = Param.Latency('30ns', "Programmed IO latency")
     bus = Param.UInt8(0x00, "PCI bus to act as config space for")
     size = Param.MemorySize32('16MB', "Size of config space")
 
@@ -49,7 +47,7 @@ class PciDevice(DmaDevice):
     pci_bus = Param.Int("PCI bus")
     pci_dev = Param.Int("PCI device number")
     pci_func = Param.Int("PCI function code")
-    pio_latency = Param.Latency('1ns', "Programmed IO latency")
+    pio_latency = Param.Latency('30ns', "Programmed IO latency")
     config_latency = Param.Latency('20ns', "Config read or write latency")
 
     VendorID = Param.UInt16("Vendor ID")
index d2b7c0f7576a927d705590ee1ec19db19c576b28..159cc47267c17a848fe9f88b123c41e18dcc7b8b 100644 (file)
@@ -160,7 +160,7 @@ IGbE::writeConfig(PacketPtr pkt)
     // Some work may need to be done here based for the pci COMMAND bits.
     //
 
-    return pioDelay;
+    return configDelay;
 }
 
 // Handy macro for range-testing register access addresses