예제 #1
0
static void hvc_tile_notifier_del_irq(struct hvc_struct *hp, int irq)
{
	HV_Coord coord = { 0, 0 };

	/* Tell the hypervisor to stop sending us interrupts. */
	hv_console_set_ipi(KERNEL_PL, -1, coord);

	notifier_del_irq(hp, irq);
}
예제 #2
0
static void hvterm_hvsi_close(struct hvc_struct *hp, int data)
{
	struct hvterm_priv *pv = hvterm_privs[hp->vtermno];

	pr_devel("HVSI@%x: do close !\n", pv->termno);

	hvsilib_close(&pv->hvsi, hp);

	notifier_del_irq(hp, data);
}
예제 #3
0
/*
 * IRQ based callbacks.
 */
static int hvc_tile_notifier_add_irq(struct hvc_struct *hp, int irq)
{
	int rc;
	int cpu = raw_smp_processor_id();  /* Choose an arbitrary cpu */
	HV_Coord coord = { .x = cpu_x(cpu), .y = cpu_y(cpu) };

	rc = notifier_add_irq(hp, irq);
	if (rc)
		return rc;

	/*
	 * Request that the hypervisor start sending us interrupts.
	 * If the hypervisor returns an error, we still return 0, so that
	 * we can fall back to polling.
	 */
	if (hv_console_set_ipi(KERNEL_PL, irq, coord) < 0)
		notifier_del_irq(hp, irq);

	return 0;
}
예제 #4
0
파일: hvc_irq.c 프로젝트: AK101111/linux
void notifier_hangup_irq(struct hvc_struct *hp, int irq)
{
	notifier_del_irq(hp, irq);
}