summaryrefslogtreecommitdiffstats
path: root/sys/i386
Commit message (Collapse)AuthorAgeFilesLines
* Fix a problem in bus_dmamap_load_{mbuf,uio} when the first mbuf or the firstharti2003-02-041-11/+16
| | | | | | | | | | | | uio segment is empty. In this case no dma segment is create by bus_dmamap_load_buffer, but the calling routine clears the first flag. Under certain combinations of addresses of the first and second mbuf/uio buffer this leads to corrupted DMA segment descriptors. This was already fixed by tmm in sparc64/sparc64/iommu.c. PR: kern/47733 Reviewed by: sam Approved by: jake (mentor)
* Split the global timezone structure into two integer fields tophk2003-02-033-6/+6
| | | | | | | | | | prevent the compiler from optimizing assignments into byte-copy operations which might make access to the individual fields non-atomic. Use the individual fields throughout, and don't bother locking them with Giant: it is no longer needed. Inspired by: tjr
* Split statclock into statclock and profclock, and made the method for drivingjake2003-02-0310-55/+97
| | | | | | | | | | | | | statclock based on profhz when profiling is enabled MD, since most platforms don't use this anyway. This removes the need for statclock_process, whose only purpose was to subdivide profhz, and gets the profiling clock running outside of sched_lock on platforms that implement suswintr. Also changed the interface for starting and stopping the profiling clock to do just that, instead of changing the rate of statclock, since they can now be separate. Reviewed by: jhb, tmm Tested on: i386, sparc64
* Add IPv6 support for Linuxlator.ume2003-02-031-0/+1
| | | | | Reviewed by: dwmalone MFC after: 10 days
* - Make allpmaps static.alc2003-02-031-3/+4
| | | | | | - Use atomic subtract to update the global wired pages count. (See also vm/vm_page.c revision 1.233.) - Assert that the page queue lock is held in pmap_remove_entry().
* Catch more uses of MIN().alfred2003-02-021-1/+0
|
* Consolidate MIN/MAX macros into one place (param.h).alfred2003-02-023-6/+0
| | | | Submitted by: Hiten Pandya <hiten@unixdaemons.com>
* Put replace spaces with tabs in keeping with the rest of the file.joe2003-02-011-1/+1
|
* add PST to i386 notes.phk2003-02-011-0/+5
|
* Reversion of commit by Davidxu plus fixes since applied.julian2003-02-018-14/+15
| | | | | | | | I'm not convinced there is anything major wrong with the patch but them's the rules.. I am using my "David's mentor" hat to revert this as he's offline for a while.
* Make tsc_freq a 64bit quantity.phk2003-01-294-17/+22
| | | | Inspired by: http://www.theinquirer.net/?article=7481
* Implement bus_dmamem_alloc_size() and bus_dmamem_free_size() asscottl2003-01-292-8/+32
| | | | | | | | | | | | | | | | | | | | counterparts to bus_dmamem_alloc() and bus_dmamem_free(). This allows the caller to specify the size of the allocation instead of it defaulting to the max_size field of the busdma tag. This is intended to aid in converting drivers to busdma. Lots of hardware cannot understand scatter/gather lists, which forces the driver to copy the i/o buffers to a single contiguous region before sending it to the hardware. Without these new methods, this would require a new busdma tag for each operation, or a complex internal allocator/cache for each driver. Allocations greater than PAGE_SIZE are rounded up to the next PAGE_SIZE by contigmalloc(), so this is not suitable for multiple static allocations that would be better served by a single fixed-length subdivided allocation. Reviewed by: jake (sparc64)
* Remove BDE_DEBUGGER.jake2003-01-284-149/+3
| | | | Discussed with: bde
* Merge pmap_testbit() and pmap_is_modified(). The latter is the only calleralc2003-01-281-29/+9
| | | | of the former.
* Fix KSE related patch.julian2003-01-263-6/+3
| | | | | Make it compile for the SMP case.. statclock_process() has changed prototypes.
* Move UPCALL related data structure out of kse, introduce a newdavidxu2003-01-265-9/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | data structure called kse_upcall to manage UPCALL. All KSE binding and loaning code are gone. A thread owns an upcall can collect all completed syscall contexts in its ksegrp, turn itself into UPCALL mode, and takes those contexts back to userland. Any thread without upcall structure has to export their contexts and exit at user boundary. Any thread running in user mode owns an upcall structure, when it enters kernel, if the kse mailbox's current thread pointer is not NULL, then when the thread is blocked in kernel, a new UPCALL thread is created and the upcall structure is transfered to the new UPCALL thread. if the kse mailbox's current thread pointer is NULL, then when a thread is blocked in kernel, no UPCALL thread will be created. Each upcall always has an owner thread. Userland can remove an upcall by calling kse_exit, when all upcalls in ksegrp are removed, the group is atomatically shutdown. An upcall owner thread also exits when process is in exiting state. when an owner thread exits, the upcall it owns is also removed. KSE is a pure scheduler entity. it represents a virtual cpu. when a thread is running, it always has a KSE associated with it. scheduler is free to assign a KSE to thread according thread priority, if thread priority is changed, KSE can be moved from one thread to another. When a ksegrp is created, there is always N KSEs created in the group. the N is the number of physical cpu in the current system. This makes it is possible that even an userland UTS is single CPU safe, threads in kernel still can execute on different cpu in parallel. Userland calls kse_create to add more upcall structures into ksegrp to increase concurrent in userland itself, kernel is not restricted by number of upcalls userland provides. The code hasn't been tested under SMP by author due to lack of hardware. Reviewed by: julian
* - Remove a redundant scheduler option.jeff2003-01-261-1/+0
| | | | | Pointy hat to: jeff Spotted by: dillon
* - Introduce the SCHED_ULE and SCHED_4BSD options for compile time selectionjeff2003-01-262-0/+3
| | | | | of the scheduler. - Add SCHED_4BSD as the scheduler for all kernel config files in cvs.
* Clean up some junk defines, and GC the TPR options.peter2003-01-231-23/+0
|
* Nuke CHEAP_TPR stuff, including LOPRIO_LEVEL (bogus) and ALLHWI_LEVELpeter2003-01-232-34/+0
| | | | | (which we never used). There is no need to tweak the TPR anymore and only causes problems.
* Now that TPR isn't bogusly raised at boot, there is no need to clearpeter2003-01-231-8/+0
| | | | it at context switch.
* Dont raise the TPR register at initialization time. It only causespeter2003-01-231-2/+0
| | | | problems and we only ever clear it.
* - Move enable_sse()'s prototype to machine/md_var.h.jhb2003-01-225-15/+9
| | | | | | | | - Sort definition of cpu_* variables appropriately. - Move cpu_fxsr out of the magic non-BSS set of variables and stick it in the BSS along with hw_instruction_sse (make the latter static as well). Submitted by: bde (partially)
* Rename cpuid_cpuinfo to cpu_procinfo. bde requested that I rename thisjhb2003-01-227-9/+9
| | | | | | | variable to something in the cpu_* namespace since that's what all the other cpuid variables were named and cpu_procinfo is what I came up with. Requested by: bde
* Bah, add in a missing space char I noticed when MFC'ing this.jhb2003-01-221-1/+1
|
* Needs wlan for wi.imp2003-01-211-0/+1
|
* Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0.alfred2003-01-2127-49/+49
| | | | Merge M_NOWAIT/M_DONTWAIT into a single flag M_NOWAIT.
* Resolve relative relocations in klds before trying to parse the module'sjake2003-01-211-6/+26
| | | | | | | | | | | | metadata. This fixes module dependency resolution by the kernel linker on sparc64, where the relocations for the metadata are different than on other architectures; the relative offset is in the addend of an Elf_Rela record instead of the original value of the location being patched. Also fix printf formats in debug code. Submitted by: Hartmut Brandt <brandt@fokus.gmd.de> PR: 46732 Tested on: alpha (obrien), i386, sparc64
* Fix typo in comment: inlcude -> include.olgeni2003-01-201-1/+1
|
* o Move the contents of <machine/floatingpoint.h> over tomarcel2003-01-192-88/+80
| | | | | | | | | | | | | | | <machine/ieeefp.h> where it belongs. o Remove the i386 specific inclusion of <machine/floatingpoint.h> from <ieeefp.h>, now that including <machine/ieeefp.h> is enough for all architectures. o Allow <machine/ieeefp.h> to inline the functions exposed by the headers by checking for _IEEEFP_INLINED_ in the MI header. When defined, prototypes are not given and it is assumed that the MD headers, when inlining only a subset of the functions provide prototypes for the functions not being inlined. Based on patch from: Terry Lambert <tlambert2@mindspring.com> Tested with: make release.
* - Removed unecesary code.mdodd2003-01-186-110/+96
| | | | | - Correct smapi32_new() asm (still doesn't work.) - Attach to mainboard not isa.
* A driver for the System Management Application Programmdodd2003-01-179-0/+1183
| | | | | | | | Interface (SMAPI) BIOS, which is present on some IBM Thinkpad models (560, 600, 770 to name a few.) The SMAPI BIOS provides access to System Information, System Configuration, and Power Management.
* wi now needs wlansam2003-01-161-0/+1
| | | | Reviewed by: imp
* Merge all the various copies of vm_fault_quick() into a singledillon2003-01-161-17/+0
| | | | portable copy.
* Merge all the various copies of vmapbuf() and vunmapbuf() into a singledillon2003-01-151-74/+0
| | | | | | | | portable copy. Note that pmap_extract() must be used instead of pmap_kextract(). This is precursor work to a reorganization of vmapbuf() to close remaining user/kernel races (which can lead to a panic).
* Add machdep.elan_freq sysctl which can be used to set the CPU clockphk2003-01-152-3/+92
| | | | | | | | | | | frequency in Hz. The default is still 33.333 MHz. Please notice that the number is round to a multiple of four internally so it may not read back exactly the same as written. Add compile time ELAN_XTAL option to override the 33.333 MHz default. Add compile time ELAN_PPS option to enable code for high precision (250 nanoseconds) timestamping of external signals.
* - Add inline functions for {ll,l,}abs() to libkern.mdodd2003-01-151-11/+0
| | | | - Remove hand rolled abs() functions.
* Bow to the whining masses and change a union back into void *. Retaindillon2003-01-132-3/+3
| | | | | removal of unnecessary casts and throw in some minor cleanups to see if anyone complains, just for the hell of it.
* Change struct file f_data to un_data, a union of the correct structdillon2003-01-122-3/+3
| | | | | | | | | | pointer types, and remove a huge number of casts from code using it. Change struct xfile xf_data to xun_data (ABI is still compatible). If we need to add a #define for f_data and xf_data we can, but I don't think it will be necessary. There are no operational changes in this commit.
* Remove earlysetcpuclass() as it has been OBE.jhb2003-01-092-17/+0
| | | | Suggested by: bde
* Rework part of the previous processor name changes so that we readjhb2003-01-094-29/+28
| | | | | | | | cpu_exthigh and cpu_brand in printcpuinfo() instead of in identify_cpu(). We also only do it for known-good values of cpu_vendor which is a bit more conservative. Reviewed by: bde (mostly)
* Consistently use spaces in between arguments to strcmp(). Whitespacejhb2003-01-081-3/+3
| | | | only.
* - Use cpu_exthigh instead of executing cpuid again to retrieve it for thejhb2003-01-081-36/+51
| | | | | | | | | | | | | | | | | print_AMD_foo() functions. - Add a brand name table for the brand index provided on Intel CPU's in %ebx after cpuid 1. - For Intel CPUs, if we don't get a processor name from the extended cpuid then use the brand index in cpuid_cpuinfo to pick a name from the brand table and copy that name into cpu_brand. - Replace the duplicated code to use the extended cpuid to replace cpu_model with the processor name in the AMD and Transmeta sections of printcpuinfo() with generic code that replaces cpu_model with cpu_brand if cpu_brand is not an empty string. We also trim leading spaces from cpu_brand prior to doing this since at least some processor names (notably those of Intel CPUs) have leading spaces in the name. - Give print_AMD_features() its own private regs[] array since printcpuinfo() doesn't use the one it has anymore.
* - Add a cpu_exthigh variable to hold the highest extended cpuid valuejhb2003-01-083-0/+28
| | | | | | | | | returned from cpuid 0x80000000. - Add a cpu_brand char array to hold the processor name returned by cpuid 0x80000002-0x80000004 on AMD, Intel, Transmeta, and possibly other CPUs. - Use cpuid to set cpu_exthigh and read the processor name if it is present in identify_cpu().
* Bah, get the test for more than one logical CPU right so we don't boguslyjhb2003-01-081-1/+1
| | | | | claim a CPU has HT support when it lists 0 or 1 logical CPU's per physical processor.
* Enumerate logical hyperthread CPUs manually if they aren't already listedjhb2003-01-083-0/+240
| | | | | | | | | | | | | | | | in the mptable. The way this works is that we determine if the system has hyperthreading and how many logical CPU's should be in each physical CPU by using the information returned by cpuid. During the first pass of the mptable, we build a bitmask of the APIC IDs of the CPUs listed in the mptable. We then scan that bitmask to see if the CPUs are already listed by the mptable, or if there are any APIC IDs already in use that would conflict with the APIC IDs of the logical CPUs. If that test succeeds, then we fixup the count of application processors. Later on during the second pass of the mptable we create fake processor entries for logical CPUs and add them to the system. We only need this type of fixup hack when using the mptable to enumerate CPUs. The ACPI MADT table properly enumerates all logical CPUs.
* If the boot processor supports hyperthreading and contains more than onejhb2003-01-081-0/+9
| | | | | logical CPU, display the number of logical CPUs per physical processor underneath the list of CPU features.
* Add a cpuid_cpuinfo variable to hold the results of %ebx from cpuid withjhb2003-01-083-0/+3
| | | | %eax of 1 and set it in identify_cpu().
* - Fix the name of the hyperthreading cpuid feature flag to be HTT insteadjhb2003-01-081-1/+9
| | | | | of HHT. - Document fields returned in %ebx by a cpuid with %eax of 1.
* Document bit 31 of the cpuid features word as PBE (Pending Break Enable).jhb2003-01-031-1/+1
|
OpenPOWER on IntegriCloud