| #
b941d1c6
|
| 02-Feb-2026 |
Marius Strobl <marius@FreeBSD.org> |
sym(4): Map HCB memory as uncacheable also on x86
As part of making the chip-specific mix and match of different accesses (DMA/bus space) work as desired, the intent is to map the HCB memory as unca
sym(4): Map HCB memory as uncacheable also on x86
As part of making the chip-specific mix and match of different accesses (DMA/bus space) work as desired, the intent is to map the HCB memory as uncacheable. Prior to VM_MEMATTR_*, the !x86 way of indicating this to bus_dmamem_alloc(9) was BUS_DMA_COHERENT. Then later on in 2db99100a4, BUS_DMA_NOCACHE was hooked up to VM_MEMATTR_UNCACHEABLE for x86. As it turns out, still as of today bus_dmamem_alloc(9) differs in this regard across architectures. On arm, it still supports BUS_DMA_COHERENT only for requesting uncacheable DMA and x86 still uses BUS_DMA_NOCACHE only. On arm64 and riscv, BUS_DMA_COHERENT seems to effectively be an alias for BUS_DMA_NOCACHE.
Thus, allocate the HCB memory with BUS_DMA_COHERENT | BUS_DMA_NOCACHE, so we get uncacheable memory on all architectures including x86 and so loads and stores from/to HCB won't get reordered. However, even on x86 we still need to use at least compiler barriers to achieve the desired program order.
This change should also fix panics due to out-of-sync data seen with FreeBSD VMs on top of OpenStack and HBAs of type lsiLogic as a result of loads and stores getting reordered. [1]
While at it: - Nuke the unused SYM_DRIVER_NAME macro. - Remove unused/redundant HCB members and correct a comment typo.
PR: 270816 [1] MFC after: 3 days
show more ...
|
| #
bfbcd310
|
| 28-Jan-2026 |
Marius Strobl <marius@FreeBSD.org> |
Revert "sym(4): Employ memory barriers also on x86"
The problem will be avoided in a different way.
This reverts commit e769bc77184312b6137a9b180c97b87c0760b849.
|
| #
e769bc77
|
| 26-Jan-2026 |
Marius Strobl <marius@FreeBSD.org> |
sym(4): Employ memory barriers also on x86
In an MP world, it doesn't hold that x86 requires no memory barriers.
This change should also fix panics due to out-of-sync data seen with FreeBSD VMs on
sym(4): Employ memory barriers also on x86
In an MP world, it doesn't hold that x86 requires no memory barriers.
This change should also fix panics due to out-of-sync data seen with FreeBSD VMs on top of OpenStack and HBAs of type lsiLogic. [1]
While at it: - Improve the granularity somewhat by distinguishing between read and write memory barriers as well as refer to existing *mb(9) functions instead of duplicating these [2], unless IO barriers are also used. - Nuke the unused SYM_DRIVER_NAME macro.
PR: 270816 [1] Obtained from: BSD-licensed Linux sym53c8xx driver [2] MFC after: 1 week
show more ...
|
| #
518c01b3
|
| 22-Jan-2026 |
Marius Strobl <marius@FreeBSD.org> |
sym(4): Provide a DEVICE_DETACH(9) method
This also fixes sym_cam_free() to tear things down correctly, i. e. in opposite order of setup, as well as sym_cam_attach() to not free devq and SIM twice i
sym(4): Provide a DEVICE_DETACH(9) method
This also fixes sym_cam_free() to tear things down correctly, i. e. in opposite order of setup, as well as sym_cam_attach() to not free devq and SIM twice in the failure case.
show more ...
|
| #
c8e9479c
|
| 21-Jan-2026 |
Marius Strobl <marius@FreeBSD.org> |
sym(4): Use memcpy(9) instead of bcopy(9)
The overlap handling of bcopy(9) is not required in these cases.
Obtained from: BSD-licensed Linux sym53c8xx driver
|
| #
48eee744
|
| 21-Jan-2026 |
Marius Strobl <marius@FreeBSD.org> |
sym(4): Consistently use device_printf(9) where applicable
|
| #
00502894
|
| 15-Oct-2025 |
David E. O'Brien <obrien@FreeBSD.org> |
style(9): white space after ; and around binary operators
in for() loops. Also, use 'while', where only the conditional test of 'for' was used.
Reviewed by: sjg
|
| #
ae6d4963
|
| 18-Aug-2023 |
Marius Strobl <marius@FreeBSD.org> |
sym(4): Add __diagused to nseg of getbaddrcb()
The parameter is only used when compiling with INVARIANTS.
|
| #
685dc743
|
| 16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: one-line .c pattern
Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
|
| #
c4cacb20
|
| 06-May-2022 |
John Baldwin <jhb@FreeBSD.org> |
sym: Remove unused devclass argument to DRIVER_MODULE.
|
| #
5045cb8f
|
| 03-Dec-2021 |
Scott Long <scottl@FreeBSD.org> |
Fix "set but not used" for the sym driver.
Sponsored by: Rubicon Communications, LLC ("Netgate")
|
| #
2dcbf046
|
| 21-Jan-2021 |
Marius Strobl <marius@FreeBSD.org> |
sym(4): handle mixed tagged/untagged commands gracefully
Handle the case of a tagged command arriving when there's an untagged one still outstanding gracefully instead of panicing.
While at it: - R
sym(4): handle mixed tagged/untagged commands gracefully
Handle the case of a tagged command arriving when there's an untagged one still outstanding gracefully instead of panicing.
While at it: - Replace fancy arithmetics with a simple assignment as busy_itl can only ever be either 0 or 1. - Fix a comment typo in sym_free_ccb().
show more ...
|
| #
e60a0db3
|
| 21-Jan-2021 |
Marius Strobl <marius@FreeBSD.org> |
sym(4): fix nits reported by Coverity
- In ___dma_getp(), remove dead code. [1] - In sym_sir_bad_scsi_status(), add missing FALLTHROUGH. [2]
While at it: - For getbaddrcb(), remove __unused from th
sym(4): fix nits reported by Coverity
- In ___dma_getp(), remove dead code. [1] - In sym_sir_bad_scsi_status(), add missing FALLTHROUGH. [2]
While at it: - For getbaddrcb(), remove __unused from the nseg argument as it's in fact used when compiling with INVARIANTS. - In sym_int_sir(), ensure in all branches that cp is not NULL before using it.
Reported by: Coverity CID: 1008861 [1], 114996 [2]
show more ...
|
| #
e287e71a
|
| 01-Sep-2020 |
Mateusz Guzik <mjg@FreeBSD.org> |
sym: clean up empty lines in .c and .h files
|
| #
bc02c18c
|
| 07-Feb-2020 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r357408 through r357661.
|
| #
58aa35d4
|
| 03-Feb-2020 |
Warner Losh <imp@FreeBSD.org> |
Remove sparc64 kernel support
Remove all sparc64 specific files Remove all sparc64 ifdefs Removee indireeect sparc64 ifdefs
|
| #
c6879c6c
|
| 23-Oct-2018 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r339015 through r339669.
|
| #
221ac8f4
|
| 22-Oct-2018 |
Warner Losh <imp@FreeBSD.org> |
Remove the long obsolete SYM_SETUP_LP_PROBE_MAP option. It's not been needed for almost 20 years, and is totally useless now that ncr(4) has been removed.
Relnotes: yes
|
| #
e769bc77
|
| 26-Jan-2026 |
Marius Strobl <marius@FreeBSD.org> |
sym(4): Employ memory barriers also on x86
In an MP world, it doesn't hold that x86 requires no memory barriers.
This change should also fix panics due to out-of-sync data seen with FreeBSD VMs on
sym(4): Employ memory barriers also on x86
In an MP world, it doesn't hold that x86 requires no memory barriers.
This change should also fix panics due to out-of-sync data seen with FreeBSD VMs on top of OpenStack and HBAs of type lsiLogic. [1]
While at it: - Improve the granularity somewhat by distinguishing between read and write memory barriers as well as refer to existing *mb(9) functions instead of duplicating these [2], unless IO barriers are also used. - Nuke the unused SYM_DRIVER_NAME macro.
PR: 270816 [1] Obtained from: BSD-licensed Linux sym53c8xx driver [2] MFC after: 1 week
show more ...
|
| #
518c01b3
|
| 22-Jan-2026 |
Marius Strobl <marius@FreeBSD.org> |
sym(4): Provide a DEVICE_DETACH(9) method
This also fixes sym_cam_free() to tear things down correctly, i. e. in opposite order of setup, as well as sym_cam_attach() to not free devq and SIM twice i
sym(4): Provide a DEVICE_DETACH(9) method
This also fixes sym_cam_free() to tear things down correctly, i. e. in opposite order of setup, as well as sym_cam_attach() to not free devq and SIM twice in the failure case.
show more ...
|
| #
c8e9479c
|
| 21-Jan-2026 |
Marius Strobl <marius@FreeBSD.org> |
sym(4): Use memcpy(9) instead of bcopy(9)
The overlap handling of bcopy(9) is not required in these cases.
Obtained from: BSD-licensed Linux sym53c8xx driver
|
| #
48eee744
|
| 21-Jan-2026 |
Marius Strobl <marius@FreeBSD.org> |
sym(4): Consistently use device_printf(9) where applicable
|
| #
00502894
|
| 15-Oct-2025 |
David E. O'Brien <obrien@FreeBSD.org> |
style(9): white space after ; and around binary operators
in for() loops. Also, use 'while', where only the conditional test of 'for' was used.
Reviewed by: sjg
|
| #
ae6d4963
|
| 18-Aug-2023 |
Marius Strobl <marius@FreeBSD.org> |
sym(4): Add __diagused to nseg of getbaddrcb()
The parameter is only used when compiling with INVARIANTS.
|
| #
685dc743
|
| 16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: one-line .c pattern
Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
|