On 6/23/21 1:40 PM, Matt DeVillier wrote: > I'm an idiot and made a stupid math error when I calculated the size > of the SI_BIOS region. 0xF7F000 - 0x1000 is 0xF7E000, not 0xF6F000. > > https://review.coreboot.org/c/coreboot/+/55815 fixes it >
Ha! I was a little suspicious of the suggestive pattern, 0xF7F000 - 0x10000 = 0xF6F000 vs 0xF7F000 - 0x1000 = 0xF7E000. But, I missed the hard-coded "SI_BIOS@0x1000 0xf6f000". So, I see src/mainboard/google/octopus/default.fmd, specifically, is determining here. Still, many questions from those of us less familiar. What is the meaning of "SI"? Does "SI_BIOS" have the same usage as "BIOS"? Coreboot "BIOS" is not the same thing as original "BIOS". <rant>...</rant> Are there any "official" specifications for coreboot fmap format? Wish me luck. I should have a functional bootrom image now! Thanks James > On Wed, Jun 23, 2021 at 1:48 PM James Feeney <[email protected]> wrote: >> >> On 6/22/21 11:13 PM, Matt DeVillier wrote: >>> On Tue, Jun 22, 2021 at 10:59 PM James Feeney <[email protected]> wrote: >>>> >>>> On 6/22/21 4:32 PM, Matt DeVillier wrote: >>>>> I'm not sure why you enabled so many things not selected in my >>>>> defconfig -- that's your issue. >>>> >>>> Ha! Quite! Bit of a learning curve, though... >>>> >>>> Ok, thanks for the clarifications - lots of things I do not need. >>>> >>>>> Use: >>>>> >>>>> CONFIG_VENDOR_GOOGLE=y >>>>> CONFIG_PAYLOAD_CONFIGFILE="../configubootJun14-2" >>>>> # CONFIG_POST_DEVICE is not set >>>>> CONFIG_BOARD_GOOGLE_CASTA=y >>>>> CONFIG_INCLUDE_NHLT_BLOBS=y >>>>> CONFIG_NEED_IFWI=y >>>>> CONFIG_HAVE_IFD_BIN=y >>>>> CONFIG_ADD_FSP_BINARIES=y >>>>> CONFIG_FSP_M_FILE="3rdparty/blobs/mainboard/$(MAINBOARDDIR)/fspm.bin" >>>>> CONFIG_FSP_S_FILE="3rdparty/blobs/mainboard/$(MAINBOARDDIR)/fsps.bin" >>>>> CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y >>>>> CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/mainboard/$(CONFIG_MAINBOARD_DIR)/cpu_microcode_blob.bin" >>>>> CONFIG_RUN_FSP_GOP=y >>>>> CONFIG_PAYLOAD_UBOOT=y >>>>> CONFIG_UBOOT_MASTER=y >>>>> >>>>> save as .config, then make olddefconfig. >>>>> >>>>> CAR NEM (non-evict mode) is default, leave that. >>>>> >>>>> No reason to select ChromeEC RTC, it's not supported. >>>>> >>>>> WiFi SAR is only used by ChromeOS, only selectable when CONFIG_CHROMEOS=y >>>>> >>>>> secondary payloads are almost certainly not useful with u-boot as >>>>> primary payload. >>>>> >>>>> I don't get any size mismatch errors when building for CASTA using the >>>>> default FMAP. Have you modified your IFD at all? >>>> >>>> I have not touched it. >>>> >>>> Did you *actually* run ifdtool validate? Is your build, with no size >>>> mismatch, recent? >>>> >>>> Using your config, and following your instructions, I get still the same >>>> result: >>>> >>>> $ util/ifdtool/ifdtool -t build/coreboot.rom >>>> File build/coreboot.rom is 16777216 bytes >>>> Peculiar firmware descriptor, assuming Ibex Peak compatibility. >>>> Region mismatch between bios and SI_BIOS >>>> Descriptor region bios: >>>> offset: 0x00001000 >>>> length: 0x00f7e000 >>>> FMAP area SI_BIOS: >>>> offset: 0x00001000 >>>> length: 0x00f6f000 >>>> >>>> I see now that I need *not* enable "Validate Intel firmware descriptor", >>>> and the compile will complete without error. >>>> >>>> But - I still have to wonder about that: "This config enables validating >>>> the Intel firmware descriptor against the fmap layout." >>>> >>>> Does that not matter? Is that another "ChromeOS only" thing? >>> >>> This issue has nothing to do with ChromeOS. >>> >>>> >>>> They differ in size by 60kiB. Hmm - "SI-BIOS" is one of the read-only >>>> sections given by "cbfstool /build/coreboot.rom layout -w", as is "FMAP". >>>> "BIOS" is one of the sections given by "ifdtool -d build/coreboot.rom". >>>> They just happen to have different sizes. It looks like "FMAP" is >>>> specifically a coreboot thing? The "SI" is an abbreviation for what? >>>> >>>> As I understand, the IFD section was simply copied from the recovery file, >>>> and the FMAP section was generated from scratch, in the coreboot compile. >>>> Did coreboot make an error in not matching the given IFD? >>> >>> the FMAP isn't generated from scratch, it's the default.fmd file in >>> the google/octopus directory. If you look at that file (and at >>> chromeos.fms), you can see why the layout and sizes are the way they >>> are. >>> >> >> Aha! Ok, thanks for that. >> >> src/mainboard/google/octopus/chromeos.fmd >> >> # BIOS --> 4K to 0xf7f000 >> >> >>>> >>>> Since the IFD BIOS region is larger in size than the FMAP SI-BIOS region, >>>> does it matter that the sizes are different? The IFD Intel ME, GbE, and >>>> Platform Data regions are all unused. There is nothing there to >>>> "mis-read", because of any potential location mistake - unless something >>>> tries to calculate a location "backward", from the end of the IFD BIOS >>>> region. Could the 60kiB size difference represent some kind of "padding"? >>> >>> I'm curious about the IFD you're using. Dumping the IFD from >>> bios-casta.ro-11297-83-3.rw-11297-83-3.bin (extracted from the octopus >>> recovery image), the IFD layout matches that of the default.fmd used >>> by coreboot. >>> >> >> Uhm - I'm confused. Using the value given in >> src/mainboard/google/octopus/chromeos.fmd, and reading the *comment*, which >> describes the BIOS region as from 0x1000 to 0xf7f000, then subtracting, >> gives the *size* of the - presumably - fmap "SI-BIOS" region as 0xf7e000, >> which exactly matches the value reported by ifdtool from the ChromeOS >> recovery bios file provided IFD BIOS region. >> >> There is no discrepancy there - though, of course, this conclusion is >> presuming that the comment correctly interprets the meaning of the "BIOS" >> region, as everything between the "SI-DESC" region and the >> "DEVICE_EXTENSION" region, and that the chromeos.fmd file use of the term >> "BIOS" means exactly "SI-BIOS", as the term is expressed by cbfstool. >> >> Incidentally, when I apply the ifdtool "validate" function to the ChromeOS >> recovery bios file, there is no output returned. >> >> Is that the "correct" output when the validation is successful? If so, >> that's a really bad user interface design for ifdtool, since it is >> impossible to distinguish "no output" from "fails silently", as in "broken", >> especially given the otherwise "chatty" output, and the cryptic comment >> "Peculiar firmware descriptor", which casts doubt upon the result given. Is >> "Peculiar firmware descriptor" a kind of "error"? >> >> Using the oldest recovery bios file that I have gives: >> >> $ ifdtool -t images/bios-casta.ro-11297-193-0.rw-11297-217-0.bin >> File images/bios-casta.ro-11297-193-0.rw-11297-217-0.bin is 16777216 bytes >> Peculiar firmware descriptor, assuming Ibex Peak compatibility. >> [ That's the complete output. ] >> >> Using the current recovery bios file gives the same truncated output: >> >> $ ifdtool -t images/bios-casta.ro-11297-222-0.rw-11297-242-0.bin >> File images/bios-casta.ro-11297-222-0.rw-11297-242-0.bin is 16777216 bytes >> Peculiar firmware descriptor, assuming Ibex Peak compatibility. >> >> >> To introspect further, there is the "fmap_decode" tool from the "flashmap" >> package, at >> https://chromium.googlesource.com/chromiumos/third_party/flashmap. >> >> $ fmap_decode build/coreboot.rom >> fmap_signature="0x5f5f464d41505f5f" fmap_ver_major="1" fmap_ver_minor="1" >> fmap_base="0x0000000000000000" fmap_size="0x1000000" fmap_name="FLASH" >> fmap_nareas="13" >> area_offset="0x00000000" area_size="0x00001000" area_name="SI_DESC" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00001000" area_size="0x00f6f000" area_name="SI_BIOS" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00001000" area_size="0x001ff000" area_name="IFWI" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00a5f000" area_size="0x00040000" area_name="SMMSTORE" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00a9f000" area_size="0x00021000" >> area_name="UNIFIED_MRC_CACHE" area_flags_raw="0x00" area_flags="" >> area_offset="0x00a9f000" area_size="0x00010000" >> area_name="RECOVERY_MRC_CACHE" area_flags_raw="0x00" area_flags="" >> area_offset="0x00aaf000" area_size="0x00010000" area_name="RW_MRC_CACHE" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00abf000" area_size="0x00001000" area_name="RW_VAR_MRC_CACHE" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00ac0000" area_size="0x00000300" area_name="FMAP" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00ac0300" area_size="0x00460d00" area_name="COREBOOT" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00f21000" area_size="0x0004f000" area_name="BIOS_UNUSABLE" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00f7f000" area_size="0x00080000" area_name="DEVICE_EXTENSION" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00fff000" area_size="0x00001000" area_name="UNUSED_HOLE" >> area_flags_raw="0x00" area_flags="" >> >> Again, interpreting the comment in the chromeos.fmd file, everything between >> 0x00001000 and 0x00f7f000 does, in fact, have size 0x00f7e000, exactly >> matching the value as stated in the IFD. However, there is also an explicit >> "SI-BIOS" region given here, which does *not* correspond to the comment in >> the chromeos.fmd file, and which here has the size given as 0x00f6f000 != >> 0x00f7e000. >> >> Similarly, >> >> $ cbfstool build/coreboot.rom layout -w >> This image contains the following sections that can be accessed with this >> tool: >> >> 'SI_DESC' (size 4096, offset 0) >> 'SI_BIOS' (read-only, size 16183296, offset 4096) >> 'IFWI' (size 2093056, offset 4096) >> 'SMMSTORE' (size 262144, offset 10874880) >> 'UNIFIED_MRC_CACHE' (read-only, size 135168, offset 11137024) >> 'RECOVERY_MRC_CACHE' (size 65536, offset 11137024) >> 'RW_MRC_CACHE' (size 65536, offset 11202560) >> 'RW_VAR_MRC_CACHE' (size 4096, offset 11268096) >> 'FMAP' (read-only, size 768, offset 11272192) >> 'COREBOOT' (CBFS, size 4590848, offset 11272960) >> 'BIOS_UNUSABLE' (size 323584, offset 15863808) >> 'DEVICE_EXTENSION' (size 524288, offset 16248832) >> 'UNUSED_HOLE' (size 4096, offset 16773120) >> >> ... >> >> >> The offset to the start of both the BIOS region and the SI_BIOS region are >> the same, given as 0x00001000. Taking the *size* of the SI_BIOS region, >> 0x00f6f000, and adding the offset, 0x00001000, then gives the offset to the >> beginning of the region immediately following the SI_BIOS region, 0x00f6f000 >> + 0x00001000 = 0x00f70000. >> >> Compare this value to the offset to the beginning of the region immediately >> following the "BIOS_UNUSABLE" region, 0x00f21000 + 0x0004f000 = 0x00f70000. >> We shall note that they are exactly the same, 0x00f70000 = 0x00f70000. >> >> There exists, then, an "undesignated" region, implied by the coreboot >> flashmap format, *between* the end of the "SI_BIOS" region, and the >> beginning of the "DEVICE_EXTENSION" region, from 0x00f70000 to 0x00f7f000, >> of size 0xf000. >> >> (0x00f7f000 - 0x00f70000) = (0x00f7e000 - 0x00f6f000) = 0xf000 >> >> We may also note that there is a discrepancy between the definition of the >> "BIOS_UNUSABLE" region, as given in >> src/mainboard/google/octopus/chromeos.fmd, and this same region, as reported >> for the actual coreboot.rom file, as generated from the coreboot compile. >> >> chromeos.fmd >> BIOS_UNUSABLE@0xf30000 0x4f000 >> >> fmap_decode build/coreboot.rom >> area_offset="0x00f21000" area_size="0x0004f000" area_name="BIOS_UNUSABLE" >> area_flags_raw="0x00" area_flags="" >> >> We may note that the region sizes given are the same, but that the entry >> offsets are different. >> >> Comparing these offsets, we see this same discrepancy, 0xf000, here a result >> of a discrepancy in the offset location of this "BIOS_UNUSABLE" region, >> 0xf30000, as given in the chromeos.fmd file, when compared to the location >> of this region in the actually created coreboot.rom file, 0x00f21000. >> >> 0xf30000 - 0x00f21000 = 0xf000 >> >> >> Incidentally, we may note that there exists a similar flashmap file, >> src/mainboard/google/octopus/default.fmd, in which the definition of the >> "BIOS_UNUSABLE" regiion is not so precise, with no specific entry point >> offset defined: >> >> src/mainboard/google/octopus/default.fmd >> >> BIOS_UNUSABLE 0x4f000 >> >> >> We may also note that the given size of the "SI_BIOS" region, 0x00f6f000, >> violates the rule described in these chromeos.fmd and default.fmd files: >> >> # Currently, it is required that the BIOS region be a multiple of >> 8KiB. >> >> 0x00f6f000 / 0x2000 -> 16183296 / 8192 = 1975.5 >> >> We then note that the difference in *size* between the "BIOS" and "SI_BIOS" >> regions, 0x00f7e000 - 0x00f6f000 = 0xf000, does not seem to have any clear >> relationship to the difference in the *end points* of these regions, >> 0x00f7f000 and 0xf70000, respectively. The *size* provided for the actual >> "BIOS" region does conform to the rule. >> >> And finally, we may note additionally in the comment: >> >> # ... Since the >> # descriptor at the beginning uses 4K and BIOS starts at an offset of >> # 4K, a hole of 4K is created towards the end of the flash to >> compensate >> # for the size requirement of BIOS region. >> and >> UNUSED_HOLE@0xfff000 0x1000 >> >> but, while the "undesignated" region of size of 0xf000 bytes is not an even >> multiple of 0x2000, being instead 7.5 multiples, it also encompasses a >> region with 6 multiples of 0x2000, such that the rule itself does not >> provide any justification for having an "undesignated" region of size >> 0xf000. The "undesignated" region size of precisely 0xf000 bytes does not >> seem to have any obvious motivation or rationale. >> >> >> These results, then, raise questions: >> >> Is the location of the "BIOS_UNUSABLE" region, as created in the >> coreboot.rom, in error, beginning 0xf000 bytes below where it is "suppose" >> to have been located, according to the chromeos.fmd specification file? >> >> Why has this "undesgnated" 0xf000 byte region not, instead, been allocated >> to the "COREBOOT" region? >> >> Are mystery "undesignated" regions in the rom layout "allowed/legal", under >> the rules of the coreboot fmap format? >> >> Is this "undesignated" region a mistake? >> >> Is there some error in the chromeos.fmd file, or in the >> google/octopus/default.fmd file? >> >> Is the coreboot fmap format specification too ambiguous to provide precise >> results? >> >> What is the definition of "SI_BIOS" region, precisely? >> What is the definition of "BIOS" region, precisely? >> >> Why is "ifdtool --validate" comparing the size of the "BIOS" region to the >> size of the "SI_BIOS" region? >> Is this comparison a mistake? Is ifdtool "broken"? Or, was illuminating >> this kind of discrepancy the whole point of the validate function? >> >> What, then, is the precise meaning of the implied state "ifdtool validated"? >> >> Is the definition of the "SI-BIOS" region suppose to include the area to the >> *end* of the "BIOS_UNUSABLE" region, or instead, to the *beginning* of the >> "DEVICE_EXTENSION" region? >> >> Who, or what, or where, is the "official" source of these definitions? >> >> >> It may be important to note that there exists no such "SI_BIOS" region in >> the ChromeOS recovery bios file: >> >> $ fmap_decode images/bios-casta.ro-11297-222-0.rw-11297-242-0.bin >> fmap_signature="0x5f5f464d41505f5f" fmap_ver_major="1" fmap_ver_minor="1" >> fmap_base="0x0000000000000000" fmap_size="0x1000000" fmap_name="FLASH" >> fmap_nareas="36" >> area_offset="0x00000000" area_size="0x00400000" area_name="WP_RO" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00000000" area_size="0x00001000" area_name="SI_DESC" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00001000" area_size="0x001ff000" area_name="IFWI" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00200000" area_size="0x00004000" area_name="RO_VPD" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00204000" area_size="0x001fc000" area_name="RO_SECTION" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00204000" area_size="0x00000800" area_name="FMAP" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00204800" area_size="0x00000040" area_name="RO_FRID" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00204840" area_size="0x000007c0" area_name="RO_FRID_PAD" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00205000" area_size="0x001bb000" area_name="COREBOOT" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x003c0000" area_size="0x00040000" area_name="GBB" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00400000" area_size="0x00030000" area_name="MISC_RW" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00400000" area_size="0x00021000" area_name="RW_PRESERVE" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00400000" area_size="0x00021000" >> area_name="UNIFIED_MRC_CACHE" area_flags_raw="0x00" area_flags="" >> area_offset="0x00400000" area_size="0x00010000" >> area_name="RECOVERY_MRC_CACHE" area_flags_raw="0x00" area_flags="" >> area_offset="0x00410000" area_size="0x00010000" area_name="RW_MRC_CACHE" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00420000" area_size="0x00001000" area_name="RW_VAR_MRC_CACHE" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00421000" area_size="0x00003000" area_name="RW_ELOG" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00424000" area_size="0x00004000" area_name="RW_SHARED" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00424000" area_size="0x00002000" area_name="SHARED_DATA" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00426000" area_size="0x00002000" area_name="VBLOCK_DEV" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00428000" area_size="0x00002000" area_name="RW_VPD" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x0042a000" area_size="0x00005000" area_name="RW_NVRAM" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x0042f000" area_size="0x00001000" area_name="FPF_STATUS" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00430000" area_size="0x00480000" area_name="RW_SECTION_A" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00430000" area_size="0x00010000" area_name="VBLOCK_A" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00440000" area_size="0x0046ffc0" area_name="FW_MAIN_A" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x008affc0" area_size="0x00000040" area_name="RW_FWID_A" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x008b0000" area_size="0x00480000" area_name="RW_SECTION_B" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x008b0000" area_size="0x00010000" area_name="VBLOCK_B" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x008c0000" area_size="0x0046ffc0" area_name="FW_MAIN_B" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00d2ffc0" area_size="0x00000040" area_name="RW_FWID_B" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00d30000" area_size="0x00040000" area_name="SMMSTORE" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00d70000" area_size="0x001c0000" area_name="RW_LEGACY" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00f30000" area_size="0x0004f000" area_name="BIOS_UNUSABLE" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00f7f000" area_size="0x00080000" area_name="DEVICE_EXTENSION" >> area_flags_raw="0x00" area_flags="" >> area_offset="0x00fff000" area_size="0x00001000" area_name="UNUSED_HOLE" >> area_flags_raw="0x00" area_flags="" >> >> >> Thanks >> James >> >> >>>> By the way, do I need to be concerned with the final note at the end of >>>> the compile, "Written area will abut bottom of target region: any unused >>>> space will keep its current contents"? A 16MiB file written onto a 16MiB >>>> rom doesn't leave any "unused" space. Or, is this "unused space" >>>> referring to "unused" and "unusable" regions described in the FMAP layout? >>>> >>>> I should be able to write this coreboot.rom file directly to the boot rom >>>> now? >>> >>> I would resolve the IFD/FMAP discrepancy first. The IFD from the >>> firmware images for all the octopus based boards I'm seeing here use >>> the same BIOS region size as the SI_BIOS region in the FMAP. >>> >>>> >>>> >>>> Thanks >>>> James >>>> >>>>> >>>>> On Tue, Jun 22, 2021 at 4:10 PM James Feeney <[email protected]> wrote: >>>>>> >>>>>> defconfig below, but: >>>>>> >>>>>> $ grep -i fsp_car defconfig >>>>>> CONFIG_USE_APOLLOLAKE_FSP_CAR=y >>>>>> >>>>>> $ grep -i fsp_car .config >>>>>> CONFIG_USE_APOLLOLAKE_FSP_CAR=y >>>>>> CONFIG_FSP_CAR=y >>>>>> >>>>>> >>>>>> Hmm - I must have done that because it sounded "safe". Which of these >>>>>> choices is "correct"? >>>>>> >>>>>> src/soc/intel/apollolake/Kconfig >>>>>> >>>>>> >>>>>> choice >>>>>> prompt "Cache-as-ram implementation" >>>>>> default CAR_CQOS if !SOC_INTEL_GEMINILAKE >>>>>> default CAR_NEM >>>>>> help >>>>>> This option allows you to select how cache-as-ram (CAR) is set >>>>>> up. >>>>>> >>>>>> config CAR_NEM >>>>>> bool "Non-evict mode" >>>>>> select SOC_INTEL_COMMON_BLOCK_CAR >>>>>> select INTEL_CAR_NEM >>>>>> help >>>>>> Traditionally, CAR is set up by using Non-Evict mode. This >>>>>> method >>>>>> does not allow CAR and cache to co-exist, because cache fills >>>>>> are >>>>>> block in NEM mode. >>>>>> >>>>>> config CAR_CQOS >>>>>> bool "Cache Quality of Service" >>>>>> select SOC_INTEL_COMMON_BLOCK_CAR >>>>>> select INTEL_CAR_CQOS >>>>>> help >>>>>> Cache Quality of Service allows more fine-grained control of >>>>>> cache >>>>>> usage. As result, it is possible to set up portion of L2 cache >>>>>> for >>>>>> CAR and use remainder for actual caching. >>>>>> >>>>>> config USE_APOLLOLAKE_FSP_CAR >>>>>> bool "Use FSP CAR" >>>>>> select FSP_CAR >>>>>> help >>>>>> Use FSP APIs to initialize & tear down the Cache-As-Ram. >>>>>> >>>>>> endchoice >>>>>> >>>>>> >>>>>> >>>>>> "Cache Quality of Service" seems more functional than "Non-Evict mode", >>>>>> but is it "better"? >>>>>> >>>>>> Selecting *either* CONFIG_CAR_CQOS=y or the default CONFIG_CAR_NEM=y, >>>>>> the compile seems mostly successful, but then ends the same, with: >>>>>> >>>>>> ... >>>>>> Platform is: glk >>>>>> File build/coreboot.pre is 16777216 bytes >>>>>> Region mismatch between bios and SI_BIOS >>>>>> Descriptor region bios: >>>>>> offset: 0x00001000 >>>>>> length: 0x00f7e000 >>>>>> FMAP area SI_BIOS: >>>>>> offset: 0x00001000 >>>>>> length: 0x00f6f000 >>>>>> make: *** [src/southbridge/intel/common/firmware/Makefile.inc:39: >>>>>> add_intel_firmware] Error 1 >>>>>> >>>>>> >>>>>> I need help with that. >>>>>> >>>>>> >>>>>> Also, though I'm not sure what this does, coreboot does not like my >>>>>> enabling CONFIG_EC_GOOGLE_CHROMEEC_RTC, which then gives: >>>>>> >>>>>> /var/src/coreboot/coreboot/util/crossgcc/xgcc/bin/i386-elf-ld.bfd: >>>>>> build/bootblock/ec/google/chromeec/ec.o: in function `rtc_get': >>>>>> /var/src/coreboot/coreboot/src/ec/google/chromeec/ec.c:776: multiple >>>>>> definition of `rtc_get'; >>>>>> build/bootblock/drivers/pc80/rtc/mc146818rtc.o:/var/src/coreboot/coreboot/src/drivers/pc80/rtc/mc146818rtc.c:225: >>>>>> first defined here >>>>>> make: *** [src/arch/x86/Makefile.inc:92: >>>>>> build/cbfs/fallback/bootblock.debug] Error 1 >>>>>> >>>>>> >>>>>> >>>>>> By the way, this chromebook recovery file includes a distinct SAR file >>>>>> that can be extracted from the COREBOOT section, but the SAR file-path >>>>>> option is not present in the config menu, using the current Kconfig: >>>>>> >>>>>> src/drivers/wifi/generic/Kconfig >>>>>> >>>>>> config USE_SAR >>>>>> bool >>>>>> default n >>>>>> help >>>>>> Enable it when wifi driver uses SAR configuration feature. >>>>>> ... >>>>>> >>>>>> config WIFI_SAR_CBFS_FILEPATH >>>>>> string "The cbfs file which has WIFI SAR defaults" >>>>>> depends on USE_SAR >>>>>> default "" >>>>>> >>>>>> Adding any kind of "prompt text" after "bool" causes the option to >>>>>> appear, and then the SAR file-path can be added. >>>>>> >>>>>> Is this a mistake in the Kconfig? Or, what should be done with this SAR >>>>>> file? >>>>>> >>>>>> Coreboot does seem to properly include my SAR file, since the >>>>>> coreboot.pre wifi_sar_defaults.hex file exactly matches the SAR file I >>>>>> specified in the WIFI_SAR_CBFS_FILEPATH. >>>>>> >>>>>> >>>>>> Thanks >>>>>> James >>>>>> >>>>>> $ cat defconfig >>>>>> CONFIG_ANY_TOOLCHAIN=y >>>>>> CONFIG_VENDOR_GOOGLE=y >>>>>> CONFIG_MAINBOARD_VENDOR="Octopus" >>>>>> CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="Coreboot" >>>>>> # CONFIG_POST_IO is not set >>>>>> CONFIG_PAYLOAD_CONFIGFILE="../configubootJun14-2" >>>>>> # CONFIG_POST_DEVICE is not set >>>>>> CONFIG_BOARD_GOOGLE_CASTA=y >>>>>> CONFIG_INCLUDE_NHLT_BLOBS=y >>>>>> CONFIG_USE_LEGACY_8254_TIMER=y >>>>>> CONFIG_NEED_IFWI=y >>>>>> CONFIG_HAVE_IFD_BIN=y >>>>>> CONFIG_ADD_FSP_BINARIES=y >>>>>> CONFIG_FSP_M_FILE="3rdparty/blobs/mainboard/$(MAINBOARDDIR)/fspm.bin" >>>>>> CONFIG_FSP_S_FILE="3rdparty/blobs/mainboard/$(MAINBOARDDIR)/fsps.bin" >>>>>> CONFIG_CAR_CQOS=y >>>>>> # CONFIG_PAVP is not set >>>>>> CONFIG_X2APIC_RUNTIME=y >>>>>> CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y >>>>>> CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/mainboard/$(CONFIG_MAINBOARD_DIR)/cpu_microcode_blob.bin" >>>>>> CONFIG_VALIDATE_INTEL_DESCRIPTOR=y >>>>>> CONFIG_ME_REGION_ALLOW_CPU_READ_ACCESS=y >>>>>> CONFIG_RUN_FSP_GOP=y >>>>>> CONFIG_TPM_PPI=y >>>>>> CONFIG_USE_SAR=y >>>>>> CONFIG_WIFI_SAR_CBFS_FILEPATH="3rdparty/blobs/mainboard/$(MAINBOARDDIR)/wifi_sar-bluebird.hex" >>>>>> CONFIG_DEFAULT_CONSOLE_LOGLEVEL_6=y >>>>>> CONFIG_PAYLOAD_UBOOT=y >>>>>> CONFIG_UBOOT_MASTER=y >>>>>> CONFIG_COREINFO_SECONDARY_PAYLOAD=y >>>>>> CONFIG_MEMTEST_SECONDARY_PAYLOAD=y >>>>>> >>>>>> $ util/cbfstool/cbfstool build/coreboot.pre print >>>>>> FMAP REGION: COREBOOT >>>>>> Name Offset Type Size Comp >>>>>> cbfs master header 0x0 cbfs header 32 none >>>>>> fallback/romstage 0x80 stage 59136 none >>>>>> cpu_microcode_blob.bin 0xe800 microcode 148480 none >>>>>> intel_fit 0x32c40 raw 80 none >>>>>> fallback/ramstage 0x32cc0 stage 110054 LZMA >>>>>> (257508 decompressed) >>>>>> config 0x4db00 raw 1184 none >>>>>> revision 0x4dfc0 raw 722 none >>>>>> build_info 0x4e2c0 raw 100 none >>>>>> fallback/dsdt.aml 0x4e380 raw 13347 none >>>>>> pt 0x51800 raw 20480 none >>>>>> pdpt 0x56840 raw 32 none >>>>>> dmic-2ch-48khz-16b.bin 0x56880 raw 3048 none >>>>>> dmic-4ch-48khz-16b.bin 0x574c0 raw 3048 none >>>>>> max98357-render-2ch-48khz-24b.bin 0x58100 raw 116 none >>>>>> dialog-2ch-48khz-24b.bin 0x581c0 raw 100 none >>>>>> fspm.bin 0x58280 fsp 417792 none >>>>>> vbt.bin 0xbe2c0 raw 1334 LZMA >>>>>> (5632 decompressed) >>>>>> wifi_sar_defaults.hex 0xbe840 raw 119 none >>>>>> (empty) 0xbe900 null 932 none >>>>>> fsps.bin 0xbecc0 fsp 192512 none >>>>>> fallback/postcar 0xedd00 stage 20388 none >>>>>> img/coreinfo 0xf2d00 simple elf 54609 none >>>>>> fallback/payload 0x100280 simple elf 249347 none >>>>>> img/memtest 0x13d0c0 simple elf 47497 none >>>>>> (empty) 0x148a80 null 3234276 none >>>>>> bootblock 0x45e480 bootblock 10288 none >>>>>> >>>>>> >>>>>> On 6/22/21 8:17 AM, Matt DeVillier wrote: >>>>>>> FSP-T isn't used for APL/GLK Chromebooks. Sounds like your .config is >>>>>>> selecting something it shouldn't. run `make savedefconfig` then post >>>>>>> the contents of the defconfig. Possible CONFIG_USE_APOLLOLAKE_FSP_CAR >>>>>>> is selected when it shouldn't be. >>>>>>> >>>>>>> On Mon, Jun 21, 2021 at 9:17 PM James Feeney <[email protected]> wrote: >>>>>>>> >>>>>>>> $ cat defconfig >>>>>>>> ... >>>>>>>> CONFIG_ADD_FSP_BINARIES=y >>>>>>>> ... >>>>>>>> >>>>>>>> There is *no* "fspt.bin" file in this chromebook recovery bios file >>>>>>>> used as source. >>>>>>>> >>>>>>>> >>>>>>>> $ make >>>>>>>> ... >>>>>>>> src/soc/intel/apollolake/fspcar.c:3:10: fatal error: FsptUpd.h: No >>>>>>>> such file or directory >>>>>>>> #include <FsptUpd.h> >>>>>>>> ^~~~~~~~~~~ >>>>>>>> compilation terminated. >>>>>>>> make: *** [Makefile:379: >>>>>>>> build/bootblock/soc/intel/apollolake/fspcar.o] Error 1 >>>>>>>> >>>>>>>> >>>>>>>> What Makefile is that? There is no such line 379. >>>>>>>> >>>>>>>> >>>>>>>> $ find -name FsptUpd.h >>>>>>>> ... >>>>>>>> ./3rdparty/fsp/ApolloLakeFspBinPkg/Include/FsptUpd.h >>>>>>>> ... >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> $ less src/soc/intel/alderlake/Kconfig >>>>>>>> ... >>>>>>>> config FSP_HEADER_PATH >>>>>>>> string "Location of FSP headers" >>>>>>>> default "src/vendorcode/intel/fsp/fsp2_0/alderlake/" >>>>>>>> >>>>>>>> >>>>>>>> $ less src/drivers/intel/fsp2_0/Kconfig >>>>>>>> ... >>>>>>>> >>>>>>>> config FSP_T_FILE >>>>>>>> string "Intel FSP-T (temp RAM init) binary path and filename" >>>>>>>> if !FSP_FULL_FD >>>>>>>> depends on ADD_FSP_BINARIES >>>>>>>> depends on FSP_CAR >>>>>>>> default "\$(obj)/Fsp_T.fd" if FSP_FULL_FD >>>>>>>> help >>>>>>>> The path and filename of the Intel FSP-T binary for this >>>>>>>> platform. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> $ make nconfig >>>>>>>> ... >>>>>>>> > Generic Drivers >>>>>>>> ... >>>>>>>> (src/vendorcode/intel/fsp/fsp2_0/glk) Location of FSP headers >>>>>>>> >>>>>>>> How did that get there? Not me... >>>>>>>> >>>>>>>> $ ll src/vendorcode/intel/fsp/fsp2_0/glk >>>>>>>> total 116 >>>>>>>> drwxr-x--- 2 james james 4096 Oct 29 2020 . >>>>>>>> drwxr-x--- 9 james james 4096 Jun 14 19:04 .. >>>>>>>> -rw-r----- 1 james james 45977 Oct 29 2020 FspmUpd.h >>>>>>>> -rw-r----- 1 james james 57332 Oct 29 2020 FspsUpd.h >>>>>>>> -rw-r----- 1 james james 1967 Oct 29 2020 FspUpd.h >>>>>>>> >>>>>>>> >>>>>>>> Why is src/soc/intel/apollolake/fspcar.c being built here? It seems >>>>>>>> that no fspt.bin file is needed. >>>>>>>> >>>>>>>> >>>>>>>> James >>>>>>>> _______________________________________________ >>>>>>>> coreboot mailing list -- [email protected] >>>>>>>> To unsubscribe send an email to [email protected] >>>>>>> _______________________________________________ >>>>>>> coreboot mailing list -- [email protected] >>>>>>> To unsubscribe send an email to [email protected] >>>>>>> >>> _______________________________________________ >>> coreboot mailing list -- [email protected] >>> To unsubscribe send an email to [email protected] >>> > _______________________________________________ > coreboot mailing list -- [email protected] > To unsubscribe send an email to [email protected] > _______________________________________________ coreboot mailing list -- [email protected] To unsubscribe send an email to [email protected]

