Home | History | Annotate | Download | only in drm
History log of /src/sys/external/bsd/drm2/include/drm/bus_dma_hacks.h
RevisionDateAuthorComments
 1.25  19-Jul-2022  riastradh drm: Teach bus_dma_hacks.h about alpha.

Not sure if this is correct! Someone who knows alpha should vet.
 1.24  19-Dec-2021  riastradh drm: Fix index confusion and rename variables to clarify.
 1.23  19-Dec-2021  riastradh drm: Let's go one segment at a time, not two, shall we?
 1.22  19-Dec-2021  riastradh drm: Another pass over i915 and some supporting logic.

This makes a shim around sg_table, which essentially represents two
things:

1. an array of pages (roughly corresponding to bus_dma_segment_t[])
2. an array of DMA addresses stored in a bus_dmamap_t

Both parts are optional; different parts of i915 use sg_tables to
pass around one or both of the two parts. This helps to reduce the
ifdefs by quite a bit, although it's not always clear which part of
an sg_table any particular interface is actually using which is why I
was reluctant to do this before.
 1.21  19-Dec-2021  riastradh drm: Nix use of uvm pglist. Just use arrays of page pointers.
 1.20  20-Feb-2020  mrg in bus_dmamap_load_pglist() try a 32-element array of
bus_dma_segment_t's before attempting to allocate.

this hopefully avoids hangs i've had in X since updating
from netbsd-8 to netbsd-9 that i've tracked down to this
function failing with ENOMEM.

XXX: maybe can avoid the alloc entirely by batching these
calls in 32 segments each.

XXX pullup-9
 1.19  22-Jan-2020  jmcneill Fix PHYS_TO_BUS_MEM and BUS_MEM_TO_PHYS on arm and aarch64
 1.18  05-Nov-2019  jmcneill branches: 1.18.2;
Arm DMA tags with _nranges=0 require no address translation. Handle this
in PHYS_TO_BUS_MEM and BUS_TO_PHYS_MEM instead of panicing.
 1.17  27-Aug-2018  riastradh branches: 1.17.4;
Check for DMA-safe addresses before allowing DRM prime import.
 1.16  27-Aug-2018  riastradh Implement BUS_DMA_TO_PHYS/PHYS_TO_BUS_DMA on arm respecting ranges.
 1.15  27-Aug-2018  riastradh At chuq's suggestion, use paddr_t rather than struct vm_page *.

Doesn't make much of a substantive difference.
 1.14  27-Aug-2018  riastradh sparc seems to treat bus/phys addrs in bus dmamem the same.

This is just about bus dmamem -- not about bus dmamap, which rightly
uses an iommu to remap things and which we don't interfere with.
 1.13  27-Aug-2018  riastradh Eliminate now-unused bus_dmamap_load_pgarray.
 1.12  27-Aug-2018  riastradh Rework drm prime guts.

- Our faux struct sg_table is now just an array of _pages_, not of
bus dma segments.

- We handle bus dma segments only in the presence of an adult bus dma
tag.

- All bus dma hacks are once again confined to bus_dma_hacks.h, and
more neatly organized:
. bus_dmamem_export_pages translates bus dma segs to vm_page array
. bus_dmamem_import_pages translates vm_page array to bus dma segs
 1.11  27-Aug-2018  riastradh Use PHYS_TO_BUS_MEM in generic bus_dmamap_load_pglist code.

For arm and x86, this is a noop. For powerpc, it is defined by some
relevant header file.
 1.10  27-Aug-2018  riastradh Kill bus_dmamem_wire_uvm_object, which never made sense!
 1.9  01-Apr-2018  ryo branches: 1.9.2;
Add initial support for ARMv8 (AARCH64) (by nisimura@ and ryo@)

- sys/arch/evbarm64 is gone and integrated into sys/arch/evbarm. (by skrll@)
- add support fdt. evbarm/conf/GENERIC64 fdt (bcm2837,sunxi,tegra) based generic 64bit kernel config. (by skrll@, jmcneill@)
 1.8  17-Oct-2015  jmcneill branches: 1.8.16;
use VM_FREELIST_DEFAULT on arm
 1.7  26-Jul-2014  riastradh branches: 1.7.4; 1.7.6;
