bsps/irq: bsp_interrupt_set_affinity()

Return a status code for bsp_interrupt_set_affinity().

Update #3269.
This commit is contained in:
Sebastian Huber
2021-07-06 19:00:20 +02:00
parent 23ec04c48c
commit 85a378510d
14 changed files with 30 additions and 18 deletions

View File

@@ -69,7 +69,7 @@ rtems_status_code arm_gic_irq_get_group(
gic_group *group gic_group *group
); );
void bsp_interrupt_set_affinity( rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector, rtems_vector_number vector,
const Processor_mask *affinity const Processor_mask *affinity
); );

View File

@@ -380,7 +380,7 @@ rtems_status_code qoriq_pic_set_priority(
int *old_priority int *old_priority
); );
void bsp_interrupt_set_affinity( rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector, rtems_vector_number vector,
const Processor_mask *affinity const Processor_mask *affinity
); );

View File

@@ -45,7 +45,7 @@ RTEMS_INTERRUPT_LOCK_DEFINE(static, lock, "QorIQ IRQ")
#ifdef QORIQ_IS_HYPERVISOR_GUEST #ifdef QORIQ_IS_HYPERVISOR_GUEST
void bsp_interrupt_set_affinity( rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector, rtems_vector_number vector,
const Processor_mask *affinity const Processor_mask *affinity
) )
@@ -62,6 +62,7 @@ void bsp_interrupt_set_affinity(
ev_int_get_config(vector, &config, &priority, &destination); ev_int_get_config(vector, &config, &priority, &destination);
ev_int_set_config(vector, config, priority, new_destination); ev_int_set_config(vector, config, priority, new_destination);
rtems_interrupt_lock_release(&lock, &lock_context); rtems_interrupt_lock_release(&lock, &lock_context);
return RTEMS_SUCCESSFUL;
} }
rtems_status_code bsp_interrupt_get_affinity( rtems_status_code bsp_interrupt_get_affinity(
@@ -314,7 +315,7 @@ rtems_status_code qoriq_pic_set_priority(
return sc; return sc;
} }
void bsp_interrupt_set_affinity( rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector, rtems_vector_number vector,
const Processor_mask *affinity const Processor_mask *affinity
) )
@@ -322,6 +323,7 @@ void bsp_interrupt_set_affinity(
volatile qoriq_pic_src_cfg *src_cfg = get_src_cfg(vector); volatile qoriq_pic_src_cfg *src_cfg = get_src_cfg(vector);
src_cfg->dr = _Processor_mask_To_uint32_t(affinity, 0); src_cfg->dr = _Processor_mask_To_uint32_t(affinity, 0);
return RTEMS_SUCCESSFUL;
} }
rtems_status_code bsp_interrupt_get_affinity( rtems_status_code bsp_interrupt_get_affinity(

View File

@@ -26,13 +26,14 @@ extern "C" {
#define BSP_INTERRUPT_VECTOR_COUNT 1 #define BSP_INTERRUPT_VECTOR_COUNT 1
RTEMS_INLINE_ROUTINE void bsp_interrupt_set_affinity( RTEMS_INLINE_ROUTINE rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector, rtems_vector_number vector,
const Processor_mask *affinity const Processor_mask *affinity
) )
{ {
(void) vector; (void) vector;
(void) affinity; (void) affinity;
return RTEMS_SUCCESSFUL;
} }
RTEMS_INLINE_ROUTINE rtems_status_code bsp_interrupt_get_affinity( RTEMS_INLINE_ROUTINE rtems_status_code bsp_interrupt_get_affinity(

View File

@@ -56,7 +56,7 @@
#define BSP_INTERRUPT_VECTOR_COUNT RISCV_INTERRUPT_VECTOR_EXTERNAL(RISCV_MAXIMUM_EXTERNAL_INTERRUPTS) #define BSP_INTERRUPT_VECTOR_COUNT RISCV_INTERRUPT_VECTOR_EXTERNAL(RISCV_MAXIMUM_EXTERNAL_INTERRUPTS)
void bsp_interrupt_set_affinity( rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector, rtems_vector_number vector,
const Processor_mask *affinity const Processor_mask *affinity
); );

View File

@@ -175,7 +175,7 @@ rtems_status_code bsp_interrupt_get_affinity(
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_set_affinity( rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector, rtems_vector_number vector,
const Processor_mask *affinity const Processor_mask *affinity
) )
@@ -196,4 +196,6 @@ void bsp_interrupt_set_affinity(
} else { } else {
GRLIB_Disable_interrupt_broadcast(vector); GRLIB_Disable_interrupt_broadcast(vector);
} }
return RTEMS_SUCCESSFUL;
} }

View File

@@ -56,7 +56,7 @@
#define BSP_INTERRUPT_VECTOR_COUNT RISCV_INTERRUPT_VECTOR_EXTERNAL(RISCV_MAXIMUM_EXTERNAL_INTERRUPTS) #define BSP_INTERRUPT_VECTOR_COUNT RISCV_INTERRUPT_VECTOR_EXTERNAL(RISCV_MAXIMUM_EXTERNAL_INTERRUPTS)
void bsp_interrupt_set_affinity( rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector, rtems_vector_number vector,
const Processor_mask *affinity const Processor_mask *affinity
); );

View File

