History log of /freebsd-current/sys/dev/firewire/fwdev.c
Revision Date Author Comments
# 95ee2897 16-Aug-2023 Warner Losh <imp@FreeBSD.org>

sys: Remove $FreeBSD$: two-line .h pattern

Remove /^\s*\*\n \*\s+\$FreeBSD\$$\n/


# 718cf2cc 27-Nov-2017 Pedro F. Giffuni <pfg@FreeBSD.org>

sys/dev: further adoption of SPDX licensing ID tags.

Mainly focus on files that use BSD 2-Clause license, however the tool I
was using misidentified many licenses so this was mostly a manual - error
prone - task.

The Software Package Data Exchange (SPDX) group provides a specification
to make it easier for automated tools to detect and summarize well known
opensource licenses. We are gradually adopting the specification, noting
that the tags are considered only advisory and do not, in any way,
superceed or replace the license texts.


# 256a4cb9 10-May-2016 Edward Tomasz Napierala <trasz@FreeBSD.org>

Remove NULL checks after M_WAITOK allocations from firewire.

MFC after: 1 month
Sponsored by: The FreeBSD Foundation


# 453130d9 02-May-2016 Pedro F. Giffuni <pfg@FreeBSD.org>

sys/dev: minor spelling fixes.

Most affect comments, very few have user-visible effects.


# e1da986b 01-May-2016 Konstantin Belousov <kib@FreeBSD.org>

Make it explicit that D_MEM cdevsw d_flag is to signify that the
driver is (or behaves identically to) /dev/mem. Remove the D_MEM flag
from random drivers.

Note that currently the D_MEM flag does not affect any behaviour, but
this going to change in the next commit.

Noted and reviewed by: alc
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
X-Differential revision: https://reviews.freebsd.org/D6149


# 23667f08 27-Sep-2014 Alexander Kabaev <kan@FreeBSD.org>

Remove obsolete compatibility glue and improve firewire code readability.

Commit my version of style(9) pass over the firewire code. Now that
other people have started changing the code carrying this is as a
local patch is not longer a viable option.

MFC after: 1 month


# 138ebd1b 18-Sep-2014 Will Andrews <will@FreeBSD.org>

Start the process of cleaning up FreeBSD's firewire driver.

sys/dev/firewire/firewire.c:
sys/dev/firewire/firewire.h:
sys/dev/firewire/firewirereg.h:
sys/dev/firewire/fwcrom.c:
sys/dev/firewire/fwdev.c:
sys/dev/firewire/fwdma.c:
sys/dev/firewire/fwmem.c:
sys/dev/firewire/fwohci.c:
sys/dev/firewire/fwohci_pci.c:
sys/dev/firewire/fwohcivar.h:
sys/dev/firewire/if_fwe.c:
sys/dev/firewire/if_fwip.c:
sys/dev/firewire/sbp.c:
sys/dev/firewire/sbp_targ.c:
Unifdef the code, removing support for DragonflyBSD
and FreeBSD prior to version 5.

Submitted by: gibbs
MFC after: 1 month
Sponsored by: Spectra Logic
MFSpectraBSD: 1081188 on 2014/08/01


# d56b4cd4 07-Sep-2013 Davide Italiano <davide@FreeBSD.org>

- Use make_dev_credf(MAKEDEV_REF) instead of the race-prone make_dev()+
dev_ref() in the clone handlers that still use it.
- Don't set SI_CHEAPCLONE flag, it's not used anywhere neither in devfs
(for anything real)

Reviewed by: kib


# a7d5f7eb 19-Oct-2010 Jamie Gritton <jamie@FreeBSD.org>

A new jail(8) with a configuration file, to replace the work currently done
by /etc/rc.d/jail.


# cfd7bace 29-Dec-2009 Robert Noland <rnoland@FreeBSD.org>

Update d_mmap() to accept vm_ooffset_t and vm_memattr_t.

This replaces d_mmap() with the d_mmap2() implementation and also
changes the type of offset to vm_ooffset_t.

Purge d_mmap2().

All driver modules will need to be rebuilt since D_VERSION is also
bumped.

