As Daniel's answer explains, this simply a way of implementing an atomic 64-bit read using two 32-bit reads in the case that atomic 64-bit operations aren't available or it is not desirable to use them for some reason.
About the pause
instruction specifically, it is there for the rare time that the user-land code reading the counter happens to hit the exact moment where the kernel is updating them. At this point, it wants to "wait" until the kernel is done updating it, since it can't proceed until that occurs, but immediately reading the values again might be counter-productive since the writing and reading code will be fighting over the involved cache line.
The pause
instruction is useful here since it inserts a small delay, is a single instruction, and also hints to the CPU that we are in a type of spin-wait loop and not to further speculate memory reads. It also allows another thread running on the same core (on the other "hyperthread") more use of the core's execution resources. In this case, the other thread could very well be the kernel thread trying to complete the write, so this makes a lot of sense.
The code would work without the pause
so this is just a minor performance optimization. The vast, vast, majority of the time this path isn't even taken so the overall effect is probably microscopic1.
1 In the comments it was mentioned that the high part changes every 7 minutes, so the chance of hitting the race where we need to retry is really, really small. Let's conservatively assume that the gap between the two writes on the kernel size is 10 ns (about 30 cycles on a typical machine), I calculate the probability of any given read hitting the race at about 1 in 40 billion. Given that, you could make a reasonable argument that the pause
is perhaps a pessimization here - any extra instructions in this slow path might not pay off in terms of code-size vs benefit (although here they seem to have put the slow path into its own cache line, so extra bytes could be "free" there).