mbox series

[0/8] Resurect RiscPC support

Message ID 20190520144615.gzrztyhoncyfc5xr@shell.armlinux.org.uk (mailing list archive)
Headers show
Series Resurect RiscPC support | expand

Message

Russell King (Oracle) May 20, 2019, 2:46 p.m. UTC
Support for RiscPC still mostly works, but there have been some
breakages along the way since 2.6 kernels (the last kernel I ran on my
RiscPC.)  Notable breakages are:

- Conversion to generic IRQ broke the keyboard.
- A patch to avoid modifying SG entries for IOMD DMA broke DMA support
  (which only affects expansion cards.)
- Cosmentic breakage due to printk() behavioural changes.
- The kernel size grew beyond the ability for the RISC OS boot loader
  application to cope, which has been resolved in the latest version of
  !Linux.

These issues are resolved in this series, as well as removing RiscPC's
usage of the old gettimeoffset facility.

However, RiscPC timekeeping suffers greatly on recent kernels compared
to 2.6 series kernels: the change to make all interrupt handlers run
with IRQs off means that we are no longer able to receive timer
interrupts while (eg) PIO data is being transferred to the internal
drive, which is a very time-consuming operation.  This is soo bad that
NTP is unable to fix the problem, and there is no way to resolve this
regression from a hardware point of view.

That said, using an external disk connected via an expansion card
allows the use of DMA, thereby allowing the problem to be bypassed.

Keeping RiscPC support alive in the kernel, however, is beneficial to
on-going maintanence of fs/adfs support, which still has users.

This patch series is currently against 5.1, but should merge with
v5.2-rc1.

Merge plan: I'll send a pull request to arm-soc for this in due course.

 arch/arm/Kconfig          |  1 -
 arch/arm/mach-rpc/dma.c   | 97 ++++++++++++++++++++++++-----------------------
 arch/arm/mach-rpc/ecard.c | 11 ++++--
 arch/arm/mach-rpc/irq.c   |  3 +-
 arch/arm/mach-rpc/time.c  | 38 ++++++++++++-------
 5 files changed, 83 insertions(+), 67 deletions(-)