Skip to content

Commit 6b36119

Browse files
sean-jcbonzini
authored andcommitted
KVM: x86: Export KVM-internal symbols for sub-modules only
Rework almost all of KVM x86's exports to expose symbols only to KVM's vendor modules, i.e. to kvm-{amd,intel}.ko. Keep the generic exports that are guarded by CONFIG_KVM_EXTERNAL_WRITE_TRACKING=y, as they're explicitly designed/intended for external usage. Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Sean Christopherson <[email protected]> Signed-off-by: Paolo Bonzini <[email protected]>
1 parent 6560468 commit 6b36119

File tree

11 files changed

+173
-173
lines changed

11 files changed

+173
-173
lines changed

arch/x86/kvm/cpuid.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
* aligned to sizeof(unsigned long) because it's not accessed via bitops.
3535
*/
3636
u32 kvm_cpu_caps[NR_KVM_CPU_CAPS] __read_mostly;
37-
EXPORT_SYMBOL_GPL(kvm_cpu_caps);
37+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_cpu_caps);
3838

3939
struct cpuid_xstate_sizes {
4040
u32 eax;
@@ -131,7 +131,7 @@ struct kvm_cpuid_entry2 *kvm_find_cpuid_entry2(
131131

132132
return NULL;
133133
}
134-
EXPORT_SYMBOL_GPL(kvm_find_cpuid_entry2);
134+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_find_cpuid_entry2);
135135

136136
static int kvm_check_cpuid(struct kvm_vcpu *vcpu)
137137
{
@@ -1261,7 +1261,7 @@ void kvm_set_cpu_caps(void)
12611261
kvm_cpu_cap_clear(X86_FEATURE_RDPID);
12621262
}
12631263
}
1264-
EXPORT_SYMBOL_GPL(kvm_set_cpu_caps);
1264+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_set_cpu_caps);
12651265

12661266
#undef F
12671267
#undef SCATTERED_F
@@ -2085,7 +2085,7 @@ bool kvm_cpuid(struct kvm_vcpu *vcpu, u32 *eax, u32 *ebx,
20852085
used_max_basic);
20862086
return exact;
20872087
}
2088-
EXPORT_SYMBOL_GPL(kvm_cpuid);
2088+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_cpuid);
20892089

20902090
int kvm_emulate_cpuid(struct kvm_vcpu *vcpu)
20912091
{
@@ -2103,4 +2103,4 @@ int kvm_emulate_cpuid(struct kvm_vcpu *vcpu)
21032103
kvm_rdx_write(vcpu, edx);
21042104
return kvm_skip_emulated_instruction(vcpu);
21052105
}
2106-
EXPORT_SYMBOL_GPL(kvm_emulate_cpuid);
2106+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_emulate_cpuid);

arch/x86/kvm/hyperv.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -923,7 +923,7 @@ bool kvm_hv_assist_page_enabled(struct kvm_vcpu *vcpu)
923923
return false;
924924
return vcpu->arch.pv_eoi.msr_val & KVM_MSR_ENABLED;
925925
}
926-
EXPORT_SYMBOL_GPL(kvm_hv_assist_page_enabled);
926+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_hv_assist_page_enabled);
927927

928928
int kvm_hv_get_assist_page(struct kvm_vcpu *vcpu)
929929
{
@@ -935,7 +935,7 @@ int kvm_hv_get_assist_page(struct kvm_vcpu *vcpu)
935935
return kvm_read_guest_cached(vcpu->kvm, &vcpu->arch.pv_eoi.data,
936936
&hv_vcpu->vp_assist_page, sizeof(struct hv_vp_assist_page));
937937
}
938-
EXPORT_SYMBOL_GPL(kvm_hv_get_assist_page);
938+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_hv_get_assist_page);
939939

940940
static void stimer_prepare_msg(struct kvm_vcpu_hv_stimer *stimer)
941941
{

arch/x86/kvm/irq.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ int kvm_cpu_has_injectable_intr(struct kvm_vcpu *v)
103103

104104
return kvm_apic_has_interrupt(v) != -1; /* LAPIC */
105105
}
106-
EXPORT_SYMBOL_GPL(kvm_cpu_has_injectable_intr);
106+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_cpu_has_injectable_intr);
107107

