@@ -74,6 +74,10 @@ namespace hw {
7474
7575 void APIC::init ()
7676 {
77+ // use KVMs paravirt EOI if supported
78+ // if (CPUID::kvm_feature(KVM_FEATURE_PV_EOI))
79+ // kvm_pv_eoi_init();
80+
7781 const uint64_t APIC_BASE_MSR = CPU::read_msr (IA32_APIC_BASE_MSR);
7882 // / find the LAPICs base address ///
7983 const uintptr_t APIC_BASE_ADDR = APIC_BASE_MSR & 0xFFFFF000 ;
@@ -104,10 +108,6 @@ namespace hw {
104108 init_smp ();
105109 }
106110
107- // use KVMs paravirt EOI if supported
108- if (CPUID::kvm_feature (KVM_FEATURE_PV_EOI))
109- kvm_pv_eoi_init ();
110-
111111 // subscribe to APIC-related interrupts
112112 setup_subs ();
113113 }
@@ -342,7 +342,7 @@ int __test_and_clear_bit(long nr, volatile unsigned long* addr)
342342static volatile unsigned long kvm_apic_eoi = KVM_PV_EOI_DISABLED;
343343void kvm_pv_eoi () {
344344
345- printf (" BEFOR: %#lx intr %u irr %u\n " , kvm_apic_eoi, hw::APIC::get_isr (), hw::APIC::get_irr ());
345+ // printf("BEFOR: %#lx intr %u irr %u\n", kvm_apic_eoi, hw::APIC::get_isr(), hw::APIC::get_irr());
346346 // fast EOI by KVM
347347 if (__test_and_clear_bit (KVM_PV_EOI_BIT, &kvm_apic_eoi)) {
348348 printf (" avoided\n " );
@@ -351,16 +351,16 @@ void kvm_pv_eoi() {
351351 // fallback to normal APIC EOI
352352 hw::lapic.regs ->eoi .reg = 0 ;
353353 // check after
354- printf (" AFTER: %#lx intr %u irr %u\n " , kvm_apic_eoi, hw::APIC::get_isr (), hw::APIC::get_irr ());
354+ // printf("AFTER: %#lx intr %u irr %u\n", kvm_apic_eoi, hw::APIC::get_isr(), hw::APIC::get_irr());
355355}
356356void kvm_pv_eoi_init () {
357- printf (" * Enabling KVM paravirtual EOI\n " );
357+ // printf("* Enabling KVM paravirtual EOI\n");
358358 // set new EOI handler
359359 current_eoi_mechanism = kvm_pv_eoi;
360360 // setup PV EOI using local variable
361361 kvm_apic_eoi = 0 ;
362362 auto pv_eoi = (uintptr_t ) &kvm_apic_eoi;
363- printf (" MSR %#x pv_eoi = %#x\n " , MSR_KVM_PV_EOI_EN, pv_eoi);
363+ // printf(" MSR %#x pv_eoi = %#x\n", MSR_KVM_PV_EOI_EN, pv_eoi);
364364 hw::CPU::write_msr (MSR_KVM_PV_EOI_EN, pv_eoi | KVM_MSR_ENABLED, 0 );
365365 // verify that the feature was enabled
366366 auto res = hw::CPU::read_msr (MSR_KVM_PV_EOI_EN);
0 commit comments