#
332325 |
|
09-Apr-2018 |
emaste |
MFC r331053: ANSIfy i386/vm86.c
|
#
256281 |
|
10-Oct-2013 |
gjb |
Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
238792 |
|
26-Jul-2012 |
kib |
MFamd64 r238623: Introduce curpcb magic variable.
Requested and reviewed by: bde MFC after: 3 weeks
|
#
237924 |
|
01-Jul-2012 |
brueffer |
Replace an unreachable panic() in vm86_getptr (been there for 13 years) with a KASSERT() behind the functions's only consumer.
Suggested by: kib Reviewed by: kib CID: 4494 Found with: Coverity Prevent(tm) MFC after: 2 weeks
|
#
234350 |
|
16-Apr-2012 |
jkim |
- When interrupt is not requested for VM86 call, make a fake exit point and push the address onto stack as we do for INTn emulation. This avoids stack underflow when we encounter RETF instruction in VM86 mode. Lack of this exit point actually caused page fault in VM86 mode with VESA module when we resume from suspend state[1]. - Remove unnecessary CLI and STI instructions from BIOS interrupt emulation. INTn and IRET must be able to emulate the flag correctly.
Reported by: gavin [1] Tested by: gavin (early revision) MFC after: 3 days
|
#
189004 |
|
24-Feb-2009 |
rdivacky |
Change the functions to ANSI in those cases where it breaks promotion to int rule. See ISO C Standard: SS6.7.5.3:15.
Approved by: kib (mentor) Reviewed by: warner Tested by: silence on -current
|
#
165302 |
|
17-Dec-2006 |
kmacy |
Evidently FreeBSD has long relied on the compiler to treat structures passed by value (trap frames) as if they were in fact being passed by reference. For better or worse, this incorrect behaviour is no longer present in gcc 4.1. In this patch I convert all trapframe arguments to be explicitly pass by reference. I also remove vm86_initflags, pushing the very little work that it actually does up into vm86_prepcall.
Reviewed by: kan Tested by: kan
|
#
165300 |
|
17-Dec-2006 |
kmacy |
vm86_initflags was causing gcc41 and even gcc346 to get rather confused - de-obfuscate
Suggested by: kan Reviewed by: kan Tested by: kan
|
#
164033 |
|
06-Nov-2006 |
rwatson |
Sweep kernel replacing suser(9) calls with priv(9) calls, assigning specific privilege names to a broad range of privileges. These may require some future tweaking.
Sponsored by: nCircle Network Security, Inc. Obtained from: TrustedBSD Project Discussed on: arch@ Reviewed (at least in part) by: mlaier, jmg, pjd, bde, ceri, Alex Lyashkov <umka at sevcity dot net>, Skip Ford <skip dot ford at verizon dot net>, Antoine Brodin <antoine dot brodin at laposte dot net>
|
#
150663 |
|
28-Sep-2005 |
rwatson |
Back out alpha/alpha/trap.c:1.124, osf1_ioctl.c:1.14, osf1_misc.c:1.57, osf1_signal.c:1.41, amd64/amd64/trap.c:1.291, linux_socket.c:1.60, svr4_fcntl.c:1.36, svr4_ioctl.c:1.23, svr4_ipc.c:1.18, svr4_misc.c:1.81, svr4_signal.c:1.34, svr4_stat.c:1.21, svr4_stream.c:1.55, svr4_termios.c:1.13, svr4_ttold.c:1.15, svr4_util.h:1.10, ext2_alloc.c:1.43, i386/i386/trap.c:1.279, vm86.c:1.58, unaligned.c:1.12, imgact_elf.c:1.164, ffs_alloc.c:1.133:
Now that Giant is acquired in uprintf() and tprintf(), the caller no longer leads to acquire Giant unless it also holds another mutex that would generate a lock order reversal when calling into these functions. Specifically not backed out is the acquisition of Giant in nfs_socket.c and rpcclnt.c, where local mutexes are held and would otherwise violate the lock order with Giant.
This aligns this code more with the eventual locking of ttys.
Suggested by: bde
|
#
150335 |
|
19-Sep-2005 |
rwatson |
Add GIANT_REQUIRED and WITNESS sleep warnings to uprintf() and tprintf(), as they both interact with the tty code (!MPSAFE) and may sleep if the tty buffer is full (per comment).
Modify all consumers of uprintf() and tprintf() to hold Giant around calls into these functions. In most cases, this means adding an acquisition of Giant immediately around the function. In some cases (nfs_timer()), it means acquiring Giant higher up in the callout.
With these changes, UFS no longer panics on SMP when either blocks are exhausted or inodes are exhausted under load due to races in the tty code when running without Giant.
NB: Some reduction in calls to uprintf() in the svr4 code is probably desirable.
NB: In the case of nfs_timer(), calling uprintf() while holding a mutex, or even in a callout at all, is a bad idea, and will generate warnings and potential upset. This needs to be fixed, but was a problem before this change.
NB: uprintf()/tprintf() sleeping is generally a bad ideas, as is having non-MPSAFE tty code.
MFC after: 1 week
|
#
138129 |
|
27-Nov-2004 |
das |
Don't include sys/user.h merely for its side-effect of recursively including other headers.
|
#
119452 |
|
25-Aug-2003 |
obrien |
Fix copyright comment & FBSDID style nits.
Requested by: bde
|
#
115683 |
|
02-Jun-2003 |
obrien |
Use __FBSDID().
|
#
112569 |
|
24-Mar-2003 |
jake |
- Add vm_paddr_t, a physical address type. This is required for systems where physical addresses larger than virtual addresses, such as i386s with PAE. - Use this to represent physical addresses in the MI vm system and in the i386 pmap code. This also changes the paddr parameter to d_mmap_t. - Fix printf formats to handle physical addresses >4G in the i386 memory detection code, and due to kvtop returning vm_paddr_t instead of u_long.
Note that this is a name change only; vm_paddr_t is still the same as vm_offset_t on all currently supported platforms.
Sponsored by: DARPA, Network Associates Laboratories Discussed with: re, phk (cdevsw change)
|
#
111119 |
|
19-Feb-2003 |
imp |
Back out M_* changes, per decision of the TRB.
Approved by: trb
|
#
109623 |
|
21-Jan-2003 |
alfred |
Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0. Merge M_NOWAIT/M_DONTWAIT into a single flag M_NOWAIT.
|
#
106609 |
|
08-Nov-2002 |
davidxu |
adjust critical section to only wrap around vm86_bioscall().
|
#
106607 |
|
07-Nov-2002 |
davidxu |
use critical_enter/exit to add a critical section around BIOS call, this unbreaks WITNESS.
Pointed out by: jhb
|
#
106542 |
|
06-Nov-2002 |
davidxu |
1.Fix smp race between kernel vm86 BIOS calling and userland vm86 mode code, remove global variable in_vm86call, set vm86 calling flag in PCB flags.
2.Fix vm86 BIOS calling preempted problem by changing vm86_lock mutex type from MTX_DEF to MTX_SPIN. vm86pcb is not remembered in thread struct, when the thread calling vm86 BIOS is preempted by interrupt thread, and later switching back to the thread would cause incorrect context be loaded into CPU registers, this leads to kernel crash.
|
#
99864 |
|
12-Jul-2002 |
peter |
Be specific about which reason caused vm86_addpages to panic
|
#
99862 |
|
12-Jul-2002 |
peter |
Revive backed out pmap related changes from Feb 2002. The highlights are: - It actually works this time, honest! - Fine grained TLB shootdowns for SMP on i386. IPI's are very expensive, so try and optimize things where possible. - Introduce ranged shootdowns that can be done as a single IPI. - PG_G support for i386 - Specific-cpu targeted shootdowns. For example, there is no sense in globally purging the TLB cache for where we are stealing a page from the local unshared process on the local cpu. Use pm_active to track this. - Add some instrumentation for the tlb shootdown code. - Rip out SMP code from <machine/cpufunc.h> - Try and fix some very bogus PG_G and PG_PS interactions that were bad enough to cause vm86 bios calls to break. vm86 depended on our existing bugs and this was the cause of the VESA panics last time. - Fix the silly one-line error that caused the 'panic: bad pte' last time. - Fix a couple of other silly one-line errors that should have caused more pain than they did.
Some more work is needed: - pmap_{zero,copy}_page[_idle]. These can be done without IPI's if we have a hook in cpu_switch. - The IPI handlers need some cleanup. I have a bogus %ds load that can be avoided. - APTD handling is rather bogus and appears to be a large source of global TLB IPI shootdowns for no really good reason.
I see speedups of between 1.5% and ~4% on buildworlds in a while 1 loop. I expect to see a bigger difference when there is significant pageout activity or the system otherwise has memory shortages.
I have backed out a few optimizations that I had been using over the last few days in order to be a little more conservative. I'll revisit these again over the next few days as the dust settles.
New option: DISABLE_PG_G - In case I missed something.
|
#
98482 |
|
20-Jun-2002 |
peter |
Use suword16/fuword16 instead of susword/fusword - this has two different definitions so far.. 16 bit on x86 and appears to be 32 bit on sparc64. Be explicit to avoid suprises.
|
#
93818 |
|
04-Apr-2002 |
jhb |
Change callers of mtx_init() to pass in an appropriate lock type name. In most cases NULL is passed, but in some cases such as network driver locks (which use the MTX_NETWORK_LOCK macro) and UMA zone locks, a name is used.
Tested on: i386, alpha, sparc64
|
#
93593 |
|
01-Apr-2002 |
jhb |
Change the suser() API to take advantage of td_ucred as well as do a general cleanup of the API. The entire API now consists of two functions similar to the pre-KSE API. The suser() function takes a thread pointer as its only argument. The td_ucred member of this thread must be valid so the only valid thread pointers are curthread and a few kernel threads such as thread0. The suser_cred() function takes a pointer to a struct ucred as its first argument and an integer flag as its second argument. The flag is currently only used for the PRISON_ROOT flag.
Discussed on: smp@
|
#
86485 |
|
16-Nov-2001 |
peter |
Start bringing i386/pmap.c into line with cleanups that were done to alpha pmap. In particular - - pd_entry_t and pt_entry_t are now u_int32_t instead of a pointer. This is to enable cleaner PAE and x86-64 support down the track sor that we can change the pd_entry_t/pt_entry_t types to 64 bit entities. - Terminate "unsigned *ptep, pte" with extreme prejudice and use the correct pt_entry_t/pd_entry_t types. - Various other cosmetic changes to match cleanups elsewhere. - This eliminates a boatload of casts. - use VM_MAXUSER_ADDRESS in place of UPT_MIN_ADDRESS in a couple of places where we're testing user address space limits. Assuming the page tables start directly after the end of user space is not a safe assumption. There is still more to go.
|
#
83366 |
|
12-Sep-2001 |
julian |
KSE Milestone 2 Note ALL MODULES MUST BE RECOMPILED make the kernel aware that there are smaller units of scheduling than the process. (but only allow one thread per process at this time). This is functionally equivalent to teh previousl -current except that there is a thread associated with each process.
Sorry john! (your next MFC will be a doosie!)
Reviewed by: peter@freebsd.org, dillon@freebsd.org
X-MFC after: ha ha ha ha
|
#
79995 |
|
19-Jul-2001 |
jlemon |
Rename vm86pcb_lock -> vm86_lock to correctly reflect its function.
Requested by: jhb
|
#
79964 |
|
19-Jul-2001 |
jlemon |
Expand the range of the vm86pcb_lock so that it protects manipulations to the global vm86 page table as well.
Spotted by: Kazu
|
#
76434 |
|
10-May-2001 |
jhb |
- Use sched_lock and critical regions to ensure that LDT updates are thread safe from preemption and concurrent access to the LDT. - Move the prototype for i386_extend_pcb() to <machine/pcb_ext.h>.
Reviewed by: silence on -hackers
|
#
72200 |
|
09-Feb-2001 |
bmilekic |
Change and clean the mutex lock interface.
mtx_enter(lock, type) becomes:
mtx_lock(lock) for sleep locks (MTX_DEF-initialized locks) mtx_lock_spin(lock) for spin locks (MTX_SPIN-initialized)
similarily, for releasing a lock, we now have:
mtx_unlock(lock) for MTX_DEF and mtx_unlock_spin(lock) for MTX_SPIN. We change the caller interface for the two different types of locks because the semantics are entirely different for each case, and this makes it explicitly clear and, at the same time, it rids us of the extra `type' argument.
The enter->lock and exit->unlock change has been made with the idea that we're "locking data" and not "entering locked code" in mind.
Further, remove all additional "flags" previously passed to the lock acquire/release routines with the exception of two:
MTX_QUIET and MTX_NOSWITCH
The functionality of these flags is preserved and they can be passed to the lock/unlock routines by calling the corresponding wrappers:
mtx_{lock, unlock}_flags(lock, flag(s)) and mtx_{lock, unlock}_spin_flags(lock, flag(s)) for MTX_DEF and MTX_SPIN locks, respectively.
Re-inline some lock acq/rel code; in the sleep lock case, we only inline the _obtain_lock()s in order to ensure that the inlined code fits into a cache line. In the spin lock case, we inline recursion and actually only perform a function call if we need to spin. This change has been made with the idea that we generally tend to avoid spin locks and that also the spin locks that we do have and are heavily used (i.e. sched_lock) do recurse, and therefore in an effort to reduce function call overhead for some architectures (such as alpha), we inline recursion for this case.
Create a new malloc type for the witness code and retire from using the M_DEV type. The new type is called M_WITNESS and is only declared if WITNESS is enabled.
Begin cleaning up some machdep/mutex.h code - specifically updated the "optimized" inlined code in alpha/mutex.h and wrote MTX_LOCK_SPIN and MTX_UNLOCK_SPIN asm macros for the i386/mutex.h as we presently need those.
Finally, caught up to the interface changes in all sys code.
Contributors: jake, jhb, jasone (in no particular order)
|
#
71320 |
|
21-Jan-2001 |
jasone |
Remove MUTEX_DECLARE() and MTX_COLD. Instead, postpone full mutex initialization until after malloc() is safe to call, then iterate through all mutexes and complete their initialization.
This change is necessary in order to avoid some circular bootstrapping dependencies.
|
#
70861 |
|
10-Jan-2001 |
jake |
Use PCPU_GET, PCPU_PTR and PCPU_SET to access all per-cpu variables other then curproc.
|
#
68404 |
|
06-Nov-2000 |
msmith |
Quieten some warnings about correct usage of assignments as truth values.
|
#
67355 |
|
20-Oct-2000 |
jhb |
- machine/mutex.h -> sys/mutex.h - Use MUTEX_DECLARE() and MTX_COLD for vm86pcb_lock
|
#
66691 |
|
05-Oct-2000 |
jhb |
- Remove somewhat bogus handling of the Giant mutex in the vm86 code. - Add a vm86pcb_lock mutex that is used to lock the vm86pcb used when making a vm86 call.
|
#
66053 |
|
19-Sep-2000 |
jlemon |
Allow the user to make direct BIOS intcalls (via vm86 system) if they successfully authenticate as root via the suser() call.
|
#
52635 |
|
29-Oct-1999 |
phk |
useracc() the prequel:
Merge the contents (less some trivial bordering the silly comments) of <vm/vm_prot.h> and <vm/vm_inherit.h> into <vm/vm.h>. This puts the #defines for the vm_inherit_t and vm_prot_t types next to their typedefs.
This paves the road for the commit to follow shortly: change useracc() to use VM_PROT_{READ|WRITE} rather than B_{READ|WRITE} as argument.
|
#
52121 |
|
11-Oct-1999 |
peter |
Zap unneeded #includes
Submitted by: phk
|
#
50816 |
|
02-Sep-1999 |
luoqi |
Some reorganization of sysarch() interface: 1. Move definitions of struct i386_*_args to the header file sysarch.h, since they are part of the sysarch API. struct i386_get_ldt_args and i386_set_ldt_args were identical, therefore make them into one struct i386_ldt_args. Libc should use these definitions as well. 2. Return a more sensible EOPNOTSUPP for unknown operations.
Reviewed by: marcel
|
#
50477 |
|
27-Aug-1999 |
peter |
$Id$ -> $FreeBSD$
|
#
47688 |
|
01-Jun-1999 |
jlemon |
Unbreak memory sizing for SMP.
|
#
47678 |
|
01-Jun-1999 |
jlemon |
Unifdef VM86.
Reviewed by: silence on on -current
|
#
47081 |
|
12-May-1999 |
luoqi |
Unbreak VESA on SMP.
|
#
46129 |
|
27-Apr-1999 |
luoqi |
Enable vmspace sharing on SMP. Major changes are, - %fs register is added to trapframe and saved/restored upon kernel entry/exit. - Per-cpu pages are no longer mapped at the same virtual address. - Each cpu now has a separate gdt selector table. A new segment selector is added to point to per-cpu pages, per-cpu global variables are now accessed through this new selector (%fs). The selectors in gdt table are rearranged for cache line optimization. - fask_vfork is now on as default for both UP and SMP. - Some aio code cleanup.
Reviewed by: Alan Cox <alc@cs.rice.edu> John Dyson <dyson@iquest.net> Julian Elischer <julian@whistel.com> Bruce Evans <bde@zeta.org.au> David Greenman <dg@root.com>
|
#
44863 |
|
18-Mar-1999 |
jlemon |
Remove debugging printf that I overlooked.
|
#
44845 |
|
18-Mar-1999 |
jlemon |
Change the vm86_datacall interface so that callers are now responsible for passing in their own data space and associated page table information.
Update the support files so that any pages in the vm86 page table are mapped, rather than just one page.
Restore the E820 memory probe, and have it use the new interface.
|
#
44809 |
|
16-Mar-1999 |
msmith |
Don't call int15:820, it's not allowed to be called from vm86 mode.
PR: i386/10485 Submitted by: takawata@shidahara1.planet.sci.kobe-u.ac.jp
|
#
43314 |
|
27-Jan-1999 |
dillon |
Fix warnings in preparation for adding -Wall -Wcast-qual to the kernel compile
|
#
41591 |
|
07-Dec-1998 |
archie |
The "easy" fixes for compiling the kernel -Wunused: remove unreferenced static and local variables, goto labels, and functions declared but not defined.
|
#
39786 |
|
29-Sep-1998 |
ache |
vm86_datacall: always use workaround since temp. malloced buffer or stack area can be passed (and mapped to page1!) as vesa.c does. Use contigmalloc now to get proper alignment. Bump max buffer size to PAGE_SIZE
|
#
39779 |
|
29-Sep-1998 |
ache |
Move workaround about page aligned data buffer directly to vm86_datacall, it is impossible to use this func otherwise, i.e. all vesa calls are potentially broken. Max arg size limited to 1024 for now, bump it, if needed.
|
#
39755 |
|
29-Sep-1998 |
bde |
Don't pretend to support ix86's with 16-bit ints by using longs just to ensure 32-bit variables. Doing so broke ix86's with 64-bit longs.
|
#
38347 |
|
15-Aug-1998 |
bde |
Use an array of uintptr_t's instead of an array of u_longs to hold address constants. This fixes some warnings for conversions from 64-bit integers to 32-bit pointers on i386's with 64-bit longs. vm86 still uses too many u_longs.
|
#
38245 |
|
11-Aug-1998 |
bde |
Fixed printf format errors.
|
#
37889 |
|
27-Jul-1998 |
jlemon |
Re-arrange the page layout used by vm86_bioscall so that we can potentially re-use the stack page.
Cosmetic cleanup of the code to de-obfuscate it and make it easier to follow. There should be no functional changes in this commit.
|
#
35210 |
|
15-Apr-1998 |
bde |
Support compiling with `gcc -ansi'.
|
#
34879 |
|
24-Mar-1998 |
jlemon |
Only read the cr4 register if the cpu_feature flag indicates the machine has VME support.
Noticed by: kato
|
#
34864 |
|
24-Mar-1998 |
kato |
PC-98 does not have a BIOS call to get memory size.
|
#
34840 |
|
23-Mar-1998 |
jlemon |
Add the ability to make real-mode BIOS calls from the kernel. Currently, everything is contained inside #ifdef VM86, so this option must be present in the config file to use this functionality.
Thanks to Tor Egge, these changes should work on SMP machines. However, it may not be throughly SMP-safe.
Currently, the only BIOS calls made are memory-sizing routines at bootup, these replace reading the RTC values.
|
#
33134 |
|
06-Feb-1998 |
eivind |
Back out DIAGNOSTIC changes.
|
#
33108 |
|
04-Feb-1998 |
eivind |
Turn DIAGNOSTIC into a new-style option.
|
#
33051 |
|
03-Feb-1998 |
bde |
Ifdefed some SMP and VM86 code. Note that although VM86 is not a global option, the ifdef on it in a header works because only the name of the VM86 extension is hidden.
|
#
31319 |
|
20-Nov-1997 |
bde |
Avoid passing some more `retval's.
|
#
30275 |
|
10-Oct-1997 |
peter |
Compensate for pcb.h tweaks.
(Bruce pointed out the nesting)
|
#
28981 |
|
31-Aug-1997 |
bde |
Removed unused #includes.
|
#
28872 |
|
28-Aug-1997 |
jlemon |
Remove the vm86 support as an LKM, and link it directly into the kernel if 'options "VM86"' is in the config file. The LKM was really for development, and has probably outlived its usefulness.
|
#
27998 |
|
08-Aug-1997 |
dyson |
Add the code that represents most of the interface between the VM86 pseudo-machine and the rest of the FreeBSD kernel. Submitted by: Jonathan Lemon <jlemon@americantv.com>
|