1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-20 11:11:24 +00:00
Commit Graph

43212 Commits

Author SHA1 Message Date
John Baldwin
147ad8d5ad New i386 SMP code:
- The MP code no longer knows anything specific about an MP Table.
  Instead, the local APIC code adds CPUs via the cpu_add() function when
  a local APIC is enumerated by an APIC enumerator.
- Don't divide the argument to mp_bootaddress() by 1024 just so that we
  can turn around and mulitply it by 1024 again.
- We no longer panic if SMP is enabled but we are booted on a UP machine.
- init_secondary(), the asm code between init_secondary() and ap_init()
  in mpboot.s and ap_init() have all been merged together in C into
  init_secondary().
- We now use the cpuid feature bits to determine if we should enable
  PSE, PGE, or VME on each AP.
- Due to the change in the implementation of critical sections, acquire
  the SMP TLB mutex around a slightly larger chunk of code for TLB
  shootdowns.
- Remove some of the debug code from the original SMP implementation
  that is no longer used or no longer applies to the new APIC code.
- Use a temporary hack to disable the ACPI module until the SMP code has
  been further reorganized to allow ACPI to work as a module again.
- Add a DDB command to dump the interesting contents of the IDT.
2003-11-03 22:32:04 +00:00
John Baldwin
9738024229 Don't probe PnP BIOS devices for PICs for now to avoid problems with those
devices claiming resources that they don't actually use.  The PIC drivers
only register valid interrupt sources, so we don't need to rely on these
drivers to claim invalid IRQs to prevent their use by other drivers.
2003-11-03 22:22:04 +00:00
John Baldwin
e9982e75c1 - Remove explicit enabling of the BSP's APIC in the APIC_IO case and the
slave pin on the master PIC in the !APIC_IO case.  The PIC drivers now
  manage these details internally.
- Remove an spl0() that hasn't done anything since SMPng was first
  committed.
- Update some comments that have rotted since SMPng.
2003-11-03 22:20:50 +00:00
John Baldwin
72e7f9b04a - Update includes.
- Use intr_suspend/resume() callouts to the interrupt code layer which
  suspends and resumes all the known interrupt sources instead of calling
  icu_reinit() directly.
2003-11-03 22:18:57 +00:00
John Baldwin
ab089945d3 Add the ACPI MADT table APIC enumerator. This code uses the ACPI Multiple
APIC Descriptor Table to enumerate both I/O APICs and local APICs.  ACPI
does not embed PCI interrupt routing information in the MADT like the MP
Table does.  Instead, ACPI stores the PCI interrupt routing information
in the _PRT object under each PCI bus device.  The MADT table simply
provides hints about which interrupt vectors map to which I/O APICs.  Thus
when using ACPI, the existing ACPI PCI bridge drivers are sufficient to
route PCI interrupts.
2003-11-03 22:17:44 +00:00
John Baldwin
8f8914ad98 Add the MP Table APIC enumerator. This code uses the BIOS MP Table to
enumerate I/O APICs as well as local APICs.  It also provides Host-PCI
and PCI-PCI bridge drivers to use the MP Table to route PCI interrupts.
2003-11-03 22:12:37 +00:00
John Baldwin
b9c72be725 - Export doreti as a global symbol.
- Don't include isa/vector.s.  Each PIC driver's entry points now live in
  their own standalone files.
2003-11-03 22:08:52 +00:00
John Baldwin
0b0da8649c Update names of entry points for interrupt frames. 2003-11-03 22:07:21 +00:00
John Baldwin
4311d1d368 Enable PCI interrupt routing for i386 SMP kernels. 2003-11-03 22:06:35 +00:00
Warner Losh
50d2d4c753 Fix two small style nits pointed out by bde: Remove spaces after cast and
indent continued line 4 spaces instead of 2.
2003-11-03 21:54:24 +00:00
John Baldwin
6f92bdd0c1 New APIC support code:
- The apic interrupt entry points have been rewritten so that each entry
  point can serve 32 different vectors.  When the entry is executed, it
  uses one of the 32-bit ISR registers to determine which vector in its
  assigned range was triggered.  Thus, the apic code can support 159
  different interrupt vectors with only 5 entry points.
