cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

irq_work.c (701B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * x86 specific code for irq_work
      4 *
      5 * Copyright (C) 2010 Red Hat, Inc., Peter Zijlstra
      6 */
      7
      8#include <linux/kernel.h>
      9#include <linux/irq_work.h>
     10#include <linux/hardirq.h>
     11#include <asm/apic.h>
     12#include <asm/idtentry.h>
     13#include <asm/trace/irq_vectors.h>
     14#include <linux/interrupt.h>
     15
     16#ifdef CONFIG_X86_LOCAL_APIC
     17DEFINE_IDTENTRY_SYSVEC(sysvec_irq_work)
     18{
     19	ack_APIC_irq();
     20	trace_irq_work_entry(IRQ_WORK_VECTOR);
     21	inc_irq_stat(apic_irq_work_irqs);
     22	irq_work_run();
     23	trace_irq_work_exit(IRQ_WORK_VECTOR);
     24}
     25
     26void arch_irq_work_raise(void)
     27{
     28	if (!arch_irq_work_has_interrupt())
     29		return;
     30
     31	apic->send_IPI_self(IRQ_WORK_VECTOR);
     32	apic_wait_icr_idle();
     33}
     34#endif