mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2026-01-04 14:40:17 +00:00
This patch prevents resetting the cxl adapter via sysfs in presence of
one or more active cxl_context on it. This protects against an
unrecoverable error caused by PSL owning a dirty cache line even after
reset and host tries to touch the same cache line. In case a force reset
of the card is required irrespective of any active contexts, the int
value -1 can be stored in the 'reset' sysfs attribute of the card.
The patch introduces a new atomic_t member named contexts_num inside
struct cxl that holds the number of active context attached to the card
, which is checked against '0' before proceeding with the reset. To
prevent against a race condition where a context is activated just after
reset check is performed, the contexts_num is atomically set to '-1'
after reset-check to indicate that no more contexts can be activated on
the card anymore.
Before activating a context we atomically test if contexts_num is
non-negative and if so, increment its value by one. In case the value of
contexts_num is negative then it indicates that the card is about to be
reset and context activation is error-ed out at that point.
Fixes:
|
||
|---|---|---|
| .. | ||
| api.c | ||
| base.c | ||
| context.c | ||
| cxl.h | ||
| debugfs.c | ||
| fault.c | ||
| file.c | ||
| flash.c | ||
| guest.c | ||
| hcalls.c | ||
| hcalls.h | ||
| irq.c | ||
| Kconfig | ||
| main.c | ||
| Makefile | ||
| native.c | ||
| of.c | ||
| pci.c | ||
| phb.c | ||
| sysfs.c | ||
| trace.c | ||
| trace.h | ||
| vphb.c | ||