• Qian Cai's avatar
    debugobjects: call debug_objects_mem_init eariler · a9ee3a63
    Qian Cai authored
    The current value of the early boot static pool size, 1024 is not big
    enough for systems with large number of CPUs with timer or/and workqueue
    objects selected.  As the results, systems have 60+ CPUs with both timer
    and workqueue objects enabled could trigger "ODEBUG: Out of memory.
    ODEBUG disabled".
    
    Some debug objects are allocated during the early boot.  Enabling some
    options like timers or workqueue objects may increase the size required
    significantly with large number of CPUs.  For example,
    
    CONFIG_DEBUG_OBJECTS_TIMERS:
    No. CPUs x 2 (worker pool) objects:
    start_kernel
      workqueue_init_early
        init_worker_pool
          init_timer_key
            debug_object_init
    
    plus No. CPUs objects (CONFIG_HIGH_RES_TIMERS):
    sched_init
      hrtick_rq_init
        hrtimer_init
    
    CONFIG_DEBUG_OBJECTS_WORK:
    No. CPUs objects:
    vmalloc_init
      __init_work
    
    plus No. CPUs x 6 (workqueue) objects:
    workqueue_init_early
      alloc_workqueue
        __alloc_workqueue_key
          alloc_and_link_pwqs
     ...
    a9ee3a63
debugobjects.c 29.4 KB