@@ -367,7 +367,7 @@ rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
void bsp_interrupt_set_affinity( rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector, rtems_vector_number vector,
const Processor_mask *affinity const Processor_mask *affinity
) )
@@ -382,7 +382,7 @@ void bsp_interrupt_set_affinity(
if (_Processor_mask_Is_equal(&mask, _SMP_Get_online_processors())) { if (_Processor_mask_Is_equal(&mask, _SMP_Get_online_processors())) {
riscv_plic_irq_to_cpu[interrupt_index - 1] = NULL; riscv_plic_irq_to_cpu[interrupt_index - 1] = NULL;
return; return RTEMS_SUCCESSFUL;
} }
if (_Processor_mask_Count(&mask) == 1) { if (_Processor_mask_Count(&mask) == 1) {
@@ -392,11 +392,13 @@ void bsp_interrupt_set_affinity(
cpu_index = _Processor_mask_Find_last_set(&mask) - 1; cpu_index = _Processor_mask_Find_last_set(&mask) - 1;
cpu = _Per_CPU_Get_by_index(cpu_index); cpu = _Per_CPU_Get_by_index(cpu_index);
riscv_plic_irq_to_cpu[interrupt_index - 1] = cpu->cpu_per_cpu.plic_m_ie; riscv_plic_irq_to_cpu[interrupt_index - 1] = cpu->cpu_per_cpu.plic_m_ie;
return; return RTEMS_SUCCESSFUL;
} }
bsp_fatal(RISCV_FATAL_INVALID_INTERRUPT_AFFINITY); bsp_fatal(RISCV_FATAL_INVALID_INTERRUPT_AFFINITY);
} }
return RTEMS_UNSATISFIED;
} }
rtems_status_code bsp_interrupt_get_affinity( rtems_status_code bsp_interrupt_get_affinity(

View File

@@ -292,7 +292,7 @@ rtems_status_code arm_gic_irq_get_group(
return sc; return sc;
} }
void bsp_interrupt_set_affinity( rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector, rtems_vector_number vector,
const Processor_mask *affinity const Processor_mask *affinity
) )
@@ -301,6 +301,7 @@ void bsp_interrupt_set_affinity(
uint8_t targets = (uint8_t) _Processor_mask_To_uint32_t(affinity, 0); uint8_t targets = (uint8_t) _Processor_mask_To_uint32_t(affinity, 0);
gic_id_set_targets(dist, vector, targets); gic_id_set_targets(dist, vector, targets);
return RTEMS_SUCCESSFUL;
} }
rtems_status_code bsp_interrupt_get_affinity( rtems_status_code bsp_interrupt_get_affinity(

View File

@@ -399,7 +399,7 @@ rtems_status_code arm_gic_irq_get_priority(
return sc; return sc;
} }
void bsp_interrupt_set_affinity( rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector, rtems_vector_number vector,
const Processor_mask *affinity const Processor_mask *affinity
) )
@@ -408,6 +408,7 @@ void bsp_interrupt_set_affinity(
uint8_t targets = (uint8_t) _Processor_mask_To_uint32_t(affinity, 0); uint8_t targets = (uint8_t) _Processor_mask_To_uint32_t(affinity, 0);
gic_id_set_targets(dist, vector, targets); gic_id_set_targets(dist, vector, targets);
return RTEMS_SUCCESSFUL;
} }
rtems_status_code bsp_interrupt_get_affinity( rtems_status_code bsp_interrupt_get_affinity(

View File

@@ -61,9 +61,10 @@ rtems_status_code rtems_interrupt_set_affinity(
} }
#if defined(RTEMS_SMP) #if defined(RTEMS_SMP)
bsp_interrupt_set_affinity(vector, &set); return bsp_interrupt_set_affinity(vector, &set);
#endif #else
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
#endif
} }
rtems_status_code rtems_interrupt_get_affinity( rtems_status_code rtems_interrupt_get_affinity(

View File

@@ -26,13 +26,14 @@
/* No extra check is needed */ /* No extra check is needed */
#undef BSP_INTERRUPT_CUSTOM_VALID_VECTOR #undef BSP_INTERRUPT_CUSTOM_VALID_VECTOR
RTEMS_INLINE_ROUTINE void bsp_interrupt_set_affinity( RTEMS_INLINE_ROUTINE rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector, rtems_vector_number vector,
const Processor_mask *affinity const Processor_mask *affinity
) )
{ {
(void) vector; (void) vector;
(void) affinity; (void) affinity;
return RTEMS_SUCCESSFUL;
} }
RTEMS_INLINE_ROUTINE rtems_status_code bsp_interrupt_get_affinity( RTEMS_INLINE_ROUTINE rtems_status_code bsp_interrupt_get_affinity(

View File

@@ -29,7 +29,7 @@
/* The check is different depending on IRQ controller, runtime detected */ /* The check is different depending on IRQ controller, runtime detected */
#define BSP_INTERRUPT_CUSTOM_VALID_VECTOR #define BSP_INTERRUPT_CUSTOM_VALID_VECTOR
void bsp_interrupt_set_affinity( rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector, rtems_vector_number vector,
const Processor_mask *affinity const Processor_mask *affinity
); );

View File

@@ -196,7 +196,7 @@ rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
} }
#if defined(RTEMS_SMP) #if defined(RTEMS_SMP)
void bsp_interrupt_set_affinity( rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector, rtems_vector_number vector,
const Processor_mask *affinity const Processor_mask *affinity
) )
@@ -224,6 +224,7 @@ void bsp_interrupt_set_affinity(
} }
LEON3_IRQCTRL_RELEASE(&lock_context); LEON3_IRQCTRL_RELEASE(&lock_context);
return RTEMS_SUCCESSFUL;
} }
rtems_status_code bsp_interrupt_get_affinity( rtems_status_code bsp_interrupt_get_affinity(