diff options
Diffstat (limited to 'arch/x86/platform/uv/bios_uv.c')
-rw-r--r-- | arch/x86/platform/uv/bios_uv.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/arch/x86/platform/uv/bios_uv.c b/arch/x86/platform/uv/bios_uv.c index 66b2166ea4a1..23f2f3e41c7f 100644 --- a/arch/x86/platform/uv/bios_uv.c +++ b/arch/x86/platform/uv/bios_uv.c | |||
@@ -187,7 +187,8 @@ EXPORT_SYMBOL_GPL(uv_bios_set_legacy_vga_target); | |||
187 | void uv_bios_init(void) | 187 | void uv_bios_init(void) |
188 | { | 188 | { |
189 | uv_systab = NULL; | 189 | uv_systab = NULL; |
190 | if ((efi.uv_systab == EFI_INVALID_TABLE_ADDR) || !efi.uv_systab) { | 190 | if ((efi.uv_systab == EFI_INVALID_TABLE_ADDR) || |
191 | !efi.uv_systab || efi_runtime_disabled()) { | ||
191 | pr_crit("UV: UVsystab: missing\n"); | 192 | pr_crit("UV: UVsystab: missing\n"); |
192 | return; | 193 | return; |
193 | } | 194 | } |
@@ -199,12 +200,14 @@ void uv_bios_init(void) | |||
199 | return; | 200 | return; |
200 | } | 201 | } |
201 | 202 | ||
203 | /* Starting with UV4 the UV systab size is variable */ | ||
202 | if (uv_systab->revision >= UV_SYSTAB_VERSION_UV4) { | 204 | if (uv_systab->revision >= UV_SYSTAB_VERSION_UV4) { |
205 | int size = uv_systab->size; | ||
206 | |||
203 | iounmap(uv_systab); | 207 | iounmap(uv_systab); |
204 | uv_systab = ioremap(efi.uv_systab, uv_systab->size); | 208 | uv_systab = ioremap(efi.uv_systab, size); |
205 | if (!uv_systab) { | 209 | if (!uv_systab) { |
206 | pr_err("UV: UVsystab: ioremap(%d) failed!\n", | 210 | pr_err("UV: UVsystab: ioremap(%d) failed!\n", size); |
207 | uv_systab->size); | ||
208 | return; | 211 | return; |
209 | } | 212 | } |
210 | } | 213 | } |