Commit Graph

183 Commits

Author SHA1 Message Date
ad
26aaa9cb2b cpu_switchto: partial sync with i386. Set curlwp and modify the ras
check slightly.
2007-09-25 21:38:37 +00:00
ad
b684adf6ed ci_astpending is no more. 2007-09-25 17:08:08 +00:00
bouyer
29bd9d9414 %fs has to be initialized before mutexes are used; consinit() may end up
calling mutex_enter(). So call initgdt() ASAP, and consinit() right after
initgdt().
Fix Dom0 crash reported by Mikolaj Golub and others when using the VGA
console.
2007-09-24 18:34:01 +00:00
bouyer
ad1f77f70c cleanup findroot(): remove code to match BIOS disk, as the bootloader
won't pass us this kind of information anyway ...
2007-09-23 21:29:03 +00:00
bouyer
5f0855fadb Ajust for Xen 3.1.0 public headers. From Christoph Egger in private mail. 2007-09-23 16:54:07 +00:00
bouyer
94525f8950 Re-enable interrupts before checking for RAS; pointed out by YAMAMOTO Takashi. 2007-09-05 19:30:01 +00:00
yamt
7f9dc6bf93 compilation fixes. (simple_lock/unlock -> mutex_spin_enter/exit) 2007-09-04 13:50:26 +00:00
he
bad1d53b6a Add an IPL_VM argument to comply with the new vmem_create() prototype,
as per hint from ad@.
2007-07-10 16:23:26 +00:00
bouyer
afc9294f4e Add a bootstatic callback for dom0, which allows to take NFS boot informations
from the command line (nfsroot=, ip=) in the same way domUs did.
While there convert a for (;;) loop to TAILQ_FOREACH().
From Christoph Egger in private mail.

Make all bootstatic callbacks return the new NFS_BOOTSTATIC_NOSTATIC flag
when no nfs boot information is found on command line.
2007-07-08 21:14:14 +00:00
pooka
0bc323f5cd Initialize the link context in a signal frame to the receiving lwp's
link context instead of NULL.  Otherwise, if we got a signal while the
lwp had a link context set, the link context would be set to NULL upon
return from signal delivery.

christos@tech-kern: "I think you are right."
2007-07-08 10:19:21 +00:00
bouyer
69219b1efe copy from the right offset when handling root= on the command line.
Pointed out by Pavel Cahyna.
2007-06-28 20:54:47 +00:00
bouyer
6be5ba1e96 Make sure to check for pending interrupts on the final STI. For this
reorganise the IPL vectors a bit so that they can be used from more
places than splllower and doreti.
Include patch from Kazushi Marukawa (fixed to handle pending interrupts),
which should fix the read_psl() == 0 assertion failure reported by
several users.
2007-06-28 20:50:30 +00:00
bouyer
0bee3ccac3 Remove the __asm("lock") again from softintr(), as ci_ipending is local
to the CPU. Thanks to YAMAMOTO Takashi and Andrew Doran for their comments
on this.
2007-06-26 19:41:11 +00:00
bouyer
1206dd032d Various cleanups in interrupt code, and fix a potential crash in doreti:
if we enter doreti_checkast with only soft interrupt pendings, we would
jump to one of the soft* vector with %esi uninitialized, and the vector
would do a jump *%esi at the end ...
I don't know why nobody ever went into this; I guess in the common case
there's no soft irq pending without a hard irq in this code path ...
2007-06-25 20:09:34 +00:00
bouyer
bf539c16bd Add back a __asm("lock") that got lost in the yamt-idlelwp merge. 2007-06-25 20:02:45 +00:00
bouyer
142ad1ab3e Call p_emul->e_syscall_intern() before sendsig_reset() to match what
i386 does.
2007-06-25 20:01:23 +00:00
bouyer
a7d4fae602 Fix race condition in cpu_idle() on ci_want_resched. From YAMAMOTO Takashi. 2007-06-25 19:57:32 +00:00
dyoung
1ee8f4a418 Extract common code from i386, xen, and sparc64, creating
config_handle_wedges() and read_disk_sectors().  On x86, handle_wedges()
is a thin wrapper for config_handle_wedges().  Share opendisk()
across architectures.

Add kernel code in support of specifying a root partition by wedge
name.  E.g., root specifications "wedge:wd0a", "wedge:David's Root
Volume" are possible.  (Patches for config(1) coming soon.)

