TODO

From Linux PARISC Wiki
(Difference between revisions)
Jump to: navigation, search
m (PA-RISC Linux TODO (actually this is Helge's TODO list))
m (Status & TODO 2016-05-07)
Line 1: Line 1:
 
= PA-RISC Linux TODO (actually this is Helge's TODO list) =
 
= PA-RISC Linux TODO (actually this is Helge's TODO list) =
  
== Status & TODO 2016-05-07 ==
+
== Status & TODO 2016-05-13 ==
 
* add wiki page about kernel cross-compiling
 
* add wiki page about kernel cross-compiling
  
Line 19: Line 19:
 
** Add KASLR (Kernel Address Layout Randomization, ARCH_HAS_ELF_RANDOMIZE, arch_mmap_rnd() and such) - like arm64
 
** Add KASLR (Kernel Address Layout Randomization, ARCH_HAS_ELF_RANDOMIZE, arch_mmap_rnd() and such) - like arm64
 
** convert irq handling to use CONFIG_IRQ_DOMAIN_HIERARCHY (serial port problem, action handler msising when registering irq)
 
** convert irq handling to use CONFIG_IRQ_DOMAIN_HIERARCHY (serial port problem, action handler msising when registering irq)
** Due to very bad performance running multiple copies of dot program (Dave):
+
** Due to very bad performance running multiple copies of dot program (Dave)
 +
*** In vtk6 debian package, adding DOT_NUM_THREADS = 1 helps.
 
*** Another issue that I have been wondering about is the performance of our kernel spinlock code.  PA 8800 and PA 8900 processors have a cache line length of 128 bytes.  I believe thereare some places where we assume 64 bytes.  We also allocate spinlocks on 16 byte boundaries. We might get better performance if we allocated on 32 (PA 1.X) and 128 (PA 2.0).  Helge: change: __PA_LDCW_ALIGNMENT
 
*** Another issue that I have been wondering about is the performance of our kernel spinlock code.  PA 8800 and PA 8900 processors have a cache line length of 128 bytes.  I believe thereare some places where we assume 64 bytes.  We also allocate spinlocks on 16 byte boundaries. We might get better performance if we allocated on 32 (PA 1.X) and 128 (PA 2.0).  Helge: change: __PA_LDCW_ALIGNMENT
 
*** I've also seen that better performance may be obtained by doing a byte store to spinlock prior to ldcw.  This dirties the cache line and allows operation in cache in certain situations. I think this mainly applies to PA 1.X but I'm not sure.  I have some example code somewhere. Helge:  change struct arch_spinlock_t; in spinlock_types.h
 
*** I've also seen that better performance may be obtained by doing a byte store to spinlock prior to ldcw.  This dirties the cache line and allows operation in cache in certain situations. I think this mainly applies to PA 1.X but I'm not sure.  I have some example code somewhere. Helge:  change struct arch_spinlock_t; in spinlock_types.h

Revision as of 13:35, 13 May 2016

Contents

PA-RISC Linux TODO (actually this is Helge's TODO list)

Status & TODO 2016-05-13

  • add wiki page about kernel cross-compiling
  • Kernel: still missing Linux kernel development (no patches available yet):
    • Fix kernel to load -fpie compiled programs not at 0x400000
    • maybe implement transparent huge pages (due to cache coherency technically only possible on PA8500-PA8700 CPUs, not possible on PA8800-PA8900 CPUs)
    • optimize flush_dcache_page() implementation like sparc. See Documentation/cachetlb.txt, e.g. used in aio subsystem
    • fix wrong _init notation in kernel
    • NO_IRQ -> should be converted to (0) instead of (-1) -> Helge (check assembly, check in drivers/parisc/*)
    • implement alternative coding for UP/SMP. See arch/x86/include/asm/alternative.h
    • check assembly in drivers/parisc/*
    • use pdc_add_valid() in kern_addr_valid(), protect against crashable acesses (like for superio-pc-drivers-detection in lp), add pdc_add_valid() to create a probe_kernel_read() implementation.
    • arch/parisc/kernel/sys_parisc.c -> use SYSCALL_ALIAS() -> maybe
    • implement libnuma kernel support to report on C8000 one socket with 2 cores.
    • Review gettimeofday and clock_gettime() implementation, possibly use a light-weight-syscall and rely on cr16 and cpu speed for more accurate timing? similiar to commit http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=18ad51dd342a7eb09dbcd059d0b451b616d4dafc
  • Kernel: Low priority patches needs further work
    • 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.
    • Visualize FX support (will probably never happen!)
    • 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.
  • Debian packages / Userspace work
    • IMPORTANT: fix OpenJDK - fixes required in zeroport (stack grows up!).
    • Fix qemu
    • 64-bit userspace, 64-bit binutils needs to be fixed to get multiple stub section support.
    • gcc -> join 32- and 64bit compiler, make "-m64" work, get rid of hppa64-linux-gnu-gcc
  • userspace
  • palo (PA-RISC Boot Loader):
    • Modify (if possible), that palo can read (sequential) tftpbootable-vmlinuxes as well as the current boot-vmlinux images (simplifies build/handling)
    • move decompression of Kernel to Linux kernel code instead of palo

Upstream PA-RISC-related kernel patch history

Debian kernel and userspace programs

ABI breakages (HP-UX support)

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

Testsuites, kernel and userspace testing tools

TODO Drivers

  • IPMI support on rp-class / Support graceful shutdown from BMC on rp servers (`PC -GRACEFUL`)
  • 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!

  • ns87415 dma doesn't work reliably on suckyio-systems
Personal tools