BeOS allowed to manually configure devices with GUI that can’t be recognized automatically. Isn’t it related to config_manager?
I agree that usefulness of config_manager is low for now.
BeOS allowed to manually configure devices with GUI that can’t be recognized automatically. Isn’t it related to config_manager?
I agree that usefulness of config_manager is low for now.
hello everyone… i promised an update on the arm64 port so here we go:
I was able to spend some time testing and integrating the patches from @milek7 and there are some promising results.
Basically I was able to reproduce the rocket icon on qemu with u-boot and TianoCore - see the screenshot below.
There are still a few reviews outstanding though.
review #4717 seems to be a critical one, to get virtio working
We can reach the rocket icon with the following combos, using the code from one or more open reviews:
u-boot + virtio-mmio detected from FDT - merged
TianoCore + virtio-mmio detected from ACPI - merged
TianoCore + virtio-pci with PCI detected from ACPI - merged
The following combo needs some additional effort:
u-boot + virtio-pci with PCI detected from FDT, I have an initial patch but interrupt handling is not there yet - under review. - merged.
This last one can also be generalized to the 32-bit ARM port with minimal effort. - merged
No entry to user space yet, as translation map creation for user mode is not implemented.
Review 4717 has also been merged, so things are getting quite interesting for ARM64 …
Did you have issues with packagefs
? I had to add HAIKU_PACKAGE_COMPRESSION_LEVEL = 0 ;
to my UserBuildConfig
in order to boot as far as the rocket. It would page fault with the zlib-compressed packages.
Looks like we can almost smell ARM Tracker and Bfriends!
Great news!
I had some strange exceptions during startup, I was able to reach the rocket icon by commenting out the timer interrupts in src/system/kernel/arch/arm64/arch_timer.cpp
.
e.g.
arch_timer_interrupt(void *data)
{
WRITE_SPECIALREG(CNTP_CTL_EL0, TIMER_MASKED);
- return timer_interrupt();
+ //return timer_interrupt();
+ return 0;
}
guys I look forward to it!, I can’t wait to see HAIKU running on these ARM single boards integrated in small keyboards like the raspberry pi 400 or better the new orange pi 800…
I had an ARM Thinkpad X13s delivered last week.
I’d like to have a go at trying to get Haiku to boot on this thing, but not sure where to start tbh
Are there any docs besides this one, or an ARM specific forked repo I can clone and start hacking on?
I’d first see if you can run Linux on it. From what I’ve read, most of the ARM laptops which run Windows are locked to Windows, and I don’t see Lenovo selling an ARM Linux laptop.
Second, see if you can run Haiku ARM in a virtual machine. I don’t think Haiku on ARM is far enough along to boot your laptop, not yet at least. It’s actively in progress though!
I’m running Debian on it already.
Debian Installer for Snapdragon 8cx Gen 3 laptops - Google Docs
I’ve forked Haiku and cloned it for now. Have a lot of googling and reading to do.
Awesome! Keep us posted.
The devs who are up to date with ARM development are @davidkaroly & @pengphei they get you up to speed, then you can help getting haiku to boot on ARM.
I’m more familiar with the 32-bit ARM port, on the 64-bit port I mostly did some testing and patch formatting based on the contributions from @milek7
In any case here are some notes on where the arm64 port was when I last looked at it
Having said that, if you apply enough kludges the arm64 port is able to reach the rocket icon on qemu. We’re able to detect many things from FDT or ACPI e.g. PCI, Virtio, maybe also USB. User mode doesn’t start as most of the user mode stuff is not implemented (page table creation etc). For the time being probably it’s easier to continue hacking in qemu, then move on to real hardware once userspace works.
I was also playing around with a driver and accelerant for qemu’s ramfb
device as that could simplify testing in qemu - this way we can have a framebuffer that is recognized by both the bootloader and the OS. This is more relevant for u-boot on qemu-arm/aarch64 (i don’t remember what was the situation with TianoCore)
Zstd is why we use ARMV8.2. It seems quite a mess on non x86, so personally I think we should avoid it. The ARM 64 code in zstd was only added for server grade ARM, and the only way to get it to compile with gcc was to enable 16 bit floating point.
Zstd might have improved since then, but to me I don’t really believe zstandard will be easy to support on non x86 platforms.
I already implemented it in haiku_loader.riscv
: haiku/src/system/boot/platform/riscv/FwCfg.cpp at master · haiku/haiku · GitHub.
kernel/app_server graphics driver should be not needed if boot loader framebuffer is working.
the existing framebuffer driver did not work correctly for me, afaict it looks for PCI addresses related to the frame buffer which is not there in case of mmio-based fwcfg
See https://review.haiku-os.org/c/haiku/+/3986/7/src/add-ons/kernel/drivers/graphics/vesa/vesa.cpp#295.
Thanks for the info David, much appreciated.
I’m getting a build error in fs_shell/vfs.cpp with a fresh clone at the moment. Casting from fssh_addr_t to int32_t loses precision, so need to fix that first.
Given that this topic has been rather silent lately, is there any progress since the latest posts?
I am thinking if I should start getting involved again…
Yarrrrr. That would be nice! <3