[BACK]Return to xen_intr.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / arch / xen / 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/xen/x86/xen_intr.c between version 1.21 and 1.21.2.4

version 1.21, 2020/04/06 19:26:00 version 1.21.2.4, 2020/04/14 16:52:35
Line 73  __KERNEL_RCSID(0, "$NetBSD$");
Line 73  __KERNEL_RCSID(0, "$NetBSD$");
 static const char *xen_ipi_names[XEN_NIPIS] = XEN_IPI_NAMES;  static const char *xen_ipi_names[XEN_NIPIS] = XEN_IPI_NAMES;
 #endif  #endif
   
 /*  
  * Restore a value to cpl (unmasking interrupts).  If any unmasked  
  * interrupts are pending, call Xspllower() to process them.  
  */  
 void xen_spllower(int nlevel);  
   
 void  
 xen_spllower(int nlevel)  
 {  
         struct cpu_info *ci = curcpu();  
         uint32_t xmask;  
         u_long psl;  
   
         if (ci->ci_ilevel <= nlevel)  
                 return;  
   
         __insn_barrier();  
   
         xmask = XUNMASK(ci, nlevel);  
         psl = xen_read_psl();  
         x86_disable_intr();  
         if (ci->ci_xpending & xmask) {  
                 KASSERT(psl == 0);  
                 Xspllower(nlevel);  
                 /* Xspllower does enable_intr() */  
         } else {  
                 ci->ci_ilevel = nlevel;  
                 xen_write_psl(psl);  
         }  
 }  
   
   
 #if !defined(XENPVHVM)  #if !defined(XENPVHVM)
 void  void
 x86_disable_intr(void)  x86_disable_intr(void)
Line 338  void xen_cpu_intr_init(struct cpu_info *
Line 306  void xen_cpu_intr_init(struct cpu_info *
 void  void
 xen_cpu_intr_init(struct cpu_info *ci)  xen_cpu_intr_init(struct cpu_info *ci)
 {  {
         int i; /* XXX: duplicate */  #if defined(__HAVE_PREEMPTION)
           x86_init_preempt(ci);
         ci->ci_xunmask[0] = 0xfffffffe;  #endif
         for (i = 1; i < NIPL; i++)          x86_intr_calculatemasks(ci);
                 ci->ci_xunmask[i] = ci->ci_xunmask[i - 1] & ~(1 << i);  
   
 #if defined(INTRSTACKSIZE)  #if defined(INTRSTACKSIZE)
         vaddr_t istack;          vaddr_t istack;
Line 370  xen_cpu_intr_init(struct cpu_info *ci)
Line 337  xen_cpu_intr_init(struct cpu_info *ci)
 #endif  #endif
   
 #ifdef MULTIPROCESSOR  #ifdef MULTIPROCESSOR
         for (i = 0; i < XEN_NIPIS; i++)          for (int i = 0; i < XEN_NIPIS; i++)
                 evcnt_attach_dynamic(&ci->ci_ipi_events[i], EVCNT_TYPE_MISC,                  evcnt_attach_dynamic(&ci->ci_ipi_events[i], EVCNT_TYPE_MISC,
                     NULL, device_xname(ci->ci_dev), xen_ipi_names[i]);                      NULL, device_xname(ci->ci_dev), xen_ipi_names[i]);
 #endif  #endif
Line 528  xen_intr_create_intrid(int legacy_irq, s
Line 495  xen_intr_create_intrid(int legacy_irq, s
 }  }
   
 #if !defined(XENPVHVM)  #if !defined(XENPVHVM)
 __strong_alias(spllower, xen_spllower);  
 __strong_alias(x86_read_psl, xen_read_psl);  __strong_alias(x86_read_psl, xen_read_psl);
 __strong_alias(x86_write_psl, xen_write_psl);  __strong_alias(x86_write_psl, xen_write_psl);
   

Legend:
Removed from v.1.21  
changed lines
  Added in v.1.21.2.4

CVSweb <webmaster@jp.NetBSD.org>