- We now always to disable the local APIC to work around an errata in
  certain PPros and then re-enable it again if we decide to use the APICs
  to route interrupts.
- We no longer map IO APICs or local APICs using special page table
  entries.  Instead, we just use pmap_mapdev().  We also no longer
  export the virtual address of the local APIC as a global symbol to
  the rest of the system, but only in local_apic.c.  To aid this, the
  APIC ID of each CPU is exported as a per-CPU variable.
- Interrupt sources are provided for each intpin on each IO APIC.
  Currently, each source is given a unique interrupt vector meaning that
  PCI interrupts are not shared on most machines with an I/O APIC.
  That mapping for interrupt sources to interrupt vectors is up to the
  APIC enumerator driver however.
- We no longer probe to see if we need to use mixed mode to route IRQ 0,
  instead we always use mixed mode to route IRQ 0 for now.  This can be
  disabled via the 'NO_MIXED_MODE' kernel option.
- The npx(4) driver now always probes to see if a built-in FPU is present
  since this test can now be performed with the new APIC code.  However,
  an SMP kernel will panic if there is more than one CPU and a built-in
  FPU is not found.
- PCI interrupts are now properly routed when using APICs to route
  interrupts, so remove the hack to psuedo-route interrupts when the
  intpin register was read.
- The apic.h header was moved to apicreg.h and a new apicvar.h header
  that declares the APIs used by the new APIC code was added.
2003-11-03 21:53:38 +00:00
John Baldwin
223e573bbd Add the new atpic(4) driver for the 8259A master and slave PICs. By
default we provide 16 interrupt sources for IRQs 0 through 15.  However,
if the I/O APIC driver has already registered sources for any of those IRQs
then we will silently fail to register our own source for that IRQ.

Note that i386/isa/icu.h is now specific to the 8259A and no longer
contains any info relevant to APICs.  Also note that fast interrupts no
longer use a separate entry point.  Instead, both fast and threaded
interrupts share the same entry point which merely looks up the appropriate
source and passes control to intr_execute_handlers().
2003-11-03 21:34:45 +00:00
John Baldwin
a8084030ad Add a per-thread variable for saving the state of eflags to support the
critical section code.
2003-11-03 21:30:00 +00:00
John Baldwin
8c9799d31f Allocate space for the intrcnt array. This array is managed in the
interrupt code layer as interrupt sources are added and handlers added
to those sources.
2003-11-03 21:28:54 +00:00
John Baldwin
ecee5704ed New device interrupt code. This defines an interrupt source abstraction
that provides methods via a PIC driver to do things like mask a source,
unmask a source, enable it when the first interrupt handler is added, etc.
The interrupt code provides a table of interrupt sources indexed by IRQ
numbers, or vectors.  These vectors are what new-bus uses for its IRQ
resources and for bus_setup_intr()/bus_teardown_intr().  The interrupt
code then maps that vector a given interrupt source object.  When an
interrupt comes in, the low-level interrupt code looks up the interrupt
source for the source that triggered the interrupt and hands it off to
this code to execute the appropriate handlers.

By having an interrupt source abstraction, this allows us to have different
types of interrupt source providers within the shared IRQ address space.
For example, IRQ 0 may map to pin 0 of the master 8259A PIC, IRQs 1
through 60 may map to pins on various I/O APICs, and IRQs 120 through
128 may map to MSI interrupts for various PCI devices.
2003-11-03 21:25:52 +00:00
John Baldwin
5b02e68554 - Always use 256 IDT entries since it is now a runtime decison as to how
many entries we use.
- Add a constant IDT_IO_INTS for the first IDT entry used for device
  interrupts.
