The NetBSD Project

CVS log for src/sys/arch/aarch64/aarch64/pmap.c

[BACK] Up to [cvs.NetBSD.org] / src / sys / arch / aarch64 / aarch64

Request diff between arbitrary revisions


Default branch: MAIN


Revision 1.151 / (download) - annotate - [select for diffs], Fri Feb 16 21:32:17 2024 UTC (2 months ago) by andvar
Branch: MAIN
CVS Tags: HEAD
Changes since 1.150: +3 -3 lines
Diff to previous 1.150 (colored) to selected 1.8 (colored)

Replace obsolete pv_dump() call with pmap_db_mdpg_print().

It was rewritten on rev 1.107, but not replaced with new implementation in
PMAP_PV_DEBUG guarded block.

Revision 1.150 / (download) - annotate - [select for diffs], Wed Feb 7 04:20:26 2024 UTC (2 months, 1 week ago) by msaitoh
Branch: MAIN
Changes since 1.149: +3 -3 lines
Diff to previous 1.149 (colored) to selected 1.8 (colored)

Remove ryo@'s mail addresses.

Revision 1.149 / (download) - annotate - [select for diffs], Thu Apr 20 08:28:02 2023 UTC (11 months, 4 weeks ago) by skrll
Branch: MAIN
CVS Tags: thorpej-ifq-base, thorpej-ifq, thorpej-altq-separation-base, thorpej-altq-separation
Changes since 1.148: +4 -115 lines
Diff to previous 1.148 (colored) to selected 1.8 (colored)

Provide a shared pmap_devmap implementation and convert all pmap_devmap
arrays to use DEVMAP_ENTRY{,_END}

Revision 1.148 / (download) - annotate - [select for diffs], Sun Apr 16 14:01:51 2023 UTC (12 months ago) by skrll
Branch: MAIN
Changes since 1.147: +4 -4 lines
Diff to previous 1.147 (colored) to selected 1.8 (colored)

Rename VM_KERNEL_IO_ADDRESS to VM_KERNEL_IO_BASE to match RISC-V

It's less letters, matches other similar variables and will help with
sharing code between the two architectures.

NFCI.

Revision 1.147 / (download) - annotate - [select for diffs], Sun Oct 30 14:08:09 2022 UTC (17 months, 2 weeks ago) by riastradh
Branch: MAIN
CVS Tags: netbsd-10-base, netbsd-10-0-RELEASE, netbsd-10-0-RC6, netbsd-10-0-RC5, netbsd-10-0-RC4, netbsd-10-0-RC3, netbsd-10-0-RC2, netbsd-10-0-RC1, netbsd-10
Changes since 1.146: +3 -3 lines
Diff to previous 1.146 (colored) to selected 1.8 (colored)

aarch64/pmap: Fix criterion in previous.

Use the pte bit that says whether this is a PMAP_WIRED page, not the
bit that says whether this is a non-global page.

(Forgot to git commit --amend before exporting to CVS, sorry!)

Revision 1.146 / (download) - annotate - [select for diffs], Sun Oct 30 10:26:48 2022 UTC (17 months, 2 weeks ago) by riastradh
Branch: MAIN
Changes since 1.145: +20 -16 lines
Diff to previous 1.145 (colored) to selected 1.8 (colored)

aarch64/pmap(9): Teach pmap_protect about pmap_kenter_pa mappings.

Pages mapped with pmap_kenter_pa are necessarily unmanaged, so there
are no P->V records, and pmap_kenter_pa leaves pp->pp_pv.pv_va zero
with no modified/referenced state.

However, pmap_protect erroneously examined pp->pp_pv.pv_va to
ascertain the modified/referenced state -- and if the page was not
marked referenced, pmap_protect would clear the LX_BLKPAG_AF bit
(Access Flag), with the effect that subsequent uses of the page fault
and require a detour through pmap_fault_fixup.

This caused problems for the kernel module loader:

- When loading the text section, kobj_load first allocates kva with
  uvm_km_alloc(UVM_KMF_WIRED|UVM_KMF_EXEC), which creates ptes with
  pmap_kenter_pa.  These ptes are writable, so we can copy the text
  section into them, and have LX_BLKPAG_AF set so there will be no
  fault when they are used by the kernel.

- But then kobj_affix makes the text section read/execute-only (and
  nonwritable) with uvm_km_protect(VM_PROT_READ|VM_PROT_EXECUTE),
  which updates the ptes with pmap_protect.  This _should_ leave
  LX_BLKPAG_AF set, but by inadvertently treating the page as managed
  when it should be unmanaged, pmap_protect cleared it instead.

- Most of the time, clearing LX_BLKPAG_AF caused no problem, because
  pmap_fault_fixup would silently resolve it.  But if a hard
  interrupt handler tried to use any page in the module's text (or
  rodata, I suspect) that was not yet fixed up, the CPU would fault
  and enter pmap_fault_fixup -- which would promptly crash (or hang)
  by trying to take the pmap lock in interrupt context, which is
  forbidden.

  I observed this by loading dtrace.kmod early at boot and trying to
  dtrace hard interrupt handlers.

With this change, pmap_protect now recognizes wired mappings (as
created by pmap_kenter_pa) before consulting pp->pp_pv.pv_va, and
preserves then LX_BLKPAG_AF bit in that case.

ok skrll

Revision 1.145 / (download) - annotate - [select for diffs], Sat Oct 29 07:21:41 2022 UTC (17 months, 2 weeks ago) by skrll
Branch: MAIN
Changes since 1.144: +3 -3 lines
Diff to previous 1.144 (colored) to selected 1.8 (colored)

fix a spello in a comment

Revision 1.144 / (download) - annotate - [select for diffs], Fri Oct 28 06:22:26 2022 UTC (17 months, 2 weeks ago) by skrll
Branch: MAIN
Changes since 1.143: +2 -5 lines
Diff to previous 1.143 (colored) to selected 1.8 (colored)

Remove some empty lines

Revision 1.143 / (download) - annotate - [select for diffs], Sun Oct 23 07:04:44 2022 UTC (17 months, 3 weeks ago) by skrll
Branch: MAIN
Changes since 1.142: +4 -3 lines
Diff to previous 1.142 (colored) to selected 1.8 (colored)

Use UVMHIST_CALLARGS in pmap_bootstrap

Revision 1.142 / (download) - annotate - [select for diffs], Sun Oct 23 07:02:26 2022 UTC (17 months, 3 weeks ago) by skrll
Branch: MAIN
Changes since 1.141: +6 -3 lines
Diff to previous 1.141 (colored) to selected 1.8 (colored)

Only define the EFI variable if EFI_RUNTIME

Revision 1.141 / (download) - annotate - [select for diffs], Thu Oct 20 06:47:29 2022 UTC (17 months, 4 weeks ago) by skrll
Branch: MAIN
Changes since 1.140: +15 -15 lines
Diff to previous 1.140 (colored) to selected 1.8 (colored)

KNF

Revision 1.140 / (download) - annotate - [select for diffs], Sat Oct 15 11:07:38 2022 UTC (18 months ago) by jmcneill
Branch: MAIN
Changes since 1.139: +5 -5 lines
Diff to previous 1.139 (colored) to selected 1.8 (colored)

Use "non-posted" instead of "strongly ordered" to describe nGnRnE mappings

Rename the following defines:
 - _ARM_BUS_SPACE_MAP_STRONGLY_ORDERED to BUS_SPACE_MAP_NONPOSTED
 - PMAP_DEV_SO to PMAP_DEV_NP
 - LX_BLKPAG_ATTR_DEVICE_MEM_SO to LX_BLKPAG_ATTR_DEVICE_MEM_NP
Rename the following option:
 - AARCH64_DEVICE_MEM_STRONGLY_ORDERED to AARCH64_DEVICE_MEM_NONPOSTED

Revision 1.139 / (download) - annotate - [select for diffs], Fri Aug 19 08:17:32 2022 UTC (19 months, 4 weeks ago) by ryo
Branch: MAIN
CVS Tags: bouyer-sunxi-drm-base, bouyer-sunxi-drm
Changes since 1.138: +3 -2 lines
Diff to previous 1.138 (colored) to selected 1.8 (colored)

Fixed a bug that pte's __BIT(63,48) could be set when accessing addresses above 0x0001000000000000 in /dev/mem with mmap().

Revision 1.138 / (download) - annotate - [select for diffs], Fri Aug 19 07:45:50 2022 UTC (19 months, 4 weeks ago) by ryo
Branch: MAIN
Changes since 1.137: +3 -3 lines
Diff to previous 1.137 (colored) to selected 1.8 (colored)

When accessed in mmap by the device pager, pmap_enter() may be called with prot == PROT_WRITE.

Revision 1.137 / (download) - annotate - [select for diffs], Tue May 3 20:09:54 2022 UTC (23 months, 2 weeks ago) by skrll
Branch: MAIN
Changes since 1.136: +9 -2 lines
Diff to previous 1.136 (colored) to selected 1.8 (colored)

Sprinkle some KASSERT(kpreempt_disabled());

Revision 1.136 / (download) - annotate - [select for diffs], Wed Apr 27 23:38:31 2022 UTC (23 months, 3 weeks ago) by ryo
Branch: MAIN
Changes since 1.135: +2 -6 lines
Diff to previous 1.135 (colored) to selected 1.8 (colored)

since pmap_activate_efirt() rewrites TTBR0, it is necessary to pmap_activate() again after pmap_deactivate_efirt() to restore the original TTBR0.

- Fix to do pmap_{de,}activate() before/after pmap_{,de}activate_efirt().
- moved kpreempt_{disable,enable}() to the caller since everything between
  arm_efirt_md_enter() and arm_efirt_md_exit() should be kpreempt disabled.

ok skrll@

Revision 1.135 / (download) - annotate - [select for diffs], Sun Apr 17 15:20:36 2022 UTC (2 years ago) by skrll
Branch: MAIN
Changes since 1.134: +4 -2 lines
Diff to previous 1.134 (colored) to selected 1.8 (colored)

Add the missing kpreempt_enable to pmap_deactivate_efirt

Revision 1.134 / (download) - annotate - [select for diffs], Sun Apr 10 10:01:15 2022 UTC (2 years ago) by skrll
Branch: MAIN
Changes since 1.133: +3 -3 lines
Diff to previous 1.133 (colored) to selected 1.8 (colored)

No need to flush icache for EFI RT mappings as bootaa64.efi flushed
the full icache for us.  (Also this avoids traps)

Revision 1.133 / (download) - annotate - [select for diffs], Sat Apr 9 23:38:31 2022 UTC (2 years ago) by riastradh
Branch: MAIN
Changes since 1.132: +4 -4 lines
Diff to previous 1.132 (colored) to selected 1.8 (colored)

sys: Use membar_release/acquire around reference drop.

This just goes through my recent reference count membar audit and
changes membar_exit to membar_release and membar_enter to
membar_acquire -- this should make everything cheaper on most CPUs
without hurting correctness, because membar_acquire is generally
cheaper than membar_enter.

Revision 1.132 / (download) - annotate - [select for diffs], Sat Apr 2 11:16:06 2022 UTC (2 years ago) by skrll
Branch: MAIN
Changes since 1.131: +117 -8 lines
Diff to previous 1.131 (colored) to selected 1.8 (colored)

Update to support EFI runtime outside the kernel virtual address space
by creating an EFI RT pmap that can be activated / deactivated when
required.

Adds support for EFI RT to ARM_MMU_EXTENDED (ASID) 32-bit Arm machines.

On Arm64 the usage of pmapboot_enter is reduced and the mappings are
created much later in the boot process -- now in cpu_startup_hook.
Backward compatiblity for KVA mapped RT from old bootaa64.efi is
maintained.

Adding support to other platforms should be easier as a result.

