diff options
author | Kyle McMartin <kyle@parisc-linux.org> | 2006-06-16 18:20:00 -0400 |
---|---|---|
committer | Kyle McMartin <kyle@hera.kernel.org> | 2006-06-27 19:28:42 -0400 |
commit | a9d2d386c42b816a81eb1d02dfb7b502ba8cea82 (patch) | |
tree | 0c01caa8a470713dc8a68db0ed584cfe3142392d /arch/parisc/kernel/cache.c | |
parent | e5a2e7fdb53028ce187c0ce0ae0d45ca7546fd5e (diff) |
[PARISC] Ensure Space ID hashing is turned off
Check PDC_CACHE to see if spaceid hashing is turned on, and fail to
boot if that is the case.
However, some old machines do not implement the PDC_CACHE_RET_SPID
firmware call, so continue to boot if the call fails because of
PDC_BAD_OPTION (but fail in all other error returns).
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
Diffstat (limited to 'arch/parisc/kernel/cache.c')
-rw-r--r-- | arch/parisc/kernel/cache.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c index 851519cbad6f..bc7c4a4e26a1 100644 --- a/arch/parisc/kernel/cache.c +++ b/arch/parisc/kernel/cache.c | |||
@@ -236,7 +236,8 @@ parisc_cache_init(void) | |||
236 | 236 | ||
237 | void disable_sr_hashing(void) | 237 | void disable_sr_hashing(void) |
238 | { | 238 | { |
239 | int srhash_type; | 239 | int srhash_type, retval; |
240 | unsigned long space_bits; | ||
240 | 241 | ||
241 | switch (boot_cpu_data.cpu_type) { | 242 | switch (boot_cpu_data.cpu_type) { |
242 | case pcx: /* We shouldn't get this far. setup.c should prevent it. */ | 243 | case pcx: /* We shouldn't get this far. setup.c should prevent it. */ |
@@ -262,6 +263,13 @@ void disable_sr_hashing(void) | |||
262 | } | 263 | } |
263 | 264 | ||
264 | disable_sr_hashing_asm(srhash_type); | 265 | disable_sr_hashing_asm(srhash_type); |
266 | |||
267 | retval = pdc_spaceid_bits(&space_bits); | ||
268 | /* If this procedure isn't implemented, don't panic. */ | ||
269 | if (retval < 0 && retval != PDC_BAD_OPTION) | ||
270 | panic("pdc_spaceid_bits call failed.\n"); | ||
271 | if (space_bits != 0) | ||
272 | panic("SpaceID hashing is still on!\n"); | ||
265 | } | 273 | } |
266 | 274 | ||
267 | void flush_dcache_page(struct page *page) | 275 | void flush_dcache_page(struct page *page) |