[BACK]Return to lapic.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / arch / x86 / x86

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/arch/x86/x86/lapic.c between version 1.63 and 1.64

version 1.63, 2017/11/04 12:53:00 version 1.64, 2017/11/23 19:53:20
Line 124  bool x2apic_enable = true;
Line 124  bool x2apic_enable = true;
 bool x2apic_enable = false;  bool x2apic_enable = false;
 #endif  #endif
   
   static bool lapic_broken_periodic __read_mostly;
   
 static uint32_t  static uint32_t
 i82489_readreg(u_int reg)  i82489_readreg(u_int reg)
 {  {
Line 678  lapic_calibrate_timer(struct cpu_info *c
Line 680  lapic_calibrate_timer(struct cpu_info *c
                             32;                              32;
   
                 /*                  /*
                    * Apply workaround for broken periodic timer under KVM
                    */
                   if (vm_guest == VM_GUEST_KVM) {
                           lapic_broken_periodic = true;
                           lapic_timecounter.tc_quality = -100;
                           aprint_debug_dev(ci->ci_dev,
                               "applying KVM timer workaround\n");
                   }
   
                   /*
                  * Now that the timer's calibrated, use the apic timer routines                   * Now that the timer's calibrated, use the apic timer routines
                  * for all our timing needs..                   * for all our timing needs..
                  */                   */
Line 717  lapic_delay(unsigned int usec)
Line 729  lapic_delay(unsigned int usec)
   
         while (deltat > 0) {          while (deltat > 0) {
                 xtick = lapic_gettick();                  xtick = lapic_gettick();
                   if (lapic_broken_periodic && xtick == 0 && otick == 0) {
                           lapic_initclocks();
                           xtick = lapic_gettick();
                           if (xtick == 0)
                                   panic("lapic timer stopped ticking");
                   }
                 if (xtick > otick)                  if (xtick > otick)
                         deltat -= lapic_tval - (xtick - otick);                          deltat -= lapic_tval - (xtick - otick);
                 else                  else

Legend:
Removed from v.1.63  
changed lines
  Added in v.1.64

CVSweb <webmaster@jp.NetBSD.org>