Home
last modified time | relevance | path

Searched refs:pv_ops (Results 1 – 19 of 19) sorted by relevance

/linux-6.3-rc2/arch/x86/hyperv/
A Dhv_spinlock.c80 pv_ops.lock.queued_spin_lock_slowpath = __pv_queued_spin_lock_slowpath; in hv_init_spinlocks()
81 pv_ops.lock.queued_spin_unlock = PV_CALLEE_SAVE(__pv_queued_spin_unlock); in hv_init_spinlocks()
82 pv_ops.lock.wait = hv_qlock_wait; in hv_init_spinlocks()
83 pv_ops.lock.kick = hv_qlock_kick; in hv_init_spinlocks()
84 pv_ops.lock.vcpu_is_preempted = PV_CALLEE_SAVE(hv_vcpu_is_preempted); in hv_init_spinlocks()
A Dmmu.c241 pv_ops.mmu.flush_tlb_multi = hyperv_flush_tlb_multi; in hyperv_setup_mmu_ops()
242 pv_ops.mmu.tlb_remove_table = tlb_remove_table; in hyperv_setup_mmu_ops()
/linux-6.3-rc2/Documentation/translations/zh_CN/virt/
A Dparavirt_ops.rst22 (hypervisor,下文简称超级管理器),需要不同的二进制内核,这个限制已经被pv_ops
23 除了。Linux pv_ops是一个虚拟化API,它能够支持不同的管理程序。它允许每个管理程序
27 pv_ops提供了一组函数指针,代表了与低级关键指令和各领域高级功能相对应的操作。
30 pv_ops操作被分为三类:
/linux-6.3-rc2/arch/x86/xen/
A Dspinlock.c139 pv_ops.lock.queued_spin_lock_slowpath = __pv_queued_spin_lock_slowpath; in xen_init_spinlocks()
140 pv_ops.lock.queued_spin_unlock = in xen_init_spinlocks()
142 pv_ops.lock.wait = xen_qlock_wait; in xen_init_spinlocks()
143 pv_ops.lock.kick = xen_qlock_kick; in xen_init_spinlocks()
144 pv_ops.lock.vcpu_is_preempted = PV_CALLEE_SAVE(xen_vcpu_stolen); in xen_init_spinlocks()
A Dirq.c43 static const typeof(pv_ops) xen_irq_ops __initconst = {
57 pv_ops.irq = xen_irq_ops.irq; in xen_init_irq_ops()
A Denlighten_pv.c1049 pv_ops.irq.save_fl = __PV_IS_CALLEE_SAVE(xen_save_fl_direct); in xen_setup_vcpu_info_placement()
1050 pv_ops.irq.irq_disable = __PV_IS_CALLEE_SAVE(xen_irq_disable_direct); in xen_setup_vcpu_info_placement()
1051 pv_ops.irq.irq_enable = __PV_IS_CALLEE_SAVE(xen_irq_enable_direct); in xen_setup_vcpu_info_placement()
1052 pv_ops.mmu.read_cr2 = __PV_IS_CALLEE_SAVE(xen_read_cr2_direct); in xen_setup_vcpu_info_placement()
1060 static const typeof(pv_ops) xen_cpu_ops __initconst = {
1211 pv_ops.cpu.write_gdt_entry = xen_write_gdt_entry_boot; in xen_setup_gdt()
1212 pv_ops.cpu.load_gdt = xen_load_gdt_boot; in xen_setup_gdt()
1216 pv_ops.cpu.write_gdt_entry = xen_write_gdt_entry; in xen_setup_gdt()
1217 pv_ops.cpu.load_gdt = xen_load_gdt; in xen_setup_gdt()
1257 pv_ops.cpu = xen_cpu_ops.cpu; in xen_start_kernel()
A Dmmu_pv.c1206 pv_ops.mmu.set_pte = __xen_set_pte; in xen_pagetable_init()
2079 pv_ops.mmu.set_pte = xen_set_pte; in xen_post_allocator_init()
2080 pv_ops.mmu.set_pmd = xen_set_pmd; in xen_post_allocator_init()
2081 pv_ops.mmu.set_pud = xen_set_pud; in xen_post_allocator_init()
2082 pv_ops.mmu.set_p4d = xen_set_p4d; in xen_post_allocator_init()
2086 pv_ops.mmu.alloc_pte = xen_alloc_pte; in xen_post_allocator_init()
2087 pv_ops.mmu.alloc_pmd = xen_alloc_pmd; in xen_post_allocator_init()
2088 pv_ops.mmu.release_pte = xen_release_pte; in xen_post_allocator_init()
2090 pv_ops.mmu.alloc_pud = xen_alloc_pud; in xen_post_allocator_init()
2094 pv_ops.mmu.write_cr3 = &xen_write_cr3; in xen_post_allocator_init()
[all …]
A Dmmu_hvm.c65 pv_ops.mmu.exit_mmap = xen_hvm_exit_mmap; in xen_hvm_init_mmu_ops()
/linux-6.3-rc2/Documentation/virt/
A Dparavirt_ops.rst9 different hypervisors, this restriction was removed with pv_ops.
10 Linux pv_ops is a virtualization API which enables support for different
15 pv_ops provides a set of function pointers which represent operations
21 pv_ops operations are classified into three categories:
/linux-6.3-rc2/arch/x86/kernel/
A Dparavirt-spinlocks.c20 return pv_ops.lock.queued_spin_unlock.func == in pv_is_native_spin_unlock()
32 return pv_ops.lock.vcpu_is_preempted.func == in pv_is_native_vcpu_is_preempted()
A Dkvm.c313 pv_ops.cpu.io_delay = kvm_io_delay; in paravirt_ops_setup()
823 pv_ops.lock.vcpu_is_preempted = in kvm_guest_init()
837 pv_ops.mmu.flush_tlb_multi = kvm_flush_tlb_multi; in kvm_guest_init()
838 pv_ops.mmu.tlb_remove_table = tlb_remove_table; in kvm_guest_init()
938 pv_ops.mmu.notify_page_enc_status_changed = in kvm_init_platform()
1103 pv_ops.lock.queued_spin_lock_slowpath = __pv_queued_spin_lock_slowpath; in kvm_spinlock_init()
1104 pv_ops.lock.queued_spin_unlock = in kvm_spinlock_init()
1106 pv_ops.lock.wait = kvm_wait; in kvm_spinlock_init()
1107 pv_ops.lock.kick = kvm_kick_cpu; in kvm_spinlock_init()
A Dparavirt.c89 void *opfunc = *((void **)&pv_ops + type); in paravirt_patch()
259 struct paravirt_patch_template pv_ops = { variable
396 EXPORT_SYMBOL(pv_ops);
/linux-6.3-rc2/tools/objtool/
A Dobjtool.c120 if (!f->pv_ops) { in objtool_pv_add()
137 list_add(&func->pv_target, &f->pv_ops[idx].targets); in objtool_pv_add()
138 f->pv_ops[idx].clean = false; in objtool_pv_add()
A Dcheck.c565 const char *pv_ops; in init_pv_ops() local
572 file->pv_ops = NULL; in init_pv_ops()
579 file->pv_ops = calloc(sizeof(struct pv_state), nr); in init_pv_ops()
580 if (!file->pv_ops) in init_pv_ops()
584 INIT_LIST_HEAD(&file->pv_ops[idx].targets); in init_pv_ops()
587 add_pv_ops(file, pv_ops); in init_pv_ops()
3412 if (file->pv_ops[idx].clean) in pv_call_dest()
3415 file->pv_ops[idx].clean = true; in pv_call_dest()
3420 file->pv_ops[idx].clean = false; in pv_call_dest()
3424 return file->pv_ops[idx].clean; in pv_call_dest()
[all …]
/linux-6.3-rc2/arch/x86/include/asm/
A Dparavirt_types.h261 extern struct paravirt_patch_template pv_ops;
268 [paravirt_opptr] "m" (pv_ops.op)
419 #define PVOP_TEST_NULL(op) BUG_ON(pv_ops.op == NULL)
421 #define PVOP_TEST_NULL(op) ((void)pv_ops.op)
A Dgsseg.h48 pv_ops.cpu.load_gs_index = native_lkgs; in lkgs_init()
A Dparavirt.h584 pv_ops.mmu.set_fixmap(idx, phys, flags); in __set_fixmap()
776 call PARA_INDIRECT(pv_ops+PV_IRQ_save_fl);)
/linux-6.3-rc2/tools/objtool/include/objtool/
A Dobjtool.h39 struct pv_state *pv_ops; member
/linux-6.3-rc2/arch/x86/kernel/cpu/
A Dvmware.c332 pv_ops.cpu.io_delay = paravirt_nop; in vmware_paravirt_ops_setup()

Completed in 28 milliseconds