| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
This timecounter is 2usec faster than the i8254 and has 22 times
better resolution.
|
|
|
|
| |
investigation is required.
|
|
|
|
|
|
|
| |
bail out if the buffer is not already present.
- The buffer returned by incore() is not locked and should not be sent to
brelse(). Use getblk() with the new GB_NOCREAT flag to preserve the
desired semantics.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
caller to acquire it. This permits drain_output() to be done atomically
with other operations as well as reducing the number of lock operations.
- Assert that the proper locks are held in drain_output().
- Change getdirtybuf() to accept a mutex as an argument. This mutex is used
to protect the vnode's buf list and the BKGRDWAIT flag. This lock is
dropped when we successfully acquire a buffer and held on return
otherwise. These semantics reduce the number of cumbersome cases in
calling code.
- Pass the mtx from getdirtybuf() into interlocked_sleep() and allow this
mutex to be used as the interlock argument to BUF_LOCK() in the LOCKBUF
case of interlocked_sleep().
- Change the return value of getdirtybuf() to be the resulting locked buffer
or NULL otherwise. This is for callers who pass in a list head that
requires a lock. It is necessary since the lock that protects the list
head must be dropped in getdirtybuf() so that we don't have a lock order
reversal with the buf queues lock in bremfree().
- Adjust all callers of getdirtybuf() to match the new semantics.
- Add a comment in indir_trunc() that points at unlocked access to a buf.
This may also be one of the last instances of incore() in the tree.
|
|
|
|
|
|
| |
PR: kern/55485
Submitted by: Shin-ichi Yoshimoto <yosimoto@waishi.jp>
MFC after: 1 day
|
|
|
|
| |
brelse().
|
|
|
|
|
|
| |
interlock in that case.
Found by: alc
|
|
|
|
|
| |
dirty pages.
- Remove some unused variables.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
growable (stack) entries that not only grow down, but also grow up.
Have vm_map_growstack() take these flags into account when growing
an entry.
This is the first step in adding support for upward growable stacks.
It is a required feature on ia64 to support the register stack (or
rstack as I like to call it -- it also means reverse stack). We do
not currently create rstacks, so the upward growing is not exercised
and the change should be a functional no-op.
Reviewed by: alc
|
| |
|
|
|
|
| |
Spotted by: mr
|
|
|
|
|
|
| |
Add a GEOM based backend.
Remove the device/VOP_SPECSTRATEGY() based backend.
|
|
|
|
| |
Store the udev_t we will report to userland in the swdevt.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove the vnode and dev_t fields and replace them with a void *.
Introduce separate strategy functions for devices and regular (NFS)
vnodes.
For devices we don't need the vnode v_numoutput stuff.
Add a generic swaponsomething() function to add a swapdevice and
split the remainder of swaponvp() into swaponvp() and swapondev()
which calls this backend.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
sockets into machine-dependent files. The rationale for this
migration is illustrated by the modified amd64 allocator. It uses the
amd64's direct map to avoid emphemeral mappings in the kernel's
address space. On an SMP, the emphemeral mappings result in an IPI
for TLB shootdown for each transmitted page. Yuck.
Maintainers of other 64-bit platforms with direct maps should be able
to use the amd64 allocator as a reference implementation.
|
|
|
|
|
| |
Appletalk code. These changes are untested since I don't have
an Appletalk environment.
|
|
|
|
|
| |
ether_output() when prepending netatalk AFA_PHASE2 llc headers (TRYWAIT).
ether_output() when prepending ethernet header to a frame (DONTWAIT).
|
| |
|
|
|
|
|
|
| |
switched from PCCARD_MEM_FOO to PCCARD_A_MEM_FOO, yet we didn't change
exca in all the right places. Do so now. Also use PCCARD_WIDTH_AUTO
rather than the magic cookie 0.
|
|
|
|
|
|
| |
change also disables interrupts around non-S4 suspends whereas before we
did not do this. Our version of AcpiEnterSleepStateS4bios was almost
identical to the ACPICA version.
|
|
|
|
|
| |
Submitted by: David Xu <davidxu@FreeBSD.org>
PR: kern/54810
|
|
|
|
|
| |
Submitted by: David Xu <davidxu@FreeBSD.org>
PR: kern/54810
|
|
|
|
|
|
|
|
| |
line up the function names in an earlier generation of the API when
some of the functions returned structure pointers.
Obtained from: TrustedBSD Project
Sponsored by: DARPA, Network Associates Laboratories
|
| |
|
|
|
|
|
| |
to long and explicitly cast field dirty of struct vm_page to unsigned
long. When PAGE_SIZE is 32K, this field is actually unsigned long.
|
|
|
|
| |
in vm_page_lookup().
|
|
|
|
|
|
|
|
|
|
| |
apply PHYS_TO_VM_PAGE() to the physical address obtained from the page
table.
(This is based upon similar changes made to the amd64 and i386 pmaps and
a part of a long-term campaign to eliminate pte objects.)
Tested by: wilko
|
|
|
|
| |
us.
|
|
|
|
|
|
|
|
|
|
|
| |
- Add a new PCIM_HDRTYPE constant for the field in PCIR_HDRTYPE that holds
the header type.
- Replace several magic numbers with appropriate constants for the header
type register and a couple of PCI_FUNCMAX.
- Merge to amd64 the fix to the i386 bridge code to skip devices with
unknown header types.
Requested by: imp (1, 2)
|
|
|
|
| |
Submitted by: Samy Al Bahra <samy@kerneled.com>
|
|
|
|
|
| |
a long type and explicitly cast m->valid and m->dirty to unsigned long.
When PAGE_SIZE is 32K, these fields are in fact unsigned long.
|
|
|
|
|
| |
PR: kern/55932
Submitted by: Mark Kettenis <kettenis@chello.nl>
|
| |
|
| |
|
|
|
|
| |
since inlining failed due to the size of BUS_*
|
|
|
|
| |
Reviewed by: rwatson
|
| |
|
|
|
|
| |
Skip polling devices that keeps returning 0xff early (ie no HW there).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Surround all accesses of the BKGRD{WAIT,INPROG} flags with the vnode
interlock.
- Don't use the B_LOCKED flag and QUEUE_LOCKED for background write
buffers. Check for the BKGRDINPROG flag before recycling or throwing
away a buffer. We do this instead because it is not safe for us to move
the original buffer to a new queue from the callback on the background
write buffer.
- Remove the B_LOCKED flag and the locked buffer queue. They are no longer
used.
- The vnode interlock is used around checks for BKGRDINPROG where it may
not be strictly necessary. If we hold the buf lock the a back-ground
write will not be started without our knowledge, one may only be
completed while we're not looking. Rather than remove the code, Document
two of the places where this extra locking is done. A pass should be
done to verify and minimize the locking later.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
reading the CIS on some cards. However, not all just yet. This makes
at least some of the xircom cards that weren't working to work. It
doesn't make my home and away card work, however.
o Don't get the card offset wrong. This is the biggest hassle for
reading the CIS. The old code was just so wrong I can't believe that
it worked at all.
o Don't set the bit that allows/forces 16-bit memory access to the
memory. It is hard coded with 0x80.
o Don't need to slow down memory access with wait-states. OLDCARD didn't
need them and it doesn't hurt anything.
o remove bogus grousying in comment.
|
|
|
|
| |
Reviewed by: roberto
|
|
|
|
| |
Pointed out by: bde
|
|
|
|
|
|
| |
32K pages are selected. In spec_getpages() change the printf format
specifier and add an explicit cast so that we always print the field
as a long type.
|