Age | Commit message (Collapse) | Author |
|
cold=2. Use the same strategy in a a similar phase during hibernate.
|
|
The previous limit of VM_PHYSSEG_MAX ranges (16) was proving too small for
newer machines. This diff reorganizes the hibernate signature block to allow
for 22 ranges by removing the kernel version comparison and replacing it
with a SHA of several unique kernel features (the version string and several
addresses of functions not inside the same .o).
Reported by claudio@, who also helped fix some issues in the diff. Input
from deraadt@ as well.
Tested by myself and claudio on a variety of machines. Only compile tested on
i386 as I have no more S4-capable i386 hardware anymore.
ok claudio@
|
|
pass in the already read hibernate_info instead of reading it again.
ok deraadt@
|
|
it's the 'b' slice and (sanity) check against the partition count.
Also, make the "is union hibernate_info too large?" a compile time
check.
ok deraadt@
|
|
resume. This fixes setups where a umass device no longer attaching
at resume results in a softraid device being renumbered so the
hibernate-time device is no longer correct
ok mlarkin@ jsing@
|
|
ok mlarkin
|
|
tracts of unused memory, and the empty-space RLE scanner (uvm_page_rle)
would rescan for empty space needlessly wasting excessive cpu time
16G machine, 100sec -> 9sec
40G machine, 325sec -> 28sec
with kettenis mlarkin
|
|
|
|
ok gnezdo@ semarie@ mpi@
|
|
it in the piglet during unhibernate. Missed this block during the previous
commit. We'll panic, which will likely just reboot the machine, but that's
better than trashing a chunk and causing mystery errors later.
|
|
original retguard data to the piglet and bcopys it back in place
immediately before resuming via the ACPI Sx trampoline.
ok deraadt, guenther, tested by many.
|
|
let people know what changed.
ok kettenis, phessler
|
|
so that an unhibernate kernel can detect if it is running with the
kernel it booted.
ok mlarkin
|
|
work.
ok mlarkin kettenis
|
|
|
|
vm_page structs go into three trees, uvm_objtree, uvm_pmr_addr, and
uvm_pmr_size. all these have been moved to RBT code.
this should give us a decent chunk of code space back.
|
|
Committing for guenther@ because he is on United and apparently
they break ssh (as well as guitars)
ok deraadt@ in the car from cambridge
|
|
OK mlarkin@
|
|
|
|
entropy after resuming.
Tested on i386 and amd64.
ok deraadt@
|
|
boot.
ok mlarkin
|
|
may not have been mapped previously (in the failure to hibernate case).
Also ensure that the lowmem ptp is mapped in all cases (not just MP).
ok kettenis
|
|
must do that. otherwise, pmap_kremove is called twice. i386 in particular
does not tolerate that, found by sebastia
ok mlarkin kettenis
|
|
(which we never did, but it was a bug nonetheless).
ok kettenis, deraadt
|
|
era. fix uvm including c files to include lock.h or atomic.h as necessary.
ok deraadt
|
|
PROT_NONE, PROT_READ, PROT_WRITE, and PROT_EXEC from mman.h.
PROT_MASK is introduced as the one true way of extracting those bits.
Remove UVM_ADV_* wrapper, using the standard names.
ok doug guenther kettenis
|
|
ordering regions mapped executable, so remove those permissions.
ok deraadt@
|
|
ok deraadt, kettenis
|
|
|
|
redundant copies of the same information. No functional change.
Also add some comments as to how these globals are used.
|
|
hibernate anymore.
|
|
|
|
|
|
deep down in the suspend path, where it is really hard to recover from
allocation failure. So allocate the piglet early on in the suspend path.
Also change the piglet and piglet allocation functions to use km_alloc(9)
instead of doing pmemrange magic. This removes a bunch of code which, in the
case of the piglet allocation, is broken since it results in a NULL pointer
dereference. Also switch the piglet allocation to not wait. If we can't
allocate 16MB of phys contig memory on a halfway modern machine we're almost
certainly under a lot of memory pressure and we're better off not trying to
hibernate anyway.
ok mlarkin@
|
|
|
|
|
|
much help and ok from deraadt@
|
|
|
|
dprintfs to help debugging in the field (disabled by default)
|
|
easier and much less error-prone to just identity map it in the resuming
kernel as we have more control over the VA space layout there (otherwise
we are at the mercy of the suspending kernel's placement of the piglet VA).
This diff also increases the size of the piglet to 4 chunks, to avoid an
overwrite issue seen in m2k14 where the start of the kernel text was
overwritten with a bounced chunk before unpack.
|
|
Chunks are now sorted by ascending PA and all chunks are bounced before
unpack. This fixes an issue where the trampoline chunks were being placed
at the end of the unpack ordering, causing overwrite during unpack.
|
|
ok deraadt@
|
|
Noticed by Josh Grosse.
|
|
PAGE_SIZE bytes. Completes the MAXPHYS optimizations in the read path.
with input from guenther@ who suggested a version that was a little easier
to understand. Tested on i386 and amd64.
|
|
a warning/comment in zlib.h that Z_PARTIAL_FLUSH "will be removed, use
Z_SYNC_FLUSH instead".
|
|
reads.
Also fix a VA leak in the chunktable read error path.
|
|
|
|
|
|
PG_PMAPMASK as all the possible pmap-specific bits (similar to the other
PG_fooMASK) to make sure MI code does not need to be updated, the next time
more bits are allocated to greedy pmaps.
No functional change, soon to be used by the (greedy) mips64 pmap.
|
|
"mainbus" device. this breaks when mpath is enabled because it
attaches before mainbus and therefore takes the head position.
have autoconf provide device_mainbus() which looks up mainbus_cd,
and use that instead.
discussed with deraadt who just wants mpath stuff to move forward
despite there being many ways to shine this particular turd.
|