As an aside, I would avoid "sti; hlt;" because I cannot say for sure whether the delayed effect of enabling interrupts harms "hlt". It probably does not harm it but why take the extra risk? If you take into account the time used for researching the issue thoroughly (CPU errata, for example?), and all kind of stuff, it is just easier to use "sti; nop; hlt;" and move on quickly.
Another classic Antti post, i.e. irrelevant details for side-tracking the discussion. Why I said this is not because I thought this specific small detail did matter. I said it because I think, in general, that we should avoid unnecessary corner cases
if we can simply avoid them and be a little bit more
defensive.