108108
/*
109109
* check if there is pending interrupt without
@@ -119,7 +119,7 @@ int kvm_cpu_has_interrupt(struct kvm_vcpu *v)
119119

120120
return kvm_apic_has_interrupt(v) != -1; /* LAPIC */
121121
}
122-
EXPORT_SYMBOL_GPL(kvm_cpu_has_interrupt);
122+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_cpu_has_interrupt);
123123

124124
/*
125125
* Read pending interrupt(from non-APIC source)
@@ -148,7 +148,7 @@ int kvm_cpu_get_extint(struct kvm_vcpu *v)
148148
WARN_ON_ONCE(!irqchip_split(v->kvm));
149149
return get_userspace_extint(v);
150150
}
151-
EXPORT_SYMBOL_GPL(kvm_cpu_get_extint);
151+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_cpu_get_extint);
152152

153153
/*
154154
* Read pending interrupt vector and intack.

arch/x86/kvm/kvm_onhyperv.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,13 +101,13 @@ int hv_flush_remote_tlbs_range(struct kvm *kvm, gfn_t start_gfn, gfn_t nr_pages)
101101

102102
return __hv_flush_remote_tlbs_range(kvm, &range);
103103
}
104-
EXPORT_SYMBOL_GPL(hv_flush_remote_tlbs_range);
104+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(hv_flush_remote_tlbs_range);
105105

106106
int hv_flush_remote_tlbs(struct kvm *kvm)
107107
{
108108
return __hv_flush_remote_tlbs_range(kvm, NULL);
109109
}
110-
EXPORT_SYMBOL_GPL(hv_flush_remote_tlbs);
110+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(hv_flush_remote_tlbs);
111111

112112
void hv_track_root_tdp(struct kvm_vcpu *vcpu, hpa_t root_tdp)
113113
{
@@ -121,4 +121,4 @@ void hv_track_root_tdp(struct kvm_vcpu *vcpu, hpa_t root_tdp)
121121
spin_unlock(&kvm_arch->hv_root_tdp_lock);
122122
}
123123
}
124-
EXPORT_SYMBOL_GPL(hv_track_root_tdp);
124+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(hv_track_root_tdp);

arch/x86/kvm/lapic.c

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ bool kvm_apic_pending_eoi(struct kvm_vcpu *vcpu, int vector)
106106
}
107107

108108
__read_mostly DEFINE_STATIC_KEY_FALSE(kvm_has_noapic_vcpu);
109-
EXPORT_SYMBOL_GPL(kvm_has_noapic_vcpu);
109+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_has_noapic_vcpu);
110110

111111
__read_mostly DEFINE_STATIC_KEY_DEFERRED_FALSE(apic_hw_disabled, HZ);
112112
__read_mostly DEFINE_STATIC_KEY_DEFERRED_FALSE(apic_sw_disabled, HZ);
@@ -646,7 +646,7 @@ bool __kvm_apic_update_irr(unsigned long *pir, void *regs, int *max_irr)
646646
return ((max_updated_irr != -1) &&
647647
(max_updated_irr == *max_irr));
648648
}
649-
EXPORT_SYMBOL_GPL(__kvm_apic_update_irr);
649+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(__kvm_apic_update_irr);
650650

651651
bool kvm_apic_update_irr(struct kvm_vcpu *vcpu, unsigned long *pir, int *max_irr)
652652
{
@@ -657,7 +657,7 @@ bool kvm_apic_update_irr(struct kvm_vcpu *vcpu, unsigned long *pir, int *max_irr
657657
apic->irr_pending = true;
658658
return irr_updated;
659659
}
660-
EXPORT_SYMBOL_GPL(kvm_apic_update_irr);
660+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_apic_update_irr);
661661

662662
static inline int apic_search_irr(struct kvm_lapic *apic)
663663
{
@@ -697,7 +697,7 @@ void kvm_apic_clear_irr(struct kvm_vcpu *vcpu, int vec)
697697
{
698698
apic_clear_irr(vec, vcpu->arch.apic);
699699
}
700-
EXPORT_SYMBOL_GPL(kvm_apic_clear_irr);
700+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_apic_clear_irr);
701701

702702
static void *apic_vector_to_isr(int vec, struct kvm_lapic *apic)
703703
{
@@ -779,7 +779,7 @@ void kvm_apic_update_hwapic_isr(struct kvm_vcpu *vcpu)
779779

780780
kvm_x86_call(hwapic_isr_update)(vcpu, apic_find_highest_isr(apic));
781781
}
782-
EXPORT_SYMBOL_GPL(kvm_apic_update_hwapic_isr);
782+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_apic_update_hwapic_isr);
783783

784784
int kvm_lapic_find_highest_irr(struct kvm_vcpu *vcpu)
785785
{
@@ -790,7 +790,7 @@ int kvm_lapic_find_highest_irr(struct kvm_vcpu *vcpu)
790790
*/
791791
return apic_find_highest_irr(vcpu->arch.apic);
792792
}
793-
EXPORT_SYMBOL_GPL(kvm_lapic_find_highest_irr);
793+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_lapic_find_highest_irr);
794794

