| Age | Commit message (Collapse) | Author |
|
as of r227006.
Notes:
svn path=/head/; revision=227982
|
|
Submitted by: Marc Balmer <marc@msys.ch>
MFC after: 1 week
Notes:
svn path=/head/; revision=201758
|
|
modularize it so that new transports can be created.
Add a transport for SATA
Add a periph+protocol layer for ATA
Add a driver for AHCI-compliant hardware.
Add a maxio field to CAM so that drivers can advertise their max
I/O capability. Modify various drivers so that they are insulated
from the value of MAXPHYS.
The new ATA/SATA code supports AHCI-compliant hardware, and will override
the classic ATA driver if it is loaded as a module at boot time or compiled
into the kernel. The stack now support NCQ (tagged queueing) for increased
performance on modern SATA drives. It also supports port multipliers.
ATA drives are accessed via 'ada' device nodes. ATAPI drives are
accessed via 'cd' device nodes. They can all be enumerated and manipulated
via camcontrol, just like SCSI drives. SCSI commands are not translated to
their ATA equivalents; ATA native commands are used throughout the entire
stack, including camcontrol. See the camcontrol manpage for further
details. Testing this code may require that you update your fstab, and
possibly modify your BIOS to enable AHCI functionality, if available.
This code is very experimental at the moment. The userland ABI/API has
changed, so applications will need to be recompiled. It may change
further in the near future. The 'ada' device name may also change as
more infrastructure is completed in this project. The goal is to
eventually put all CAM busses and devices until newbus, allowing for
interesting topology and management options.
Few functional changes will be seen with existing SCSI/SAS/FC drivers,
though the userland ABI has still changed. In the future, transports
specific modules for SAS and FC may appear in order to better support
the topologies and capabilities of these technologies.
The modularization of CAM and the addition of the ATA/SATA modules is
meant to break CAM out of the mold of being specific to SCSI, letting it
grow to be a framework for arbitrary transports and protocols. It also
allows drivers to be written to support discrete hardware without
jeopardizing the stability of non-related hardware. While only an AHCI
driver is provided now, a Silicon Image driver is also in the works.
Drivers for ICH1-4, ICH5-6, PIIX, classic IDE, and any other hardware
is possible and encouraged. Help with new transports is also encouraged.
Submitted by: scottl, mav
Approved by: re
Notes:
svn path=/head/; revision=195534
|
|
now takes a device_t to be the parent of the bus that is being created.
Most SIMs have been updated with a reasonable argument, but a few exceptions
just pass NULL for now. This argument isn't used yet and the newbus
integration likely won't be ready until after 7.0-RELEASE.
Notes:
svn path=/head/; revision=170872
|
|
use to synchornize and protect all data objects that are used for that
SIM. Drivers that are not yet MPSAFE register Giant and operate as
usual. RIght now, no drivers are MPSAFE, though a few will be changed
in the coming week as this work settles down.
The driver API has changed, so all CAM drivers will need to be recompiled.
The userland API has not changed, so tools like camcontrol do not need to
be recompiled.
Notes:
svn path=/head/; revision=168752
|
|
bus_setup_intr()
o add an int return code to all fast handlers
o retire INTR_FAST/IH_FAST
For more info: http://docs.freebsd.org/cgi/getmsg.cgi?fetch=465712+0+current/freebsd-current
Reviewed by: many
Approved by: re@
Notes:
svn path=/head/; revision=166901
|
|
PR: 106543
MFC after: 3 days
Notes:
svn path=/head/; revision=165102
|
|
as the default.
Reviewed by multitudes.
Notes:
svn path=/head/; revision=163896
|
|
the CAM_NEW_TRAN_CODE that has been in the tree for some years now.
This first step consists solely of adding to or correcting
CAM_NEW_TRAN_CODE pieces in the kernel source tree such
that a both a GENERIC (at least on i386) and a LINT build
with CAM_NEW_TRAN_CODE as an option will compile correctly
and run (at least with some the h/w I have).
After a short settle time, the other pieces (making
CAM_NEW_TRAN_CODE the default and updating libcam
and camcontrol) will be brought in.
This will be an incompatible change in that the size of structures
related to XPT_PATH_INQ and XPT_{GET,SET}_TRAN_SETTINGS change
in both size and content. However, basic system operation and
basic system utilities work well enough with this change.
Reviewed by: freebsd-scsi and specific stakeholders
Notes:
svn path=/head/; revision=163816
|
|
and amd64. The optimization is a trivial on recent machines.
Reviewed by: -arch (imp, marcel, dfr)
Notes:
svn path=/head/; revision=146734
|
|
Notes:
svn path=/head/; revision=143168
|
|
Notes:
svn path=/head/; revision=139749
|
|
Notes:
svn path=/head/; revision=129879
|
|
Submitted by: Mark Santcroos <marks@ripe.net>
Reviewed by: imp, dfr, bde
Notes:
svn path=/head/; revision=127135
|
|
Notes:
svn path=/head/; revision=124778
|
|
tree for two or more years now), except in a few places where there's
code to be compatible with older versions of FreeBSD.
Notes:
svn path=/head/; revision=119277
|
|
to ru@ for testing this.
Notes:
svn path=/head/; revision=118775
|
|
Reviewed by: scottl
Notes:
svn path=/head/; revision=118267
|
|
Add two new arguments to bus_dma_tag_create(): lockfunc and lockfuncarg.
Lockfunc allows a driver to provide a function for managing its locking
semantics while using busdma. At the moment, this is used for the
asynchronous busdma_swi and callback mechanism. Two lockfunc implementations
are provided: busdma_lock_mutex() performs standard mutex operations on the
mutex that is specified from lockfuncarg. dftl_lock() is a panic
implementation and is defaulted to when NULL, NULL are passed to
bus_dma_tag_create(). The only time that NULL, NULL should ever be used is
when the driver ensures that bus_dmamap_load() will not be deferred.
Drivers that do not provide their own locking can pass
busdma_lock_mutex,&Giant args in order to preserve the former behaviour.
sparc64 and powerpc do not provide real busdma_swi functions, so this is
largely a noop on those platforms. The busdma_swi on is64 is not properly
locked yet, so warnings will be emitted on this platform when busdma
callback deferrals happen.
If anyone gets panics or warnings from dflt_lock() being called, please
let me know right away.
Reviewed by: tmm, gibbs
Notes:
svn path=/head/; revision=117126
|
|
Devices below may experience a change in geometry.
* Due to a bug, aic(4) never used extended geometry. Changes all drives
>1G to now use extended translation.
* sbp(4) drives exactly 1 GB in size now no longer use extended geometry.
* umass(4) drives exactly 1 GB in size now no longer use extended geometry.
For all other controllers in this commit, this should be a no-op.
Looked over by: scottl
Notes:
svn path=/head/; revision=116351
|
|
Add XXX comment where intent is unclear.
Found by: FlexeLint
Notes:
svn path=/head/; revision=115559
|
|
BUS_DMASYNC_ definitions remain as before. The does not change the ABI,
and reverts the API to be a bit more compatible and flexible. This has
survived a full 'make universe'.
Approved by: re (bmah)
Notes:
svn path=/head/; revision=115343
|
|
to bus_dmasync_op_t in my last commit.
Notes:
svn path=/head/; revision=113350
|
|
some error codes that get returned to CAM.
Notes:
svn path=/head/; revision=107876
|
|
an sbus front-end.
Notes:
svn path=/head/; revision=107840
|
|
Notes:
svn path=/head/; revision=106668
|
|
Spotted by: FlexeLint.
Notes:
svn path=/head/; revision=105219
|
|
Notes:
svn path=/head/; revision=76306
|
|
I could find. I have no doubt missed a couple.
Interrupt entropy harvesting is still conditional on the
kern.random.sys.harvest_interrupt sysctl.
Notes:
svn path=/head/; revision=73280
|
|
Notes:
svn path=/head/; revision=67164
|
|
It was not discussed and should probably not happen.
Requested by: msmith and others
Notes:
svn path=/head/; revision=60938
|
|
the type argument to *_HEAD and *_ENTRY is a struct.
Suggested by: phk
Reviewed by: phk
Approved by: mdodd
Notes:
svn path=/head/; revision=60833
|
|
Remove ~60 unneeded #include <sys/malloc.h>
Notes:
svn path=/head/; revision=59391
|
|
Due to some interesting cpp tricks in lockmgr, the LINT kernel shrinks
by 924 bytes.
Notes:
svn path=/head/; revision=59368
|
|
to PCI_BASE_ADDR0 (== 0x10).
Tested by: Brian Somers <brian@Awfulhak.org>
Notes:
svn path=/head/; revision=59169
|
|
Some error messages are added by Brian Somers <brian@Awfulhak.org>.
Notes:
svn path=/head/; revision=59083
|
|
them.
Pointed out by: bde
Notes:
svn path=/head/; revision=58701
|
|
have the right compatibility shims enabled. ISA drivers to follow later.
Notes:
svn path=/head/; revision=58695
|
|
Notes:
svn path=/head/; revision=55946
|
|
don't care about the alignment, set it to 1, meaning single byte alignment.
Notes:
svn path=/head/; revision=49860
|
|
driver lacks error recovery and still needs more testing, but it's
about time I got it under revision control.
Submitted by: Tekram Inc.
Bus Space/DMA and cleanup: gibbs
Notes:
svn path=/head/; revision=47411
|