Commit Graph
100 Commits
Author SHA1 Message Date
Michael Lotz ef6d576ca7 That slipped in with the last commit.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31601 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-16 02:46:25 +00:00
Michael Lotz 63d557f06f Fixing random GCC4 warnings. Mostly missing consts, some parentheses, some braces... Should all be harmless and not change anything.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31600 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-16 02:42:03 +00:00
Michael Lotz b78c74fdc4 Fix GCC4 build. Duplicate parameter names generate a warning there.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31599 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-15 23:38:15 +00:00
Michael Lotz ca1def886d * Big cleanup, remove dead code, some renaming, line lengths, spacing,
use B_* error codes, print most numbers as normal decimals or at least prefix
  them with 0x where appropriate.
* When counting free clusters for FAT32 correctly ignore the uppermost 4 bits
  when checking for free entries. Shouldn't matter, as those should always be
  0 anyway.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31306 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-28 23:41:48 +00:00
Michael Lotz b5aac499d5 * Cleanup.
* The active fat field is valid if fats aren't mirrored, not the other way
  around.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31257 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-26 15:55:04 +00:00
Michael Lotz cfc8e38ece Implement most of the logic for write support in the GPT partitioning system.
Actual writing is not implemented though and some key functions aren't either.
Completely untested so far.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31032 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-13 15:51:19 +00:00
Michael Lotz 45041904b4 Do not notify about auto-read messages. For example when setting spam to be
marked as read automatically I don't really want to get the notification alert.
This has been laying around on my drive for a long time now...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31028 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-13 13:00:48 +00:00
Michael Lotz f835a75f31 Make two runs of MTRR setting when setting memory ranges to write-back. At the
first run only set up uncacheable MTRRs and in the second run set the write-back
ones up. If this order is not followed, we could set too large ranges to
cacheable first and then limit it back to uncacheable later. On systems with
enough physical memory this would lead to a temporary situation in which areas
become cacheable that must not be, resulting in system hangs or other unexpected
behaviour. Fixes last part of #4018.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31027 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-13 11:40:05 +00:00
Michael Lotz 96b24aef3f When clearing the MTRRs also set the default type to uncacheable. Otherwise on
systems where the default is set to a cachable type and MTRRs are used to define
the uncacheable areas, everything would become cacheable after clearing them.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31026 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-13 11:35:57 +00:00
Michael Lotz bcc2ed0722 Fix the length calculated in generic_get_mtrr(). The +1 would usually be added
to the mask and then shifted, but as we don't do the shifting at all, we need
to add a page size instead of just 1.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31024 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-13 02:35:19 +00:00
Michael Lotz 62232fd053 * Add more details to debug output.
* Change the TRACE macro to use varargs and add a prefix for easier grepping.
* Some line length cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31023 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-13 02:32:25 +00:00
Michael Lotz 740f46ad41 Update to use UsePrivateKernelHeaders so things like safemode.h can be properly
included.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31022 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-13 00:08:04 +00:00
Michael Lotz e10fbc44fb Not really sure why the inquiry command was special cased on ATAPI, but it
prevents tools that try to read other inquiry pages (like cdrecord) from getting
the required infos. This way the inquiry command is sent to the ATAPI device,
which seems to work fine (at least for the drive I have here).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31019 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-12 20:41:07 +00:00
Michael Lotz 1d4c4d3a5b * Call PostReset() at the end of ResetPort() as it's always used in that way.
* Reset the port directly after executing a command failed instead of letting
  the next call do the reset first. This is arbitrary but looks cleaner to me.
* Provide a way to check if a given sata_request is a SCSI_OP_TEST_UNIT_READY
  over ATAPI and use this info to calm down all error output. This avoids
  spamming the syslog with error output on each media status poll when no disk
  is present in a ATAPI device.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31014 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-12 16:31:14 +00:00
Michael Lotz 46d4d11ff6 Need to stop the roster before deleting it. Should fix bug #4017.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31013 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-12 15:19:43 +00:00
Michael Lotz acf58ffdab Cleanup. Line length, white space.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30981 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-07 14:54:11 +00:00
Michael Lotz 93aba444aa Removed just a bit too much in r30927.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30932 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-30 20:10:12 +00:00
Michael Lotz c89b0ea4c2 We need to update the name and parent directory when renaming/moving.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30930 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-30 19:25:43 +00:00
Michael Lotz 331f147bae * When removing entries properly call remove_vnode().
* Move notifications around so they are sent at the right time.
* Use notify_entry_moved() instead of generating a removal and creation
  notification.
