Commit graph

137 commits

Author SHA1 Message Date
Ben Gras
5920582bde Don't check DMA_ST_ERROR before DMA_ST_INT is set (which is done too) 2009-10-22 14:31:29 +00:00
Ben Gras
96b608c3f2 throw out unnecessary drive1 thing 2009-10-19 15:45:43 +00:00
Ben Gras
6b01026668 newer at_wini.c (really incl atapi dma this time) 2009-10-19 15:45:14 +00:00
Ben Gras
0333f21d8e - reverse order of transfer command and DMA initiation - fixes DMA problem
that some hardware had
 - clear DMA_ST_INT after DMA - fixes infinite number of interrupts 
   that some hardware had
 - initial ATAPI DMA implementation, doesn't actually increase performance
   on my test hardware so possibly not right yet, disabled by default
2009-10-19 14:23:04 +00:00
Tomas Hruby
4dad30937b Removed macros that depend on NOTIFY_FROM from servers and drivers. They
determine the information defined by these macros from the m_source field of the
notify message.
2009-09-29 18:47:56 +00:00
Ben Gras
89bf7bae27 - tty: only report unrecognized scancodes once; forget about
remembering the origin and cursor position as that feature didn't
   really work properly anyway
 - tty: map in video and font memory using a vm call, access it from C,
   thereby eliminating pesky weird segment calls and assembly to access it,
   and unbreaks loadfont (Roman Ignatov)
 - bios_wini: fix bios_wini by allocating a <1MB buffers for it
 - memory: preallocate ramdisk, makes it a bit faster (and doesn't
   fail halfway if you allocate a huge one)
 - floppy: use <1MB buffer
 - ramdisk proto: because of the 2x1 page reservations, binaries
   got a little fatter and didn't fit on the ramdisk any more.
   increase it.
2009-09-21 14:25:54 +00:00
David van Moolenbroek
dcfaf50f79 wrong field index in at_wini env_parse call 2009-05-10 16:58:23 +00:00
David van Moolenbroek
e9e347f5b6 Fix for large transfer operations not advancing buffer address
offset when DMA transfer unit is smaller than given buffer size.
Bug tracker item #82.
2009-05-08 12:29:57 +00:00
Ben Gras
e5209d51f1 bad dma fallback to pio mode 2009-04-27 11:53:11 +00:00
Ben Gras
379be7f0fb A serial ata pci card we have. 2009-02-16 13:20:10 +00:00
Ben Gras
d0a2e6b2f4 use library panic, doesn't need its own any more. 2009-01-29 14:41:44 +00:00
Ben Gras
1d8aed840c . no more HZ, but use sys_hz() to get that value
. memory maps in physical memory (for /dev/mem) with new vm interface
 . pci complete_bars() seems to be buggy behaviour sometimes
 . startup script opens its own stdout, stderr and stdin so init doesn't
   have to do it
2008-12-11 14:42:23 +00:00
Ben Gras
c078ec0331 Basic VM and other minor improvements.
Not complete, probably not fully debugged or optimized.
2008-11-19 12:26:10 +00:00
Ben Gras
ad93329236 Assume bios parameters are wrong/missing if any of the parameters are 0. 2007-05-30 16:13:52 +00:00
Ben Gras
18e7b315a1 remove debug message 2007-04-05 13:58:35 +00:00
Ben Gras
8c9e1cf4c5 Uninitialized vector entry? 2007-02-23 20:58:10 +00:00
Ben Gras
bf08c90e74 Slew of debugging / sanity check features. 2007-02-23 18:21:19 +00:00
Ben Gras
3bb73b431b add/re-enable at_wini debug output 2007-02-21 17:49:35 +00:00
Ben Gras
f7992c94ec at_wini also needs a pci_reserve() for the pci compatability device, if
present, for dma.
2007-02-20 18:42:43 +00:00
Ben Gras
168d766f32 . pci driver now returns devices, even when they have been pci_reserve()d
. pci_reserve() returns an error on devices that have already been reserved,
  instead of panic()ing; the pci_reserve() library call still panics,
  pci_reserve_ok() returns an int.
. this allows at_wini to use the instance value as intended, as all devices
  are seen, even reserved ones
. only devices actually used by at_wini are pci_reserve()d
. pci doesn't release devices based on argv[0], as at_wini both have the
  same name and multiple instances won't work together properly
