TODO

From Linux PARISC Wiki
Jump to: navigation, search

Contents

PA-RISC status and TODO 2023-09-12

Kernel

QEMU

Full-system emulation

  • STARTED: Implement HPPA-64 support in qemu
  • 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
  • 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
    • Check "HPPA support for IGNITE-UX install discs" for HP Logic Analyzer 16700A (Mail from Keith Monahan <keith@techtravels.org> Sept 2020)

User-mode emulation

QEMU issues

glibc

executable stack

(see https://lore.kernel.org/all/87lebjz9z6.fsf@gentoo.org/) Starting with Kernel 5.18, the parisc Linux kernel gained support to run without executable stacks. In gcc-14 GNU stack notes were enabled. An executable stack is still needed by applications for nested functions. They are still called via a stack trampoline. The GNU stack note indicates whether an object needs an executable stack or not. These notes are collected by linker. The glibc loader determines whether to setup an executable stack or not.

Once gcc-14 becomes the default compiler, we will have to enable GNU stack notes in previous gcc versions. We will still have executable stacks until everything is rebuilt. We will need to update that default in Binutils too. Currently (nov 2023), there are no architecture dependencies in the ld --enable-warn-execstack and --enable-default-execstack configure options. The -z execstack and -z noexecstack ld options can override the GNU notes, or lack thereof. We may have to fix some assembly code. Maybe binutils should be built with --enable-warn-execstack once we switch to gcc-14. I don't think we want --enable-default-execstack after switching to gcc-14.

Debian

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

JAVA

  • Finish OpenJDK, see patch and mail from Adrian Glaubitz 05.02.2021.
  • IMPORTANT: fix OpenJDK - fixes required in zeroport (stack grows up!).

Rust language

gcc compiler

kernel work

  • How to upgrade libgcc:
apt install -f -o Dpkg::Options::="--force-overwrite"
see: https://raphaelhertzog.com/2011/08/01/understanding-dpkgs-file-overwrite-error/
  • 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).

Debian packages / Userspace work

  • 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

Kernel 3.8

Kernel 3.9

Kernel 3.10

Kernel 3.11

  • parport (lp) fix
  • defaultconfig for C8000
  • C8000 workstation support in 3.11 and 3.10.X stable (serial port irq, IOMMU range fixes, FireGL radeon AGP fix, vma memory fix)
  • remove arch/parisc/kernel/sys32.h
  • pa_memcpy() was broken on 64bit (due to gcc miscompiling nonstandard C-code)

Kernel 3.12

Kernel 3.13

Kernel 3.14

  • Native types in uapi/asm/stat.h
  • Dropped HP-UX Support: changed EWOULDBLOCK = EAGAIN -> https://patchwork.kernel.org/patch/3499551/ (important ABI change!)
  • parisc: Make EWOULDBLOCK be equal to EAGAIN on parisc
  • sticon font problem fixed, sticon now automatically chooses the Linux fb fonts if available instead of using the HP fonts
  • parisc: add flexible mmap memory layout support
  • parisc: convert uapi/asm/stat.h to use native types only
  • parisc: wire up sched_setattr and sched_getattr
  • parisc: fix cache-flushing

Kernel 3.15

Kernel 3.16

  • parisc: Eliminate memset after alloc_bootmem_pages
  • parisc: Remove SA_RESTORER define
  • parisc: drop unused defines and header includes
  • parisc: fix fanotify_mark() syscall on 32bit compat kernel
  • parisc: add serial ports of C8000/1GHz machine to hardware database

Kernel 3.17

  • parisc: Fix serial console for machines with serial port on superio chip
  • parisc: Only use -mfast-indirect-calls option for 32-bit kernel builds
  • parisc: pdc_stable.c: Avoid potential stack overflows
  • parisc: pdc_stable.c: Cleaning up unnecessary use of memset in conjunction with strncpy
  • parisc: ptrace: use secure_computing_strict()
  • parisc: Implement new LWS CAS supporting 64 bit operations, CAS implementation: implement 1,2,4 and 8 byte CAS (backported to v3.13+)
  • parisc: Wire up seccomp, getrandom and memfd_create syscalls
  • parisc: dino: fix %d confusingly prefixed with 0x in format string
  • parisc: sys_hpux: NUL terminator is one past the end
  • parisc: Use get_signal() signal_setup_done()

Kernel 3.18

