summaryrefslogtreecommitdiffstats
path: root/sys
Commit message (Collapse)AuthorAgeFilesLines
* I'm pleased to announce that Promise is now supporting the FreeBSDsos2003-05-012-9/+161
| | | | | | | | | | | | | | project by providing documentation (under NDA) and hardware for testing. This commit is the first result of the cooperation, and adds support for several of their new controllers that we didn't support before (and probably newer would have without this arrangement). Add support for the Promise SATA150 TX2/TX4 and the Promise TX4000 controllers. This also adds support for various motherboard fitted Promise SATA/ATA chips. Note that this code uses memory mapped registers to minimize overhead. I belive FreeBSD has made another first in the Open Source world by being able to release support for this :)
* Relax the test for when to use LBA instead of CHS size.sos2003-05-011-2/+2
|
* Fix compile errors on ia64 in dagetcapacity. Set block_len and maxsectorken2003-05-011-0/+2
| | | | | | to 0 initially. It seems that the ia64 backend isn't as "smart" as the i386 backend, which realized that those variables were only set or used when error == 0, and thus were not used uninitialized.
* Extend the scope of the vm_object locking in vm_object_split().alc2003-05-011-4/+4
|
* Commit a missed change to keep in sync with the MI elf loader.peter2003-05-011-4/+4
|
* Argh. This was broken by the last-minute elf32/elf64/"elf kernel" changes.peter2003-05-012-3/+3
|
* Only use the pc bios stuff on i386's. I think this might even be unusedpeter2003-05-011-0/+2
| | | | there too.
* Add AMD64 support to dev/fb. It isn't optimized.peter2003-05-012-7/+22
|
* Update the hardcoded bus tags for early console support for amd64.peter2003-05-012-2/+2
|
* I changed the numbering of the MODINFOMD_SMAP during the commit, sopeter2003-05-011-2/+4
| | | | | recognize the old number for my development boxes so I can use old loader/pxeboot for a while if I need to.
* Nuke; repocopied to elf32_freebsd.c where it lives on.peter2003-05-011-88/+0
|
* Enable the i386 loader to load and run an amd64 kernel. If this putspeter2003-05-0123-757/+583
| | | | | | | | | | | | | | | things over floppy size limits, I can exclude it for release builds or something like that. Most of the changes are to get the load_elf.c file into a seperate elf32_ or elf64_ namespace so that you can have two ELF loaders present at once. Note that for 64 bit kernels, it actually starts up the kernel already in 64 bit mode with paging enabled. This is really easy because we have a known minimum feature set. Of note is that for amd64, we have to pass in the bios int 15 0xe821 memory map because once in long mode, you absolutely cannot make VM86 calls. amd64 does not use 'struct bootinfo' at all. It is a pure loader metadata startup, just like sparc64 and powerpc. Much of the infrastructure to support this was adapted from sparc64.
* Lock an update to a vm_object's ref_count.alc2003-05-011-0/+2
|
* Hack to enable getting two different elf32 and elf64 loaders in thepeter2003-05-011-0/+13
| | | | same i386 loader binary.
* <b30> is 'IA64' - ie: you're running on an ia64 in 32 bit mode.peter2003-05-011-1/+1
|
* Fix printf warning caused by recent CAM change.simokawa2003-05-011-2/+2
|
* Back out last commits. The elf64/elf32 kernel name thing was more painpeter2003-05-013-9/+3
| | | | than it was worth.
* Slight reorg and added AMD64 support. A couple of the MODINFOMD_* valuespeter2003-05-015-12/+82
| | | | | | | | | that were added to sparc64 and later powerpc, really should have been in the MI area. But changing that now with insufficient preperation will just cause too much pain. Move MD_FETCH() to the MI sys/linker.h file to avoid another two copies of it.
* - Update the vm_object locking in vm_object_reference().alc2003-05-011-10/+8
| | | | - Convert some dead code in vm_object_reference() into a comment.
* Lock accesses to the vm_object's ref_count and resident_page_count.alc2003-05-011-5/+9
|
* Sync up with the files in the hammer branch in the p4 tree to get basicpeter2003-05-014-114/+219
| | | | AMD64 support. There is still more to add.
* Don't emulate a MBR by handling the MBR::type attribute. It ismarcel2003-05-011-21/+1
| | | | | not needed at all. The BSD class will attach to a GPT class without it.
* Rewrite minor number decoding. Now we have only three types ofgrog2003-05-011-111/+52
| | | | | | | object: subdisks, plexes and volumes. The encoding for plexes and subdisks no longer reflects the object to which they belong. The super devices are high-order volume numbers. This gives vastly more potential volumes (4 million instead of 256).
* For consistency's sake, on command failure, throw 1, not -1.grog2003-05-011-39/+36
| | | | | | | | Rewrite minor number decoding. Now we have only three types of object: subdisks, plexes and volumes. The encoding for plexes and subdisks no longer reflects the object to which they belong. The super devices are high-order volume numbers. This gives vastly more potential volumes (4 million instead of 256).
* Rewrite minor number decoding. Now we have only three types ofgrog2003-05-011-5/+5
| | | | | | | | | | object: subdisks, plexes and volumes. The encoding for plexes and subdisks no longer reflects the object to which they belong. The super devices are high-order volume numbers. This gives vastly more potential volumes (4 million instead of 256). Correct formats for some error messages. Don't cast the value to match the format.
* Rewrite minor number decoding. Now we have only three types ofgrog2003-05-011-31/+37
| | | | | | | | | | | | | | | | | object: subdisks, plexes and volumes. The encoding for plexes and subdisks no longer reflects the object to which they belong. The super devices are high-order volume numbers. This gives vastly more potential volumes (4 million instead of 256). Tidy up comments. Check for null rqgs. This continue to be reported, though I can't work out why. Correct formats for some error messages. Don't cast the value to match the format. Use microtime, not getmicrotime, for timing debug entries.
* Terminate a comment.grog2003-05-011-2/+2
|
* Don't make definition of kw_debug dependent on VINUMDEBUG. Ingrog2003-05-011-3/+1
| | | | | userland, define the keyword even if the kernel module doesn't have debug code.
* Use strrchr, not rindex. This is for compatibility with othergrog2003-05-011-8/+8
| | | | systems, and requires a #define.
* #ifdef VINUMDEBUG, not #if VINUMDEBUG.grog2003-05-011-2/+2
|
* Don't make definition of kw_debug dependent on VINUMDEBUG. It's onlygrog2003-05-011-3/+1
| | | | | an enum value, and dropping it can lead to some spectacular surprises in userland.
* Rewrite minor number decoding. Now we have only three types ofgrog2003-05-011-325/+329
| | | | | | | | | | | | | object: subdisks, plexes and volumes. The encoding for plexes and subdisks no longer reflects the object to which they belong. The super devices are high-order volume numbers. This gives vastly more potential volumes (4 million instead of 256). As a result of the minor number changes, split out the superdevice handling into a separate function, vinum_super_ioctl. This was most of the code of vinumioctl. attachobject: Improve error checking.
* Use microtime, not getmicrotime, for timing debug entries.grog2003-05-011-63/+49
| | | | | | | | | | init_drive: Rephrase error message text. Remove dead code (inside #if 0). Change name of find_drive_by_dev to the more descriptive find_drive_by_name. Tidy up comments.
* Remove "to do" comments.grog2003-05-012-44/+46
| | | | | | | | | | | | | get_emppty_drive: Fix a day one bug with strcpy parameters. Change name of find_drive_by_dev to the more descriptive find_drive_by_name. Rewrite minor number decoding. Now we have only three types of object: subdisks, plexes and volumes. The encoding for plexes and subdisks no longer reflects the object to which they belong. The super devices are high-order volume numbers. This gives vastly more potential volumes (4 million instead of 256).
* Rewrite minor number decoding. Now we have only three types ofgrog2003-05-011-130/+110
| | | | | | | | | | | | object: subdisks, plexes and volumes. The encoding for plexes and subdisks no longer reflects the object to which they belong. The super devices are high-order volume numbers. This gives vastly more potential volumes (4 million instead of 256). Remove an unnecessary goto. vinumopen: Return EINVAL, not ENXIO, on an attempt to open a referenced plex.
* Commit MD parts of a loosely functional AMD64 port. This is based onpeter2003-05-0192-15867/+3160
| | | | | | | | | | | | | | | | | | | | | | a heavily stripped down FreeBSD/i386 (brutally stripped down actually) to attempt to get a stable base to start from. There is a lot missing still. Worth noting: - The kernel runs at 1GB in order to cheat with the pmap code. pmap uses a variation of the PAE code in order to avoid having to worry about 4 levels of page tables yet. - It boots in 64 bit "long mode" with a tiny trampoline embedded in the i386 loader. This simplifies locore.s greatly. - There are still quite a few fragments of i386-specific code that have not been translated yet, and some that I cheated and wrote dumb C versions of (bcopy etc). - It has both int 0x80 for syscalls (but using registers for argument passing, as is native on the amd64 ABI), and the 'syscall' instruction for syscalls. int 0x80 preserves all registers, 'syscall' does not. - I have tried to minimize looking at the NetBSD code, except in a couple of places (eg: to find which register they use to replace the trashed %rcx register in the syscall instruction). As a result, there is not a lot of similarity. I did look at NetBSD a few times while debugging to get some ideas about what I might have done wrong in my first attempt.
* KPT_MIN_ADDRESS and KPT_MAX_ADDRESS are not used anywhere. And if theypeter2003-05-011-3/+0
| | | | | | were, they are not safe to use outside of the kernel since these values can change at kernel compile time - ie: we do not want them compiled into userland binaries.
* Kill MID_MACHINE, its a.out specific, the only platform that supportsmarcel2003-04-301-1/+0
| | | | | it is i386. All of the other platforms should remove it too. -- peter@
* Repocopy from x86_64/... to amd64/...peter2003-04-301-8/+7
| | | | | | Rename visible x86_64 references to amd64. Kill MID_MACHINE, its a.out specific, the only platform that supports it is i386. All of the other platforms should remove it too.
* Add AMD64 hookspeter2003-04-301-0/+9
|
* Add support for IC Book Ironclad Pro/Lite 8-port cards.sobomax2003-04-302-2/+36
| | | | | Sponsired by: IC Book Labs MFC After: 2 weeks
* We use i386 boot code on AMD64.peter2003-04-301-0/+5
|
* Fix transcription error. Use == NULL, not != NULL. Fortunately thispeter2003-04-303-3/+3
| | | | was harmless.
* Use the 64 bit sized struct kinfo_proc for AMD64.peter2003-04-301-1/+2
|
* Look for an elf32 kernel (powerpc) and elf64 kernel (sparc64) as wellpeter2003-04-303-3/+9
| | | | as a plain "elf kernel".
* ACPI will always be present on AMD64 - it will never be an autodetectpeter2003-04-301-0/+3
| | | | module.
* Also look for an "elf64 kernel" (for sparc64) and "elf32 kernel" (forpeter2003-04-303-3/+9
| | | | powerpc) when building metadata.
* AMD64 uses the new-style cpu_switch()/cpu_throw() calling conventions.peter2003-04-305-6/+6
|
* Create a 'legacy' node for AMD64 as well as i386. While we'll neverpeter2003-04-301-1/+1
| | | | | | have to use it since all AMD64 machines are supposed to have acpi etc, I'm using it during development so I can avoid the acpi code for now. Yes, this is cheating.
* Eliminate a compiler warning with gcc3.3 on AMD64, where speed ispeter2003-04-301-1/+5
| | | | | a 32 bit int which can never be > ULONG_MAX / 8. Its an 'always true' warning.
OpenPOWER on IntegriCloud