/* Adjust pointers into EFI. */
efi_ct = (void *)efi_ct + DIRECTMAP_VIRT_START;
+ efi_rs = (void *)efi_rs + DIRECTMAP_VIRT_START;
efi_memmap = (void *)efi_memmap + DIRECTMAP_VIRT_START;
efi_fw_vendor = (void *)efi_fw_vendor + DIRECTMAP_VIRT_START;
}
break;
case XEN_FW_EFI_RT_VERSION:
{
- struct efi_rs_state state = efi_rs_enter();
-
- if ( !state.cr3 )
- return -EOPNOTSUPP;
info->version = efi_rs->Hdr.Revision;
- efi_rs_leave(&state);
break;
}
case XEN_FW_EFI_CONFIG_TABLE:
break;
}
+ if ( (efi_rs->Hdr.Revision >> 16) < 2 )
+ return -EOPNOTSUPP;
state = efi_rs_enter();
- if ( !state.cr3 || (efi_rs->Hdr.Revision >> 16) < 2 )
- {
- efi_rs_leave(&state);
+ if ( !state.cr3 )
return -EOPNOTSUPP;
- }
status = efi_rs->QueryVariableInfo(
op->u.query_variable_info.attr,
&op->u.query_variable_info.max_store_size,
if ( op->misc )
return -EINVAL;
- state = efi_rs_enter();
- if ( !state.cr3 || (efi_rs->Hdr.Revision >> 16) < 2 )
- {
- efi_rs_leave(&state);
+ if ( (efi_rs->Hdr.Revision >> 16) < 2 )
return -EOPNOTSUPP;
- }
- efi_rs_leave(&state);
/* XXX fall through for now */
default:
return -ENOSYS;