TODO

From Linux PARISC Wiki
(Difference between revisions)
Jump to: navigation, search
(PA-RISC Linux TODO)
m
Line 1: Line 1:
 
= PA-RISC Linux TODO =
 
= PA-RISC Linux TODO =
  
== Status & TODO 2023-08-20 ==
+
== Status & TODO 2023-08-21 ==
* STARTED: Add BPF assembler implementation -> https://github.com/hdeller/linux/tree/for-next-bpf-jit6
+
* '''Kernel'''
* graphics mmap: Make mapping aliasing physical memory.
+
** STARTED: "exim4(11935): unaligned access to 0xf7ebadcd at ip 0xf5f7e307" -> https://sourceware.org/bugzilla/show_bug.cgi?id=30750  and https://sourceware.org/bugzilla/show_bug.cgi?id=20243
* parisc timers: convert to generic clockevent (Arnd Bergmann) - https://patchwork.kernel.org/project/linux-parisc/patch/20201008154651.1901126-14-arnd@arndb.de/
+
** STARTED: Add BPF assembler implementation -> https://github.com/hdeller/linux/tree/for-next-bpf-jit6
* QEMU/Kernel: Add CONFIG_NO_HZ to speed up qemu
+
** STARTED: graphics mmap: Make mapping aliasing physical memory.
* QEMU/Kernel: Add diag() calls to emulate & speed up xchg() and cmp_xchg()  
+
** MOSTLY DONE: why doesn't kernel >= 6.1.5 boot on panama? -> But boots with "no-alternatives" boot option!
* STARTED: "exim4(11935): unaligned access to 0xf7ebadcd at ip 0xf5f7e307" -> https://sourceware.org/bugzilla/show_bug.cgi?id=30750  and https://sourceware.org/bugzilla/show_bug.cgi?id=20243
+
*** DONE/Reason: flush_dcache_page() re-enables the IRQs which leads to the spinlock hang in aio_complete() https://lore.kernel.org/linux-parisc/ZGyawdtBhNnvvTv3@shell.armlinux.org.uk/T/#m96bc8e874d76b3b7bab8b40954b68e6cfb81ee2b
* STARTED: push visualizefx driver
+
*** DONE: backport patch to kernels < 5.18, mail sent to stable mailing list
** STARTED: [https://patchwork.kernel.org/project/linux-parisc/patch/20211031204952.25678-2-svens@stackframe.org/ Visualize FX framebuffer/DRM support (by Sven Schnelle)]
+
*** have the arm and nios2 patches been picked up?
* STARTED: Add cacheflush(2) syscall (like ARC, CSKY, MIPS, and NIOS2), add to glibc, gcc and update man-pages
+
** parisc timers: convert to generic clockevent (Arnd Bergmann) - https://patchwork.kernel.org/project/linux-parisc/patch/20201008154651.1901126-14-arnd@arndb.de/
* Fix kernel: make ARCH=parisc tools/perf
+
** QEMU/Kernel: Add CONFIG_NO_HZ to speed up qemu
* trace irq flags - http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=24131a61ec8c2d83431cb818281d3c9db986ab08
+
** convert irq handling to use CONFIG_IRQ_DOMAIN_HIERARCHY (serial port problem, action handler msising when registering irq)
* Add core-objtool for parisc - http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=26660a4046b171a752e72a1dd32153230234fe3a
+
** NO_IRQ -> should be converted to (0) instead of (-1) -> Helge (check assembly, check in drivers/parisc/*)
* ONGOING: Enable UBSAN and fix fallouts* Enable BlockTLB on PA1.x for STI framebuffer (see block tlb info in sti.pdf documentation) and ftp://parisc.parisc-linux.org/docs/pdc32.pdf
+
** STARTED: Visualizefx driver
* Enable SPARSEMEM_VMEMMAP_ENABLE
+
*** [https://patchwork.kernel.org/project/linux-parisc/patch/20211031204952.25678-2-svens@stackframe.org/ Visualize FX framebuffer/DRM support (by Sven Schnelle)]
* STARTED: implement CONFIG_VMAP_STACK "virtually mapped stacks and thread_info cleanup" (see arm) -> https://lwn.net/Articles/693026/
+
** STARTED: Add cacheflush(2) syscall (like ARC, CSKY, MIPS, and NIOS2), add to glibc, gcc and update man-pages
* convert irq handling to use CONFIG_IRQ_DOMAIN_HIERARCHY (serial port problem, action handler msising when registering irq)
+
** Fix kernel: make ARCH=parisc tools/perf
* check usage of CONFIG_MLONGCALLS, only 14MB/s with debian kernel and dd if=/dev/zero of=here bs=1k count=100000  ?
+
** trace irq flags - http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=24131a61ec8c2d83431cb818281d3c9db986ab08
* NO_IRQ -> should be converted to (0) instead of (-1) -> Helge (check assembly, check in drivers/parisc/*)
+
** Add core-objtool for parisc - http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=26660a4046b171a752e72a1dd32153230234fe3a
* MOSTLY DONE: why doesn't kernel >= 6.1.5 boot on panama? -> But boots with "no-alternatives" boot option!
+
** ONGOING: Enable UBSAN and fix fallouts
** DONE/Reason: flush_dcache_page() re-enables the IRQs which leads to the spinlock hang in aio_complete() https://lore.kernel.org/linux-parisc/ZGyawdtBhNnvvTv3@shell.armlinux.org.uk/T/#m96bc8e874d76b3b7bab8b40954b68e6cfb81ee2b
+
** Enable BlockTLB on PA1.x for STI framebuffer (see block tlb info in sti.pdf documentation) and ftp://parisc.parisc-linux.org/docs/pdc32.pdf
** DONE: backport patch to kernels < 5.18, mail sent to stable mailing list
+
** Enable SPARSEMEM_VMEMMAP_ENABLE
** have the arm and nios2 patches been picked up?
+
** STARTED: implement CONFIG_VMAP_STACK "virtually mapped stacks and thread_info cleanup" (see arm) -> https://lwn.net/Articles/693026/
* Implement TLB lazy_mmu_mode, see include/linux/pgtable.h and search for arch_leave_lazy_mmu_mode
+
** check usage of CONFIG_MLONGCALLS, only 14MB/s with debian kernel and dd if=/dev/zero of=here bs=1k count=100000  ?
* [[VDSO]] - Review gettimeofday and clock_gettime() implementation, possibly use a light-weight-syscall and rely on cr16 and cpu speed for more accurate timing?  
+
** Implement TLB lazy_mmu_mode, see include/linux/pgtable.h and search for arch_leave_lazy_mmu_mode
** Enhance vDSO: gettimeofday(), getcpu(),... see e.g.c32c47aa364096124c9c69c1a44918433832562b
+
** [[VDSO]] - Review gettimeofday and clock_gettime() implementation, possibly use a light-weight-syscall and rely on cr16 and cpu speed for more accurate timing?  
* check qemu-user build errors:
+
*** Enhance vDSO: gettimeofday(), getcpu(),... see e.g.c32c47aa364096124c9c69c1a44918433832562b
 +
** stifb: Fix HCRX text scrolling, missing functions?  - see latest patches to stifb
 +
** check assembly in drivers/parisc/*
 +
 
 +
* '''QEMU Full-system emulation'''
 +
** Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> offers to do contract work for QEMU through his company.
 +
** Fix migration of VMs (noticed by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>):  Boot a qcow2 image in QEMU using the GTK, Wait a random time anywhere between 5-20s, Pause the VM, Switch to the "monitor" tab, Run "savevm foo" to save the current VM state as "foo", Type "quit" to exit QEMU, Add "-loadvm foo" to your QEMU command line and launch QEMU, Unpause the VM
 +
** Check "HPPA support for IGNITE-UX install discs" for HP Logic Analyzer 16700A (Mail from Keith Monahan <keith@techtravels.org> Sept 2020)
 +
** STARTED: Finish LASI and 82596 NIC for QEMU -> https://github.com/hdeller/qemu-hppa/commits/lasi
 +
*** ncr53c710 driver from amiga: https://github.com/tonioni/WinUAE/blob/master/qemuvga/lsi53c710.cpp
 +
 
 +
* '''QEMU User-mode emulation'''
 +
** Implement io_submit() syscalls, probably not possible. Check why raft package testcases which fail
 +
** check why qgis, plasma-framework,  kio-extras and fcitx5-chinese-addons fail to build with "Illegal instruction" error (https://buildd.debian.org/status/fetch.php?pkg=qgis&arch=hppa&ver=3.22.4%2Bdfsg-3&stamp=1645691873&raw=0)
 +
** qemu and executable stack: The following error occurred on pacific in mlton build: /usr/lib/mlton/mlton-compile: error while loading shared libraries: libm.so.6: cannot enable executable stack as shared object requires: Invalid argument
 +
** More exec stack errors: openssh, lnav
 +
** It looks like haskell packages still fail on qemu (e.g., haskell-swish).
 +
** check qemu-user build errors:
 
** ONGOING: qemu-user brk() fixes: https://lists.nongnu.org/archive/html/qemu-devel/2023-07/msg04657.html
 
** ONGOING: qemu-user brk() fixes: https://lists.nongnu.org/archive/html/qemu-devel/2023-07/msg04657.html
 
** libtool: Dynamic ltdl runtime loading failure
 
** libtool: Dynamic ltdl runtime loading failure
Line 42: Line 59:
 
* ask to get palo-installer, partman-palo, aboot-installer into debian-installer (import from old Git-Backup, Alex Wirt?) - Mail from Adrian 05/30/23
 
* ask to get palo-installer, partman-palo, aboot-installer into debian-installer (import from old Git-Backup, Alex Wirt?) - Mail from Adrian 05/30/23
  
* glibc:
+
* '''glibc'''
 
** STARTED: Finfish MADV transition in glibc: glibc: https://sourceware.org/pipermail/libc-alpha/2023-February/145452.html , dietlibc: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1030998
 
** STARTED: Finfish MADV transition in glibc: glibc: https://sourceware.org/pipermail/libc-alpha/2023-February/145452.html , dietlibc: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1030998
 
** Add backtrace() function to glibc -> needed to build dovecot package
 
** Add backtrace() function to glibc -> needed to build dovecot package
Line 50: Line 67:
 
** STARTED: port [[Gccgo_for_hppa]] gccgo -> https://github.com/hdeller/gcc/tree/gccgo-hppa
 
** STARTED: port [[Gccgo_for_hppa]] gccgo -> https://github.com/hdeller/gcc/tree/gccgo-hppa
  
* Debian:
+
* '''Debian'''
 
** STARTED: Fix initramfs: Bug#1027915: systemd requires /run to be mounted with a minimum size of 20MB: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1027915,  patch sent
 
** STARTED: Fix initramfs: Bug#1027915: systemd requires /run to be mounted with a minimum size of 20MB: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1027915,  patch sent
 
* STARTED: Activate LARGE FILE SUPPORT generally on hppa: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1020335
 
* STARTED: Activate LARGE FILE SUPPORT generally on hppa: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1020335
  
* QEMU issues:
+
* '''QEMU issues'''
 +
** QEMU: Implement 32/24 bit HCRX graphics
 +
** QEMU: Add support for running MPE with https://www.openpa.net (& Craig Lalley <mr_lalley@yahoo.com>)
 +
** QEMU/Kernel: Add diag() calls to emulate & speed up xchg() and cmp_xchg()
 
** devscripts FTBFS because of subversion: svnadmin: E000072: Can't check directory '.': Value too large for defined data type
 
** devscripts FTBFS because of subversion: svnadmin: E000072: Can't check directory '.': Value too large for defined data type
 
** rrdtool FTBFS on 32-bit arches: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1026973
 
** rrdtool FTBFS on 32-bit arches: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1026973
Line 65: Line 85:
 
** check glibc tst-pthread-timedlock-lockloop testcase failure (The futex facility returned an unexpected error code., xclock_gettime.c:29: clock_gettime (0): Unknown error -1)
 
** check glibc tst-pthread-timedlock-lockloop testcase failure (The futex facility returned an unexpected error code., xclock_gettime.c:29: clock_gettime (0): Unknown error -1)
  
* gcc compiler:
+
* '''gcc compiler'''
 
** Why is compiling fife so slow with cc1plus?
 
** Why is compiling fife so slow with cc1plus?
 
** asked Dave to implement gcc builtins for break asms, like on other platforms, for usage in kernel
 
** asked Dave to implement gcc builtins for break asms, like on other platforms, for usage in kernel
 
* QEMU: Implement 32/24 bit HCRX graphics
 
* QEMU: Add support for running MPE with https://www.openpa.net (& Craig Lalley <mr_lalley@yahoo.com>)
 
* stifb: Fix HCRX text scrolling, missing functions?  - see latest patches to stifb
 
  
 
* SeaBIOS and palo: muldi3 and divdi3 (from libgcc.a) trashes fr22-fr25 because of xmpyu instruction. Doesn't seem to have negative effect, but those registers should better be saved/restored in pdc_entry() and iodc_entry(), or libgcc should be fixed to not use floating point instructions.
 
* SeaBIOS and palo: muldi3 and divdi3 (from libgcc.a) trashes fr22-fr25 because of xmpyu instruction. Doesn't seem to have negative effect, but those registers should better be saved/restored in pdc_entry() and iodc_entry(), or libgcc should be fixed to not use floating point instructions.
 
* STARTED: Port grub2 to hppa? -> https://github.com/hdeller/grub
 
* STARTED: Port grub2 to hppa? -> https://github.com/hdeller/grub
  
* check assembly in drivers/parisc/*
 
 
* INEQUIVALENT ALIASES occur building gnuradio on debian.
 
* INEQUIVALENT ALIASES occur building gnuradio on debian.
* Add Linux kernel PIM driver - /sys/firmware/pim/*
 
 
* STARTED: convert old-style rtc driver drivers/input/misc/hp_sdc_rtc.c to new RTC model, remove the procfs and miscdevice interfaces first and replace the ioctl with a struct rtc_class_ops. Arnd Bergmann can review those patches, but Alexandre and Alessandro are the ones who would merge them once the driver is moved to drivers/rtc. (Mail from Arnd Bergmann, 28.04.2016) - see https://patchwork.kernel.org/patch/10701397/
 
* STARTED: convert old-style rtc driver drivers/input/misc/hp_sdc_rtc.c to new RTC model, remove the procfs and miscdevice interfaces first and replace the ioctl with a struct rtc_class_ops. Arnd Bergmann can review those patches, but Alexandre and Alessandro are the ones who would merge them once the driver is moved to drivers/rtc. (Mail from Arnd Bergmann, 28.04.2016) - see https://patchwork.kernel.org/patch/10701397/
 
* Add some cond_resched() calls to avoid RCU stalls, see commit 2a8bc5316adc998951e8f726c31e231a6021eae2
 
* Add some cond_resched() calls to avoid RCU stalls, see commit 2a8bc5316adc998951e8f726c31e231a6021eae2
 
* Check if https://lkml.org/lkml/2020/7/23/1246 was added to avoid TLB stalls (commits https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c6fe44d96fc1536af5b11cd859686453d1b7bfd1 and https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2a9127fcf2296674d58024f83981f40b128fffea) - kernel v5.9 seems good.
 
* Check if https://lkml.org/lkml/2020/7/23/1246 was added to avoid TLB stalls (commits https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c6fe44d96fc1536af5b11cd859686453d1b7bfd1 and https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2a9127fcf2296674d58024f83981f40b128fffea) - kernel v5.9 seems good.
* '''QEMU Full-system emulation'''
+
 
** Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> offers to do contract work for QEMU through his company.
+
** Fix migration of VMs (noticed by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>):  Boot a qcow2 image in QEMU using the GTK, Wait a random time anywhere between 5-20s, Pause the VM, Switch to the "monitor" tab, Run "savevm foo" to save the current VM state as "foo", Type "quit" to exit QEMU, Add "-loadvm foo" to your QEMU command line and launch QEMU, Unpause the VM
+
** Check "HPPA support for IGNITE-UX install discs" for HP Logic Analyzer 16700A (Mail from Keith Monahan <keith@techtravels.org> Sept 2020)
+
** STARTED: Finish LASI and 82596 NIC for QEMU -> https://github.com/hdeller/qemu-hppa/commits/lasi
+
*** ncr53c710 driver from amiga: https://github.com/tonioni/WinUAE/blob/master/qemuvga/lsi53c710.cpp
+
* '''QEMU User-mode emulation'''
+
** Implement io_submit() syscalls, probably not possible. Check why raft package testcases which fail
+
** check why qgis, plasma-framework,  kio-extras and fcitx5-chinese-addons fail to build with "Illegal instruction" error (https://buildd.debian.org/status/fetch.php?pkg=qgis&arch=hppa&ver=3.22.4%2Bdfsg-3&stamp=1645691873&raw=0)
+
** qemu and executable stack: The following error occurred on pacific in mlton build: /usr/lib/mlton/mlton-compile: error while loading shared libraries: libm.so.6: cannot enable executable stack as shared object requires: Invalid argument
+
** More exec stack errors: openssh, lnav
+
** It looks like haskell packages still fail on qemu (e.g., haskell-swish).
+
 
* '''JAVA'''
 
* '''JAVA'''
 
** Finish OpenJDK, see patch and mail from Adrian Glaubitz 05.02.2021.
 
** Finish OpenJDK, see patch and mail from Adrian Glaubitz 05.02.2021.

Revision as of 15:11, 21 August 2023

Contents

PA-RISC Linux TODO

Status & TODO 2023-08-21

  • QEMU Full-system emulation
    • Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> offers to do contract work for QEMU through his company.
    • Fix migration of VMs (noticed by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>): Boot a qcow2 image in QEMU using the GTK, Wait a random time anywhere between 5-20s, Pause the VM, Switch to the "monitor" tab, Run "savevm foo" to save the current VM state as "foo", Type "quit" to exit QEMU, Add "-loadvm foo" to your QEMU command line and launch QEMU, Unpause the VM
    • Check "HPPA support for IGNITE-UX install discs" for HP Logic Analyzer 16700A (Mail from Keith Monahan <keith@techtravels.org> Sept 2020)
    • STARTED: Finish LASI and 82596 NIC for QEMU -> https://github.com/hdeller/qemu-hppa/commits/lasi
  • gcc compiler
    • Why is compiling fife so slow with cc1plus?
    • asked Dave to implement gcc builtins for break asms, like on other platforms, for usage in kernel
  • SeaBIOS and palo: muldi3 and divdi3 (from libgcc.a) trashes fr22-fr25 because of xmpyu instruction. Doesn't seem to have negative effect, but those registers should better be saved/restored in pdc_entry() and iodc_entry(), or libgcc should be fixed to not use floating point instructions.
  • STARTED: Port grub2 to hppa? -> https://github.com/hdeller/grub
  • Kernel: still missing Linux kernel development (no patches available yet or maybe not possible to implement):
    • maybe: optimize flush_dcache_page() implementation like sparc. See Documentation/cachetlb.txt, e.g. used in aio subsystem
    • maybe implement transparent huge pages (due to cache coherency technically only possible on PA8500-PA8700 CPUs, not possible on PA8800-PA8900 CPUs)
    • implement BUG() and WARN() with inline assembly so that interrupt happens in delay branch of "or,<> %r0,cond,%r0". Probably not possible, because gcc will report "control reaches end of non-void function" warnings/errors.
    • disable FP-register save/restore at kernel entry? - https://patchwork.kernel.org/patch/3975291/
    • enable 16k/64k kernel page sizes (still cacheflushing-issues with SCSI driver, additional work in glibc needed to deal with >4k page size, e.g. ld-loader alignments of data/code segments)
    • Superdome support - can someone test? Should work better now with latest kernels (maybe ask Dennis Clarke <dclarke@blastwave.org>, Jan 2019).
  • Floating point NaN (see: https://en.wikipedia.org/wiki/NaN)
    • PA-RISC uses "mips" NaN format which differs from x86, etc. It should be called PA-RISC format as I think PA was first. The quiet NaN bit is opposite to than in current IEEE standard.
    • Debian packages with NaN issues: libime, capnproto
  • palo (PA-RISC Boot Loader):
    • PALO - add regular rewind & load to avoid tftp boot timing issues. See mail from Frank Schreiner "PALO issues" (Dec 2018).
    • When listing directory contents, resolve and print symlink target file names too, e.g. "vmlinux -> linux-5.12.1-64bit".
    • Fix palo deb package to build iplboot natively (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=851792)
    • Modify (if possible), that palo can read (sequential) tftpbootable-vmlinuxes as well as the current boot-vmlinux images (simplifies build/handling)

Upstream PA-RISC-related kernel patch history

Debian kernel and userspace programs

Debian kernel / Generic Kernel bugs fixed


ABI breakages (e.g. dropped HP-UX support)

Considerations between Debian unstable and Debian Jessie release

Jessie was not stable on SMP machines, particularly those with PA8800/PA8900 processors. It's recommended to use kernel 4.4.15 or later. The current default gcc for unstable is gcc 5.4. Most hppa fixes have been back ported to 4.9 but not all. It shouldn't hurt to use binutils from unstable. Debian glibc 2.23 is best. Most old packages should still work although there maybe inequivalent aliasing issues which are relevant on PA8800. There's also a nasty issue with gmon_start being in every shared library in Jessie. This caused a few headaches and potentially breaks applications when it's removed from a library. If you stick with the glibc in Jessie, multithreaded applications may not work as well as they could, but maybe that's not important. The kernel update is the most important one. Since hppa moved to ports, there has been a huge number of bug fixes. System stability is dramatically improved and I believe more packages are available than ever before. It's better to run unstable and just be selective about running "apt-get upgrade". (by Dave Anglin)

parisc-linux.org Homepage and Debian build server infrastructure work

Linus Torvalds barking at parisc

Testsuites, kernel and userspace testing tools

TODO Drivers

  • write Lasi floppy driver
  • write Suckyio floppy driver
  • write spifi driver (rbrad)
  • modify ncr53c8xx driver for Outfield (735 & 755)
  • write GSC FDDI driver
  • write Timi ASIC (74x) support
  • EISA DMA support

Review all the todo entries below!

Personal tools