Commit Graph

98 Commits

Author SHA1 Message Date
thorpej 7b918b4088 New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
  resource allocation.
- Insertion and removal of callouts is constant time, important as
  this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
2000-03-23 06:40:33 +00:00
pk 3eb54fdef9 We need cons_attach_input(). 2000-03-21 10:56:23 +00:00
pk 436638ab3a Call rcons_ttyinit() on first open. 2000-03-20 11:27:16 +00:00
pk 2ca556b136 Nuke dead code. 2000-03-19 14:41:48 +00:00
pk f5839cdae8 Minimal changes to accomodate the console input channel attachment
changes in the keyboard driver (see /sys/dev/sun/kbd*)
2000-03-19 13:29:14 +00:00
eeh 3b51289caa Revamp interrupts again:
Fix a bug causing interrmittent panics in interrupt dispatch.
	Use interrupt vectors for softints.
	Add a new send_softint interface.
	Improved D$ flushing.
	Improve traptrace and other debugging enhancements.
2000-03-16 02:36:56 +00:00
soren 95054da1a1 Fix doubled 'the's in comments. 2000-03-13 23:52:25 +00:00
thorpej a183d34f04 - Implement cnbell() -- ring the console bell. The cn_bell entrypoint
is optional.
- Add cn_bell to statically allocated consdevs as appropriate.
2000-03-06 21:36:05 +00:00
thorpej fe551f0e64 Fix a bug in disksort_*() which caused non-optimal ordering when multiple
active partitions were on a single spindle.  Add a b_rawblkno member to
struct buf which contains the non-partition-relative block number to sort
by.
2000-02-07 20:16:47 +00:00
thorpej 52242fdf9f Update for sys/buf.h/disksort_*() changes. 2000-01-21 23:28:59 +00:00
pk cd1f76b21b Remove old-style boot device recognition. 2000-01-14 14:27:14 +00:00
mrg ca66e6b619 - pass slot number to sbus_get_intr() as a new argument.
- in sbus_get_intr(), if we are not an onboard device (ie, sbus card),
  encode the slot number into the sbi_pri so that we can later extract
  it and use it to find the interrupt map & clear registers for this
  device.
- remove "intr" support as it is really pre-sun4u only.
- don't "pause" for so long in sbus interrupt debug messages..

with the slot number being passed back from sbus_get_intr(), the FS/BE
card in an ultra2 now appears to get interrupts and gets beyond
waiting for the scsibus probe!
1999-11-25 05:03:53 +00:00
mrg abc579187f prefix a variable with "pci_" 1999-11-24 01:53:38 +00:00
pk a4e956ce77 Also pull in <pci/pciidereg.h>. 1999-11-21 11:17:35 +00:00
thorpej 1946167939 Update for pmap_enter() API change. No functional difference. 1999-11-13 00:30:26 +00:00
eeh 793cc7a41b Update to post 1.4. 1999-10-11 01:57:43 +00:00
thorpej 58858e0968 Suns use black-on-white as the default rcons colors. 1999-08-26 20:50:08 +00:00
thorpej eb20bbc780 Change the semantics of splsoftclock() to be like other spl*() functions,
that is priority is rasied.  Add a new spllowersoftclock() to provide the
atomic drop-to-softclock semantics that the old splsoftclock() provided,
and update calls accordingly.

This fixes a problem with using the "rnd" pseudo-device from within
interrupt context to extract random data (e.g. from within the softnet
interrupt) where doing so would incorrectly unblock interrupts (causing
all sorts of lossage).

XXX 4 platforms do not have priority-raising capability: newsmips, sparc,
XXX sparc64, and VAX.  This platforms still have this bug until their
XXX spl*() functions are fixed.
1999-08-05 18:08:08 +00:00
thorpej 3ebbe095e0 Change the pmap_extract() interface to:
boolean_t pmap_extract(pmap_t, vaddr_t, paddr_t *);
This makes it possible for the pmap to map physical address 0.
1999-07-08 18:05:21 +00:00
eeh 9cf2782159 Move the DVMA mapin/mapout functions from the SBus driver to the iommu driver. 1999-06-20 00:51:29 +00:00
mrg 0525e9c7ef add ebus attachment for cs4231. this does not work as it requires ebus DMA and will panic if enabled. but it should otherwise be mostly complete. 1999-06-07 14:59:14 +00:00
mrg aa506f8098 copyright foo. in the future, we will all be binary-redistributable. 1999-06-07 05:40:08 +00:00
eeh 1884f05354 Another general cleanup:
Remove the entire idea of fasttrap interrupts since V9 traps are really cheap,
the CPUs are really fast, and the completely different trap frames would make
these handlers really difficult to implement.

pmap_changeprot() was only used by the clock and one other place; deprecate it.

probeget() and probeset() now take 64-bit addresses even in 32-bit mode so we
can probe IO locations by physical addresses.

Some pmap cleanup.

Some more copyright cleanup.
1999-06-07 05:28:03 +00:00
eeh 186c3eba2b Make pbrobeget() and probeset() work for 64-bit values as well. To do this
the arguments are changed so the address is first and the ASI second so we
can have the address in %o0:%o1 and not worry about unused registers.

