Hacker News new | past | comments | ask | show | jobs | submit login




Thanks for posting this link. I was curious about a, b and d:

>"(a) IDT itself is a horrible nasty format and you shouldn't have to parse memory in odd ways to handle exceptions. It was fundamentally bad from the 80286 beginnings, it got a tiny bit harder to parse for 32-bit, and it arguably got much worse in x86-64."

What is it about IDT that requires parsing memory in odd ways? What is odd about it?

>"(b) %rsp not being restored properly by return-to-user mode."

Does anyone know why this is? Is this a historical accident or something else?

>"(d) several bad exception nesting problems (NMI, machine checks and STI-shadow handling at the very least)" Is this one these two exceptions are nested together or is this an issue when either one of these is present in the interrupt chain? Is there any good documentation on this?


Reading https://wiki.osdev.org/Interrupt_Descriptor_Table, the table contains a 32-bit offset that’s split into two halves for IA-32 or a 64-bit one split into 3 parts for AMD64.

There also seems to be some cruft from having segments and still having (¿some?) 16-bit code support, but I think that’s par for the game.


tldr: AMD is "fix the spec bugs". Intel is "replace with better approach". Linus: do both, please!




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: