mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-09 14:50:19 +00:00
This tree cleans up various aspects of the UV platform support code,
it removes unnecessary functions and cleans up the rest. Signed-off-by: Ingo Molnar <mingo@kernel.org> -----BEGIN PGP SIGNATURE----- iQJFBAABCgAvFiEEBpT5eoXrXCwVQwEKEnMQ0APhK1gFAl7VNO4RHG1pbmdvQGtl cm5lbC5vcmcACgkQEnMQ0APhK1i61RAAogLRVi4ga4vmTk5SqUqtR4pupbHJv5IM IjkQN0HZ3+Oi6kRxwuOQ9xOOzQWm8GntkZeyN5FA73H7x+bYdU12MIKKTEDcW3xp Mg9FtzfeL0V4YmNkmlnIXycyYA3nBdSxnI/OL/58J9CLT15qXYkWjyvkbI2aJ3qL U8xM5cTTvhoARjd43o0eAfekTg0XdUAsgvO0vOM5+I1HrQP8SR3ZIFaMSR+MfAQx Nbz/UVUSDJ8BNzmS/CfFLFm0F2dkphlLC0r6eAOFZAYSIax0bRVklxV9qdScEQMK bkVKXGanCzVTBVM1HXDycLJaILlqcS18tK+VqNIAR5x2BXmaSG8jqwCW4NM0tcaN c5zemNsqnAH/VzxeFjE2BcDQnA1nkgj75Vm9O81HMQfyqR16M5pBzRXY/qBqslya vX5wLoD962BiVtbELqW6v+Ot29xMYlCLLlTbLHaWQraJS3TjuAvL0/sOFdWgs63F N7a+BLvikfYoKCS8IxW87BFBysy9nhv/4UwdaX5RpIQ1wgx/EJLDaowrM+L6Dzmw bhQ3AgRZGNZCBDm3uGU/LigTTxN93h5KqKnuUKv3H+tNvEKxPKEAqPyvL8fO8G0U BTJiM/XRIzQrkrmwCKqON1iKRjKB2fKklxiq4REIoSqKfeiQ3SVBIHENFnH96Ekf G9qptwFEZYI= =L8Vy -----END PGP SIGNATURE----- Merge tag 'x86-platform-2020-06-01' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Pull x86 platform updates from Ingo Molnar: "This tree cleans up various aspects of the UV platform support code, it removes unnecessary functions and cleans up the rest" * tag 'x86-platform-2020-06-01' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/apic/uv: Remove code for unused distributed GRU mode x86/platform/uv: Remove the unused _uv_cpu_blade_processor_id() macro x86/platform/uv: Unexport uv_apicid_hibits x86/platform/uv: Remove _uv_hub_info_check() x86/platform/uv: Simplify uv_send_IPI_one() x86/platform/uv: Mark uv_min_hub_revision_id static x86/platform/uv: Mark is_uv_hubless() static x86/platform/uv: Remove the UV*_HUB_IS_SUPPORTED macros x86/platform/uv: Unexport symbols only used by x2apic_uv_x.c x86/platform/uv: Unexport sn_coherency_id x86/platform/uv: Remove the uv_partition_coherence_id() macro x86/platform/uv: Mark uv_bios_call() and uv_bios_call_irqsave() static
This commit is contained in:
commit
88bc1de11c
@ -123,12 +123,6 @@ enum uv_memprotect {
|
|||||||
UV_MEMPROT_ALLOW_RW
|
UV_MEMPROT_ALLOW_RW
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
* bios calls have 6 parameters
|
|
||||||
*/
|
|
||||||
extern s64 uv_bios_call(enum uv_bios_cmd, u64, u64, u64, u64, u64);
|
|
||||||
extern s64 uv_bios_call_irqsave(enum uv_bios_cmd, u64, u64, u64, u64, u64);
|
|
||||||
|
|
||||||
extern s64 uv_bios_get_sn_info(int, int *, long *, long *, long *, long *);
|
extern s64 uv_bios_get_sn_info(int, int *, long *, long *, long *, long *);
|
||||||
extern s64 uv_bios_freq_base(u64, u64 *);
|
extern s64 uv_bios_freq_base(u64, u64 *);
|
||||||
extern int uv_bios_mq_watchlist_alloc(unsigned long, unsigned int,
|
extern int uv_bios_mq_watchlist_alloc(unsigned long, unsigned int,
|
||||||
@ -146,7 +140,6 @@ extern long sn_partition_id;
|
|||||||
extern long sn_coherency_id;
|
extern long sn_coherency_id;
|
||||||
extern long sn_region_size;
|
extern long sn_region_size;
|
||||||
extern long system_serial_number;
|
extern long system_serial_number;
|
||||||
#define uv_partition_coherence_id() (sn_coherency_id)
|
|
||||||
|
|
||||||
extern struct kobject *sgi_uv_kobj; /* /sys/firmware/sgi_uv */
|
extern struct kobject *sgi_uv_kobj; /* /sys/firmware/sgi_uv */
|
||||||
|
|
||||||
|
@ -31,7 +31,6 @@ static inline bool is_early_uv_system(void)
|
|||||||
}
|
}
|
||||||
extern int is_uv_system(void);
|
extern int is_uv_system(void);
|
||||||
extern int is_uv_hubbed(int uvtype);
|
extern int is_uv_hubbed(int uvtype);
|
||||||
extern int is_uv_hubless(int uvtype);
|
|
||||||
extern void uv_cpu_init(void);
|
extern void uv_cpu_init(void);
|
||||||
extern void uv_nmi_init(void);
|
extern void uv_nmi_init(void);
|
||||||
extern void uv_system_init(void);
|
extern void uv_system_init(void);
|
||||||
@ -44,7 +43,6 @@ static inline enum uv_system_type get_uv_system_type(void) { return UV_NONE; }
|
|||||||
static inline bool is_early_uv_system(void) { return 0; }
|
static inline bool is_early_uv_system(void) { return 0; }
|
||||||
static inline int is_uv_system(void) { return 0; }
|
static inline int is_uv_system(void) { return 0; }
|
||||||
static inline int is_uv_hubbed(int uv) { return 0; }
|
static inline int is_uv_hubbed(int uv) { return 0; }
|
||||||
static inline int is_uv_hubless(int uv) { return 0; }
|
|
||||||
static inline void uv_cpu_init(void) { }
|
static inline void uv_cpu_init(void) { }
|
||||||
static inline void uv_system_init(void) { }
|
static inline void uv_system_init(void) { }
|
||||||
static inline const struct cpumask *
|
static inline const struct cpumask *
|
||||||
|
@ -219,20 +219,6 @@ static inline struct uv_hub_info_s *uv_cpu_hub_info(int cpu)
|
|||||||
return (struct uv_hub_info_s *)uv_cpu_info_per(cpu)->p_uv_hub_info;
|
return (struct uv_hub_info_s *)uv_cpu_info_per(cpu)->p_uv_hub_info;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define UV_HUB_INFO_VERSION 0x7150
|
|
||||||
extern int uv_hub_info_version(void);
|
|
||||||
static inline int uv_hub_info_check(int version)
|
|
||||||
{
|
|
||||||
if (uv_hub_info_version() == version)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
pr_crit("UV: uv_hub_info version(%x) mismatch, expecting(%x)\n",
|
|
||||||
uv_hub_info_version(), version);
|
|
||||||
|
|
||||||
BUG(); /* Catastrophic - cannot continue on unknown UV system */
|
|
||||||
}
|
|
||||||
#define _uv_hub_info_check() uv_hub_info_check(UV_HUB_INFO_VERSION)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* HUB revision ranges for each UV HUB architecture.
|
* HUB revision ranges for each UV HUB architecture.
|
||||||
* This is a software convention - NOT the hardware revision numbers in
|
* This is a software convention - NOT the hardware revision numbers in
|
||||||
@ -244,51 +230,32 @@ static inline int uv_hub_info_check(int version)
|
|||||||
#define UV4_HUB_REVISION_BASE 7
|
#define UV4_HUB_REVISION_BASE 7
|
||||||
#define UV4A_HUB_REVISION_BASE 8 /* UV4 (fixed) rev 2 */
|
#define UV4A_HUB_REVISION_BASE 8 /* UV4 (fixed) rev 2 */
|
||||||
|
|
||||||
/* WARNING: UVx_HUB_IS_SUPPORTED defines are deprecated and will be removed */
|
|
||||||
static inline int is_uv1_hub(void)
|
static inline int is_uv1_hub(void)
|
||||||
{
|
{
|
||||||
#ifdef UV1_HUB_IS_SUPPORTED
|
|
||||||
return is_uv_hubbed(uv(1));
|
return is_uv_hubbed(uv(1));
|
||||||
#else
|
|
||||||
return 0;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int is_uv2_hub(void)
|
static inline int is_uv2_hub(void)
|
||||||
{
|
{
|
||||||
#ifdef UV2_HUB_IS_SUPPORTED
|
|
||||||
return is_uv_hubbed(uv(2));
|
return is_uv_hubbed(uv(2));
|
||||||
#else
|
|
||||||
return 0;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int is_uv3_hub(void)
|
static inline int is_uv3_hub(void)
|
||||||
{
|
{
|
||||||
#ifdef UV3_HUB_IS_SUPPORTED
|
|
||||||
return is_uv_hubbed(uv(3));
|
return is_uv_hubbed(uv(3));
|
||||||
#else
|
|
||||||
return 0;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* First test "is UV4A", then "is UV4" */
|
/* First test "is UV4A", then "is UV4" */
|
||||||
static inline int is_uv4a_hub(void)
|
static inline int is_uv4a_hub(void)
|
||||||
{
|
{
|
||||||
#ifdef UV4A_HUB_IS_SUPPORTED
|
|
||||||
if (is_uv_hubbed(uv(4)))
|
if (is_uv_hubbed(uv(4)))
|
||||||
return (uv_hub_info->hub_revision == UV4A_HUB_REVISION_BASE);
|
return (uv_hub_info->hub_revision == UV4A_HUB_REVISION_BASE);
|
||||||
#endif
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int is_uv4_hub(void)
|
static inline int is_uv4_hub(void)
|
||||||
{
|
{
|
||||||
#ifdef UV4_HUB_IS_SUPPORTED
|
|
||||||
return is_uv_hubbed(uv(4));
|
return is_uv_hubbed(uv(4));
|
||||||
#else
|
|
||||||
return 0;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int is_uvx_hub(void)
|
static inline int is_uvx_hub(void)
|
||||||
@ -692,7 +659,6 @@ static inline int uv_cpu_blade_processor_id(int cpu)
|
|||||||
{
|
{
|
||||||
return uv_cpu_info_per(cpu)->blade_cpu_id;
|
return uv_cpu_info_per(cpu)->blade_cpu_id;
|
||||||
}
|
}
|
||||||
#define _uv_cpu_blade_processor_id 1 /* indicate function available */
|
|
||||||
|
|
||||||
/* Blade number to Node number (UV1..UV4 is 1:1) */
|
/* Blade number to Node number (UV1..UV4 is 1:1) */
|
||||||
static inline int uv_blade_to_node(int blade)
|
static inline int uv_blade_to_node(int blade)
|
||||||
@ -856,26 +822,6 @@ static inline void uv_set_cpu_scir_bits(int cpu, unsigned char value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
extern unsigned int uv_apicid_hibits;
|
extern unsigned int uv_apicid_hibits;
|
||||||
static unsigned long uv_hub_ipi_value(int apicid, int vector, int mode)
|
|
||||||
{
|
|
||||||
apicid |= uv_apicid_hibits;
|
|
||||||
return (1UL << UVH_IPI_INT_SEND_SHFT) |
|
|
||||||
((apicid) << UVH_IPI_INT_APIC_ID_SHFT) |
|
|
||||||
(mode << UVH_IPI_INT_DELIVERY_MODE_SHFT) |
|
|
||||||
(vector << UVH_IPI_INT_VECTOR_SHFT);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void uv_hub_send_ipi(int pnode, int apicid, int vector)
|
|
||||||
{
|
|
||||||
unsigned long val;
|
|
||||||
unsigned long dmode = dest_Fixed;
|
|
||||||
|
|
||||||
if (vector == NMI_VECTOR)
|
|
||||||
dmode = dest_NMI;
|
|
||||||
|
|
||||||
val = uv_hub_ipi_value(apicid, vector, dmode);
|
|
||||||
uv_write_global_mmr64(pnode, UVH_IPI_INT, val);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get the minimum revision number of the hub chips within the partition.
|
* Get the minimum revision number of the hub chips within the partition.
|
||||||
|
@ -99,13 +99,6 @@
|
|||||||
#define UV3_HUB_PART_NUMBER_X 0x4321
|
#define UV3_HUB_PART_NUMBER_X 0x4321
|
||||||
#define UV4_HUB_PART_NUMBER 0x99a1
|
#define UV4_HUB_PART_NUMBER 0x99a1
|
||||||
|
|
||||||
/* Compat: Indicate which UV Hubs are supported. */
|
|
||||||
#define UV1_HUB_IS_SUPPORTED 1
|
|
||||||
#define UV2_HUB_IS_SUPPORTED 1
|
|
||||||
#define UV3_HUB_IS_SUPPORTED 1
|
|
||||||
#define UV4_HUB_IS_SUPPORTED 1
|
|
||||||
#define UV4A_HUB_IS_SUPPORTED 1
|
|
||||||
|
|
||||||
/* Error function to catch undefined references */
|
/* Error function to catch undefined references */
|
||||||
extern unsigned long uv_undefined(char *str);
|
extern unsigned long uv_undefined(char *str);
|
||||||
|
|
||||||
|
@ -30,8 +30,6 @@ static enum uv_system_type uv_system_type;
|
|||||||
static int uv_hubbed_system;
|
static int uv_hubbed_system;
|
||||||
static int uv_hubless_system;
|
static int uv_hubless_system;
|
||||||
static u64 gru_start_paddr, gru_end_paddr;
|
static u64 gru_start_paddr, gru_end_paddr;
|
||||||
static u64 gru_dist_base, gru_first_node_paddr = -1LL, gru_last_node_paddr;
|
|
||||||
static u64 gru_dist_lmask, gru_dist_umask;
|
|
||||||
static union uvh_apicid uvh_apicid;
|
static union uvh_apicid uvh_apicid;
|
||||||
|
|
||||||
/* Unpack OEM/TABLE ID's to be NULL terminated strings */
|
/* Unpack OEM/TABLE ID's to be NULL terminated strings */
|
||||||
@ -48,11 +46,9 @@ static struct {
|
|||||||
unsigned int gnode_shift;
|
unsigned int gnode_shift;
|
||||||
} uv_cpuid;
|
} uv_cpuid;
|
||||||
|
|
||||||
int uv_min_hub_revision_id;
|
static int uv_min_hub_revision_id;
|
||||||
EXPORT_SYMBOL_GPL(uv_min_hub_revision_id);
|
|
||||||
|
|
||||||
unsigned int uv_apicid_hibits;
|
unsigned int uv_apicid_hibits;
|
||||||
EXPORT_SYMBOL_GPL(uv_apicid_hibits);
|
|
||||||
|
|
||||||
static struct apic apic_x2apic_uv_x;
|
static struct apic apic_x2apic_uv_x;
|
||||||
static struct uv_hub_info_s uv_hub_info_node0;
|
static struct uv_hub_info_s uv_hub_info_node0;
|
||||||
@ -85,20 +81,7 @@ static unsigned long __init uv_early_read_mmr(unsigned long addr)
|
|||||||
|
|
||||||
static inline bool is_GRU_range(u64 start, u64 end)
|
static inline bool is_GRU_range(u64 start, u64 end)
|
||||||
{
|
{
|
||||||
if (gru_dist_base) {
|
return start >= gru_start_paddr && end <= gru_end_paddr;
|
||||||
u64 su = start & gru_dist_umask; /* Upper (incl pnode) bits */
|
|
||||||
u64 sl = start & gru_dist_lmask; /* Base offset bits */
|
|
||||||
u64 eu = end & gru_dist_umask;
|
|
||||||
u64 el = end & gru_dist_lmask;
|
|
||||||
|
|
||||||
/* Must reside completely within a single GRU range: */
|
|
||||||
return (sl == gru_dist_base && el == gru_dist_base &&
|
|
||||||
su >= gru_first_node_paddr &&
|
|
||||||
su <= gru_last_node_paddr &&
|
|
||||||
eu == su);
|
|
||||||
} else {
|
|
||||||
return start >= gru_start_paddr && end <= gru_end_paddr;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool uv_is_untracked_pat_range(u64 start, u64 end)
|
static bool uv_is_untracked_pat_range(u64 start, u64 end)
|
||||||
@ -385,11 +368,10 @@ int is_uv_hubbed(int uvtype)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(is_uv_hubbed);
|
EXPORT_SYMBOL_GPL(is_uv_hubbed);
|
||||||
|
|
||||||
int is_uv_hubless(int uvtype)
|
static int is_uv_hubless(int uvtype)
|
||||||
{
|
{
|
||||||
return (uv_hubless_system & uvtype);
|
return (uv_hubless_system & uvtype);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(is_uv_hubless);
|
|
||||||
|
|
||||||
void **__uv_hub_info_list;
|
void **__uv_hub_info_list;
|
||||||
EXPORT_SYMBOL_GPL(__uv_hub_info_list);
|
EXPORT_SYMBOL_GPL(__uv_hub_info_list);
|
||||||
@ -417,12 +399,6 @@ static __initdata struct uv_gam_range_s *_gr_table;
|
|||||||
|
|
||||||
#define SOCK_EMPTY ((unsigned short)~0)
|
#define SOCK_EMPTY ((unsigned short)~0)
|
||||||
|
|
||||||
extern int uv_hub_info_version(void)
|
|
||||||
{
|
|
||||||
return UV_HUB_INFO_VERSION;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(uv_hub_info_version);
|
|
||||||
|
|
||||||
/* Default UV memory block size is 2GB */
|
/* Default UV memory block size is 2GB */
|
||||||
static unsigned long mem_block_size __initdata = (2UL << 30);
|
static unsigned long mem_block_size __initdata = (2UL << 30);
|
||||||
|
|
||||||
@ -590,12 +566,21 @@ static int uv_wakeup_secondary(int phys_apicid, unsigned long start_rip)
|
|||||||
|
|
||||||
static void uv_send_IPI_one(int cpu, int vector)
|
static void uv_send_IPI_one(int cpu, int vector)
|
||||||
{
|
{
|
||||||
unsigned long apicid;
|
unsigned long apicid = per_cpu(x86_cpu_to_apicid, cpu);
|
||||||
int pnode;
|
int pnode = uv_apicid_to_pnode(apicid);
|
||||||
|
unsigned long dmode, val;
|
||||||
|
|
||||||
apicid = per_cpu(x86_cpu_to_apicid, cpu);
|
if (vector == NMI_VECTOR)
|
||||||
pnode = uv_apicid_to_pnode(apicid);
|
dmode = dest_NMI;
|
||||||
uv_hub_send_ipi(pnode, apicid, vector);
|
else
|
||||||
|
dmode = dest_Fixed;
|
||||||
|
|
||||||
|
val = (1UL << UVH_IPI_INT_SEND_SHFT) |
|
||||||
|
((apicid | uv_apicid_hibits) << UVH_IPI_INT_APIC_ID_SHFT) |
|
||||||
|
(dmode << UVH_IPI_INT_DELIVERY_MODE_SHFT) |
|
||||||
|
(vector << UVH_IPI_INT_VECTOR_SHFT);
|
||||||
|
|
||||||
|
uv_write_global_mmr64(pnode, UVH_IPI_INT, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void uv_send_IPI_mask(const struct cpumask *mask, int vector)
|
static void uv_send_IPI_mask(const struct cpumask *mask, int vector)
|
||||||
@ -797,42 +782,6 @@ static __init void map_high(char *id, unsigned long base, int pshift, int bshift
|
|||||||
init_extra_mapping_wb(paddr, bytes);
|
init_extra_mapping_wb(paddr, bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
static __init void map_gru_distributed(unsigned long c)
|
|
||||||
{
|
|
||||||
union uvh_rh_gam_gru_overlay_config_mmr_u gru;
|
|
||||||
u64 paddr;
|
|
||||||
unsigned long bytes;
|
|
||||||
int nid;
|
|
||||||
|
|
||||||
gru.v = c;
|
|
||||||
|
|
||||||
/* Only base bits 42:28 relevant in dist mode */
|
|
||||||
gru_dist_base = gru.v & 0x000007fff0000000UL;
|
|
||||||
if (!gru_dist_base) {
|
|
||||||
pr_info("UV: Map GRU_DIST base address NULL\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
bytes = 1UL << UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR_BASE_SHFT;
|
|
||||||
gru_dist_lmask = ((1UL << uv_hub_info->m_val) - 1) & ~(bytes - 1);
|
|
||||||
gru_dist_umask = ~((1UL << uv_hub_info->m_val) - 1);
|
|
||||||
gru_dist_base &= gru_dist_lmask; /* Clear bits above M */
|
|
||||||
|
|
||||||
for_each_online_node(nid) {
|
|
||||||
paddr = ((u64)uv_node_to_pnode(nid) << uv_hub_info->m_val) |
|
|
||||||
gru_dist_base;
|
|
||||||
init_extra_mapping_wb(paddr, bytes);
|
|
||||||
gru_first_node_paddr = min(paddr, gru_first_node_paddr);
|
|
||||||
gru_last_node_paddr = max(paddr, gru_last_node_paddr);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Save upper (63:M) bits of address only for is_GRU_range */
|
|
||||||
gru_first_node_paddr &= gru_dist_umask;
|
|
||||||
gru_last_node_paddr &= gru_dist_umask;
|
|
||||||
|
|
||||||
pr_debug("UV: Map GRU_DIST base 0x%016llx 0x%016llx - 0x%016llx\n", gru_dist_base, gru_first_node_paddr, gru_last_node_paddr);
|
|
||||||
}
|
|
||||||
|
|
||||||
static __init void map_gru_high(int max_pnode)
|
static __init void map_gru_high(int max_pnode)
|
||||||
{
|
{
|
||||||
union uvh_rh_gam_gru_overlay_config_mmr_u gru;
|
union uvh_rh_gam_gru_overlay_config_mmr_u gru;
|
||||||
@ -846,12 +795,6 @@ static __init void map_gru_high(int max_pnode)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Only UV3 has distributed GRU mode */
|
|
||||||
if (is_uv3_hub() && gru.s3.mode) {
|
|
||||||
map_gru_distributed(gru.v);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
base = (gru.v & mask) >> shift;
|
base = (gru.v & mask) >> shift;
|
||||||
map_high("GRU", base, shift, shift, max_pnode, map_wb);
|
map_high("GRU", base, shift, shift, max_pnode, map_wb);
|
||||||
gru_start_paddr = ((u64)base << shift);
|
gru_start_paddr = ((u64)base << shift);
|
||||||
|
@ -45,7 +45,8 @@ static s64 __uv_bios_call(enum uv_bios_cmd which, u64 a1, u64 a2, u64 a3,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
s64 uv_bios_call(enum uv_bios_cmd which, u64 a1, u64 a2, u64 a3, u64 a4, u64 a5)
|
static s64 uv_bios_call(enum uv_bios_cmd which, u64 a1, u64 a2, u64 a3, u64 a4,
|
||||||
|
u64 a5)
|
||||||
{
|
{
|
||||||
s64 ret;
|
s64 ret;
|
||||||
|
|
||||||
@ -57,10 +58,9 @@ s64 uv_bios_call(enum uv_bios_cmd which, u64 a1, u64 a2, u64 a3, u64 a4, u64 a5)
|
|||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(uv_bios_call);
|
|
||||||
|
|
||||||
s64 uv_bios_call_irqsave(enum uv_bios_cmd which, u64 a1, u64 a2, u64 a3,
|
static s64 uv_bios_call_irqsave(enum uv_bios_cmd which, u64 a1, u64 a2, u64 a3,
|
||||||
u64 a4, u64 a5)
|
u64 a4, u64 a5)
|
||||||
{
|
{
|
||||||
unsigned long bios_flags;
|
unsigned long bios_flags;
|
||||||
s64 ret;
|
s64 ret;
|
||||||
@ -77,18 +77,13 @@ s64 uv_bios_call_irqsave(enum uv_bios_cmd which, u64 a1, u64 a2, u64 a3,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
long sn_partition_id;
|
long sn_partition_id;
|
||||||
EXPORT_SYMBOL_GPL(sn_partition_id);
|
EXPORT_SYMBOL_GPL(sn_partition_id);
|
||||||
long sn_coherency_id;
|
long sn_coherency_id;
|
||||||
EXPORT_SYMBOL_GPL(sn_coherency_id);
|
|
||||||
long sn_region_size;
|
long sn_region_size;
|
||||||
EXPORT_SYMBOL_GPL(sn_region_size);
|
EXPORT_SYMBOL_GPL(sn_region_size);
|
||||||
long system_serial_number;
|
long system_serial_number;
|
||||||
EXPORT_SYMBOL_GPL(system_serial_number);
|
|
||||||
int uv_type;
|
int uv_type;
|
||||||
EXPORT_SYMBOL_GPL(uv_type);
|
|
||||||
|
|
||||||
|
|
||||||
s64 uv_bios_get_sn_info(int fc, int *uvtype, long *partid, long *coher,
|
s64 uv_bios_get_sn_info(int fc, int *uvtype, long *partid, long *coher,
|
||||||
long *region, long *ssn)
|
long *region, long *ssn)
|
||||||
@ -115,7 +110,6 @@ s64 uv_bios_get_sn_info(int fc, int *uvtype, long *partid, long *coher,
|
|||||||
*ssn = v1;
|
*ssn = v1;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(uv_bios_get_sn_info);
|
|
||||||
|
|
||||||
int
|
int
|
||||||
uv_bios_mq_watchlist_alloc(unsigned long addr, unsigned int mq_size,
|
uv_bios_mq_watchlist_alloc(unsigned long addr, unsigned int mq_size,
|
||||||
@ -166,7 +160,6 @@ s64 uv_bios_freq_base(u64 clock_type, u64 *ticks_per_second)
|
|||||||
return uv_bios_call(UV_BIOS_FREQ_BASE, clock_type,
|
return uv_bios_call(UV_BIOS_FREQ_BASE, clock_type,
|
||||||
(u64)ticks_per_second, 0, 0, 0);
|
(u64)ticks_per_second, 0, 0, 0);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(uv_bios_freq_base);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* uv_bios_set_legacy_vga_target - Set Legacy VGA I/O Target
|
* uv_bios_set_legacy_vga_target - Set Legacy VGA I/O Target
|
||||||
@ -185,7 +178,6 @@ int uv_bios_set_legacy_vga_target(bool decode, int domain, int bus)
|
|||||||
return uv_bios_call(UV_BIOS_SET_LEGACY_VGA_TARGET,
|
return uv_bios_call(UV_BIOS_SET_LEGACY_VGA_TARGET,
|
||||||
(u64)decode, (u64)domain, (u64)bus, 0, 0);
|
(u64)decode, (u64)domain, (u64)bus, 0, 0);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(uv_bios_set_legacy_vga_target);
|
|
||||||
|
|
||||||
int uv_bios_init(void)
|
int uv_bios_init(void)
|
||||||
{
|
{
|
||||||
|
@ -21,7 +21,7 @@ static ssize_t partition_id_show(struct kobject *kobj,
|
|||||||
static ssize_t coherence_id_show(struct kobject *kobj,
|
static ssize_t coherence_id_show(struct kobject *kobj,
|
||||||
struct kobj_attribute *attr, char *buf)
|
struct kobj_attribute *attr, char *buf)
|
||||||
{
|
{
|
||||||
return snprintf(buf, PAGE_SIZE, "%ld\n", uv_partition_coherence_id());
|
return snprintf(buf, PAGE_SIZE, "%ld\n", sn_coherency_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct kobj_attribute partition_id_attr =
|
static struct kobj_attribute partition_id_attr =
|
||||||
|
Loading…
x
Reference in New Issue
Block a user