Also a bit of copyright cleanup.
1999-06-05 21:58:16 +00:00
mrg 756c2cde22 map in registers, configure interrupts, this appears to be OK now. 1999-06-05 14:19:44 +00:00
mrg e8ccf39491 find ebus device INO values via the "interrupt-map" and "interrupt-map-mask" properties. 1999-06-05 14:18:26 +00:00
mrg cc49a21298 use common IOMMU routines. 1999-06-05 05:30:43 +00:00
mrg da265ce045 clean up a bit, implement pci_conf_{read,write}() with probe[gs]et() (not yet used). 1999-06-05 05:29:50 +00:00
mrg bb0d20abc4 lpt at ebus. 1999-06-05 05:28:36 +00:00
mrg 2ee43849be catch up with probe[gs]et() changes. 1999-06-05 05:05:11 +00:00
mrg 8613b8e39d avoid uninitalised pointers. 1999-06-04 14:29:38 +00:00
mrg a1c100d377 clone this from the macppc port. 1999-06-04 13:51:57 +00:00
mrg 10b89455c7 pull iommu code out of sbus code so we can share it with the PCI.
define some useful PCI macros.
1999-06-04 13:48:48 +00:00
mrg 03adf4aad1 PCI driver for the UltraSPARC. this only works on the Ultra5/10 machines
(`SUNW,sabre') for now, and it doesn't really quite work there yet anyway.
the bus space/dma code is cloned from the sbus driver.  the IOMMU code also
is cloned from the sbus code, but separated out into iommu.c so that we can
share it with the sbus driver.  hopefully, much of the bus space/dma code
can also be re-shared with the sbus driver and the ebus driver but for now
these copies will do.

support for the real UltraSPARC PCI (`SUNW,psycho') is unwritten, though
most of this code is shared with it.

we can probe PCI config space and try to configue devices, but interrupts
don't work yet...
1999-06-04 13:42:14 +00:00
mrg 36237341af support for the UltraSPARC `Extension Bus' found on the PCI machines.
the bus space/dma code is cloned from the PCI code to do the same thing
which itself was cloned from the sbus bus space/dma code.  the bus dma
code is non-functional at this point.
1999-06-04 13:29:13 +00:00
eeh b14c7f77cb Garbage collect. 1999-05-31 00:14:00 +00:00
eeh 64b891fc8d Add code to support using %tick as the system clock if no "counter-timer" node
is found.
1999-05-30 19:13:33 +00:00
thorpej 5832084eaf bus_dmamem_map() maps DMA safe memory, which is usually one or more
managed pages, into KVA space.  Since the pages are managed, we should
use pmap_enter(), not pmap_kenter_pa().

Also, when entering the mappings, enter with an access_type of
VM_PROT_READ | VM_PROT_WRITE.  We do this for a couple of reasons:

	(1) On systems that have H/W mod/ref attributes, the hardware
	    may not be able to track mod/ref done by a bus master.

	(2) On systems that have to do mod/ref emulation, this prevents
	    a mod/ref page fault from potentially happening while in an
	    interrupt context, which can be problematic.

This latter change is fairly important if we ever want to be able to
transfer DMA-safe memory pages to anonymous memory objects; we will need
to know that the pages are modified, or else data could be lost!

Note that while the pages are unowned (i.e. "just DMA-safe memory pages"),
they won't consume any swap resources, as the mappings are wired, and
the pages aren't on the active or inactive queues.
1999-05-25 23:14:03 +00:00
mrg 1bd01d4677 pull struct strbuf + defines into iommureg.h. properly merge previous commit. 1999-05-24 00:25:31 +00:00
ad 080560c8c6 - Setting initial position of cursor is up to caller.
- Set cursor position properly for SPARC. From Juergen Hannken-Illjes.
1999-05-23 17:59:39 +00:00
mrg ae1a84a61f place iommu definitions in iommureg.h 1999-05-23 07:24:02 +00:00
eeh 193cc31772 Separate out the generic console handling from zs.c 1999-05-23 02:46:35 +00:00
eeh 92ad9c4080 Start putting in hooks for non-zs console devices. 1999-05-23 02:45:19 +00:00
eeh f1066c97ad If the zs has not yet attached use the PROM for console input. 1999-05-22 20:34:56 +00:00
eeh 60b89ebf96 Well, looks like the MI allocsys() broke the dvmamap, so instead of using a
single map move it to the bus controller driver so each bus can handle its own
IOMMU without conflicts.
1999-05-22 20:33:55 +00:00
ad a4f0570f7d SPARC console is black on white, and is centered by default. 1999-05-19 21:05:59 +00:00
ad 02bc362e3e Add arg to rcons_init() that when set causes screen to be cleared. 1999-05-19 20:34:19 +00:00
ad 218af6a342 Insert missing code that defines screen metrics for rcons. This fixes the
more blatant rcons brokenness (ie no panics).
1999-05-19 19:59:04 +00:00
ad 3d5a1b1eea Sync with last two changes made to sys/arch/sparc/dev/fb.c (don't clear
screen, typo).
1999-05-18 21:38:07 +00:00
ad 20be6a2a2a Fix typo on my behalf. From Juergen Hannken-Illjes. 1999-05-16 21:19:33 +00:00