* Allow replacing entries.
* Added a TODO regarding non-empty directories.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30929 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-30 18:31:33 +00:00
Michael Lotz f06f5d708c Make reading the write_overlay more efficient. Instead of always reading the
original file and then overwriting it with what we have in memory, just linearly
fill the buffer, closing gaps between our buffers with original file content as
needed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30927 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-30 17:21:10 +00:00
Michael Lotz 5ab2eaabaa Only use read_pages() when we need to. Otherwise we bypass the cache of the
upper layer, degrading performance qutie a bit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30925 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-30 14:39:14 +00:00
Michael Lotz 3ecc528774 On Darwin/Mac OS X use diskutil to determine if the volume we configure on is a
case-sensitive one. If not, print out a message and a link to the guide that
describes how to set one up.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30913 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-30 00:38:43 +00:00
Michael Lotz 57a5e69604 * Implement read/write_pages using Read()/Write(), io will follow later.
* Create a file cache for created overlay nodes. It is unused and disabled, but
  causes a vnode cache to be created. This is required for mapping a file, which
  in turn is required for executables to be loaded. With that copied or newly
  created executables should work on top of write_overlay. Will think about and
  implement a more direct way of getting that cache later today.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30910 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-29 02:52:11 +00:00
Michael Lotz 5740b42f36 Write can be called without cookie (in the CreateSymlink() case for example).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30907 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-28 21:58:42 +00:00
Michael Lotz 0807998b5d * Implement O_APPEND.
* Also make set_flags available for setting it. O_NONBLOCK is ignored as in BFS.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30903 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-28 21:19:13 +00:00
Michael Lotz 5f447d9b4c Apply r30890, adding a missing put_vnode() on error, to write_overlay as well.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30899 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-28 17:31:18 +00:00
Michael Lotz 940e8add93 Apply r30895 and r30897 to the attribute_overlay as well.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30898 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-28 17:26:13 +00:00
Michael Lotz 3d94685b25 Move the B_UNSUPPORTED return into the macro. No functional change.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30897 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-28 16:18:11 +00:00
Michael Lotz f54023cf37 Propagate error codes in FIONREAD. Fixes bug #3973.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30896 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-28 16:03:50 +00:00
Michael Lotz 607254f510 We don't want to use the OVERLAY_CALL macro for can_page() as it returns a bool
and not a status_t. In case of virtual files it would have wrongly returned
B_UNSUPPORTED, resulting in true instead of false.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30895 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-28 15:32:42 +00:00
Michael Lotz 2cdc24e4ad Fix two instances of handing wrong vnodes to the next layer in attribute_overlay.
The target vnode in link and the toDir vnode in rename were passed directly,
meaning that an attribute_overlay vnode was handed to the next layer causing
crashes when moving/renaming a file on ISO-only CDs for example. Fixes #3885.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30893 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-28 12:34:03 +00:00
Michael Lotz 588b9abc12 Fix leaking the old entry name when renaming actually succeeds.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30891 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-28 02:39:25 +00:00
Michael Lotz 2fc5fcd1ad Add missing put_vnode() in error case.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30890 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-28 02:16:07 +00:00
Michael Lotz 4251f05625 When writing an attribute store file the parent directory might have been
invalidated since the creation of the object. If this is the case we have to
look it up again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30889 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-28 02:15:14 +00:00
Michael Lotz 0635976606 Invalidate our cached inode numbers when removing the attribute file. Basically
we want to ensure that we re-enumerate our environment when eventually writing
a new one as it has most probably changed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30888 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-28 02:05:23 +00:00
Michael Lotz dfada88840 Add functionality for removing a attribute file. In case a file is (re-)moved
we will later remove the attribute backing file using this.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30887 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-28 01:55:43 +00:00
Michael Lotz 56b2febaad Add actual support for relocated directories. In case we hit a placeholder file
pointing to a relocated directory, we now re-initialize the node we are
initializing with the first entry of the pointed at directory. This ought to be
the "." entry containing the proper flags, start block number and data length.
As per the specs we do only keep the file id or alternate name of the
placeholder and take everything else from the relocated directory.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30886 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-28 00:39:33 +00:00
Michael Lotz e349faeba8 In case we run a CD in safemode, we need to stop the CD bootscript after
launching the console. Otherwise it will simply drop through to ejecting the CD
and rebooting as if the installer completed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30885 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-27 23:55:35 +00:00
Michael Lotz f593b93a09 Fix GCC4 build of the HVIFTranslator.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30884 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-27 22:57:31 +00:00
Michael Lotz 43276e5bd1 If we encounter an unsupported entry (like a relocated directory) we now just
skip it instead of returning the error and therefore aborting the directory
enumeration.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30876 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-27 01:30:29 +00:00
Michael Lotz c26b324e20 Should fix GCC4 build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30853 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-25 21:26:54 +00:00
Michael Lotz f2d4d6f676 Invalidate the elfHeader variable when the image struct is deleted on error, as
they share the same pointer. Should fix bug #3955.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30848 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-24 23:10:55 +00:00
Michael Lotz cc636a35cb Simplify dirty region handling when copying regions. Basically the full region
is considered dirty and only what we are really able to copy (which excludes all
possible dirty regions) is removed from that again. This is simpler and less
error prone than to remove more than we may copy and then add the old dirty
regions back. Fixes a few region copy related redraw issues most visible in case
of scrolling like non-updated parts when scrolling in Tracker or Terminal as in
bug #3803.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30840 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-24 14:38:09 +00:00
Michael Lotz 5ba33c51f2 * Integrate reports/items some more.
* Reorganize how items are added to collections.
* Make collections useful for enumeration through that.
* Added printing out of collections, reports and report items for easier
  verification of report parsing.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30821 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-21 15:53:52 +00:00
