On Wed, Jan 31, 2018 at 07:51:08PM +0100, Jeremie Courreges-Anglas wrote:
> On Wed, Jan 31 2018, Patrick Wildt <patr...@blueri.se> wrote:
> > On Wed, Jan 31, 2018 at 09:46:52AM -0800, Mike Larkin wrote:
> >> On Wed, Jan 31, 2018 at 05:12:03PM +0100, Patrick Wildt wrote:
> >> > Hi,
> >> > 
> >> > this diff allows us to load the Intel microcode much earlier.  So far
> >> > we load it after the CPUs have identified and then have to update the
> >> > CPU flags afterwards.  This is not good since we have to assume that
> >> > those updates can remove and add instructions and other features.  We
> >> > need to load it earlier.  The only other option is to have the boot-
> >> > blocks load the ucode for us.
> >> > 
> >> > One issue though is actually loading and passing the binaries that can
> >> > range from 2k to 90k of binary size.  As far as I know we don't use the
> >> > lower 16M of memory on amd64, which the bootblocks use as heap.  Thus
> >> > allocating a buffer for using alloc() should be "fine" if we make sure
> >> > that we read the ucode after we early enough.  kettenis@ tells me that
> >> > cpu_startup() is the earliest MD code which can use malloc(9), so that
> >> > is where we can copy the ucode from the bootloader to kernel land.
> >> > 
> >> > I have tested this with efiboot(8), more tests would be appreciated.
> >> > 
> >> > Thanks,
> >> > Patrick
> >> > 
> >> 
> >> I like the idea. We should probably make sure it works with sr crypto also,
> >> I can check that later today unless someone beats me to it.
> >
> > That would be nice!
> >
> >> After that, I'll review the diff more carefully. Are you looking for oks 
> >> yet,
> >> or is this just being passed around for comments at this time?
> >
> > I can start collecting OKs I guess. :)  I have no other changes pending
> > for this, so as long as there is no negative feedback I intend to commit
> > this at some point.  Before doing that, I want to collect a bit of feed-
> > back and test results.
> 
> Looks like ramdisks need more love:

That is indeed correct.  I'm very sorry.  I falsely removed the ifdef
for RAMDISK.  I will fix this and make sure the bootblocks also prop-
erly survive make build and release.

Patrick

