EFIRT on machines with pcid after r337773
Oliver Pinter
oliver.pinter at hardenedbsd.org
Tue Aug 14 23:38:15 UTC 2018
Hi!
Seems like this patch fixed the boot issue on Dell e5440 with UEFI.
Once you get to MFC, please X-MFC-with the following patch:
commit dfe1112fa878c5d8fa0605d1de10c96ecc993569
Author: rlibby <rlibby at FreeBSD.org>
Date: Fri Jul 21 17:11:36 2017 +0000
__pcpu: gcc -Wredundant-decls
Pollution from counter.h made __pcpu visible in amd64/pmap.c. Delete
the existing extern decl of __pcpu in amd64/pmap.c and avoid referring
to that symbol, instead accessing the pcpu region via PCPU_SET macros.
Also delete an unused extern decl of __pcpu from mp_x86.c.
Reviewed by: kib
Approved by: markj (mentor)
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D11666
Notes:
svn path=/head/; revision=321335
On 8/15/18, Konstantin Belousov <kostikbel at gmail.com> wrote:
> If you use UEFI boot, have EFIRT compiled in kernel (the case of
> GENERIC) or pre-loaded as module, and efirt is not disabled by a tunable,
> and the machine resets during kernel initialization, try this.
>
> diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
> index d5d795ab502..c9334eab916 100644
> --- a/sys/amd64/amd64/pmap.c
> +++ b/sys/amd64/amd64/pmap.c
> @@ -1188,7 +1188,7 @@ pmap_bootstrap(vm_paddr_t *firstaddr)
> kernel_pmap->pm_pcids[i].pm_pcid = PMAP_PCID_KERN;
> kernel_pmap->pm_pcids[i].pm_gen = 1;
> }
> - PCPU_SET(pcid_next, PMAP_PCID_KERN + 1);
> + PCPU_SET(pcid_next, PMAP_PCID_KERN + 2);
> PCPU_SET(pcid_gen, 1);
> /*
> * pcpu area for APs is zeroed during AP startup.
> @@ -2651,8 +2651,8 @@ pmap_pinit0(pmap_t pmap)
> bzero(&pmap->pm_stats, sizeof pmap->pm_stats);
> pmap->pm_flags = pmap_flags;
> CPU_FOREACH(i) {
> - pmap->pm_pcids[i].pm_pcid = PMAP_PCID_NONE;
> - pmap->pm_pcids[i].pm_gen = 0;
> + pmap->pm_pcids[i].pm_pcid = PMAP_PCID_KERN + 1;
> + pmap->pm_pcids[i].pm_gen = 1;
> if (!pti) {
> __pcpu[i].pc_kcr3 = PMAP_NO_CR3;
> __pcpu[i].pc_ucr3 = PMAP_NO_CR3;
> _______________________________________________
> freebsd-current at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe at freebsd.org"
>
More information about the freebsd-current
mailing list