From f82081a550dfdb654a85243b6ec02421bd01031f Mon Sep 17 00:00:00 2001 From: Sylvain Chapeland Date: Fri, 10 Mar 2023 16:23:48 +0100 Subject: [PATCH 1/2] double-check superpagesize --- src/Cru/CruBar.cxx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Cru/CruBar.cxx b/src/Cru/CruBar.cxx index 50b10de3..39fc0bd1 100644 --- a/src/Cru/CruBar.cxx +++ b/src/Cru/CruBar.cxx @@ -156,6 +156,11 @@ uint32_t CruBar::getSuperpageSize(uint32_t link) { writeRegister(Cru::Registers::LINK_SUPERPAGE_SIZE.get(link).index, 0xbadcafe); // write a dummy value to update the FIFO uint32_t superpageSizeFifo = readRegister(Cru::Registers::LINK_SUPERPAGE_SIZE.get(link).index); + uint32_t superpageSizeFifoCopy = readRegister(Cru::Registers::LINK_SUPERPAGE_SIZE.get(link).index); + if (superpageSizeFifoCopy != superpageSizeFifo) { + log("superpageSize inconsistent: " + std::to_string(superpageSizeFifo) + " != " + std::to_string(superpageSizeFifoCopy), LogWarningDevel_(4600)); + } + uint32_t superpageSize = Utilities::getBits(superpageSizeFifo, 0, 23); // [0-23] -> superpage size (in bytes) if (superpageSize == 0) { // No reason to check for index -> superpageSize == 0 -> CRU FW < v3.4.0 return 0; From aef1c81a4e38c8a5e872c4ece51048ad36718c54 Mon Sep 17 00:00:00 2001 From: Sylvain Chapeland Date: Tue, 14 Mar 2023 16:19:55 +0100 Subject: [PATCH 2/2] double-check superpage size --- src/Cru/CruBar.cxx | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/Cru/CruBar.cxx b/src/Cru/CruBar.cxx index 39fc0bd1..1f55fd4a 100644 --- a/src/Cru/CruBar.cxx +++ b/src/Cru/CruBar.cxx @@ -156,11 +156,6 @@ uint32_t CruBar::getSuperpageSize(uint32_t link) { writeRegister(Cru::Registers::LINK_SUPERPAGE_SIZE.get(link).index, 0xbadcafe); // write a dummy value to update the FIFO uint32_t superpageSizeFifo = readRegister(Cru::Registers::LINK_SUPERPAGE_SIZE.get(link).index); - uint32_t superpageSizeFifoCopy = readRegister(Cru::Registers::LINK_SUPERPAGE_SIZE.get(link).index); - if (superpageSizeFifoCopy != superpageSizeFifo) { - log("superpageSize inconsistent: " + std::to_string(superpageSizeFifo) + " != " + std::to_string(superpageSizeFifoCopy), LogWarningDevel_(4600)); - } - uint32_t superpageSize = Utilities::getBits(superpageSizeFifo, 0, 23); // [0-23] -> superpage size (in bytes) if (superpageSize == 0) { // No reason to check for index -> superpageSize == 0 -> CRU FW < v3.4.0 return 0; @@ -173,6 +168,18 @@ uint32_t CruBar::getSuperpageSize(uint32_t link) superpageSizeIndex = Utilities::getBits(superpageSizeFifo, 24, 31); } + uint32_t superpageSizeFifoCopy = readRegister(Cru::Registers::LINK_SUPERPAGE_SIZE.get(link).index); + uint32_t superpageSizeCopy = Utilities::getBits(superpageSizeFifoCopy, 0, 23); + if (superpageSizeCopy != superpageSize) { + log("superpageSize inconsistent: 1st read = " + std::to_string(superpageSize) + " != " + std::to_string(superpageSizeCopy) + "2nd read", LogWarningDevel_(4600)); + log("superpageSizeIndex = " + std::to_string(superpageSizeIndex) + ", mSuperpageSizeIndexCounter[ " + std::to_string(link) + "] = " + std::to_string(mSuperpageSizeIndexCounter[link]), LogWarningDevel_(4600)); + } + uint32_t superpageSizeFifoCopy2 = readRegister(Cru::Registers::LINK_SUPERPAGE_SIZE.get(link).index); + uint32_t superpageSizeCopy2 = Utilities::getBits(superpageSizeFifoCopy2, 0, 23); + if (superpageSizeCopy2 != superpageSizeCopy) { + log("superpageSize inconsistent: 2nd read = " + std::to_string(superpageSizeCopy) + " != " + std::to_string(superpageSizeCopy2) + "3rd read", LogWarningDevel_(4600)); + } + mSuperpageSizeIndexCounter[link] = (superpageSizeIndex + 1) % 256; return superpageSize;