Home | History | Annotate | Download | only in i2o
History log of /src/sys/dev/i2o/ld_iop.c
RevisionDateAuthorComments
 1.42  13-Apr-2025  rin ld(4): Convert blkno argument for sc_dump() to daddr_t

PR kern/59153

(1) For backends that accept 64-bit block address, i.e.,
nvme(4), virtio(4), aac(4), iop(4), and mainbus(usermode/4),
this should enable to dump beyond 2Gi blocks.

(2) sdmmc(4) backend allows to dump up to the last block.

(3) For other backends, block address is handled as `int`.
Some of them may support blocks up to 4Gi, but I do not have
enough time to examine datasheets. So, continue to reject >2Gi
blocks as before.

XXX
This is KABI change, and cannot be pulled up into netbsd-{10,9}.

XXX
Compile-test only (for amd64/ALL) due to lack of large SSDs ;)

Thanks mlelstv@ for discussion and careful review!!
 1.41  08-Sep-2024  rillig fix a/an grammar in obvious cases
 1.40  31-May-2023  ad Fix typo.
 1.39  09-Aug-2017  mlelstv While ld(4) is MP safe, many backends are not.

Add a flag for backends that are MP safe. Take KERNEL_LOCK when calling
into a backend that doesn't have the flag set. Do the same for the
discard routine.

Fixes PR 52462.
 1.38  09-Aug-2017  mlelstv Don't wait for allocation in polling mode.
 1.37  27-Feb-2017  jdolecek branches: 1.37.6;
refactor the ld(4) DIOCCACHESYNC hook into general ioctl hook, so that attachments
would be able to implement arbitrary other ioctls
 1.36  16-Sep-2016  jdolecek branches: 1.36.2;
modify ldattach() to have default strategy as a parameter
 1.35  13-Apr-2015  riastradh branches: 1.35.2;
Convert sys/dev to use <sys/rndsource.h>.
 1.34  02-Feb-2012  tls branches: 1.34.6; 1.34.24;
Entropy-pool implementation move and cleanup.

1) Move core entropy-pool code and source/sink/sample management code
to sys/kern from sys/dev.

2) Remove use of NRND as test for presence of entropy-pool code throughout
source tree.

3) Remove use of RND_ENABLED in device drivers as microoptimization to
avoid expensive operations on disabled entropy sources; make the
rnd_add calls do this directly so all callers benefit.

4) Fix bug in recent rnd_add_data()/rnd_add_uint32() changes that might
have lead to slight entropy overestimation for some sources.

5) Add new source types for environmental sensors, power sensors, VM
system events, and skew between clocks, with a sample implementation
for each.

