From 9d77e34bee4866ebebd2a030dba523bff36657f5 Mon Sep 17 00:00:00 2001 From: "Wesley W. Terpstra" Date: Fri, 4 Nov 2016 12:08:56 -0700 Subject: [PATCH] tilelink2 Filter: make transfer cap robust against large filters --- src/main/scala/uncore/tilelink2/Filter.scala | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/scala/uncore/tilelink2/Filter.scala b/src/main/scala/uncore/tilelink2/Filter.scala index c851f3f1..d22d56b7 100644 --- a/src/main/scala/uncore/tilelink2/Filter.scala +++ b/src/main/scala/uncore/tilelink2/Filter.scala @@ -14,7 +14,10 @@ class TLFilter(select: AddressSet) extends LazyModule managerFn = { case Seq(mp) => mp.copy(managers = mp.managers.map { m => val filtered = m.address.map(_.intersect(select)).flatten - val cap = TransferSizes(1, select.alignment.toInt) + val alignment = select.alignment /* alignment 0 means 'select' selected everything */ + val maxTransfer = 1 << 30 + val capTransfer = if (alignment == 0 || alignment > maxTransfer) maxTransfer else alignment.toInt + val cap = TransferSizes(1, capTransfer) if (filtered.isEmpty) { None } else { Some(m.copy( address = filtered,