Ranter
Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Comments
-
mundo0349794yThe two features are probably unrelated and the programmers never spoke to each other.
That or the first one is a hack based on the second. -
@mundo03 These features are actually as related as they could be. The only reason PCIDs exist is to avoid flushing the TLB
-
@hjk101 You gotta wonder how this obvious mistake can be in the offical AMD64 manual for years and years though
Related Rants
-
linuxxx32*client calls in* Me: good morning, how can I help you? Client: my ip is blocked, could you unblock it for m...
-
DRSDavidSoft28Found this in our codebase, apparently one of my co-workers had written this
-
linuxxx23*client calls* "hello, we forgot the password to our WiFi router. Could you reset that for us?" 😐😶😮...
Found this little gem in the AMD64 reference manual:
"When PCIDs are enabled the system software can store 12-bit PCIDs in CR3 for different address spaces. Subsequently, when system software switches address spaces (**by writing the page table base pointer in CR3[62:12]**), the processor **may use TLB mappings previously stored for that address space and PCID**".
later:
"Updates to the CR3 register cause the entire TLB to be invalidated except for global pages."
So let me get this straight: PCIDs allow you to reuse TLB entries (instead of flushing the entire TLB) when writing a new address space to CR3 but writing to CR3 always flushes the entire TLB anyways
Just why 🤦♂️
rant
amd64
osdev
wtf