summaryrefslogtreecommitdiff
path: root/util
AgeCommit message (Collapse)Author
2023-04-30util/e6400-flash-unlock: do void on ec_fdo_commandLeah Rowe
the return value was never used
2023-04-24don't force console mode in grubLeah Rowe
the deleted patch (in this commit) was written to fix an issue theoretically; it hasn't been fully tested, and some people have reported strange issues since this patch was merged - there is no proof that this patch causes them, but removing this patch is the correct thing to do regardless
2023-04-19util/e6400-flash-unlock: restore READMENicholas Chin
when nicholas added this, he removed the README because it's going on libreboot.org instead. however, i merged a WIP version of his page for now because i want to get the e6400 going in libreboot sooner. so, temp-readding this README. will just link to this on codeberg or something, from the lb docs NOTE: I didn't write this README, hence author field set in the commit. Nicholas wrote it, but I (Leah Rowe) am just adding it. so, git author set to nicholas, not me
2023-04-19Add E6400 flash unlock utilityNicholas Chin
Adding it to lbmk for now as it is not yet in coreboot. If it is merged into coreboot we can just reference the one there. The original README will be incorporated into a new page on lbwww, so README.md just points to a placeholder URL that should match the new page.
2023-04-15util/nvmutil: sort includes alphabeticallyLeah Rowe
small nitpick, but i try to use openbsd style since i like that style. upon further reading of their style guidelines today, it was revealed to me that for includes, they: * sort sys/ includes alphabetically, at the top * after sys/ includes, have an empty line * includes for networking-related headers below that * empty space below networking headers if there * after that, have the rest of the includes, sorted alphabetically at least, that is my understanding. i have to admit, it does look cleaner not really that critical but why not do it?
2023-04-11util/nvmutil: don't display errant whitespaceLeah Rowe
At the end of each line is an errant space. Fix that.
2023-04-08add ich9utils back to utilsLeah Rowe
don't download it. keep it in lbmk. libreboot moved to codeberg for git hosting, and i didn't want to keep lugging around an extra git repo just for one tiny project.
2023-04-07util/nvmutil: even crazier code size reductionLeah Rowe
2023-04-07util/nvmutil: yet more code size optimisationLeah Rowe
2023-04-07util/nvmutil: more code size optimisationsLeah Rowe
2023-04-07util/nvmutil: minor code size optimisationLeah Rowe
not just sloccount, but compiled binary size as tested with tcc on an x86_64 host
2023-04-07util/nvmutil: fix possible regressionLeah Rowe
i went too hard on the sloc reductions a check inside a for loop could cause incomplete reading of gbe images revert that
2023-04-06util/nvmutil: minor code cleanupLeah Rowe
also removed some unnecessary checks fixed the check of pwrite's return value (it should check for -1)
2023-04-06util/nvmutil: remove unnecessary else statementLeah Rowe
2023-04-06util/nvmutil: less annoying commentsLeah Rowe
added a few that were more useful deleted a few obnoxious ones
2023-04-06util/nvmutil: remove duplicated logicLeah Rowe
the byteswap() function is used for big endian host compatibility, but it can also be used to swap words in the stored mac address
2023-04-06util/nvmutil: one more commentLeah Rowe
2023-04-06util/nvmutil: add useful code commentsLeah Rowe
2023-04-06util/nvmutil: remove unnecessary debug messagesLeah Rowe
these were put in when i was testing the feature to limit read/written bytes in loading/saving of files
2023-04-06util/nvmutil: serious re-factoring, part 2Leah Rowe
the code is smaller
2023-04-06util/nvmutil: consolidated error messageLeah Rowe
2023-04-06util/nvmutil: serious re-factoring (speed boost!)Leah Rowe
word/setWord no longer mitigates endianness. instead, all bytes are swapped after reading and before writing the file, and only if the host is big endian this improves performance on little endian hosts, which is most machines, and the code is much simpler, so it's more robust and less likely to break mac address endianness made more clear in code, including with a comment that explains it (the nvm section contains little endian words, *except* the mac address whose words are stored big endian)
2023-04-05util/nvmutil: fix faulty zeroes-mac-address checkLeah Rowe
it was resetting the total for each nibble. absolute epic fail on my part. fixed now.
2023-04-05util/nvmutil: minor code cleanupLeah Rowe
2023-04-05util/nvmutil: move mac address parsing to functionLeah Rowe
2023-03-06util/nvmutil: optimise rhex() furtherLeah Rowe
reduce the number of calls to read() by using bit shifts. when rnum is zero, read again. in most cases, a nibble will not be zero, so this will usually result in about 13-15 of of 16 nibbles being used. this is in comparison to 8 nibbles being used before, which means that the number of calls to read() are roughly halved. at the same time, the extra amount of logic is minimal (and probably less) when compiled, outside of calls to read(), because shifting is better optimised (on 64-bit machines, the uint64_t will be shifted with just a single instruction, if the compiler is decent), whereas the alternative would be to always precisely use exactly 16 nibbles by counting up to 16, which would involve the use of an and mask and still need a shift, plus... you get the point. this is probably the most efficient code ever written, for generating random numbers between the value of 0 and 15
2023-01-28util/nvmutil: tidy up variable declarationsLeah Rowe
2023-01-28util/nvmutil: setWord(): declare variables firstLeah Rowe
2023-01-28util/nvmutil: reset errno if any write attemptedLeah Rowe
the way nvmutil is designed, setWord() is only ever called under non-error conditions. however, if one part is valid but the other one isn't, and a command is run that touches both parts, errno is non-zero write writeGbeFile is called in situations where one part is valid, but the other isn't, AND the writes to gbe (in memory) results in a non-change, writeGbeFile is not called; in this situation, errno is not being reset, despite non-error condition this patch fixed the bug, resulting in zero status upon exit under such conditions
2023-01-28util/nvmutil: do not write non-changes to diskLeah Rowe
2023-01-28util/nvmutil: cmd_swap(): write sequentuallyLeah Rowe
the current code writes part 1 first, and part 0 next, on the disk, due to the way the swap works. with this change, swap still swaps the two parts of the file, on disk, but writes the new file sequentially. this change might speed up i/o on the file system, on HDDs. on SSDs, this change likely makes no difference at all.
2023-01-28util/nvmutil: don't use malloc()Leah Rowe
2023-01-28util/nvmutil: fix clang build errorsLeah Rowe
2023-01-28util/nvmutil: simplify rhex()Leah Rowe
don't use malloc(). instead, just load random bytes into a uint64_t
2023-01-27util/nvmutil: use gbe[] in word() and setword()Leah Rowe
this will make the code more flexible, if (when) i add changes that allow multiple commands to be used in a single run, on any given number of files
2023-01-27util/nvmutil: code cleanupLeah Rowe
2023-01-27util/nvmutil: call pledge() earlier, in main()Leah Rowe
2023-01-27util/nvmutil: remove unused #defineLeah Rowe
2023-01-27util/nvmutil: optimised disk readsLeah Rowe
only read the required number of bytes, per command
2023-01-27util/nvmutil: optimise cmd_swap()Leah Rowe
On many Lenovo GbE regions (in factory firmware), part 0 is invalid but part 1 is valid. This change means part 1 is checked first. If part 1 is valid, part 0 won't be checked at all (due to how most C compilers optimise). Most people are just going to extract the factory GbE file, modify it and re-insert it into the ROM image, so this causes a nice speedup.
2023-01-27util/nvmutil: optimise rhex() for speedLeah Rowe
don't constantly open/close the file: /dev/urandom only read 12 bytes at a time because of this change, the readFromFile() function now only handles gbe files
2023-01-27util/nvmutil: code cleanup in rhex()Leah Rowe
2023-01-17util/nvmutil: update copyright yearsLeah Rowe
2023-01-17util/nvmutil: limit bytes written per commandLeah Rowe
Massive reduction in number of bytes written, if copy/swap commands are not used.
2023-01-17util/nvmutil: make writeGbeFile more readableLeah Rowe
2023-01-17util/nvmutil: only write parts that are modifiedLeah Rowe
Old behaviour: always write both gbe sections. New behaviour: only write back what was changed.
2022-12-24util/nvmutil: use err() more consistentlylbmkplaceholder
2022-12-24util/nvmutil: more robust pointer handlingLeah Rowe
i didn't like the previous commits, they felt really hacky running malloc and then changing the pointer directly just rubs me the wrong way fix that
2022-12-23util/nvmutil: optimise cmd_swap() furtherlbmkplaceholder
don't do xor swap. we know gbe2 is always 4KB higher than gbe in memory, so we can just set gbe2 to the value of gbe, and OR the size in bytes of 4KB into gbe2 this is only a marginal speed boost, negligible even, but it's done for the lulz
2022-12-23util/nvmutil: greatly optimise cmd_copy()lbmkplaceholder
similar to the last change by concept. we now write individual 4KB blocks per part 0 and 1, at the end of nvmutil, based on pointer values gbe and gbe2 instead of running memcpy, simply overwrite the pointer this results in less I/O, thus more speed