Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
have any direct symbols used. Tested for indirect use by compiling
amd64/i386/sparc64 kernels.
ok tedu@ deraadt@
|
|
|
|
interrupt context to a taskq running in a thread. however, there
is a concern that if we do that then we allow accidental use of
sleeping APIs in this work, which will make it harder to move the
work back to interrupts in the future.
guenther and kettenis came up with the idea of marking a proc with
CANTSLEEP which the sleep paths can check and panic on.
this builds on that so you create taskqs that run with CANTSLEEP
set except when they need to sleep for more tasks to run.
the taskq_create api is changed to take a flags argument so users
can specify CANTSLEEP. MPSAFE is also passed via this flags field
now. this means archs that defined IPL_MPSAFE to 0 can now create
mpsafe taskqs too.
lots of discussion at s2k15
ok guenther@ miod@ mpi@ tedu@ pelikan@
|
|
when workqs were introduced, we provided a second argument so you
could pass a thing and some context to work on it in. there were
very few things that took advantage of the second argument, so when
i introduced pools i suggested removing it. since tasks were meant
to replace workqs, it was requested that we keep the second argument
to make porting from workqs to tasks easier.
now that workqs are gone, i had a look at the use of the second
argument again and found only one good use of it (vdsp(4) on sparc64
if you're interested) and a tiny handful of questionable uses. the
vast majority of tasks only used a single argument. i have since
modified all tasks that used two args to only use one, so now we
can remove the second argument.
so this is a mechanical change. all tasks only passed NULL as their
second argument, so we can just remove it.
ok krw@
|
|
|
|
ok mpi@ kspillner@
|
|
CIRCLEQ_* is deprecated and not called in the tree. The other queue types
have *_END macros which were added for symmetry with CIRCLEQ_END. They are
defined as NULL. There's no reason to keep the other *_END macro calls.
ok millert@
|
|
ok tedu
|
|
after discussions with beck deraadt kettenis.
|
|
it in one place.
|
|
there to our port lists, then find the next available loop id and carry on
rather than restarting. This way, we're less likely to get stuck looping
when the firmware behaves inconsistently. We also don't need to treat domain
controller logins specially.
additional complications discovered by deraadt@
|
|
|
|
and set location on ports as best we can. Take the port mutex too.
|
|
post-attach mailbox operations work reliably.
|
|
Fix some parameters and wording too.
|
|
matter if we don't see ourselves, and if we pick another starting point, the
first port we see might disappear half way through (I have seen this happen),
which makes it more complicated to identify when we're back at the start.
|
|
add that, don't try loading firmware for them.
|
|
firmware (2048 for 2k login firmware, 256 otherwise)
pointed out by deraadt@, ok dlg@
|
|
interrupt. With this we can talk to Hitachi disk arrays, which sometimes
return so much sense data that a status continuation response is generated
in addition to the normal status response.
tested by deraadt@
|
|
local devices it has logged in to. This will also be useful for hotplug
later on.
|
|
before trying to boot it, so we can explain why it's not working rather
than printing cryptic errors.
|
|
ok jmatthew
|
|
attributes.
ok dlg@, jmatthew@
|
|
hardware.
ok dlg@, jmatthew@
|
|
|
|
|
|
in a per generation structure. this avoids code on every isr to figure
out what version of the chip we are, which is silly since we know that
at attach time.
ok jmatthew@
|
|
bit is to post to the resp_out register once outside the loop rather
than inside every loop.
rework the code for finding the queue registers so its done once
on attach by pointing the sc at a map, rather than running big
conditionals in code on every register operation based on teh chip
version.
tested on 2200s by me and 2312s by jmatthew@
ok jmatthew@
|
|
which means we don't need to use sgl continuation command buffers.
this keeps things much simpler on the iopool side of things.
|
|
discovery stuff enabled for now.
|
|
the fc4 types for fabric ports we find
|
|
one copy when both isp(4) and qla(4) are enabled. This is a temporary
measure until qla(4) takes over completely.
looked at by miod@ and kettenis@
|
|
now. The one 2100 card I have doesn't work at all with isp(4). I can get
it to see devices on the fabric, but it can't log in to them, and it can't
see loop devices at all.
|
|
ok jmatthew@
|
|
Otherwise a spurious interrupt might make us dereference a null-pointer.
This is especially important for ISP2200 cards with Open Firmware, where the
card is running a full firmware and the response queue "in" pointer is
non-zero when we take over.
ok jmatthew@
|
|
stub out the firmware loading code and don't include the firmware files
when ISP_NOFIRMWARE is defined.
|
|
later on.
|
|
seems to be disconnected from the interrupt status register, so we shouldn't
wait until the interrupt status is nonzero to check it. This makes onboard
FC controllers in Sun systems work better.
tested on a blade1k (by kettenis@) and a v880.
|
|
be found on some Sun hardware doesn't have an NVRAM.
ok jmatthew@
|
|
icb_xfwoptions. one of my qla2200 cards seems to have this enabled
in its nvram, so it wasn't getting io completions.
|
|
kettenis@ found that this causes problems on sparc64 machines that boot off
isp2200s.
|
|
target.
ok jmatthew@, dlg@
|
|
|
|
ok jmatthew@
|
|
This involves a bit of a hack in the interrupt processing path, where we
ignore the interrupt status if we're expecting a mailbox command to complete,
but we don't have the mailbox semaphore and the response ring hasn't moved.
Typically next time through, the interrupt status is the same and we have the
semaphore so we can read the results.
|
|
but only for interrupts that return information through mailbox registers.
|
|
into one of 4 types in qla_read_isr.
|