795795
static int __apic_accept_irq(struct kvm_lapic *apic, int delivery_mode,
796796
int vector, int level, int trig_mode,
@@ -954,7 +954,7 @@ void kvm_apic_update_ppr(struct kvm_vcpu *vcpu)
954954
{
955955
apic_update_ppr(vcpu->arch.apic);
956956
}
957-
EXPORT_SYMBOL_GPL(kvm_apic_update_ppr);
957+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_apic_update_ppr);
958958

959959
static void apic_set_tpr(struct kvm_lapic *apic, u32 tpr)
960960
{
@@ -1065,7 +1065,7 @@ bool kvm_apic_match_dest(struct kvm_vcpu *vcpu, struct kvm_lapic *source,
10651065
return false;
10661066
}
10671067
}
1068-
EXPORT_SYMBOL_GPL(kvm_apic_match_dest);
1068+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_apic_match_dest);
10691069

10701070
static int kvm_vector_to_index(u32 vector, u32 dest_vcpus,
10711071
const unsigned long *bitmap, u32 bitmap_size)
@@ -1292,7 +1292,7 @@ bool kvm_intr_is_single_vcpu(struct kvm *kvm, struct kvm_lapic_irq *irq,
12921292

12931293
return r == 1;
12941294
}
1295-
EXPORT_SYMBOL_GPL(kvm_intr_is_single_vcpu);
1295+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_intr_is_single_vcpu);
12961296

12971297
int kvm_irq_delivery_to_apic(struct kvm *kvm, struct kvm_lapic *src,
12981298
struct kvm_lapic_irq *irq, struct dest_map *dest_map)
@@ -1569,7 +1569,7 @@ void kvm_apic_set_eoi_accelerated(struct kvm_vcpu *vcpu, int vector)
15691569
kvm_ioapic_send_eoi(apic, vector);
15701570
kvm_make_request(KVM_REQ_EVENT, apic->vcpu);
15711571
}
1572-
EXPORT_SYMBOL_GPL(kvm_apic_set_eoi_accelerated);
1572+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_apic_set_eoi_accelerated);
15731573

15741574
static void kvm_icr_to_lapic_irq(struct kvm_lapic *apic, u32 icr_low,
15751575
u32 icr_high, struct kvm_lapic_irq *irq)
@@ -1600,7 +1600,7 @@ void kvm_apic_send_ipi(struct kvm_lapic *apic, u32 icr_low, u32 icr_high)
16001600

16011601
kvm_irq_delivery_to_apic(apic->vcpu->kvm, apic, &irq, NULL);
16021602
}
1603-
EXPORT_SYMBOL_GPL(kvm_apic_send_ipi);
1603+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_apic_send_ipi);
16041604

16051605
static u32 apic_get_tmcct(struct kvm_lapic *apic)
16061606
{
@@ -1717,7 +1717,7 @@ u64 kvm_lapic_readable_reg_mask(struct kvm_lapic *apic)
17171717

17181718
return valid_reg_mask;
17191719
}
1720-
EXPORT_SYMBOL_GPL(kvm_lapic_readable_reg_mask);
1720+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_lapic_readable_reg_mask);
17211721

