Hi Andy,

On Fri, 25 Aug 2023 at 07:27, Andy Shevchenko
<andriy.shevche...@linux.intel.com> wrote:
>
> On Fri, Aug 25, 2023 at 04:25:29PM +0300, Andy Shevchenko wrote:
> > On Fri, Aug 25, 2023 at 04:17:58PM +0300, Andy Shevchenko wrote:
> > > On Fri, Aug 25, 2023 at 02:06:34PM +0300, Andy Shevchenko wrote:
> > > > On Thu, Aug 24, 2023 at 12:23:32PM -0600, Simon Glass wrote:
> > > > > Each board has its own way of creating this table. Rather than 
> > > > > calling the
> > > > > acpi_create_fadt() function for each one from a common 
> > > > > acpi_write_fadt()
> > > > > function, just move the writer into the board-specific code.
> > > >
> > > > No luck, but I have a bit of time to debug more.
> > >
> > > Okay, after your patch even U-Boot can't see those tables
> > >
> > > => acpi list
> > > Name      Base   Size  Detail
> > > ----  --------  -----  ------
> > > RSDP  000e4500     24  v02 U-BOOT
> > > RSDT  000e4530     34  v01 U-BOOT U-BOOTBL 20231001 INTL 0
> > > XSDT  000e45e0     44  v01 U-BOOT U-BOOTBL 20231001 INTL 0
> > > CSRT  000e5490     58  v00 U-BOOT U-BOOTBL 20231001 INTL 0
> > > MCFG  000e5610     3c  v01 U-BOOT U-BOOTBL 20231001 INTL 0
> > > SPCR  000e5650     50  v02 U-BOOT U-BOOTBL 20231001 INTL 0
> > > APIC  000e56a0     48  v02 U-BOOT U-BOOTBL 20231001 INTL 0
> > >
> > > Because the base is badly corrupted:
> > >
> > > -00000030: 52 53 44 54 38 00 00 00 01 95 55 2d 42 4f 4f 54  
> > > RSDT8.....U-BOOT
> > > +00000030: 52 53 44 54 34 00 00 00 01 eb 55 2d 42 4f 4f 54  
> > > RSDT4.....U-BOOT
> >
> > Length -4 bytes, another checksum as a result.
> >
> > > -00000050: 00 00 00 00 90 54 0e 00 f0 54 0e 00 10 56 0e 00  
> > > .....T...T...V..
> > > +00000050: 00 00 00 00 90 54 0e 00 10 56 0e 00 50 56 0e 00  
> > > .....T...V..PV..
> >
> > Missing pointer to 0x0e54f0 which is... FADT!
> >
> > > -00000060: 50 56 0e 00 a0 56 0e 00 00 00 00 00 00 00 00 00  
> > > PV...V..........
> > > +00000060: a0 56 0e 00 00 00 00 00 00 00 00 00 00 00 00 00  
> > > .V..............
> > >
> > > -000000e0: 58 53 44 54 4c 00 00 00 01 7b 55 2d 42 4f 4f 54  
> > > XSDTL....{U-BOOT
> > > +000000e0: 58 53 44 54 44 00 00 00 01 d5 55 2d 42 4f 4f 54  
> > > XSDTD.....U-BOOT
> >
> > Wrong length, another checksum.
> >
> > > -00000100: 00 00 00 00 90 54 0e 00 00 00 00 00 f0 54 0e 00  
> > > .....T.......T..
> > > +00000100: 00 00 00 00 90 54 0e 00 00 00 00 00 10 56 0e 00  
> > > .....T.......V..
> > >
> > > -00000110: 00 00 00 00 10 56 0e 00 00 00 00 00 50 56 0e 00  
> > > .....V......PV..
> > > +00000110: 00 00 00 00 50 56 0e 00 00 00 00 00 a0 56 0e 00  
> > > ....PV.......V..
> > >
> > > -00000120: 00 00 00 00 a0 56 0e 00 00 00 00 00 00 00 00 00  
> > > .....V..........
> > > +00000120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  
> > > ................
> >
> > Same reason. So, your code forgot to link FADT to the main tables.
>
> By code analysis you simply missed
>
> +       acpi_add_table(ctx, fadt);
>
> I'm going to check this right now... Stay tuned!

Thanks for digging into this, I really appreciate it!


- Simon

Reply via email to