ok releng to go in before the branch due to the difficulty of later
pullup (widespread #ifdef removal and moved files). Tested with release
builds on amd64 and evbarm and live testing on amd64.
 1.33  15-Dec-2008  mhitch branches: 1.33.14; 1.33.18;
More device_t/softc split fallout, this time in iop(4). Fix from
Juan Romero Pardines. Tested on alpha by me.
 1.32  09-Sep-2008  tron branches: 1.32.2; 1.32.4;
Complete device_t/softc split for the ld(4) attachments. This should
prevent crashes while attaching a drive.

Patch supplied by Juan RP in PR kern/39468.
 1.31  08-Sep-2008  gmcgarry Replace most gcc-specific __attribute__ uses with BSD-style sys/cdef.h
preprocessor macros.
 1.30  11-Aug-2008  simonb Add a flags argument to the ld(4) flush handlers, and call these with a
"poll" flag when called from ld_shutdown().

This is the infrastructure part of kern/38655 - in itself it doesn't
fix the panic referenced in that PR.

XXX: At least ld_twa.c and perhaps ld_iop.c and ld_icp.c need to
check for this new poll flag and do something useful.
 1.29  10-May-2008  simonb branches: 1.29.2; 1.29.4;
Fix a tyop in a comment.
 1.28  28-Apr-2008  martin branches: 1.28.2;
Remove clause 3 and 4 from TNF licenses
 1.27  06-Apr-2008  cegger branches: 1.27.2; 1.27.4;
use aprint_*_dev and device_xname
 1.26  19-Oct-2007  ad branches: 1.26.16;
machine/{bus,cpu,intr}.h -> sys/{bus,cpu,intr}.h
 1.25  29-Jul-2007  ad branches: 1.25.4; 1.25.6; 1.25.10; 1.25.12;
It's not a good idea for device drivers to modify b_flags, as they don't
need to understand the locking around that field. Instead of setting
B_ERROR, set b_error instead. b_error is 'owned' by whoever completes
the I/O request.
 1.24  16-Jun-2007  ad branches: 1.24.2;
- Merge changes from the vmlocking branch.
- Eliminate opt_i2o.h, since I2OVERBOSE is gone.
 1.23  16-Nov-2006  christos branches: 1.23.8; 1.23.10;
__unused removal on arguments; approved by core.
 1.22  12-Oct-2006  christos - sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386
 1.21  14-Apr-2006  christos branches: 1.21.8; 1.21.10;
Coverity CID 1532: Off-by-one array overrun.
 1.20  29-Mar-2006  thorpej Use device_private().
 1.19  25-Mar-2006  thorpej Use device_parent().
 1.18  11-Dec-2005  christos branches: 1.18.4; 1.18.6; 1.18.8; 1.18.10; 1.18.12;
merge ktrace-lwp.
 1.17  30-May-2005  christos branches: 1.17.2;
add const
 1.16  27-Feb-2005  perry nuke trailing whitespace
 1.15  28-Oct-2004  yamt branches: 1.15.4; 1.15.6;
move buffer queue related stuffs from buf.h to their own header, bufq.h.
 1.14  19-Apr-2004  wiz Spell removable with only two es. Inspired by jmc@openbsd.
 1.13  02-Oct-2002  thorpej branches: 1.13.6;
Add trailing ; to CFATTACH_DECL.
 1.12  30-Sep-2002  thorpej Use CFATTACH_DECL().
 1.11  27-Sep-2002  thorpej Declare all cfattach structures const.
 1.10  13-Nov-2001  lukem add RCSID
 1.9  22-Aug-2001  ad branches: 1.9.6;
Parameter group changes:

- Do FIELD_SET correctly for scalar types.
- Add some basic table ops.
- Push error reporting back into iop.c.
- Add some field index and (yet more) LAN defs to i2o.h.
 1.8  04-Aug-2001  ad Some changes from OpenBSD, and some of my own:

- More SCSI port defs.
- Nuke vtophys().
- Release resources in iop_init() upon failure.
- Don't use a message wrapper when initalising the outbound FIFO.
- A couple of field size/endian fixes.
- Just use iop_post() when we don't need special handling.
- IM_DISCARD is now pointless, since we don't queue at the driver level.
- Map data transfers from/to userspace directly.
- A few comment and stylistic changes.
 1.7  10-Jun-2001  ad branches: 1.7.2;
Centralise the geometry fudge.
 1.6  20-Mar-2001  ad Major update; basically, improve performance somewhat and play nicer with
Intel and AMI IOPs. There still exists one nasty problem with Intel adapters
when under load, which I'm working on.
 1.5  06-Feb-2001  ad branches: 1.5.2;
Sync with ld.c.
 1.4  03-Jan-2001  ad Make dumps work, and put the first part of detach into ld.c.
 1.3  03-Dec-2000  ad branches: 1.3.2;
Oops.
 1.2  03-Dec-2000  ad - Only configure un-claimed devices. Implement re-configuration.
- Adhere to the spec better in some places. Also, work around some quirks
noted in the Linux I2O code.
- Register event handlers for the executive and RBS devices.
- Fix a number of buglets and tidy a little.
- Implement a message pass-through interface and some other useful ioctls.
 1.1  26-Nov-2000  ad lsu -> ld, by popular request.
 1.3.2.6  01-Apr-2001  ad Sync w/current.
 1.3.2.5  27-Mar-2001  bouyer Sync with HEAD.
 1.3.2.4  11-Feb-2001  bouyer Sync with HEAD.
 1.3.2.3  05-Jan-2001  bouyer Sync with HEAD
 1.3.2.2  08-Dec-2000  bouyer Sync with HEAD.
 1.3.2.1  03-Dec-2000  bouyer file ld_iop.c was added on branch thorpej_scsipi on 2000-12-08 09:12:19 +0000
 1.5.2.6  18-Oct-2002  nathanw Catch up to -current.
 1.5.2.5  14-Nov-2001  nathanw Catch up to -current.
 1.5.2.4  21-Sep-2001  nathanw Catch up to -current.
 1.5.2.3  24-Aug-2001  nathanw Catch up with -current.
 1.5.2.2  21-Jun-2001  nathanw Catch up to -current.
 1.5.2.1  09-Apr-2001  nathanw Catch up with -current.
 1.7.2.3  10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.7.2.2  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.7.2.1  25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.9.6.2  25-Oct-2001  he Pull up revisions 1.1-1.9 (requested by ad):
Add Mylex DACC960, CAC-EISA, and I2O block/SCSI drivers.
 1.9.6.1  22-Aug-2001  he file ld_iop.c was added on branch netbsd-1-5 on 2001-10-25 17:54:01 +0000
 1.13.6.6  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.13.6.5  04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.13.6.4  02-Nov-2004  skrll Sync with HEAD.
 1.13.6.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.13.6.2  18-Sep-2004  skrll Sync with HEAD.
 1.13.6.1  03-Aug-2004  skrll Sync with HEAD
 1.15.6.1  19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.15.4.1  29-Apr-2005  kent sync with -current
 1.17.2.4  27-Oct-2007  yamt sync with head.
 1.17.2.3  03-Sep-2007  yamt sync with head.
 1.17.2.2  30-Dec-2006  yamt sync with head.
 1.17.2.1  21-Jun-2006  yamt sync with head.
 1.18.12.3  24-May-2006  tron Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
 1.18.12.2  31-Mar-2006  tron Merge 2006-03-31 NetBSD-current into the "peter-altq" branch.
 1.18.12.1  28-Mar-2006  tron Merge 2006-03-28 NetBSD-current into the "peter-altq" branch.
 1.18.10.1  19-Apr-2006  elad sync with head.
 1.18.8.2  24-May-2006  yamt sync with head.
 1.18.8.1  01-Apr-2006  yamt sync with head.
 1.18.6.1  22-Apr-2006  simonb Sync with head.
 1.18.4.1  09-Sep-2006  rpaulo sync with head
 1.21.10.2  10-Dec-2006  yamt sync with head.
 1.21.10.1  22-Oct-2006  yamt sync with head
 1.21.8.1  18-Nov-2006  ad Sync with head.
 1.23.10.1  11-Jul-2007  mjf Sync with head.
 1.23.8.5  23-Oct-2007  ad Sync with head.
 1.23.8.4  19-Aug-2007  ad - Back out the biodone() changes.
- Eliminate B_ERROR (from HEAD).
 1.23.8.3  15-Jul-2007  ad Sync with head.
 1.23.8.2  27-May-2007  ad Checkpoint work in progress. Seems to break block I/O but I am not sure
why yet:

- Avoid a NULL pointer dereference in bus_dmamap_sync.
- MP safety changes, incomplete.
 1.23.8.1  13-May-2007  ad - Pass the error number and residual count to biodone(), and let it handle
setting error indicators. Prepare to eliminate B_ERROR.
- Add a flag argument to brelse() to be set into the buf's flags, instead
of doing it directly. Typically used to set B_INVAL.
- Add a "struct cpu_info *" argument to kthread_create(), to be used to
create bound threads. Change "bool mpsafe" to "int flags".
- Allow exit of LWPs in the IDL state when (l != curlwp).
- More locking fixes & conversion to the new API.
 1.24.2.1  15-Aug-2007  skrll Sync with HEAD.
 1.25.12.2  29-Jul-2007  ad It's not a good idea for device drivers to modify b_flags, as they don't
need to understand the locking around that field. Instead of setting
B_ERROR, set b_error instead. b_error is 'owned' by whoever completes
the I/O request.
 1.25.12.1  29-Jul-2007  ad file ld_iop.c was added on branch matt-mips64 on 2007-07-29 12:50:21 +0000
 1.25.10.1  25-Oct-2007  bouyer Sync with HEAD.
 1.25.6.1  06-Nov-2007  matt sync with HEAD
 1.25.4.1  26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.26.16.3  17-Jan-2009  mjf Sync with HEAD.
 1.26.16.2  28-Sep-2008  mjf Sync with HEAD.
 1.26.16.1  02-Jun-2008  mjf Sync with HEAD.
 1.27.4.2  04-May-2009  yamt sync with head.
 1.27.4.1  16-May-2008  yamt sync with head.
 1.27.2.1  18-May-2008  yamt sync with head.
 1.28.2.3  24-Sep-2008  wrstuden Merge in changes between wrstuden-revivesa-base-2 and
wrstuden-revivesa-base-3.
 1.28.2.2  18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.28.2.1  23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.29.4.1  19-Oct-2008  haad Sync with HEAD.
 1.29.2.2  11-Jun-2008  simonb Revert my suggested fix for kern/38655 - that shouldn't have snuck in
to this branch.
 1.29.2.1  10-Jun-2008  simonb Initial commit of Wasabi System's WAPBL (Write Ahead Physical Block
Logging) journaling code. Originally written by Darrin B. Jewell
while at Wasabi and updated to -current by Antti Kantee, Andy Doran,
Greg Oster and Simon Burge.

