Re: git: 832acea92fc8 - main - icl_soft: Use PHYS_TO_DMAP instead of pmap_map_io_transient.
Date: Fri, 11 Mar 2022 17:20:50 UTC
On 3/11/22 1:32 AM, Andrew Turner wrote: > > >> On 11 Mar 2022, at 02:21, John Baldwin <jhb@freebsd.org> wrote: >> >> The branch main has been updated by jhb: >> >> URL: https://cgit.FreeBSD.org/src/commit/?id=832acea92fc8cdb55859a6a4b1bc38bf766780f1 >> >> commit 832acea92fc8cdb55859a6a4b1bc38bf766780f1 >> Author: John Baldwin <jhb@FreeBSD.org> >> AuthorDate: 2022-03-11 02:20:28 +0000 >> Commit: John Baldwin <jhb@FreeBSD.org> >> CommitDate: 2022-03-11 02:20:28 +0000 >> >> icl_soft: Use PHYS_TO_DMAP instead of pmap_map_io_transient. > > The i386 and arm version of PHYS_TO_DMAP is: > #define PHYS_TO_DMAP(x) ({ panic("No direct map exists"); 0; }) > > On these architectures there is no DMAP region. > > On powerpc there may not be a DMAP region. It appears to depend on the CPU. > > You can use PMAP_HAS_DMAP to check if the DMAP region is supported, however you’ll need a fallback to create a temporary mapping. The earlier commit does use PMAP_HAS_DMAP to set ic->unmapped, so these functions are not used as CAM won't schedule CCB's with CAM_DATA_BIO. (The detail about honoring PMAP_HAS_DMAP is in the log of the previous commit to icl_soft.c.) This is similar to how GELI deals with supporting unmapped I/O requests (it only advertises support from the disk layer if PMAP_HAS_DMAP is true). -- John Baldwin