Michael Lotz 9d3da74dea Add a slider to the settings view to allow adjusting the rendering output size.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30799 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-18 21:25:34 +00:00
Michael Lotz c6f2665631 Fix loading mechanism of settings in the shared BaseTranslator. Previously it
would always overwrite existing settings with the defaults when a message not
containing settings arrived. But we only want to revert to defaults when there
have not been any settings yet. This should fix most translators forgetting
their settings.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30798 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-18 21:23:29 +00:00
Michael Lotz 3793b581f4 Complete move of shared files from Icon-O-Matic sources to icon library.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30795 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-18 20:23:22 +00:00
Michael Lotz 8b8d44bfcc Enable just enough of the message based format used in Icon-O-Matic to allow
BIconUtils to understand and render it. This makes it possible to use the
HVIFTranslator to also read Icon-O-Matic files out of the box. Will cleanup
now duplicated files next.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30794 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-18 20:15:04 +00:00
Michael Lotz dca631302d Fix GCC2 build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30793 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-18 19:13:39 +00:00
Michael Lotz 0994c50f8a Adding a BIconUtils based HVIFTranslator. It's not very efficient as it does
the full work twice in the worst case. Also since it only supports actual HVIF
format and not the Icon-O-Matic one directly it is not as useful as one might
think. Still it's a start. You could translate from a HVIF file to a PNG using
the command line translate tool with it (translate infile outfile 'PNG ').


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30792 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-18 17:37:15 +00:00
Michael Lotz 2ae482f582 Implement the FIONREAD ioctl for sockets. We already supported it in userland
but the kernel part was missing. It is used to query for the buffer size that
can be retrieved using recv(). It returns the same value we use for the read
select().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30786 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-18 01:13:44 +00:00
Michael Lotz 527e6eefef Do not free the descriptor chains and transfer queue head directly when
finishing transfers. The host controller might still be using some of those
structures. In the (unlikely) case that a freed memory chunk would be
immediately re-used and filled with new values this would lead the controller
to either find invalid values and assert a process error or it could follow
invalid list links leading to host system errors. We have to wait with freeing
until the controller processing the next frame to make sure this cannot happen.
The unlikely case should also have been the cause of bug #2481.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30714 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-12 01:55:15 +00:00
Michael Lotz aaf7738499 Cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30713 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-11 23:56:26 +00:00
Michael Lotz 9bc8951dc9 * Simplify the way fragmented transfers are resubmited.
* This also paves the way for a different way to handle transfer freeing.
* Also fixes that errors in reappending would previously not be propagated to
  the caller.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30712 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-11 23:37:30 +00:00