2007-02-20 17:09:19 +00:00
Ben Gras
49d2195722 made default wakeup time correct 2007-02-16 15:56:00 +00:00
Ben Gras
1ff8616378 set 'w_testing' during w_identify(). this means 0-tolerance to
timeouts, and an ATA_IDENTIFY timeout will cause the ATAPI_IDENTIFY
to be skipped, making the cd probe a lot faster.
2007-02-12 13:35:33 +00:00
Ben Gras
c6f8154df0 use shorter ata timeout for identify commands when running from cd
to shorten probe time.
2007-02-09 15:58:33 +00:00
Ben Gras
624f17ee04 Extend cdprobe probe list to c1, and reorder minors to do most-likely
first.

Make at_wini include instance number in error messages.
2007-02-08 15:56:58 +00:00
Ben Gras
ebde52a9bc supply instance to 2nd at_wini instance.
requires a little cooperation from at_wini.
2007-02-08 14:23:03 +00:00
Ben Gras
8ea438ae93 Retired DEV_{READ,WRITE,GATHER,SCATTER,IOCTL} (safe versions *_S are to
be used and drivers should never receieve these 'unsafe' variants
any more).
2007-02-07 16:22:19 +00:00
Ben Gras
b01aff70d2 use servers/inet/mq.[ch] to queue messages using mq_queue() in
libdriver.  at_wini now queues messages it can't handle it receives when
waiting for an interrupt. this way it can do receive(ANY) and timeouts
should be working again (were broken for VFS, as with the advent of VFS,
at_wini could get requests from a filesystem while it was waiting for an
interrupt - as a hack, the receive() was changed to receive(HARDWARE)).

Added mq.c to libdriver, and made libdriver an actual library that
drivers link with -L../libdriver -ldriver. (So adding files, if
necessary, is easier next time.)
2007-01-12 13:33:12 +00:00
Philip Homburg
bafc45a309 First cut at 64-bit file offsets in block devices for mkfs/fsck. 2006-11-27 14:21:43 +00:00
Philip Homburg
954ad990e5 at_wini now calls pci_reserve. 2006-11-01 14:55:00 +00:00
Ben Gras
fa0ba56bc9 Merge of VFS by Balasz Gerofi with Minix trunk. 2006-10-25 13:40:36 +00:00
Philip Homburg
3e35db1514 Also clear word 6 in the ATAPI SCSI_READ10 command packet (in atapi_transfer). 2006-08-28 15:10:10 +00:00
Philip Homburg
dcb7cae67c Changed to use sys_readbios to get BIOS parameters. 2006-07-10 12:34:41 +00:00
Ben Gras
3bd3c2cee1 Change at driver to understand 'safe' transfers and ioctls; do corresponding
safe copy and safe sys_insw and sys_outsw calls.
2006-06-20 08:51:24 +00:00
Philip Homburg
36f4976e17 Support for IDE controllers that announce themselves as RAID controllers. 2006-04-04 12:27:28 +00:00
Philip Homburg
4ca6f516c6 Added boot environment option 'ata_no_dma' to disable DMA. 2006-03-13 15:36:57 +00:00
Ben Gras
1a7f7d6333 at_wini: removed RO_BIT misfeature, not used any more
pm: fixed rebooting by making a copy of the monitor code from the user
    process. this is necessary because that process is dead by the time
    sys_abort() is called.

    also added more info to the "can't reply" panic.
2006-03-13 13:21:13 +00:00
Philip Homburg
1353798747 Better probing code 2006-03-09 15:05:43 +00:00
Ben Gras
4686e11dd5 Test receive() return code 2006-03-07 15:45:14 +00:00
Philip Homburg
e25dc302a9 Fixed masks on I/O ports. 2006-03-07 14:16:13 +00:00
Philip Homburg
d8c209b4f8 A bit of leftover cleanup work. 2006-03-06 10:42:51 +00:00
Philip Homburg
816973d1fe Support for DMA. 2006-03-03 15:37:51 +00:00
Ben Gras
f877da3aec endpoint migration for drivers.
mostly renaming message field names to the new names.