In support of moving disks between architectures (esp. i386 <->
evbmips), I've written a routine convertdisklabel() that ensures
that the raw partition is at RAW_DISK by following these steps:

        0 If we have read a disklabel that has a RAW_PART with
          p_offset == 0 and p_size != 0, then use that raw partition.

        1 If we have read a disklabel that has both partitions 'c'
          and 'd', and RAW_PART has p_offset != 0 or p_size == 0,
          but the other partition is suitable for a raw partition
          (p_offset == 0, p_size != 0), then swap the two partitions
          and use the new raw partition.

        2 If the architecture's raw partition is 'd', and if there
          is no partition 'd', but there is a partition 'c' that
          is suitable for a raw partition, then copy partition 'c'
          to partition 'd'.

        3 Determine the drive's last sector, using either the
          d_secperunit the drive reported, or by guessing (0x1fffffff).
          If we cannot read the drive's last sector, then fail.

        4 If we have read a disklabel that has no partition slot
          RAW_PART, then create a partition RAW_PART.  Make it span
          the whole drive.

        5 If there are fewer than MAXPARTITIONS partitions,
          then "slide" the unsuitable raw partition RAW_PART, and
          subsequent partitions, into partition slots RAW_PART+1
          and subsequent slots.  Create a raw partition at RAW_PART.
          Make it span the whole drive.

The convertdisklabel() procedure can probably stand to be simplified,
but it ought to deal with all but an extraordinarily broken disklabel,
now.

i386: compiled and tested, sparc64: compiled, evbmips: compiled.
2007-06-24 01:43:34 +00:00
bouyer
c9054f7661 Support root= as an alias for bootdev=, for consistency with multiboot
support. Suggested by Pavel Cahyna.
2007-06-18 18:56:23 +00:00
bouyer
e0e73c4e83 Make it build again when IPMI is used (caddr_t issue ?) 2007-06-12 18:55:50 +00:00
yamt
f03010953f merge yamt-idlelwp branch. asked by core@. some ports still needs work.
from doc/BRANCHES:

	idle lwp, and some changes depending on it.

	1. separate context switching and thread scheduling.
	   (cf. gmcgarry_ctxsw)
	2. implement idle lwp.
	3. clean up related MD/MI interfaces.
	4. make scheduler(s) modular.
2007-05-17 14:51:11 +00:00
jld
51e5b25976 Convert the xen port to use timecounters; ok'ed by bouyer@. 2007-05-12 07:06:54 +00:00
ad
8aefa8aa0c Share the sysarch stuff between the x86 ports. PR kern/36046. 2007-04-16 19:12:17 +00:00
ad
28c7654399 Pass an ipl argument to pool_init/POOL_INIT to be used when initializing
the pool's lock.
2007-03-13 18:30:57 +00:00
ad
59d979c5f1 Pass an ipl argument to pool_init/POOL_INIT to be used when initializing
the pool's lock.
2007-03-12 18:18:22 +00:00
yamt
dedaf26748 fix vcpu after recent cpubus changes. 2007-03-06 12:35:39 +00:00
dogcow
b347627ab1 The recent cpu_attach changes broke the xen build; while this compiles,
I'm far from positive it's the correct fix.
2007-03-05 23:26:40 +00:00
drochner
d880082522 clean up how cpus and ioapics are attached at the mainbus:
Seperate "cpubus" and "ioapicbus" -- while they share a common "address
space" (the apic id), the kernel doesn't use this fact. There are different
data passed to cpus and apics, which caused some ugly polymorphism. This
also saves the special "submatch" functions needed to distingush cpus
and ioapics for autoconf. (And it makes that "apid" locators wired
in the kernel configuration are honored now; this allows one to dumb down
an mp box to singleprocessor by userconfig.)
Print "apid" locators in the buses "print" function "as everyone does",
so the per-port cpu drivers don't need to do it.
Being here, constify "struct cpu_functions" and g/c the unused MP_PICMODE
flag.
2007-03-05 16:50:59 +00:00
dogcow
fc8b4c24ce fix more caddr_t -> void * fallout. 2007-03-05 03:22:06 +00:00
christos
53524e44ef Kill caddr_t; there will be some MI fallout, but it will be fixed shortly. 2007-03-04 05:59:00 +00:00
thorpej
ae01c745cb TRUE -> true, FALSE -> false 2007-02-22 06:47:16 +00:00
thorpej
712239e366 Replace the Mach-derived boolean_t type with the C99 bool type. A
future commit will replace use of TRUE and FALSE with true and false.
2007-02-21 22:59:35 +00:00
dsl
5c89b1866e Get config(1) to supply the default values for BEEP_ONHALT. 2007-02-18 18:15:41 +00:00
pavel
934634a18c Change the process/lwp flags seen by userland via sysctl back to the
P_*/L_* naming convention, and rename the in-kernel flags to avoid
conflict. (P_ -> PK_, L_ -> LW_ ). Add back the (now unused) LSDEAD
constant.