Michael Lotz 60a3c33b87 In case we already did initialize and prepare kernel access, no need to do it
again. Especially not because it'd likely fail because we are now most probably
in the kernel.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30711 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-11 23:32:59 +00:00
Michael Lotz aa3ca9ed30 * Move the actual and maximum length calculation into two inline functions.
* Use those to make sure the size is retrieved correctly in all cases (which
  it wasn't in the short packet tests).
* Don't detect short packets for control transfers as we need the status packet
  to finish the transfer and cannot quit earlier.
* Only check for short packets when we also have the short packet flag set.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30710 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-11 22:35:50 +00:00
Michael Lotz aaeffcf7a6 Adding missing license headers.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30665 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-07 22:23:14 +00:00
Michael Lotz e7fcf08d76 Adding a complete HID parser and report handling facility. This is generic code,
so should be reusable for bluethooth HID as well (which is the same). The only
missing part so far is the logical collections that would allow nicer
enumeration of the report structure but is otherwise not useful. It should
support all of the HID specs except for usage aliases (even long items that
aren't actually defined should just work if they ever are). Not integrated into
the USB specific device framework and there are no actual drivers making use
of provided functionallity. The parsing was tested and works for all of the 3
devices I had available, but actual interpretation of data is not tested as the
driver side is missing. Will close that gap as a next step and then port the
mouse and keyboard drivers to that framework. Eventually a generic driver that
makes unknown fields available to userland apps in some way should be fairly
easy to implement with that.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30664 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-07 22:16:50 +00:00
Michael Lotz f8c16a4508 By popular request: Change the invalid device number and add a comment
explaining the reasons behind it. Oh well, at least the commit count raises...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30644 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-06 13:09:01 +00:00
Michael Lotz 03a574d8cd * Check for disk extensions before using them (mostly for good practice reasons)
* A CHS read error would previously be hidden by a successful disk system reset.
  Not that it matters much because it'd have resulted in a non-booting system
  anyway.
* Add some more debug output, minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30643 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-06 11:55:19 +00:00
Michael Lotz 2a8d619c9e Add three more error checks for paranoias sake.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30642 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-06 11:47:48 +00:00
Michael Lotz 5d14311137 When doing removal notifications for USB devices, report the hub after the
children. Otherwise a driver that builds up a device hierarchy could run into
trouble when the parent hub is removed before its child devices. Not that there
were any drivers that do so, but it just seems more correct.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30641 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-06 02:03:25 +00:00
Michael Lotz 5c3441b4a2 We are generally interested in those error bits so print them always.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30565 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-02 13:36:49 +00:00
Michael Lotz c8d10a521f * Ensure that we don't clear a combined B_*_KEY as long as one of the
B_{LEFT|RIGHT}_*_KEYs is pressed for shift, command, control and option.
  This fixes bug #3841.
* Only send a B_MODIFIERS_CHANGED message when the modifiers actually changed.
* Minor simplification to only check for the lock keys once.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30538 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-01 18:43:57 +00:00
Michael Lotz 5c8e597e90 Don't try to use disk extensions for non-disk devices (like actual floppies or
emulated ones on CD-boot). One of my laptops returns bogus drive parameters
and another one silently fails the read, previously preventing CD-boot on both.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30389 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-24 23:16:26 +00:00
Michael Lotz c2c3d40c7b Check the status value for validity before waiting for a device. If it has an
invalid value, assume the device is not present. Should fix long boot pauses
in VMWare and maybe also on some hardware.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30381 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-24 16:03:01 +00:00
Michael Lotz 4585fda629 The bootfloppy image has become so fat that it simply doesn't fit the 1.44 size
anymore. This was the case for GCC4 already but is now also true for GCC2. We
might want to look into that again, or we can just ignore it as noone is really
using floppies anymore and for eltorito boot we can live with the 2.88 floppy
emulation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30312 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-22 00:17:22 +00:00
Michael Lotz 22a6e4bb80 Only use 2 bytes of the signature instead of all four. Even though the specs
clearly state that the other two bytes need to be 0x01 (and they always did,
even back to the very first ATA/ATAPI specs), I have one device here that
doesn't set the sector count register to 1. Since those two bytes are the unique
ones of the signatures anyway, it shouldn't harm to just ignore the others.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30311 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-22 00:14:33 +00:00
Michael Lotz d102012d3a Initialize the device_status field of the CCB. This makes modules using raw
commands work that check this value (like the CDDA filesystem, so audio CDs
work now).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30288 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-21 00:59:24 +00:00
Michael Lotz 8c5cccce46 * Explicitly check device selection success. If device selection failed, assume
there is no device. Should fix long reset timeouts when only device 1 is
  present and therefore device 0 can't be selected.
* In case a device reset error is reported, don't try to identify/use the device.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30286 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-20 22:14:02 +00:00
Michael Lotz 14d5277c14 Remove dead code of ATA bus_manager. Note that the new ATA bus_manager now has
it's own target named ata and doesn't reuse the ide name. Because of that we
can also add it to the build by default.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30271 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-19 23:02:54 +00:00
Michael Lotz ca68245eb7 * Wrote a new infoblock header according to ATA/ATAPI-6 that is cleaner and more
verbose than the old one. Removed the latter.
* Put some of the hardcoded values into defines for more clearity.
* Report more detailed device type for ATAPI devices and report removable
  media based on the bit in the infoblock as well.
* Rename the channel ID attributes back to ide to let the hack in scsi_periph
  work that then publishes the devices under the disk/ata[pi] tree.
* Also disable command queueing for ATAPI devices.
* Remove remnants of CHS support.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30270 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-19 22:15:29 +00:00
Michael Lotz 5a0bca36e0 Unset the debugger variables before evaluating support to ensure that in case of
error we do not reuse old values from a previous KDL session. This ensures that
we don't try to use a USB keyboard if it was un- and replugged on an unsupported
port.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30266 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-19 17:08:09 +00:00
Michael Lotz 00918d55dd Check if we support debug transfers before returning a pipe for debugging. We
only support UHCI for now. In case transfers aren't possible we therefore don't
make PS/2 keyboards unusable in KDL.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30265 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-19 16:05:47 +00:00
Michael Lotz 2c08a10439 * Wait slightly longer before falling into passive poll mode.
* Cause scheduler invokation when we handled an interrupt as the transfering
  thread can continue immediately. This brings small block transfer rates to
  a comparable level to the old IDE bus_manager. For large block transfers there
  is no speed difference at all.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30257 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-19 00:57:57 +00:00
Michael Lotz 5ea617fad1 Only wait for data request in the PIO case as before.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30256 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-19 00:54:42 +00:00
Michael Lotz b6b82488df Apply block count maximum according to device capability. If the device supports
LBA48 we can allow a maximum block count of 65535 as we have a 16bit sector
count field available.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30254 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-18 23:08:44 +00:00
Michael Lotz 6a2bc1027b For packet devices we want to actually return a check condition when the device
indicates an error. Also we then need to pass through the request sense command
to the device. This should fix media status reporting for ATAPI.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30253 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-18 22:37:04 +00:00
Michael Lotz 9323901253 Check the result after sending the packet, other error conditions like media
presence will be triggered there and we use FinishRequest() to catch those.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30250 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-18 21:32:00 +00:00
Michael Lotz 827f849a34 * Reworked device detection, we'll see how well this works...
* Reworked some of the transfer handling after reading the specs.
* Ensure that the device selection bit is set correctly for all commands.
* Generally disable interrupts and enable them only when expecting a DMA one.
* Renamed disk failure to device fault according to specs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30248 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-18 20:58:33 +00:00
Michael Lotz db9ff5bfb8 Fix wrong preprocessor line.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30141 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-12 22:48:39 +00:00
Michael Lotz 96e5f9e535 * Don't build avcodec with assembly targets using yasm - because it breaks the
build.
* Remove the APE reader from the image as it also depends on the non-working
  yasm rule.

Please don't just leave the build in such a broken state. It's really annoying
when you're held up by stuff like that when you want to work on something.
Just leave changes like those disabled until you have verified that they work.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30111 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-11 00:00:19 +00:00
Michael Lotz 61f3dd4f28 Forgot this in the last commit.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30110 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-10 23:13:25 +00:00
Michael Lotz 33d80ba202 * Rework ATAPI handling, removing all PIO interrupts. As Marcus pointed out the
complication is not really worth it and it would in any case be unreliable
  in the shared interrupt case (even though you could always check the poll
  condition in the interrupt handler).
* Probably broke ATAPI with those changes though.
* Change blocksLeft to bytesLeft to allow using it for arbitrary ATAPI requests.
* Check some more error conditions and actually let those states get through
  to the SCSI layer.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30109 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-10 22:29:59 +00:00
Michael Lotz 8bbb189e27 Extend and rework tracing. If ATA_TRACING is enabled in the tracing config it
will now log all the tracing details with ktrace_printf. Additionally messages
that should always be printed are outputted to the syslog.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30108 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-10 20:47:23 +00:00
Michael Lotz da4c99002d Move the lock into the request.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30100 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-10 08:05:17 +00:00
Michael Lotz 118bb4e750 * Fix race condition between finishing a request and returning a busy status
when the channel is in use, which would cause the SCSI scheduler to stop
  sending requests.
* Indeed we need to return a status from the interrupt handler, as for PIO
  transfers there is no way of knowning whether or not the interrupt at hand
  was ours.
* Add some debug output.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30091 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-10 00:14:07 +00:00
Michael Lotz ac0a972985 Adding mode sense command to retrieve the write protected status. Doesn't work
yet, so not enabled for now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30082 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-09 20:47:10 +00:00
Michael Lotz 22805aae7f Adding ATAPI support to the new ATA bus_manager. Only tested in QEMU.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30080 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-09 19:53:26 +00:00
Michael Lotz 7997389772 Implement DMA transfers in the new ATA bus_manager.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30069 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-09 15:24:40 +00:00
Michael Lotz 3e907cd4a0 Make it buildable on BeOS again... The last time now, the next time BeOS support will simply be removed.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30064 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-09 13:02:46 +00:00
Michael Lotz eb01fb72f6 * Add the kernel debugger extensions only for the haiku target.
* Acknowledge non-enabled interrupts in UHCI as done in EHCI as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30063 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-09 12:35:32 +00:00
Michael Lotz 9611bddd7a Adding DMA detection and generally allow DMA. Not used yet though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30054 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-09 09:21:46 +00:00
Michael Lotz 6bb01f71bc * Adding/updating license headers.
* Add the standalone ata module to the Jamfile.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30053 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-09 08:54:46 +00:00
Michael Lotz 44039cc605 Additional to the normal detection of device presence, use the trick previously
present in the IDE bus_manager when detecting devices to avoid long timeouts
when waiting for possible ATAPI devices.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30052 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-09 08:44:25 +00:00
Michael Lotz bf9a383524 * Work in progress commit of a reworked ATA bus_manager. It's now object based,
but doesn't really do anything more than before.
* It also replaces everything IDE with ATA counterparts and cleans up a lot
  of the definitions.
* Cleaning up the old ATA bus_manager as well as some license headers missing.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30049 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-08 23:54:52 +00:00
Michael Lotz 3613bfc871 Adding a run_on_exit kernel debugger add-on. It installs a debugger command
"on_exit" with which you can add commands to run when exiting the debugger.
With this you could for example "on_exit sync" and "on_exit shutdown -r" when
your app_server crashed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30016 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-08 07:45:59 +00:00
Michael Lotz f81f8ddb90 Fix search+replace error introduced with reworking debug output. This should
fix full/lowspeed devices behind high-speed hubs again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29933 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-05 13:19:32 +00:00
Michael Lotz c43b256828 It turns out that on some BIOSes even if the handover is signaled as successful,
the BIOS doesn't remove it's SMIs. When then initializing the controller this
would trigger all sorts of stuff and for example freeze the system. We therefore
always force off the SMIs, even if the handover didn't fail.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29931 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-05 13:04:30 +00:00
Michael Lotz 674996257b Update the cross-compiler link to the current version.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29873 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-03 01:31:15 +00:00