Home | History | Annotate | Download | only in dev
History log of /src/sys/arch/hp300/dev/rdvar.h
RevisionDateAuthorComments
 1.27  23-Nov-2022  tsutsui Remove now unused buffer members from softc prepared only for rdreset().
 1.26  09-Jul-2021  tsutsui Add support of multiple rd(4) disks on all punits for HPDisk.

Special thanks to Anders Gustafsson, the author of "HPDisk"
(GPIB disk emulator) http://www.dalton.ax/hpdisk/
for providing bare boards and improving firmwares for NetBSD/hp300.
 1.25  05-Jul-2021  tsutsui Cleanup duplicated CS/80 indentify structures. From OpenBSD.

https://marc.info/?l=openbsd-cvs&m=113227249626888&w=2
> Define the CS/80 identify structure only once and correctly, instead of
> duplicating it in every CS/80 driver and using an hardcoded number for
> its size.
> No functional change.

https://marc.info/?l=openbsd-cvs&m=113273001020159&w=2
> Pick HP-IB describe structures changes from main kernel code here as well.
 1.24  04-Jun-2021  tsutsui Consistently use #define<tab> as rdreg.h.
 1.23  14-Apr-2015  riastradh branches: 1.23.22; 1.23.34; 1.23.38;
Include <sys/rndsource.h> where it is actually used.

I had removed <sys/rnd.h> from files that didn't mention anything of
the rnd(9) API. But they included other files which assumed
<sys/rnd.h> had already been included.
 1.22  02-Feb-2012  tls branches: 1.22.6; 1.22.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.21  19-Nov-2011  tls branches: 1.21.2;
First step of random number subsystem rework described in
<20111022023242.BA26F14A158@mail.netbsd.org>. This change includes
the following:

An initial cleanup and minor reorganization of the entropy pool
code in sys/dev/rnd.c and sys/dev/rndpool.c. Several bugs are
fixed. Some effort is made to accumulate entropy more quickly at
boot time.

A generic interface, "rndsink", is added, for stream generators to
request that they be re-keyed with good quality entropy from the pool
as soon as it is available.

The arc4random()/arc4randbytes() implementation in libkern is
adjusted to use the rndsink interface for rekeying, which helps
address the problem of low-quality keys at boot time.

An implementation of the FIPS 140-2 statistical tests for random
number generator quality is provided (libkern/rngtest.c). This
is based on Greg Rose's implementation from Qualcomm.

A new random stream generator, nist_ctr_drbg, is provided. It is
based on an implementation of the NIST SP800-90 CTR_DRBG by
Henric Jungheim. This generator users AES in a modified counter
mode to generate a backtracking-resistant random stream.

An abstraction layer, "cprng", is provided for in-kernel consumers
of randomness. The arc4random/arc4randbytes API is deprecated for
in-kernel use. It is replaced by "cprng_strong". The current
cprng_fast implementation wraps the existing arc4random
implementation. The current cprng_strong implementation wraps the
new CTR_DRBG implementation. Both interfaces are rekeyed from
the entropy pool automatically at intervals justifiable from best
current cryptographic practice.

In some quick tests, cprng_fast() is about the same speed as
the old arc4randbytes(), and cprng_strong() is about 20% faster
than rnd_extract_data(). Performance is expected to improve.

The AES code in src/crypto/rijndael is no longer an optional
kernel component, as it is required by cprng_strong, which is
not an optional kernel component.

The entropy pool output is subjected to the rngtest tests at
startup time; if it fails, the system will reboot. There is
approximately a 3/10000 chance of a false positive from these
tests. Entropy pool _input_ from hardware random numbers is
subjected to the rngtest tests at attach time, as well as the
FIPS continuous-output test, to detect bad or stuck hardware
RNGs; if any are detected, they are detached, but the system
continues to run.

A problem with rndctl(8) is fixed -- datastructures with
pointers in arrays are no longer passed to userspace (this
was not a security problem, but rather a major issue for
compat32). A new kernel will require a new rndctl.

