Up to [DragonFly] / src / sys / bus / pci / i386
Request diff between arbitrary revisions
Keyword substitution: kv
Default branch: MAIN
Add amd64 files for the ISA and PCI busses and adjust the header files to operate in more of a machine-independant fashion.
Create an #include layer for bus/pci and bus/isa so source files do not have to dive into bus/xxx/i386 to access header files.
Rename printf -> kprintf in sys/ and add some defines where necessary (files which are used in userland, too).
Rename malloc->kmalloc, free->kfree, and realloc->krealloc. Pass 1
Allow 'options SMP' *WITHOUT* 'options APIC_IO'. That is, an ability to produce an SMP-capable kernel that uses the PIC/ICU instead of the IO APICs for interrupt routing. SMP boxes with broken BIOSes (namely my Shuttle XPC SN95G5) could very well have serious interrupt routing problems when operating in IO APIC mode. One solution is to not use the IO APICs. That is, to run only the Local APICs for the SMP management. * Don't conditionalize NIDT. Just set it to 256 * Make the ICU interrupt code MP SAFE. This primarily means using the imen_spinlock to protect accesses to icu_imen. * When running SMP without APIC_IO, set the LAPIC TPR to prevent unintentional interrupts. Leave LINT0 enabled (normally with APIC_IO LINT0 is disabled when the IO APICs are activated). LINT0 is the virtual wire between the 8259 and LAPIC 0. * Get rid of NRSVIDT. Just use IDT_OFFSET instead. * Clean up all the APIC_IO tests which should have been SMP tests, and all the SMP tests which should have been APIC_IO tests. Explicitly #ifdef out all code related to the IO APICs when APIC_IO is not set.
Annotate the class byte with a class name in the bootverbose pci "found->" bus logging code. Numbers are fine, but when there are thousands of them on the screen you need a bit of human readable context.
Remove my local patch again, it was still not meant to be commited.
Add new structures for exporting the cputime statistics via 64 bit counters and redo the timer frequence export. Provide the interface glue for libkinfo and libkcore. Additionally provide interfaces to query ccpu, the number of cpus, tk_nin and tk_nout. Remove those fields from devstat.h's struct statinfo. Remove kvm dependency of rpc.rstatd by using the newly added libkinfo functions and the sysctl interface for vmmeter. Use the new interface in systat, the iostat part is now kvm-free. Use kinfo_get_sched_stathz in time. Use the kinfo interface for everything beside getting the actual process list in top. This also removes the Last PID, which could be added back easily. Since the feature is not that useful and breaks e.g. the jail isolation, I haven't added a sysctl to read nextpid. Use the kinfo interface in vmstat. Use the kinfo interface in iostat. iostat is now kvm-free and not setgid kmem anymore. This also means that iostat can't be applied to coredump anymore. If this functionality is important, the kcore kinfo wrapper can be added easily.
Merge from FreeBSD: Replace an outb() with a DELAY(1) during the test for configuration mechanism #1. This fixes probing for PCI on some systems.
Add a tunable hw.pci_disable_bios_route to work around broken PCI-BIOSes. Many BIOS implementations don't route an interrupt to cardbus bridges by default and some doesn't provide a working call. This results in panics on boot up. For the OLDCARD pcic, it was possible to force the interrupt-less operation, but NEWCARD doesn't have such an option and will never have.
Sync pci_cfgreg.c with FreeBSD 5, rev. 1.101. This makes the PCI interrupt routing code more robust. Also copied pci_cfgreg.h into bus/pci/i386, the other instance in machine/pci_cfgreg.h will go later.
Fix indentation to tabs, no functional changes
kernel tree reorganization stage 1: Major cvs repository work (not logged as commits) plus a major reworking of the #include's to accomodate the relocations. * CVS repository files manually moved. Old directories left intact and empty (temporary). * Reorganize all filesystems into vfs/, most devices into dev/, sub-divide devices by function. * Begin to move device-specific architecture files to the device subdirs rather then throwing them all into, e.g. i386/include * Reorganize files related to system busses, placing the related code in a new bus/ directory. Also move cam to bus/cam though this may not have been the best idea in retrospect. * Reorganize emulation code and place it in a new emulation/ directory. * Remove the -I- compiler option in order to allow #include file localization, rename all config generated X.h files to use_X.h to clean up the conflicts. * Remove /usr/src/include (or /usr/include) dependancies during the kernel build, beyond what is normally needed to compile helper programs. * Make config create 'machine' softlinks for architecture specific directories outside of the standard <arch>/include. * Bump the config rev. WARNING! after this commit /usr/include and /usr/src/sys/compile/* should be regenerated from scratch.
Add the DragonFly cvs id and perform general cleanups on cvs/rcs/sccs ids. Most ids have been removed from !lint sections and moved into comment sections.
import from FreeBSD RELENG_4 188.8.131.52