Avoid needless #ifdef __i386__ with judicious use of MIN.
 1.6  22-Jul-2014  riastradh Free temporary segs on the way out of bus_dmamap_load_pglist.
 1.5  16-Jul-2014  riastradh First whack at radeon driver.

No hardware to test yet, but it builds.
 1.4  16-Jul-2014  riastradh Make it build and boot on my test machines.

Screen blanks on boot on the Ivy Bridge system with

DRM error in cpt_serr_int_handler: PCH transcoder A FIFO underrun

But after that everything is OK. Appears to be an upstream problem.
To investigate...

I think there's a cache flushing issue somewhere -- there are little
display artefacts on my T60.
 1.3  03-Apr-2014  riastradh branches: 1.3.2; 1.3.4; 1.3.6;
Miscellaneous fixes for drm2 on i386.
 1.2  18-Mar-2014  riastradh Merge riastradh-drm2 to HEAD.
 1.1  08-Sep-2013  riastradh branches: 1.1.2;
file bus_dma_hacks.h was initially added on branch riastradh-drm2.
 1.1.2.1  08-Sep-2013  riastradh Implement a bus_dmamem_wire_uvm_object hack.

This is fit only for x86 at the moment -- it parrots the x86
bus_dmamem_alloc code but with uvm_obj_wirepages instead of
uvm_pglistalloc.

XXX THIS IS A MEGA-KLUDGE THAT NEEDS TO BE DONE PROPERLY.
 1.3.6.2  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.6.1  03-Apr-2014  yamt file bus_dma_hacks.h was added on branch yamt-pagecache on 2014-05-22 11:40:55 +0000
 1.3.4.2  18-May-2014  rmind sync with head
 1.3.4.1  03-Apr-2014  rmind file bus_dma_hacks.h was added on branch rmind-smpnet on 2014-05-18 17:46:01 +0000
 1.3.2.1  10-Aug-2014  tls Rebase.
 1.7.6.1  27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.7.4.3  03-Dec-2017  jdolecek update from HEAD
 1.7.4.2  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.7.4.1  26-Jul-2014  tls file bus_dma_hacks.h was added on branch tls-maxphys on 2014-08-20 00:04:21 +0000
 1.8.16.2  06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.8.16.1  07-Apr-2018  pgoyette Sync with HEAD. 77 conflicts resolved - all of them $NetBSD$
 1.9.2.3  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.9.2.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.9.2.1  10-Jun-2019  christos Sync with HEAD
 1.17.4.2  21-Mar-2020  martin Pull up following revision(s) (requested by mrg in ticket #791):

sys/external/bsd/drm2/include/drm/bus_dma_hacks.h: revision 1.20

in bus_dmamap_load_pglist() try a 32-element array of
bus_dma_segment_t's before attempting to allocate.
this hopefully avoids hangs i've had in X since updating
from netbsd-8 to netbsd-9 that i've tracked down to this
function failing with ENOMEM.

XXX: maybe can avoid the alloc entirely by batching these
calls in 32 segments each.

XXX pullup-9
 1.17.4.1  06-Nov-2019  martin Pull up following revision(s) (requested by jmcneill in ticket #400):

sys/arch/arm/sunxi/sunxi_drm.c: revision 1.8
sys/external/bsd/drm2/dist/include/drm/drm_gem_cma_helper.h: revision 1.6
sys/external/bsd/drm2/dist/include/drm/drmP.h: revision 1.36
sys/external/bsd/drm2/include/drm/bus_dma_hacks.h: revision 1.18
sys/external/bsd/drm2/drm/drm_gem_cma_helper.c: revision 1.9
sys/external/bsd/drm2/include/drm/drm_os_netbsd.h: revision 1.15

Arm DMA tags with _nranges=0 require no address translation. Handle this
in PHYS_TO_BUS_MEM and BUS_TO_PHYS_MEM instead of panicing.

Add support for DRM GEM/CMA helpers using a driver provided vmem arena.

Reserve enough memory at boot to support the drmfb buffer plus a 4K buffer
for Xorg.
 1.18.2.2  29-Feb-2020  ad Sync with head.
 1.18.2.1  25-Jan-2020  ad Sync with head.

RSS XML Feed