version 1.76, 2019/12/01 08:23:09 |
version 1.76.6.3, 2020/04/18 14:47:56 |
Line 41 __KERNEL_RCSID(0, "$NetBSD$"); |
|
Line 41 __KERNEL_RCSID(0, "$NetBSD$"); |
|
#include "opt_mpbios.h" /* for MPDEBUG */ |
#include "opt_mpbios.h" /* for MPDEBUG */ |
#include "opt_multiprocessor.h" |
#include "opt_multiprocessor.h" |
#include "opt_ntp.h" |
#include "opt_ntp.h" |
|
#include "opt_xen.h" |
|
|
|
|
#include <sys/param.h> |
#include <sys/param.h> |
#include <sys/proc.h> |
#include <sys/proc.h> |
Line 52 __KERNEL_RCSID(0, "$NetBSD$"); |
|
Line 54 __KERNEL_RCSID(0, "$NetBSD$"); |
|
|
|
#include <dev/ic/i8253reg.h> |
#include <dev/ic/i8253reg.h> |
|
|
|
#include <x86/machdep.h> |
#include <machine/cpu.h> |
#include <machine/cpu.h> |
#include <machine/cpu_counter.h> |
#include <machine/cpu_counter.h> |
#include <machine/cpufunc.h> |
#include <machine/cpufunc.h> |
Line 70 __KERNEL_RCSID(0, "$NetBSD$"); |
|
Line 73 __KERNEL_RCSID(0, "$NetBSD$"); |
|
#include <machine/i82489reg.h> |
#include <machine/i82489reg.h> |
#include <machine/i82489var.h> |
#include <machine/i82489var.h> |
|
|
|
#ifndef XENPV |
#if NACPICA > 0 |
#if NACPICA > 0 |
#include <dev/acpi/acpica.h> |
#include <dev/acpi/acpica.h> |
#include <dev/acpi/acpivar.h> |
#include <dev/acpi/acpivar.h> |
Line 278 lapic_setup_bsp(paddr_t lapic_base) |
|
Line 282 lapic_setup_bsp(paddr_t lapic_base) |
|
!ISSET(regs[0], VCPUINFO_LEGACY_X2APIC)) |
!ISSET(regs[0], VCPUINFO_LEGACY_X2APIC)) |
reason = "inside VMWare without intr " |
reason = "inside VMWare without intr " |
"redirection"; |
"redirection"; |
} else if (vm_guest == VM_GUEST_XEN) { |
} else if (vm_guest == VM_GUEST_XENHVM) { |
reason = "due to running under XEN"; |
reason = "due to running under XEN"; |
} else if (vm_guest == VM_GUEST_NO && |
} else if (vm_guest == VM_GUEST_NO && |
CPUID_TO_FAMILY(curcpu()->ci_signature) == 6 && |
CPUID_TO_FAMILY(curcpu()->ci_signature) == 6 && |
Line 591 lapic_initclocks(void) |
|
Line 595 lapic_initclocks(void) |
|
lapic_writereg(LAPIC_EOI, 0); |
lapic_writereg(LAPIC_EOI, 0); |
} |
} |
|
|
extern u_long rtclock_tval; /* XXX put in header file */ |
|
extern void (*initclock_func)(void); /* XXX put in header file */ |
|
|
|
/* |
/* |
* Calibrate the local apic count-down timer (which is running at |
* Calibrate the local apic count-down timer (which is running at |
* bus-clock speed) vs. the i8254 counter/timer (which is running at |
* bus-clock speed) vs. the i8254 counter/timer (which is running at |
Line 635 lapic_calibrate_timer(struct cpu_info *c |
|
Line 636 lapic_calibrate_timer(struct cpu_info *c |
|
for (seen = 0; seen < TIMER_FREQ / 100; seen += delta) { |
for (seen = 0; seen < TIMER_FREQ / 100; seen += delta) { |
cur_i8254 = gettick(); |
cur_i8254 = gettick(); |
if (cur_i8254 > initial_i8254) |
if (cur_i8254 > initial_i8254) |
delta = rtclock_tval - (cur_i8254 - initial_i8254); |
delta = x86_rtclock_tval - (cur_i8254 - initial_i8254); |
else |
else |
delta = initial_i8254 - cur_i8254; |
delta = initial_i8254 - cur_i8254; |
initial_i8254 = cur_i8254; |
initial_i8254 = cur_i8254; |
|
|
* for all our timing needs.. |
* for all our timing needs.. |
*/ |
*/ |
delay_func = lapic_delay; |
delay_func = lapic_delay; |
initclock_func = lapic_initclocks; |
x86_cpu_initclock_func = lapic_initclocks; |
|
x86_initclock_func = x86_dummy_initclock; |
initrtclock(0); |
initrtclock(0); |
|
|
if (lapic_timecounter.tc_frequency == 0) { |
if (lapic_timecounter.tc_frequency == 0) { |
Line 963 lapic_dump(void) |
|
Line 965 lapic_dump(void) |
|
|
|
#undef APIC_LVT_PRIINT |
#undef APIC_LVT_PRIINT |
} |
} |
|
#else /* XENPV */ |
|
void |
|
lapic_boot_init(paddr_t lapic_base) |
|
{ |
|
} |
|
#endif /* XENPV */ |