Reviewed by: jhb@
MFC after: Not in this lifetime...


# 67784314 08-Sep-2009 Poul-Henning Kamp <phk@FreeBSD.org>

Revert previous commit and add myself to the list of people who should
know better than to commit with a cat in the area.


# b34421bf 08-Sep-2009 Poul-Henning Kamp <phk@FreeBSD.org>

Add necessary include.


# 03cd51df 23-Jun-2009 Roman Divacky <rdivacky@FreeBSD.org>

Fix what seems to be an obvious typo preventing the body of the
if statement to ever be executed.

Approved by: ed (mentor)


# d7f03759 19-Oct-2008 Ulf Lilleengen <lulf@FreeBSD.org>

- Import the HEAD csup code which is the basis for the cvsmode work.


# 6bfa9a2d 27-Sep-2008 Ed Schouten <ed@FreeBSD.org>

Replace all calls to minor() with dev2unit().

After I removed all the unit2minor()/minor2unit() calls from the kernel
yesterday, I realised calling minor() everywhere is quite confusing.
Character devices now only have the ability to store a unit number, not
a minor number. Remove the confusion by using dev2unit() everywhere.

This commit could also be considered as a bug fix. A lot of drivers call
minor(), while they should actually be calling dev2unit(). In -CURRENT
this isn't a problem, but it turns out we never had any problem reports
related to that issue in the past. I suspect not many people connect
more than 256 pieces of the same hardware.

Reviewed by: kib


# 9950b741 06-Jun-2007 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

MFp4: MPSAFE firewire stack.
- lock its own locks and drop Giant.
- create its own taskqueue thread.
- split interrupt routine
- use interrupt filter as a fast interrupt.
- run watchdog timer in taskqueue so that it should be
serialized with the bottom half.
- add extra sanity check for transaction labels.
disable ad-hoc workaround for unknown tlabels.
- add sleep/wakeup synchronization primitives
- don't reset OHCI in fwohci_stop()


# 0892f4c5 30-Apr-2007 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

MFp4: Fix broken userland API for async packets.

- Introduce fw_xferlist_add/remove().
- Introduce fw_read/write_async().
- Remove unused FWACT_CH.

MFC after: 1 week


# e340a7ac 23-Apr-2007 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

Configuration ROM length should be unsigned.

MFC: 1 week


# 801167a8 15-Mar-2007 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

Replace xfer->act.hand with xfer->hand.


# 8b0a7382 06-Dec-2006 Colin Percival <cperciva@FreeBSD.org>

Correct a signedness bug which allowed members of the operator
group to read kernel memory.

Security: FreeBSD-SA-06:25.kmem


# 6a113b3d 08-Aug-2005 Robert Watson <rwatson@FreeBSD.org>

Merge the dev_clone and dev_clone_cred event handlers into a single
event handler, dev_clone, which accepts a credential argument.
Implementors of the event can ignore it if they're not interested,
and most do. This avoids having multiple event handler types and
fall-back/precedence logic in devfs.

This changes the kernel API for /dev cloning, and may affect third
party packages containg cloning kernel modules.

Requested by: phk
MFC after: 3 days


# f4f6abcb 30-Mar-2005 Poul-Henning Kamp <phk@FreeBSD.org>

Explicitly hold a reference to the cdev we have just cloned. This
closes the race where the cdev was reclaimed before it ever made it
back to devfs lookup.


# 098ca2bd 05-Jan-2005 Warner Losh <imp@FreeBSD.org>

Start each of the license/copyright comments with /*-, minor shuffle of lines


# f3732fd1 17-Jun-2004 Poul-Henning Kamp <phk@FreeBSD.org>

Second half of the dev_t cleanup.

The big lines are:
NODEV -> NULL
NOUDEV -> NODEV
udev_t -> dev_t
udev2dev() -> findcdev()

Various minor adjustments including handling of userland access to kernel
space struct cdev etc.


# 89c9c53d 16-Jun-2004 Poul-Henning Kamp <phk@FreeBSD.org>

Do the dreaded s/dev_t/struct cdev */
Bump __FreeBSD_version accordingly.


