Bug #660
openCFR options showup, can be adjusted, can be saved but don't have effect?
0%
Description
Have build several times CFR options into multiple snd_ivb/haswell/skylake ports over the past few months and cannot remember one time it worked besides from being that the menu options showup. Its settings can be adjusted and saved and after reboot it shows that they are saved but have no effect.
For instance Dell Vostro 270 (Ivy Bridge) CB:89412, using the following additions:
Makefile.c
ramstage-$(CONFIG_DRIVERS_OPTION_CFR) += cfr.c
cfr.c
/* SPDX-License-Identifier: GPL-2.0-only */
#include <boot/coreboot_tables.h>
#include <console/cfr.h>
#include <drivers/option/cfr_frontend.h>
#include <northbridge/intel/sandybridge/cfr.h>
#include <southbridge/intel/bd82x6x/cfr.h>
// copy pasted ht section in src/northbridge/intel/sandybridge/cfr.h
//static const struct sm_object hyper_threading = SM_DECLARE_BOOL({
// .opt_name = "hyper_threading",
// .ui_name = "Hyper-Threading",
// .ui_helptext = "Enable or disable Hyper-Threading",
// .default_value = true,
//});
static struct sm_obj_form system = {
.ui_name = "System",
.obj_list = (const struct sm_object *[]){&debug_level, &gfx_uma_size,
&me_state,
&me_state_prev, &nmi,
&hyper_threading, &sata_mode,
NULL},
};
static struct sm_obj_form power = {
.ui_name = "Power",
.obj_list = (const struct sm_object *[]){&power_on_after_fail, NULL},
};
static struct sm_obj_form *sm_root[] = {&system, &power, NULL};
void mb_cfr_setup_menu(struct lb_cfr *cfr_root)
{
cfr_write_setup_menu(cfr_root, sm_root);
}
Kconfig
select DRIVERS_OPTION_CFR_ENABLED if PAYLOAD_EDK2 && SMMSTORE
If payload is EDK2(MrChromebox2605) on coreboot 26.06-645-gc6c871909a12-dirty and driver SMMSTORE is enabled so Secureboot is also included it is possible to enable DRIVERS_OPTION_CFR which auto enables DRIVERS_EFI_VARIABLE_STORE.
Do you also need to specify "Option backend to use" like CMOS, since after I enabled CFR driver as build option it shows a additional make menu option in this section which I have tried with and without.
USE_UEFI_VARIABLE_STORE
( ) Use UEFI variable-store in SPI flash as option backend
Have tried adjusting debug_level, hyper_threading, power_on_after_fail and they all remain the same.
Any hints, the cmos options do work for this board though?
WS Updated by Walter Sonius 1 day ago
reserved
NC Updated by Nicholas Chin about 22 hours ago
Walter Sonius wrote:
Do you also need to specify "Option backend to use" like CMOS, since after I enabled CFR driver as build option it shows a additional make menu option in this section which I have tried with and without.
Yes, UEFI variable store needs to be enabled as the option backend for it to work (CONFIG_USE_UEFI_VARIABLE_STORE)
Maybe try adding some debug messages to drivers/efi/option.c:get_uint_option() and see when it gets called and if it's reading the options correctly?