Fix (?) L2$ miss bug
The victim's metadata was incorrectly used for the new line.
This commit is contained in:
parent
ea76800d1a
commit
b4e38192a1
@ -874,6 +874,7 @@ class L2AcquireTracker(trackerId: Int) extends L2XactTracker {
|
|||||||
val pending_coh_on_hit = HierarchicalMetadata(
|
val pending_coh_on_hit = HierarchicalMetadata(
|
||||||
io.meta.resp.bits.meta.coh.inner,
|
io.meta.resp.bits.meta.coh.inner,
|
||||||
io.meta.resp.bits.meta.coh.outer.onHit(xact.op_code()))
|
io.meta.resp.bits.meta.coh.outer.onHit(xact.op_code()))
|
||||||
|
val pending_coh_on_miss = HierarchicalMetadata.onReset
|
||||||
|
|
||||||
// State machine updates and transaction handler metadata intialization
|
// State machine updates and transaction handler metadata intialization
|
||||||
when(state === s_idle && io.inner.acquire.valid) {
|
when(state === s_idle && io.inner.acquire.valid) {
|
||||||
@ -910,7 +911,7 @@ class L2AcquireTracker(trackerId: Int) extends L2XactTracker {
|
|||||||
coh.inner.requiresProbesOnVoluntaryWriteback())
|
coh.inner.requiresProbesOnVoluntaryWriteback())
|
||||||
val needs_inner_probes = tag_match && coh.inner.requiresProbes(xact)
|
val needs_inner_probes = tag_match && coh.inner.requiresProbes(xact)
|
||||||
when(!tag_match || is_hit && pending_coh_on_hit != coh) { pending_meta_write := Bool(true) }
|
when(!tag_match || is_hit && pending_coh_on_hit != coh) { pending_meta_write := Bool(true) }
|
||||||
pending_coh := Mux(is_hit, pending_coh_on_hit, coh)
|
pending_coh := Mux(is_hit, pending_coh_on_hit, Mux(tag_match, coh, pending_coh_on_miss))
|
||||||
when(needs_inner_probes) {
|
when(needs_inner_probes) {
|
||||||
val full_sharers = coh.inner.full()
|
val full_sharers = coh.inner.full()
|
||||||
val mask_self = Mux(
|
val mask_self = Mux(
|
||||||
|
Loading…
Reference in New Issue
Block a user