From 314d6ebd6f30599509f8e538a0db95d8704dd090 Mon Sep 17 00:00:00 2001 From: "Wesley W. Terpstra" Date: Mon, 5 Sep 2016 22:10:28 -0700 Subject: [PATCH] tilelink2: stricter TransferSizes requirements --- src/main/scala/uncore/tilelink2/Fragmenter.scala | 2 +- src/main/scala/uncore/tilelink2/Parameters.scala | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/scala/uncore/tilelink2/Fragmenter.scala b/src/main/scala/uncore/tilelink2/Fragmenter.scala index f9472f48..cec91c59 100644 --- a/src/main/scala/uncore/tilelink2/Fragmenter.scala +++ b/src/main/scala/uncore/tilelink2/Fragmenter.scala @@ -26,7 +26,7 @@ class TLFragmenter(minSize: Int, maxSize: Int, alwaysMin: Boolean = false) exten } def shrinkTransfer(x: TransferSizes) = if (!alwaysMin) x else - if (x.min <= minSize) TransferSizes(x.min, minSize) else + if (x.min <= minSize) TransferSizes(x.min, min(minSize, x.max)) else TransferSizes.none def mapManager(m: TLManagerParameters) = m.copy( supportsAcquire = TransferSizes.none, // this adapter breaks acquires diff --git a/src/main/scala/uncore/tilelink2/Parameters.scala b/src/main/scala/uncore/tilelink2/Parameters.scala index 9a909261..0fb438ab 100644 --- a/src/main/scala/uncore/tilelink2/Parameters.scala +++ b/src/main/scala/uncore/tilelink2/Parameters.scala @@ -50,6 +50,7 @@ case class TransferSizes(min: Int, max: Int) require (min >= 0 && max >= 0) require (max == 0 || isPow2(max)) require (min == 0 || isPow2(min)) + require (max == 0 || min != 0) // 0 is forbidden unless (0,0) def none = min == 0 def contains(x: Int) = isPow2(x) && min <= x && x <= max