• Home
  • Raw
  • Download

Lines Matching refs:npu_context

400 struct npu_context {  struct
407 struct npu_context *(*release_cb)(struct npu_context *, void *); argument
520 #define mn_to_npu_context(x) container_of(x, struct npu_context, mn)
545 static void acquire_atsd_reg(struct npu_context *npu_context, in acquire_atsd_reg() argument
562 npdev = READ_ONCE(npu_context->npdev[i][j]); in acquire_atsd_reg()
606 static void mmio_invalidate(struct npu_context *npu_context, int va, in mmio_invalidate() argument
610 unsigned long pid = npu_context->mm->context.id; in mmio_invalidate()
616 flush_tlb_mm(npu_context->mm); in mmio_invalidate()
622 acquire_atsd_reg(npu_context, mmio_atsd_reg); in mmio_invalidate()
646 struct npu_context *npu_context = mn_to_npu_context(mn); in pnv_npu2_mn_release() local
649 if (npu_context->release_cb) in pnv_npu2_mn_release()
650 npu_context->release_cb(npu_context, npu_context->priv); in pnv_npu2_mn_release()
656 mmio_invalidate(npu_context, 0, 0, true); in pnv_npu2_mn_release()
664 struct npu_context *npu_context = mn_to_npu_context(mn); in pnv_npu2_mn_change_pte() local
666 mmio_invalidate(npu_context, 1, address, true); in pnv_npu2_mn_change_pte()
673 struct npu_context *npu_context = mn_to_npu_context(mn); in pnv_npu2_mn_invalidate_range() local
681 mmio_invalidate(npu_context, 0, 0, true); in pnv_npu2_mn_invalidate_range()
684 mmio_invalidate(npu_context, 1, address, false); in pnv_npu2_mn_invalidate_range()
687 mmio_invalidate(npu_context, 1, address, true); in pnv_npu2_mn_invalidate_range()
711 struct npu_context *pnv_npu2_init_context(struct pci_dev *gpdev, in pnv_npu2_init_context()
713 struct npu_context *(*cb)(struct npu_context *, void *), in pnv_npu2_init_context() argument
722 struct npu_context *npu_context; in pnv_npu2_init_context() local
762 npu_context = mm->context.npu_context; in pnv_npu2_init_context()
763 if (!npu_context) { in pnv_npu2_init_context()
764 npu_context = kzalloc(sizeof(struct npu_context), GFP_KERNEL); in pnv_npu2_init_context()
765 if (!npu_context) in pnv_npu2_init_context()
768 mm->context.npu_context = npu_context; in pnv_npu2_init_context()
769 npu_context->mm = mm; in pnv_npu2_init_context()
770 npu_context->mn.ops = &nv_nmmu_notifier_ops; in pnv_npu2_init_context()
771 __mmu_notifier_register(&npu_context->mn, mm); in pnv_npu2_init_context()
772 kref_init(&npu_context->kref); in pnv_npu2_init_context()
774 kref_get(&npu_context->kref); in pnv_npu2_init_context()
777 npu_context->release_cb = cb; in pnv_npu2_init_context()
778 npu_context->priv = priv; in pnv_npu2_init_context()
792 WRITE_ONCE(npu_context->npdev[npu->index][nvlink_index], npdev); in pnv_npu2_init_context()
794 return npu_context; in pnv_npu2_init_context()
800 struct npu_context *npu_context = in pnv_npu2_release_context() local
801 container_of(kref, struct npu_context, kref); in pnv_npu2_release_context()
803 npu_context->mm->context.npu_context = NULL; in pnv_npu2_release_context()
804 mmu_notifier_unregister(&npu_context->mn, in pnv_npu2_release_context()
805 npu_context->mm); in pnv_npu2_release_context()
807 kfree(npu_context); in pnv_npu2_release_context()
810 void pnv_npu2_destroy_context(struct npu_context *npu_context, in pnv_npu2_destroy_context() argument
831 WRITE_ONCE(npu_context->npdev[npu->index][nvlink_index], NULL); in pnv_npu2_destroy_context()
832 opal_npu_destroy_context(nphb->opal_id, npu_context->mm->context.id, in pnv_npu2_destroy_context()
834 kref_put(&npu_context->kref, pnv_npu2_release_context); in pnv_npu2_destroy_context()
841 int pnv_npu2_handle_fault(struct npu_context *context, uintptr_t *ea, in pnv_npu2_handle_fault()