summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2024-04-28dell-flash-unlock: Remove unnecessary includes for NetBSDNicholas Chin
The pio.h header, although present on NetBSD, is not necessary, as it only declares x86 port IO inx()/outx() functions which are not actually implemented. Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com>
2024-04-28dell-flash-unlock: Remove memory clobber from inline assemblyNicholas Chin
The x86 port IO instructions do not access memory so it is not needed in the clobber list. Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com>
2024-04-28build/roms: support SeaGRUB *with menu enabled*Leah Rowe
This is useful on desktops, where you want GRUB to automatically start, but you still want access to the GRUB menu, in the case where you rely on SeaBIOS to execute the VGA ROM inside your graphics card. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-28update/trees: simplified defconfig copyingLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-28option.sh: don't use nproc (not portable)Leah Rowe
export LBMK_THREADS=x where x is an integer. this is already supported for setting the number of build threads, but if not set it uses nproc. openbsd doesn't have nproc. default to 1 thread. now you MUST set threads. e.g. in linux do: export LBMK_THREADS=$(nproc) preliminary work is being done to make lbmk run on openbsd! Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-28eDP configs (x230/x220): don't releaseLeah Rowe
set to release="n" for now until the eDP targets are fixed. the regular non-eDP targets are stable, and will be released. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-28fix target.cfg files on dell latitudesLeah Rowe
some latitudes still used the old style for variables in target.cfg, specifically arch="x86_64" - lbmk used to then check that on a big if/else and translate it to the correct target name for crossgcc, e.g. i386-elf, arm-eabi now it just puts the arch directly, in a new variable: xarch change arch="x86_64" to xarch="i386-elf" in these files. also remove a few obsolete variables. should build now. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-28use mirrorservice.org for iasl downloadsLeah Rowe
github is unreliable. i host these files myself. coreboot uses intel.com again now in the latest revisions, and intel broke it before. i'm going to start backing up the acpica releases onto my rsync server from now on, and keep patching coreboot to use my files. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-27update/release: disable status checkingLeah Rowe
just to ensure that nothing goes wrong. we don't rely on the status variable for releases, because there is another variable, release, that target.cfg files declare, e.g. release="n" release="y" you can just omit the variable, because it defaults to y, so you only need declare it when it needs to be "n" Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-27build/roms: tell the user how to ignore statusLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-27update macbook21/x60/t60 statusLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-27allow disabling status checks during buildsLeah Rowe
export LBMK_STATUS=n if not set, the status checks and confirmation dialogs persist. if set to y they persist. if you set it to n, all checks are disabled, so e.g.: ./build roms all this would once again build all targets, regardless of status. this is if you want the old behaviour. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-27update 9020 sff/mt release statusLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-27update more board statuses before releaseLeah Rowe
what's left to properly test are pineview/x4x/i945 and some of the ivy/sandy elitebooks/hp workstations Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-27Set status=unstable on dell latitudesLeah Rowe
also warn about issues, in a warn.txt file for each. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-27declare ivy/sandy thinkpads stable for releaseLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-27declare gm45 thinkpads stable for releaseLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-27kcma-d8/kgpe-d16: mark as tested(unstable)Leah Rowe
raminit has never been fully reliable on this board, and so this board has never been stable. so, now that lbmk specifies such status per board, mark these boards as such. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-26Merge pull request 'dell-flash-unlock: add NetBSD support' (#194) from ↵Leah Rowe
linear/lbmk:master into master Reviewed-on: https://codeberg.org/libreboot/lbmk/pulls/194
2024-04-26build/roms: update help, pertaining to statusLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-26build/roms: let "list" specify status typesLeah Rowe
for example: ./build roms list this will list every now, still. same behaviour. now see: ./build roms list stable this will list all stable roms ./build roms list untested this lists untested roms. but wait! ./build roms list untested broken unstable ./build roms list broken unstable yes. it works this way. now you can use lbmk to easily see what rom status are, during maintenance. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-26erroneous returnLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-26build/roms: report status when building imagesLeah Rowe
export LBMK_VERSION_TYPE=x x can be: stable, unstable in target.cfg files, specify: status=x x can be: stable, unstable, broken, untested if unset, lbmk defaults to "unknown" if LBMK_VERSION_TYPE is set, no confirmation is asked if the given target matches what's set (but what's set in that environmental variable can only be stable or unstable) if LBMK_RELEASE="y", no confirmation is asked, unless the target is something other than stable/unstable "unstable" means it works, but has a few non-breaking bugs, e.g. broken s3 on dell e6400 whereas, if raminit regularly fails or it is so absolutely unreliable as to be unusable, then the board should be declared "broken" untested means: it has not been tested With this change, it should now be easier to track whether a given board is tested, in preparation for releases. When working on trees/boards, status can be set for targets. Also: in the board directory, you can add a "warn.txt" file which will display a message. For example, if a board has a particular quirk to watch out for, write that there. The message will be printed during the build process, to stdout. If status is anything *other* than stable, or it is unstable but LBMK_VERSION_TYPE is not set to "unstable", and not building a release, a confirmation is passed. If the board is not specified as stable or unstable, during a release build, the build is skipped and the ROM is not provided in that release; this is in *addition* to release="n" or release="y" that can be set in target.cfg, which will skip the release build for that target if "n" Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-26i945: switch boards to 20230625 coreboot revisionLeah Rowe
On T60 with Libreboot 20231106 and the GRUB payload, a user reported this error in GRUB when a battery was connected: "alloc magic is broken at 0x7b1aedf0: 0" This error disappears when a battery is not connected, or when using Libreboot 20230625. The issue has persisted through to LIbreboot 20240225 and after, and I believe the issue will be somewhere in coreboot, not in GRUB itself. For now, switch i945 laptops (X60, T60, Macbook2,1) back to the February 2023 coreboot revision used in Libreboot 20230625. A bisect can be done before the next Libreboot release, ETA May 2024, if time permits. Otherwise, this revert should solve the problem for now, at least so far as Libreboot is concerned. The following coreboot patches have been backported: commit 29030d0f3dad2ec6b86000dfe2c8e951ae80bf94 Author: Bill Xie <persmule@hardenedlinux.org> Date: Sat Oct 7 01:32:51 2023 +0800 drivers/pc80/rtc/option.c: Stop resetting CMOS during s3 resume Further patches from upstream: commit 432e92688eca0e85cbaebca3232f65936b305a98 Author: Bill Xie <persmule@hardenedlinux.org> Date: Fri Nov 3 12:34:01 2023 +0800 drivers/pc80/rtc/option.c: Reset only CMOS range covered by checksum These patches fixed S3 on GM45 machines, though it will be useful on the i945 machines aswell. The reason I'm doing it this way it is because I don't have a battery for my X60 or T60, and my T60 isn't in a very good state either, so I can't reproduce the error myself yet. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-26exports variables from err.sh, not buildLeah Rowe
LC_COLLATE and LBMK_RELEASE are important variables. we want to make sure that these are seen by everything. since err.sh is included from all scripts, doing it there will accomplish just that. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-26GRUB: bump to today's latest revisionLeah Rowe
GRUB has not pushed many patches to master since the recent 2.12 release, but there are a number of interesting fixes. libreboot is doing a release soon. bump to latest grub revision. Some of the new patches in GRUB are interesting: XFS fixes: "fs/xfs: Handle non-continuous data blocks in directory extents" 68dd65cfdaad08b1f8ec01b84949b0bf88bc0d8c Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2254370 Apparently, XFS could not boot in some reports, though this was likely with BIOS or UEFI GRUB; no such reports were made to libreboot "gfxmenu/view: Resolve false grub_errno disrupting boot process" 39c927df66c7ca62d97905d1385054ac9ce67209 "util/grub-fstest: Add a new command zfs-bootfs" 28c4405208cfb6e2cea737f6cbaf17e631bac6cd The gnulib revision does not need to be updated at this time. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-269020 sff/mt: actually enable the TPM (by default)Leah Rowe
i added mkukri's patch but didn't enable it. this was intentional. this patch enables tpm by default, on all 9020 sff/mt targets. most users probably won't need it, but enabling it won't hurt. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-259020 sff/mt: add tpm enable patch from mate kukriLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-25lbmk: export TMPDIR from err.sh, not buildLeah Rowe
lbmk sets TMPDIR to /tmp, and then creates a tmpdir, then exports *that* as the value of TMPDIR. this unified TMPDIR location then contains all subsequent files and directories, when any script or program makes use of /tmp, via mktemp. at least, that's the theory! in practise, because it was only being properly exported from the main build scripts, subscripts that are then called were not exporting it, at least that is my assumption because in some cases, i found that the coreboot build system was leaving errant files behind outside of our own TMPDIR, and that build system did not seem to be setting TMPDIR itself; more debugging is needed. anyway: use the exact same logic, but do it from err.sh. since err.sh is included from every lbmk script, that means it will always be exported when running every single part of lbmk. this should reduce the chance that mktemp creates files and directories outside of our custom TMPDIR location. this is because in lbmk, we mitigate unhandled tmpdirs/files by unifying it in the manner described, then deleting the entire TMPDIR on exit from the main lbmk parent process (the main script that the user called from, which is always the "build" file). in lbmk, effort is made to clean up temporary files properly, without relying on this catch-all, but we can't rely on that. the catch-all should also be as robust as possible. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-25build/roms: add missing deletion of tmp fileLeah Rowe
the temporary rom per build was not being deleted after finishing the current target. this adds up in /tmp during large builds, when building for many targets. fix this! Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-25hp820g2: allow building, but don't do release ROMsLeah Rowe
at present, the inject scripts compress refcode in a way that is not reproducible, so there's no way to verify that the firmware is correct, via checksum verification, when injecting vendor code on release images the lack of reproducibility in recompression will have to be addressed, but the issue is that lbmk does not provide its own sources for compression utilities, instead opting to use the system's own compression utility so the solution might be for lbmk not to use the host's utility, and compile its own, or insert the refcode uncompressed. for now, simply disable the hp 820 g2 target in libreboot releases this uses the same logic recently implemented for excluding mrc-based haswell images in libreboot releases Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-24haswell: only provide NRI-based ROMs in releasesLeah Rowe
release="n" is set in target.cfg on haswell build targets that use mrc.bin script/update/release exports LBMK_RELEASE="y" script/build/roms skips building a given target if release="n" in target.cfg *and* LBMK_RELEASE="y" you could also do the export yourself before running ./build roms, for example: export LBMK_RELEASE="y" ./build roms all This would skip these ROM images. The native haswell raminit is now stable enough in my testing, that I wish to delete the MRC-based targets. This is in line with Libreboot's Binary Blob Reduction Policy, which states: if a blob can be avoided, it should be avoided. The problem is that users often run the inject script in *lbmk* from Git, instead of from the src release archive. I forsee some users running this on modern lbmk with older release images. If the mrc-based target isn't there, the user may use an NRI-based target name, and think it works; they will insert without MRC. I foresaw this ages ago, which is why Caleb and I ensured that the script checks hashes, and hashes are included in releases. Therefore: for the time being, keep the MRC-based configs in lbmk but do not include images for them in releases. This can be done indefinitely, but I'll probably remove those configs entirely at some point. On the following boards, Libreboot now will *only* provide NRI-based ROM images for the following machines: * Dell OptiPlex 9020 SFF * Dell OptiPlex 9020 MT * Lenovo ThinkPad T440p * Lenovo ThinkPad W541/W540 I now recommend exclusive use of NRI-based images, on Haswell hardware. It's stable enough in my testing, and now supports S3. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-219020 sff/mt: fix bad gpio read on hwm patchLeah Rowe
sff happened to work, but mt would not boot with the patch, because it called die() on unknown chassis type, and the gpio happened to have a bad value in the old patch, because it wasn't reading the right gpio. i tested the fix on the old patch, but then decided to use mate's new patch because instead of calling die(), it simply boots with fan control disabled (max fan speed in that case), if this happens again. mt and sff have both been tested with this new version of the patch. both of them boot, and they both have proper fan control. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-21w541 libremrc: disable tseg stage cacheLeah Rowe
a hangover from earlier days, but i still disable it. i forgot to do so on this config, when updating the nri code. do it now. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-21haswell nri: set 8MB CBFS on thinkpads (fix S3)Leah Rowe
hell added a patch fixing S3 on haswell NRI, but it seems you still need to set 8MB CBFS size as with the MRC tested on a t440p. S3 now works on haswell NRI. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-20add 9020sff/mt configs using haswell NRILeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-20update coreboot/haswell (NRI)Leah Rowe
the t440p/w541 configs were re-done from scratch, because the coreboot revisions are nearly two years apart. i also added corebootfb configs. hell updated their patchset. this patchset uses the following patch: https://review.coreboot.org/c/coreboot/+/81948/1 it uses this, along with parent patches in the haswell nri patch series Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-07add mate's patch for 9020 sff/mt fan controlsLeah Rowe
see: https://review.coreboot.org/c/coreboot/+/81529 what i've merged is patchset 4. i had to rebase it slightly, because the libreboot version has the iommu toggle on cmos configs, which are files that mate's patch also changes, leading to merge conflict. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-06enable grub payload on libremrc w541/t440pLeah Rowe
the grub payload was previously disabled, because the libre mrc code sets up xhci rather than ehci, and grub did not have xhci support (not natively). libreboot now has xhci support in the grub payload, so enable grub on these configurations. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-06add t440p/w541 configs using broadwell mrcLeah Rowe
broadwell mrc enables both igpu and dgpu to be enabled at any given time. if the onboard (intel) gpu is set as primary, the logic to disable it is not executed within coreboot; instead, the igpu is used for vga decode. on some t440p/w541 thinkpads, both an intel and nvidia gpu are present. in this setup, the intel gpu must be used for vga, and all output, but rendering can be offloaded to the nvidia gpu (nvidia optimus). optimus would never work on haswell mrc.bin, because it always disables the igpu when a dgpu is present, so a hack exists in coreboot that hides the dgpu from mrc, so that the igpu remains enabled. broadwell mrc doesn't do this, so the option to hide PEG devices has been disabled in these configs. the broadwell mrc has better peg device handling, and can support 16gb modules on broadwell hardware; it may well support these modules on haswell hardware too, though ddr3 sodimms are very hard to find (and expensive). (and currently untested, with this patch) Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-06add 9020 sff/mt targets that use broadwell mrcLeah Rowe
broadwell mrc has better peg handling and can support 16gb modules on broadwell machines - the blob can be used on haswell machines too, instead of haswell mrc, and it might support 16gb modules on these machines (not yet tested, but using broadwell mrc does at least boot as reliably as haswell mrc anyway) one little quirk with haswell mrc is that it actually handles vga decode, disabling the igpu entirely, when a dgpu is used. the broadwell mrc enables both GPUs and does not handle vga decoding, so we must handle this the usual way; my patch for this was merged upstream and i'm also adding it to libreboot, which currently uses an older coreboot revision. this is needed for dgpu to work. see patch: 0040-nb-haswell-Disable-iGPU-when-dGPU-is-used.patch broadwell mrc may also make dealing with nvidia optimus setups more reliable, on laptops that have nvidia GPUs, but this patch does not add bmrc configs for t440p/w541 NOTE: on t440p/w541 laptops with nvidia graphics, the video output is wired to intel but rendering can be offloaded to nvidia. in this setup, we want vga decode to be done on intel, so i've set these configs to enable CONFIG_ONBOARD_VGA_IS_PRIMARY (set it to y) Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-05grub xhci supportLeah Rowe
see: https://github.com/9elements/grub/commits/xhci-module-upstreaming-squash_v4/ grub only supports xhci on bios/uefi targets, but not coreboot. some newer machines don't have ps/2 controllers, and boot in a way where ehci isn't available at startup; the controller can't be used by ehci code, there must be xhci support. the code is from Patrick Rudolph working on behalf of 9elements. the code was also sent here for review: https://lists.gnu.org/archive/html/grub-devel/2020-12/msg00111.html however, upstream never merged these patches. libreboot will have to maintain these from now on. the patches have been rebased for use with grub 2.12. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-03-30fix sata slots on dell 9020 sff and mtLeah Rowe
3rd sata slot (of 3) broken on 9020 sff, and the 3rd and 4th (of 4) slots are broken on 9020 mt this patch fixes them on both, so that all ports work properly Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-03-27allow users to specify number of build threadsLeah Rowe
lbmk otherwise uses nproc to set the number of build threads, in these places: * generic make commands in script/update/trees * crossgcc make command in script/update/trees the -T0 option is also used in script/update/release, when running tar. with this change, you can do: export LBMK_THREADS=x where x is the number of threads. when you then run lbmk, your chosen number of threads will override the default. this may be useful on a host that does not have a lot of memory. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-03-27safer, simpler error handling in lbmkLeah Rowe
in shell scripts, a function named the same as a program included in the $PATH will override that program. for example, you could make a function called ls() and this would override the standand "ls". in lbmk, a part of it was first trying to run the "fail" command, deferring to "err", because some scripts call fail() which does some minor cleanup before calling err. in most cases, fail() is not defined, and it's possible that the user could have a program called "fail" in their $PATH, the behaviour of which we could not determine, and it could have disastrous effects. lbmk error handling has been re-engineered in such a way that the err function is defined in a variable, which defaults to err_ which calls err_, so defined under include/err.sh. in functions that require cleanup prior to error handling, a fail() function is still defined, and err is overridden, thus: err="fail" this change has made xx_() obsolete, so now only x_ is used. the x_ function is a wrapper that can be used to run a command and exit with non-zero status (from lbmk) if the command fails. the xx_ command did the same thing, but called fail() which would have called err(); now everything is $err example: rm -f "$filename" || err "could not delete file" this would now be: rm -f "$filename" || $err "could not delete file" overriding of err= must be done *after* including err.sh. for example: err="fail" . "include/err.sh" ^ this is wrong. instead, one must do: . "include/err.sh" err="fail" this is because err is set as a global variable under err.sh the new error handling is much cleaner, and safer. it also reduces the chance of mistakes such as: calling err when you meant to call fail. this is because the standard way is now to call $err, so you set err="fail" at the top of the script and all is well. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-03-19Merge pull request 'config: Add Dell Latitude E5420' (#191) from ↵Leah Rowe
nic3-14159/lbmk:latitude-ports into master Reviewed-on: https://codeberg.org/libreboot/lbmk/pulls/191
2024-03-18Merge pull request 'util: Import autoport with Haswell patches' (#195) from ↵Leah Rowe
nic3-14159/lbmk:autoport-fork into master Reviewed-on: https://codeberg.org/libreboot/lbmk/pulls/195
2024-03-18util: Import autoport with Haswell patchesNicholas Chin
This is a copy of coreboot's autoport utility, with a patch applied to support Haswell/Lynx Point platforms. That patch is currently in review on coreboot's Gerrit. https://review.coreboot.org/c/coreboot/+/30890 Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com>
2024-03-16dell-flash-unlock: add NetBSD supportlinear cannon
2024-03-12Merge pull request 'Use proper autolink' (#192) from eo/lbmk:master into masterLeah Rowe
Reviewed-on: https://codeberg.org/libreboot/lbmk/pulls/192