History log of /openbsd/sys/arch/m88k/include/cmmu.h (Results 1 – 25 of 32)
Revision Date Author Comments
# c0c4242b 16-Nov-2013 miod <miod@openbsd.org>

Allow initial device mappings (from pmap_table) to be backed up by BATC.
Use this on luna88k to map the bitmap planes of the frame buffer used by
the driver. 10% speedup under X.


# b3edb888 02-Nov-2013 miod <miod@openbsd.org>

Create the initial page tables in the area between the end of the firmware
data area and the kernel image, whenever possible.

On 88100/88200 systems, use BATC mappings to map the kernel text (and th

Create the initial page tables in the area between the end of the firmware
data area and the kernel image, whenever possible.

On 88100/88200 systems, use BATC mappings to map the kernel text (and the
kernel data for non-MULTIPROCESSOR kernels). 88110 to follow soon.

show more ...


# 05906183 17-May-2013 miod <miod@openbsd.org>

Extend cmmu routines to return the caching mode to use for page tables.

Alter the 88200-specific code to enforce cache-inhibited page tables for
extremely old 88200 versions, and to disable write-ba

Extend cmmu routines to return the caching mode to use for page tables.

Alter the 88200-specific code to enforce cache-inhibited page tables for
extremely old 88200 versions, and to disable write-back caching on systems
where xmem instructions do not behave correctly when applied to write-back
cached addresses.

No change introduced on 88110 systems, as well as most 88100 systems; the
affected systems are 88100 systems with 88100 revision < 10 and/or 88200
revision < 7; that is, only early MVME181 and MVME188 (not 188A) systems.

show more ...


# 347e898e 19-Feb-2013 miod <miod@openbsd.org>

Introduce a new cmmu method to return the preferred cache mode bits for the
kernel APR. Return write-back for every design but those involving 88410,
where write through is returned.

Apparently the

Introduce a new cmmu method to return the preferred cache mode bits for the
kernel APR. Return write-back for every design but those involving 88410,
where write through is returned.

Apparently the use of writeback on single-processor kernels using 88410 (197SP,
197DP) has only been working by fat chance, and the last two years of uvm
changes, as well as the switch to ELF (causing kernel rodata to move `up')
exposes silent memory corruption on (88410-size) aliased addresses.
(I am guilty of not using my 197DP board much after making 197LE write-back
capable, as 197LE turned out to be faster and more stable, for I would have
noticed this earlier).

Further thought needs to happen about this. It might be possible to switch to
writeback by default again as long as bus_dma maps things write-through on
88410 designs, and perhaps with a part of the kernel mapped with a write-through
BATC, since BATC have precedence upon page tables. Right now I'm trying to get
a stable release out of the door.

show more ...


# 842cee7c 17-Feb-2013 miod <miod@openbsd.org>

Constify struct cmmu.


# 4ccfb91d 25-Oct-2011 miod <miod@openbsd.org>

Replace the naive 88110 tlb update code, which would always invalidate the
whole tlb (32 of 'em), with smarter `tlb probe and update with new pte if tlb
match found' code. This makes the 88110-specif

Replace the naive 88110 tlb update code, which would always invalidate the
whole tlb (32 of 'em), with smarter `tlb probe and update with new pte if tlb
match found' code. This makes the 88110-specific pmap_update() unnecessary, as
updates are no longer aggregated to avoid the number of flushes. This also
makes tlb handling similar between 88100 and 88110, from the pmap's point of
view, so there is no need to use different routines.

No impact on 88100, no user-noticeable performance change on 88100 GENERIC,
slight improvement on 88110 GENERIC.MP.

show more ...


# b1cc216f 05-Jan-2011 miod <miod@openbsd.org>

Now that pmap_copy_page() no longer needs to flush a couple contiguous tlb
entries, drop the count parameter to cmmu_tlb_inv(), and introduce
cmmu_tlb_inv_all() to drop all user tlb entries (to be us

Now that pmap_copy_page() no longer needs to flush a couple contiguous tlb
entries, drop the count parameter to cmmu_tlb_inv(), and introduce
cmmu_tlb_inv_all() to drop all user tlb entries (to be used during context
switches).

show more ...


# acaa1300 31-Dec-2010 miod <miod@openbsd.org>

Introduce a new cmmu routine, for page writebacks without invalidate. Will be
used two commits from now.


# ec85fa53 31-Dec-2010 miod <miod@openbsd.org>

Standardize cache handling functions and defines to use wb/wbinv/inv instead
of flush/sync/inval. No functional change.


# 8c721d3f 22-Jun-2010 miod <miod@openbsd.org>

Since our caches are snooping, we only need to broadcast cache invalidates
on 88110 designs. Brings a ~8% speedup on GENERIC.MP on 197DP.


# bee5e359 16-Feb-2009 miod <miod@openbsd.org>

More 88110 SMP work. Contains, horribly entangled:
- dma_cachectl() split into a ``local cpu only'' and ``all cpus'', and an ipi
to broadcast ``local dma_cachectl'' is added.
- cpu_info fields are

More 88110 SMP work. Contains, horribly entangled:
- dma_cachectl() split into a ``local cpu only'' and ``all cpus'', and an ipi
to broadcast ``local dma_cachectl'' is added.
- cpu_info fields are rearranged, to have the 88100-specific information
and the 88110-specific information overlap, and has many more 88110
ugly things.
- more ipi handling in the 197-specific area. Since it is not possible to
have the second processor receive any hardware interrupt (selection
is done on a level basis via ISEL, and we definitely do not want the
main cpu to lose interrupts), the best we can do is to inflict ourselves
a soft interrupt for late ipi processing. It gets used for softclock and
hardclock on the secondary processor, but since the soft interrupt
dispatcher doesn't have an exception frame, we have to remember parts
of it to build a fake clockframe from the soft ipi handler (ugly but
works).

This now lets GENERIC.MP run a few userland binaries before bugs trigger.

show more ...


# 0f19f6f9 01-Feb-2009 miod <miod@openbsd.org>

Remove dma_cachectl() and rename dma_cachectl_pa() to dma_cachectl() now that
the old vs(4) code is gone.


# a50b8c3c 15-Dec-2007 miod <miod@openbsd.org>

Move the cmmu lock back from 8820x-specific code to global, and use it on
MVME197DP to serialize 88410 operations.


# 2a702c5f 22-Nov-2007 miod <miod@openbsd.org>

Remove the cpu parameter from cmmu_set_sapr(), since it is only invoked
for the current processor. And remove now unused cmmu_flush_data_page().


# eb723c79 22-Nov-2007 miod <miod@openbsd.org>

Move the cmmu lock to 88200-specific code. 88110 MP code will use ipis
and will not require such a lock.


# c1231ab6 11-Feb-2007 miod <miod@openbsd.org>

Rework the cache handling routines again. We now try to operate on the exact
address range we've been given, rounded to cache line boundaries, instead
of being lazy and operating on pages as soon as

Rework the cache handling routines again. We now try to operate on the exact
address range we've been given, rounded to cache line boundaries, instead
of being lazy and operating on pages as soon as the range was large enough.

Also, since the ranges we'll be invoked for are reasonably small, it does
not make sense to check for segment sizes - we're always smaller, really.

While there, hardcode the size in cmmu_flush_data_cache(), which becomes
cmmu_flush_data_page(), since it was always invoked for complete pages.

show more ...


# 7625720e 11-Dec-2005 miod <miod@openbsd.org>

Work in progress SMP code; mvme88k boards can spin up secondary CPUs,
kernel boots single user. Still a lot of polishing and bugfixing to do.


# 63bae11e 04-Dec-2005 miod <miod@openbsd.org>

Let cmmu_init() now return the cpuid of the master cpu.


# 7628c440 04-Dec-2005 miod <miod@openbsd.org>

Slight cmmu code cleanup; use shorter function names, remove parity_enable
and the DDB and DEBUG helpers which are of questionable usefulness, some
stylistic changes.


# d66f8823 03-Dec-2005 miod <miod@openbsd.org>

Replace simplelocks with __cpu_simple_locks for cmmu and pmap locking,
for the MULTIPROCESSOR case.


# 0934804c 03-Dec-2005 miod <miod@openbsd.org>

Switch m88k ports to __HAVE_CPUINFO. Current cpu pointer is held in SR0
on all running processors.
Tested aoyama@ and I


# e35741c2 02-Dec-2005 miod <miod@openbsd.org>

Better choice of types for struct pmap members and cmmu functions;
no functional change.


# 64fdaa7e 25-Nov-2005 miod <miod@openbsd.org>

Let the cache synchronization and invalidation functions report whether
they caused the entire cache to be processed.


# 4464dd03 25-Sep-2005 miod <miod@openbsd.org>

Change the size parameter of cmmu_flush_tlb() from bytes to pages. This makes
things easier for the callers, and allows us to inline the "fewer than 4 pages"
situation for speed.


# 1839c07d 27-Apr-2005 miod <miod@openbsd.org>

Allow userland to cause the data cache to be flushed for any arbitrary address
range in the current process, using trap #451.

This is necessary for proper gcc trampolines operation, and, later, ld.s

Allow userland to cause the data cache to be flushed for any arbitrary address
range in the current process, using trap #451.

This is necessary for proper gcc trampolines operation, and, later, ld.so...

show more ...


12