aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Travis <mike.travis@hpe.com>2018-01-08 14:40:04 -0500
committerIngo Molnar <mingo@kernel.org>2018-01-15 21:58:38 -0500
commita631a0a7a3caf6a9924856f3dcfe256e747f7467 (patch)
tree740a3172c4836f755767a7a7dc6d7f43403ffbb2
parent09c3ae12b2bf6dc2837d89c1017bf151af610a1f (diff)
x86/platform/UV: Fix UV4A BAU MMRs
Fixes to accommodate Intel Processor changes for UV4A broadcast assist unit (BAU) MMRs. Signed-off-by: Mike Travis <mike.travis@hpe.com> Acked-by: Andrew Banman <abanman@hpe.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Dimitri Sivanich <sivanich@hpe.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Russ Anderson <rja@hpe.com> Cc: Thomas Gleixner <tglx@linutronix.de> Link: http://lkml.kernel.org/r/1515440405-20880-7-git-send-email-mike.travis@hpe.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r--arch/x86/include/asm/uv/uv_mmrs.h59
1 files changed, 38 insertions, 21 deletions
diff --git a/arch/x86/include/asm/uv/uv_mmrs.h b/arch/x86/include/asm/uv/uv_mmrs.h
index 30db549885e2..ecb9ddef128f 100644
--- a/arch/x86/include/asm/uv/uv_mmrs.h
+++ b/arch/x86/include/asm/uv/uv_mmrs.h
@@ -39,9 +39,11 @@
39 * #define UV2Hxxx b 39 * #define UV2Hxxx b
40 * #define UV3Hxxx c 40 * #define UV3Hxxx c
41 * #define UV4Hxxx d 41 * #define UV4Hxxx d
42 * #define UV4AHxxx e
42 * #define UVHxxx (is_uv1_hub() ? UV1Hxxx : 43 * #define UVHxxx (is_uv1_hub() ? UV1Hxxx :
43 * (is_uv2_hub() ? UV2Hxxx : 44 * (is_uv2_hub() ? UV2Hxxx :
44 * (is_uv3_hub() ? UV3Hxxx : 45 * (is_uv3_hub() ? UV3Hxxx :
46 * (is_uv4a_hub() ? UV4AHxxx :
45 * UV4Hxxx)) 47 * UV4Hxxx))
46 * 48 *
47 * If the MMR exists on all hub types > 1 but have different addresses, the 49 * If the MMR exists on all hub types > 1 but have different addresses, the
@@ -49,8 +51,10 @@
49 * #define UV2Hxxx b 51 * #define UV2Hxxx b
50 * #define UV3Hxxx c 52 * #define UV3Hxxx c
51 * #define UV4Hxxx d 53 * #define UV4Hxxx d
54 * #define UV4AHxxx e
52 * #define UVHxxx (is_uv2_hub() ? UV2Hxxx : 55 * #define UVHxxx (is_uv2_hub() ? UV2Hxxx :
53 * (is_uv3_hub() ? UV3Hxxx : 56 * (is_uv3_hub() ? UV3Hxxx :
57 * (is_uv4a_hub() ? UV4AHxxx :
54 * UV4Hxxx)) 58 * UV4Hxxx))
55 * 59 *
56 * union uvh_xxx { 60 * union uvh_xxx {
@@ -63,6 +67,7 @@
63 * } s2; 67 * } s2;
64 * struct uv3h_xxx_s { # Full UV3 definition (*) 68 * struct uv3h_xxx_s { # Full UV3 definition (*)
65 * } s3; 69 * } s3;
70 * (NOTE: No struct uv4ah_xxx_s members exist)
66 * struct uv4h_xxx_s { # Full UV4 definition (*) 71 * struct uv4h_xxx_s { # Full UV4 definition (*)
67 * } s4; 72 * } s4;
68 * }; 73 * };
@@ -2780,35 +2785,47 @@ union uvh_lb_bau_sb_activation_status_1_u {
2780 /*is_uv4_hub*/ UV4H_LB_BAU_SB_DESCRIPTOR_BASE_32) 2785 /*is_uv4_hub*/ UV4H_LB_BAU_SB_DESCRIPTOR_BASE_32)
2781 2786
2782#define UVH_LB_BAU_SB_DESCRIPTOR_BASE_PAGE_ADDRESS_SHFT 12 2787#define UVH_LB_BAU_SB_DESCRIPTOR_BASE_PAGE_ADDRESS_SHFT 12
2783#define UVH_LB_BAU_SB_DESCRIPTOR_BASE_NODE_ID_SHFT 49
2784#define UVH_LB_BAU_SB_DESCRIPTOR_BASE_NODE_ID_MASK 0x7ffe000000000000UL
2785 2788
2789#define UV1H_LB_BAU_SB_DESCRIPTOR_BASE_NODE_ID_SHFT 49
2786#define UV1H_LB_BAU_SB_DESCRIPTOR_BASE_PAGE_ADDRESS_MASK 0x000007fffffff000UL 2790#define UV1H_LB_BAU_SB_DESCRIPTOR_BASE_PAGE_ADDRESS_MASK 0x000007fffffff000UL
2791#define UV1H_LB_BAU_SB_DESCRIPTOR_BASE_NODE_ID_MASK 0x7ffe000000000000UL
2787 2792
2788 2793#define UV2H_LB_BAU_SB_DESCRIPTOR_BASE_NODE_ID_SHFT 49
2789#define UV2H_LB_BAU_SB_DESCRIPTOR_BASE_PAGE_ADDRESS_MASK 0x000007fffffff000UL 2794#define UV2H_LB_BAU_SB_DESCRIPTOR_BASE_PAGE_ADDRESS_MASK 0x000007fffffff000UL
2795#define UV2H_LB_BAU_SB_DESCRIPTOR_BASE_NODE_ID_MASK 0x7ffe000000000000UL
2790 2796
2797#define UV3H_LB_BAU_SB_DESCRIPTOR_BASE_NODE_ID_SHFT 49
2791#define UV3H_LB_BAU_SB_DESCRIPTOR_BASE_PAGE_ADDRESS_MASK 0x000007fffffff000UL 2798#define UV3H_LB_BAU_SB_DESCRIPTOR_BASE_PAGE_ADDRESS_MASK 0x000007fffffff000UL
2799#define UV3H_LB_BAU_SB_DESCRIPTOR_BASE_NODE_ID_MASK 0x7ffe000000000000UL
2792 2800
2801#define UV4H_LB_BAU_SB_DESCRIPTOR_BASE_NODE_ID_SHFT 49
2793#define UV4H_LB_BAU_SB_DESCRIPTOR_BASE_PAGE_ADDRESS_MASK 0x00003ffffffff000UL 2802#define UV4H_LB_BAU_SB_DESCRIPTOR_BASE_PAGE_ADDRESS_MASK 0x00003ffffffff000UL
2794 2803#define UV4H_LB_BAU_SB_DESCRIPTOR_BASE_NODE_ID_MASK 0x7ffe000000000000UL
2795 2804
2796union uvh_lb_bau_sb_descriptor_base_u { 2805#define UV4AH_LB_BAU_SB_DESCRIPTOR_BASE_NODE_ID_SHFT 53
2797 unsigned long v; 2806#define UV4AH_LB_BAU_SB_DESCRIPTOR_BASE_PAGE_ADDRESS_MASK 0x000ffffffffff000UL
2798 struct uvh_lb_bau_sb_descriptor_base_s { 2807#define UV4AH_LB_BAU_SB_DESCRIPTOR_BASE_NODE_ID_MASK 0xffe0000000000000UL
2799 unsigned long rsvd_0_11:12; 2808
2800 unsigned long rsvd_12_48:37; 2809#define UVH_LB_BAU_SB_DESCRIPTOR_BASE_NODE_ID_SHFT ( \
2801 unsigned long node_id:14; /* RW */ 2810 is_uv1_hub() ? UV1H_LB_BAU_SB_DESCRIPTOR_BASE_NODE_ID_SHFT : \
2802 unsigned long rsvd_63:1; 2811 is_uv2_hub() ? UV2H_LB_BAU_SB_DESCRIPTOR_BASE_NODE_ID_SHFT : \
2803 } s; 2812 is_uv3_hub() ? UV3H_LB_BAU_SB_DESCRIPTOR_BASE_NODE_ID_SHFT : \
2804 struct uv4h_lb_bau_sb_descriptor_base_s { 2813 is_uv4a_hub() ? UV4AH_LB_BAU_SB_DESCRIPTOR_BASE_NODE_ID_SHFT : \
2805 unsigned long rsvd_0_11:12; 2814 /*is_uv4_hub*/ UV4H_LB_BAU_SB_DESCRIPTOR_BASE_NODE_ID_SHFT)
2806 unsigned long page_address:34; /* RW */ 2815
2807 unsigned long rsvd_46_48:3; 2816#define UVH_LB_BAU_SB_DESCRIPTOR_PAGE_ADDRESS_MASK ( \
2808 unsigned long node_id:14; /* RW */ 2817 is_uv1_hub() ? UV1H_LB_BAU_SB_DESCRIPTOR_PAGE_ADDRESS_MASK : \
2809 unsigned long rsvd_63:1; 2818 is_uv2_hub() ? UV2H_LB_BAU_SB_DESCRIPTOR_PAGE_ADDRESS_MASK : \
2810 } s4; 2819 is_uv3_hub() ? UV3H_LB_BAU_SB_DESCRIPTOR_PAGE_ADDRESS_MASK : \
2811}; 2820 is_uv4a_hub() ? UV4AH_LB_BAU_SB_DESCRIPTOR_PAGE_ADDRESS_MASK : \
2821 /*is_uv4_hub*/ UV4H_LB_BAU_SB_DESCRIPTOR_PAGE_ADDRESS_MASK)
2822
2823#define UVH_LB_BAU_SB_DESCRIPTOR_BASE_NODE_ID_MASK ( \
2824 is_uv1_hub() ? UV1H_LB_BAU_SB_DESCRIPTOR_BASE_NODE_ID_MASK : \
2825 is_uv2_hub() ? UV2H_LB_BAU_SB_DESCRIPTOR_BASE_NODE_ID_MASK : \
2826 is_uv3_hub() ? UV3H_LB_BAU_SB_DESCRIPTOR_BASE_NODE_ID_MASK : \
2827 is_uv4a_hub() ? UV4AH_LB_BAU_SB_DESCRIPTOR_BASE_NODE_ID_MASK : \
2828 /*is_uv4_hub*/ UV4H_LB_BAU_SB_DESCRIPTOR_BASE_NODE_ID_MASK)
2812 2829
2813/* ========================================================================= */ 2830/* ========================================================================= */
2814/* UVH_NODE_ID */ 2831/* UVH_NODE_ID */