tty stored process numbers in chars in tty and pty structs - now ints.
2006-03-03 10:21:45 +00:00
Philip Homburg
4ae5403558 LBA48 support. 2006-02-24 12:55:47 +00:00
Ben Gras
4102c1b44c Make drivers install signal handlers so they don't die at exit. 2006-01-17 17:43:35 +00:00
Philip Homburg
24cf667abb PCI support in a separate driver. 2005-12-02 14:45:10 +00:00
Jorrit Herder
381c24ce17 New MEM driver for recovery. 2005-10-20 20:26:02 +00:00
Jorrit Herder
ee1f2bcb39 Minor fixes for RS. Install signal handlers. 2005-10-12 15:06:00 +00:00
Ben Gras
87dbfc7dda Added DEV_PING message type to drivers (but not ethernet drivers) so
RS can monitor them.
2005-10-12 14:31:39 +00:00
Ben Gras
12da65ee2e Don't clear part table 2005-09-21 12:27:23 +00:00
Ben Gras
3ca29cde44 Make it work without ENABLE_ATAPI 2005-09-16 09:43:02 +00:00
Ben Gras
f7fd32b9e5 at: first wipe partition table (workaround for a partition() bug)
setup: steps fix
2005-09-12 13:25:40 +00:00
Ben Gras
e3709af1b8 Andy's code fixes 2005-09-11 17:09:11 +00:00
Ben Gras
a4963c0376 New do_transfer construct permanent 2005-09-08 12:52:33 +00:00
Ben Gras
d0cd846ae8 Added some more debug statements that are enablable by atapi_debug in the
boot monitor.

Added SCSI_SENSE command that asks the drive, with request sense, about
diagnostics for the previous error. This command is called and the results
printed when atapi_debug is enabled and atapi errors occur.

Debug output also prints actual commands sent to the drive.

Suddenly, Andy's problem has vanished. Don't know why, minor changes
(e.g. moving the atapi packet data from stack to static) shouldn't have
fixed this.. But with the debug info, we stand a better chance of
finding out what it was if it occurs again.
2005-08-26 19:39:00 +00:00
Ben Gras
1732526c50 LBA step 2005-08-25 16:25:19 +00:00
Jorrit Herder
f36fc17c6d Cleanup with gcc.: 2005-08-25 13:14:02 +00:00
Ben Gras
647e179038 . release fixes
. added OPENCT ioctl to at driver, which returns the number of times
  a device is opened. if it's not opened exactly once, new partition info
  will not be read in (at the next open after this close). included
  this check in autopart.
2005-08-25 09:47:31 +00:00
Ben Gras
ae5f1f2286 ata-pci support for at driver.
added a hook in libdriver for HARD_INT messages.
2005-08-25 08:19:11 +00:00
Ben Gras
3aca81a22a Remove double-blank lines 2005-08-22 15:17:30 +00:00
Ben Gras
b993f51980 at bugfix - openct only increased on opens when 0, openct always decreased
on closes..

this causes partition tables not to be re-read sometimes..

