[OpenBIOS] [PATCH 00/15] Implement dma-* words

Mark Cave-Ayland mark.cave-ayland at ilande.co.uk
Mon May 21 23:33:07 CEST 2018


This patchset is something I've been working on for a while and started
off with the aim of getting rid of the "dma-alloc" console warnings
whilst booting *BSD images on PPC, but ended up as a full implementation
for SPARC32/SPARC64 and PPC.

The patchset is fairly straightfoward: the first few patches rework the
SPARC32 DVMA functions to make them usable from Forth, whilst patch 8
adds a missing D-cache flush for PPC which could certainly do with another
set of eyes.

The remainder of the patches add PPC and SPARC64 support before adding
in the complete "dma-*" $call-parent chains to enable devices to call
the DMA functions as indicated in the IEEE-1275 specification and
various FCode examples found around the net.

Finally the last 2 patches switch the esp SCSI driver over to use the
IEEE-1275 Forth words instead of calling the low-level C functions
directly.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland at ilande.co.uk>


Mark Cave-Ayland (15):
  dma: add defers for the dma-* words
  SPARC32: rename dvma_alloc()'s ba variable to iova
  SPARC32: allocate contiguous physical memory for DVMA
  SPARC32: implement dvma_map_in() for DMA IOVA to phys translation
  SPARC32: move pgtsrmmu.h from arch/sparc32 to include/arch/sparc32
  SPARC32: implement dvma_sync() function for synchronising DMA memory
  SPARC32: implement dma-* words
  PPC: add flush_dcache_range() to start.S
  PPC: implement dma-* words
  SPARC64: implement dma-* words
  macio: add missing REGISTER_NODE for New World macio devices
  pci: add dma-* call-parent chain to all PCI devices and bridges
  sbus: add dma-* call-parent chain to all PCI devices and bridges
  esp: switch creation of esp device over to use new-device
  esp: switch over to using dma-alloc/dma-map-in

 arch/ppc/qemu/init.c                      |  35 +++++++
 arch/ppc/qemu/kernel.h                    |   1 +
 arch/ppc/qemu/start.S                     |  21 ++++
 arch/ppc/qemu/tree.fs                     |  40 ++++++++
 arch/sparc32/lib.c                        |   2 +-
 arch/sparc32/ofmem_sparc32.c              |   2 +-
 arch/sparc32/openbios.c                   |  47 ++++++++-
 arch/sparc32/tree.fs                      |  56 +++++++++++
 arch/sparc64/openbios.c                   |  40 ++++++++
 arch/sparc64/tree.fs                      |  47 +++++++++
 drivers/esp.c                             | 159 ++++++++++++++++++++----------
 drivers/ide.c                             |  40 ++++++++
 drivers/iommu.c                           |  95 +++++++++++++++---
 drivers/macio.c                           |  36 +++++++
 drivers/pci.c                             |  40 ++++++++
 forth/device/other.fs                     |   8 +-
 forth/device/table.fs                     |   2 +-
 forth/util/util.fs                        |   9 ++
 {arch => include/arch}/sparc32/pgtsrmmu.h |   0
 include/drivers/drivers.h                 |   4 +-
 packages/disk-label.fs                    |  39 ++++++++
 21 files changed, 646 insertions(+), 77 deletions(-)
 rename {arch => include/arch}/sparc32/pgtsrmmu.h (100%)

-- 
2.11.0




More information about the OpenBIOS mailing list