forked from Minki/linux
x86/platform/uv/BAU: Cleanup bau_operations declaration and instances
Move the bau_operations declaration after bau struct declarations so the bau structs can be referenced when adding new functions to bau_operations. That way we avoid forward declarations of the bau structs. Likewise, move uv*_bau_ops structs down to avoid forward declarations of new functions defined in the same file. Declare these structs __initconst since they are only used during initialization. Similarly, declare the bau_operations ops instance __ro_after_init as it is read-only after initialization. This is a preparatory patch for adding wait_completion to bau_operations. Signed-off-by: Andrew Banman <abanman@hpe.com> Acked-by: Ingo Molnar <mingo@kernel.org> Acked-by: Mike Travis <mike.travis@hpe.com> Cc: sivanich@hpe.com Cc: rja@hpe.com Cc: akpm@linux-foundation.org Link: http://lkml.kernel.org/r/1489077734-111753-4-git-send-email-abanman@hpe.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
e9be36443c
commit
8e3b21b6db
@ -406,17 +406,6 @@ struct uv2_3_bau_msg_header {
|
||||
/* bits 127:120 */
|
||||
};
|
||||
|
||||
/* Abstracted BAU functions */
|
||||
struct bau_operations {
|
||||
unsigned long (*read_l_sw_ack)(void);
|
||||
unsigned long (*read_g_sw_ack)(int pnode);
|
||||
unsigned long (*bau_gpa_to_offset)(unsigned long vaddr);
|
||||
void (*write_l_sw_ack)(unsigned long mmr);
|
||||
void (*write_g_sw_ack)(int pnode, unsigned long mmr);
|
||||
void (*write_payload_first)(int pnode, unsigned long mmr);
|
||||
void (*write_payload_last)(int pnode, unsigned long mmr);
|
||||
};
|
||||
|
||||
/*
|
||||
* The activation descriptor:
|
||||
* The format of the message to send, plus all accompanying control
|
||||
@ -668,6 +657,17 @@ struct bau_control {
|
||||
struct hub_and_pnode *thp;
|
||||
};
|
||||
|
||||
/* Abstracted BAU functions */
|
||||
struct bau_operations {
|
||||
unsigned long (*read_l_sw_ack)(void);
|
||||
unsigned long (*read_g_sw_ack)(int pnode);
|
||||
unsigned long (*bau_gpa_to_offset)(unsigned long vaddr);
|
||||
void (*write_l_sw_ack)(unsigned long mmr);
|
||||
void (*write_g_sw_ack)(int pnode, unsigned long mmr);
|
||||
void (*write_payload_first)(int pnode, unsigned long mmr);
|
||||
void (*write_payload_last)(int pnode, unsigned long mmr);
|
||||
};
|
||||
|
||||
static inline void write_mmr_data_broadcast(int pnode, unsigned long mmr_image)
|
||||
{
|
||||
write_gmmr(pnode, UVH_BAU_DATA_BROADCAST, mmr_image);
|
||||
|
@ -23,28 +23,7 @@
|
||||
#include <asm/irq_vectors.h>
|
||||
#include <asm/timer.h>
|
||||
|
||||
static struct bau_operations ops;
|
||||
|
||||
static struct bau_operations uv123_bau_ops = {
|
||||
.bau_gpa_to_offset = uv_gpa_to_offset,
|
||||
.read_l_sw_ack = read_mmr_sw_ack,
|
||||
.read_g_sw_ack = read_gmmr_sw_ack,
|
||||
.write_l_sw_ack = write_mmr_sw_ack,
|
||||
.write_g_sw_ack = write_gmmr_sw_ack,
|
||||
.write_payload_first = write_mmr_payload_first,
|
||||
.write_payload_last = write_mmr_payload_last,
|
||||
};
|
||||
|
||||
static struct bau_operations uv4_bau_ops = {
|
||||
.bau_gpa_to_offset = uv_gpa_to_soc_phys_ram,
|
||||
.read_l_sw_ack = read_mmr_proc_sw_ack,
|
||||
.read_g_sw_ack = read_gmmr_proc_sw_ack,
|
||||
.write_l_sw_ack = write_mmr_proc_sw_ack,
|
||||
.write_g_sw_ack = write_gmmr_proc_sw_ack,
|
||||
.write_payload_first = write_mmr_proc_payload_first,
|
||||
.write_payload_last = write_mmr_proc_payload_last,
|
||||
};
|
||||
|
||||
static struct bau_operations ops __ro_after_init;
|
||||
|
||||
/* timeouts in nanoseconds (indexed by UVH_AGING_PRESCALE_SEL urgency7 30:28) */
|
||||
static int timeout_base_ns[] = {
|
||||
@ -2158,6 +2137,26 @@ fail:
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const struct bau_operations uv123_bau_ops __initconst = {
|
||||
.bau_gpa_to_offset = uv_gpa_to_offset,
|
||||
.read_l_sw_ack = read_mmr_sw_ack,
|
||||
.read_g_sw_ack = read_gmmr_sw_ack,
|
||||
.write_l_sw_ack = write_mmr_sw_ack,
|
||||
.write_g_sw_ack = write_gmmr_sw_ack,
|
||||
.write_payload_first = write_mmr_payload_first,
|
||||
.write_payload_last = write_mmr_payload_last,
|
||||
};
|
||||
|
||||
static const struct bau_operations uv4_bau_ops __initconst = {
|
||||
.bau_gpa_to_offset = uv_gpa_to_soc_phys_ram,
|
||||
.read_l_sw_ack = read_mmr_proc_sw_ack,
|
||||
.read_g_sw_ack = read_gmmr_proc_sw_ack,
|
||||
.write_l_sw_ack = write_mmr_proc_sw_ack,
|
||||
.write_g_sw_ack = write_gmmr_proc_sw_ack,
|
||||
.write_payload_first = write_mmr_proc_payload_first,
|
||||
.write_payload_last = write_mmr_proc_payload_last,
|
||||
};
|
||||
|
||||
/*
|
||||
* Initialization of BAU-related structures
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user