diff options
author | Mike Travis <mike.travis@hpe.com> | 2018-01-08 14:40:04 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2018-01-15 21:58:38 -0500 |
commit | a631a0a7a3caf6a9924856f3dcfe256e747f7467 (patch) | |
tree | 740a3172c4836f755767a7a7dc6d7f43403ffbb2 | |
parent | 09c3ae12b2bf6dc2837d89c1017bf151af610a1f (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.h | 59 |
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 | ||
2796 | union 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 */ |