Why does GSBASE need to be set again?
Because lgdt() != LGDT, it reloads %gs. I could have used bare_lgdt(), but think that we better reload there segment cache as well, actually.
Just an update: I'm at test number 534 out of 677 with an uptime of 20 hours (tests are sorted by increasing run time).
No problems so far.
I wish one could use PCPU_GET(gdt) instead of *PCPU_PTR(gdt) to look more readable, but I understand why we can't do that.
I ran the full stress2 test using 64144. No problems seen.