According to intel, asyncronous events at the chip level can be categorized like this:
- Interupts
- Exceptions (Traps, Faults, Aborts)
In this way, all "faults" are hardware faults. Now some "faults" - such as the "Double Fault" - can cause the OS to hang... windows for example will blue screen on a double fault. What is the "cause" of the Double Fault? Well, it's either a software error (kernel bug) or something physically wrong with the machine, such as bad memory.
But I think by "fault" you mean something like the "blue screen of death."
So are you saying "most blue screens are caused by physical hardware problems" or that "most blue screens are caused by microprocessor faults"? Because "most faults are hardware faults" is at best trivially true, at worst flat-out wrong because ALL faults are hardware faults by definition, i.e. being exceptions, raised by the microprocessor.
I would suggest something like "while most kernel failures are caused by hardware faults (by definition), and a correct kernel could theoretically prevent 100% of failures caused by kernel bugs, there will always be kernel failures due to hardware issues that you cannot prevent with formal review."
But I guess that's so obvious nobody would bother posting that. On the other hand, nobody will call "bullshit" either.