The sysctl kern.arandom() and kern.urandom() nodes are hooked
up to the new generators, but the /dev/*random pseudodevices
are not, yet.

Manual pages for the new kernel interfaces are forthcoming.
 1.20  08-Feb-2011  rmind branches: 1.20.4;
Remove clause 3 (UCB advertising clause) from the University of Utah
copyright. Confirmed by Mike Hibler, mike at cs.utah.edu - thanks!
Also, merge UCB and Utah copyright texts back into one, as they
originally were.

Extra verification by snj@.
 1.19  11-Jan-2009  tsutsui branches: 1.19.6; 1.19.8; 1.19.10;
Add casts to int to rdunit() and rdpart() macro to suppress a warning
since they are unlikely 64 bits.

XXX: actually these should be DISKUNIT() and DISKPART() in <sys/disklabel.h>.
 1.18  29-Mar-2008  tsutsui branches: 1.18.4; 1.18.12;
Split device_t/softc, and misc cosmetic changes.
 1.17  11-Dec-2005  christos branches: 1.17.74;
merge ktrace-lwp.
 1.16  15-Oct-2005  yamt - change the way to specify a bufq strategy. (by string rather than by number)
- rather than embedding bufq_state in driver softc,
have a pointer to the former.
- move bufq related functions from kern/subr_disk.c to kern/subr_bufq.c.
- rename method to strategy for consistency.
- move some definitions which don't need to be exposed to the rest of kernel
from sys/bufq.h to sys/bufq_impl.h.
(is it better to move it to kern/ or somewhere?)
- fix some obvious breakage in dev/qbus/ts.c. (not tested)
 1.15  02-Jun-2005  tsutsui branches: 1.15.2;
Add const.
 1.14  28-Aug-2004  thorpej Remove the last vestiges of COMPAT_NOLABEL. It's been 10 years; label
your disks already.
 1.13  28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.12  07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.11  26-Jul-2002  hannken branches: 1.11.6;
Convert to new device buffer queue interface.

Approved by: Jason R. Thorpe <thorpej@netbsd.org>
 1.10  10-Oct-2000  he branches: 1.10.4; 1.10.8; 1.10.16;
Add randomness sampling from hil, sd and rd devices.
 1.9  23-Mar-2000  thorpej branches: 1.9.4;
New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
resource allocation.
- Insertion and removal of callouts is constant time, important as
this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
 1.8  21-Jan-2000  thorpej Update for sys/buf.h/disksort_*() changes.
 1.7  31-Mar-1997  scottr branches: 1.7.16; 1.7.22;
Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.6  30-Jan-1997  thorpej Convert to new-style autoconfiguration; old-style config is no longer
supported.
 1.5  06-Jun-1996  thorpej Remove the old-style disk instrumentation support. Nothing uses it
anymore.
 1.4  07-Jan-1996  thorpej branches: 1.4.4;
New generic disk framework. Highlights:

- New metrics handling. Metrics are now kept in the new
`struct disk'. Busy time is now stored as a timeval, and
transfer count in bytes.

- Storage for disklabels is now dynamically allocated, so that
the size of the disk structure is not machine-dependent.

- Several new functions for attaching and detaching disks, and
handling metrics calculation.

Old-style instrumentation is still supported in drivers that did it before.
However, old-style instrumentation is being deprecated, and will go away
once the userland utilities are updated for the new framework.

For usage and architectural details, see the forthcoming disk(9) manual
page.
 1.3  19-Nov-1995  thorpej Re-arrange things such that we can print out disk geometry regardless of
COMPAT_NOLABEL.

XXX One day when the world doesn't assume DEV_BSIZE bytes/sector, we'll be
able to actually use the stuff sensed from the drive, rather than a table.
 1.2  26-Oct-1994  cgd new RCS ID format.
 1.1  23-May-1994  mycroft Merge with 4.4-Lite.
 1.4.4.1  06-Jun-1996  thorpej Update from trunk:

Remove old-style disk instrumentation support. Nothing uses it
anymore.
 1.7.22.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.7.16.1  12-Oct-2000  he Pull up revision 1.10 (requested by he):
Add randomness sampling for hil, sd and rd on the hp300 port.
 1.9.4.1  18-Oct-2000  tv Pullup 1.10 [he]:
Add randomness sampling from hil, sd and rd devices.
 1.10.16.1  30-Aug-2002  gehenna catch up with -current.
 1.10.8.1  01-Aug-2002  nathanw Catch up to -current.
 1.10.4.1  06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.11.6.5  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.11.6.4  21-Sep-2004  skrll Fix the sync with head I botched.
 1.11.6.3  18-Sep-2004  skrll Sync with HEAD.
 1.11.6.2  03-Sep-2004  skrll Sync with HEAD
 1.11.6.1  03-Aug-2004  skrll Sync with HEAD
 1.15.2.1  21-Jun-2006  yamt sync with head.
 1.17.74.2  17-Jan-2009  mjf Sync with HEAD.
 1.17.74.1  03-Apr-2008  mjf Sync with HEAD.
 1.18.12.1  19-Jan-2009  skrll Sync with HEAD.
 1.18.4.1  04-May-2009  yamt sync with head.
 1.19.10.1  17-Feb-2011  bouyer Sync with HEAD
 1.19.8.1  06-Jun-2011  jruoho Sync with HEAD.
 1.19.6.1  05-Mar-2011  rmind sync with head
 1.20.4.1  17-Apr-2012  yamt sync with head
 1.21.2.1  18-Feb-2012  mrg merge to -current.
 1.22.24.1  06-Jun-2015  skrll Sync with HEAD
 1.22.6.1  03-Dec-2017  jdolecek update from HEAD
 1.23.38.1  06-Jun-2021  cjep sync with head
 1.23.34.2  01-Aug-2021  thorpej Sync with HEAD.
 1.23.34.1  17-Jun-2021  thorpej Sync w/ HEAD.
 1.23.22.2  06-Dec-2022  martin Pull up following revision(s) (requested by tsutsui in ticket #1552):

sys/arch/hp300/dev/rd.c: revision 1.120
sys/arch/hp300/dev/rd.c: revision 1.121
sys/arch/hp300/dev/rd.c: revision 1.122
sys/arch/hp300/dev/rd.c: revision 1.123
sys/arch/hp300/dev/rd.c: revision 1.124
sys/arch/hp300/dev/rdreg.h: revision 1.19
sys/arch/hp300/dev/rd.c: revision 1.111
sys/arch/hp300/dev/rd.c: revision 1.112
sys/arch/hp300/dev/rd.c: revision 1.113
sys/arch/hp300/stand/common/rd.c: revision 1.12
sys/arch/hp300/dev/rd.c: revision 1.114
sys/arch/hp300/stand/common/rd.c: revision 1.13
sys/arch/hp300/dev/rd.c: revision 1.115
sys/arch/hp300/stand/common/rd.c: revision 1.14
sys/arch/hp300/dev/rd.c: revision 1.116
sys/arch/hp300/stand/common/rd.c: revision 1.15
sys/arch/hp300/dev/rd.c: revision 1.117
sys/arch/hp300/dev/rd.c: revision 1.118
sys/arch/hp300/dev/rd.c: revision 1.119
sys/arch/hp300/dev/rdvar.h: revision 1.27
sys/arch/hp300/dev/rdreg.h: revision 1.20

Sync a list of HP-IB disk IDs with kernel's one.
Now bootloader can boot from 2202A, 7908A, 7911A, and 7941A.
Tested on 425t and HPDisk.

Make local variables static and read only ones const.

Use common macro for numbers of cylinders and blocks for HP-IB disks.
No binary changes.

Fix "rd(4) at punits not configured on HPDisk are misprobed" problem.
- check not only stat value returned by C_QSTAT command against
each punit but also desc.d_name returned by C_DESC command
because it looks HPDisk responds to commands against punits supported
but not-configured punits at 1-3
- prepare rdreset_unit() function to manage reset punit ops during
probe without valid softc

The stragety is taken from OpenBSD with several modification.
Tested on 425t with real 9122D and HPDisk emulating two 7937H drives.
Should be pulled up to netbsd-9.

Remove now unused buffer members from softc prepared only for rdreset().

Use proper integer types for HP-IB xfer parameters.
No visible regression on 425t and HPDisk.

Sync with rdreg.h integer type changes.

Remove unnecessary declarations.

Check bounds of RAW_PART by bounds_check_with_mediasize() as other drivers.
With this check, dd(1) without a count value against a raw partition
is terminated properly at the end of media. Tested on 425t and HPDisk.
Should be pulled up to netbsd-9.

Check bounds of each partition by MI bounds_check_with_label(9).
The previous implementation was committed in rev 1.26 about 26 years ago
and it looks there is no quirk to use the old MD one.

Pass a correct dev_t arg to disk_ioctl().
Probably harmless.

Remove a duplicated static function declaration.

Set disk_geom parameters required by DIOCGPARTINFO in disk_ioctl().
With this change raid(4) no longer complains before mountroot:
RAIDframe: can't get disk size for dev rd0 (22)
Should be pulled up to netbsd-9.

Use proper RAW_PART macro rather than a magic number.

Remove more duplicated static function declarations.

Misc KNF and cosmetics.

Add empty DIOCCACHESYNC ioctl(2) for rd(4).
Without this raid(4) always complains on various raidctl(8) ops:
raid0: cache flush[0] to component 0 failed (22)
RAID1 configured by raid(4) just works HP-IB disks on hp300.

Explicitly include <sys/kernel.h> for hz(9) as man pages says.
XXX: it looks sys/param.h r1.615 and later also has extern int hz
 1.23.22.1  14-Jul-2021  martin Pull up following revision(s) (requested by tsutsui in ticket #1323):

sys/arch/hp300/dev/rd.c: revision 1.109
sys/arch/hp300/stand/Makefile.buildboot: revision 1.37
sys/arch/hp300/stand/common/ct.c: revision 1.8
sys/arch/hp300/dev/hpibvar.h: revision 1.22
sys/arch/hp300/dev/ct.c: revision 1.62
sys/arch/hp300/dev/hpibvar.h: revision 1.23
sys/arch/hp300/dev/ct.c: revision 1.63
sys/arch/hp300/dev/hpibvar.h: revision 1.24
sys/arch/hp300/dev/mt.c: revision 1.55
sys/arch/hp300/dev/rdreg.h: revision 1.14
sys/arch/hp300/dev/hpib.c: revision 1.43 (via patch)
sys/arch/hp300/dev/rdreg.h: revision 1.15
sys/arch/hp300/dev/rdreg.h: revision 1.16
sys/arch/hp300/dev/rdreg.h: revision 1.17
etc/etc.hp300/MAKEDEV.conf: revision 1.15
sys/arch/hp300/stand/common/hpibvar.h: revision 1.6
sys/arch/hp300/stand/common/rd.c: revision 1.11
sys/arch/hp300/dev/ctreg.h: revision 1.11
sys/arch/hp300/dev/rdvar.h: revision 1.24
sys/arch/hp300/dev/rdvar.h: revision 1.25
sys/arch/hp300/dev/rdvar.h: revision 1.26
sys/arch/hp300/dev/rd.c: revision 1.103
sys/arch/hp300/dev/rd.c: revision 1.104
sys/arch/hp300/dev/rd.c: revision 1.105
sys/arch/hp300/dev/rd.c: revision 1.106
sys/arch/hp300/dev/rd.c: revision 1.107
sys/arch/hp300/dev/rd.c: revision 1.108

Consistently use #define<tab> here.

Consistently use #define<tab> as rdreg.h.

No need to bother to use aprint_debug(9) inside #ifdef DEBUG block.

Pull HP-IB probe fixes from OpenBSD/hp300.
https://marc.info/?l=openbsd-cvs&m=113217630426615&w=2

Overhaul the way HP-IB devices are probed. We will now do an exhaustive
probe of the (slave, punit) tuple space, since this is the only way we
can get a dual disk or dual tape enclosure to attach two devices of the
same kind.

This allows using multiple rd(4) disk images on the same slave emulated
by HPDisk (and probably the real 9122D with dual floppy disk drives).

Thanks to Miod Vallat for suggesting this fix.

Move attach messages from common rdident() to explicit rdattach().

Cleanup duplicated CS/80 indentify structures. From OpenBSD.
https://marc.info/?l=openbsd-cvs&m=113227249626888&w=2

Define the CS/80 identify structure only once and correctly, instead of
duplicating it in every CS/80 driver and using an hardcoded number for
its size.
No functional change.
https://marc.info/?l=openbsd-cvs&m=113273001020159&w=2

Pick HP-IB describe structures changes from main kernel code here as well.

Add support of multiple rd(4) disks on all punits for HPDisk.

Special thanks to Anders Gustafsson, the author of "HPDisk"
(GPIB disk emulator) http://www.dalton.ax/hpdisk/
for providing bare boards and improving firmwares for NetBSD/hp300.

Specify -fno-unwind-tables to shrink binaries.

Before:
text data bss dec hex filename
77902 4328 137120 219350 358d6 uboot

After:
text data bss dec hex filename
64186 4328 137120 205634 32342 uboot

Create rd3 device nodes, for HPDisk.

Add Device and drive info of 2202A, 7908A, 7911A, and 7941A.

Geometries and description info are taken from hpdrive.ini.sample
in HPDrive. Briefly tested on HPDisk.

Print rd(4) capacity and geometry info as sd(4) and wd(4) do.

Before:
rd0 at hpibbus1 slave 0 punit 0: 7937H
rd0: 698 cylinders, 13 heads, 1116102 blocks, 512 bytes/block

After:
rd0 at hpibbus1 slave 0 punit 0: 7937H
rd0: 544 MB, 698 cyl, 13 head, 123 sec, 512 bytes/block x 1116102 blocks

RSS XML Feed