Date
1 - 2 of 2
Help on UEFI variables
deniz343@...
Good days to everybody,
I'm working on a user-space driver that uses UEFI for storing some driver specific variables. Due to the fact that this driver runs on Real-Time platform +1ms delays are unacceptable. When storing variables on UEFI, after couple hundred writes system hangs for 2-3 seconds. Which is unbearable. I'm guessing that "Variable Reclaim" is being invoked and that causes for system to hang. I had an idea to use EDKII's AllocateRuntimePool to allocate memory in UEFI then store my variable. Although, I'm not sure if that method is user-space. If anyone has an idea what causes this delay and/or has an idea to solve this problem I'm all ears.
Thank you.
I'm working on a user-space driver that uses UEFI for storing some driver specific variables. Due to the fact that this driver runs on Real-Time platform +1ms delays are unacceptable. When storing variables on UEFI, after couple hundred writes system hangs for 2-3 seconds. Which is unbearable. I'm guessing that "Variable Reclaim" is being invoked and that causes for system to hang. I had an idea to use EDKII's AllocateRuntimePool to allocate memory in UEFI then store my variable. Although, I'm not sure if that method is user-space. If anyone has an idea what causes this delay and/or has an idea to solve this problem I'm all ears.
Thank you.
Laszlo Ersek
On 08/17/20 17:00, deniz343@... wrote:
component? If the use case has nothing to do with UEFI (or firmware in
general), then UEFI variables look like a bad fit.
Volatile UEFI variables are suitable for carrying some information from
pre-boot time (firmware components) to the OS, with no need to survive a
power-off.
Non-volatile UEFI variables are persistent firmware settings. Their
storage is usually both very limited, and slow to access.
EfiRuntimeServicesData -- The data portions of a loaded UEFI Runtime
Driver and the default data allocation type used by a UEFI Runtime
Driver to allocate pool memory.
From "Table 30. Memory Type Usage after ExitBootServices()":
EfiRuntimeServicesData -- The memory in this range is to be preserved by
the UEFI OS loader and OS in the working and ACPI S1–S3 states.
My idea (without knowing more) would be "use different storage".
Thanks
Laszlo
Good days to everybody,Why do you use UEFI variables for storing data related to a user-space
I'm working on a user-space driver that uses UEFI for storing some driver specific variables.
component? If the use case has nothing to do with UEFI (or firmware in
general), then UEFI variables look like a bad fit.
Volatile UEFI variables are suitable for carrying some information from
pre-boot time (firmware components) to the OS, with no need to survive a
power-off.
Non-volatile UEFI variables are persistent firmware settings. Their
storage is usually both very limited, and slow to access.
Due to the fact that this driver runs on Real-Time platform +1ms delays are unacceptable. When storing variables on UEFI, after couple hundred writes system hangs for 2-3 seconds. Which is unbearable. I'm guessing that "Variable Reclaim" is being invoked and that causes for system to hang. I had an idea to use EDKII's AllocateRuntimePool to allocate memory in UEFI then store my variable. Although, I'm not sure if that method is user-space. If anyone has an idea what causes this delay and/or has an idea to solve this problem I'm all ears.From "Table 29. Memory Type Usage before ExitBootServices()":
EfiRuntimeServicesData -- The data portions of a loaded UEFI Runtime
Driver and the default data allocation type used by a UEFI Runtime
Driver to allocate pool memory.
From "Table 30. Memory Type Usage after ExitBootServices()":
EfiRuntimeServicesData -- The memory in this range is to be preserved by
the UEFI OS loader and OS in the working and ACPI S1–S3 states.
My idea (without knowing more) would be "use different storage".
Thanks
Laszlo