Still a number of issues - look in doc/BRANCHES for "simonb-wapbl"
for more info.
 1.32.4.1  18-Dec-2008  snj Pull up following revision(s) (requested by mhitch in ticket #190):
sys/dev/i2o/ld_iop.c: revision 1.33
More device_t/softc split fallout, this time in iop(4). Fix from
Juan Romero Pardines. Tested on alpha by me.
 1.32.2.1  19-Jan-2009  skrll Sync with HEAD.
 1.33.18.1  18-Feb-2012  mrg merge to -current.
 1.33.14.1  17-Apr-2012  yamt sync with head
 1.34.24.3  28-Aug-2017  skrll Sync with HEAD
 1.34.24.2  05-Oct-2016  skrll Sync with HEAD
 1.34.24.1  06-Jun-2015  skrll Sync with HEAD
 1.34.6.1  03-Dec-2017  jdolecek update from HEAD
 1.35.2.2  20-Mar-2017  pgoyette Sync with HEAD
 1.35.2.1  04-Nov-2016  pgoyette Sync with HEAD
 1.36.2.1  21-Apr-2017  bouyer Sync with HEAD
 1.37.6.1  01-Sep-2017  martin Pull up following revision(s) (requested by mlelstv in ticket #261):
sys/dev/sdmmc/ld_sdmmc.c: revision 1.32
sys/dev/sdmmc/ld_sdmmc.c: revision 1.33
sys/dev/sdmmc/ld_sdmmc.c: revision 1.34
sys/dev/sdmmc/sdmmc_mem.c: revision 1.62
sys/dev/i2o/ld_iop.c: revision 1.39
sys/dev/ld.c: revision 1.102
sys/dev/ld.c: revision 1.103
sys/dev/dksubr.c: revision 1.98
sys/dev/dksubr.c: revision 1.99
sys/dev/sdmmc/sdmmcvar.h: revision 1.29
sys/dev/ic/ld_nvme.c: revision 1.17
sys/dev/ldvar.h: revision 1.31
sys/dev/ldvar.h: revision 1.32
sys/dev/ic/ld_cac.c: revision 1.31
sys/dev/pci/ld_virtio.c: revision 1.16
While ld(4) is MP safe, many backends are not.
Add a flag for backends that are MP safe. Take KERNEL_LOCK when calling
into a backend that doesn't have the flag set. Do the same for the
discard routine.
Fixes PR 52462.
Defer sdmmc discard operations to the sdmmc task queue. Fixes a panic
introduced by ld.c r1.102.
validate length for discard operation and split operation when byte length
doesn't fit into 'int'.
make the sc_discard interface for the ld backend asynchronous and
signal completion through new callback lddiscardend. Use a standard
struct buf to pass disk address and range instead of two off_t values.
make lddiscard synchronous again. This is a requirement of the current
ffs discard code.
Initialize error also in the case where len=0, which just succeeds.
while here, assert that the len is indeed non-negative. this is already
confirmed by sys_fdiscard, but let's be sure.
reported by: GCC, but with different compile flags

RSS XML Feed