Age | Commit message (Collapse) | Author |
|
Repairs urtwn(4) on macppc. Problem reported by juanfra@.
ok millert@ deraadt@
|
|
from tom
|
|
in the file sys/dev/ic/rtwn.c. This reduces kernel bloat and will make it
easier to have both drivers benefit from future enhancements.
ok mpi@
|
|
This mostly copies r88e support code to ic/rtwn.c and moves some functions
which are not trivial to merge with USB counterparts back to pci/if_rtwn.c.
ok mpi@
|
|
found by NONAKA Kimihiro while he was porting nvme to netbsd.
|
|
shaves ~256 bytes off of qla_put_data_seg on sparc64
ok kettenis@ jmatthew@
|
|
sure that we reset the bus width (to 1-bit) after powering up the bus.
Apparently the register write fails if the bus isn't powered on.
Implement the chip callback function and advertise 4-bit bus support.
ok stsp@
|
|
insisting on an exact match. Add support for a 50 MHz clock.
ok stsp@
|
|
ok stsp@
|
|
|
|
found on some Sun sparc64 machines. This fixes the unrecoverable DMA errors
people have been seeing ever since dlg@ made changes to the pool code that
changes the memory layout.
|
|
controller. Use this to switch SD cards to a 4-bit bus if they support it.
ok deraadt@, jsg@
|
|
Normally this would be setup in the vendor-programmed eeprom, but in this case
it hasn't been done and the rather unfortunate default results in *only* a
normally-off light for network activity, nothing for ethernet link, so it's
too easy to mistake the machine for being powered down. hw.vendor/hw.machine
idea from naddy@, testing jasper@, ok deraadt@
|
|
this solves my memory corruption problem with a samsung sm951 in a
particular slot on a dell 2950.
hilariously, i had picked values which masked this problem on
sparc64. i randomly picked 128 as the number of entries on the
queues, and dmamem allocs get rounded up to PAGE_SIZE. on amd64 and
sparc64 this meant i was asking for 128 * 8 (sizeof pointer), or
1024 bytes, which got rounded up to 4096 and 8192 on each arch
respectively. 128 * 64 (the size of a submission queue entry) is
8192, so it worked fine on sparc64 for that reason, but randomly
blows up on amd64. the 2950 above allocated mbufs out of the page
after the submission queue, which i ended over overwriting.
anyway. let's move on.
|
|
|
|
|
|
|
|
|
|
still a bit magical, but good enough for now.
|
|
this should be enough to make io reliable
|
|
we run with 2 entries for the nvme controller identify, and then bump it
up to cover the maxphys divided by the page size we negotiate.
|
|
|
|
prpe is short for Physical Region Page Entry. this is where long
lists of dma regions go when they wont fit into a submission queue
entry.
|
|
nvme and the host cpu need to agree on the page size because its
the implicit size of the elements in the chips scatter gather lists.
if the min nvme size is greater than the cpus page size then we
cant guarantee that io buffers are contig for nvme pages.
nvme 1.1 provides an alternative sgl mechanism, so if this really
becomes a problem in the future we can fix it on 1.1 and later
devices.
|
|
it ends up being a use after free, which disagrees with the midlayer.
|
|
again, only called during autoconf which is a kind of process context.
|
|
nvme 1.0 does not use conventional scatter gather lists of
address+length pairs. instead, it simply expects a list of page
addresses. this should be ok if we only feed it single VA chunks
which map directly to only whole physical pages.
nvme 1.1 introduced another scather format, but still accepts the
1.0 format too. we'll stick to the 1.0 format so we can support 1.0
devs.
|
|
this means we'll notice io completions.
|
|
|
|
|
|
ive only tested reads, and not very big ones.
nvme 1.0 has a very stupid/naive idea about what constitutes a
scatter gather list. it assumes io is in whole pages in memory, but
i dont know if that is true in our kernel.
this could be cleaned up a bit, and it currently runs with a single
opening for the whole scsi layer and a bunch of magic values for
the size and number of the io queues.
|
|
|
|
this is necessary to run reads and writes against the device.
|
|
|
|
at the moment this just pretends the commands completed fine.
|
|
read cap 16 claims the devices are thin.
|
|
most values are as per the nvm to scsi mapping guide. this doesnt
do vpd at all, so no devids or serial numbers just yet.
|
|
|
|
probe issues a namespace identify against the "target". if it works
it stashes a copy of the info, otherwise it tells the midlayer to
avoid it.
free gets rid of the stashed info.
|
|
|
|
|
|
|
|
so far the only useful info is namespace identify info
|
|
the nn is used to size the scsi bus, and the controller identify is used
to build responses for various scsi commands.
|
|
|
|
|
|
|
|
|
|
it's still 0 on success, but is the actual bits rather than a mashup of it
|
|
|