> [...]
> cp /usr/src/sys/conf/param.c .
> cc -g -Werror -Wall -Wimplicit-function-declaration  -Wno-uninitialized 
> -Wno-pointer-sign  -Wno-address-of-packed-member -Wno-constant-conversion  
> -Wframe-larger-than=2047 -mcmodel=kernel -mno-red-zone -mno-sse2 -mno-sse 
> -mno-3dnow  -mno-mmx -msoft-float -fno-omit-frame-pointer -ffreestanding 
> -fno-pie -fno-stack-protector -Oz -pipe -nostdinc -I/usr/src/sys 
> -I/usr/src/sys/arch/amd64/compile/RAMDISK_CD/obj -I/usr/src/sys/arch 
> -DTIMEZONE="0" -DDST="0" -DSMALL_KERNEL -DNO_PROPOLICE -DBOOT_CONFIG 
> -DPCIVERBOSE -DSCSITERSE -DFFS -DFFS2 -DEXT2FS -DNFSCLIENT -DCD9660 -DUDF 
> -DMSDOSFS -DINET6 -DCRYPTO -DRAMDISK_HOOKS -DMINIROOTSIZE="0x1cc0" 
> -DMAXUSERS=4 -D_KERNEL -MD -MP  -c param.c
> cc -g -Werror -Wall -Wimplicit-function-declaration  -Wno-uninitialized 
> -Wno-pointer-sign  -Wno-address-of-packed-member -Wno-constant-conversion  
> -Wframe-larger-than=2047 -mcmodel=kernel -mno-red-zone -mno-sse2 -mno-sse 
> -mno-3dnow  -mno-mmx -msoft-float -fno-omit-frame-pointer -ffreestanding 
> -fno-pie -fno-stack-protector -Oz -pipe -nostdinc -I/usr/src/sys 
> -I/usr/src/sys/arch/amd64/compile/RAMDISK_CD/obj -I/usr/src/sys/arch 
> -DTIMEZONE="0" -DDST="0" -DSMALL_KERNEL -DNO_PROPOLICE -DBOOT_CONFIG 
> -DPCIVERBOSE -DSCSITERSE -DFFS -DFFS2 -DEXT2FS -DNFSCLIENT -DCD9660 -DUDF 
> -DMSDOSFS -DINET6 -DCRYPTO -DRAMDISK_HOOKS -DMINIROOTSIZE="0x1cc0" 
> -DMAXUSERS=4 -D_KERNEL -MD -MP  -c ioconf.c
> cp /usr/src/sys/arch/amd64/conf/ld.script ld.script
> sh /usr/src/sys/conf/newvers.sh
> cc -g -Werror -Wall -Wimplicit-function-declaration  -Wno-uninitialized 
> -Wno-pointer-sign  -Wno-address-of-packed-member -Wno-constant-conversion  
> -Wframe-larger-than=2047 -mcmodel=kernel -mno-red-zone -mno-sse2 -mno-sse 
> -mno-3dnow  -mno-mmx -msoft-float -fno-omit-frame-pointer -ffreestanding 
> -fno-pie -fno-stack-protector -Oz -pipe -nostdinc -I/usr/src/sys 
> -I/usr/src/sys/arch/amd64/compile/RAMDISK_CD/obj -I/usr/src/sys/arch 
> -DTIMEZONE="0" -DDST="0" -DSMALL_KERNEL -DNO_PROPOLICE -DBOOT_CONFIG 
> -DPCIVERBOSE -DSCSITERSE -DFFS -DFFS2 -DEXT2FS -DNFSCLIENT -DCD9660 -DUDF 
> -DMSDOSFS -DINET6 -DCRYPTO -DRAMDISK_HOOKS -DMINIROOTSIZE="0x1cc0" 
> -DMAXUSERS=4 -D_KERNEL -MD -MP  -c vers.c
> LD="ld" sh makegap.sh 0xcccccccc
> cc -g -Werror -Wall -Wimplicit-function-declaration  -Wno-uninitialized 
> -Wno-pointer-sign  -Wno-address-of-packed-member -Wno-constant-conversion  
> -Wframe-larger-than=2047 -mcmodel=kernel -mno-red-zone -mno-sse2 -mno-sse 
> -mno-3dnow  -mno-mmx -msoft-float -fno-omit-frame-pointer -ffreestanding 
> -fno-pie -fno-stack-protector -Oz -pipe -nostdinc -I/usr/src/sys 
> -I/usr/src/sys/arch/amd64/compile/RAMDISK_CD/obj -I/usr/src/sys/arch 
> -DTIMEZONE="0" -DDST="0" -DSMALL_KERNEL -DNO_PROPOLICE -DBOOT_CONFIG 
> -DPCIVERBOSE -DSCSITERSE -DFFS -DFFS2 -DEXT2FS -DNFSCLIENT -DCD9660 -DUDF 
> -DMSDOSFS -DINET6 -DCRYPTO -DRAMDISK_HOOKS -DMINIROOTSIZE="0x1cc0" 
> -DMAXUSERS=4 -D_KERNEL -MD -MP  -c swapbsd.c
> ld -T ld.script -X --warn-common -nopie -o bsd ${SYSTEM_HEAD} vers.o ${OBJS}
> machdep.o: In function `cpu_startup':
> /usr/src/sys/arch/amd64/amd64/machdep.c:312: undefined reference to 
> `cpu_ucode_setup'
> cpu.o: In function `cpu_attach':
> /usr/src/sys/arch/amd64/amd64/cpu.c:409: undefined reference to 
> `cpu_ucode_apply'
> /usr/src/sys/arch/amd64/amd64/cpu.c:422: undefined reference to 
> `cpu_ucode_apply'
> *** Error 1 in /usr/src/sys/arch/amd64/compile/RAMDISK_CD (Makefile:543 
> 'bsd': @echo ld -T ld.script -X --warn-common -nopie -o bsd '${SYSTE...)
> *** Error 1 in /usr/src/distrib/amd64/ramdisk_cd (Makefile.inc:81 'bsd')
> *** Error 1 in /usr/src/distrib/amd64 (<bsd.subdir.mk>:48 'all')
> *** Error 1 in /usr/src/distrib (<bsd.subdir.mk>:48 'all')
> *** Error 1 in . (Makefile:292 'distrib')
> *** Error 1 in . (Makefile:268 'do-release')
> *** Error 1 in /usr/src/etc (Makefile:251 'release')
> russell /usr/src$
> 
> 
> -- 
> jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE

Reply via email to