# 7b1f6286 23-May-2004 Doug Rabson <dfr@FreeBSD.org>

Don't try to copy out the result payload if there isn't one. This ioctl
interface really needs changing to split out the various async request
types.


# 03161bbc 22-May-2004 Doug Rabson <dfr@FreeBSD.org>

Change u_intXX_t to uintXX_t. Change a couple of 'unsigned long's to
uint32_t where appropriate.


# 10d3ed64 26-Mar-2004 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

MFp4: FireWire
* all
- s/__FUNCTION__/__func__/.
Submitted by: Stefan Farfeleder <stefan@fafoe.narf.at>
- Compatibility for RELENG_4 and DragonFly.

* firewire
- Timestamp just before queuing.
- Retry bus probe if it fails.
- Use device_printf() for debug message.
- Invalidiate CROM while update.
- Don't process minimum/invalid CROM.

* sbp
- Add ORB_SHORTAGE flag.
- Add sbp.tags tunable.
- Revive doorbell support. It's not enabled by default.


# a832f947 23-Mar-2004 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

Fix a bug introduced in rev 1.33(mega API change).
Because xfer->send.payload is a pointer to the buffer, '&' shouldn't be there.

Submitted by: John Weisgerber <weisgerberj@gsilumonics.com>
PR: misc/64623


# dc08ffec 21-Feb-2004 Poul-Henning Kamp <phk@FreeBSD.org>

Device megapatch 4/6:

Introduce d_version field in struct cdevsw, this must always be
initialized to D_VERSION.

Flip sense of D_NOGIANT flag to D_NEEDGIANT, this involves removing
four D_NOGIANT flags and adding 145 D_NEEDGIANT flags.


# c9c7976f 21-Feb-2004 Poul-Henning Kamp <phk@FreeBSD.org>

Device megapatch 1/6:

Free approx 86 major numbers with a mostly automatically generated patch.

A number of strategic drivers have been left behind by caution, and a few
because they still (ab)use their major number.


# 4c790222 22-Jan-2004 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

Add missing free() in exception handlers.

Reported by: Stanford Metacompilation research group


# 3a927c87 06-Nov-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

Respect a return code of fwmem_open().


# 102ebc1f 24-Oct-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

Fix for FW_ASYREQ.
- set send.pay_len correctly.
- copy response only if needed.
- remove unnecessary 'err = 0'.


# c4778b5d 01-Oct-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

MFp4: Change struct fw_xfer to reduce memory copy in fwmem_*() functions.
And many changes.

* all
- Major change of struct fw_xfer.
o {send,recv}.buf is splitted into hdr and payload.
o Remove unnecessary fields.
o spd is moved under send and recv.
- Remove unnecessary 'volatile' keyword.
- Add definition of rtcode and extcode.

* firewire.c
- Ignore FWDEVINVAL devices in fw_noderesolve_nodeid().
- Check the existance of the bind before call STAILQ_REMOVE().
- Fix bug in the fw_bindadd().
- Change element of struct fw_bind for simplicity.
- Check rtcode of response packet.
- Reduce split transaction timeout to 200 msec.
(100msec is the default value in the spec.)
- Set watchdog timer cycle to 10 Hz.
- Set xfer->tv just before calling fw_get_tlabel().

* fwohci.c
- Simplifies fwohci_get_plen().

* sbp.c
- Fix byte order of multibyte scsi_status informations.
- Split sbp.c and sbp.h.
- Unit number is not necessary for FIFO¤ address.
- Reduce LOGIN_DELAY and SCAN_DELAY to 1 sec.
- Add some constants defineded in SBP-2 spec.

* fwmem.c
- Introduce fwmem_strategy() and reduce memory copy.


# c727011a 01-Oct-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

Fix a bug in fwdev_clone().

Spotted by: grog


# a160e00e 04-Aug-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

Change device name notation.
- /dev/fw{,mem}X.Y represents the Y'th unit on the X'th bus.
- /dev/fw{,mem}X is an alias of fw{,mem}X.0 for compatibility.
- Clone devices.


# 6cada79a 31-Jul-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

Clean up fwdev.

