Print this page
OS-2366 ddi_periodic_add(9F) is entirely rubbish

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/i86pc/os/startup.c
          +++ new/usr/src/uts/i86pc/os/startup.c
↓ open down ↓ 110 lines elided ↑ open up ↑
 111  111  #include <sys/cpuvar.h>
 112  112  #include <sys/segments.h>
 113  113  #include <sys/clconf.h>
 114  114  #include <sys/kobj.h>
 115  115  #include <sys/kobj_lex.h>
 116  116  #include <sys/cpc_impl.h>
 117  117  #include <sys/cpu_module.h>
 118  118  #include <sys/smbios.h>
 119  119  #include <sys/debug_info.h>
 120  120  #include <sys/bootinfo.h>
 121      -#include <sys/ddi_timer.h>
      121 +#include <sys/ddi_periodic.h>
 122  122  #include <sys/systeminfo.h>
 123  123  #include <sys/multiboot.h>
 124  124  
 125  125  #ifdef  __xpv
 126  126  
 127  127  #include <sys/hypervisor.h>
 128  128  #include <sys/xen_mmu.h>
 129  129  #include <sys/evtchn_impl.h>
 130  130  #include <sys/gnttab.h>
 131  131  #include <sys/xpv_panic.h>
↓ open down ↓ 2106 lines elided ↑ open up ↑
2238 2238          sti();
2239 2239  #if defined(__xpv)
2240 2240          ASSERT(CPU->cpu_m.mcpu_vcpu_info->evtchn_upcall_mask == 0);
2241 2241          xen_late_startup();
2242 2242  #endif
2243 2243  
2244 2244          (void) add_avsoftintr((void *)&softlevel1_hdl, 1, softlevel1,
2245 2245              "softlevel1", NULL, NULL); /* XXX to be moved later */
2246 2246  
2247 2247          /*
2248      -         * Register these software interrupts for ddi timer.
     2248 +         * Register software interrupt handlers for ddi_periodic_add(9F).
2249 2249           * Software interrupts up to the level 10 are supported.
2250 2250           */
2251 2251          for (i = DDI_IPL_1; i <= DDI_IPL_10; i++) {
2252      -                char name[sizeof ("timer_softintr") + 2];
2253      -                (void) sprintf(name, "timer_softintr%02d", i);
2254 2252                  (void) add_avsoftintr((void *)&softlevel_hdl[i-1], i,
2255      -                    (avfunc)timer_softintr, name, (caddr_t)(uintptr_t)i, NULL);
     2253 +                    (avfunc)ddi_periodic_softintr, "ddi_periodic",
     2254 +                    (caddr_t)(uintptr_t)i, NULL);
2256 2255          }
2257 2256  
2258 2257  #if !defined(__xpv)
2259 2258          if (modload("drv", "amd_iommu") < 0) {
2260 2259                  PRM_POINT("No AMD IOMMU present\n");
2261 2260          } else if (ddi_hold_installed_driver(ddi_name_to_major(
2262 2261              "amd_iommu")) == NULL) {
2263 2262                  prom_printf("ERROR: failed to attach AMD IOMMU\n");
2264 2263          }
2265 2264  #endif
↓ open down ↓ 971 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX