--- zzzz-none-000/linux-5.15.111/kernel/irq/irqdesc.c 2023-05-11 14:00:40.000000000 +0000 +++ puma7-arm-6670-761/linux-5.15.111/kernel/irq/irqdesc.c 2024-02-07 09:28:08.000000000 +0000 @@ -7,6 +7,10 @@ * information is available in Documentation/core-api/genericirq.rst * */ +/* +Includes Intel Corporation's changes/modifications dated: 2014. +Changed/modified portions - Copyright © 2014, Intel Corporation. +*/ #include #include #include @@ -16,9 +20,15 @@ #include #include #include - +#ifdef CONFIG_INTEL_IRQ_THREAD_CHANGE_PRIORITY +#include +#include +#endif #include "internals.h" - +#include +#if defined(CONFIG_AVM_POWER) +#include +#endif /*--- #if defined(CONFIG_AVM_POWER) ---*/ /* * lockdep: we want to handle all irq_desc locks as a single lock-class: */ @@ -125,6 +135,10 @@ for_each_possible_cpu(cpu) *per_cpu_ptr(desc->kstat_irqs, cpu) = 0; desc_smp_init(desc, node, affinity); +#ifdef CONFIG_INTEL_IRQ_THREAD_CHANGE_PRIORITY + desc->sched_priority = MAX_RT_PRIO/2; + desc->policy = SCHED_FIFO; +#endif } int nr_irqs = NR_IRQS; @@ -699,6 +713,14 @@ int ret = 0; irq_enter(); +#if defined(CONFIG_AVM_POWER) + avm_cpu_wait_end(); /* call it to trigger system load output*/ +#endif /*--- #if defined(CONFIG_AVM_POWER) ---*/ + if (IS_ENABLED(CONFIG_ARM)) { + avm_simple_profiling_enter_irq_context(regs->ARM_pc, regs->ARM_lr); + avm_simple_profiling_log(avm_profile_data_type_hw_irq_begin, + (unsigned int)irq_to_desc(hwirq), hwirq); + } /* The irqdomain code provides boundary checks */ desc = irq_resolve_mapping(domain, hwirq); @@ -708,6 +730,9 @@ ret = -EINVAL; irq_exit(); + avm_simple_profiling_log(avm_profile_data_type_hw_irq_end, + (unsigned int)irq_to_desc(hwirq), hwirq); + set_irq_regs(old_regs); return ret; }