2003-11-03 21:12:04 +00:00
John Baldwin
e14243fac7 Move the NMI handling code out to its own file. 2003-11-03 21:10:17 +00:00
John Baldwin
5eb39b8d24 Define IDTVEC() and TRAP() assembly macros so that they can be shared
with several files.
2003-11-03 21:09:17 +00:00
John Baldwin
eb2a2211ff Revert the critical section implementation to disable interrupts via
cli/sti now that we support many more than 32 interrupt sources.
2003-11-03 21:06:54 +00:00
John Baldwin
8d8dbef5ac Remove soon to be obsolete file to break kernel build while the new
interrupt code comes in.
2003-11-03 21:00:34 +00:00
Eric Anholt
4c4c0f9144 Change the DRM_ERROR about authenticator not found back to DRM_DEBUG. It's
noisier than I expected, and I don't have the time to actually get it fixed.
2003-11-03 20:44:00 +00:00
Ian Dowse
a69c45087c Override the root server address if an IP address is specified in
the root path. This is reported to make non-PXE netbooting, such as
is used on sparc64 systems, work correctly when the TFTP server is
not the same as the root server.

PR:		kern/57328
Submitted by:	Per Kristian Hove <Per.Hove@math.ntnu.no>
2003-11-03 19:45:05 +00:00
Robert Watson
3de758d3e3 Note that when ip_output() is called from ip_forward(), it will already
have its options inserted, so the opt argument to ip_output()  must be
NULL.
2003-11-03 18:03:05 +00:00
Robert Watson
eecfe773aa Remove comment about desire for eventual explicit labeling of ICMP
header copy made on input path: this is now handled differently.

Obtained from:	TrustedBSD Project
Sponsored by:	DARPA, Network Associates Laboratories
2003-11-03 18:01:38 +00:00
Robert Watson
730ecf8254 Unlock pipe mutex when failing MAC pipe ioctl access control check.
Obtained from:	TrustedBSD Project
Sponsored by:	DARPA, Network Associates Laboratories
2003-11-03 17:58:23 +00:00
Dag-Erling Smørgrav
a86fa82659 Whitespace cleanup. 2003-11-03 16:14:45 +00:00
Warner Losh
f97db4af7f Sync to 1.79 2003-11-03 16:12:27 +00:00
Warner Losh
ee4a63ca6c Add intel EtherExpress PRO PCMCIA card ID. Well, I don't know if it
is really EtherExpress or EEPro or what, but it does appear in a
couple of ethernet cards that have appeared recently on ebay.  Silicom
appears to make these cards, and they have the 82595TX chipset in
them, and sometimes uarts.  The ex driver needs some work to support
these cards, but I thought I'd get the device into pccarddevs.
2003-11-03 16:09:17 +00:00
Warner Losh
e1678e50a4 Sync to 1.78 2003-11-03 16:05:46 +00:00
Warner Losh
9e53a7290a o Use %j and uintmax_t rather than uint64_t for casting.
o use more proper bus_size_t for iosize rather than bus_addr_t.

Noticed by: bde
2003-11-03 16:04:31 +00:00
Poul-Henning Kamp
899ca00e7d Fix prototypo 2003-11-03 15:58:58 +00:00
Poul-Henning Kamp
8d334233d2 Get word spacing right in morse mode.
Fix a prototype.
2003-11-03 15:45:42 +00:00
David E. O'Brien
b05170b6d7 Add AMD Features NX and LM. 2003-11-03 14:59:05 +00:00
Hidetoshi Shimokawa
5e7c89e488 - Change driver name to fix if_xname breakage in the previous revision.
- Don't call device_get_unit() twice.

Tested by: nork
2003-11-03 13:01:23 +00:00
Hartmut Brandt
ec7ceac96a Put address handling, traffic descriptor handling and message encoding
and decoding into the atmbase module when compiled directly into the kernel.
2003-11-03 12:05:58 +00:00
Poul-Henning Kamp
5843f50d9b Change /dev/soekris-errled to be /dev/led/error and make it conditional
on CPU_SOEKRIS.