Restores source compatibility with pre-newlock2 tools like ps or top.

Reviewed by Andrew Doran.
2007-02-17 22:31:36 +00:00
ad
b07ec3fc38 Merge newlock2 to head. 2007-02-09 21:55:00 +00:00
hubertf
eda05c6413 Remove more duplicate headers.
Patch by Slava Semushin <slava.semushin@gmail.com>

Again, this was tested by comparing obj files from a pristine and a patched
source tree against an i386/ALL kernel, and also for src/sbin/fsck_ffs,
src/sbin/fsdb and src/usr.sbin/makefs. Only changes in assert() line numbers
were detected in 'objdump -d' output.
2007-01-29 01:52:43 +00:00
bouyer
89b7593e6a Xen3 linux guests seems to loan a lot of pages for some disk transfers,
and eventually run out of XENSHM_NPAGES for a single transfers.
Bump XENSHM_NPAGES by 10 for xen3 to avoid deadlocks in such case.
2007-01-20 22:01:06 +00:00
pavel
104e8925ea remove some leftover msgbuf manipulation from pmap.c, as done for the i386
and amd64 versions before. Inspired by PR port-i386/34186 from Wolfgang
Stukenbrock.
2007-01-06 17:48:52 +00:00
yamt
35374d3155 bring in wedge handling code from arch/x86/x86/x86_autoconf.c.
unlike i386, we can't rely on the bootloader.
2007-01-01 02:59:50 +00:00
elad
504c71d9fe Make machdep scope architecture-agnostic by removing all arch-specific
requests and centralizing them all. The result is that some of these
are not used on some architectures, but the documentation was updated
to reflect that.
2006-12-26 10:43:43 +00:00
wiz
3ed1aa9185 Spell "separate" correctly. From Zafer Aydogan. 2006-12-25 18:39:47 +00:00
yamt
98cfc473c8 - pass intrframe by-pointer, not by-value.
- make i386 and xen use per-cpu interrupt stack.

xen part is reviewed by Manuel Bouyer.
2006-12-08 15:05:18 +00:00
wiz
6919c6578c s/independant/independent/, from Zafer. 2006-11-24 22:04:21 +00:00
oster
d4240170d8 xen_shm_errintvl is only used in the DEBUG case. Fixes build for non-DEBUG. 2006-11-16 22:38:18 +00:00
yamt
730ba489f6 xen_shm: make some variables static. 2006-11-16 05:43:47 +00:00
gson
3b3814b873 const correctness 2006-10-23 18:10:44 +00:00
yamt
6a98028817 use vmem for xen_shm. 2006-10-22 09:44:55 +00:00
mrg
065b4dbdca fix errors in the previous changes. 2006-10-21 08:09:58 +00:00
mrg
648bbec934 in cpu_dumpconf(), don't panic() if we can't bdevsw_lookup() the
dumpdev.  this occurs when we try to set the dumpdev to a device
with no driver loaded.  this fixes PR#34872.

in sys_swapctl, if bdevsw_lookup() fails, set dumpdev = NODEV
before calling cpu_dumpconf().  (this also fixes PR#34872.)

XXX: cpu_dumpconf() should probably be changed to take a dumpdev
XXX: and return an error in such cases, but that is a much more
XXX: intrusive change.

XXX2: this is only run-tested on sparc64 and compile tested on a
XXX2: couple of platforms.
2006-10-21 05:54:31 +00:00
bouyer
f3366866dc Change BSD_SYMTAB to BSD_SYMTAB=yes. Xen-3.0.2 wants it, and xen-3.0.3
doesn't care.
2006-10-17 22:16:20 +00:00