I don't like the dbregs code. We unconditionally write into %dr6 and %dr7 in userret, that is, during each interruptible kernel->user transition.
Some measurements with PMCs show that the loads of dr6/dr7 are one of the first sources of recovery cycles during a build.sh - the cycles the CPU spends recovering from a mispredicted branch or a machine clear event. We lose many cycles down there. The code should have been written to just switch dbregs during context switches, and not on each transition. It could be fixed, but since the PopSS vuln, we actually disabled dbregs by default (they are now privileged), and I don't think we will ever re-enable them, given the risk, even though we do have a mitigation for PopSS. So why not remove the code?