Kernel 3.19

  • parisc: fix out-of-register compiler error in ldcw inline assembler function

Kernel 4.0

  • parisc: Wire up execveat syscall
  • parisc: Add error checks when building up signal trampoline handler
  • parisc: hpux - Drop support for HP-UX binaries
  • parisc: hpux - Do not compile hpux subdirectory
  • parisc: hpux - Delete files in hpux subdirectory
  • parisc: hpux - Remove hpux gateway page
  • parisc: hpux - Remove HPUX syscall numbers
  • fs/binfmt_som: Drop kernel support for HP-UX SOM binaries
  • parisc/uaccess: fix sparse errors
  • parisc: macro whitespace fixes
  • parisc: Add compile-time check when adding new syscalls
  • parisc: Fix pmd code to depend on PT_NLEVELS value, not on CONFIG_64BIT
  • parisc: mm: don't count preallocated pmds

Kernel 4.1

  • parisc: Replace PT_NLEVELS with CONFIG_PGTABLE_LEVELS
  • parisc: Eliminate sg_virt_addr() and private scatterlist.h
  • parisc: copy_thread(): rename 'arg' argument to 'kthread_arg'
  • parisc,metag: Fix crashes due to stack randomization on stack-grows-upwards architectures (backported to v3.16+)
    • DONE: fix VA randomization regarding to stack limits (testcase: ocaml build, temporarily fix: echo 0 > /proc/sys/kernel/randomize_va_space or add to /etc/sysctl.conf: sys.kernel.randomize_va_space = 0)
  • parisc: %pf is only for function pointers
  • parisc: copy_thread(): rename 'arg' argument to 'kthread_arg'

Kernel 4.2

Kernel 4.3

Kernel 4.4

  • parisc: Change L1_CACHE_BYTES to 16
  • net/xps: Fix calculation of initial number of xps queues
  • parisc: reduce syslog debug output
  • parisc: serial/mux: Convert to uart_console_device instead of open-coded
  • parisc: Wire up userfaultfd syscall
  • parisc: allocate sys_membarrier system call number
  • parisc: Drop hpux_stat64 struct from stat.h header file
  • parisc: Fixes and cleanups in kernel uapi header files (backported to 3.18+)
  • parisc: Fix wrong comment regarding first pmd entry flags
  • parisc: Drop definition of start_thread_som for HP-UX SOM binaries
  • parisc: Drop unused MADV_xxxK_PAGES flags from asm/mman.h
  • parisc: Add defines for Huge page support
  • parisc: Initialize the fault vector earlier in the boot process.
  • parisc: Increase initial kernel mapping to 32MB on 64bit kernel
  • parisc: Use long branch to do_syscall_trace_exit
  • parisc: Add Huge Page and HUGETLBFS support
  • parisc: Map kernel text and data on huge pages
  • parisc: Remove unused pcibios_init_bus()
  • parisc: Wire up mlock2 syscall
  • parisc: Disable huge pages on Mako machines
  • parisc iommu: fix panic due to trying to allocate too large region (backported to all)
  • parisc: Fix syscall restarts (backported to all)

Kernel 4.5

Kernel 4.6

Kernel 4.7

Kernel 4.8

Kernel 4.9

Kernel 4.10

Kernel 4.11

Kernel 4.12

  • (none beside backports, pull request was too late during merge window)

Kernel 4.13

Kernel 4.14

Kernel 4.15

Kernel 4.16

Kernel 4.17

Kernel 4.18

Kernel 4.19

Kernel 4.20

Kernel 5.0

Kernel 5.1

Kernel 5.2

Kernel 5.3

Kernel 5.4

Kernel 5.5

  • parisc: Do not hardcode registers in checksum functions
  • kexec: Fix pointer-to-int-cast warnings
  • parisc: Avoid spurious inequivalent alias kernel error messages
  • parisc: use pgtable-nopXd instead of 4level-fixup
  • parisc: soft_offline_page() now takes the pfn
  • parisc: Fix compiler warnings in debug_core.c
  • parisc: fix compilation when KEXEC=n and KEXEC_FILE=y
  • parisc: add missing __init annotation

Kernel 5.6

  • parisc: Regenerate parisc defconfigs
  • parisc: map_pages(): cleanup page table initialization
  • parisc: Fix defconfig selection

