x86, uv, uv3: Update Time Support for SGI UV3
authorMike Travis <travis@sgi.com>
Mon, 11 Feb 2013 19:45:13 +0000 (13:45 -0600)
committerH. Peter Anvin <hpa@linux.intel.com>
Tue, 12 Feb 2013 01:18:12 +0000 (17:18 -0800)
This patch updates time support for the SGI UV3 hub.  Since the UV2
and UV3 time support is identical, "is_uvx_hub" is used instead of
having both "is_uv2_hub" and "is_uv3_hub".

Signed-off-by: Mike Travis <travis@sgi.com>
Link: http://lkml.kernel.org/r/20130211194508.893907185@gulag1.americas.sgi.com
Acked-by: Russ Anderson <rja@sgi.com>
Reviewed-by: Dimitri Sivanich <sivanich@sgi.com>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
arch/x86/platform/uv/uv_time.c

index 5032e0d..98718f6 100644 (file)
@@ -15,7 +15,7 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  *
- *  Copyright (c) 2009 Silicon Graphics, Inc.  All Rights Reserved.
+ *  Copyright (c) 2009-2013 Silicon Graphics, Inc.  All Rights Reserved.
  *  Copyright (c) Dimitri Sivanich
  */
 #include <linux/clockchips.h>
@@ -102,9 +102,10 @@ static int uv_intr_pending(int pnode)
        if (is_uv1_hub())
                return uv_read_global_mmr64(pnode, UVH_EVENT_OCCURRED0) &
                        UV1H_EVENT_OCCURRED0_RTC1_MASK;
-       else
-               return uv_read_global_mmr64(pnode, UV2H_EVENT_OCCURRED2) &
-                       UV2H_EVENT_OCCURRED2_RTC_1_MASK;
+       else if (is_uvx_hub())
+               return uv_read_global_mmr64(pnode, UVXH_EVENT_OCCURRED2) &
+                       UVXH_EVENT_OCCURRED2_RTC_1_MASK;
+       return 0;
 }
 
 /* Setup interrupt and return non-zero if early expiration occurred. */
@@ -122,8 +123,8 @@ static int uv_setup_intr(int cpu, u64 expires)
                uv_write_global_mmr64(pnode, UVH_EVENT_OCCURRED0_ALIAS,
                                UV1H_EVENT_OCCURRED0_RTC1_MASK);
        else
-               uv_write_global_mmr64(pnode, UV2H_EVENT_OCCURRED2_ALIAS,
-                               UV2H_EVENT_OCCURRED2_RTC_1_MASK);
+               uv_write_global_mmr64(pnode, UVXH_EVENT_OCCURRED2_ALIAS,
+                               UVXH_EVENT_OCCURRED2_RTC_1_MASK);
 
        val = (X86_PLATFORM_IPI_VECTOR << UVH_RTC1_INT_CONFIG_VECTOR_SHFT) |
                ((u64)apicid << UVH_RTC1_INT_CONFIG_APIC_ID_SHFT);