diff options
author | Dietmar Eggemann <dietmar.eggemann@arm.com> | 2012-03-15 14:34:01 +0000 |
---|---|---|
committer | Dave Martin <dave.martin@linaro.org> | 2012-04-19 11:18:43 +0100 |
commit | 93a7cf52e9a962664a4055fa75ab0598cb8502ba (patch) | |
tree | 321a79d4138415a4907dbc7ab17b80298edb8390 /big-little/include | |
parent | 4a4765859376cfe618600442cb854c877dc36cdc (diff) |
Virqmig: Added virq migration support.
Signed-off-by: Achin Gupta <achin.gupta@arm.com>
Signed-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Diffstat (limited to 'big-little/include')
-rw-r--r-- | big-little/include/events.h | 3 | ||||
-rw-r--r-- | big-little/include/vgiclib.h | 24 |
2 files changed, 21 insertions, 6 deletions
diff --git a/big-little/include/events.h b/big-little/include/events.h index dc0025d..b31df03 100644 --- a/big-little/include/events.h +++ b/big-little/include/events.h @@ -30,7 +30,7 @@ /* * Events for inter/intra-cluster sync */ -#define MAX_EVENTS 12 +#define MAX_EVENTS 13 /* Inter cluster events */ #define IB_CONTEXT_DONE 0 @@ -60,6 +60,7 @@ #define CACHE_GEOM_DONE 10 #define VID_REGS_DONE 11 +#define VIRQ_MIG_DONE 12 /* Defines for Secure events */ #define MAX_SEC_EVENTS 3 diff --git a/big-little/include/vgiclib.h b/big-little/include/vgiclib.h index 0d5f461..5cbca56 100644 --- a/big-little/include/vgiclib.h +++ b/big-little/include/vgiclib.h @@ -23,6 +23,12 @@ #ifndef VGICLIB_H #define VGICLIB_H +/* + * The maximum number of virtual interrupts that can be + * migrated in response to a single ICDIPTR access. + */ +#define MAX_MIG_IRQS 4 + #include "gic_registers.h" struct overflowint { @@ -42,10 +48,18 @@ struct gic_cpuif { unsigned int freelist; /* Bitmask of which list entries are in use */ }; -void vgic_init(void); -void vgic_savestate(unsigned int cpu); -void vgic_loadstate(unsigned int cpu); -void vgic_refresh(unsigned int cpu); -void enqueue_interrupt(unsigned int descr, unsigned int cpu); +typedef struct irq_info { + unsigned id; + unsigned src_cpuif; + unsigned dest_cpuif; + unsigned desc; +} mig_irq_info; +extern unsigned start_virq_migration(unsigned, unsigned, unsigned); +extern void complete_virq_migration(unsigned); +extern void vgic_init(void); +extern void vgic_savestate(unsigned int cpu); +extern void vgic_loadstate(unsigned int cpu); +extern void vgic_refresh(unsigned int cpu); +extern void enqueue_interrupt(unsigned int descr, unsigned int cpu); #endif /* VGICLIB_H */ |