Revision 1.131 / (download) - annotate - [select for diffs], Sat Mar 19 09:53:18 2022 UTC (2 years, 1 month ago) by skrll
Branch: MAIN
Changes since 1.130: +31 -28 lines
Diff to previous 1.130 (colored) to selected 1.8 (colored)

Slight code re-organisation. NFCI.

Revision 1.130 / (download) - annotate - [select for diffs], Sat Mar 12 15:32:30 2022 UTC (2 years, 1 month ago) by riastradh
Branch: MAIN
Changes since 1.129: +4 -2 lines
Diff to previous 1.129 (colored) to selected 1.8 (colored)

sys: Membar audit around reference count releases.

If two threads are using an object that is freed when the reference
count goes to zero, we need to ensure that all memory operations
related to the object happen before freeing the object.

Using an atomic_dec_uint_nv(&refcnt) == 0 ensures that only one
thread takes responsibility for freeing, but it's not enough to
ensure that the other thread's memory operations happen before the
freeing.

Consider:

	  Thread A			  Thread B
	obj->foo = 42;			obj->baz = 73;
	mumble(&obj->bar);		grumble(&obj->quux);
	/* membar_exit(); */		/* membar_exit(); */
	atomic_dec -- not last		atomic_dec -- last
					/* membar_enter(); */
					KASSERT(invariant(obj->foo,
					    obj->bar));
					free_stuff(obj);

The memory barriers ensure that

	obj->foo = 42;
	mumble(&obj->bar);

in thread A happens before

	KASSERT(invariant(obj->foo, obj->bar));
	free_stuff(obj);

in thread B.  Without them, this ordering is not guaranteed.

So in general it is necessary to do

	membar_exit();
	if (atomic_dec_uint_nv(&obj->refcnt) != 0)
		return;
	membar_enter();