Note the subtle change in semantfics for 'f%d' flash instruction and the
new morse facility (see details in dev/led/led.c)
2003-11-03 11:03:40 +00:00
Poul-Henning Kamp
1c66457ee5 Introduce new CPU_SOEKRIS option to tell soekris hardware from other
hardware based on similar chipsets.
2003-11-03 10:34:40 +00:00
Poul-Henning Kamp
8dd85c33e3 Free major#100 2003-11-03 10:19:33 +00:00
Poul-Henning Kamp
c46def32e2 Add a generic LED driver for flashing lamps.
The hardware driver decides the name under /dev/led and provides
the function to turn the lamp on/off.

All leds are serviced by a single timeout which runs at a basic rate
of hz/10.

The LED is controlled by ascii strings as follows.

0	Turn off.
1	Turn on.
f	Flash: _-
f2	Flash: __--
f3	Flash: ___---
f4...f9 etc.
d%d	Digits.  "d12": -__________-_-______________________________
s%s	String, roll your own:
	'a-j' gives on for (1...10)/10 sec.
	'A-J' gives on for (1...10)/10 sec.
	'sAaAbBa': _-_--__-
m%s	Morse
	'.' dot
	'-' dash
	' ' letter space
	'\n' word space

My mdoc skills do not reach to express that.
2003-11-03 09:47:30 +00:00
Dag-Erling Smørgrav
9e4826180a Move sysctl declarations next to the corresponding tunable declarations.
Add a sysctl declaration for hw.ata.atapi_dma, which had gone MIA (though
setting it in loader.conf still worked, it was not visible at runtime)

Approved by:	sos
2003-11-03 09:25:02 +00:00
Doug Rabson
0be389f3ca Remove explicit cardbus attachments from drivers where this is identical
to the pci attachment. Cardbus is a derived class of pci so all pci
drivers are automatically available for matching against cardbus devices.

Reviewed by: imp
2003-11-03 09:22:18 +00:00
Hartmut Brandt
ed70dde057 Put the address handling, traffic descripto handling and the
message encoding and decoding stuff into the base module. All of this
is accessed by several of the NgATM modules and putting this into
atmbase reduceds the memory footprint.
2003-11-03 09:18:52 +00:00
Hartmut Brandt
5ba1bf11b6 Explain how to handle the generated files. Explain that the import
must actually be done into the netnatm sub-directory.
2003-11-03 09:15:31 +00:00
Hartmut Brandt
29d5d9a8a7 These files are generated by the genfiles script. See FREEBSD-upgrade
for instructions how to upgrade these.
2003-11-03 09:11:53 +00:00
Hartmut Brandt
3d4b19bb29 This commit was generated by cvs2svn to compensate for changes in r121934,
which included commits to RCS files with non-trunk default branches.
2003-11-03 09:05:49 +00:00
Hartmut Brandt
3224b86e51 Virgin import of NgATM shared kernel/user part 0.91 2003-11-03 09:05:49 +00:00
Marcel Moolenaar
2642a8845b Handle unaligned 4-byte loads. While in the neighborhood, remove the
cr.isr sanity check. We actually encounter insanities, which very
likely means that the insanity check itself is insane. Remove an empty
comment while I'm at it.
2003-11-03 08:04:04 +00:00
Marcel Moolenaar
63e69c75fb Remove alpha-bitops.h now that it's unused. It's in the attic if
we want it again.
2003-11-03 07:10:53 +00:00
Sam Leffler
04df2fbbb8 Remove bogus RTFREE that was added in rev 1.47. The rmx code operates
directly on the radix tree and does not hold any routing table refernces.
This fixes the reference counting problems that manifested itself as a
panic during unmount of filesystems that were mounted by NFS over an
interface that had been removed.

Supported by:	FreeBSD Foundation
2003-11-03 06:11:44 +00:00
Marcel Moolenaar
6537124772 Add a bogus definition of __va_list for use by lint. Make it visible
only when lint is defined to protect builds with non-GNU compilers.
2003-11-03 05:04:09 +00:00