Kernel 5.7

  • parisc: remove nargs from __SYSCALL
  • parisc: Refactor alternative code to accept multiple conditions
  • parisc: Rework arch_rw locking functions
  • parisc: Improve interrupt handling in arch_spin_lock_flags()
  • parisc: Replace setup_irq() by request_irq()
  • parisc: Fix kernel panic in mem_init() (backported to all)

Kernel 5.8

Kernel 5.9

Kernel 5.10

Kernel 5.11

Kernel 5.12

Kernel 5.13

  • parisc: switch to generic syscall header scripts

Kernel 5.14

Kernel 5.15

Kernel 5.16

Kernel 5.17

Kernel 5.18

Kernel 5.19

Kernel 6.0

Kernel 6.1

Kernel 6.2

Kernel 6.3

  • no patches

Kernel 6.4

Kernel 6.5

  • parisc: Move TLB_PTLOCK option to Kconfig.debug
  • parisc: Check if IRQs are disabled when calling arch_local_irq_restore()
  • parisc: Add cacheflush() syscall
  • parisc: Fix missing prototype warning for arch_report_meminfo()
  • parisc: Default to 8 CPUs for 64-bit kernel
  • sticon/parisc: Allow 64-bit STI calls in PDC firmware abstration
  • sticon/parisc: Fix STI console on 64-bit only machines
  • parisc: sba_iommu: Fix kdoc warnings
  • parisc: Fold 32-bit compat code into audit_classify_syscall()
  • parisc: drivers: Fix kdoc warnings
  • parisc: firmware: Fix kdoc warnings
  • parisc: pdc_chassis: Fix kdoc warnings
  • parisc: module: Mark symindex __maybe_unused
  • parisc: Mark image_size __maybe_unused in perf_write()
  • parisc: pci-dma: Make pcxl_alloc_range() static
  • parisc: pdc_stable: Fix kdoc and compiler warnings
  • parisc: ccio-dma: Fix kdoc and compiler warnings
  • parisc: sys_parisc: parisc_personality() is called from asm code
  • parisc: processor: Fix kdoc for init_cpu_profiler()
  • parisc: traps: Mark functions static
  • parisc: init: Drop unused variable end_paddr
  • parisc: unwind: Mark start and stop variables __maybe_unused
  • parisc: signal: Mark do_notify_resume() and sys_rt_sigreturn() asmlinkage
  • parisc: unaligned: Include header file to avoid missing prototype warnings
  • parisc: lba_pci: Mark two variables __maybe_unused
  • parisc: dino: Make dino_init() returning void
  • parisc: Move init function declarations into header file
  • parisc: irq: Add irq-related function declarations
  • parisc: Refresh defconfigs
  • parport: gsc: remove DMA leftover code
  • parisc/mm: preallocate fixmap page tables at init (backported to v6.3)
  • parisc: pci-dma: remove unused and dead EISA code and comment
  • parisc: unaligned: Add required spaces after ','
  • parisc: Fix lightweight spinlock checks to not break futexes (backported to v6.4+)
  • parisc: fault: Use C99 arrary initializers
  • parisc: ioremap: Fix sparse warnings
  • parisc: signal: Fix sparse incorrect type in assignment warning
  • parisc: firmware: Fix sparse context imbalance warnings
  • parisc: firmware: Mark pdc_result buffers local
  • parisc: ucmpdi2: Fix no previous prototype for '__ucmpdi2' warning
  • parisc: parisc_ksyms: Include libgcc.h for libgcc prototypes
  • parisc: dma: Add prototype for pcxl_dma_start
  • parisc: Move proc_mckinley_root and proc_runway_root to sba_iommu
  • parisc: unaligned: Include linux/sysctl.h for unaligned_enabled
  • parisc: processor: Include asm/smp.h for init_per_cpu()
  • parisc: boot: Nuke some sparse warnings in decompressor
  • parisc: ftrace: Add declaration for ftrace_function_trampoline()
  • parisc: perf: Make cpu_device variable static
  • parisc: pdt: Use PTR_ERR_OR_ZERO() to simplify code
  • parisc: Fix CONFIG_TLB_PTLOCK to work with lightweight spinlock checks (backported to v6.4+)
  • lib/clz_ctz.c: Fix __clzdi2() and __ctzdi2() for 32-bit kernels (backported to v3.11+) 10-year-old-bug

Kernel 6.6

Kernel 6.7

Kernel 6.8

DONE items

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