17221722
static int kvm_lapic_reg_read(struct kvm_lapic *apic, u32 offset, int len,
17231723
void *data)
@@ -1958,7 +1958,7 @@ void kvm_wait_lapic_expire(struct kvm_vcpu *vcpu)
19581958
lapic_timer_int_injected(vcpu))
19591959
__kvm_wait_lapic_expire(vcpu);
19601960
}
1961-
EXPORT_SYMBOL_GPL(kvm_wait_lapic_expire);
1961+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_wait_lapic_expire);
19621962

19631963
static void kvm_apic_inject_pending_timer_irqs(struct kvm_lapic *apic)
19641964
{
@@ -2272,7 +2272,7 @@ void kvm_lapic_expired_hv_timer(struct kvm_vcpu *vcpu)
22722272
out:
22732273
preempt_enable();
22742274
}
2275-
EXPORT_SYMBOL_GPL(kvm_lapic_expired_hv_timer);
2275+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_lapic_expired_hv_timer);
22762276

22772277
void kvm_lapic_switch_to_hv_timer(struct kvm_vcpu *vcpu)
22782278
{
@@ -2525,7 +2525,7 @@ void kvm_lapic_set_eoi(struct kvm_vcpu *vcpu)
25252525
{
25262526
kvm_lapic_reg_write(vcpu->arch.apic, APIC_EOI, 0);
25272527
}
2528-
EXPORT_SYMBOL_GPL(kvm_lapic_set_eoi);
2528+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_lapic_set_eoi);
25292529

25302530
#define X2APIC_ICR_RESERVED_BITS (GENMASK_ULL(31, 20) | GENMASK_ULL(17, 16) | BIT(13))
25312531

@@ -2608,7 +2608,7 @@ void kvm_apic_write_nodecode(struct kvm_vcpu *vcpu, u32 offset)
26082608
else
26092609
kvm_lapic_reg_write(apic, offset, kvm_lapic_get_reg(apic, offset));
26102610
}
2611-
EXPORT_SYMBOL_GPL(kvm_apic_write_nodecode);
2611+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_apic_write_nodecode);
26122612

26132613
void kvm_free_lapic(struct kvm_vcpu *vcpu)
26142614
{
@@ -2746,7 +2746,7 @@ int kvm_apic_set_base(struct kvm_vcpu *vcpu, u64 value, bool host_initiated)
27462746
kvm_recalculate_apic_map(vcpu->kvm);
27472747
return 0;
27482748
}
2749-
EXPORT_SYMBOL_GPL(kvm_apic_set_base);
2749+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_apic_set_base);
27502750

27512751
void kvm_apic_update_apicv(struct kvm_vcpu *vcpu)
27522752
{
@@ -2794,7 +2794,7 @@ int kvm_alloc_apic_access_page(struct kvm *kvm)
27942794

27952795
return 0;
27962796
}
2797-
EXPORT_SYMBOL_GPL(kvm_alloc_apic_access_page);
2797+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_alloc_apic_access_page);
27982798

27992799
void kvm_inhibit_apic_access_page(struct kvm_vcpu *vcpu)
28002800
{
@@ -3058,7 +3058,7 @@ int kvm_apic_has_interrupt(struct kvm_vcpu *vcpu)
30583058
__apic_update_ppr(apic, &ppr);
30593059
return apic_has_interrupt_for_ppr(apic, ppr);
30603060
}
3061-
EXPORT_SYMBOL_GPL(kvm_apic_has_interrupt);
3061+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_apic_has_interrupt);
30623062

30633063
int kvm_apic_accept_pic_intr(struct kvm_vcpu *vcpu)
30643064
{
@@ -3117,7 +3117,7 @@ void kvm_apic_ack_interrupt(struct kvm_vcpu *vcpu, int vector)
31173117
}
31183118

31193119
}
3120-
EXPORT_SYMBOL_GPL(kvm_apic_ack_interrupt);
3120+
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_apic_ack_interrupt);
31213121

31223122
static int kvm_apic_state_fixup(struct kvm_vcpu *vcpu,
31233123
struct kvm_lapic_state *s, bool set)

0 commit comments

Comments
 (0)