On Thu, Dec 14, 2023 at 6:07 PM James Feeney james@nurealm.net wrote:
To get it to update values to new default settings, run: make savedefconfig && make defconfig KBUILD_DEFCONFIG=${PWD}/defconfig The Kconfig in coreboot document is written with developers writing
Kconfig files in mind, but it's got a lot of useful information about how Kconfig works.
That helps. It's sort of a "process", building a ".config", rather than a single "make nconfig" and done.
since you're starting with my defconfigs, you don't need to change anything. They are the exact configs I use to build my release firmware and are known/tested working.
all this mess is because you're trying to use an existing config rather
than start from my defconfig, which is designed to work with my repo. The selections are currently guarded appropriately. ADD_FSP_BINARIES only needs to be selected if not using the 3rdparty/fsp repo (as it's selected by default there).
Ah! Ok, I see that now. I'm stumbling-around, trying to understand config options. It's overwhelming at first. And it requires learning to "trust the defaults".
you're not trusting the defaults, you're trusting my configs which are used to build working firmware. The defaults are not sane or there wouldn't be a dozen lines in the defconfigs and a handful more in my site-local/Kconfig
Some config options for a board are "required - don't touch!", and others really are "optional". I'm getting a sense of which is which, but there doesn't seem to really be a "config overview" or centralized guidance. And it's probably different for every different cpu architecture.
indeed, knowing what can/should be changed in many cases requires being a firmware developer with reasonable familiarity with coreboot, the platform, and the board in question
… Hmm - so, if the blob files referenced in site-local/Kconfig are not
extracted from the stock ChromeOS firmware images for GLK boards, and they are not built from source by coreboot, then where are they from?
they're extracted from another coreboot device which uses newer FSP
blobs than the Google ones. Which is why I use the newer headers.
Aha! Thanks for that.
Comparing the latest "bluebird" update, bios-casta.ro-11297-222-0.rw-11297-411-0.bin, from chromeos_15604.57.0_octopus_recovery_stable-channel_mp-v32.bin, and your newer FSP blobs, I see:
$ strings 2023Dec01/fsps.bin |grep octopus|head -n1
/build/octopus/tmp/portage/sys-boot/intel-glkfsp-0.0.1-r9/work/intel-glkfsp-0.0.1/Build/GeminilakeFspPkg/RELEASE_COREBOOT/IA32/GeminilakeFspPkg/FspHeader/FspHeader/OUTPUT/./FspHeader.dll
$ strings 3rdparty/blobs/mainboard/google/octopus/casta/fsps.bin | grep octopus | head -n1
/build/octopus/tmp/portage/sys-boot/intel-glkfsp-0.0.1-r8/work/intel-glkfsp-0.0.1/Build/GeminilakeFspPkg/RELEASE_COREBOOT/IA32/GeminilakeFspPkg/FspHeader/FspHeader/OUTPUT/./FspHeader.dll
The most recent bios has that "-r9", versus the "-r8". I expect that that refers to an even newer "release 9" versus a "release 8". And, this "-r9" should also work with the setting: CONFIG_FSP_HEADER_PATH="src/vendorcode/intel/fsp/fsp2_0/geminilake/ 2.2.3.1"
NO! those strings are simply build paths, they have no correlation to the version of headers which need to be used with a given binary/binaries. Google binaries use Google's headers. Intel's binaries use Intel's headers. Also, the binaries in my repo would not have anything resembling that build path as it's specific to a Google ChromeOS build system, and my binaries are not from a ChromeOS device.
TBF, this is unnecessarily confusing because Intel chose to not publicly release FSP headers/binaries for Geminilake (or Jasperlake).
Everything is set correctly in my repo so that a user who clones my repo/submodules and uses my build script will end up with a functional firmware image for a given board.
Is that correct?