summaryrefslogtreecommitdiffstats
path: root/sys/arch (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* Be more strict when specifying hpc child device attachments: specificmiod2012-05-264-20/+16
| | | | | | onboard devices need only attach to hpc0 instead of hpc?. While there, remove hpc1 and hpc2 attachment from IP28 configurations, as these can not exist on Indigo2 systems.
* On IP28, silently acknowledge bus errors which can be attributed tomiod2012-05-252-10/+39
| | | | | | | speculative execution, while in kernel mode, attempting to access bogus physical address through CKSEG[01] or XKPHYS. Surprisingly enough, an IP28 system can boot multiuser without triggering any such error; they will only show up if there is a lot of I/O (and thus, context switching).
* Correctly handle the case of a system setup to use glass console, whichmiod2012-05-251-1/+19
| | | | | | | | | | | | | frame buffer has been removed, but which keyboard is left plugged in. The PROM will select a `keyboard input, serial output' console, which was being recognized as glass console by the kernel. The kernel would then reset the serial chip at zstty attach time, while still using the PROM output routines at this point, and hang. Fix this by paying attention to split input/output setups and always falling back to serial console in this case. ok kettenis@
* Support for the POWER Indigo2 R10000 systems (IP28). Currently running withmiod2012-05-258-15/+251
| | | | | ECC checking disabled, which allows the existing Indigo2 drivers to run unmodified.
* increase the number of io and mem extent regions for amd64 to 16mikeb2012-05-232-6/+6
| | | | | | as it was done for i386 some time ago; update the comment in the i386 code to reflect reality. this helps machines with plenty of memory regions set up by the bios. ok kettenis, jsg
* Make the multicast filter routine conform to the Party's standards. Adaptedmiod2012-05-221-29/+26
| | | | from a (non-compiling) diff from Brad.
* When setting up the multicast filter, use the ac_multicnt field of the arpcommiod2012-05-222-7/+7
| | | | | struct to know if there are multicast entries, instead of counting the number of entries in the list. No functional change. From brad.
* do not need to pull in <time.h>deraadt2012-05-201-2/+1
|
* Make sure the generic bus_dmamem_alloc() routine restricts its allocation tomiod2012-05-202-185/+11
| | | | | | the dma_constraint range. This allows the xbridge(4) bus_dma_tag_t to use the generic routines instead of rolling its own, now that the ATE code has been removed.
* Port NetBSD's pci@gio driver for fast Ethernet expansion boards for themiod2012-05-183-2/+512
| | | | | | IP22 family. This is just the bridge so far, as the underlying pci drivers will need some changes to work (dc(4) does not work correctly yet, and tl(4) needs to be bus_dma'ified).
* Yet another rework of the crucial gio_id() function responsible for correctlymiod2012-05-172-65/+33
| | | | | | | | | | | | | | | | | recognizing a GIO device or an id-less frame buffer in a GIO slot. Turns out that GIO32 devices (at least those with a 32-bit ID register, but likely all of them) do NOT like accesses to the minimal GIO register area NOT done on 32-bit boundaries. While frame buffers won't mind, especially if their slots are pipelined. This makes it a lot easier to tell them apart. While there, split gio_intr_establish() into gio_intr_map(), which will return a logical interrupt number out of a GIO slot number, and gio_intr_establish(), which will now expect a logical interrupt number, instead of a logical slot number. These two functions are still unused, but upcoming changes depend on this work. (Yes, I'm too lazy to make two commits for this tonite)
* Better probes for sq and wdsc in gio-masqueraded-as-hpc expansion boards.miod2012-05-171-11/+54
| | | | | Previous change was a tad too optimistic. This repairs E++ and GIO SCSI board operation.
* Correct virtual aliasing mask computation.miod2012-05-171-2/+3
| | | | | | | Note that this would only affect 4KB page size IP22 kernels, which is not the default IP22 configuration, and which noone not out of his or her mind would do. In other words: this is a correctness fix with no impact on Real Life (c)(R)TM
* revert a chunk introduced in 1.7 which was not supposed to be there yetmiod2012-05-151-2/+3
|
* Don't forget to print the frame buffer name obtained from ARCS, as all othermiod2012-05-121-2/+6
| | | | GIO frame buffer drivers do.
* Strip trailing space from ARCS frame buffer names.miod2012-05-121-3/+7
|
* It turns out that, when the IRIX header files mention CTR/DCD/DTR/RTS wiringmiod2012-05-122-21/+22
| | | | | | | | | | | | | | | is inverted on Indigo, this just means that Indigo does not use the same values as the later models. It does not mean that the Indigo is using wrong values, which is how I first read this. In reality, Indigo systems use the expected values of these signals being active low, while later designs use active high signals. So yes, some systems have inverted values - but the ones which need compensating are not those I thought. Change the logic to do TRT, but keep the device flags check, to be able to force the other behaviour if the kernel guesses wrongly. Tested on Indigo, Indy and Indigo 2.
* GIO devices with a 32-bit device identifier actually do not like halfword andmiod2012-05-102-24/+48
| | | | | | | | | | | | | | byte accesses to the ID register; instead of interpreting this is as a lack of hardware, reconize this as a valid GIO device (if the `has a 32-bit ID' bit is set, that is). This allows GIO Impact boards, which use a 32-bit ID, to be recognized correctly, and to work as a console device. Commited from an Indigo2 with glass console on the single-board Impact (MG10) board which arrived in the mail today. Would have been done even earlier, had I not forgotten to connect the extra power supply cable to the Impact GIO backplane...
* regenmiod2012-05-102-8/+9
|
* Do not keep the `32-bit device ID' bit indicator in the device IDs, formiod2012-05-101-6/+9
| | | | consistency. Will be necessary shortly.
* Fix a few macros to operate on the right bit.miod2012-05-101-3/+3
|
* Fix impact(4) header file generation to correctly output NIMPACT_GIO onmiod2012-05-103-8/+8
| | | | IP22 kernels. Oops.
* Be more strict in the `are we the console device' logic at device attachmentmiod2012-05-104-8/+25
| | | | | time; not only do we need to match the graphics console address, but cn_tab needs to point to wsdisplay, too.
* Initialize more proc0 context before invoking consinit(); this now reallymiod2012-05-101-4/+9
| | | | allows probes to fault and correctly recover.
* The uvm_map() changes introduced about two months ago yield a differentmiod2012-05-102-61/+112
| | | | | | | | | | | | | | | | | | | | | | | | | | memory allocation pattern, exposing aliasing bugs in the mips64 pmap, on kernels where virtual aliasing may happen (that is, IP32 kernels on R5000, R10000 and R12000 O2). Fix these (or at least, sweep them better under the rug) by: - always flush caches in pmap_copy_page() and pmap_zero_page(), if the destination page is mapped uncached. - when removing a mapping of a managed page which has been forced uncached due to virtual aliasing conflict, map it back cached as soon as the remaining mappings are non conflicting. - writeback, instead of simply invalidating, pool pages and page table pages, upon release, for there might be stale data in the cache. While these, apply more paranoia and only perform cache operations on pages which have been mapped with the cache enabled. Initially reported by mikeb@ on an R12k O2 (that will teach me to use an RM7000-powered O2, without virtual aliasing, to test IP32 kernels). Verified on an R5k O2, as well as a custom IP30 kernel with page size forced to 4KB (to introduce virtual aliasing). This diff tested on O2 (R5k, RM7k, R12k), IP30, IP35, as well as on Loongson (no aliasing) by mikeb@ and I.
* Do not include <machine/reg.h> and pollute userland namespace with struct regmiod2012-05-092-5/+5
| | | | in <machine/signal.h>.
* merge sigdebug.h into machdep.c, to where all other architectures haveokan2012-05-092-50/+6
| | | | | | these (DEBUG) defines. ok miod@
* Update the depencies of the .S files on assym.h; allows IP30 kernels to be builtmiod2012-05-061-3/+3
| | | | with -j2.
* Garbage collect the old int$80 kernel entry point: the last use ofguenther2012-05-062-31/+3
| | | | | | | it by the not-normally-used sigreturn() stub in libc was changed to use 'syscall' instruction in 5.0 ok mikeb@ jsg@
* sq needs ifmedia attribute now, repairs RAMDISK_IP22miod2012-05-021-2/+2
|
* Add ifmedia support to sq(4).miod2012-04-303-17/+234
|
* Pass the base address of the hpc to child devices, to let them be able tomiod2012-04-302-12/+14
| | | | | figure out whether they attach to the onboard hpc or to an expansion slot (or the Challenge S IO+ mezzanine). No functional change (yet)
* Correctly read board version information.miod2012-04-302-9/+10
|
* Recognize 85230 chips, and take advantage of their FIFOs to reduce themiod2012-04-295-49/+107
| | | | amount of TX empty interrupts.
* I am not sure what the mess with the wiring of carrier lines on Indigo resolvesmiod2012-04-292-5/+12
| | | | | to, so make this controllable with device flags, and default to non-bogus wiring.
* Be sure to initialize the `state' member of the softc when attaching themiod2012-04-281-9/+5
| | | | | console keyboard, otherwise led update commands will never get transmitted. Noticed by sebastia@
* Only trust giofb_consid if non-zero.miod2012-04-281-2/+2
|
* Rework the definition of label_t to get it correctly aligned to an 8 bytemiod2012-04-281-2/+3
| | | | boundary; this makes ddb usable again.
* Fix the `all keys up' event handling logic to only apply to it, and not tomiod2012-04-271-2/+2
| | | | | regular `one key is up' events. Makes the shift, alt, ctrl, etc keys behave as expected after the next keystroke.
* The new probe logic would pretend light(4) devices always exist on Indigo;miod2012-04-271-3/+9
| | | | | | fix this by reinstating the actual probe which got removed by mistake in the recent gio probe and console code rework. Found the hard way by sebastia@
* Remove reg.h inclusion.pirofti2012-04-271-2/+1
| | | | | | Missed by miod@ in his previous commit. Now groff should build. Okay miod@.
* va is of type vaddr_t; allow sparc64 to build with DEBUGokan2012-04-261-3/+3
| | | | ok miod@
* Skip cache flushes in pmap_zero_page() and pmap_copy_page() on systemsmiod2012-04-251-8/+10
| | | | | | | without virtual aliasing, or for pages which are not currently mapped cached. 1+% speed increase on sgi IP27 and loongson kernels. Tested on LS2F, R4400, R5000, R12000 and R16000.
* Minor tweaks:miod2012-04-241-36/+35
| | | | | | | | | | | | - correctly gather version information. When reading device registers is a two step process (write address, read data), it is a very bad idea to call a wrapper around these two operations (to read register B) between the two operations inline (to read register A). Unless you want to know the version information for your garbage latches, that is. Now Indy 8-bit devices no longer get reported as 24-bit devices, and Indy 24-bit devices no longer get reported as 8-bit devices. (not that it mattered much anyway) - define and use symbolic constants when parsing the video mode settings to figure out the display resolution. This code still itches, but much less now.
* Pour even more smarts into the GIO device identification code, to the pointmiod2012-04-246-168/+149
| | | | | | | | that it can now tell ID-less framebuffers apart correctly. Therefore, we can use direct configuration instead of ugly games. Frame buffer drivers match routines now only need to check for the fake ID they receive. Tested on various newport and grtwo setups (including multihead configurations)
* Harvest some low-hanging fruit in thu R5k/RM7k cache routines:miod2012-04-241-89/+48
| | | | | | | | | | | | - replace masking with large `power of two minus one' constants with a pair of shifts, this is shorter code and does not require the at register. - merge R5000 and RM52xx setup, as the configuration register layout is the same on both processors. - In Mips5k_IOSyncDCache(), delay building the call frame until we know we will not perform a leaf call. Replace leaf calls with jumps to the appropriate routines. Tested on R5000, RM5271 and RM7000.
* Add support for wired mappings, using the last unused bit in the PTE.miod2012-04-242-33/+77
|
* Introduce a #define for the number of PFN bits in a pte, to be used in themiod2012-04-243-29/+31
| | | | | | | .S code when masking the upper bits, instead of hardcoding them. Makes code easier to understand (and also I might have a need to reduce PFN width on some particular CPU models in the future). No change in generated code.
* When handling SIGFPE, do the `advance pc if exception is a fault (as opposedmiod2012-04-231-8/+8
| | | | | | to a trap)' dance before invoking trapsignal(), which will mess with the pc too. My bug initially, can't believe I never noticed; fixed first in NetBSD. This makes libsqlite3 build.
* Test vendor against cpu_vendor instead of calling CPUID, this matcheshaesbaert2012-04-221-7/+2
| | | | | | the other uses. ok mikeb@