Re: Tiger oops in ia64_sal_physical_id_info (was [RFC] regression:113134fcbca83619be4c68d0ca66db6093777b5d)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



* Matthew Wilcox <matthew@xxxxxx>:
> 
> While you can check to see what SAL revision is supported, do
> be wary of some prototype HP SAL implementations which report
> numbers in the 60-90 range.  It's probably safe to say 'if sal
> revision < 3.2 answer = -1', but we were burned with extended
> PCI config space many moons ago when we said 'if sal > 3.1 use
> new method'.

Ah, good idea, Willy.

I believe that the current implementation of check_versions()
does the proper workaround for this bug?

        /* Check for broken firmware */
        if ((sal_revision == SAL_VERSION_CODE(49, 29))
            && (sal_version == SAL_VERSION_CODE(49, 29)))
        {
                /*
                 * Old firmware for zx2000 prototypes have this weird version number,
                 * reset it to something sane.
                 */
                sal_revision = SAL_VERSION_CODE(2, 8);
                sal_version = SAL_VERSION_CODE(0, 0);
        }

In light of that, how about this patch? It allows my Tiger to
boot.

/ac

From: Alex Chiang <achiang@xxxxxx>
Subject: [PATCH] ia64: ia64_sal_physical_id_info work around broken SAL

Unimplemented SAL calls should return -1, but on at least one
platform (Tiger with SAL v3.1), attempting to call SAL_PHYSICAL_ID_INFO
(which was defined in SAL v3.2 and later) results in an oops and
a hang.

Signed-off-by: Alex Chiang <achiang@xxxxxx>
---
diff --git a/include/asm-ia64/sal.h b/include/asm-ia64/sal.h
index 2251118..f4904db 100644
--- a/include/asm-ia64/sal.h
+++ b/include/asm-ia64/sal.h
@@ -807,6 +807,10 @@ static inline s64
 ia64_sal_physical_id_info(u16 *splid)
 {
        struct ia64_sal_retval isrv;
+
+       if (sal_revision < SAL_VERSION_CODE(3,2))
+               return -1;
+
        SAL_CALL(isrv, SAL_PHYSICAL_ID_INFO, 0, 0, 0, 0, 0, 0, 0);
        if (splid)
                *splid = isrv.v0;

-
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel]     [Sparc Linux]     [DCCP]     [Linux ARM]     [Yosemite News]     [Linux SCSI]     [Linux x86_64]     [Linux for Ham Radio]

  Powered by Linux