From 618e213f25b9830a1aa6b253072a0413cc4e5a14 Mon Sep 17 00:00:00 2001 From: Russ Anderson Date: Thu, 3 Jan 2008 10:23:49 -0600 Subject: [PATCH] --- yaml --- r: 75259 b: refs/heads/master c: 2022c1f136067f673964dcaffa1cae1008ddcd74 h: refs/heads/master i: 75257: 2f3310abc230806522ecc51a53db13ee79afdfa5 75255: 60829fac38715578d935fc29b23ef33339f857e3 v: v3 --- [refs] | 2 +- trunk/arch/ia64/sn/kernel/xp_nofault.S | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 2e8c82a9faed..74d1c5338967 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4ca8ad7e4c38cd7f32b11e60418d06fa912a1a37 +refs/heads/master: 2022c1f136067f673964dcaffa1cae1008ddcd74 diff --git a/trunk/arch/ia64/sn/kernel/xp_nofault.S b/trunk/arch/ia64/sn/kernel/xp_nofault.S index 54e8973b6e99..98e7c7dbfdd8 100644 --- a/trunk/arch/ia64/sn/kernel/xp_nofault.S +++ b/trunk/arch/ia64/sn/kernel/xp_nofault.S @@ -3,7 +3,7 @@ * License. See the file "COPYING" in the main directory of this archive * for more details. * - * Copyright (c) 2004-2005 Silicon Graphics, Inc. All Rights Reserved. + * Copyright (c) 2004-2007 Silicon Graphics, Inc. All Rights Reserved. */ @@ -14,6 +14,11 @@ * PIO read fails, the MCA handler will force the error to look * corrected and vector to the xp_error_PIOR which will return an error. * + * The definition of "consumption" and the time it takes for an MCA + * to surface is processor implementation specific. This code + * is sufficient on Itanium through the Montvale processor family. + * It may need to be adjusted for future processor implementations. + * * extern int xp_nofault_PIOR(void *remote_register); */ @@ -22,11 +27,10 @@ xp_nofault_PIOR: mov r8=r0 // Stage a success return value ld8.acq r9=[r32];; // PIO Read the specified register adds r9=1,r9;; // Add to force consumption - or r9=r9,r9;; // Or to force consumption + srlz.i;; // Allow time for MCA to surface br.ret.sptk.many b0;; // Return success .global xp_error_PIOR xp_error_PIOR: mov r8=1 // Return value of 1 br.ret.sptk.many b0;; // Return failure -