On 22/10/2026 20:14, Michael Kelly wrote:
Trying this out on other hardware is very useful indeed. I've got
quite a list of things to fix yet but I'm hoping I can get at least
some of this merged into the git sources within a few weeks. Any
source alterations that are questionable I can make available as an
RFC or similar for anyone to test.
One of my machines is very close to console login but the frame buffer
scrolling performance is awful. I suspect this is the notably poor
read performance of the video memory which requires a double buffer
(or possibly just buffer the text content and redraw) solution.
I've got one of my 2 machines natively booting GNU/Hurd on UEFI x64 bit.
This is quite an old desktop machine with traditional hard disk. The
other quite modern laptop is the machine that requires the NVMe support
that was recently added. This one doesn't boot yet because there is no
VMD driver within NetBSD. It doesn't boot the NetBSD installer either.
Linux has a VMD driver which works but can also work with the NVMe
driver by somehow locating the device 'behind' the VMD PCI bridge (or
something). Possibly NetBSD's NVMe driver might also work if only it can
find the device.
There are still a number of items that I'm working on:
1) There is a problem with my desktop machine with allocating memory for
the (large) vm_page array for the HIGHMEM memory. I've worked around it
by reducing he machine memory from 16G to 8G. The problem is that the
vm_page array is too large to fit into a contiguous space within the
DIRECTMAP memory available. Could that vm_page array be allocated from
HIGHMEM and mapped into the kernel outside of the normal kernel VM space?
2) I have an implementation of the immediate console that has helped me
a lot to give boot output before cninit() can run. This uses the frame
buffer set up within the UEFI. This is basically ready for delivering as
a PATCH but first I want help with.....
3) The immediate console uses new frame buffer code shared with the
immediate console. The immediate console requirements are simple but the
kd console seemingly has more complex needs. There are many
circumstances within that module that request moving/clearing of parts
of lines (rather than entire lines). These are commented in the code as
'slow case' in bmpclear, bmpmvup and bmpmvdown. I realise that these
functions are unused but I have implemented equivalents for these which
at the moment only support the fast case which allows all the boot log
output to appear and scroll correctly. The slow cases are not used by
the debugger either since that interface also works correctly without
them (deleting characters from the middle of an input line just does
'backspace' and then prints the remaining characters again. I need to
find a method of testing the slow cases for after I've implemented them.
Is it true that cnputc is only used by gnumach boot (until the Hurd
console starts) and the gnumach debugger?
4) There were some performance issues with the boot output scrolling on
actual hardware. I've not looked at this yet but perhaps write combining
might help.
Thanks,
Mike.