Skip to content

Commit

Permalink
x86/apic: Consolidate the apic local headers
Browse files Browse the repository at this point in the history
Now there are three small local headers. Some contain functions which are
only used in one source file.

Move all the inlines and declarations into a single local header and the
inlines which are only used in one source file into that.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20190722105219.618612624@linutronix.de
  • Loading branch information
Thomas Gleixner committed Jul 25, 2019
1 parent ba77b2a commit c94f071
Show file tree
Hide file tree
Showing 12 changed files with 83 additions and 119 deletions.
3 changes: 1 addition & 2 deletions arch/x86/kernel/apic/apic_flat_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,7 @@
#include <asm/jailhouse_para.h>
#include <asm/apic.h>

#include "apic_flat_64.h"
#include "ipi.h"
#include "local.h"

static struct apic apic_physflat;
static struct apic apic_flat;
Expand Down
8 changes: 0 additions & 8 deletions arch/x86/kernel/apic/apic_flat_64.h

This file was deleted.

3 changes: 1 addition & 2 deletions arch/x86/kernel/apic/apic_numachip.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,7 @@

#include <asm/pgtable.h>

#include "apic_flat_64.h"
#include "ipi.h"
#include "local.h"

u8 numachip_system __read_mostly;
static const struct apic apic_numachip1;
Expand Down
2 changes: 1 addition & 1 deletion arch/x86/kernel/apic/bigsmp_32.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

#include <asm/apic.h>

#include "ipi.h"
#include "local.h"

static unsigned bigsmp_get_apic_id(unsigned long x)
{
Expand Down
14 changes: 12 additions & 2 deletions arch/x86/kernel/apic/ipi.c
Original file line number Diff line number Diff line change
@@ -1,10 +1,20 @@
// SPDX-License-Identifier: GPL-2.0

#include <linux/cpumask.h>
#include <linux/smp.h>

#include <asm/apic.h>
#include "local.h"

#include "ipi.h"
static inline int __prepare_ICR2(unsigned int mask)
{
return SET_APIC_DEST_FIELD(mask);
}

static inline void __xapic_wait_icr_idle(void)
{
while (native_apic_mem_read(APIC_ICR) & APIC_ICR_BUSY)
cpu_relax();
}

void __default_send_IPI_shortcut(unsigned int shortcut, int vector, unsigned int dest)
{
Expand Down
90 changes: 0 additions & 90 deletions arch/x86/kernel/apic/ipi.h

This file was deleted.

63 changes: 63 additions & 0 deletions arch/x86/kernel/apic/local.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
/* SPDX-License-Identifier: GPL-2.0 */
/*
* Historical copyright notices:
*
* Copyright 2004 James Cleverdon, IBM.
* (c) 1995 Alan Cox, Building #3 <alan@redhat.com>
* (c) 1998-99, 2000 Ingo Molnar <mingo@redhat.com>
* (c) 2002,2003 Andi Kleen, SuSE Labs.
*/
#include <asm/apic.h>

/* APIC flat 64 */
void flat_init_apic_ldr(void);

/* X2APIC */
int x2apic_apic_id_valid(u32 apicid);
int x2apic_apic_id_registered(void);
void __x2apic_send_IPI_dest(unsigned int apicid, int vector, unsigned int dest);
unsigned int x2apic_get_apic_id(unsigned long id);
u32 x2apic_set_apic_id(unsigned int id);
int x2apic_phys_pkg_id(int initial_apicid, int index_msb);
void x2apic_send_IPI_self(int vector);

/* IPI */
static inline unsigned int __prepare_ICR(unsigned int shortcut, int vector,
unsigned int dest)
{
unsigned int icr = shortcut | dest;

switch (vector) {
default:
icr |= APIC_DM_FIXED | vector;
break;
case NMI_VECTOR:
icr |= APIC_DM_NMI;
break;
}
return icr;
}

void __default_send_IPI_shortcut(unsigned int shortcut, int vector, unsigned int dest);

/*
* This is used to send an IPI with no shorthand notation (the destination is
* specified in bits 56 to 63 of the ICR).
*/
void __default_send_IPI_dest_field(unsigned int mask, int vector, unsigned int dest);

void default_send_IPI_single(int cpu, int vector);
void default_send_IPI_single_phys(int cpu, int vector);
void default_send_IPI_mask_sequence_phys(const struct cpumask *mask, int vector);
void default_send_IPI_mask_allbutself_phys(const struct cpumask *mask, int vector);

extern int no_broadcast;

#ifdef CONFIG_X86_32
void default_send_IPI_mask_sequence_logical(const struct cpumask *mask, int vector);
void default_send_IPI_mask_allbutself_logical(const struct cpumask *mask, int vector);
void default_send_IPI_mask_logical(const struct cpumask *mask, int vector);
void default_send_IPI_allbutself(int vector);
void default_send_IPI_all(int vector);
void default_send_IPI_self(int vector);
#endif
3 changes: 2 additions & 1 deletion arch/x86/kernel/apic/probe_32.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,12 @@
*/
#include <linux/export.h>
#include <linux/errno.h>
#include <linux/smp.h>

#include <asm/apic.h>
#include <asm/acpi.h>

#include "ipi.h"
#include "local.h"

#ifdef CONFIG_HOTPLUG_CPU
#define DEFAULT_SEND_IPI (1)
Expand Down
2 changes: 1 addition & 1 deletion arch/x86/kernel/apic/probe_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
*/
#include <asm/apic.h>

#include "ipi.h"
#include "local.h"

/*
* Check the APIC IDs in bios_cpu_apicid and choose the APIC mode.
Expand Down
9 changes: 0 additions & 9 deletions arch/x86/kernel/apic/x2apic.h

This file was deleted.

2 changes: 1 addition & 1 deletion arch/x86/kernel/apic/x2apic_cluster.c
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

#include <asm/apic.h>

#include "x2apic.h"
#include "local.h"

struct cluster_mask {
unsigned int clusterid;
Expand Down
3 changes: 1 addition & 2 deletions arch/x86/kernel/apic/x2apic_phys.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
#include <linux/cpumask.h>
#include <linux/acpi.h>

#include "x2apic.h"
#include "ipi.h"
#include "local.h"

int x2apic_phys;

Expand Down

0 comments on commit c94f071

Please sign in to comment.