Allocate iso DMA channel dynamically. This allows us to have more
/dev/fw* than number of DMA channels for asyn. transactions and etc.


# d7e486b4 12-Jul-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

Allow retrieval of local Configuration ROM.


# 85b2d114 21-Apr-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

Set the local bus address in xfer->dst.

Submitted by: Buzz Slye <buzz@gaia.arc.nasa.gov>


# e863fbcd 21-Apr-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

Remove unused code.


# 77ee030b 16-Apr-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

MFp4(simokawa_firewire):
Many internal structure changes for the FireWire driver.

- Compute CRC in CROM parsing.
- Add support for configuration ROM build.
- Simplify dummy buffer handling.
- busdma conversion
- Use swi_taskqueue_giant for -current. Mark the interrupt routine as MPSAFE.
- AR buffer handling.
Don't reallocate AR buffer but just recycle it.
Don't malloc and copy per packet in fwohci_arcv().
Pass packet to fw_rcv() using iovec.
Application must prepare receiving buffer in advance.
- Change fw_bind API so that application should pre-allocate xfer structure.
- Add fw_xfer_unload() for recycling struct fw_xfer.
- Add post_busreset hook
- Remove unused 'sub' and 'act_type' in struct fw_xfer.
- Remove npacket from struct fw_bulkxfer.
- Don't call back handlers in fwochi_arcv() if the packet has
not drained in AT queue
- Make firewire works on big endian platform.
- Use native endian for packet header and remove unnecessary ntohX/htonX.
- Remove FWXFERQ_PACKET mode. We don't use it anymore.
- Remove unnecessary restriction of FWSTMAXCHUNK.
- Don't set root node for phy config packet if the root node is
not cycle master capable but set myself for root node.
We should be the root node after next bus reset.

Spotted by: Yoshihiro Tabira <tabira@scd.mei.co.jp>
- Improve self id handling

Tested on: i386, sparc64 and i386 with forced bounce buffer


# 2b4601d1 05-Mar-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

MFp4(simokawa_sbp)

Improve if_fwe performance.
- Simplify mbuf handling by using bulkxfer.
Now, it uses mbuf clusters for RX buffer as usual ethernet drivers.
- Recycle struct xfer buffer and don't call malloc at runtime.
- Count input and output errors.
- Handle a mbuf chain longer than 6 correctly.
- Increase queue length.


# 7ac40f5f 02-Mar-2003 Poul-Henning Kamp <phk@FreeBSD.org>

Gigacommit to improve device-driver source compatibility between
branches:

Initialize struct cdevsw using C99 sparse initializtion and remove
all initializations to default values.

This patch is automatically generated and has been tested by compiling
LINT with all the fields in struct cdevsw in reverse order on alpha,
sparc64 and i386.

Approved by: re(scottl)


# 95e4359c 02-Mar-2003 Poul-Henning Kamp <phk@FreeBSD.org>

Use canonical format for cdevsw initialization.


# 521f364b 02-Mar-2003 Dag-Erling Smørgrav <des@FreeBSD.org>

More low-hanging fruit: kill caddr_t in calls to wakeup(9) / [mt]sleep(9).


# 45545499 26-Feb-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

MFp4(simokawa_sbp branch)

Improve SBP device probeing:
- Wait 2 sec before issuing LOGIN ORB expecting the reconnection
hold timer expires.
- Serialize management ORB and scanning LUN by CAM on each target.
This should fix the problem for devices which have multiple LUNs.
Test device is donated by: Jaye Mathisen <mrcpu@internetcds.com>
- Freeze SIM queue for 2 sec after BUS RESET.
- Retry with LOGIN rather than RECONNECT after LOGIN is not completed for
BUS RESET.
- Use appropriate CAM status for BUS RESET and DEVICE RESET.
- Let CAM to scan targets after BUS REST.
- Implement CAM scan target function.
- Keep our own devq freeze count.
- Let CAM to know that SBP does tagged queuing.

These should be merged to RELENG_4 before 4.8-RELEASE.


# 07159f9c 24-Feb-2003 Maxime Henrion <mux@FreeBSD.org>

