I took a look on the linux tlb patch.
This is the msr related part.
MSR_K8_HWCR is 0xC0010015, so the patch does the same to disable the bios fix.if ((c->x86 == 0x10) && (c->x86_model < 3) && (c->x86_mask != 3)) {
/* re-enable TLB caching if BIOS disabled it */
rdmsrl(MSR_K8_HWCR, value);
value &= ~(1UL << 3);
wrmsrl(MSR_K8_HWCR, value);
rdmsrl(0xC0011023, value);
value &= ~(1UL << 1);
wrmsrl(0xC0011023, value);
/* enable OS workaround */
e298_bug = 1;
printk(KERN_INFO "AMD erratum 298 workaround enabled\n");
}
But it also sets bit nr 1 in the 0xc0011023 register.
That is called the Bus Unit configuration register and the bits 47:0 are labeld as reserved in the k10 bios developers doc.
Anyway, if the last number is 0h the patch is not applied if it's 2h the patch is applied.
Results
Both fixes enabled:
Only first(tlb) fix removed:
Only second fix removed:
Both fixes removed:
Note: I had two cores disabled and 10x cpu multi because of some k8 vs. k10 comparison, it's no kuma es.![]()
If i start AOD it is in yellow state.
If i put it in red state both fixes are removed. If i put it in black state both are applied. The yellow state shows the same value as the red state after modifying via AOD and the same values as the black state before AOD's modification.
Another note, actualy each core has this msr registers, i gained ~80 points applying the firts fix to all four cores instead of just the first one.
Bookmarks