Revision tags: release/14.0.0 |
|
#
685dc743 |
| 16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: one-line .c pattern
Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
|
Revision tags: release/13.2.0, release/12.4.0, release/13.1.0, release/12.3.0, release/13.0.0, release/12.2.0, release/11.4.0 |
|
#
1f4a469d |
| 15-Nov-2019 |
Alexander Motin <mav@FreeBSD.org> |
Cleanup address range checks in ioat(4).
- Deduce allowed address range for bus_dma(9) from the hardware version. Different versions (CPU generations) have different documented limits. - Remove di
Cleanup address range checks in ioat(4).
- Deduce allowed address range for bus_dma(9) from the hardware version. Different versions (CPU generations) have different documented limits. - Remove difference between address ranges for src/dst and crc. At least docs for few recent generations of CPUs do not mention anything like that, while older are already limited with above limits. - Remove address assertions from arguments. While I do not think the addresses out of allowed ranges should realistically happen there due to the platforms physical address limitations, there is now bus_dma(9) to make sure of that, preferably via IOMMU. - Since crc now has the same address range as src/dst, remove crc_dmamap, reusing dst2_dmamap instead.
Discussed with: cem MFC after: 2 weeks Sponsored by: iXsystems, Inc.
show more ...
|
Revision tags: release/12.1.0 |
|
#
f05b9584 |
| 21-Sep-2019 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r352537 through r352586.
|
#
657dc81d |
| 20-Sep-2019 |
Alexander Motin <mav@FreeBSD.org> |
Improve ioat(4) NUMA-awareness.
Allocate ioat->ring memory from the device domain. Schedule ioat->poll_timer to the first CPU of the device domain.
According to pcm-numa tool from intel-pcm port, t
Improve ioat(4) NUMA-awareness.
Allocate ioat->ring memory from the device domain. Schedule ioat->poll_timer to the first CPU of the device domain.
According to pcm-numa tool from intel-pcm port, this reduces number of remote DRAM accesses while copying data by 75%. And unless it is a noise, I've noticed some speed improvement when copying data to other domain.
MFC after: 1 week Sponsored by: iXsystems, Inc.
show more ...
|
Revision tags: release/11.3.0 |
|
#
9a696dc6 |
| 04-Apr-2019 |
Alan Somers <asomers@FreeBSD.org> |
MFHead@r345880
|
#
b80b32a2 |
| 02-Apr-2019 |
Tycho Nightingale <tychon@FreeBSD.org> |
ioat(4) should use bus_dma(9) for the operation source and destination addresses
Reviewed by: cem Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D19725
|
#
18b18078 |
| 25-Feb-2019 |
Enji Cooper <ngie@FreeBSD.org> |
MFhead@r344527
|
#
a8fe8db4 |
| 25-Feb-2019 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r344178 through r344512.
|
#
2f03a95f |
| 21-Feb-2019 |
Alexander Motin <mav@FreeBSD.org> |
Fix few issues in ioat(4) driver.
- Do not explicitly count active descriptors. It allows hardware reset to happen while device is still referenced, plus simplifies locking. - Do not stop/start c
Fix few issues in ioat(4) driver.
- Do not explicitly count active descriptors. It allows hardware reset to happen while device is still referenced, plus simplifies locking. - Do not stop/start callout each time the queue becomes empty. Let it run to completion and rearm if needed, that is much cheaper then to touch it every time, plus also simplifies locking. - Decouple submit and cleanup locks, making driver reentrant. - Avoid memory mapped status register read on every interrupt. - Improve locking during device attach/detach. - Remove some no longer used variables.
Reviewed by: cem MFC after: 1 week Sponsored by: iXsystems, Inc. Differential Revision: https://reviews.freebsd.org/D19231
show more ...
|
Revision tags: release/12.0.0, release/11.2.0, release/10.4.0, release/11.1.0 |
|
#
4f9d94bf |
| 04-Dec-2016 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r309263 through r309518.
|
#
58a639b7 |
| 30-Nov-2016 |
Conrad Meyer <cem@FreeBSD.org> |
ioat(4): Fix 'bogus completion_pending' KASSERT
Fix ioat_release to only set is_completion_pending if DMAs were actually queued. Otherwise, the spurious flag could trigger an assert in the reset pa
ioat(4): Fix 'bogus completion_pending' KASSERT
Fix ioat_release to only set is_completion_pending if DMAs were actually queued. Otherwise, the spurious flag could trigger an assert in the reset path on INVARIANTS kernels.
Reviewed by: bdrewery, Suraj Raju @ Isilon Sponsored by: Dell EMC Isilon
show more ...
|
#
a2b802ce |
| 02-Nov-2016 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r303250 through r308226.
|
#
8e269d99 |
| 01-Nov-2016 |
Conrad Meyer <cem@FreeBSD.org> |
ioat(4): Allocate contiguous descriptors
This allows us to make strong assertions about descriptor address validity. Additionally, future generations of the ioat(4) hardware will require contiguous
ioat(4): Allocate contiguous descriptors
This allows us to make strong assertions about descriptor address validity. Additionally, future generations of the ioat(4) hardware will require contiguous descriptors.
Reviewed by: markj Sponsored by: Dell EMC Isilon
show more ...
|
#
a0992979 |
| 01-Nov-2016 |
Conrad Meyer <cem@FreeBSD.org> |
ioat(4): Simplify by removing dynamic scaling
This paves the way for a contiguous descriptor array.
A contiguous descriptor array has the benefit that we can make strong assertions about whether an
ioat(4): Simplify by removing dynamic scaling
This paves the way for a contiguous descriptor array.
A contiguous descriptor array has the benefit that we can make strong assertions about whether an address is a valid descriptor or not. The other benefit is that future generations of I/OAT hardware will require a contiguous descriptor array anyway. The downside is that after system boot, big chunks of contiguous memory is much harder to find. So dynamic scaling after boot is basically impossible.
Reviewed by: markj Sponsored by: Dell EMC Isilon
show more ...
|
#
02ebdc78 |
| 31-Oct-2016 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r307736 through r308146.
|
#
0d0f2640 |
| 29-Oct-2016 |
Conrad Meyer <cem@FreeBSD.org> |
ioat(4): Use memory completion rather than device register
The CHANSTS register is a split 64-bit register on CBDMA units before hardware v3.3. If a torn read happens during ioat_process_events(),
ioat(4): Use memory completion rather than device register
The CHANSTS register is a split 64-bit register on CBDMA units before hardware v3.3. If a torn read happens during ioat_process_events(), software cannot know when to stop completing descriptors correctly.
So, just use the device-pushed main memory channel status instead.
Remove the ioat_get_active() seatbelt as well. It does nothing if the completion address is valid.
Sponsored by: Dell EMC Isilon
show more ...
|
Revision tags: release/11.0.1, release/11.0.0 |
|
#
25ad9585 |
| 12-Jul-2016 |
Conrad Meyer <cem@FreeBSD.org> |
ioat(4): Submitters pick up a shovel if queue is too full
Before attempting to grow the ring.
|
#
fe8712f8 |
| 05-Jul-2016 |
Conrad Meyer <cem@FreeBSD.org> |
ioat(4): Block asynchronous work during HW reset
Fix the race between ioat_reset_hw and ioat_process_events.
HW reset isn't protected by a lock because it can sleep for a long time (40.1 ms). This
ioat(4): Block asynchronous work during HW reset
Fix the race between ioat_reset_hw and ioat_process_events.
HW reset isn't protected by a lock because it can sleep for a long time (40.1 ms). This resulted in a race where we would process bogus parts of the descriptor ring as if it had completed. This looked like duplicate completions on old events, if your ring had looped at least once.
Block callout and interrupt work while reset runs so the completion end of things does not observe indeterminate state and process invalid parts of the ring.
Start the channel with a manually implemented ioat_null() to keep other submitters quiesced while we wait for the channel to start (100 us).
r295605 may have made the race between ioat_reset_hw and ioat_process_events wider, but I believe it already existed before that revision. ioat_process_events can be invoked by two asynchronous sources: callout (softclock) and device interrupt. Those could race each other, to the same effect.
Reviewed by: markj Approved by: re Sponsored by: EMC / Isilon Storage Division Differential Revision: https://reviews.freebsd.org/D7097
show more ...
|
#
93f7f84a |
| 05-Jul-2016 |
Conrad Meyer <cem@FreeBSD.org> |
ioat(4): Serialize ioat_reset_hw invocations
Reviewed by: markj Approved by: re Sponsored by: EMC / Isilon Storage Division Differential Revision: https://reviews.freebsd.org/D7097
|
#
5ac77963 |
| 05-Jul-2016 |
Conrad Meyer <cem@FreeBSD.org> |
ioat(4): Split timer into poll and shrink functions
Poll should happen quickly, while shrink should happen infrequently.
Protect is_completion_pending with submit_lock.
Reviewed by: markj Approved
ioat(4): Split timer into poll and shrink functions
Poll should happen quickly, while shrink should happen infrequently.
Protect is_completion_pending with submit_lock.
Reviewed by: markj Approved by: re Sponsored by: EMC / Isilon Storage Division Differential Revision: https://reviews.freebsd.org/D7097
show more ...
|
#
df1928aa |
| 04-Jun-2016 |
Conrad Meyer <cem@FreeBSD.org> |
ioat(4): Make channel indices unsigned
Sponsored by: EMC / Isilon Storage Division
|
#
be3cbf60 |
| 03-May-2016 |
Conrad Meyer <cem@FreeBSD.org> |
ioat(4): Add CRC descriptor structure
Add CRC/MOVECRC operations, as well as the TEST and STORE variants.
With these operations, a CRC32C can be computed over one or more descriptors' source data.
ioat(4): Add CRC descriptor structure
Add CRC/MOVECRC operations, as well as the TEST and STORE variants.
With these operations, a CRC32C can be computed over one or more descriptors' source data. When the STORE operation is encountered, the accumulated CRC32C is emitted to memory. A TEST operations triggers an IOAT channel error if the accumulated CRC32C does not match one in memory.
These operations are not exposed through any API yet.
Sponsored by: EMC / Isilon Storage Division
show more ...
|
#
876d357f |
| 11-Apr-2016 |
Glen Barber <gjb@FreeBSD.org> |
MFH
Sponsored by: The FreeBSD Foundation
|
#
0ff814e8 |
| 09-Apr-2016 |
Conrad Meyer <cem@FreeBSD.org> |
ioat(4): ioat_get_dmaengine(): Add M_WAITOK mode
Sponsored by: EMC / Isilon Storage Division
|
Revision tags: release/10.3.0 |
|
#
9893f787 |
| 21-Feb-2016 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r295601 through r295844.
|