Age | Commit message (Collapse) | Author |
|
|
|
|
|
read capacity completion to compensate.
|
|
disk.
|
|
|
|
queued commands to be done.
|
|
- add a ccb_done member to the ahci_ccb, which points to a function that
is used to complete the current xfer
- ccbs no longer rely on an ata_xfer being provided for submission to work
- ahci is stupid and has no way to telling you the difference between an
empty command slot, and a completed command. we keep track of active
commands with ap_active in ahci_port, so we dont try and complete commands
we havent actually submitted
- ahci_start simple submits a command to the hardware now
- provide the start of an interrupt handler for each port (which is not yet
called by the controllers interrupt handler)
- provide an ahci_poll which is built on top of ahci_start and
ahci_port_intr
- remove the fake ata_xfers from the softreset path
- on completion of an ahci command, sync the relevant dma memory
- provide a completion path for ata_xfers which syncs the xfers buffer
and calls the xfers completion handler
in atascsi.c:
- start defining the contents of the response to an ATA IDENTIFY command
specific to SATA
- implement the faking of scsi inquiries, so now you'll actually see a disk
attach to ahci.
- start implementing a fake scsi read capacity. it presents a fake geometry
though, so dont get too excited when ahci magically makes your disk have a
terabyte in size.
lots of discussion, help, tweaks, and an ok from pascoe@
|
|
destined for. add ata_exec, which will push the xfer on the right path.
|
|
routine will take a pointer to ata_xfer, not a void *. add some states and
flags for the xfers, and some values for the hba to return when processing
them.
|
|
not an array of ints.
|
|
ok dlg@
|
|
in the ata_port struct so a hba can find its own info for that port.
|
|
is created or destroyed.
|
|
accessing that pool.
|
|
committing it.
|
|
|
|
|
|
|
|
tree. ive lost two large changes today thanks to my own stupidity which
could have been avoided if they were in the tree.
discussed with deraadt@
ok jsg@ grange@ an older version was ok marco@
|
|
need the debug info uncomment the printf's you need. Crude but
effective way to suppress 'no disklabel' errors that pop up at the
most innconvenient times to frighten users. More elegant method,
DPRINTF-like constructs or something, later.
"Yay!" marco@ ok deraadt@
|
|
ok kettenis@ cloder@ tom@ henning@
|
|
From Bret Lambert.
|
|
|
|
a disk rather than accepting the cylinder count provided by the disk
or controller. This cylinder count will be '16383' for any disk >8.4G
according to the ATA spec. CPU_BIOS on i386/amd64 has magic to deal
with this, but other archs do not need to be restricted by the needs
of PC BIOS.
Fixes the default MBR OpenBSD partition size and disklabel on non-CPU_BIOS
archtitectures.
No change to behaviour on i386/amd64 machines.
Noted by Stuart Henderson on his Thecus.
Testing by various, including 'old i386 machines' nick@
ok tom@ pedro@ weingart@ deraadt@
|
|
a few obsolete and easily replaced disk models. And didn't work anyway
according to Bob, who has tried.
ok beck@
|
|
use. Easier to read and eliminates a potentially confusing unused call
to wdgetdisklabel(). No change to object files.
ok brad@ dlg@ grange@ deraadt@ marco@
|
|
setting RAW_PART's p_size to d_secperunit * (d_secsize / DEV_BSIZE) is
a waste of a few ops. And p_size should be in sectors anyway.
Just set RAW_PART's p_size to d_secperunit to make usage consistant
across the tree.
Should be a no-op.
|
|
ok marco@
|
|
zeroref() - just to be on the safe side, should we mess up our ref count.
|
|
"looks sane" grange@; tested by niall@ krw@ jmc@ jolan@
|
|
which can happen if the integrated microdrive's DRQ is not clear. This
fixes the drive geometry in the default disklabel.
Help from weingart@ and grange@; "mention `grange and i will fix this
better after 3.8 or we will be flailed'" deraadt@
|
|
they are presented to the rest of the system to stop
a password being set that could deny access to the disk.
ok grange@ deraadt@
|
|
when listing information about it. ok grange@
|
|
First noticed by christos@netbsd (iirc) a long time ago.
Tested by canacar@ and krw@.
|
|
|
|
|
|
|
|
particularly vile because it looks like a typo (i.e., looks like one "f" is
missing), but it's really not. I happened to notice this myself, but the fix
is inspired by NetBSD in the interest of keeping the code similar.
deraadt@ ok
|
|
WDC_QUIRK_NOSHORTDMA which disables DMA for the one-sector
transfers. Use this quirk for the Geode SC1100 IDE to fix
hanging during fdisk reported in PR 3729.
Thanks to Alexandre Belloni <abelloni@nerim.net> for testing.
ok costa@
|
|
|
|
looked at by various, testing henning@ mcbride@ dan weeks
mostly from netbsd via Pedro Martelletto <pbastos@rdc.puc-rio.br>
|
|
|
|
informative. Also convert WDCS_BITS string to caps.
|
|
|
|
capacity > 8GB. Total number of cylinders is enough.
ok deraadt@
|
|
|
|
|
|
asserted after BSY is cleared in data read codepath. Solves delays in
probe.
The first version of this diff was done by costa@ a long time ago but
had some issues. This one is a partial sync with NetBSD.
ok costa@
|
|
|
|
- do not stop/unload current DMA operation if an IRQ was not detected
by DMA engine unless the force flag was given, fixes DMA problems
in shared IRQ setups;
- ack interrupt before entering DMA codepath
Tested by many.
Work by niklas@ but he doesn't want to commit it for some reason.
|