From 44929766ea1a00786d0b508ee742752d813b76c3 Mon Sep 17 00:00:00 2001 From: Ved Shanbhogue Date: Fri, 31 May 2024 06:29:04 -0500 Subject: [PATCH] Stop Marker are not auto-resp --- iommu_ref_model/libiommu/src/iommu_ats.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/iommu_ref_model/libiommu/src/iommu_ats.c b/iommu_ref_model/libiommu/src/iommu_ats.c index 21123a08..470c70bb 100644 --- a/iommu_ref_model/libiommu/src/iommu_ats.c +++ b/iommu_ref_model/libiommu/src/iommu_ats.c @@ -101,7 +101,7 @@ handle_page_request( device_context_t DC; page_rec_t prec; uint8_t DDI[3]; - uint8_t L; + uint8_t L, R, W; uint16_t PRGI; uint32_t device_id, cause, status, response_code, PRPR; uint64_t prec_addr; @@ -319,9 +319,11 @@ handle_page_request( // The status is set to Success if no other faults were encountered but the // "Page Request" could not be queued due to the page-request queue being full // (pqh == pqt - 1) or had a overflow (pqcsr.pqof == 1). + R = get_bits(0, 0, pr->PAYLOAD); + W = get_bits(1, 1, pr->PAYLOAD); L = get_bits(2, 2, pr->PAYLOAD); PRGI = get_bits(11, 3, pr->PAYLOAD); - if ( L == 0 ) { + if ( L == 0 || (L == 1 && R == 0 && W == 0) ) { return; } prgr.MSGCODE = PRGR_MSG_CODE;