LCOV - code coverage report
Current view: top level - arch/x86/kernel/apic - local.h (source / functions) Hit Total Coverage
Test: landlock.info Lines: 7 10 70.0 %
Date: 2021-04-22 12:43:58 Functions: 0 0 -

          Line data    Source code
       1             : /* SPDX-License-Identifier: GPL-2.0 */
       2             : /*
       3             :  * Historical copyright notices:
       4             :  *
       5             :  * Copyright 2004 James Cleverdon, IBM.
       6             :  * (c) 1995 Alan Cox, Building #3 <alan@redhat.com>
       7             :  * (c) 1998-99, 2000 Ingo Molnar <mingo@redhat.com>
       8             :  * (c) 2002,2003 Andi Kleen, SuSE Labs.
       9             :  */
      10             : 
      11             : #include <linux/jump_label.h>
      12             : 
      13             : #include <asm/irq_vectors.h>
      14             : #include <asm/apic.h>
      15             : 
      16             : /* APIC flat 64 */
      17             : void flat_init_apic_ldr(void);
      18             : 
      19             : /* X2APIC */
      20             : int x2apic_apic_id_valid(u32 apicid);
      21             : int x2apic_apic_id_registered(void);
      22             : void __x2apic_send_IPI_dest(unsigned int apicid, int vector, unsigned int dest);
      23             : unsigned int x2apic_get_apic_id(unsigned long id);
      24             : u32 x2apic_set_apic_id(unsigned int id);
      25             : int x2apic_phys_pkg_id(int initial_apicid, int index_msb);
      26             : void x2apic_send_IPI_self(int vector);
      27             : void __x2apic_send_IPI_shorthand(int vector, u32 which);
      28             : 
      29             : /* IPI */
      30             : 
      31             : DECLARE_STATIC_KEY_FALSE(apic_use_ipi_shorthand);
      32             : 
      33          46 : static inline unsigned int __prepare_ICR(unsigned int shortcut, int vector,
      34             :                                          unsigned int dest)
      35             : {
      36          46 :         unsigned int icr = shortcut | dest;
      37             : 
      38          46 :         switch (vector) {
      39          46 :         default:
      40          46 :                 icr |= APIC_DM_FIXED | vector;
      41          46 :                 break;
      42           0 :         case NMI_VECTOR:
      43           0 :                 icr |= APIC_DM_NMI;
      44           0 :                 break;
      45             :         }
      46          46 :         return icr;
      47             : }
      48             : 
      49             : void __default_send_IPI_shortcut(unsigned int shortcut, int vector);
      50             : 
      51             : /*
      52             :  * This is used to send an IPI with no shorthand notation (the destination is
      53             :  * specified in bits 56 to 63 of the ICR).
      54             :  */
      55             : void __default_send_IPI_dest_field(unsigned int mask, int vector, unsigned int dest);
      56             : 
      57             : void default_send_IPI_single(int cpu, int vector);
      58             : void default_send_IPI_single_phys(int cpu, int vector);
      59             : void default_send_IPI_mask_sequence_phys(const struct cpumask *mask, int vector);
      60             : void default_send_IPI_mask_allbutself_phys(const struct cpumask *mask, int vector);
      61             : void default_send_IPI_allbutself(int vector);
      62             : void default_send_IPI_all(int vector);
      63             : void default_send_IPI_self(int vector);
      64             : 
      65             : #ifdef CONFIG_X86_32
      66             : void default_send_IPI_mask_sequence_logical(const struct cpumask *mask, int vector);
      67             : void default_send_IPI_mask_allbutself_logical(const struct cpumask *mask, int vector);
      68             : void default_send_IPI_mask_logical(const struct cpumask *mask, int vector);
      69             : #endif

Generated by: LCOV version 1.14