All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Sean Christopherson <seanjc@google.com>
Cc: oe-kbuild-all@lists.linux.dev
Subject: [sean-jc:x86/virt_enable_less_sucky 2/4] arch/x86/include/asm/kvm_host.h:1609:2: error: unknown type name 'cpu_emergency_virt_cb'
Date: Sat, 20 Apr 2024 07:42:30 +0800	[thread overview]
Message-ID: <202404200746.R3izLrf2-lkp@intel.com> (raw)

tree:   https://github.com/sean-jc/linux x86/virt_enable_less_sucky
head:   5a4973b46ba550977b8ad51970f8a26494e65a8f
commit: eb37cd848b9a267681c225f1a6a0176cfe7c088c [2/4] KVM: x86: Register emergency virt callback in common code, via kvm_x86_ops
config: i386-buildonly-randconfig-003-20240420 (https://download.01.org/0day-ci/archive/20240420/202404200746.R3izLrf2-lkp@intel.com/config)
compiler: gcc-8 (Ubuntu 8.4.0-3ubuntu2) 8.4.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240420/202404200746.R3izLrf2-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202404200746.R3izLrf2-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from include/linux/kvm_host.h:45,
                    from arch/x86/events/intel/core.c:17:
>> arch/x86/include/asm/kvm_host.h:1609:2: error: unknown type name 'cpu_emergency_virt_cb'
     cpu_emergency_virt_cb *emergency_disable;
     ^~~~~~~~~~~~~~~~~~~~~


vim +/cpu_emergency_virt_cb +1609 arch/x86/include/asm/kvm_host.h

  1601	
  1602	struct kvm_x86_ops {
  1603		const char *name;
  1604	
  1605		int (*check_processor_compatibility)(void);
  1606	
  1607		int (*hardware_enable)(void);
  1608		void (*hardware_disable)(void);
> 1609		cpu_emergency_virt_cb *emergency_disable;
  1610	
  1611		void (*hardware_unsetup)(void);
  1612		bool (*has_emulated_msr)(struct kvm *kvm, u32 index);
  1613		void (*vcpu_after_set_cpuid)(struct kvm_vcpu *vcpu);
  1614	
  1615		unsigned int vm_size;
  1616		int (*vm_init)(struct kvm *kvm);
  1617		void (*vm_destroy)(struct kvm *kvm);
  1618	
  1619		/* Create, but do not attach this VCPU */
  1620		int (*vcpu_precreate)(struct kvm *kvm);
  1621		int (*vcpu_create)(struct kvm_vcpu *vcpu);
  1622		void (*vcpu_free)(struct kvm_vcpu *vcpu);
  1623		void (*vcpu_reset)(struct kvm_vcpu *vcpu, bool init_event);
  1624	
  1625		void (*prepare_switch_to_guest)(struct kvm_vcpu *vcpu);
  1626		void (*vcpu_load)(struct kvm_vcpu *vcpu, int cpu);
  1627		void (*vcpu_put)(struct kvm_vcpu *vcpu);
  1628	
  1629		void (*update_exception_bitmap)(struct kvm_vcpu *vcpu);
  1630		int (*get_msr)(struct kvm_vcpu *vcpu, struct msr_data *msr);
  1631		int (*set_msr)(struct kvm_vcpu *vcpu, struct msr_data *msr);
  1632		u64 (*get_segment_base)(struct kvm_vcpu *vcpu, int seg);
  1633		void (*get_segment)(struct kvm_vcpu *vcpu,
  1634				    struct kvm_segment *var, int seg);
  1635		int (*get_cpl)(struct kvm_vcpu *vcpu);
  1636		void (*set_segment)(struct kvm_vcpu *vcpu,
  1637				    struct kvm_segment *var, int seg);
  1638		void (*get_cs_db_l_bits)(struct kvm_vcpu *vcpu, int *db, int *l);
  1639		bool (*is_valid_cr0)(struct kvm_vcpu *vcpu, unsigned long cr0);
  1640		void (*set_cr0)(struct kvm_vcpu *vcpu, unsigned long cr0);
  1641		void (*post_set_cr3)(struct kvm_vcpu *vcpu, unsigned long cr3);
  1642		bool (*is_valid_cr4)(struct kvm_vcpu *vcpu, unsigned long cr4);
  1643		void (*set_cr4)(struct kvm_vcpu *vcpu, unsigned long cr4);
  1644		int (*set_efer)(struct kvm_vcpu *vcpu, u64 efer);
  1645		void (*get_idt)(struct kvm_vcpu *vcpu, struct desc_ptr *dt);
  1646		void (*set_idt)(struct kvm_vcpu *vcpu, struct desc_ptr *dt);
  1647		void (*get_gdt)(struct kvm_vcpu *vcpu, struct desc_ptr *dt);
  1648		void (*set_gdt)(struct kvm_vcpu *vcpu, struct desc_ptr *dt);
  1649		void (*sync_dirty_debug_regs)(struct kvm_vcpu *vcpu);
  1650		void (*set_dr7)(struct kvm_vcpu *vcpu, unsigned long value);
  1651		void (*cache_reg)(struct kvm_vcpu *vcpu, enum kvm_reg reg);
  1652		unsigned long (*get_rflags)(struct kvm_vcpu *vcpu);
  1653		void (*set_rflags)(struct kvm_vcpu *vcpu, unsigned long rflags);
  1654		bool (*get_if_flag)(struct kvm_vcpu *vcpu);
  1655	
  1656		void (*flush_tlb_all)(struct kvm_vcpu *vcpu);
  1657		void (*flush_tlb_current)(struct kvm_vcpu *vcpu);
  1658	#if IS_ENABLED(CONFIG_HYPERV)
  1659		int  (*flush_remote_tlbs)(struct kvm *kvm);
  1660		int  (*flush_remote_tlbs_range)(struct kvm *kvm, gfn_t gfn,
  1661						gfn_t nr_pages);
  1662	#endif
  1663	
  1664		/*
  1665		 * Flush any TLB entries associated with the given GVA.
  1666		 * Does not need to flush GPA->HPA mappings.
  1667		 * Can potentially get non-canonical addresses through INVLPGs, which
  1668		 * the implementation may choose to ignore if appropriate.
  1669		 */
  1670		void (*flush_tlb_gva)(struct kvm_vcpu *vcpu, gva_t addr);
  1671	
  1672		/*
  1673		 * Flush any TLB entries created by the guest.  Like tlb_flush_gva(),
  1674		 * does not need to flush GPA->HPA mappings.
  1675		 */
  1676		void (*flush_tlb_guest)(struct kvm_vcpu *vcpu);
  1677	
  1678		int (*vcpu_pre_run)(struct kvm_vcpu *vcpu);
  1679		enum exit_fastpath_completion (*vcpu_run)(struct kvm_vcpu *vcpu,
  1680							  bool force_immediate_exit);
  1681		int (*handle_exit)(struct kvm_vcpu *vcpu,
  1682			enum exit_fastpath_completion exit_fastpath);
  1683		int (*skip_emulated_instruction)(struct kvm_vcpu *vcpu);
  1684		void (*update_emulated_instruction)(struct kvm_vcpu *vcpu);
  1685		void (*set_interrupt_shadow)(struct kvm_vcpu *vcpu, int mask);
  1686		u32 (*get_interrupt_shadow)(struct kvm_vcpu *vcpu);
  1687		void (*patch_hypercall)(struct kvm_vcpu *vcpu,
  1688					unsigned char *hypercall_addr);
  1689		void (*inject_irq)(struct kvm_vcpu *vcpu, bool reinjected);
  1690		void (*inject_nmi)(struct kvm_vcpu *vcpu);
  1691		void (*inject_exception)(struct kvm_vcpu *vcpu);
  1692		void (*cancel_injection)(struct kvm_vcpu *vcpu);
  1693		int (*interrupt_allowed)(struct kvm_vcpu *vcpu, bool for_injection);
  1694		int (*nmi_allowed)(struct kvm_vcpu *vcpu, bool for_injection);
  1695		bool (*get_nmi_mask)(struct kvm_vcpu *vcpu);
  1696		void (*set_nmi_mask)(struct kvm_vcpu *vcpu, bool masked);
  1697		/* Whether or not a virtual NMI is pending in hardware. */
  1698		bool (*is_vnmi_pending)(struct kvm_vcpu *vcpu);
  1699		/*
  1700		 * Attempt to pend a virtual NMI in hardware.  Returns %true on success
  1701		 * to allow using static_call_ret0 as the fallback.
  1702		 */
  1703		bool (*set_vnmi_pending)(struct kvm_vcpu *vcpu);
  1704		void (*enable_nmi_window)(struct kvm_vcpu *vcpu);
  1705		void (*enable_irq_window)(struct kvm_vcpu *vcpu);
  1706		void (*update_cr8_intercept)(struct kvm_vcpu *vcpu, int tpr, int irr);
  1707		bool (*check_apicv_inhibit_reasons)(enum kvm_apicv_inhibit reason);
  1708		const unsigned long required_apicv_inhibits;
  1709		bool allow_apicv_in_x2apic_without_x2apic_virtualization;
  1710		void (*refresh_apicv_exec_ctrl)(struct kvm_vcpu *vcpu);
  1711		void (*hwapic_irr_update)(struct kvm_vcpu *vcpu, int max_irr);
  1712		void (*hwapic_isr_update)(int isr);
  1713		bool (*guest_apic_has_interrupt)(struct kvm_vcpu *vcpu);
  1714		void (*load_eoi_exitmap)(struct kvm_vcpu *vcpu, u64 *eoi_exit_bitmap);
  1715		void (*set_virtual_apic_mode)(struct kvm_vcpu *vcpu);
  1716		void (*set_apic_access_page_addr)(struct kvm_vcpu *vcpu);
  1717		void (*deliver_interrupt)(struct kvm_lapic *apic, int delivery_mode,
  1718					  int trig_mode, int vector);
  1719		int (*sync_pir_to_irr)(struct kvm_vcpu *vcpu);
  1720		int (*set_tss_addr)(struct kvm *kvm, unsigned int addr);
  1721		int (*set_identity_map_addr)(struct kvm *kvm, u64 ident_addr);
  1722		u8 (*get_mt_mask)(struct kvm_vcpu *vcpu, gfn_t gfn, bool is_mmio);
  1723	
  1724		void (*load_mmu_pgd)(struct kvm_vcpu *vcpu, hpa_t root_hpa,
  1725				     int root_level);
  1726	
  1727		bool (*has_wbinvd_exit)(void);
  1728	
  1729		u64 (*get_l2_tsc_offset)(struct kvm_vcpu *vcpu);
  1730		u64 (*get_l2_tsc_multiplier)(struct kvm_vcpu *vcpu);
  1731		void (*write_tsc_offset)(struct kvm_vcpu *vcpu);
  1732		void (*write_tsc_multiplier)(struct kvm_vcpu *vcpu);
  1733	
  1734		/*
  1735		 * Retrieve somewhat arbitrary exit information.  Intended to
  1736		 * be used only from within tracepoints or error paths.
  1737		 */
  1738		void (*get_exit_info)(struct kvm_vcpu *vcpu, u32 *reason,
  1739				      u64 *info1, u64 *info2,
  1740				      u32 *exit_int_info, u32 *exit_int_info_err_code);
  1741	
  1742		int (*check_intercept)(struct kvm_vcpu *vcpu,
  1743				       struct x86_instruction_info *info,
  1744				       enum x86_intercept_stage stage,
  1745				       struct x86_exception *exception);
  1746		void (*handle_exit_irqoff)(struct kvm_vcpu *vcpu);
  1747	
  1748		void (*sched_in)(struct kvm_vcpu *vcpu, int cpu);
  1749	
  1750		/*
  1751		 * Size of the CPU's dirty log buffer, i.e. VMX's PML buffer.  A zero
  1752		 * value indicates CPU dirty logging is unsupported or disabled.
  1753		 */
  1754		int cpu_dirty_log_size;
  1755		void (*update_cpu_dirty_logging)(struct kvm_vcpu *vcpu);
  1756	
  1757		const struct kvm_x86_nested_ops *nested_ops;
  1758	
  1759		void (*vcpu_blocking)(struct kvm_vcpu *vcpu);
  1760		void (*vcpu_unblocking)(struct kvm_vcpu *vcpu);
  1761	
  1762		int (*pi_update_irte)(struct kvm *kvm, unsigned int host_irq,
  1763				      uint32_t guest_irq, bool set);
  1764		void (*pi_start_assignment)(struct kvm *kvm);
  1765		void (*apicv_pre_state_restore)(struct kvm_vcpu *vcpu);
  1766		void (*apicv_post_state_restore)(struct kvm_vcpu *vcpu);
  1767		bool (*dy_apicv_has_pending_interrupt)(struct kvm_vcpu *vcpu);
  1768	
  1769		int (*set_hv_timer)(struct kvm_vcpu *vcpu, u64 guest_deadline_tsc,
  1770				    bool *expired);
  1771		void (*cancel_hv_timer)(struct kvm_vcpu *vcpu);
  1772	
  1773		void (*setup_mce)(struct kvm_vcpu *vcpu);
  1774	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

                 reply	other threads:[~2024-04-19 23:43 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202404200746.R3izLrf2-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=seanjc@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.