Lines Matching refs:fault

68 			u8  fault;  member
70 } **fault; member
420 struct nouveau_svm_fault *fault) in nouveau_svm_fault_cancel_fault() argument
422 nouveau_svm_fault_cancel(svm, fault->inst, in nouveau_svm_fault_cancel_fault()
423 fault->hub, in nouveau_svm_fault_cancel_fault()
424 fault->gpc, in nouveau_svm_fault_cancel_fault()
425 fault->client); in nouveau_svm_fault_cancel_fault()
460 struct nouveau_svm_fault *fault; in nouveau_svm_fault_cache() local
468 if (!buffer->fault[buffer->fault_nr]) { in nouveau_svm_fault_cache()
469 fault = kmalloc(sizeof(*fault), GFP_KERNEL); in nouveau_svm_fault_cache()
470 if (WARN_ON(!fault)) { in nouveau_svm_fault_cache()
474 buffer->fault[buffer->fault_nr] = fault; in nouveau_svm_fault_cache()
477 fault = buffer->fault[buffer->fault_nr++]; in nouveau_svm_fault_cache()
478 fault->inst = inst; in nouveau_svm_fault_cache()
479 fault->addr = (u64)addrhi << 32 | addrlo; in nouveau_svm_fault_cache()
480 fault->time = (u64)timehi << 32 | timelo; in nouveau_svm_fault_cache()
481 fault->engine = engine; in nouveau_svm_fault_cache()
482 fault->gpc = gpc; in nouveau_svm_fault_cache()
483 fault->hub = hub; in nouveau_svm_fault_cache()
484 fault->access = (info & 0x000f0000) >> 16; in nouveau_svm_fault_cache()
485 fault->client = client; in nouveau_svm_fault_cache()
486 fault->fault = (info & 0x0000001f); in nouveau_svm_fault_cache()
489 fault->inst, fault->addr, fault->access); in nouveau_svm_fault_cache()
625 sort(buffer->fault, buffer->fault_nr, sizeof(*buffer->fault), in nouveau_svm_fault()
631 if (!svmm || buffer->fault[fi]->inst != inst) { in nouveau_svm_fault()
633 nouveau_ivmm_find(svm, buffer->fault[fi]->inst); in nouveau_svm_fault()
635 inst = buffer->fault[fi]->inst; in nouveau_svm_fault()
638 buffer->fault[fi]->svmm = svmm; in nouveau_svm_fault()
654 if (!(svmm = buffer->fault[fi]->svmm)) { in nouveau_svm_fault()
655 nouveau_svm_fault_cancel_fault(svm, buffer->fault[fi]); in nouveau_svm_fault()
658 SVMM_DBG(svmm, "addr %016llx", buffer->fault[fi]->addr); in nouveau_svm_fault()
663 start = buffer->fault[fi]->addr; in nouveau_svm_fault()
674 nouveau_svm_fault_cancel_fault(svm, buffer->fault[fi]); in nouveau_svm_fault()
687 nouveau_svm_fault_cancel_fault(svm, buffer->fault[fi]); in nouveau_svm_fault()
695 if (buffer->fault[fi]->addr != start) { in nouveau_svm_fault()
696 SVMM_ERR(svmm, "addr %016llx", buffer->fault[fi]->addr); in nouveau_svm_fault()
698 nouveau_svm_fault_cancel_fault(svm, buffer->fault[fi]); in nouveau_svm_fault()
713 if (buffer->fault[fn]->access != 0 /* READ. */ && in nouveau_svm_fault()
714 buffer->fault[fn]->access != 3 /* PREFETCH. */) { in nouveau_svm_fault()
730 buffer->fault[fn]->svmm == svmm && in nouveau_svm_fault()
731 buffer->fault[fn ]->addr == in nouveau_svm_fault()
732 buffer->fault[fn - 1]->addr); in nouveau_svm_fault()
738 buffer->fault[fn]->svmm != svmm || in nouveau_svm_fault()
739 buffer->fault[fn]->addr >= limit) in nouveau_svm_fault()
743 fill = (buffer->fault[fn ]->addr - in nouveau_svm_fault()
744 buffer->fault[fn - 1]->addr) >> PAGE_SHIFT; in nouveau_svm_fault()
773 struct nouveau_svm_fault *fault = buffer->fault[fi++]; in nouveau_svm_fault() local
774 pi = (fault->addr - args.i.p.addr) >> PAGE_SHIFT; in nouveau_svm_fault()
778 fault->access != 0 && fault->access != 3)) { in nouveau_svm_fault()
779 nouveau_svm_fault_cancel_fault(svm, fault); in nouveau_svm_fault()
816 if (buffer->fault) { in nouveau_svm_fault_buffer_dtor()
817 for (i = 0; buffer->fault[i] && i < buffer->entries; i++) in nouveau_svm_fault_buffer_dtor()
818 kfree(buffer->fault[i]); in nouveau_svm_fault_buffer_dtor()
819 kvfree(buffer->fault); in nouveau_svm_fault_buffer_dtor()
857 buffer->fault = kvzalloc(sizeof(*buffer->fault) * buffer->entries, GFP_KERNEL); in nouveau_svm_fault_buffer_ctor()
858 if (!buffer->fault) in nouveau_svm_fault_buffer_ctor()