#include <linux/cpuhotplug.h>
#include <linux/cpumask.h>
#include <linux/slab.h>
#include <linux/mm.h>
#include <asm/apic.h>
#include "local.h"
#define apic_cluster(apicid) …
static u32 *x86_cpu_to_logical_apicid __read_mostly;
static DEFINE_PER_CPU(cpumask_var_t, ipi_mask);
static DEFINE_PER_CPU_READ_MOSTLY(struct cpumask *, cluster_masks);
static int x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
{ … }
static void x2apic_send_IPI(int cpu, int vector)
{ … }
static void
__x2apic_send_IPI_mask(const struct cpumask *mask, int vector, int apic_dest)
{ … }
static void x2apic_send_IPI_mask(const struct cpumask *mask, int vector)
{ … }
static void
x2apic_send_IPI_mask_allbutself(const struct cpumask *mask, int vector)
{ … }
static u32 x2apic_calc_apicid(unsigned int cpu)
{ … }
static void init_x2apic_ldr(void)
{ … }
static void prefill_clustermask(struct cpumask *cmsk, unsigned int cpu, u32 cluster)
{ … }
static int alloc_clustermask(unsigned int cpu, u32 cluster, int node)
{ … }
static int x2apic_prepare_cpu(unsigned int cpu)
{ … }
static int x2apic_dead_cpu(unsigned int dead_cpu)
{ … }
static int x2apic_cluster_probe(void)
{ … }
static struct apic apic_x2apic_cluster __ro_after_init = …;
apic_driver(…) …;