IKC: separate IRQ between Master-channel and Regular-channel

This commit is contained in:
Ken Sato
2017-03-24 18:13:16 +09:00
committed by Balazs Gerofi
parent fbd9086ce5
commit 65dc3440cb
5 changed files with 8 additions and 13 deletions

View File

@ -977,7 +977,7 @@ void handle_interrupt(int vector, struct x86_user_context *regs)
else {
list_for_each_entry(h, &handlers[vector - 32], list) {
if (h->func) {
h->func(h->priv);
h->func(h->priv, vector);
}
}
}

View File

@ -216,13 +216,6 @@ static void mcctrl_ikc_init(ihk_os_t os, int cpu, unsigned long rphys, struct ih
static int connect_handler_ikc2linux(struct ihk_ikc_channel_info *param)
{
struct ihk_ikc_channel_desc *c;
int linux_cpu;
ihk_os_t os = param->channel->remote_os;
c = param->channel;
linux_cpu = c->recv.queue->read_cpu;
param->packet_handler = syscall_packet_handler;
return 0;

View File

@ -728,6 +728,6 @@ void init_host_ikc2mckernel(void)
}
dkprintf("connected.\n");
ihk_ikc_set_intr_channel(NULL, param.channel, ihk_ikc_get_processor_id());
ihk_ikc_set_regular_channel(NULL, param.channel, ihk_ikc_get_processor_id());
}

View File

@ -717,7 +717,7 @@ static struct ihk_mc_pa_ops allocator = {
void sbox_write(int offset, unsigned int value);
static int page_hash_count_pages(void);
static void query_free_mem_interrupt_handler(void *priv)
static void query_free_mem_interrupt_handler(void *priv, int vector)
{
int i, pages = 0;

View File

@ -29,7 +29,7 @@ unsigned long cpu_disable_interrupt_save(void);
struct ihk_mc_interrupt_handler {
struct list_head list;
void (*func)(void *);
void (*func)(void *, int vector);
void *priv;
};
int ihk_mc_register_interrupt_handler(int vector,
@ -38,7 +38,8 @@ int ihk_mc_unregister_interrupt_handler(int vector,
struct ihk_mc_interrupt_handler *h);
enum ihk_mc_gv_type {
IHK_GV_IKC = 1,
IHK_GV_IKC_MASTER = 0,
IHK_GV_IKC_REGULAR = 1,
IHK_GV_QUERY_FREE_MEM = 2
};
@ -109,7 +110,8 @@ enum ihk_asr_type {
int ihk_mc_arch_set_special_register(enum ihk_asr_type, unsigned long value);
int ihk_mc_arch_get_special_register(enum ihk_asr_type, unsigned long *value);
extern unsigned int ihk_ikc_irq;
extern unsigned int ihk_ikc_master_irq;
extern unsigned int ihk_ikc_regular_irq;
extern unsigned int ihk_ikc_irq_apicid;
extern int gettime_local_support;