<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="generator" content="Osso Notes">
    <title></title></head>
<body>
<p>&gt; So these faults are just generic errors? Unrelated to page faults?
<br>
<br>These faults *are* page faults, in a way.
<br>
<br>On nv50, page faults are quite weird. When a fault happens, the MMU's fault reporting registers at 0x100c90 are filled with fault information, and the 'fault pending' flag is set. This is what nouveau reports as VM FAULT.
<br>
<br>However, this does NOT trigger any specific interrupt - the fault is instead reported to requesting engine, which in turn reports an engine-specific interrupt, like VFETCH FAULT or CCACHE FAULT. These interrupts sometimes [eg for TPROP traps] also report some more useful information in engine-specific registers.
<br>
<br>Usually getting an engine fault implies getting a VM fault, but not always, so nouveau reports them separately - it only uses the engine fault as a trigger to check for new VM faults, but does not associate them in any way. The reasons for mismatches could be:
<br>
<br>- Interrupts that trigger VM fault in some cases, but not in others: DMA_PUSHER/MEM_FAULT can happen due to DMA_LIMIT overrun, or due to VM fault
<br>- Multiple VM faults in quick succession will result in only one of them being reported as VM fault, but all of them as engine faults
<br>
<br>Hope this clears things up.
<br>
<br>Marcin Koƛcielnicki</p>
</body>
</html>