1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef _ASM_X86_MPSPEC_H 3#define _ASM_X86_MPSPEC_H 4 5#include <linux/types.h> 6 7#include <asm/mpspec_def.h> 8#include <asm/x86_init.h> 9#include <asm/apicdef.h> 10 11extern int pic_mode; 12 13#ifdef CONFIG_X86_32 14 15/* 16 * Summit or generic (i.e. installer) kernels need lots of bus entries. 17 * Maximum 256 PCI busses, plus 1 ISA bus in each of 4 cabinets. 18 */ 19#if CONFIG_BASE_SMALL == 0 20# define MAX_MP_BUSSES 260 21#else 22# define MAX_MP_BUSSES 32 23#endif 24 25#define MAX_IRQ_SOURCES 256 26 27#else /* CONFIG_X86_64: */ 28 29#define MAX_MP_BUSSES 256 30/* Each PCI slot may be a combo card with its own bus. 4 IRQ pins per slot. */ 31#define MAX_IRQ_SOURCES (MAX_MP_BUSSES * 4) 32 33#endif /* CONFIG_X86_64 */ 34 35#ifdef CONFIG_EISA 36extern int mp_bus_id_to_type[MAX_MP_BUSSES]; 37#endif 38 39extern DECLARE_BITMAP(mp_bus_not_pci, MAX_MP_BUSSES); 40 41extern u32 boot_cpu_physical_apicid; 42extern u8 boot_cpu_apic_version; 43 44#ifdef CONFIG_X86_LOCAL_APIC 45extern int smp_found_config; 46#else 47# define smp_found_config 0 48#endif 49 50#ifdef CONFIG_X86_MPPARSE 51extern void e820__memblock_alloc_reserved_mpc_new(void); 52extern int enable_update_mptable; 53extern void mpparse_find_mptable(void); 54extern void mpparse_parse_early_smp_config(void); 55extern void mpparse_parse_smp_config(void); 56#else 57static inline void e820__memblock_alloc_reserved_mpc_new(void) { } 58#define enable_update_mptable 0 59#define mpparse_find_mptable x86_init_noop 60#define mpparse_parse_early_smp_config x86_init_noop 61#define mpparse_parse_smp_config x86_init_noop 62#endif 63 64extern DECLARE_BITMAP(phys_cpu_present_map, MAX_LOCAL_APIC); 65 66static inline void reset_phys_cpu_present_map(u32 apicid) 67{ 68 bitmap_zero(phys_cpu_present_map, MAX_LOCAL_APIC); 69 set_bit(apicid, phys_cpu_present_map); 70} 71 72static inline void copy_phys_cpu_present_map(unsigned long *dst) 73{ 74 bitmap_copy(dst, phys_cpu_present_map, MAX_LOCAL_APIC); 75} 76 77#endif /* _ASM_X86_MPSPEC_H */ 78