Re: How to test stand/usb
- Reply: Zhenlei Huang : "Re: How to test stand/usb"
- In reply to: Zhenlei Huang : "How to test stand/usb"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 01 Jul 2024 17:01:22 UTC
----Security_Multipart(Tue_Jul__2_02_01_22_2024_397)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Hi,
Zhenlei Huang <zlei@FreeBSD.org> wrote
in <6B9A293F-18CF-4FB2-B095-BC468354BCA8@FreeBSD.org>:
zl> I'm recently working on cleaning up malloc(M_WAITOK), and found that the sys/dev/usb
zl> stack is also used by bootloader. Currently stand/usb fails to compile ( since the
zl> commit 9e4e7bcaef3f 2022/8/23 ) and I have some WIP patches. I do not find a good
zl> page about its usage. How can I test stand/usb ? Or it has no usage any more and should
zl> be retired ?
The stand/usb directory is used to build the libusbboot.a library
containing the devsw for umass(4). The following patch (against a bit
old tree) should fix the build errors at least:
https://people.allbsd.org/~hrs/FreeBSD/kshim-fix.20240702-1.diff
To compile a loader with libusbboot.a, you need to build a
libusbboot.a with some flags first and link it with a loader. On the
loader side, you need to edit conf.c and Makefile. The above patch
includes changes for i386/loader, and the following command lines
should build both (MK_LOADER_ZFS=no because libusbboot.a is too
large):
# cd /usr/src/stand/usb/tools && make && make install
% cd /usr/src/stand/usb && \
make obj && \
make -DHAVE_UMASS_LOADER -DHAVE_EHCI depend && \
make -DHAVE_UMASS_LOADER -DHAVE_EHCI
% cd /usr/src/stand/i386/loader && \
make obj && \
make MK_LOADER_ZFS=no depend && \
make MK_LOADER_ZFS=no
# cd /usr/src/stand/i386/loader && \
make MK_LOADER_ZFS=no DESTDIR=/tmp install
and you should be able to find a legacy BIOS loader in
/tmp/boot/loader. I did not test whether the build result works
actually, though. Note that the first command builds "sysinit" tool
and installs it into /usr/bin. You can remove it after testing.
Also note that the kernel source files used by ones under usb/ will
use a different malloc implementation defined in
kshim/bsd_kernel.[ch]. So, malloc(9) flags are simply ignored. If
your work intends to check if rewriting of malloc(M_WAITOK) works or
not, I think you can consider it does not affect the loaders using the
libusbboot library.
Although the files under kshim/ and usb/ are not maintained well, I
personally think they are still worth keeping.
-- Hiroki
----Security_Multipart(Tue_Jul__2_02_01_22_2024_397)--
Content-Type: application/pgp-signature
Content-Transfer-Encoding: 7bit
-----BEGIN PGP SIGNATURE-----
iMoEABMKAC4WIQRsDSNTJ8+Ax5Ae/dLbsH3Gbx9zfwUCZoLg4hAcaHJzQGZyZWVi
c2Qub3JnAAoJENuwfcZvH3N/ibgCCQE5UA7kL7XCf4JBXSXVoAvT3O5wntTC1jTm
15Mz3pSr1a2DkHuxXgjqV1+Eh81RlLcg5huEY27eDpbY7rYmla7gzAIJARQKmsQ6
fh6NYWgJ0Y/Qj6q04lxKAGiQWwR4paxmhiCEe9WHNCJmLlS3d7gSyoVmdagxWRpu
Z3QB+IvQNBPdgYyH
=lUTZ
-----END PGP SIGNATURE-----
----Security_Multipart(Tue_Jul__2_02_01_22_2024_397)----