Re: How to test stand/usb
- In reply to: Hiroki Sato : "Re: How to test stand/usb"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 02 Jul 2024 04:38:04 UTC
> On Jul 2, 2024, at 1:01 AM, Hiroki Sato <hrs@freebsd.org> wrote: > > 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. Thanks for the detailed instructions. I'll try that. > > Although the files under kshim/ and usb/ are not maintained well, I > personally think they are still worth keeping. > > -- Hiroki