to release a reference, for the `last one out hit the lights' style
of reference counting.  (This is in contrast to the style where one
thread blocks new references and then waits under a lock for existing
ones to drain with a condvar -- no membar needed thanks to mutex(9).)

I searched for atomic_dec to find all these.  Obviously we ought to
have a better abstraction for this because there's so much copypasta.
This is a stop-gap measure to fix actual bugs until we have that.  It
would be nice if an abstraction could gracefully handle the different
styles of reference counting in use -- some years ago I drafted an
API for this, but making it cover everything got a little out of hand
(particularly with struct vnode::v_usecount) and I ended up setting
it aside to work on psref/localcount instead for better scalability.

I got bored of adding #ifdef __HAVE_ATOMIC_AS_MEMBAR everywhere, so I
only put it on things that look performance-critical on 5sec review.
We should really adopt membar_enter_preatomic/membar_exit_postatomic
or something (except they are applicable only to atomic r/m/w, not to
atomic_load/store_*, making the naming annoying) and get rid of all
the ifdefs.

Revision 1.129 / (download) - annotate - [select for diffs], Sat Mar 5 16:53:24 2022 UTC (2 years, 1 month ago) by skrll
Branch: MAIN
Changes since 1.128: +4 -4 lines
Diff to previous 1.128 (colored) to selected 1.8 (colored)

Slight comment improvement.

Revision 1.128 / (download) - annotate - [select for diffs], Wed Feb 16 22:00:55 2022 UTC (2 years, 2 months ago) by andvar
Branch: MAIN
Changes since 1.127: +3 -3 lines
Diff to previous 1.127 (colored) to selected 1.8 (colored)

fix various typos, mainly in comments.

Revision 1.127 / (download) - annotate - [select for diffs], Mon Jan 31 09:16:09 2022 UTC (2 years, 2 months ago) by ryo
Branch: MAIN
Changes since 1.126: +170 -50 lines
Diff to previous 1.126 (colored) to selected 1.8 (colored)

add support Hardware updates to Access flag and Dirty state (FEAT_HAFDBS)

- The DBM bit of the PTE is now used to determine if it is writable, and
  the AF bit is treated entirely as a reference bit. A valid PTE is always
  treated as readable. There can be no valid PTE that is not readable.
- LX_BLKPAG_OS_{READ,WRITE} are used only for debugging purposes,
  and has been superseded by LX_BLKPAG_AF and LX_BLKPAG_DBM.
- Improve comment

The need for reference/modify emulation has been eliminated,
and access/permission faults have been reduced, however,
there has been little change in overall performance.

Revision 1.126 / (download) - annotate - [select for diffs], Mon Jan 31 08:43:05 2022 UTC (2 years, 2 months ago) by ryo
Branch: MAIN
Changes since 1.125: +6 -2 lines
Diff to previous 1.125 (colored) to selected 1.8 (colored)

Skip unnecessary PTE operations and TLB invalidation.

Revision 1.125 / (download) - annotate - [select for diffs], Sun Jan 16 10:50:02 2022 UTC (2 years, 3 months ago) by rillig
Branch: MAIN
Changes since 1.124: +3 -3 lines
Diff to previous 1.124 (colored) to selected 1.8 (colored)

aarch64/pmap: remove stray semicolon

No binary change.

Revision 1.124 / (download) - annotate - [select for diffs], Sat Jan 15 07:39:04 2022 UTC (2 years, 3 months ago) by skrll
Branch: MAIN
Changes since 1.123: +34 -49 lines
Diff to previous 1.123 (colored) to selected 1.8 (colored)

The translations that need invalidation are always last level so remove
the (dubious) logic around tracking the level.  The "any level" TLB
invalidation maintenance operation are used, but this may change after
further testing.

before
======
1661.0u 420.2s 2:53.82 1197.3% 231+29k 10+33918io 102pf+0w
1646.8u 425.2s 2:52.96 1198.0% 232+29k 1+33937io 49pf+0w
1647.9u 425.7s 2:52.58 1201.6% 232+29k 0+33940io 32pf+0w

After
=====
1602.5u 420.8s 2:49.09 1196.6% 238+30k 24+33893io 54pf+0w
1600.7u 421.3s 2:51.53 1178.8% 238+30k 1+33914io 33pf+0w
1597.5u 424.3s 2:50.46 1186.1% 238+30k 0+33915io 17pf+0w

LGTM from ryo@

Revision 1.123 / (download) - annotate - [select for diffs], Fri Jan 14 07:21:53 2022 UTC (2 years, 3 months ago) by skrll
Branch: MAIN
Changes since 1.122: +7 -63 lines
Diff to previous 1.122 (colored) to selected 1.8 (colored)

Restore the previous pmap_remove_all behaviour as the new method meant
the n1sdp couldn't complete a build.

No noticeable change in kernel build performance.

Revision 1.122 / (download) - annotate - [select for diffs], Tue Jan 4 05:55:45 2022 UTC (2 years, 3 months ago) by skrll
Branch: MAIN
Changes since 1.121: +3 -3 lines
Diff to previous 1.121 (colored) to selected 1.8 (colored)

KNF

Revision 1.121 / (download) - annotate - [select for diffs], Fri Dec 10 20:36:02 2021 UTC (2 years, 4 months ago) by andvar
Branch: MAIN
Changes since 1.120: +3 -3 lines
Diff to previous 1.120 (colored) to selected 1.8 (colored)

s/occured/occurred/ in comments, log messages and man pages.

Revision 1.120 / (download) - annotate - [select for diffs], Tue Dec 7 21:37:36 2021 UTC (2 years, 4 months ago) by andvar
Branch: MAIN
Changes since 1.119: +3 -3 lines
Diff to previous 1.119 (colored) to selected 1.8 (colored)

fix various typos, mainly in comments.

Revision 1.119 / (download) - annotate - [select for diffs], Sat Oct 23 06:49:46 2021 UTC (2 years, 5 months ago) by skrll
Branch: MAIN
Changes since 1.118: +8 -13 lines
Diff to previous 1.118 (colored) to selected 1.8 (colored)

Fix non-UVMHIST build

Revision 1.118 / (download) - annotate - [select for diffs], Sat Oct 16 06:34:30 2021 UTC (2 years, 6 months ago) by ryo
Branch: MAIN
Changes since 1.117: +4 -2 lines
Diff to previous 1.117 (colored) to selected 1.8 (colored)

fix non-MULTIPROCESSOR build

Revision 1.117 / (download) - annotate - [select for diffs], Sun Oct 10 07:15:25 2021 UTC (2 years, 6 months ago) by skrll
Branch: MAIN
Changes since 1.116: +178 -83 lines
Diff to previous 1.116 (colored) to selected 1.8 (colored)

Use sys/uvm/pmap/pmap_tlb.c on Aarch64 in the same way that some Arm, MIPS,
and some PPC kernels do.  This removes the limitation of 256 processes on
CPUs with 8bit ASID field, e.g. Apple M1.

Additionally the following changes have been made

- removed a couple of unnecessary aarch64_tlbi_all calls
- removed any invalidation after freeing page tables due to
  _pmap_sweep_pdp. This was never necessary afaict.
- all kernel mappings are marked global and userland mapping not-global.

Performance testing hasn't show a significant difference.  The data here
is from building a kernel on an lx2k system with nvme.

before
1489.6u 400.4s 2:40.65 1176.5% 228+224k 0+32289io 57pf+0w
1482.6u 403.2s 2:38.49 1189.9% 228+222k 0+32274io 46pf+0w
1485.4u 402.2s 2:37.27 1200.2% 228+222k 0+32275io 12pf+0w

after
1493.9u 404.6s 2:37.50 1205.4% 227+221k 0+32265io 48pf+0w
1485.0u 408.0s 2:38.54 1194.0% 227+222k 0+32272io 36pf+0w
1484.3u 407.0s 2:35.88 1213.3% 228+224k 0+32268io 14pf+0w

>>> stats.ttest_ind([160.65,158.49,157.27], [157.5,158.54,155.88])
Ttest_indResult(statistic=1.1923622711296888, pvalue=0.2990182944606766)
>>>

Revision 1.116 / (download) - annotate - [select for diffs], Thu Sep 30 21:19:16 2021 UTC (2 years, 6 months ago) by skrll
Branch: MAIN
Changes since 1.115: +4 -2 lines
Diff to previous 1.115 (colored) to selected 1.8 (colored)

Ensure TCR_EPD0 is set on entry to pmap_activate and ensure it is set as
early as possible for APs.

Revision 1.115 / (download) - annotate - [select for diffs], Sun Sep 26 09:58:13 2021 UTC (2 years, 6 months ago) by skrll
Branch: MAIN
Changes since 1.114: +26 -60 lines
Diff to previous 1.114 (colored) to selected 1.8 (colored)

Use UVMHIST_CALLARGS

Revision 1.114 / (download) - annotate - [select for diffs], Sun Sep 26 08:04:35 2021 UTC (2 years, 6 months ago) by skrll
Branch: MAIN
Changes since 1.113: +8 -8 lines
Diff to previous 1.113 (colored) to selected 1.8 (colored)

'\n' is not required in KASSERTMSG either.

Revision 1.113 / (download) - annotate - [select for diffs], Sun Sep 26 08:02:48 2021 UTC (2 years, 6 months ago) by skrll
Branch: MAIN
Changes since 1.112: +3 -3 lines
Diff to previous 1.112 (colored) to selected 1.8 (colored)

"\n" is not required in KERNHIST

Revision 1.112 / (download) - annotate - [select for diffs], Wed Sep 15 07:49:54 2021 UTC (2 years, 7 months ago) by skrll
Branch: MAIN
Changes since 1.111: +5 -3 lines
Diff to previous 1.111 (colored) to selected 1.8 (colored)

Use __SHIFTIN. Same code before and after.

Revision 1.111 / (download) - annotate - [select for diffs], Sun Sep 12 08:23:57 2021 UTC (2 years, 7 months ago) by skrll
Branch: MAIN
Changes since 1.110: +8 -8 lines
Diff to previous 1.110 (colored) to selected 1.8 (colored)

pmap_page_remove: simply and reduce the code size slightly.

Revision 1.110 / (download) - annotate - [select for diffs], Thu Sep 9 08:12:27 2021 UTC (2 years, 7 months ago) by skrll
Branch: MAIN
Changes since 1.109: +19 -18 lines
Diff to previous 1.109 (colored) to selected 1.8 (colored)

In pmap_icache_sync_range change

for (...) {
	...
	if (condition) {
		// do stuff
	}
}

to

for (...) {
	...
	if (!conditional)
		continue;
	// do stuff
}

to save on indentation. Same code (modulo register usage) before and
after.

Revision 1.109 / (download) - annotate - [select for diffs], Thu Sep 9 08:09:44 2021 UTC (2 years, 7 months ago) by skrll
Branch: MAIN
Changes since 1.108: +5 -4 lines
Diff to previous 1.108 (colored) to selected 1.8 (colored)

KNF

Revision 1.105.2.2 / (download) - annotate - [select for diffs], Thu Jun 17 04:46:16 2021 UTC (2 years, 10 months ago) by thorpej
Branch: thorpej-i2c-spi-conf
Changes since 1.105.2.1: +6 -8 lines
Diff to previous 1.105.2.1 (colored) next main 1.106 (colored) to selected 1.8 (colored)

Sync w/ HEAD.

Revision 1.107.2.1 / (download) - annotate - [select for diffs], Mon May 31 22:15:09 2021 UTC (2 years, 10 months ago) by cjep
Branch: cjep_staticlib_x
Changes since 1.107: +6 -8 lines
Diff to previous 1.107 (colored) next main 1.108 (colored) to selected 1.8 (colored)

sync with head

Revision 1.108 / (download) - annotate - [select for diffs], Sat May 29 06:54:20 2021 UTC (2 years, 10 months ago) by skrll
Branch: MAIN
CVS Tags: thorpej-i2c-spi-conf2-base, thorpej-i2c-spi-conf2, thorpej-i2c-spi-conf-base, thorpej-futex2-base, thorpej-futex2, thorpej-cfargs2-base, thorpej-cfargs2, cjep_sun2x-base1, cjep_sun2x-base, cjep_sun2x, cjep_staticlib_x-base1
Changes since 1.107: +6 -8 lines
Diff to previous 1.107 (colored) to selected 1.8 (colored)

Deal with the pmap limitation of maxproc in a more complete way and
recognise CPUs with only 8bit ASIDs.

Revision 1.105.2.1 / (download) - annotate - [select for diffs], Thu May 13 00:47:20 2021 UTC (2 years, 11 months ago) by thorpej
Branch: thorpej-i2c-spi-conf
Changes since 1.105: +18 -363 lines
Diff to previous 1.105 (colored) to selected 1.8 (colored)

Sync with HEAD.

Revision 1.107 / (download) - annotate - [select for diffs], Fri Apr 30 20:07:22 2021 UTC (2 years, 11 months ago) by skrll
Branch: MAIN
CVS Tags: cjep_staticlib_x-base
Branch point for: cjep_staticlib_x
Changes since 1.106: +18 -362 lines
Diff to previous 1.106 (colored) to selected 1.8 (colored)

Make the ddb for pmap / pte information pmap agnostic

Revision 1.106 / (download) - annotate - [select for diffs], Thu Apr 29 09:27:29 2021 UTC (2 years, 11 months ago) by skrll
Branch: MAIN
Changes since 1.105: +2 -3 lines
Diff to previous 1.105 (colored) to selected 1.8 (colored)

Remove some unnecessary tlb invalidate in pmap_growkernel and ASAN shadow
map. Ensure the shadow map mappings are visible to the TLB walkers.

Revision 1.105 / (download) - annotate - [select for diffs], Wed Apr 21 09:52:20 2021 UTC (2 years, 11 months ago) by ryo
Branch: MAIN
Branch point for: thorpej-i2c-spi-conf
Changes since 1.104: +8 -2 lines
Diff to previous 1.104 (colored) to selected 1.8 (colored)

added more attributes of PTE displayed by "ddb>machine pte"

Revision 1.103.2.1 / (download) - annotate - [select for diffs], Sat Apr 17 17:26:12 2021 UTC (3 years ago) by thorpej
Branch: thorpej-cfargs
Changes since 1.103: +4 -4 lines
Diff to previous 1.103 (colored) next main 1.104 (colored) to selected 1.8 (colored)

Sync with HEAD.

Revision 1.104 / (download) - annotate - [select for diffs], Sat Apr 17 01:53:58 2021 UTC (3 years ago) by mrg
Branch: MAIN
CVS Tags: thorpej-cfargs-base
Changes since 1.103: +4 -4 lines
Diff to previous 1.103 (colored) to selected 1.8 (colored)

remove KERNHIST_INIT_STATIC().  it stradles the line between usable
early in boot and broken early in boot by requiring a partly static
structure with another structure that must be present by the time
any uses are performed.  theoretically platform code could allocate
a chunk while seting up memory and assign it here, giving a dynamic
sizing for the entry list, but the reality is that all users have
a statically allocated entry list as well.

the existing KERNHIST_LINK_STATIC() is used in conjunction with
KERNHIST_INITIALIZER() instead.

this stops a NULL pointer deref when the _LOG() macro is called
before the storage is linked in, which happens with GCC 10 on OCTEON
with UVMHIST enabled, crashing in very early kernel init.

Revision 1.94.2.3 / (download) - annotate - [select for diffs], Sat Apr 3 22:28:13 2021 UTC (3 years ago) by thorpej
Branch: thorpej-futex
Changes since 1.94.2.2: +89 -19 lines
Diff to previous 1.94.2.2 (colored) next main 1.95 (colored) to selected 1.8 (colored)

Sync with HEAD.

Revision 1.103 / (download) - annotate - [select for diffs], Tue Mar 9 16:40:59 2021 UTC (3 years, 1 month ago) by ryo
Branch: MAIN
CVS Tags: thorpej-futex-base
Branch point for: thorpej-cfargs
Changes since 1.102: +4 -4 lines
Diff to previous 1.102 (colored) to selected 1.8 (colored)

fix build error without options DDB.

kvtopte() is referenced from arm/acpi/acpi_machdep.c

Revision 1.102 / (download) - annotate - [select for diffs], Sat Feb 13 18:13:53 2021 UTC (3 years, 2 months ago) by ryo
Branch: MAIN
Changes since 1.101: +3 -3 lines
Diff to previous 1.101 (colored) to selected 1.8 (colored)

No assignment is needed here.

the loop in pmap_page_remove() always removes the first pv,
and since the list is managed by _pmap_remove_pv(), pp->pp_pv.pv_next always points to the first.

Revision 1.101 / (download) - annotate - [select for diffs], Mon Feb 1 18:12:11 2021 UTC (3 years, 2 months ago) by ryo
Branch: MAIN
Changes since 1.100: +6 -9 lines
Diff to previous 1.100 (colored) to selected 1.8 (colored)

It is enough to make a page accessible instead of writable.
same fix as r1.76

Revision 1.100 / (download) - annotate - [select for diffs], Sun Jan 31 04:51:29 2021 UTC (3 years, 2 months ago) by ryo
Branch: MAIN
Changes since 1.99: +82 -9 lines
Diff to previous 1.99 (colored) to selected 1.8 (colored)

implement pmap_remove_all().

The size of struct pv_entry has increased, but speed of kernel build has improved by about 1%
exec and exit should have been improved.

Revision 1.94.2.2 / (download) - annotate - [select for diffs], Sun Jan 3 16:34:50 2021 UTC (3 years, 3 months ago) by thorpej
Branch: thorpej-futex
Changes since 1.94.2.1: +3 -3 lines
Diff to previous 1.94.2.1 (colored) to selected 1.8 (colored)

Sync w/ HEAD.

Revision 1.41.2.8 / (download) - annotate - [select for diffs], Fri Jan 1 12:54:07 2021 UTC (3 years, 3 months ago) by martin
Branch: netbsd-9
CVS Tags: netbsd-9-3-RELEASE, netbsd-9-2-RELEASE
Changes since 1.41.2.7: +20 -6 lines
Diff to previous 1.41.2.7 (colored) to branchpoint 1.41 (colored) next main 1.42 (colored) to selected 1.8 (colored)

Pull up following revision(s) (requested by rin in ticket #1171):

	sys/arch/aarch64/aarch64/pmap.c: revision 1.82
	sys/arch/aarch64/aarch64/pmap.c: revision 1.83

pmap_procwr(): sync icache even if p != curproc. This fixes applications
like GDB for arm32, that rewrite text of other process.

Thanks to ryo@ for discussion.

Use tlen for temporary length variable instead of l, which is usually
used for struct lwp *.
No binary changes.

Revision 1.41.2.7 / (download) - annotate - [select for diffs], Fri Jan 1 12:38:49 2021 UTC (3 years, 3 months ago) by martin
Branch: netbsd-9
Changes since 1.41.2.6: +2 -5 lines
Diff to previous 1.41.2.6 (colored) to branchpoint 1.41 (colored) to selected 1.8 (colored)

Pull up following revision(s) (requested by rin in ticket #1170):

	sys/arch/aarch64/aarch64/cpufunc.c: revision 1.22 (patch)
	sys/arch/aarch64/aarch64/cpufunc.c: revision 1.23 (patch)
	sys/arch/aarch64/aarch64/pmap.c: revision 1.81

Set uvmexp.ncolors appropriately, which is required for some CPU
models with VIPT icache.

Otherwise, alias in virtual address results in inconsistent results,
at least for applications that rewrite text of other process, e.g.,
GDB for arm32.

Also, this hopefully fixes other unexpected failures due to alias.
Confirmed that there's no observable regression in performance;
difference in ``time make -j8'' for GENERIC64 kernel on BCM2837
with and without setting uvmexp.ncolors is within 0.1%.

Thanks to ryo@ for discussion.


Fix uvmexp.ncolors for some big.LITTLE configuration; it is uncertain
which CPU is used as primary, and as a result, secondary CPUs can
require larger number of colors.

In order to solve this problem, update uvmexp.ncolors via
uvm_page_recolor(9) when secondary CPUs are attached, as done for
other ports like x86.

Pointed out by jmcneill@, and discussed on port-arm@:
http://mail-index.netbsd.org/port-arm/2020/07/03/msg006837.html
Tested and OK'd by ryo@.

Fix previous; add missing <uvm/uvm.h> include.

Revision 1.99 / (download) - annotate - [select for diffs], Sun Dec 20 08:26:32 2020 UTC (3 years, 3 months ago) by skrll
Branch: MAIN
Changes since 1.98: +3 -3 lines
Diff to previous 1.98 (colored) to selected 1.8 (colored)

Improve the English in the previous comment fix.

Revision 1.98 / (download) - annotate - [select for diffs], Sat Dec 19 09:02:32 2020 UTC (3 years, 3 months ago) by skrll
Branch: MAIN
Changes since 1.97: +3 -3 lines
Diff to previous 1.97 (colored) to selected 1.8 (colored)

Tweak a comment

Revision 1.94.2.1 / (download) - annotate - [select for diffs], Mon Dec 14 14:37:44 2020 UTC (3 years, 4 months ago) by thorpej
Branch: thorpej-futex
Changes since 1.94: +19 -15 lines
Diff to previous 1.94 (colored) to selected 1.8 (colored)

Sync w/ HEAD.

Revision 1.97 / (download) - annotate - [select for diffs], Fri Dec 11 18:03:33 2020 UTC (3 years, 4 months ago) by skrll
Branch: MAIN
Changes since 1.96: +4 -3 lines
Diff to previous 1.96 (colored) to selected 1.8 (colored)

s:aarch64/cpufunc.h:arm/cpufunc.h:

a baby step in the grand arm header unification challenge

Revision 1.96 / (download) - annotate - [select for diffs], Tue Nov 10 07:51:19 2020 UTC (3 years, 5 months ago) by skrll
Branch: MAIN
Changes since 1.95: +13 -13 lines
Diff to previous 1.95 (colored) to selected 1.8 (colored)

AA64 is not MIPS.

Change all KSEG references to directmap

Revision 1.95 / (download) - annotate - [select for diffs], Sat Nov 7 08:33:50 2020 UTC (3 years, 5 months ago) by skrll
Branch: MAIN
Changes since 1.94: +6 -3 lines
Diff to previous 1.94 (colored) to selected 1.8 (colored)

In pmap_devmap_bootstrap only set pmap_devmap_bootstrap_done if there
is an entry and ALL of the entries have been done.  The entry required
for EARLYCONS might not be the first/only one...

Revision 1.94 / (download) - annotate - [select for diffs], Sun Nov 1 10:58:59 2020 UTC (3 years, 5 months ago) by jmcneill
Branch: MAIN
Branch point for: thorpej-futex
Changes since 1.93: +2 -7 lines
Diff to previous 1.93 (colored) to selected 1.8 (colored)

No need to disable translation table walks in pmap_activate().

Revision 1.93 / (download) - annotate - [select for diffs], Thu Oct 22 07:34:18 2020 UTC (3 years, 5 months ago) by skrll
Branch: MAIN
Changes since 1.92: +3 -3 lines
Diff to previous 1.92 (colored) to selected 1.8 (colored)

Use the isb macro - missed in previous commit

Revision 1.92 / (download) - annotate - [select for diffs], Thu Oct 22 07:31:15 2020 UTC (3 years, 5 months ago) by skrll
Branch: MAIN
Changes since 1.91: +7 -5 lines
Diff to previous 1.91 (colored) to selected 1.8 (colored)

Use the dmb/dsb/isb macros... if nothing else they're all now consistent
about the "memory" assembler contraint.

No binary change

Revision 1.91 / (download) - annotate - [select for diffs], Mon Sep 28 12:04:19 2020 UTC (3 years, 6 months ago) by skrll
Branch: MAIN
Changes since 1.90: +3 -4 lines
Diff to previous 1.90 (colored) to selected 1.8 (colored)

Only set pmap_devmap_bootstrap_done if something gets mapped.

Think acpi_platform_devmap

Revision 1.90 / (download) - annotate - [select for diffs], Sat Sep 19 13:33:08 2020 UTC (3 years, 6 months ago) by skrll
Branch: MAIN
Changes since 1.89: +3 -3 lines
Diff to previous 1.89 (colored) to selected 1.8 (colored)

Make __md_palloc pmap agnostic (think sys/uvm/pmap)

Revision 1.89 / (download) - annotate - [select for diffs], Mon Sep 14 10:06:35 2020 UTC (3 years, 7 months ago) by ryo
Branch: MAIN
Changes since 1.88: +10 -4 lines
Diff to previous 1.88 (colored) to selected 1.8 (colored)

PID_MAX is just an initial value (soft maximum). Don't use it for CTASSERT.
defined __HAVE_CPU_MAXPROC to use function cpu_maxproc().

pointed out by mrg@, thanks.

Revision 1.88 / (download) - annotate - [select for diffs], Sun Sep 6 17:38:10 2020 UTC (3 years, 7 months ago) by ryo
Branch: MAIN
Changes since 1.87: +12 -5 lines
Diff to previous 1.87 (colored) to selected 1.8 (colored)

Fix panic caused by modload. http://mail-index.netbsd.org/port-arm/2020/08/30/msg006960.html

The address space reserved for modules may not be mapped in L1-L3.

Revision 1.87 / (download) - annotate - [select for diffs], Fri Aug 14 08:19:26 2020 UTC (3 years, 8 months ago) by skrll
Branch: MAIN
Changes since 1.86: +3 -3 lines
Diff to previous 1.86 (colored) to selected 1.8 (colored)

Whitespace

Revision 1.86 / (download) - annotate - [select for diffs], Wed Aug 12 13:36:36 2020 UTC (3 years, 8 months ago) by skrll
Branch: MAIN
Changes since 1.85: +193 -141 lines
Diff to previous 1.85 (colored) to selected 1.8 (colored)

Part IV of ad's performance improvements for aarch64

- Implement pmap_growkernel(), and update kernel pmap's stats with atomics.

- Then, pmap_kenter_pa() and pmap_kremove() no longer need to allocate
  memory nor take pm_lock, because they only modify L3 PTEs.

- Then, pm_lock and pp_lock can be adaptive mutexes at IPL_NONE which are
  cheaper than spin mutexes.

- Take the pmap's lock in pmap_extract() if not the kernel's pmap, otherwise
  pmap_extract() might see inconsistent state.

Revision 1.85 / (download) - annotate - [select for diffs], Sun Aug 9 09:11:41 2020 UTC (3 years, 8 months ago) by skrll
Branch: MAIN
Changes since 1.84: +4 -5 lines
Diff to previous 1.84 (colored) to selected 1.8 (colored)

Fix another UVMHIST so it doesn't use %s

Revision 1.84 / (download) - annotate - [select for diffs], Thu Jul 16 11:36:35 2020 UTC (3 years, 9 months ago) by skrll
Branch: MAIN
Changes since 1.83: +3 -4 lines
Diff to previous 1.83 (colored) to selected 1.8 (colored)

pmapboot_enter simplication
- bootpage_alloc in asm becomes pmapboot_pagealloc in C
- PMAPBOOT_ENTER_NOBLOCK is removed as it's not used
- PMAPBOOT_ENTER_NOOVERWRITE is removed as it's now always on
- physpage_allocator argument is removed as it's always
  pmapboot_pagealloc
- Support for EARLYCONS without CONSADDR is removed so that the identity
  map for CONSADDR is always known.

For the assembly files:
 2 files changed, 40 insertions(+), 89 deletions(-)

LGTM ryo

Revision 1.83 / (download) - annotate - [select for diffs], Sat Jul 4 16:58:11 2020 UTC (3 years, 9 months ago) by rin
Branch: MAIN
Changes since 1.82: +6 -6 lines
Diff to previous 1.82 (colored) to selected 1.8 (colored)

Use tlen for temporary length variable instead of l, which is usually
used for struct lwp *.

No binary changes.

Revision 1.82 / (download) - annotate - [select for diffs], Thu Jul 2 13:01:11 2020 UTC (3 years, 9 months ago) by rin
Branch: MAIN
Changes since 1.81: +20 -6 lines
Diff to previous 1.81 (colored) to selected 1.8 (colored)

pmap_procwr(): sync icache even if p != curproc. This fixes applications
like GDB for arm32, that rewrite text of other process.

Thanks to ryo@ for discussion.

Revision 1.81 / (download) - annotate - [select for diffs], Thu Jul 2 12:59:31 2020 UTC (3 years, 9 months ago) by rin
Branch: MAIN
Changes since 1.80: +2 -5 lines
Diff to previous 1.80 (colored) to selected 1.8 (colored)

Set uvmexp.ncolors appropriately, which is required for some CPU
models with VIPT icache.

Otherwise, alias in virtual address results in inconsistent results,
at least for applications that rewrite text of other process, e.g.,
GDB for arm32.

Also, this hopefully fixes other unexpected failures due to alias.

Confirmed that there's no observable regression in performance;
difference in ``time make -j8'' for GENERIC64 kernel on BCM2837
with and without setting uvmexp.ncolors is within 0.1%.

Thanks to ryo@ for discussion.

Revision 1.41.2.6 / (download) - annotate - [select for diffs], Tue Jun 30 18:39:37 2020 UTC (3 years, 9 months ago) by martin
Branch: netbsd-9
CVS Tags: netbsd-9-1-RELEASE
Changes since 1.41.2.5: +3 -3 lines
Diff to previous 1.41.2.5 (colored) to branchpoint 1.41 (colored) to selected 1.8 (colored)

Pull up following revision(s) (requested by ryo in ticket #976):

	sys/arch/aarch64/aarch64/pmap.c: revision 1.79

Fix bug with incorrect range calculation when doing icache sync.

This is called by sysarch(ARM_SYNC_ICACHE) from aarch32 (compat_netbsd32) emul process.
pointed out by rin@, thanks.

XXX pullup-9

Revision 1.80 / (download) - annotate - [select for diffs], Sat Jun 27 00:46:37 2020 UTC (3 years, 9 months ago) by rin
Branch: MAIN
Changes since 1.79: +3 -3 lines
Diff to previous 1.79 (colored) to selected 1.8 (colored)

Fix typo in name of evcnt(4) counter.

Revision 1.79 / (download) - annotate - [select for diffs], Wed Jun 24 08:27:47 2020 UTC (3 years, 9 months ago) by ryo
Branch: MAIN
Changes since 1.78: +3 -3 lines
Diff to previous 1.78 (colored) to selected 1.8 (colored)

Fix bug with incorrect range calculation when doing icache sync.
This is called by sysarch(ARM_SYNC_ICACHE) from aarch32 (compat_netbsd32) emul process.

pointed out by rin@, thanks.

XXX pullup-9

Revision 1.78 / (download) - annotate - [select for diffs], Sun Jun 14 21:47:14 2020 UTC (3 years, 10 months ago) by ad
Branch: MAIN
Changes since 1.77: +235 -147 lines
Diff to previous 1.77 (colored) to selected 1.8 (colored)

- Fix a lock order reversal in pmap_page_protect().

- Make sure pmap is always locked when updating stats; atomics no longer
  needed to do that.

- Remove unneeded traversal of pv list in pmap_enter_pv().

- Shrink struct vm_page from 136 to 128 bytes (cache line sized) and struct
  pv_entry from 48 to 32 bytes (power of 2 sized).

- Embed a pv_entry in each vm_page.  This means PV entries don't need to
  be allocated for private anonymous memory / COW pages / most UBC mappings.
  Dynamic PV entries are then used only for stuff like shared libraries and
  shared memory.

Proposed on port-arm@.

Revision 1.77 / (download) - annotate - [select for diffs], Wed Jun 10 22:24:22 2020 UTC (3 years, 10 months ago) by ad
Branch: MAIN
Changes since 1.76: +9 -9 lines
Diff to previous 1.76 (colored) to selected 1.8 (colored)

- Wired/resident stats shouldn't covered by PMAPCOUNTERS.
- Rename need_update_pv -> need_enter_pv.

Ok ryo@

Revision 1.76 / (download) - annotate - [select for diffs], Mon Jun 1 02:42:24 2020 UTC (3 years, 10 months ago) by ryo
Branch: MAIN
Changes since 1.75: +7 -11 lines
Diff to previous 1.75 (colored) to selected 1.8 (colored)

no need to make the PTE writable to do icache_sync, enough to accessible.

Revision 1.75 / (download) - annotate - [select for diffs], Fri May 15 05:39:15 2020 UTC (3 years, 11 months ago) by skrll
Branch: MAIN
Changes since 1.74: +3 -5 lines
Diff to previous 1.74 (colored) to selected 1.8 (colored)

Use __diagused

Revision 1.74 / (download) - annotate - [select for diffs], Fri May 15 01:43:47 2020 UTC (3 years, 11 months ago) by tnn
Branch: MAIN
Changes since 1.73: +4 -2 lines
Diff to previous 1.73 (colored) to selected 1.8 (colored)

fix non-diag build

Revision 1.73 / (download) - annotate - [select for diffs], Thu May 14 07:59:03 2020 UTC (3 years, 11 months ago) by skrll
Branch: MAIN
Changes since 1.72: +8 -23 lines
Diff to previous 1.72 (colored) to selected 1.8 (colored)

Use MUTEX_NODEBUG for PV locks as is commonly done.  OK ryo.

Revision 1.72 / (download) - annotate - [select for diffs], Wed May 13 10:13:29 2020 UTC (3 years, 11 months ago) by jmcneill
Branch: MAIN
Changes since 1.71: +19 -8 lines
Diff to previous 1.71 (colored) to selected 1.8 (colored)

Implement pmap_extract_coherency

Revision 1.7.2.3 / (download) - annotate - [select for diffs], Tue Apr 21 18:42:02 2020 UTC (3 years, 11 months ago) by martin
Branch: phil-wifi
Changes since 1.7.2.2: +2 -1 lines
Diff to previous 1.7.2.2 (colored) to branchpoint 1.7 (colored) next main 1.8 (colored)

Sync with HEAD

Revision 1.69.2.1 / (download) - annotate - [select for diffs], Mon Apr 20 11:28:50 2020 UTC (3 years, 11 months ago) by bouyer
Branch: bouyer-xenpvh
Changes since 1.69: +4 -3 lines
Diff to previous 1.69 (colored) next main 1.70 (colored) to selected 1.8 (colored)

Sync with HEAD

Revision 1.71 / (download) - annotate - [select for diffs], Sat Apr 18 11:00:37 2020 UTC (4 years ago) by skrll
Branch: MAIN
CVS Tags: phil-wifi-20200421, bouyer-xenpvh-base2, bouyer-xenpvh-base1
Changes since 1.70: +2 -3 lines
Diff to previous 1.70 (colored) to selected 1.8 (colored)

PMAP_DEBUG has been deleted on arm

Revision 1.7.2.2 / (download) - annotate - [select for diffs], Mon Apr 13 08:03:27 2020 UTC (4 years ago) by martin
Branch: phil-wifi
Changes since 1.7.2.1: +380 -229 lines
Diff to previous 1.7.2.1 (colored) to branchpoint 1.7 (colored) to selected 1.8 (colored)

Mostly merge changes from HEAD upto 20200411

Revision 1.70 / (download) - annotate - [select for diffs], Mon Apr 13 05:40:25 2020 UTC (4 years ago) by maxv
Branch: MAIN
Changes since 1.69: +4 -2 lines
Diff to previous 1.69 (colored) to selected 1.8 (colored)

Add support for Branch Target Identification (BTI).

On the executable pages that have the GP (Guarded Page) bit, the semantic
of the "br" and "blr" instructions is changed: the CPU expects the first
instruction of the jump/call target to be "bti", and faults if it isn't.

We add the GP bit on the kernel .text pages (and incidentally the .rodata
pages, but we don't care). The compiler adds a "bti c" instruction at the
beginning of each C function. We modify the ENTRY() macros to manually add
"bti c" in the asm functions.

cpuswitch.S needs a specific change: with "br x27" the CPU expects "bti j",
which is bad because the functions begin with "bti c"; switch to "br x16",
for the CPU to accept "bti c".

BTI helps defend against JOP/COP. Tested on Qemu.

Revision 1.69 / (download) - annotate - [select for diffs], Wed Apr 8 00:13:40 2020 UTC (4 years ago) by ryo
Branch: MAIN
CVS Tags: phil-wifi-20200411, bouyer-xenpvh-base
Branch point for: bouyer-xenpvh
Changes since 1.68: +4 -16 lines
Diff to previous 1.68 (colored) to selected 1.8 (colored)

use PMAP_PAGE_INIT() to initialize mutex in pmap_page.

VM_MDPAGE_INIT() in pmap_free_pdp() had initialized pp_flags,
so it unintentionally cleared PMAP_PAGE_FLAGS_PV_TRACKED.
use PMAP_PAGE_INIT to avoid using PMAP_PAGE_FLAGS_PV_TRACKED.

pointed out by tnn@, thanks

Revision 1.68 / (download) - annotate - [select for diffs], Sat Mar 14 14:05:42 2020 UTC (4 years, 1 month ago) by ad
Branch: MAIN
CVS Tags: phil-wifi-20200406
Changes since 1.67: +4 -3 lines
Diff to previous 1.67 (colored) to selected 1.8 (colored)

pmap_remove_all(): Return a boolean value to indicate the behaviour.  If
true, all mappings have been removed, the pmap is totally cleared out, and
UVM can then avoid doing the work to call pmap_remove() for each map entry.
If false, either nothing has been done, or some helpful arch-specific voodoo
has taken place.

Revision 1.67 / (download) - annotate - [select for diffs], Mon Mar 2 08:39:36 2020 UTC (4 years, 1 month ago) by ryo
Branch: MAIN
CVS Tags: is-mlppp-base, is-mlppp
Changes since 1.66: +3 -3 lines
Diff to previous 1.66 (colored) to selected 1.8 (colored)

oops, fix incorrect usage of daif_enable() in my previous commit.

Revision 1.66 / (download) - annotate - [select for diffs], Sat Feb 29 21:34:37 2020 UTC (4 years, 1 month ago) by ryo
Branch: MAIN
Changes since 1.65: +72 -25 lines
Diff to previous 1.65 (colored) to selected 1.8 (colored)

Fix pmap to work correctly with tagged addresses

- when fault, untag from address before passing to uvm/pmap functions
- pmap_extract() checks more strictly and consider the address tag

Revision 1.65 / (download) - annotate - [select for diffs], Sat Feb 29 21:10:09 2020 UTC (4 years, 1 month ago) by ryo
Branch: MAIN
Changes since 1.64: +8 -42 lines
Diff to previous 1.64 (colored) to selected 1.8 (colored)

use pmapboot_enter_range()

Revision 1.60.2.2 / (download) - annotate - [select for diffs], Sat Feb 29 20:18:15 2020 UTC (4 years, 1 month ago) by ad
Branch: ad-namecache
Changes since 1.60.2.1: +242 -149 lines
Diff to previous 1.60.2.1 (colored) to branchpoint 1.60 (colored) next main 1.61 (colored) to selected 1.8 (colored)

Sync with head.

Revision 1.64 / (download) - annotate - [select for diffs], Mon Feb 10 19:04:01 2020 UTC (4 years, 2 months ago) by ryo
Branch: MAIN
CVS Tags: ad-namecache-base3
Changes since 1.63: +21 -21 lines
Diff to previous 1.63 (colored) to selected 1.8 (colored)

use LIST(3) instead of TAILQ(3) to save one word in struct vm_page and struct pmap.

pointed out by riastradh@. thanks

Revision 1.63 / (download) - annotate - [select for diffs], Mon Feb 3 13:37:01 2020 UTC (4 years, 2 months ago) by ryo
Branch: MAIN
Changes since 1.62: +87 -19 lines
Diff to previous 1.62 (colored) to selected 1.8 (colored)

add support pmap_pv(9)

Patch originally from jmcneill@. thanks

Revision 1.62 / (download) - annotate - [select for diffs], Mon Feb 3 13:35:44 2020 UTC (4 years, 2 months ago) by ryo
Branch: MAIN
Changes since 1.61: +153 -128 lines
Diff to previous 1.61 (colored) to selected 1.8 (colored)

separate struct vm_page_md into vm_page_md and pmap_page
for preparation pmap_pv(9)

Revision 1.41.2.5 / (download) - annotate - [select for diffs], Tue Jan 21 11:15:52 2020 UTC (4 years, 2 months ago) by martin
Branch: netbsd-9
CVS Tags: netbsd-9-0-RELEASE, netbsd-9-0-RC2
Changes since 1.41.2.4: +10 -2 lines
Diff to previous 1.41.2.4 (colored) to branchpoint 1.41 (colored) to selected 1.8 (colored)

Pull up following revision(s) (requested by ryo in ticket #618):

	sys/arch/aarch64/aarch64/fault.c: revision 1.11
	sys/arch/aarch64/aarch64/pmap.c: revision 1.61

fix behaviour mmap()/mprotect() when passed only PROT_EXEC.
when mmap()/mprotect() with only PROT_EXEC, syscall will be successful,
but the page actually hadn't been mapped.
it should be mapped with PROT_READ|PROT_EXEC implicitly. (r-x)

Revision 1.60.2.1 / (download) - annotate - [select for diffs], Fri Jan 17 21:47:22 2020 UTC (4 years, 3 months ago) by ad
Branch: ad-namecache
Changes since 1.60: +10 -2 lines
Diff to previous 1.60 (colored) to selected 1.8 (colored)

Sync with head.

Revision 1.61 / (download) - annotate - [select for diffs], Thu Jan 9 01:38:34 2020 UTC (4 years, 3 months ago) by ryo
Branch: MAIN
CVS Tags: ad-namecache-base2, ad-namecache-base1
Changes since 1.60: +10 -2 lines
Diff to previous 1.60 (colored) to selected 1.8 (colored)

fix behaviour mmap()/mprotect() when passed only PROT_EXEC.

when mmap()/mprotect() with only PROT_EXEC, syscall will be successful,
but the page actually hadn't been mapped.
it should be mapped with PROT_READ|PROT_EXEC implicitly. (r-x)

Revision 1.60 / (download) - annotate - [select for diffs], Mon Dec 30 16:03:48 2019 UTC (4 years, 3 months ago) by skrll
Branch: MAIN
CVS Tags: ad-namecache-base
Branch point for: ad-namecache
Changes since 1.59: +38 -17 lines
Diff to previous 1.59 (colored) to selected 1.8 (colored)

Update pmap_map_chunk to allow L[12] block mappings and L3 page mappings

Revision 1.59 / (download) - annotate - [select for diffs], Mon Dec 30 15:42:39 2019 UTC (4 years, 3 months ago) by skrll
Branch: MAIN
Changes since 1.58: +4 -5 lines
Diff to previous 1.58 (colored) to selected 1.8 (colored)

Remove unnecessary brackets and unwrap a conditional.  Same code before
and after.

Revision 1.41.2.4 / (download) - annotate - [select for diffs], Sun Dec 29 09:27:09 2019 UTC (4 years, 3 months ago) by martin
Branch: netbsd-9
Changes since 1.41.2.3: +7 -4 lines
Diff to previous 1.41.2.3 (colored) to branchpoint 1.41 (colored) to selected 1.8 (colored)

Pull up following revision(s) (requested by jmcneill in ticket #586):

	sys/arch/arm/nvidia/tegra_pcie.c: revision 1.27
	sys/arch/aarch64/aarch64/pmap.c: revision 1.57
	sys/arch/aarch64/aarch64/locore.S: revision 1.48
	sys/arch/aarch64/include/armreg.h: revision 1.29
	sys/arch/aarch64/aarch64/pmap.c: revision 1.58
	sys/arch/aarch64/aarch64/locore.S: revision 1.49
	sys/arch/arm/acpi/acpipchb.c: revision 1.14
	sys/arch/aarch64/aarch64/genassym.cf: revision 1.16
	sys/arch/arm/acpi/acpi_machdep.c: revision 1.13
	sys/arch/aarch64/include/pmap.h: revision 1.27
	sys/arch/aarch64/aarch64/genassym.cf: revision 1.17
	sys/arch/aarch64/include/pmap.h: revision 1.28
	sys/arch/arm/fdt/pcihost_fdtvar.h: revision 1.3
	sys/arch/arm/include/bus_defs.h: revision 1.14
	sys/arch/aarch64/aarch64/bus_space.c: revision 1.9
	sys/arch/arm/fdt/pcihost_fdt.c: revision 1.12
	sys/arch/aarch64/conf/files.aarch64: revision 1.15
	sys/arch/aarch64/conf/files.aarch64: revision 1.16
	sys/arch/arm/rockchip/rk3399_pcie.c: revision 1.9

Enable early write acknowledge for device memory mappings.

Do not use Early Write Acknowledge for PCIe I/O and config space.

Revision 1.58 / (download) - annotate - [select for diffs], Sat Dec 28 17:19:43 2019 UTC (4 years, 3 months ago) by jmcneill
Branch: MAIN
Changes since 1.57: +6 -3 lines
Diff to previous 1.57 (colored) to selected 1.8 (colored)

Do not use Early Write Acknowledge for PCIe I/O and config space.

Revision 1.57 / (download) - annotate - [select for diffs], Fri Dec 27 18:56:47 2019 UTC (4 years, 3 months ago) by jmcneill
Branch: MAIN
Changes since 1.56: +3 -3 lines
Diff to previous 1.56 (colored) to selected 1.8 (colored)

Enable early write acknowledge for device memory mappings.

Revision 1.56 / (download) - annotate - [select for diffs], Thu Dec 19 07:44:56 2019 UTC (4 years, 4 months ago) by skrll
Branch: MAIN
Changes since 1.55: +2 -6 lines
Diff to previous 1.55 (colored) to selected 1.8 (colored)

G/C kasan_shadow_map call in pmap_enter

pmap_growkernel calls kasan_shadow_map for KVA

Revision 1.55 / (download) - annotate - [select for diffs], Wed Dec 18 11:10:24 2019 UTC (4 years, 4 months ago) by ryo
Branch: MAIN
Changes since 1.54: +2 -5 lines
Diff to previous 1.54 (colored) to selected 1.8 (colored)

atomic_add_16() is not used in pmap.c anymore. no need decl here.

Revision 1.54 / (download) - annotate - [select for diffs], Wed Dec 18 11:06:42 2019 UTC (4 years, 4 months ago) by ryo
Branch: MAIN
Changes since 1.53: +4 -4 lines
Diff to previous 1.53 (colored) to selected 1.8 (colored)

space to tab

Revision 1.53 / (download) - annotate - [select for diffs], Sat Dec 14 13:48:09 2019 UTC (4 years, 4 months ago) by skrll
Branch: MAIN
Changes since 1.52: +9 -9 lines
Diff to previous 1.52 (colored) to selected 1.8 (colored)

Fix build... wire_count probably doesn't need atomics

Revision 1.52 / (download) - annotate - [select for diffs], Fri Dec 13 08:11:12 2019 UTC (4 years, 4 months ago) by skrll
Branch: MAIN
Changes since 1.51: +5 -2 lines
Diff to previous 1.51 (colored) to selected 1.8 (colored)

Fix KASAN support by calling kasan_shadow_map in pmap_growkernel

Revision 1.51 / (download) - annotate - [select for diffs], Tue Dec 10 18:08:32 2019 UTC (4 years, 4 months ago) by ad
Branch: MAIN
Changes since 1.50: +3 -3 lines
Diff to previous 1.50 (colored) to selected 1.8 (colored)

pg->phys_addr -> VM_PAGE_TO_PHYS(pg)

Revision 1.50 / (download) - annotate - [select for diffs], Thu Nov 14 17:09:22 2019 UTC (4 years, 5 months ago) by maxv
Branch: MAIN
CVS Tags: phil-wifi-20191119
Changes since 1.49: +2 -4 lines
Diff to previous 1.49 (colored) to selected 1.8 (colored)

Mark several kASan functions with __nothing, to avoid annoying #ifdefs.
Same as kCSan and kMSan.

Revision 1.49 / (download) - annotate - [select for diffs], Thu Nov 14 16:48:51 2019 UTC (4 years, 5 months ago) by maxv
Branch: MAIN
Changes since 1.48: +2 -3 lines
Diff to previous 1.48 (colored) to selected 1.8 (colored)

Don't include "opt_kasan.h" when there's already <sys/asan.h> included.

Revision 1.41.2.3 / (download) - annotate - [select for diffs], Mon Nov 4 14:08:18 2019 UTC (4 years, 5 months ago) by martin
Branch: netbsd-9
CVS Tags: netbsd-9-0-RC1
Changes since 1.41.2.2: +18 -2 lines
Diff to previous 1.41.2.2 (colored) to branchpoint 1.41 (colored) to selected 1.8 (colored)

Pull up following revision(s) (requested by maya in ticket #393):

	sys/arch/aarch64/include/pmap.h: revision 1.26
	sys/arch/aarch64/aarch64/pmap.c: revision 1.48

Define PMAP_NEED_PROCWR, providing strategically placed i-cache
synchronization where just-changed memory is about to be executed.

Fixes SIGILLs seen when running Mono 6 on QEMU Cortex-A57.

ok ryo

Revision 1.48 / (download) - annotate - [select for diffs], Tue Oct 29 20:01:22 2019 UTC (4 years, 5 months ago) by maya
Branch: MAIN
Changes since 1.47: +18 -2 lines
Diff to previous 1.47 (colored) to selected 1.8 (colored)

Define PMAP_NEED_PROCWR, providing strategically placed i-cache
synchronization where just-changed memory is about to be executed.

Fixes SIGILLs seen when running Mono 6 on QEMU Cortex-A57.

ok ryo

Revision 1.41.2.2 / (download) - annotate - [select for diffs], Mon Sep 23 07:00:35 2019 UTC (4 years, 6 months ago) by martin
Branch: netbsd-9
Changes since 1.41.2.1: +19 -3 lines
Diff to previous 1.41.2.1 (colored) to branchpoint 1.41 (colored) to selected 1.8 (colored)

Pull up following revision(s) (requested by jmcneill in ticket #229):

	sys/arch/aarch64/aarch64/pmap.c: revision 1.47

Disable translation table walks using TTBR0 while changing its value and
when deactivating a pmap. Fixes stability issues on Ampere eMAG CPUs.

Revision 1.47 / (download) - annotate - [select for diffs], Sun Sep 22 13:57:55 2019 UTC (4 years, 6 months ago) by jmcneill
Branch: MAIN
Changes since 1.46: +19 -3 lines
Diff to previous 1.46 (colored) to selected 1.8 (colored)

Disable translation table walks using TTBR0 while changing its value and
when deactivating a pmap. Fixes stability issues on Ampere eMAG CPUs.

Revision 1.41.2.1 / (download) - annotate - [select for diffs], Sun Sep 22 10:32:38 2019 UTC (4 years, 6 months ago) by martin
Branch: netbsd-9
Changes since 1.41: +5 -6 lines
Diff to previous 1.41 (colored) to selected 1.8 (colored)

Pull up following revision(s) (requested by ryo in ticket #214):

	sys/arch/aarch64/aarch64/pmap.c: revision 1.44
	sys/arch/aarch64/aarch64/pmap.c: revision 1.46

- remove incorrect KASSERT. mmap(2) with prot=PROT_WRITE calls pmap_enter(..., PROT_WRITE) internally.
- fix to update page reference flags when only PROT_WRITE or PROT_EXECUTE specified
ref/mod bit should be set according to 'flags' argument, not 'prot'.  r1.44 was incomplete.

Revision 1.46 / (download) - annotate - [select for diffs], Fri Sep 20 05:35:27 2019 UTC (4 years, 6 months ago) by ryo
Branch: MAIN
Changes since 1.45: +5 -3 lines
Diff to previous 1.45 (colored) to selected 1.8 (colored)

ref/mod bit should be set according to 'flags' argument, not 'prot'.  r1.44 was incomplete.

Revision 1.45 / (download) - annotate - [select for diffs], Fri Sep 13 18:07:30 2019 UTC (4 years, 7 months ago) by ryo
Branch: MAIN
Changes since 1.44: +5 -2 lines
Diff to previous 1.44 (colored) to selected 1.8 (colored)

In pmap_devmap_bootstrap(), cpu_earlydevice_va_p() must not return true until *all* devmap tables have been enabled.
console mapping may be present in the last table.

Revision 1.44 / (download) - annotate - [select for diffs], Sat Sep 7 09:57:37 2019 UTC (4 years, 7 months ago) by ryo
Branch: MAIN
Changes since 1.43: +4 -7 lines
Diff to previous 1.43 (colored) to selected 1.8 (colored)

- remove incorrect KASSERT. mmap(2) with prot=PROT_WRITE calls pmap_enter(..., PROT_WRITE) internally.
- fix to update page reference flags when only PROT_WRITE or PROT_EXECUTE specified

Revision 1.43 / (download) - annotate - [select for diffs], Thu Aug 15 10:24:26 2019 UTC (4 years, 8 months ago) by skrll
Branch: MAIN
Changes since 1.42: +8 -10 lines
Diff to previous 1.42 (colored) to selected 1.8 (colored)

Make pmap_db_pte_print more terse so it's quicker on serial consoles

Revision 1.42 / (download) - annotate - [select for diffs], Mon Aug 12 10:28:04 2019 UTC (4 years, 8 months ago) by skrll
Branch: MAIN
Changes since 1.41: +3 -3 lines
Diff to previous 1.41 (colored) to selected 1.8 (colored)

Use PMAP_DEV in DEVMAP_ENTRY rather than pmap_map_chunk.  It's clearer and
means pmap_map_chunk can be made to map other memory types.

Revision 1.7.2.1 / (download) - annotate - [select for diffs], Mon Jun 10 22:05:43 2019 UTC (4 years, 10 months ago) by christos
Branch: phil-wifi
Changes since 1.7: +1092 -577 lines
Diff to previous 1.7 (colored) to selected 1.8 (colored)

Sync with HEAD

Revision 1.41 / (download) - annotate - [select for diffs], Fri May 17 06:05:07 2019 UTC (4 years, 11 months ago) by mrg
Branch: MAIN
CVS Tags: phil-wifi-20190609, netbsd-9-base
Branch point for: netbsd-9
Changes since 1.40: +5 -5 lines
Diff to previous 1.40 (colored) to selected 1.8 (colored)

apply some __diagused.

Revision 1.40 / (download) - annotate - [select for diffs], Mon Apr 8 21:18:22 2019 UTC (5 years ago) by ryo
Branch: MAIN
CVS Tags: isaki-audio2-base, isaki-audio2
Changes since 1.39: +114 -23 lines
Diff to previous 1.39 (colored) to selected 1.8 (colored)

- free empty page tables pages if reach a certain usage.
- need to lock at removing an old pg (_pmap_remove_pv) in _pmap_enter()

Revision 1.39 / (download) - annotate - [select for diffs], Sat Apr 6 18:30:20 2019 UTC (5 years ago) by ryo
Branch: MAIN
Changes since 1.38: +72 -68 lines
Diff to previous 1.38 (colored) to selected 1.8 (colored)

Fix race conditions about pmap_page_protect() and pmap_enter().

while handling same PTE by these functions in same time, there
is a critical path that the number of valid PTEs and wire_count
are inconsistent, and it caused KASSERT.
Need to hold a pv_lock while modifying them.

Revision 1.38 / (download) - annotate - [select for diffs], Wed Mar 20 07:05:06 2019 UTC (5 years, 1 month ago) by ryo
Branch: MAIN
Changes since 1.37: +17 -15 lines
Diff to previous 1.37 (colored) to selected 1.8 (colored)

spinkle __printflike(), and use PRIxxx

Revision 1.37 / (download) - annotate - [select for diffs], Tue Mar 19 16:45:28 2019 UTC (5 years, 1 month ago) by ryo
Branch: MAIN
Changes since 1.36: +127 -10 lines
Diff to previous 1.36 (colored) to selected 1.8 (colored)

- add ddb command "machine ttbr" to dump MMU tables.
- tidy up descriptions, usages and messages.

Revision 1.36 / (download) - annotate - [select for diffs], Tue Mar 19 16:05:49 2019 UTC (5 years, 1 month ago) by ryo
Branch: MAIN
Changes since 1.35: +254 -50 lines
Diff to previous 1.35 (colored) to selected 1.8 (colored)

- free L1-L3 pages that has been emptied by pmap_remove().
- if no memories, pmap_enter will return correctly ENOMEM if PMAP_CANFAIL, or wait until available any memories if !PMAP_CANFAIL.

These changes improves the stability when we use a huge virtual memory spaces with mmap.

Revision 1.35 / (download) - annotate - [select for diffs], Wed Feb 6 05:33:41 2019 UTC (5 years, 2 months ago) by ryo
Branch: MAIN
Changes since 1.34: +102 -89 lines
Diff to previous 1.34 (colored) to selected 1.8 (colored)

improve pmap_remove
- don't lock/unlock per page in pmap_remove()
- speedup pte lookup for continuous addresses
- bring out pool_cache_put(&_pmap_pv_pool, pv) from lock/unlock section

Revision 1.1.28.9 / (download) - annotate - [select for diffs], Wed Dec 26 14:01:30 2018 UTC (5 years, 3 months ago) by pgoyette
Branch: pgoyette-compat
CVS Tags: pgoyette-compat-merge-20190127
Changes since 1.1.28.8: +3 -3 lines
Diff to previous 1.1.28.8 (colored) to branchpoint 1.1 (colored) next main 1.2 (colored) to selected 1.8 (colored)

Sync with HEAD, resolve a few conflicts

Revision 1.34 / (download) - annotate - [select for diffs], Fri Dec 21 08:01:01 2018 UTC (5 years, 3 months ago) by ryo
Branch: MAIN
CVS Tags: pgoyette-compat-20190127, pgoyette-compat-20190118, pgoyette-compat-1226
Changes since 1.33: +3 -3 lines
Diff to previous 1.33 (colored) to selected 1.8 (colored)

- add workaround for Cavium ThunderX errata 27456.
- add cpufuncs table in cpu_info. each cpu clusters may have different erratum. (e.g. big.LITTLE)

Revision 1.1.28.8 / (download) - annotate - [select for diffs], Mon Nov 26 01:52:16 2018 UTC (5 years, 4 months ago) by pgoyette
Branch: pgoyette-compat
Changes since 1.1.28.7: +18 -6 lines
Diff to previous 1.1.28.7 (colored) to branchpoint 1.1 (colored) to selected 1.8 (colored)

Sync with HEAD, resolve a couple of conflicts

Revision 1.33 / (download) - annotate - [select for diffs], Thu Nov 1 20:34:49 2018 UTC (5 years, 5 months ago) by maxv
Branch: MAIN
CVS Tags: pgoyette-compat-1126
Changes since 1.32: +10 -2 lines
Diff to previous 1.32 (colored) to selected 1.8 (colored)

Add kASan support for aarch64. Stack tracking needs more investigation
and will come in a separate commit.

Reviewed by ryo@ jmcneill@ skrll@.

Revision 1.32 / (download) - annotate - [select for diffs], Wed Oct 31 06:36:19 2018 UTC (5 years, 5 months ago) by ryo
Branch: MAIN
Changes since 1.31: +10 -6 lines
Diff to previous 1.31 (colored) to selected 1.8 (colored)

invalidate icache correctly.
l3pte_executable() should be used for only valid pte.

Revision 1.1.28.7 / (download) - annotate - [select for diffs], Sat Oct 20 06:58:23 2018 UTC (5 years, 5 months ago) by pgoyette
Branch: pgoyette-compat
Changes since 1.1.28.6: +257 -346 lines
Diff to previous 1.1.28.6 (colored) to branchpoint 1.1 (colored) to selected 1.8 (colored)

Sync with head

Revision 1.31 / (download) - annotate - [select for diffs], Thu Oct 18 09:01:51 2018 UTC (5 years, 6 months ago) by skrll
Branch: MAIN
CVS Tags: pgoyette-compat-1020
Changes since 1.30: +3 -3 lines
Diff to previous 1.30 (colored) to selected 1.8 (colored)

Provide generic start code that assumes the MMU is off and caches are
disabled as per the linux booting protocol for ARMv6 and ARMv7 boards.
u-boot image type should be changed to 'linux' for correct behaviour.

The new start code builds a minimal "bootstrap" L1PT with cached access
disabled and uses the same table for all processors.  AP startup is
performed in less steps and more code is written in C.

The bootstrap tables and stack are placed into an (orphaned) section
"_init_memory" which is given to uvm when it is no longer used.

Various kernels have been converted to use this code and tested.  Some
boards were provided by TNF. Thanks!

The GENERIC kernel now boots on boards using the TEGRA, SUNXI and EXYNOS
kernels. The GENERIC kernel will also work on RPI2 using u-boot.

Thanks to martin@ and aymeric@ for testing on parallella and nanosoc
respectively

Revision 1.30 / (download) - annotate - [select for diffs], Sun Oct 14 14:31:05 2018 UTC (5 years, 6 months ago) by skrll
Branch: MAIN
Changes since 1.29: +3 -3 lines
Diff to previous 1.29 (colored) to selected 1.8 (colored)

Use __nothing

Revision 1.29 / (download) - annotate - [select for diffs], Fri Oct 12 01:28:57 2018 UTC (5 years, 6 months ago) by ryo
Branch: MAIN
Changes since 1.28: +43 -2 lines
Diff to previous 1.28 (colored) to selected 1.8 (colored)

add initial support of COMPAT_NETBSD32 on AArch64.
arm ELF32 EABI binaries could be execute in AArch32 state on AArch64. A32 THUMB mode is not supported yet.

Revision 1.28 / (download) - annotate - [select for diffs], Fri Oct 12 01:13:51 2018 UTC (5 years, 6 months ago) by ryo
Branch: MAIN
Changes since 1.27: +54 -58 lines
Diff to previous 1.27 (colored) to selected 1.8 (colored)

- cleanup checking address ranges with IN_RANGE macro
- change PM_ADDR_CHECK macro to KASSERTMSG
- restore fast lookup cases with IN_RANGE macro for pmap_extract changed in my previous commit.

Revision 1.27 / (download) - annotate - [select for diffs], Fri Oct 12 00:57:17 2018 UTC (5 years, 6 months ago) by ryo
Branch: MAIN
Changes since 1.26: +88 -163 lines
Diff to previous 1.26 (colored) to selected 1.8 (colored)

rewrite pmap_pte_lookup() to share similar code.

Revision 1.26 / (download) - annotate - [select for diffs], Thu Oct 4 23:53:13 2018 UTC (5 years, 6 months ago) by ryo
Branch: MAIN
Changes since 1.25: +83 -121 lines
Diff to previous 1.25 (colored) to selected 1.8 (colored)

cleanup locore, and changed the way to map memories during boot.
- add functions bootpage_enter() and bootpage_alloc() to adapt various layout
  of physical memory map. especially for 64bit physical memory layout.
  pmapboot_alloc() allocates pagetable pages from _end[].
- changed to map only the required amount for PA=VA identity mapping
  (kernel image, UART device, and FDT blob) with L2_BLOCK(2Mbyte).
- changing page permission for kernel image, and making KSEG mapping are done
  at cpu_kernel_vm_init() instead of at locore.
- optimize PTE entries with PTE Contiguous bit. it is enabled on devmap only for now.

reviewed by skrll@, thanks.

Revision 1.25 / (download) - annotate - [select for diffs], Thu Oct 4 09:09:29 2018 UTC (5 years, 6 months ago) by ryo
Branch: MAIN
Changes since 1.24: +2 -15 lines
Diff to previous 1.24 (colored) to selected 1.8 (colored)

* define LX_BLKPAG_{OS,ATTR}_* for OS dependent PTE attributes in pmap.h
* cleanup macros

Revision 1.1.28.6 / (download) - annotate - [select for diffs], Sun Sep 30 01:45:35 2018 UTC (5 years, 6 months ago) by pgoyette
Branch: pgoyette-compat
Changes since 1.1.28.5: +20 -26 lines
Diff to previous 1.1.28.5 (colored) to branchpoint 1.1 (colored) to selected 1.8 (colored)

Ssync with HEAD

Revision 1.24 / (download) - annotate - [select for diffs], Mon Sep 17 00:15:55 2018 UTC (5 years, 7 months ago) by ryo
Branch: MAIN
CVS Tags: pgoyette-compat-0930
Changes since 1.23: +4 -18 lines
Diff to previous 1.23 (colored) to selected 1.8 (colored)

delete debug printf and KASSERT.

Revision 1.23 / (download) - annotate - [select for diffs], Mon Sep 10 16:43:24 2018 UTC (5 years, 7 months ago) by maxv
Branch: MAIN
Changes since 1.22: +5 -3 lines
Diff to previous 1.22 (colored) to selected 1.8 (colored)

Replace KDASSERT by panic.

Revision 1.22 / (download) - annotate - [select for diffs], Mon Sep 10 15:14:50 2018 UTC (5 years, 7 months ago) by maxv
Branch: MAIN
Changes since 1.21: +8 -8 lines
Diff to previous 1.21 (colored) to selected 1.8 (colored)

Rename _pmap_alloc_pdp -> pmap_alloc_pdp, and make it public.

Revision 1.21 / (download) - annotate - [select for diffs], Mon Sep 10 11:05:12 2018 UTC (5 years, 7 months ago) by ryo
Branch: MAIN
Changes since 1.20: +9 -3 lines
Diff to previous 1.20 (colored) to selected 1.8 (colored)

cleanup aarch64 mpstart and fdt bootstrap
 * arm_cpu_hatch_arg is a bad idea. avoid serializing CPU startup, and eliminate arm_cpu_hatch_arg.
   in mpstart, resolve own cpu index using array of cpu_mpidr[] (aarch64)
 * add support fdt enable-method "spin-table"
 * add support fdt enable-method "brcm,bcm2836-smp" (for 32bit RaspberryPi)
 * use arm_fdt_cpu_bootstrap() instead of psci_fdt_bootstrap()
 * rename "arm/fdt/psci_fdt.h" to "arm/fdt/psci_fdtvar.h" because of conflict of include file for needs-flag
 * add devmap for cpu spin-table of raspberrypi3/aarch64
 * no need to force hatch APs for raspberrypi3/arm32 ifndef MULTIPROCESSOR.
 * fix to work pmap_extract(kerneltext/data/bss) even if before calling pmap_bootstrap

idea to use cpu_mpidr[] by jmcneill@. reviewd by skrll@. thanks.

Revision 1.1.28.5 / (download) - annotate - [select for diffs], Thu Sep 6 06:55:22 2018 UTC (5 years, 7 months ago) by pgoyette
Branch: pgoyette-compat
Changes since 1.1.28.4: +195 -99 lines
Diff to previous 1.1.28.4 (colored) to branchpoint 1.1 (colored) to selected 1.8 (colored)

Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)

Revision 1.20 / (download) - annotate - [select for diffs], Mon Aug 27 15:43:37 2018 UTC (5 years, 7 months ago) by ryo
Branch: MAIN
CVS Tags: pgoyette-compat-0906
Changes since 1.19: +10 -4 lines
Diff to previous 1.19 (colored) to selected 1.8 (colored)

need to add VM_PROT_READ when pmap_kenter_pa(va, pa, VM_PROT_WRITE, 0) or pmap_kenter_pa(va, pa, VM_PROT_EXECUTE, 0).
VM_PROT_READ is treated as an access permission inernally.

Revision 1.19 / (download) - annotate - [select for diffs], Sat Aug 11 12:16:34 2018 UTC (5 years, 8 months ago) by ryo
Branch: MAIN
Changes since 1.18: +68 -75 lines
Diff to previous 1.18 (colored) to selected 1.8 (colored)

change to minimum invalidation of TLB.
specifying not only va but also asid, and not invalidate L0-L2 entry using tlbi_*_ll() if needed.

Revision 1.18 / (download) - annotate - [select for diffs], Fri Aug 10 21:06:42 2018 UTC (5 years, 8 months ago) by ryo
Branch: MAIN
Changes since 1.17: +32 -20 lines
Diff to previous 1.17 (colored) to selected 1.8 (colored)

treat kernel-exec attr and user-exec attr separately.
kernel cannot execute userland exec page, and user cannot execute kernel page.

Revision 1.17 / (download) - annotate - [select for diffs], Mon Aug 6 12:50:56 2018 UTC (5 years, 8 months ago) by ryo
Branch: MAIN
Changes since 1.16: +86 -2 lines
Diff to previous 1.16 (colored) to selected 1.8 (colored)

set kernel text/rodata readonly by default.
add function db_write_text() for setting ddb breakpoint.

Revision 1.16 / (download) - annotate - [select for diffs], Tue Jul 31 07:00:48 2018 UTC (5 years, 8 months ago) by skrll
Branch: MAIN
Changes since 1.15: +9 -8 lines
Diff to previous 1.15 (colored) to selected 1.8 (colored)

Define and use VPRINTF

Revision 1.1.28.4 / (download) - annotate - [select for diffs], Sat Jul 28 04:37:25 2018 UTC (5 years, 8 months ago) by pgoyette
Branch: pgoyette-compat
Changes since 1.1.28.3: +180 -109 lines
Diff to previous 1.1.28.3 (colored) to branchpoint 1.1 (colored) to selected 1.8 (colored)

Sync with HEAD

Revision 1.15 / (download) - annotate - [select for diffs], Fri Jul 27 07:04:04 2018 UTC (5 years, 8 months ago) by ryo
Branch: MAIN
CVS Tags: pgoyette-compat-0728
Changes since 1.14: +58 -24 lines
Diff to previous 1.14 (colored) to selected 1.8 (colored)

changes of pmap.c r1.13 seems to be unstable.
In order to invalidate icache, not to invalidate all icache,
but temporary to make the page writable and invalidate target address only.

Revision 1.14 / (download) - annotate - [select for diffs], Tue Jul 24 10:08:43 2018 UTC (5 years, 8 months ago) by ryo
Branch: MAIN
Changes since 1.13: +14 -8 lines
Diff to previous 1.13 (colored) to selected 1.8 (colored)

don't call pool_cache_put with locking pmap. pool_cache_put call pmap_kenter_pa internally.
(pool_cache_put_paddr -> pool_cache_put_slow -> pool_get -> pmap_kenter_pa)

Revision 1.13 / (download) - annotate - [select for diffs], Mon Jul 23 22:51:39 2018 UTC (5 years, 8 months ago) by ryo
Branch: MAIN
Changes since 1.12: +32 -12 lines
Diff to previous 1.12 (colored) to selected 1.8 (colored)

* fix icache invalidations.
* "ic ivau" (aarch64_icache_sync_range) with VA generates permission fault in some situations, therefore use KSEG address for now.

Revision 1.12 / (download) - annotate - [select for diffs], Mon Jul 23 22:32:22 2018 UTC (5 years, 8 months ago) by ryo
Branch: MAIN
Changes since 1.11: +27 -55 lines
Diff to previous 1.11 (colored) to selected 1.8 (colored)

rather than using flags to resolve nested locks, reserve pool_cache before locking.

Revision 1.11 / (download) - annotate - [select for diffs], Sat Jul 21 13:08:35 2018 UTC (5 years, 8 months ago) by ryo
Branch: MAIN
Changes since 1.10: +68 -29 lines
Diff to previous 1.10 (colored) to selected 1.8 (colored)

* avoid deadlock. mutex_owned() works only for adaptive lock, therefore we cannot use it for spinlock...
* add more NULL check
* clear pte when pmap_enter() fails

Revision 1.10 / (download) - annotate - [select for diffs], Tue Jul 17 09:58:14 2018 UTC (5 years, 9 months ago) by ryo
Branch: MAIN
Changes since 1.9: +3 -3 lines
Diff to previous 1.9 (colored) to selected 1.8 (colored)

Use __debugused

Revision 1.9 / (download) - annotate - [select for diffs], Tue Jul 17 00:33:32 2018 UTC (5 years, 9 months ago) by christos
Branch: MAIN
Changes since 1.8: +23 -31 lines
Diff to previous 1.8 (colored)

Add missing casts, remove unused variables.

Revision 1.8 / (download) - annotate - [selected], Mon Jul 9 06:14:38 2018 UTC (5 years, 9 months ago) by ryo
Branch: MAIN
Changes since 1.7: +23 -15 lines
Diff to previous 1.7 (colored)

need locks in pmap_kremove() and pmap_fault_fixup()

Revision 1.1.28.3 / (download) - annotate - [select for diffs], Mon May 21 04:35:57 2018 UTC (5 years, 10 months ago) by pgoyette
Branch: pgoyette-compat
Changes since 1.1.28.2: +8 -15 lines
Diff to previous 1.1.28.2 (colored) to branchpoint 1.1 (colored) to selected 1.8 (colored)

Sync with HEAD

Revision 1.7 / (download) - annotate - [select for diffs], Sun May 20 06:45:00 2018 UTC (5 years, 11 months ago) by ryo
Branch: MAIN
CVS Tags: phil-wifi-base, pgoyette-compat-0625, pgoyette-compat-0521
Branch point for: phil-wifi
Changes since 1.6: +6 -13 lines
Diff to previous 1.6 (colored) to selected 1.8 (colored)

pmap_enter() must update modified/referenced flags by 'flags' not 'prot'.

Revision 1.6 / (download) - annotate - [select for diffs], Wed May 16 08:32:07 2018 UTC (5 years, 11 months ago) by ryo
Branch: MAIN
Changes since 1.5: +4 -4 lines
Diff to previous 1.5 (colored) to selected 1.8 (colored)

Fix memory leak. it was leaking one page every pmap_create().
pm->pm_vmlist must be initialized before calling _pmap_alloc_pdp().

Revision 1.1.28.2 / (download) - annotate - [select for diffs], Wed May 2 07:20:02 2018 UTC (5 years, 11 months ago) by pgoyette
Branch: pgoyette-compat
Changes since 1.1.28.1: +80 -157 lines
Diff to previous 1.1.28.1 (colored) to branchpoint 1.1 (colored) to selected 1.8 (colored)

Synch with HEAD

Revision 1.5 / (download) - annotate - [select for diffs], Sun Apr 29 12:07:05 2018 UTC (5 years, 11 months ago) by ryo
Branch: MAIN
CVS Tags: pgoyette-compat-0502
Changes since 1.4: +10 -7 lines
Diff to previous 1.4 (colored) to selected 1.8 (colored)

fix KASSERT panic. pv_entry may not be exists in pvlist when pmap_remove().

Revision 1.4 / (download) - annotate - [select for diffs], Sun Apr 29 12:05:39 2018 UTC (5 years, 11 months ago) by ryo
Branch: MAIN
Changes since 1.3: +2 -9 lines
Diff to previous 1.3 (colored) to selected 1.8 (colored)

delete unused code

Revision 1.3 / (download) - annotate - [select for diffs], Fri Apr 27 08:07:08 2018 UTC (5 years, 11 months ago) by ryo
Branch: MAIN
Changes since 1.2: +74 -147 lines
Diff to previous 1.2 (colored) to selected 1.8 (colored)

fix instability behavior of bufcache on aarch64.
* fix to return correct ref/mod when PMAP_WIRED.
* changed to keep wired flags in pte instead of pv_entry, and cleanup.

Revision 1.1.28.1 / (download) - annotate - [select for diffs], Sat Apr 7 04:12:10 2018 UTC (6 years ago) by pgoyette
Branch: pgoyette-compat
Changes since 1.1: +2041 -65 lines
Diff to previous 1.1 (colored) to selected 1.8 (colored)

Sync with HEAD.  77 conflicts resolved - all of them $NetBSD$

Revision 1.2 / (download) - annotate - [select for diffs], Sun Apr 1 04:35:03 2018 UTC (6 years ago) by ryo
Branch: MAIN
CVS Tags: pgoyette-compat-0422, pgoyette-compat-0415, pgoyette-compat-0407
Changes since 1.1: +2041 -65 lines
Diff to previous 1.1 (colored) to selected 1.8 (colored)

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@)

Revision 1.1.4.2 / (download) - annotate - [select for diffs], Wed Aug 20 00:02:39 2014 UTC (9 years, 8 months ago) by tls
Branch: tls-maxphys
Changes since 1.1.4.1: +206 -0 lines
Diff to previous 1.1.4.1 (colored) to branchpoint 1.1 (colored) next main 1.2 (colored) to selected 1.8 (colored)

Rebase to HEAD as of a few days ago.

Revision 1.1.4.1, Sun Aug 10 05:47:37 2014 UTC (9 years, 8 months ago) by tls
Branch: tls-maxphys
Changes since 1.1: +0 -206 lines
FILE REMOVED

file pmap.c was added on branch tls-maxphys on 2014-08-20 00:02:39 +0000

Revision 1.1 / (download) - annotate - [select for diffs], Sun Aug 10 05:47:37 2014 UTC (9 years, 8 months ago) by matt
Branch: MAIN
CVS Tags: tls-maxphys-base-20171202, tls-maxphys-base, prg-localcount2-base3, prg-localcount2-base2, prg-localcount2-base1, prg-localcount2-base, prg-localcount2, pgoyette-localcount-base, pgoyette-localcount-20170426, pgoyette-localcount-20170320, pgoyette-localcount-20170107, pgoyette-localcount-20161104, pgoyette-localcount-20160806, pgoyette-localcount-20160726, pgoyette-localcount, pgoyette-compat-base, pgoyette-compat-0330, pgoyette-compat-0322, pgoyette-compat-0315, perseant-stdc-iso10646-base, perseant-stdc-iso10646, nick-nhusb-base-20170825, nick-nhusb-base-20170204, nick-nhusb-base-20161204, nick-nhusb-base-20161004, nick-nhusb-base-20160907, nick-nhusb-base-20160529, nick-nhusb-base-20160422, nick-nhusb-base-20160319, nick-nhusb-base-20151226, nick-nhusb-base-20150921, nick-nhusb-base-20150606, nick-nhusb-base-20150406, nick-nhusb-base, nick-nhusb, netbsd-8-base, netbsd-8-2-RELEASE, netbsd-8-1-RELEASE, netbsd-8-1-RC1, netbsd-8-0-RELEASE, netbsd-8-0-RC2, netbsd-8-0-RC1, netbsd-8, netbsd-7-nhusb-base-20170116, netbsd-7-nhusb-base, netbsd-7-nhusb, netbsd-7-base, netbsd-7-2-RELEASE, netbsd-7-1-RELEASE, netbsd-7-1-RC2, netbsd-7-1-RC1, netbsd-7-1-2-RELEASE, netbsd-7-1-1-RELEASE, netbsd-7-1, netbsd-7-0-RELEASE, netbsd-7-0-RC3, netbsd-7-0-RC2, netbsd-7-0-RC1, netbsd-7-0-2-RELEASE, netbsd-7-0-1-RELEASE, netbsd-7-0, netbsd-7, matt-nb8-mediatek-base, matt-nb8-mediatek, localcount-20160914, jdolecek-ncq-base, jdolecek-ncq, bouyer-socketcan-base1, bouyer-socketcan-base, bouyer-socketcan
Branch point for: tls-maxphys, pgoyette-compat
Diff to selected 1.8 (colored)

Preliminary files for AARCH64 (64-bit ARM) support.
Enough for a distribution build.

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.




CVSweb <webmaster@jp.NetBSD.org>