Jorge Fernandez Monteagudo wrote:
> !!!! X64 Exception Type - 00(#DE - Divide Error) CPU Apic ID - 00000010 !!!!
So there is probably a division by zero..
> RIP - 000000008F5D4FCB
> !!!! Find PE image /mnt/develop/bettong/coreboot/master/coreboot_tpm2/payloads/external/tianocore/tianocore/Build/CorebootPayloadPkgX64/RELEASE_COREBOOT/X64/CorebootPayloadPkg/FbGop/FbGop/DEBUG/FbGop.dll
> (ImageBase=000000008F5D4000, EntryPoint=000000008F5D5F7D) !!!!
..at byte 0xfcb=4043 in FbGop.dll.
> When configured with 800x600 32k-color (1:5:5:5) or 800x600 64k-color (5:6:5)
> boots ok.
Look for assumptions (all assumptions are bad) about frame buffer size or
structure in the code. I guess some code tries to compute number of bytes
per pixel but doesn't always get correct results.
//Peter
Hi All,
After including Seabios as a primary bootloader in coreboot, what are the
other option, I suppose to set / enable in core boot menuconfig.
Because, Seabios is not installing OS from USB and I am unable to enter
into seabios Boot menu (after pressing ESC).
Please help me on this.
Thanks,
Dhanasekar
I've seen this as well on a 12-core Broadwell-DE. I got a few breadcrumbs from a colleague at Intel suggesting that it was some sort of race condition with the ME that I now am questioning and thinking really just steered us off course of finding the actual root cause of the problem since the changes we tried to make along that train of thinking didn't help at all. So after stumbling onto this discussion from February, I'm interested in any new ideas...
So, other than the change below, which impacts all platforms, not just Broadwell-DE, has anybody come up with a better fix to this problem, or an understanding of why it only impacts Broadwell-DE, and yet isn't a problem on the Intel Camelback Mountain reference board? Since it's not reproducible on the Intel reference board, we can't get much support out of Intel on this one...
Thanks,
- Jay
Jay Talbott
Principal Consulting Engineer
SysPro Consulting, LLC
3057 E. Muirfield St.
Gilbert, AZ 85298
(480) 704-8045
(480) 445-9895 (FAX)
JayTalbott(a)sysproconsulting.com
http://www.sysproconsulting.com
> -----Original Message-----
> From: coreboot [mailto:coreboot-bounces@coreboot.org] On Behalf Of Zeh,
> Werner
> Sent: Monday, February 26, 2018 11:12 PM
> To: coreboot(a)coreboot.org
> Cc: mark pleso
> Subject: Re: [coreboot] Broadwell-DE hang in coreboot: mp_init.c
>
> Hi Mark.
>
> I saw a very similar issue (similar because I have not analyzed it in detail due
> to missing time) with a 6 core Broadwell-DE. It hangs as well in SMM
> relocation.
> Same mainboard and coreboot binary with a 4 core Broadwell-DE does not
> have this effect.
>
> Werner
>
> >Von: coreboot [mailto:coreboot-bounces@coreboot.org] Im Auftrag von
> mark pleso via coreboot
> >Gesendet: Montag, 26. Februar 2018 23:40
> >An: coreboot(a)coreboot.org
> >Betreff: [coreboot] Broadwell-DE hang in coreboot: mp_init.c
> >
> >Has anyone else seen a hang during coreboot booting on a Broadwell-
> DE? The issue appears to be in mp_init.c, in the function
> smm_do_relocation(). This is coreboot 4.7, but I think the issue exists in 4.6
> >as well.
> >
> >Enabling the printk will stop the hang. Or, just adding a wbinvd() instruction
> will stop the hang, and things proceed normally. Code is below.
> >
> >Any help would be appreciated.
> >
> >btw - This not a commercial motherboard.
> >
> >coreboot/src/cpu/x86/mp_init.c
> >static void asmlinkage smm_do_relocation(void *arg)
> >{
> > const struct smm_module_params *p;
> > const struct smm_runtime *runtime;
> > int cpu;
> > uintptr_t curr_smbase;
> > uintptr_t perm_smbase;
> >
> > p = arg;
> > runtime = p->runtime;
> > cpu = p->cpu;
> > curr_smbase = runtime->smbase;
> >
> > if (cpu >= CONFIG_MAX_CPUS) {
> > printk(BIOS_CRIT,
> > "Invalid CPU number assigned in SMM stub: %d\n", cpu);
> > return;
> > }
> >
> > /*
> > * The permanent handler runs with all cpus concurrently. Precalculate
> > * the location of the new SMBASE. If using SMM modules then this
> > * calculation needs to match that of the module loader.
> > */
> > perm_smbase = mp_state.perm_smbase;
> > perm_smbase -= cpu * runtime->save_state_size;
> >
> > printk(BIOS_DEBUG, "New SMBASE 0x%08lx\n", perm_smbase);
> >
> > /* write cache to DRAM before calling relocation handler */ /* will stop
> hang */
> > wbinvd(); /* <<=== OR NEW INSTRUCTION w/o printk STOPS HANG */
> >
> > /* Setup code checks this callback for validity. */
> > mp_state.ops.relocation_handler(cpu, curr_smbase, perm_smbase);
> >}
>
> --
> coreboot mailing list: coreboot(a)coreboot.org
> https://mail.coreboot.org/mailman/listinfo/coreboot
>On Tue, Jul 03, 2018 at 04:23:07PM +0800, 王翔 wrote:
>> I want submit some code to support temporarily block multiple-threads.
> >But this code can't pass check by `checkpatch`.
>What is the error that checkpatch prints out?
>If you can't see it, try running
> util/lint/checkpatch.pl -f src/path/to/your/file.h
>directly.
>Hope that helps,
>Jonathan Neuschäfer
Error print like this:
```
WARNING: Macros with flow control statements should be avoided
#43: FILE: src/arch/riscv/include/smp.h:43:
+#define SMP_PAUSE(active) do \
+{ \
+ __label__ l_entry, l_exit; \
+ static int _flag_; \
+ if (active == read_csr(mhartid)) \
+ goto l_entry; \
+ do {barrier(); } while (!_flag_); \
+ goto l_exit; \
+l_entry:
WARNING: please, no spaces at the start of a line
#45: FILE: src/arch/riscv/include/smp.h:45:
+ __label__ l_entry, l_exit; \$
WARNING: please, no spaces at the start of a line
#46: FILE: src/arch/riscv/include/smp.h:46:
+ static int _flag_; \$
WARNING: please, no spaces at the start of a line
#47: FILE: src/arch/riscv/include/smp.h:47:
+ if (active == read_csr(mhartid)) \$
ERROR: code indent should use tabs where possible
#48: FILE: src/arch/riscv/include/smp.h:48:
+ goto l_entry; \$
WARNING: please, no spaces at the start of a line
#48: FILE: src/arch/riscv/include/smp.h:48:
+ goto l_entry; \$
WARNING: please, no spaces at the start of a line
#49: FILE: src/arch/riscv/include/smp.h:49:
+ do {barrier(); } while (!_flag_); \$
WARNING: please, no spaces at the start of a line
#50: FILE: src/arch/riscv/include/smp.h:50:
+ goto l_exit; \$
ERROR: Macros with multiple statements should be enclosed in a do - while loop
#54: FILE: src/arch/riscv/include/smp.h:54:
+#define SMP_RESUME() \
+ _flag_ = 1; \
+l_exit: \
+ barrier(); \
+} while (0)
WARNING: please, no spaces at the start of a line
#55: FILE: src/arch/riscv/include/smp.h:55:
+ _flag_ = 1; \$
WARNING: please, no spaces at the start of a line
#57: FILE: src/arch/riscv/include/smp.h:57:
+ barrier(); \$
total: 2 errors, 9 warnings, 65 lines checked
```
On July 3, 2018 5:23 AM, Toan Le manh <lemanhtoantb(a)gmail.com> wrote:
> I'm facing the Status EFI_ACCESS_DENIED when using gRT->SetVariable() method.
>
> There is no description of this returned status forSetVariable() in UEFI spec.
It looks like the SmmVariableHandler can return EFI_ACCESS_DENIED, even though it is not declared in the documentation comment. There are some pre-condition reasons (empty variable name, too long of a buffer, etc) as well as things like attempting to access a boot time variable after end of DXE:
https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Universal/Variab…
--
Trammell
Dear all,
I'm facing the Status EFI_ACCESS_DENIED when using gRT->SetVariable()
method.
There is no description of this returned status for SetVariable() in UEFI
spec.
Have you ever faced this type of error? Could you please give me any idea
on how this happen?
Sorry for any inconvenience.
Thanks & Best Regards,
Toan
I want submit some code to support temporarily block multiple-threads.
But this code can't pass check by `checkpatch`.
This code look like this:
```
#define barrier() {asm volatile ("fence" ::: "memory"); }
/*
* If your code needs to temporarily block multiple-threads, do this:
* SMP_PAUSE(active) // `active` is hartid of working thread
* ... single-threaded work ...
* SMP_RESUME()
* ... multi-threaded work ...
*/
#define SMP_PAUSE(active) do \
{ \
__label__ l_entry, l_exit; \
static int _flag_; \
if (active == read_csr(mhartid)) \
goto l_entry; \
do {barrier(); } while (!_flag_); \
goto l_exit; \
l_entry:
#define SMP_RESUME() \
_flag_ = 1; \
l_exit: \
barrier(); \
} while (0)
```
Xiang Wang