Cleanup of the d_mmap_t interface.

- Get rid of the useless atop() / pmap_phys_address() detour. The
device mmap handlers must now give back the physical address
without atop()'ing it.
- Don't borrow the physical address of the mapping in the returned
int. Now we properly pass a vm_offset_t * and expect it to be
filled by the mmap handler when the mapping was successful. The
mmap handler must now return 0 when successful, any other value
is considered as an error. Previously, returning -1 was the only
way to fail. This change thus accidentally fixes some devices
which were bogusly returning errno constants which would have been
considered as addresses by the device pager.
- Garbage collect the poorly named pmap_phys_address() now that it's
no longer used.
- Convert all the d_mmap_t consumers to the new API.

I'm still not sure wheter we need a __FreeBSD_version bump for this,
since and we didn't guarantee API/ABI stability until 5.1-RELEASE.

Discussed with: alc, phk, jake
Reviewed by: peter
Compile-tested on: LINT (i386), GENERIC (alpha and sparc64)
Runtime-tested on: i386


# 233b1b97 09-Feb-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

Add new ioctl to specify target EUI64 for fwmem.


# beb19fc5 03-Feb-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

Remove unnecessary M_NOWAIT.


# 48249fe0 03-Feb-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

- Take malloc type as an argument in fw_xfer_alloc().
- Fix overwrite problem of freed buffers. It was rare but could happen
when fwohci_arcv() is called before fwohci_txd() is called for
the transcation.
- Drain AT queues and pend AR queues on SID receive rather than BUS reset to
make sure DMA actually stops.
- Do agent reset in sbp_timeout().


# 5166f1df 01-Feb-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

Define new malloc type M_FW and use it.


# 0981f5f0 01-Feb-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

- replace timeout with callout_*.
- replace TAILQ with STAILQ for device list.
- some clean up.


# 958c7749 29-Jan-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

Restart cycle master after bus manager election.
This should fix the IR(and maybe IT) problem when
the host becames the bus manager.
- rename fw_noderesolve() to fw_noderesolve_eui64() and add
fw_noderesolve_nodeid().


# c3e9e255 28-Jan-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

- Allow multiple packets read/write for IR/IT to reduce system call.
- Remove unused variables.


# 5a7ba74d 26-Jan-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

- Improve IT/IR DMA queue management.
- Improve debug message for mbuf handling.
- Wait 1 sec for DMA stop in fwohci_i{t,r}x_disable() before freeing buffers.


# c547b896 25-Jan-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

Change API of FW_GDEVLST ioctl.
- include information about itself.
- define struct fw_devinfo and use it in struct fw_devlstreq.
- unify EUI64 representation using struct fw_eui64.


# 9190691b 24-Jan-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

Remove FW_SSTDV ioctl. It is not used anymore.


# ae8c82bb 17-Jan-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

Replace M_DONTWAIT with M_NOWAIT for malloc().

Pointed out by: nate@root.org


# 7643dc18 16-Jan-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

Detect underrun of IT queue for debugging.
Add some comments.


# e2ad5d6e 16-Jan-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

Improve memory allocation.
- Don't use contigmalloc() and allocate page by page to avoid
allocation failure.
- allocate buffer by PAGE_SIZE.


# 6d6f7f28 14-Jan-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

Add DV_PAL for PAL users.


# 0aaa9a23 13-Jan-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

Minimal fix for DV part.
- Don't panic on contigmalloc failure.
- Calculate timestamp by feedforward rather than feedback which depends on
unreliable interrupt timing.
- Overwrite timestamp in CIP header correctly.
- Add debug code for timestamp synchronization.
- Add comments.


# 17faeefc 06-Jan-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

Use device_printf() and s/fc->dev/fc->bdev/.


# bce5729a 04-Jan-2003 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

- Remove speed_map API because speed_map is obsoleted by 1394a.
- Add definition of OHCI_HCC_BIBIV in fwohcireg.h.


# c57d646f 12-Nov-2002 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

fix wording.


# 17821895 12-Nov-2002 Hidetoshi Shimokawa <simokawa@FreeBSD.org>

Split userland services to fwdev.c.