Sascha Wildner [Sat, 26 Mar 2011 22:40:55 +0000 (23:40 +0100)]
memoryallocators.9: Some small cleanup.
Matthew Dillon [Sat, 26 Mar 2011 22:15:34 +0000 (15:15 -0700)]
kernel - Change mbuf allocation in tapwrite/tunwrite path to blocking
* Tapwrite and tunwrite are called via userland, a blocking mbuf allocation
is perfectly acceptable here and avoids dropping packets unnecessarily.
* Fixes numerous spurious packet drops when using TAP or TUN, for example
with openvpn.
* Minor code cleanup in if_tap.c
Matthew Dillon [Sat, 26 Mar 2011 19:39:23 +0000 (12:39 -0700)]
kernel - Major bridging functionality added (bug fixes 4)
* Fix an issue where we were assuming that a root bridge receiving a
configuration packet from a remote bridge would get a path cost
that already include the root bridge's path cost for that port.
In fact the target bridge only includes an aggregate path cost to
root (typically the lowest path cost of all the target bridge's
ports), which is a fixed value.
* The root bridge must add the local path cost back in.
Sascha Wildner [Sat, 26 Mar 2011 18:36:39 +0000 (19:36 +0100)]
kiconv(3): Raise WARNS to 3 and fix some warnings.
Sascha Wildner [Sat, 26 Mar 2011 05:16:16 +0000 (06:16 +0100)]
kernel build: msdosfs is no longer warning, so remove 'nowerror'.
Matthew Dillon [Fri, 25 Mar 2011 21:38:35 +0000 (14:38 -0700)]
kernel - Fix MP race in vmspace_president_count() (2)
* Fix bug in last commit related to buildworld also wanting to use
the inline functions in vm_map.h
Reported-by: Magliano Andrea <masterblaster@tiscali.it>
Sascha Wildner [Fri, 25 Mar 2011 18:51:13 +0000 (19:51 +0100)]
/usr/Makefile: Use ${GITHOST} for the shallow clone too.
Reported-by: John Marino <john@marino.st>
Sepherosa Ziehau [Fri, 25 Mar 2011 14:42:02 +0000 (22:42 +0800)]
ioapic: Properly log interrupt mode
Sepherosa Ziehau [Fri, 25 Mar 2011 13:54:30 +0000 (21:54 +0800)]
8254: Don't setup 8254 interrupt, if it is not selected as interrupt cputimer
8254 interrupt is setup, mainly to support C-state > C1, however, on some
systems it could cause system freezing during boot. Change the default value
of hw.i8254.intr_disable to 1, so more systems could boot by default.
Sepherosa Ziehau [Fri, 25 Mar 2011 13:50:53 +0000 (21:50 +0800)]
acpi: Parse FADT to extract SCI IRQ number
Sepherosa Ziehau [Fri, 25 Mar 2011 13:04:38 +0000 (21:04 +0800)]
ioapic: Don't assert that interrupt mode are level/low or edge/high
For ACPI SCI, other combinations may be used by brain damaged BIOSes.
Sepherosa Ziehau [Thu, 24 Mar 2011 13:20:51 +0000 (21:20 +0800)]
acpi: Factor out SDT functions to locate specified SDT
Sepherosa Ziehau [Thu, 24 Mar 2011 11:18:40 +0000 (19:18 +0800)]
madt: File relocate
In preparation for FADT parsing
Sepherosa Ziehau [Thu, 24 Mar 2011 11:05:41 +0000 (19:05 +0800)]
madt: Configure interrupt trigger mode does not work quite well yet.
One of my system has interrupt storm on ACPI SCI (irq 9) after
change ACPI SCI mode to level/low (was edge/high).
Sepherosa Ziehau [Wed, 23 Mar 2011 14:33:52 +0000 (22:33 +0800)]
ioapic: Allow interrupt trigger mode override in MADT
Sepherosa Ziehau [Fri, 25 Mar 2011 12:24:46 +0000 (20:24 +0800)]
apic/i386: Wait APs's LAPIC to be initialized before programming I/O APIC
Sepherosa Ziehau [Thu, 24 Mar 2011 14:45:43 +0000 (22:45 +0800)]
apic/x86_64: Wait APs's LAPIC to be initialized before programming I/O APIC
Matthew Dillon [Fri, 25 Mar 2011 06:25:05 +0000 (23:25 -0700)]
kernel - Fix MP race in vmspace_president_count()
* We must get at least a shared vm_map lock in order to scan the
vm_map_entry list.
* Cache the totaled value and use it for repeated requests within one
second or if the vm_map lock could not be acquired non-blocking.
* The bug being fixed could be triggered by top.
Sascha Wildner [Fri, 25 Mar 2011 06:14:56 +0000 (07:14 +0100)]
objformat(1): Fix whitespace in the Makefile.
Sascha Wildner [Thu, 24 Mar 2011 21:02:35 +0000 (22:02 +0100)]
Hook binutils 2.21 into the build in place of 2.20.
Submitted-by: John Marino <john@marino.st>
Matthew Dillon [Fri, 25 Mar 2011 04:02:35 +0000 (21:02 -0700)]
HAMMER VFS - Fix incorrect reflush conditional
* Fix a conditional that was testing the wrong field when determining
how to reflush a directory or regular file. This could prevent sync
sequences from properly syncing the entire dependency chain during
heavy filesystem activity.
* No known bugs are related to this fix as the chains would get flushed
normally by the filesystem syncer eventually.
Reported-by: Sascha Wildner <saw@online.de>
Matthew Dillon [Thu, 24 Mar 2011 23:46:06 +0000 (16:46 -0700)]
vkernel - test/vkernel 'scratch' target missing root build
* Add the 'root' target to the 'scratch' target at the appropriate
place, it was missing.
Matthew Dillon [Thu, 24 Mar 2011 21:40:08 +0000 (14:40 -0700)]
kernel - Revamp LWKT thread migration
* Rearrange the handling of TDF_RUNNING, making lwkt_switch() responsible
for it instead of the assembly switch code. Adjust td->td_switch() to
return the previously running thread.
This allows lwkt_switch() to process thread migration between cpus after
the thread has been completely and utterly switched out, removing the
need to loop on TDF_RUNNING on the target cpu.
* Fixes lwkt_setcpu_remote livelock failure
* This required major surgery on the core thread switch assembly, testing
is needed. I tried to avoid doing this but the livelock problems persisted,
so the only solution was to remove the need for the loops that were causing
the livelocks.
* NOTE: The user process scheduler is still using the old giveaway/acquire
method. More work is needed here.
Reported-by: "Magliano Andre'" <masterblaster@tiscali.it>
Matthew Dillon [Thu, 24 Mar 2011 20:16:52 +0000 (13:16 -0700)]
kernel - Silence warnings from older gcc
* Silence a warning (fatal) during the kernel build when building with
an older gcc. The code itself was correct.
Sascha Wildner [Thu, 24 Mar 2011 17:52:03 +0000 (18:52 +0100)]
objformat(1): Remove gdb from the list. Not part of binutils.
Sascha Wildner [Thu, 24 Mar 2011 16:57:11 +0000 (17:57 +0100)]
Remove the remains of the removal of gasp in binutils 2.13 years ago.
Sascha Wildner [Thu, 24 Mar 2011 13:29:32 +0000 (14:29 +0100)]
README: I removed a bit too much.
Sascha Wildner [Thu, 24 Mar 2011 13:21:32 +0000 (14:21 +0100)]
Fix some more the the typos.
Peter Avalos [Wed, 23 Mar 2011 06:05:19 +0000 (17:05 +1100)]
mille: Fix typo.
Peter Avalos [Sat, 5 Mar 2011 22:54:35 +0000 (12:54 -1000)]
sh: Fix typo in comment.
Obtained-from: FreeBSD
Sascha Wildner [Wed, 23 Mar 2011 22:40:20 +0000 (23:40 +0100)]
Remove a years old attempt at a BSD licensed libiberty.
This never gained traction and was never part of the build.
Since libiberty is only used by the GNU toolchain (included in binutils*,
gcc* and gdb), and given that the real work with the toolchain certainly
isn't in libiberty related things, this can go.
Sascha Wildner [Wed, 23 Mar 2011 21:25:14 +0000 (22:25 +0100)]
binutils221: Fix some copy/paste errors.
Sascha Wildner [Wed, 23 Mar 2011 21:12:23 +0000 (22:12 +0100)]
binutils221: Add the gnu/ building hierarchy.
Submitted-by: John Marino <john@marino.st>
Sascha Wildner [Wed, 23 Mar 2011 20:58:30 +0000 (21:58 +0100)]
binutils221: Fix an error and a warning.
Submitted-by: John Marino <john@marino.st>
Sascha Wildner [Wed, 23 Mar 2011 20:56:12 +0000 (21:56 +0100)]
binutils221: Add some generated manual pages.
Submitted-by: John Marino <john@marino.st>
Sascha Wildner [Wed, 23 Mar 2011 20:50:50 +0000 (21:50 +0100)]
binutils221: Add some DragonFly specific configuration stuff.
Submitted-by: John Marino <john@marino.st>
Sascha Wildner [Wed, 23 Mar 2011 20:46:44 +0000 (21:46 +0100)]
binutils221: Bring in some needed files instead of generating them.
Submitted-by: John Marino <john@marino.st>
Sascha Wildner [Wed, 23 Mar 2011 20:40:55 +0000 (21:40 +0100)]
binutils221: Add our READMEs.
Submitted-by: John Marino <john@marino.st>
Sascha Wildner [Wed, 23 Mar 2011 20:14:59 +0000 (21:14 +0100)]
Merge branch 'vendor/BINUTILS221'
Sascha Wildner [Wed, 23 Mar 2011 20:13:13 +0000 (21:13 +0100)]
binutils221: Bring in some more files on the vendor branch.
Sascha Wildner [Wed, 23 Mar 2011 19:23:06 +0000 (20:23 +0100)]
Merge branch 'vendor/BINUTILS221'
Sascha Wildner [Wed, 23 Mar 2011 19:22:22 +0000 (20:22 +0100)]
Import binutils-2.21
Venkatesh Srinivas [Wed, 23 Mar 2011 18:11:30 +0000 (11:11 -0700)]
Add memoryallocators(9) manpage to describe kernel memory allocators.
Matthew Dillon [Wed, 23 Mar 2011 16:36:33 +0000 (09:36 -0700)]
kernel - Major bridging functionality added (bug fixes 3)
* When forwarding packets we do not retransmit the packet out the same
interface it came in on, but this check was not taking into account
bonding sets and could bounce a packet out a different interface on the
same bonding set the packet came in on.
This could result in loops for things like ARP broadcasts and cause
intermediate ethernet switches to get confused as to which port a
particular MAC is on.
* Change src_if == dst_if checks to compare MAC addresses instead, which
solves the problem.
Sepherosa Ziehau [Wed, 23 Mar 2011 12:41:02 +0000 (20:41 +0800)]
mptable: Make interrupt routing information logging consistent with PIR
Sepherosa Ziehau [Wed, 23 Mar 2011 12:33:35 +0000 (20:33 +0800)]
ioapic: Raise MADT I/O APIC enumerator priority
Sepherosa Ziehau [Wed, 23 Mar 2011 12:26:55 +0000 (20:26 +0800)]
ioapic: Disable imen_dump() in new code
Sepherosa Ziehau [Wed, 23 Mar 2011 12:04:15 +0000 (20:04 +0800)]
ioapic: Rework I/O APIC APIC ID allocation
- I/O APIC's ID field in ID register contains only 4bits, so only 16
I/O APICs should be allowed.
- All I/O APIC's APIC ID's lower 4bits (what we wrote to I/O APIC ID
register) must be different from each other, this should be done
even on xAPIC (e.g. Pentium 4), where I/O APIC's APIC IDs are not
required to be different from what LAPIC's.
Sepherosa Ziehau [Wed, 23 Mar 2011 10:54:33 +0000 (18:54 +0800)]
ioapic: Don't assume that BSP's APIC ID is 0
Alexander Polakov [Mon, 21 Mar 2011 23:00:15 +0000 (02:00 +0300)]
msdosfs: use size_t for unlen consistently instead of int.
size_t is different from int on x86-64, which can lead
to weird effects.
Dragonfly-bug: <http://bugs.dragonflybsd.org/issue2027>
Sepherosa Ziehau [Tue, 22 Mar 2011 11:10:07 +0000 (19:10 +0800)]
acpi/x86_64: Properly configure ACPI interrupt model
Matthew Dillon [Mon, 21 Mar 2011 21:36:24 +0000 (14:36 -0700)]
kernel - Reduce dsched console output
* Only print out 'No policy for ...' messages if bootverbose is set.
Sepherosa Ziehau [Mon, 21 Mar 2011 16:52:42 +0000 (00:52 +0800)]
ioapic: Switch to new code by default
Sepherosa Ziehau [Mon, 21 Mar 2011 16:55:51 +0000 (00:55 +0800)]
ioapic: For limited I/O APIC mixed mode, delivery mode should always be fixed.
Sepherosa Ziehau [Mon, 21 Mar 2011 16:06:30 +0000 (00:06 +0800)]
8254: Setup interrupt properly for new I/O APIC code
Sepherosa Ziehau [Mon, 21 Mar 2011 14:39:16 +0000 (22:39 +0800)]
8254: apic_8254_intr does not need to be global variable
Sepherosa Ziehau [Mon, 21 Mar 2011 13:58:04 +0000 (21:58 +0800)]
emul/linux: Unbreak module building
Sepherosa Ziehau [Mon, 21 Mar 2011 13:41:31 +0000 (21:41 +0800)]
mptable: Verbose debug logging about "fixed interrupt routing"
Sepherosa Ziehau [Mon, 21 Mar 2011 13:25:07 +0000 (21:25 +0800)]
ioapic: Don't allow interrupt source overrides to GSI 0 (ExtINT)
Sascha Wildner [Sun, 20 Mar 2011 15:28:32 +0000 (16:28 +0100)]
binutils220: Fix a copy/paste error.
Reported-by: John Marino <john@marino.st>
Sascha Wildner [Sun, 20 Mar 2011 12:57:56 +0000 (13:57 +0100)]
binutils: Install the manpages of both binutils versions.
Previously, 2.20's manpages were just copied over 2.17's.
Now it is like with gcc and friends: Install as ld217.1 and ld220.1,
for example, and use a ld.1 MLINKS for the default binutils.
Reported-by: John Marino <john@marino.st>
Sascha Wildner [Sun, 20 Mar 2011 10:49:48 +0000 (11:49 +0100)]
gcc44: Switch the rest of the MLINKS over to gcc44.
Sascha Wildner [Sun, 20 Mar 2011 10:49:10 +0000 (11:49 +0100)]
gcc44: Add a forgotten '+'.
Sepherosa Ziehau [Sun, 20 Mar 2011 07:56:02 +0000 (15:56 +0800)]
mptable: Always clear 'force_pci0' before setting/using it
Sepherosa Ziehau [Sun, 20 Mar 2011 06:40:30 +0000 (14:40 +0800)]
mptable/ioapic: Properly routing PCI interrupts
Sepherosa Ziehau [Sun, 20 Mar 2011 04:37:45 +0000 (12:37 +0800)]
ioapic/abi: Mark unused ISA IRQs as reserved
Sepherosa Ziehau [Sun, 20 Mar 2011 04:15:34 +0000 (12:15 +0800)]
ioapic: Let callers of pin_setup() to hold imen_spinlock
Sascha Wildner [Sat, 19 Mar 2011 15:57:27 +0000 (16:57 +0100)]
binutils: Offer both readelf(1)'s based on BINUTILSVER's setting.
Reported-by: John Marino <john@marino.st>
Sepherosa Ziehau [Sat, 19 Mar 2011 11:11:10 +0000 (19:11 +0800)]
ioapic: Move MachIntrABI switching from ABI finalize to I/O APIC configure
Sascha Wildner [Fri, 18 Mar 2011 21:05:22 +0000 (22:05 +0100)]
Fix loading of a kernel that was linked with ld 2.20 on x86_64.
The MAXPAGESIZE changed between binutils 2.17 and 2.20 from 0x100000
to 0x200000 for x86_64. But we have 0x100000 coded into our ldscript
for the kernel.
The real solution would be to specify "CONSTANT (MAXPAGESIZE)" in
the ldscript but unfortunately binutils 2.17 (at least our version;
later snapshots like 2.17.50 or 2.17.90 do) doesn't have support for
this keyword.
We will do that too once we get rid of binutils 2.17. Until then,
set max-page-size to 0x100000 as a workaround when linking on
x86_64.
Sascha Wildner [Sat, 19 Mar 2011 08:17:29 +0000 (09:17 +0100)]
Fix buildkernel without -j.
One of the recent commits by sephe caused genassym.c to depend on
bus_if.h and device_if.h (via machintr.h via bus.h).
However, without -j, these headers would not be generated (from
the .m files) before genassym.c was compiled, causing the kernel
build to break.
As a fix, make genassym.c depend on these headers in the Makefile.
The interesting bit is that this is one of the cases where it
breaks without -j but _does_ work with -j 1 (read: one) due to
the different handling of no -j vs. -j 1 in make(1).
Sepherosa Ziehau [Sat, 19 Mar 2011 07:47:20 +0000 (15:47 +0800)]
apic: Initialize LAPIC before programming I/O APIC
On the system without IMCR, I/O APIC is enabled when it is first accessed.
Before I/O APIC is enabled, LAPIC should be initialized.
Sepherosa Ziehau [Sat, 19 Mar 2011 07:28:54 +0000 (15:28 +0800)]
lapic: Centralize LAPIC configuration
Sepherosa Ziehau [Sat, 19 Mar 2011 06:56:16 +0000 (14:56 +0800)]
lapic_init: Use 'bsp' function parameter consistently
Sepherosa Ziehau [Sat, 19 Mar 2011 06:46:36 +0000 (14:46 +0800)]
lapic: Move LAPIC related vector installation into lapic_init()
Sepherosa Ziehau [Sat, 19 Mar 2011 06:34:07 +0000 (14:34 +0800)]
lapic: apic_initialize() -> lapic_init()
Sepherosa Ziehau [Sat, 19 Mar 2011 05:19:35 +0000 (13:19 +0800)]
apic: Centralize IMCR present setting
Sepherosa Ziehau [Fri, 18 Mar 2011 14:48:00 +0000 (22:48 +0800)]
clock: Use irq number; More consistent with the above register_int()
Sascha Wildner [Fri, 18 Mar 2011 19:41:31 +0000 (20:41 +0100)]
kernel: Fix -Wundef in a number of places.
Sascha Wildner [Fri, 18 Mar 2011 17:49:27 +0000 (18:49 +0100)]
Hook some forgotten Citrus tools into the build.
Sepherosa Ziehau [Fri, 18 Mar 2011 14:23:48 +0000 (22:23 +0800)]
ioapic/abi: Log interrupt trigger mode changes
It is mainly used to locate missing bus_config_intr call
Sepherosa Ziehau [Fri, 18 Mar 2011 14:08:44 +0000 (22:08 +0800)]
icu/abi: Fix typo
Sepherosa Ziehau [Fri, 18 Mar 2011 09:52:52 +0000 (17:52 +0800)]
mptable/pci: Configure interrupts after routing
Sepherosa Ziehau [Fri, 18 Mar 2011 09:52:29 +0000 (17:52 +0800)]
nexus: Implement bus_config_intr bus method
Sepherosa Ziehau [Fri, 18 Mar 2011 09:05:44 +0000 (17:05 +0800)]
machintr: Add intr_config interface
This interface is used to change pre-configured interrupt's trigger
mode and polarity.
Sepherosa Ziehau [Fri, 18 Mar 2011 07:17:39 +0000 (15:17 +0800)]
ioapic: Properly setup I/O APIC pin according to the saved information
Sepherosa Ziehau [Fri, 18 Mar 2011 05:59:50 +0000 (13:59 +0800)]
ioapic/abi: Save IRQ to GSI mapping
Sepherosa Ziehau [Fri, 18 Mar 2011 05:25:12 +0000 (13:25 +0800)]
ioapic/abi: Save interrupt polarity
Sepherosa Ziehau [Thu, 17 Mar 2011 11:28:22 +0000 (19:28 +0800)]
ioapic: During initmap, only GSIs should be configured.
Sascha Wildner [Thu, 17 Mar 2011 17:39:42 +0000 (18:39 +0100)]
powernow.4: Fix some bugs (typo, missing sysctl, style).
While doing this, fix the est(4)'s manual page in a similar manner.
Reported-by: Max Herrgard <herrgard@gmail.com>
Sepherosa Ziehau [Thu, 17 Mar 2011 10:55:41 +0000 (18:55 +0800)]
ioapic: Setup I/O APIC according to the saved information. Stage 1/2
Sepherosa Ziehau [Thu, 17 Mar 2011 07:48:53 +0000 (15:48 +0800)]
ioapic: Save interrupt source override information
Sepherosa Ziehau [Thu, 17 Mar 2011 06:45:45 +0000 (14:45 +0800)]
ioapic: Save I/O APIC information for later configuration
Sepherosa Ziehau [Thu, 17 Mar 2011 05:37:43 +0000 (13:37 +0800)]
mptable: Get pin count of I/O APIC and calculate GSI base accordingly
Sascha Wildner [Thu, 17 Mar 2011 06:07:04 +0000 (07:07 +0100)]
kernel: In the x86_64 kernel, add a missing include to trap.c.
Some bits of code in trap() regarding the handling of T_NMI were not
compiled in due to NISA not being defined.
While I'm here, put some more code in "#if NISA > 0", like it is for
i386.
Sascha Wildner [Thu, 17 Mar 2011 01:50:41 +0000 (02:50 +0100)]
kernel: Fix x86_64 building without 'options DDB'.
Sascha Wildner [Thu, 17 Mar 2011 01:20:49 +0000 (02:20 +0100)]
kernel: Improve #ifdef a bit.
Sascha Wildner [Wed, 16 Mar 2011 22:05:05 +0000 (23:05 +0100)]
kernel: Fix building without 'options P1003_1B'.
Sascha Wildner [Wed, 16 Mar 2011 22:03:39 +0000 (23:03 +0100)]
kernel: Fix building without 'options INVARIANTS'.
Sascha Wildner [Wed, 16 Mar 2011 22:01:46 +0000 (23:01 +0100)]
kernel: Fix building without 'options INET'.