Thanks Ashwin for the explanation. *On AQ Init, the context is first allocated in the cache.* -> Does the hardware take care of it? Before writing to memory, it writes to NDC first?
Thanks Amiya On Wed, 16 Sept 2026 at 21:08, Ashwin Sekhar <[email protected]> wrote: > Hi Amiya, > > NDC is a cache that NPA uses to cache frequently accessed contexts and > stack pages. All accesses to contexts/stack pages go via this cache only. > There is NO direct access to backing memory in NPA operations. > > On AQ Init, the context is first allocated in the cache. Whenever NPA must > access this context (for subsequent alloc/frees or AQ reads/writes), it > will read/write directly from the cache. The context/stack pages never gets > evicted out of the cache (unless there are more contexts/stack pages active > at the same time than the NDC can hold). > > Doing an NDC sync will write back the dirty entries in the cache to the > backing memory. This does not affect the normal operation of NPA in anyway. > Even after you do a sync, the entries remain in the cache and further NPA > operations still read/write from the cache. The backing memory is NEVER > accessed directly. > > Why we need it at teardown is to avoid corruption. We free stack pages > when we destroy the pool. If there are stale entries for these stack pages > remaining in the cache, then at a later point of time, these entries can > become candidates for eviction and can cause writes to memory which was > already freed causing corruption/translation faults etc. > > >> how it's a side effect of IOVA as PA > IOVA as PA is NOT a supported mode. We have not studied what kind of > errors will pop up in this mode. Explaining the side effects in this mode > will require deeper study which we don't think is necessary for an > unsupported mode. > > Thanks > Ashwin > >

