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

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]

Reply via email to