#
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 ...
|