this causes mayhem..
2005-08-12 16:42:36 +00:00
Ben Gras
58218775b6 Make timeouts more tolerant, even in strict timeout mode 2005-08-09 16:59:29 +00:00
Ben Gras
1d3fb6ea2e ata_std_timeout boot monitor variable to override short timeouts on
test transactions and ioctl() setting, in case of comatose drives.
2005-08-09 12:42:53 +00:00
Ben Gras
f3500010b7 Moved open-ATAPI-as-RW check to before open-first-time check.. otherwise
you can open an ATAPI device as RW if it's already opened for read.
2005-08-09 12:18:15 +00:00
Ben Gras
f26239d1f8 Minor partition() efficiency improvements (don't do regular partitioning
i/o on cd drives)
2005-08-08 12:16:59 +00:00
Ben Gras
2713ed6cde at driver timeout/error message fixes 2005-08-05 13:50:50 +00:00
Jorrit Herder
74711a3b14 Check if kernel calls is allowed (from process' call mask) added. Not yet
enforced. If a call is denied, this will be kprinted. Please report any such
errors, so that I can adjust the mask before returning errors instead of
warnings.

Wrote CMOS driver. All CMOS code from FS has been removed. Currently the
driver only supports get time calls. Set time is left out as an exercise
for the book readers ... startup scripts were updated because the CMOS driver
is needed early on. (IS got same treatment.) Don't forget to run MAKEDEV cmos
in /dev/, otherwise the driver cannot be loaded.
2005-08-04 19:23:03 +00:00
Jorrit Herder
e561081545 Miscellaneous clean ups and fixes to the kernel.
Support for FLOPPY in boot image. (Set controller=fd at boot monitor.)
Moved major device numbers to <minix/dmap.h> (maybe rename to dev.h?)
2005-08-04 09:26:36 +00:00
Ben Gras
93460d0ad0 Do test transaction before letting open device succeed; if probe fails,
remember drive isn't there and don't try it again
2005-08-04 08:08:58 +00:00
Jorrit Herder
375f6f8754 Miscellaneous cleanups. 2005-08-03 11:53:36 +00:00
Jorrit Herder
aec394a330 Updated drivers according to syslib interface changes. 2005-07-29 15:00:22 +00:00
Jorrit Herder
d62e515660 Small update to SYS_IRQCTL -> setting an interrupt policy now allows the caller
to provide an index (0 .. 31) that is passed in the HARD_INT message when an
interrupt occurs. The NOTIFY_ARG field contains a bitmap with all indexes for
which an interrupt occured.
2005-07-29 12:44:42 +00:00
Jorrit Herder
fe0dcb5c00 AT driver is not modified (debugging only);
TTY: select and revive with new notify and FS call back;
kernel: removed old notify code; removed ugly prepare_shutdown timer
kputc: don't send to FS if PRINTF_PROC fails
2005-07-27 14:32:16 +00:00
Ben Gras
435dd377ed Added an IDENTIFIED flag that is set on successfully identified drives.
This avoids the bug scenario where DEAF but not-w_identify()d drives are
never properly identified, but are seen as real devices.
2005-07-26 13:11:16 +00:00
Jorrit Herder
a63d324caa Small update to shared driver code: SYS_EVENT (signal) is now known.
Fixed drivers. HARD_STOP message no longer exists.
2005-07-26 12:50:25 +00:00
Jorrit Herder
5594b767c0 Renamed src/lib/utils to src/lib/sysutil --- because of new src/lib/util 2005-07-19 13:21:51 +00:00
Ben Gras
c389801a5f Made timeout and no. of errors in at_wini dynamically settable
by ioctl; made catch-all function in driver table also called when
unrecognized ioctl called, so drivers can add their own ioctl codes.
2005-07-13 14:58:21 +00:00
Ben Gras
640eb73ca2 New log driver; buffers messages and makes them available to userland.
Added some fields in the generic device table to support this driver
using libdriver. Updated other drivers to fill these fields with nops
and NULLs.
2005-07-08 17:23:44 +00:00
Jorrit Herder
a5ac07400d Fixed bug in AT driver: don't receive from HARDWARE, but use ANY.
Timeouts are sent by the CLOCK.
2005-06-29 10:27:23 +00:00
Jorrit Herder
6d23f072f3 Cleaned up src/lib/utils library. Renamed server_ functions to more logical
names. All system processes can now either use panic() or report() from
libutils, or redefine their own function. Assertions are done via the standard
<assert.h> functionality.
2005-06-01 14:31:00 +00:00
Jorrit Herder
0165662cd9 Replaced flagalrm() timers with another technique to check for timeouts.
This allowed removing the p_flagarlm timer from the kernel's process table.
Furthermore, I merged p_syncalrm and p_signalrm into p_alarm_timer to save
even more space. Note that processes can no longer have both a signal and
synchronous alarm timer outstanding as of now.
2005-05-31 14:43:04 +00:00
Jorrit Herder
ccd17ecfed New NOTIFY system call! Queued at kernel. Duplicate messages (with same source
and type) are overwritten with newer flags/ arguments. The interface from
within the kernel is lock_notify(). User processes can make a system call with
notify(). NOTIFY fully replaces the old notification mechanism.
2005-05-24 10:06:17 +00:00
Jorrit Herder
1cb880b158 Intermediate update---please await next commit. 2005-05-19 09:36:44 +00:00
Jorrit Herder
1ecc6bf3b3 Removed 'system process' magic from PM and FS. 2005-05-13 08:57:08 +00:00
Ben Gras
9014d98bbf made 2 error messages less ambiguous 2005-05-03 08:59:13 +00:00
Jorrit Herder
ac0995259d *** empty log message *** 2005-05-02 14:30:04 +00:00
Jorrit Herder
89ac678b9b *** empty log message *** 2005-04-29 15:36:43 +00:00
Ben Gras
9865aeaa79 Initial revision 2005-04-21 14:53:53 +00:00