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.


Reply via email to