| /linux/arch/x86/include/asm/ |
| H A D | paravirt.h | 25 PVOP_VCALL0(pv_ops, cpu.io_delay); in slow_down_io() 27 PVOP_VCALL0(pv_ops, cpu.io_delay); in slow_down_io() 28 PVOP_VCALL0(pv_ops, cpu.io_delay); in slow_down_io() 29 PVOP_VCALL0(pv_ops, cpu.io_delay); in slow_down_io() 41 PVOP_VCALL0(pv_ops, mmu.flush_tlb_user); in __flush_tlb_local() 46 PVOP_VCALL0(pv_ops, mmu.flush_tlb_kernel); in __flush_tlb_global() 51 PVOP_VCALL1(pv_ops, mmu.flush_tlb_one_user, addr); in __flush_tlb_one_user() 57 PVOP_VCALL2(pv_ops, mmu.flush_tlb_multi, cpumask, info); in __flush_tlb_multi() 62 PVOP_VCALL1(pv_ops, mmu.exit_mmap, mm); in paravirt_arch_exit_mmap() 68 PVOP_VCALL3(pv_ops, mmu.notify_page_enc_status_changed, pfn, npages, enc); in notify_page_enc_status_changed() [all …]
|
| H A D | gsseg.h | 48 pv_ops.cpu.load_gs_index = native_lkgs; in lkgs_init()
|
| H A D | paravirt_types.h | 196 extern struct paravirt_patch_template pv_ops;
|
| /linux/arch/x86/xen/ |
| H A D | enlighten_pv.c | 1203 pv_ops.irq.save_fl = __PV_IS_CALLEE_SAVE(xen_save_fl_direct); in xen_setup_vcpu_info_placement() 1204 pv_ops.irq.irq_disable = __PV_IS_CALLEE_SAVE(xen_irq_disable_direct); in xen_setup_vcpu_info_placement() 1205 pv_ops.irq.irq_enable = __PV_IS_CALLEE_SAVE(xen_irq_enable_direct); in xen_setup_vcpu_info_placement() 1206 pv_ops.mmu.read_cr2 = __PV_IS_CALLEE_SAVE(xen_read_cr2_direct); in xen_setup_vcpu_info_placement() 1315 pv_ops.cpu.write_gdt_entry = xen_write_gdt_entry_boot; in xen_setup_gdt() 1316 pv_ops.cpu.load_gdt = xen_load_gdt_boot; in xen_setup_gdt() 1320 pv_ops.cpu.write_gdt_entry = xen_write_gdt_entry; in xen_setup_gdt() 1321 pv_ops.cpu.load_gdt = xen_load_gdt; in xen_setup_gdt() 1366 pv_ops.cpu.cpuid = xen_cpuid; in xen_start_kernel() 1367 pv_ops.cpu.set_debugreg = xen_set_debugreg; in xen_start_kernel() [all …]
|
| H A D | irq.c | 46 pv_ops.irq.save_fl = __PV_IS_CALLEE_SAVE(paravirt_ret0); in xen_init_irq_ops() 47 pv_ops.irq.irq_disable = __PV_IS_CALLEE_SAVE(paravirt_nop); in xen_init_irq_ops() 48 pv_ops.irq.irq_enable = __PV_IS_CALLEE_SAVE(BUG_func); in xen_init_irq_ops() 49 pv_ops.irq.safe_halt = xen_safe_halt; in xen_init_irq_ops() 50 pv_ops.irq.halt = xen_halt; in xen_init_irq_ops()
|
| H A D | mmu_pv.c | 1271 pv_ops.mmu.set_pte = __xen_set_pte; in xen_pagetable_init() 2163 pv_ops.mmu.set_pte = xen_set_pte; in xen_post_allocator_init() 2164 pv_ops.mmu.set_pmd = xen_set_pmd; in xen_post_allocator_init() 2165 pv_ops.mmu.set_pud = xen_set_pud; in xen_post_allocator_init() 2166 pv_ops.mmu.set_p4d = xen_set_p4d; in xen_post_allocator_init() 2170 pv_ops.mmu.alloc_pte = xen_alloc_pte; in xen_post_allocator_init() 2171 pv_ops.mmu.alloc_pmd = xen_alloc_pmd; in xen_post_allocator_init() 2172 pv_ops.mmu.release_pte = xen_release_pte; in xen_post_allocator_init() 2173 pv_ops.mmu.release_pmd = xen_release_pmd; in xen_post_allocator_init() 2174 pv_ops.mmu.alloc_pud = xen_alloc_pud; in xen_post_allocator_init() [all …]
|
| H A D | mmu_hvm.c | 65 pv_ops.mmu.exit_mmap = xen_hvm_exit_mmap; in xen_hvm_init_mmu_ops()
|
| /linux/Documentation/translations/zh_CN/virt/ |
| H A D | paravirt_ops.rst | 22 (hypervisor,下文简称超级管理器),需要不同的二进制内核,这个限制已经被pv_ops移 23 除了。Linux pv_ops是一个虚拟化API,它能够支持不同的管理程序。它允许每个管理程序 27 pv_ops提供了一组函数指针,代表了与低级关键指令和各领域高级功能相对应的操作。 30 pv_ops操作被分为三类:
|
| /linux/Documentation/virt/ |
| H A D | paravirt_ops.rst | 9 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 17 functionalities in various areas. pv_ops allows for optimizations at run 21 pv_ops operations are classified into three categories:
|
| /linux/tools/objtool/ |
| H A D | objtool.c | 53 if (!f->pv_ops) { in objtool_pv_add() 70 list_add(&func->pv_target, &f->pv_ops[idx].targets); in objtool_pv_add() 71 f->pv_ops[idx].clean = false; in objtool_pv_add()
|
| H A D | check.c | 616 file->pv_ops = NULL; in init_pv_ops() 632 file->pv_ops = calloc(nr, sizeof(struct pv_state)); in init_pv_ops() 633 if (!file->pv_ops) { in init_pv_ops() 639 INIT_LIST_HEAD(&file->pv_ops[idx].targets); in init_pv_ops() 3476 if (file->pv_ops[idx].clean) in pv_call_dest() 3479 file->pv_ops[idx].clean = true; in pv_call_dest() 3481 list_for_each_entry(target, &file->pv_ops[idx].targets, pv_target) { in pv_call_dest() 3484 file->pv_ops[idx].clean = false; in pv_call_dest() 3488 return file->pv_ops[idx].clean; in pv_call_dest() 3500 if (file->pv_ops) in noinstr_call_dest()
|
| /linux/arch/x86/kernel/ |
| H A D | paravirt.c | 102 struct paravirt_patch_template pv_ops = { variable 222 EXPORT_SYMBOL(pv_ops);
|
| H A D | kvm.c | 330 pv_ops.cpu.io_delay = kvm_io_delay; in paravirt_ops_setup() 861 pv_ops.mmu.flush_tlb_multi = kvm_flush_tlb_multi; in kvm_guest_init() 974 pv_ops.mmu.notify_page_enc_status_changed = in kvm_init_platform()
|
| /linux/tools/objtool/include/objtool/ |
| H A D | objtool.h | 39 struct pv_state *pv_ops; member
|
| /linux/arch/x86/hyperv/ |
| H A D | mmu.c | 245 pv_ops.mmu.flush_tlb_multi = hyperv_flush_tlb_multi; in hyperv_setup_mmu_ops()
|
| /linux/arch/x86/coco/tdx/ |
| H A D | tdx.c | 1181 pv_ops.irq.safe_halt = tdx_safe_halt; in tdx_early_init() 1182 pv_ops.irq.halt = tdx_halt; in tdx_early_init()
|
| /linux/arch/x86/kernel/cpu/ |
| H A D | vmware.c | 342 pv_ops.cpu.io_delay = paravirt_nop; in vmware_paravirt_ops_setup()
|