On 14.11.2019 08:48, Jorge Fernandez Monteagudo wrote:
> Hi Michal! 
>
>> Under config VBOOT. And define the CMOS offset for vboot in Kconfig as
>> in the patch linked earlier. AGESA binary typically have to reside under
>> certain offset in the binary, so you have to pass the AGESA name to be
>> added to RO partition only in menuconfig of vboot, since it should
>> probably reside there.
> Maybe do you refer to the AMD firmware instead of AGESA? I've seen in
> src/soc/amd/stoneyridge/Makefile.inc when the AMDFW_OUTSIDE_CBFS
> the amdfw.rom is the firmware to copy in a fixed position inside ROM. In
> src/soc/amd/stoneyridge/Kconfig you can see that they define RO_REGION_ONLY
> with the default 'apu/amdfw'
No, AMDFW which comprises PSP firmware and other components lies at
offset 0x20000 from the beginning of the flash (typically). AGESA is a
silicon initialization code which lies on different offsets (usually
0xFFE00000) and has to be in the RO region, because this is the range of
addresses it fits to (its nearly the bottom of the flash). Putting AGESA
in RW_A is impossible, because RW_A is not in the range of addresses
where AGESA should be placed, thus the previous error.
>
> Anyway, I've tried changing the flash size to 16MB to see the component's
> distribution. I've modified your file a little:
>
> FLASH@0xff800000 0x1000000 {
>     RW_UNUSED@0x0 0x20000
>     AMDFW(PRESERVE)@0x20000 0x90000
>     SI_BIOS@0xb0000 0xF50000 {
>         RW_SECTION_A 0x500000 {
>             VBLOCK_A 0x10000
>             FW_MAIN_A(CBFS)
>             RW_FWID_A 0x40
>         }
>         CONSOLE 0x10000
>         SMMSTORE(PRESERVE) 0x40000
>         RW_VPD(PRESERVE) 0x4000
>         WP_RO {
>             FMAP@0x0 0x800
>             RO_FRID 0x40
>             RO_FRID_PAD 0x7c0
>             RO_VPD(PRESERVE) 0x4000
>             GBB 0x1e000
>             COREBOOT(CBFS)
>         }
>     }
> }
If You do not have 16MB flash you won't be able to flash it with
flashrom. Secondly the base address of 0xff80000 should change in such
situation.
>
> Now, the CBFS is created ok:
>
> Created CBFS (capacity = 10325976 bytes)
> Created CBFS (capacity = 5177240 bytes)
>     CBFS       AGESA
>     CBFS       fallback/romstage
>     CBFS       fallback/ramstage
>     CBFS       cmos_layout.bin
>     CBFS       pci1002,9874.rom
>     CBFS       fallback/dsdt.aml
>     CBFS       fallback/payload
>     CBFS       AGESA
>     CBFS       fallback/ramstage
>     CBFS       pci1002,9874.rom
>     CBFS       fallback/dsdt.aml
>     CBFS       fallback/payload
>     DD         Adding AMD Firmware
>     CBFS       coreboot.rom
>     CBFSLAYOUT  coreboot.rom
>
> This image contains the following sections that can be manipulated with this 
> tool:
>
> 'RW_UNUSED' (size 131072, offset 0)
> 'AMDFW' (preserve, size 589824, offset 131072)
> 'VBLOCK_A' (size 65536, offset 720896)
> 'FW_MAIN_A' (CBFS, size 5177280, offset 786432)
> 'RW_FWID_A' (size 64, offset 5963712)
> 'CONSOLE' (size 65536, offset 5963776)
> 'SMMSTORE' (preserve, size 262144, offset 6029312)
> 'RW_VPD' (preserve, size 16384, offset 6291456)
> 'RO_FRID' (size 64, offset 6309888)
> 'RO_FRID_PAD' (size 1984, offset 6309952)
> 'RO_VPD' (preserve, size 16384, offset 6311936)
> 'GBB' (size 122880, offset 6328320)
> 'COREBOOT' (CBFS, size 10326016, offset 6451200)
It doesn't mean it will work...
> It is possible to perform either the write action or the CBFS add/remove 
> actions on every section listed above.
> To see the image's read-only sections as well, rerun with the -w option.
>     CBFSPRINT  coreboot.rom
>
> FMAP REGION: COREBOOT
> Name                           Offset     Type           Size   Comp
> cbfs master header             0x0        cbfs header        32 none
> fallback/romstage              0x80       stage           65316 none
> fallback/ramstage              0x10040    stage           68406 none
> cmos_layout.bin                0x20bc0    cmos_layout      1548 none
> pci1002,9874.rom               0x21240    optionrom       64512 none
> fallback/dsdt.aml              0x30ec0    raw              6656 none
> fallback/payload               0x32940    simple elf    2627360 none
> (empty)                        0x2b40c0   null          5394136 none
> AGESA                          0x7d8fc0   raw            690436 none
> (empty)                        0x881940   null          1405592 none
> bootblock                      0x9d8c00   bootblock         944 none
> FMAP REGION: FW_MAIN_A
> Name                           Offset     Type           Size   Comp
> fallback/ramstage              0x0        stage           68406 none
> pci1002,9874.rom               0x10b80    optionrom       64512 none
> fallback/dsdt.aml              0x20800    raw              6656 none
> fallback/payload               0x22280    simple elf    2627360 none
> (empty)                        0x2a3a00   null           312664 none
> AGESA                          0x2eff80   raw            690436 none
> (empty)                        0x398900   null          1406616 none
>
Yes, you can add or remove components freely with cbfstool.
> Here you can see the line with the copy of the firmware:
>
>     DD         Adding AMD Firmware
>
> The code is in 'southbridge/amd/pi/hudson/Makefile.inc' and they do:
>
> dd if=$(obj)/amdfw.rom \
>               of=$(obj)/coreboot.pre conv=notrunc bs=1 seek=131072 >/dev/null 
> 2>&1
>
> to copy 'amdfw.rom' to the AMDFW(PRESERVE) in the flashmap.
>
>
> I think in a 8MB flash there is no room to the CBFS and a copy in the 
> RW_SECTION_A.
> Is it possible to enable VBOOT and don't have a RW_SECTION_A? I'm not 
> interested in
> recover the firmware...

Not exactly. This code puts AMDFW always at offset of 0x20000 from the
beginning of flash. It has nothing to do with CBFS if AMDFW_OUTSIDE_CBFS
is selected.

You need at least 1 RW slot, otherwise:
https://review.coreboot.org/c/coreboot/+/34977
you will end in a boot loop.

Regards,
Michał

>
> Thanks
> Jorge
> _______________________________________________
> coreboot mailing list -- coreboot@coreboot.org
> To unsubscribe send an email to coreboot-le...@coreboot.org

-- 
Michał Żygowski
Firmware Engineer
http://3mdeb.com | @3mdeb_com

_______________________________________________
coreboot mailing list -- coreboot@coreboot.org
To unsubscribe send an email to coreboot-le...@coreboot.org

Reply via email to