Pass sc->dev rather than a bogusly cast pccard_softc *sc.
This allows us to insert and remove cards w/o panicing the kernel.
However, the cis isn't mapped in, so the pccard_scan_cis function
fails.
- Request the maximum number of LUNs on a device if it is
a Bulk-Only device.
- Handle NO_TEST_UNIT_READY case for SCSI
- Add NO_START_STOP quirk for LS-120
- Fix a KASSERT which was the wrong way around.
- Kickstart the LS-120 with the infamous LS-120 specific command of
which no one knows what it doesn, apart from the fact that it appeared
in the Linux code someday.
tree. This considerably reduces unnecessary bloat in struct slcompress.
I'm running with this change right now and have seen no negative
side-effects.
On my sytem this reduced kernel BSS by about 25KB.
Submitted by: bde
Approved by: brian for user-ppp
kernel. Justin agress that there is no other reasonable alternative to
do automatic rescans on connect.
The problem is that when a new device attaches to a SIM (SCSI host
controller) we need to send a XPT_SCAN_BUS command to the SIM using
xpt_action. This requires however that there is a peripheral available
to take the command (otherwise xpt_done and later bomb). The RESCAN
ioctl uses the same periph.
This enables a USB mass storage drive to do an automatic rescan on
connection of the drive.
The automatic dropping of a CAM entry on disconnection was already
working (asynchronous event).
The next thing to do is find someone to commit a change to vpo to do the
same thing. Just port umass_cam_rescan and friends across to that
driver.
Approved by: gibbs
devstat_end_transaction_bio()
bioq_* versions of bufq_* incl bioqdisksort()
the corresponding "buf" versions will disappear when no longer used.
Move b_offset, b_data and b_bcount to struct bio.
Add BIO_FORMAT as a hack for fd.c etc.
We are now largely ready to start converting drivers to use struct
bio instead of struct buf.
unit numbers all wrong. This did not show up because most of them where
zero anyway.
Use a separate buffer for command transforms instead of fiddling with
the existing cdb_bytes.
Take CAM_CDB_POINTER into account. Nobody is using it, but someone might
in the future.
Be more picky about what to accept in the UFI command set.
First attempt at implementing the ATAPI command protocol transforms.
This should at least make Imation Superdisk and other e-Shuttle based
devices show as attached. Maybe they even work to some extent.
(Much of this done by script)
Move B_ORDERED flag to b_ioflags and call it BIO_ORDERED.
Move b_pblkno and b_iodone_chain to struct bio while we transition, they
will be obsoleted once bio structs chain/stack.
Add bio_queue field for struct bio aware disksort.
Address a lot of stylistic issues brought up by bde.
contains the ADMtek Pegasus AN986 USB chipset. The
adapter supports both 10BaseT and 100BaseT (including
full-duplex). The product code for these adapters is
0x2206.
introduced in FreeBSD-4.0. The driver is now full up-to-date
with regards to the current kernel interfaces.
Another significant change in this driver version applies
to the checking of the data direction. The driver is now
able to check against the expected data direction in any
circumstance and will not hang either if direction is wrong
at the start of the IO, or if for some weird reason,
the device changes to the wrong direction during the IO.
This driver version is still usable under FreeBSD 3.2/3.3,
since it only requires CAM, other kernel interface dependencies
being #if'ed in the sources according to kernel version.
But, in order to use the driver under those early kernel
versions, user has to move the driver sources by hand and make
appropriate tiny changes to let the kernel know about the driver.
Other changes:
- Remove the debugging stuff for WSR bit.
- Get rid of some warnings about volatile being discarded.
which think they know the IntelliMouse 4-byte packet and believe,
wrongly, that any other protocols use 3-byte packets.
- Update a couple of comment lines for A4 Tech mice.
- Mike Smith discovered a panic in the changer probe code if the probe
command (mode sense) fails. So we need to release the CCB used in the
probe before we unlock the peripheral. (i.e. the same fix mjacob put in
the CD and DA drivers)
- A newline was missing in a warning message. (PR kern/17512)
PR: kern/17512
Submitted by: Louis Mamakos <louie@uu.net> (newline fix)
conf/files
i don't seem to be clearing the cache right resulting in a short initial
burst of noise, despite doing the same as creative and alsa. i'm committing
now so more eyes can pore over the code.
your feet. The conversion of the "snp" device to a dynamically growing
device driver was done just a few days ago by Brooks Davis! Shame on
me for not finding that PR :(
This is a forced commit of tty_snoop.c to give the submitter proper credit,
as most of the patch submitted is actually exactly the same code (by some
large amount of entropy). Brooks also submitted the change to LINT to
set the example of "snp" usage to not include a number, as that number is
now deprecated, so that is also in this commit.
PR: 17629
Submitted by: Brooks Davis <brooks@one-eyed-alien.net>
and has not been loaded via a kldload,
running usbd(8) will autoload the "usb.ko" kld.
thanks to Peter Wemm for enlightening me on the
differences between kldfind(2) and modfind(2).
async I/O's. The sequential read heuristic has been extended to
cover writes as well. We continue to call cluster_write() normally,
thus blocks in the file will still be reallocated for large (but still
random) I/O's, but I/O will only be initiated for truely sequential
writes.
This solves a number of annoying situations, especially with DBM (hash
method) writes, and also has the side effect of fixing a number of
(stupid) benchmarks.
Reviewed-by: mckusick
doesn't support winmodems, softmodems, hcf or any other modem that
relies on the host to do any sort of soft control for any aspect of
the modem's function. There are two modems known to work:
3COM FaxModem PCI.
ActionTec 56k VoiceMessaging PCI Modem
and the following modem might work
Multitech PCI FaxModem (not sure about this)
and the serial pci cards might work too. I have neither these
hardware items so I can't add support for them.
release for inclusion into the release, but bde talked me out of
committing the module that needs this until after the release. It is
after the release now. :-)
- Add periodic status monitoring routine. Currently just detects
lost commands, further functionality pending data from AMI.
Add some new commands states; WEDGED (never coming back) and
LATE (for when a command that wasmarked as WEDGED comes bacj,
- Remove a number of redundant efforts to poll the card for completed
commands. This is what interrupt handlers are for.
- Limit the maximum number of outstanding I/O transactions. It seems
that some controllers report more than they can really handle,
and exceding this limit can cause the controller to lock up.
- Don't use 'wait' mode for anything where the controller might not
be able to generate interrupts. (Keep the 'wait' mode though sa it
will become useful when we start taking userspace commands.
- Use a similar atomic locking trategy to the Mylex driver to prevent
some reentrancy problems.
- Correctly calculate the block count for non-whoile-bloch transfers
(actually illegal).
- Use the dsik device's si_drv1 field instead of b_driver1 in the
buf struct to pass the driver identifier arond.
- Rewrite amr_start and amr_done() along the lines of the Mylex driver
in order to improve robustnes.
- Always force the PCI busmaster bit on.
INADDR_NONE: Incoming packets go to the alias address (the default)
INADDR_ANY: Incoming packets are not NAT'd (direct access to the
internal network from outside)
anything else: Incoming packets go to the specified address
Change a few inaddr::s_addr == 0 to inaddr::s_addr == INADDR_ANY
while I'm there.
redirected and when no target address has been specified, NAT
the destination address to the alias address rather than
allowing people direct access to your internal network from
outside.
This don't hurt anything.
PCI/CardBus Bridge -> PCI-CardBus Bridge
Submitted by: Takeshi Shibagaki <sibagaki@lsi.melco.co.jp>
Obtained from: bsd-nomads ML in Japan
via sysctl. It's done pretty simply but it should be quite adequate.
Also move SHMMAXPGS from $machine/include/vmparam.h as the comments that
went with it were wrong... we don't allocate KVM space for the pages so
that comment is bogus.. The only practical limit is how much physical
ram you want to lock up as this stuff isn't paged out or swap backed.
mbuf is marked for delayed checksums, then additionally mark the
packet as having it's checksums computed. This allows us to bypass
computing/checking the checksum entirely, which isn't really needeed
as the packet has never hit the wire.
Reviewed by: green
- Only call m_pullup() when necessary.
- Check return value from rl_encap() in rl_start() to avoid panic when
we run out of mbufs. (Fixes PR kern/17582)
PR: kern/17582
- Move dev/aic/aic_isa.c entry from conf/files to conf/files.MACHINE
because PC-98 uses different file.
Submitted by: nyan and IMAI Takeshi <take-i@ceres.dti.ne.jp>
shows `CPUID' and it is useful to identify CPU. So, it is copied from
BIOS work area to the cpu_id variable (PC-98 only).
Submitted by: chi@bd.mbn.or.jp (Chiharu Shibata)
fe_read_eeprom_rex() and fe_init_rex(). These functions should be
useful for REX-5580 series (for PC-AT). But they are included in
`#ifdef PC98' to avoid warnings by unused static functions. If you
try to support REX-5580, please be aware of these functions.
Submitted by: chi@bd.mbn.or.jp (Chiharu Shibata)
removed unncessary MPLOCKED and 'lock' prefixes from the interrupt
nesting level, since (A) the MP lock is held at the time, and (B) since
the neting level is restored prior to return any interrupted code
will see a consistent value.
caused some headers not to fit in MHLEN any more. This matches the
current size on the alpha, so it shouldn't cause problems.
Problem observed by: Geoff Rehmet <geoff@is.co.za>
Originally suggested by: shin
includes one of bus_at386.h and bus_pc98.h. Becuase only bus_pc98.h
supports indirect pio and bus_at386.h is identical to old bus.h, there
is no functional change in PC-AT's kernels. That is, it cannot cause
performance loss.
Submitted by: nyan
Reviewed by: imp
bde and luoqi provided useful comments for earlier version.
Reported in Usenet by: locke@mcs.net (Peter Johnson)
While i was at it, prepended a 0x to the %D output, to make it clear that
the printed value is in hex (i assume %D has been chosen over %#x to
obey network byte order).
rewrite ess mixer to use native registers
rewrite play/rec code to use more accurate timer when available
add code to use audio2 for playback, but disable it as no irqs are generated
to be based on the transfer speed, but I got it all wrong. The by far
biggest factor in the timeout is the start of a removable device, which
is about 2 seconds anyway.
Prodded by: Lennart Augustsson
syscall path inward. A system call may select whether it needs the MP
lock or not (the default being that it does need it).
A great deal of conditional SMP code for various deadended experiments
has been removed. 'cil' and 'cml' have been removed entirely, and the
locking around the cpl has been removed. The conditional
separately-locked fast-interrupt code has been removed, meaning that
interrupts must hold the CPL now (but they pretty much had to anyway).
Another reason for doing this is that the original separate-lock for
interrupts just doesn't apply to the interrupt thread mechanism being
contemplated.
Modifications to the cpl may now ONLY occur while holding the MP
lock. For example, if an otherwise MP safe syscall needs to mess with
the cpl, it must hold the MP lock for the duration and must (as usual)
save/restore the cpl in a nested fashion.
This is precursor work for the real meat coming later: avoiding having
to hold the MP lock for common syscalls and I/O's and interrupt threads.
It is expected that the spl mechanisms and new interrupt threading
mechanisms will be able to run in tandem, allowing a slow piecemeal
transition to occur.
This patch should result in a moderate performance improvement due to
the considerable amount of code that has been removed from the critical
path, especially the simplification of the spl*() calls. The real
performance gains will come later.
Approved by: jkh
Reviewed by: current, bde (exception.s)
Some work taken from: luoqi's patch
address size that is different than the standard 6bits. This fixes
support for the Compaq NC3121 card, certain newer Intel Pro/100+
cards, and should also fix integrated NICs on SuperMicro and Compaq
motherboards.
The auto-sizing algorithm was taken from NetBSD (thanks!), which I
think got it from Linux originally.
Thanks also to Andrew Sparrow <spadger@best.com> and Joe Moore
<jomor@ahpcns.com> for supplying me with unworking Compaq and Intel
cards to develop and test the fixes with.
- Don't hard code 0x10000 as the entry point for the loader. Instead add
src/sys/boot/i386/Makefile.inc which defines a make variable with the
entry point for the loader. Move the loader's entry point up to
0x20000, which makes PXE happy.
- Don't try to use cpp to parse btxldr for the optional BTXLDR_VERBOSE,
instead use m4 to achieve this. Also, add a BTXLDR_VERBOSE knob in the
btxldr Makefile to turn this option on.
- Redo parts of cdldr's Makefile so that it now builds and installs cdboot
instead of having i386/loader/Makefile do that. Also, add in some more
variables to make the pxeldr Makefile almost identical and thus to ease
maintainability.
- Teach cdldr about the a.out format. Cdldr now parsers the a.out header
of the loader binary and relocates it based on that. The entry point of
the loader no longer has to be hardcoded into cdldr. Also, the boot
info table from mkisofs is no longer required to get a useful cdboot.
- Update the lsdev function for BIOS disks to parse other file systems
(such as DOS FAT) that we currently support. This is still buggy as
it assumes that a floppy with a DOS boot sector actually has a MBR and
parses it as such. I'll be fixing this in the future.
- The biggie: Add in support for booting off of PXE-enabled network
adapters. Currently, we use the TFTP API provided by the PXE BIOS.
Eventually we will switch to using the low-level NIC driver thus
allowing both TFTP and NFS to be used, but for now it's just TFTP.
Submitted by: ps, alfred
Testing by: Benno Rice <benno@netizen.com.au>
reserve, in maximal NFS packets. Originally only 2 packets worth of
space was reserved. The default is now 4, which appears to greatly
improve performance for slow to mid-speed machines on gigabit networks.
Add documentation and correct some prior documentation.
Problem Researched by: Andrew Gallatin <gallatin@cs.duke.edu>
Approved by: jkh
fragmentation problem due to geteblk() reserving too much space for the
buffer and imposes a larger granularity (16K) on KVA reservations for
the buffer cache to avoid fragmentation issues. The buffer cache size
calculations have been redone to simplify them (fewer defines, better
comments, less chance of running out of KVA).
The geteblk() fix solves a performance problem that DG was able reproduce.
This patch does not completely fix the KVA fragmentation problems, but
it goes a long way
Mostly Reviewed by: bde and others
Approved by: jkh
set properly in the struct buf with vinum:
Fix locations where B_READ was cleared in the old code but
b.b_iocmd wasn't set to BIO_WRITE
Fix propogation of b_iocmd
Correct comments to reflect reality
Don't compare b_flags with BIO_READ, it's in b_iocmd.
Submitted by: Bernd Walter <ticso@cicely.de>
not introduce (hopefully) any functional changes but gets rid of
the #ifdef spaghetti pcvt suffered from more and more over the
years.
Several no more used parts of the source were removed, others
which are used by default are now non-optional components:
PCVT_NETBSD removed completety
PCVT_FREEBSD removed option, code is now standard
PCVT_KBD_FIFO removed option, code is now standard
PCVT_EMU_MOUSE removed completety
PCVT_SW0CNOUTP removed completety
PCVT_PORTIO_DELAY obsolete, removed
PCVT_KEYBDID removed option, code is now standard
PCVT_SIGWINCH removed option, code is now standard
PCVT_PALFLICKER removed completety
PCVT_WAITRETRACE removed completety
PCVT_NOFASTSCROLL removed option, code is now standard
PCVT_USL_VT_COMPAT removed the "old" non-vt Xserver code completely,
depending on XSERVER, this code is now standard.
Pcvt userland cleanup will follow as well as newbusifying the
kernel part.
Remove RF_PCCARD_ATTR in anticipation of removing it from sys/rman.h
Add interface for setting "attributes" of pccard/cardbus devices.
Minor formatting nits.
cardbus bridge init routine for all cardbuses. This routine attempts
to compensate for BIOSes that do not setup the cardbus bridge into
legacy mode. Since this is becoming more common, and cardbus pci
cards have appeared on the market, this makes sense.
Do some TI113x specific initialization. This came in as part of the
patch. Report TI1[1234]XX specific config registers protected by
bootverbose.
Minor code cleanup while I'm here. I've also removed the unused code
present in the original patches, and cleaned it up slightly in places
as well.
The original patches supported more than one card, but these patches
support just one. We should likely revisit this in the future.
This makes the Compaq card that Walnut Creek CD purchased for me work
in my bouncer box.
This is a MFC candidate. However, I'd like to get some airtime on
these patches on as many laptops as possible before doing the MFC. It
does change things somewhat. In theory, apart from the minor TI
tweaks, this shouldn't change anything if the bridge is in legacy mode
already.
Submitted by: sanpei@sanpei.org (MIHIRA Yoshiro)
o added gif, faith, wx, ida, amr, mlw, INET6
o many comment nits
o Comment out all the compat shim devices, mostly so that I know what
they are:
amd, dpt, ncr, adv, tx, vx, fe, cs, lnc,
o Leave the following commented out:
ie, le
NEWCARD now compiles again. Back to testing...
for generating /boot/kernel.conf. Since this structure is shared, move
its definition out to a header file, just as struct isa_device was defined
in a header file. This fixes the sysinstall breakage in -current.
improperly doing the equivalent of (m = (function() == NULL)) instead
of ((m = function()) == NULL).
This fixes a NULL pointer dereference panic with runt arp packets.
timeout closer to the 1-second value that AMI use in their Linux
driver, and mark the mailbox structures as volatile so that gcc
doesn't over-optimise access to them.
This should fix the "controller wedged" bug.
Submitted by: Brian Dean <brdean@unx.sas.com>
Remove a bogus (redundant, just weird, etc.) key_freeso(so).
There are no consumers of it now, nor does it seem there
ever will be.
in6?_pcb.c:
Add an if (inp->in6?p_sp != NULL) before the call to
ipsec[46]_delete_pcbpolicy(inp). In low-memory conditions
this can cause a crash because in6?_sp can be NULL...
static int setrootbyname(char *name);
out into
dev_t getdiskbyname(char *name);
This makes it easy to create a new DDB command, which is the big reason
for the change. You can now do the following in DDB:
Example rc.conf entry:
dumpdev="/dev/ad0s1b" # Device name to crashdump to (if enabled).
db> show disk/ad0s1b
dev_t = 0xc0b7ea00
db> p *dumpdev
c0b7ea00
* add a callback for initialising the mixer interface
* support ac97 2.1 variable rate audio feature
fix ac97-using drivers for the above
add suspend/resume support for neomagic
Make the public interface more systematically named.
Remove the alternate method, it doesn't do any good, only ruins performance.
Add counters to profile the usage of the 8 access functions.
Apply the beer-ware to my code.
The weird +/- counts are caused by two repocopies behind the scenes:
kern/kern_clock.c -> kern/kern_tc.c
sys/time.h -> sys/timetc.h
(thanks peter!)
substitute BUF_WRITE(foo) for VOP_BWRITE(foo->b_vp, foo)
substitute BUF_STRATEGY(foo) for VOP_STRATEGY(foo->b_vp, foo)
This patch is machine generated except for the ccd.c and buf.h parts.
field in struct buf: b_iocmd. The b_iocmd is enforced to have
exactly one bit set.
B_WRITE was bogusly defined as zero giving rise to obvious coding
mistakes.
Also eliminate the redundant struct buf flag B_CALL, it can just
as efficiently be done by comparing b_iodone to NULL.
Should you get a panic or drop into the debugger, complaining about
"b_iocmd", don't continue. It is likely to write on your disk
where it should have been reading.
This change is a step in the direction towards a stackable BIO capability.
A lot of this patch were machine generated (Thanks to style(9) compliance!)
Vinum users: Greg has not had time to test this yet, be careful.
too many, so I removed the checks for the valid OUIs. We already do a
checksum of the entire ethernet address, so extra checking against the
OUI shouldn't be needed.
it into a ``shared'' .ko file. This intermediate file can be directly
linked into a static kernel. This isn't all that useful yet but will
become much more interesting shortly.
from iso88025.h.
o Add minimal llc support to iso88025_input.
o Clean up most of the source routing code.
* Submitted by: Nikolai Saoukh <nms@otdel-1.org>
4/16/100 -> 100/16/4 so that it matches all of the others.
o Since we went to all the trouble of getting the correct
working memory size actually use it.
* Submitted by: Nikolai Saoukh <nms@otdel-1.org>
it's options COMPAT_OLDISA and COMPAT_OLDPCI. This is meant to be a
fairly strong incentive to update the older drivers to newbus, but doesn't
(quite) leave anybody hanging with no hardware support. I was talking with
a few folks and I was encouraged to simply break or disable the shims but
that was a bit too drastic for my liking.
The new boot1/boot2 can load a.out and elf kernels directly.
I think the sys/pc98 version can go too as the sys/boot/pc98 code
appears to be functional, but I'll leave that for the pc98 folks.
"There can be only one."
prevent a page fault if the card is ejected while BPF is in use. This
could happen if DHCP or tcpdump was in use on that interface during
ejection. Other drivers may also require this modification.
Reviewed by: wes
possible for a panic to occur if BPF is in use on the interface at the
time of the call to if_detach. This happens because BPF maintains pointers
to the struct ifnet describing the interface, which is freed by if_detach.
To correct this problem, a new call, bpfdetach, is introduced. bpfdetach
locates BPF descriptor references to the interface, and NULLs them. Other
BPF code is modified so that discovery of a NULL interface results in
ENXIO (already implemented for some calls). Processes blocked on a BPF
call will also be woken up so that they can receive ENXIO.
Interface drivers that invoke bpfattach and if_detach must be modified to
also call bpfattach(ifp) before calling if_detach(ifp). This is relevant
for buses that support hot removal, such as pccard and usb. Patches to
all effected devices will not be committed, only to if_wi.c, due to
testing limitations. To reproduce the crash, load up tcpdump on you
favorite pccard ethernet card, and then eject the card. As some pccard
drivers do not invoke if_detach(ifp), this bug will not manifest itself
for those drivers.
Reviewed by: wes
new-bus Olicom driver, previously known as "ol". The new
driver unfortunately does not support ISA cards yet.
o Update the microcode files, interface library and include files
to the latest PowerMACH works version. Force even byte alignment
of adapter microcode.
o Roll in some of the patches from Nikolai Saoukh <nms@ethereal.ru>.
negotiation features (DT, ULTRA2, ULTRA, FAST). The offsets
where not properly updated when the DT entry was added and so
the driver could attempt to negotiate a speed faster than that
supported by the target device or even requested by the user
via SCSI-Select settings. *
o Update the target mode incoming command queue kernel index value
ever 128 commands instead of 32. This means that the kernel will
always try to keep its index (as seen on the card - the kernel may
actually have cleared more space) 128 commands ahead of where the
sequencer is adding entries.
o Use the HS_MAILBOX register instead of the KERNEL_TQINPOS location
in SRAM to indicate the kernel's target queue possition on Ultra2
cards. This avoids the "pause bug" on these cards and also turns
out to be much more efficient.
o When enabling or disabling a particular target id for target mode,
make sure that the taret id in the SCSIID register does not
reference an ID that is not to receive target selections. This
is only an issue on chips that support the multiple target id
feature where the value in SCSIID will still affect selection
behavior regardless of the values in the target id bit field
registers.
o Remove some target mode debugging printfs.
o Make sure that the sense length reported in ATIO commands is
always zero. This driver does not, yet, report HBA generated
sense information for accepted commands.
o Honor the CAM_TIME_INFINITY and CAM_TIME_DEFAULT values for
the CCB timeout field.
o Make the driver compile with AHC_DEBUG again.
* Noticed by: Andrew Gallatin<gallatin@cs.duke.edu>
an HBA. Garbage in this field confuses the driver in targdone().
o When completing a CCB on behalf of a user process, we need to
*de-queue* the ccb from our pending ccb list, not queue it again.
o All continue target I/O operations need to have a timeout set.
We use 5 seconds throughout this driver.
o Remove some logging printfs.
o During abort processing, remove ccbs that are on the pending queue
from the pending queue, not the work queue.
-current. It doesn't work yet as stable as the 3.x/PAO version of the
driver does, however, i get occasional `FDC direction bit not set' and
other weird messages, but it basically works at least.
The old (defunct) #ifdef FDC_YE stuff has been eliminated completely
now, PCMCIA-FDC specific functions have been implemented differently
where needed.
Unfortunately, due to the fact that the traditional PeeCee FDC with
its funny non-contiguous register space (one register for WD1003
harddisk controllers is interleaved into the FDC register set), and
Peter's subsequent changes involving two different bus space handles
for normal FDCs, the changes required for the Y-E stuff are more
complex than i'd love them to be. I've done my best to keep the logic
for normal FDCs intact.
Since the Y-E FDC seems to lose interrupts after a FDC reset
sometimes, i've also replaced the timeout logic in fd_turnoff() to
generate an artificial pseudo interrupt in case of a timeout while the
drive has still outstanding transfers waiting. This avoids the total
starvation of the driver that could be observed with highly damaged
media under 3.x/PAO. This part of the patch has been revied by bde
previously.
I've fixed a number of occasions where previous commits have been
missing the encapuslation of ISA DMA related functions inside
FDC_NODMA checks.
I've added one call to SET_BCDR() during preparation of the format
floppy operation. Floppy formatting has been totally broken before in
3.x/PAO (garbage ID fields have been written to the medium, causing
`wrong cylinder' errors upon media reading). This is just black
magic, i don't have the slightes idea _why_ this needs to be but just
copied over the hack that has been used by the PAO folks in the normal
read/write case anyway.
The entired device_busy() stuff seems to be pointless to me. In any
case, i had to add device_unbusy() calls symmetrical to the
device_busy() calls, otherwise the PCMCIA floppy driver could never be
deactivated. (As it used to be, it caused a `mark the device busier
and busier' situation.) IMHO, all block device drivers should be
marked busy based on active buffers still waiting for the driver, so
the device_unbusy() calls should probably go to biodone(). Only one
other driver (whose name escapes me at the moment) uses device_busy()
calls at all, so i question the value of all this...
I think this entire `device busy' logic simply doesn't fit for PCMCIA
&al. It cannot be the decision of some piece of kernel software to
declare a device `busy by now, you can't remove it', when the actual
physical power of removing it is the user pulling the card. The
kernel simply has to cope with the removal, however busy the device
might have been by the time of the removal, period. Perhaps a force
flag needs to be added?
Upon inserting the card a second time, i get:
WARNING: "fd" is usurping "fd"'s cdevsw[]
WARNING: "fd" is usurping "fd"'s bmaj
I suspect this is related to the XXX comment at the call to
cdevsw_add(). Does anybody know what the correct way is to cleanup
this?
- Microsoft IntelliMouse Explorer: 2 buttons on top, 2 side buttons
and a wheel which also acts as the middle button. The mouse is
recognized as "IntelliMouse Explorer".
- Genius NetScroll Optical: 2 buttons on top, 2 side buttons and a
wheel which also acts as the middle button. The mouse is recognized
as "NetMouse/NetScroll Optical".
- MouseSystems SmartScroll Mouse (OEM from Genius?): 3 buttons on top,
1 side button and a wheel. The mouse is recognized as Genius
"NetScroll".
- IBM ScrollPoint: 2 buttons on top and a stick between the buttons.
The stick can perform "horizontal scroll" in W*ndows environment.
The horizontal movement of the stick is detected. It is currently
mapped to the Z axis movement in the same way as the first wheel.
The mouse is recognized as "MouseMan+", as it is considered to be
a variation of MouseMan.
- A4 Tech 4D and 4D+ mice. These mice have two wheels! The movement
of the second wheel is reported as the Z axis movement in the
same way as the first wheel. These mice are recognized as "4D
Mouse" and "4D+ Mouse".
- Tweak IntelliMouse support code a bit so that less-than-compatible
wheel mice can work properly with the psm driver.
- Add driver configuration flags which correspond to the kernel
options PSM_HOOKRESUME and PSM_RESETAFTERSUSPEND, so that we don't
need to recompile the kernel when we need these functions.
- Properly keep track of the irq resource.
- Add a watchdog timer in case interrupts are lost (experimental).
- Add `detach' function (experimental).
- Properly keep track of resources (I/O ports and irq).
- Use bus_space_read/write() to access the ports.
- Add PnP IDs.
- Add a watchdog timer in case interrupts are lost (experimental).
- Add `detach' function (experimental).
from DWLPX to PCI space. Just a methods holder such that we have a parent
which is a "pcib" and we create a child which is a "pci". Add the appropriate
ivar code (which is for a hose #).
based upon presence/absence of ISA (there is no ISA bus on an 8200- okay,
well, there *could* be one in a DWLPX tray, but we don't support it)).
Most importantly change the interrupt resource map to cover a whole 16
bits. The 8200 uses 16 bit interrupt vectors which we construct that
contain the I/O-board, hose, an pci slot in them, and then we write these
vectors into the appropriate DWLPX registers. At any rate, a flat array
of 64 'IRQs' isn't enough.
to begin with. Redo newbus attachment code so that all the DMA mapping
and further pci attachment is done right. Insert config space functions
(jeez- how do you do type 1 cycles?). Do the interrupt setups, etc.
Basically, this is the core I/O module for 8200s, even though logically
it's the 3rd level down from the nominal principle backplane bus
(turbolaser). Still to be done here: S/G code isn't done yet, so we
better live with 2GB or less primary memory.
code (merge in progress made in NetBSD since the initial import to
FreeBSD). Create dwlpx as the child device. Of course, if we had
more h/w and time, we could find out whether the child device was
a FutureBus module, etc...Anyone ever actually seen one?
clean MI/MD driver, but it *does* actually work at this time. Updated
to use new make_dev stuff. A CONS_DRIVER declaration is also put in
so that this can be the real console for the 8200s.
not the current BPF device should report locally generated packets or not.
This allows sniffing applications to see only packets that are not generated
locally, which can be useful for debugging bridging problems, or other
situations where MAC addresses are not sufficient to identify locally
sourced packets. Default to true for this flag, so as to provide existing
behavior by default.
Introduce two new ioctls, BIOCGSEESENT and BIOCSSEESENT, which may be used
to manipulate this flag from userland, given appropriate privilege.
Modify bpf.4 to document these two new ioctl arguments.
Reviewed by: asmodai
this version include:
- Support for version 2.x firmware (2.42 or later recommended). This
means we are the only open-source driver supporting these adapters.
This code has only been tested on a Digital KZPCA adapter in an Alpha
system, but is believed to be correct. NOTE: EISA adapters are not
yet supported.
- Support the BIOS/Firmware initialisation handshake protocol. This
allows the driver to bring the card up to operational state even if
the BIOS can't be run (eg. if it's an x86 BIOS in an Alpha system).
- A working command pasthrough interface. This allows a user-space
configuration tool (under development) to issue arbitrary commands
to the controller or to devices in the system.
return ENXIO (Device not configured). Without this, vn_isdisk()
could (and did in the case of lstat() under fdesc) pass a NULL pointer
to devsw(), which caused a page fault.
Reviewed by: alfred
This avoids the unit number from going up indefinitely when
diconnecting and connecting 2 devices alternately.
Noticed by: nsayer (quite a while ago)
And stop calling DEVICE_NOMATCH at probe repeatedly. This stops the
message on the PCI VGA board from being printed when loading a PCI driver.
platform we're running on so we know how many bits to reserve at the top
end for the 'hose' value. It turns out that there's *just* enough room
to support all possible hoses on TurboLaser.
Reviewed by: gallatin@freebsd.org, dfr@free3bsd.org
This makes it possible to handle the done queue even when the end of tail
TD has ended up on the done queue as well (the xfer in this case is NULL
but the next field is valid, so we simply skip that element.
Make sure we mark all the handled transfers as handled.
Stop using powerhooks. They are a NetBSD-ism.
the unwary if the code were called in slightly different ways.
1) In ufs_bmaparray() the code for calculating 'runb' will stop one block
short of the first entry in an indirect block. i.e. if an indirect block
contains N block numbers b[0]..b[N-1] then the code will never check if
b[0] and b[1] are sequential. For reference, compare with the equivalent
code that deals with direct blocks.
2) In ufs_lookup() there is an off-by-one error in the test that checks
if dp->i_diroff is outside the range of the the current directory size.
This is completely harmless, since the following while-loop condition
'dp->i_offset < endsearch' is never met, so the code immediately
does a second pass starting at dp->i_offset = 0.
3) Again in ufs_lookup(), the condition in a sanity check is wrong
for directories that are longer than one block. This bug means that
the sanity check is only effective for small directories.
Submitted by: Ian Dowse <iedowse@maths.tcd.ie>
necessary. Pass an absolute block number too, instead of receiving a
relative one in realstrategy(), as bcache_strategy() requires this.
The fix is sligthly different from the one in the PR.
PR: 17098
Submitted by: John Hood <jhood@sitaranetworks.com>
was the last unit number received. If it changes, it flushes the cache.
Add bcache_flash().
The actual fix is sligthly different from the one in the PR.
PR: 17098
Submitted by: John Hood <jhood@sitaranetworks.com>
flushed if the unit changes. Compute the absolute offset before
bcache_strategy() instead of after.
The actual fix is sligthly different for the one in the PR.
PR: 17098
Submitted by: John Hood <jhood@sitaranetworks.com>
to recycle full fsids after only 16 mount/unmount's. This is probably
too often for exported fsids. Now we recycle the full fsids only
after 2^16 mount/ umount's and only ensure uniqueness in the lower 16
bits if there have been <= 256 calls to vfs_getnewfsid() since the
system started.
Previously, it was being called whether it was needed or not and the
ASU flag was being set (as a side affect of calling 'suser()') in
cases where superuser privileges were not actually needed. This was
all pointed out to me by Bruce Evans.
Reviewed by: bde
- Make iface nodes removable on shutdown since FreeBSD now supports
removable interfaces
- Simplify supporting new protocols using family_enqueue(); add a
few new ones including IPv6
- Add support for configurable interface mode using new
NGM_IFACE_POINT2POINT and NGM_IFACE_BROADCAST control messages
- Remove NGM_IFACE_GET_IFADDRS control message; it just duplicates
the functionality of SIOCGIFCONF
pte's from zero. The TLB is supposed to be invalidated when pte's are
changed _to_ zero, but this doesn't occur in all cases for global pages
(PG_G stops invltlb() from working, and invltlb_1pg() is not used
enough).
PR: 14141, 16568
Submitted by: dillon
rest of the code in (so changing media actually works.)
Add a few more register definitions for use with this and other new code.
Print a few details in the probe message; this should be useful in
bug reports and such but should not add to the clutter.
* i needed it anyway
* remove startccs and startcmd - done
* as those were used for the NetBSD start timeout
* multicast - done but UNTESTED
* I don't have the ability/facilty to test this
* rxlevel - done
* stats reported via raycontrol
* getparams ioctl - done
* reported via raycontrol
* start_join_done needs a restart in download_done - done
* now use netbsd style start up
removed spare timerh
implemented start_assoc in ray_ccs_done
bit more knfing