On 8/18/2021 11:36 PM, Fenghua Yu wrote:
On Wed, Aug 18, 2021 at 09:59:49AM +0800, Xiaoyao Li wrote:On 5/18/2021 10:44 PM, tip-bot2 for Fenghua Yu wrote: I'm wonder if using only one "split_lock_detect" parameter for those two features is good/correct. In fact, split lock is just one type of bus lock. There are two types bus lock: 1) split lock, lock on WB memory across multiple cache lines; 2) lock on non-WB memory; As current design, if both features are available, it only enables #AC for split lock either for "warn" or "fatal". Thus we cannot capture any bus lock due to 2) lock on non-WB memory. Why not provide separate parameter for them? e.g., split_lock_detect and bus_lock_detect. Then they can be configured and enabled independently.#AC for split lock is a model specific feature and only available on limited (and legacy) platforms. #DB for bus lock is an architectural feature and will replace #AC for split lock in future platforms. The platforms that supportboth of them are very rare (maybe only one AFAIK).
I suppose you mean only SPR supports both.
Adding two parameters makes code and usage complex while only one platform may get benefit in reality.
First, it's about correctness not easiness. Administrator wants to kill any user application that causes bus lock so setting "split_lock_detect=fatal". But it's possible that all non-WB bus lock escapes if the platform supports both feature.
(Yes, the parameter is called "split_lock_detect". It's no surprising that it can only detects split lock.)
Second, I don't think using two separate parameters makes code and usage complex. e.g.,
- "split_lock_detect" for split lock feature, it can be [off|fatal|warn] - "bus_lock_detect" for bus lock feature, it can be [off|fatal|warn|ratelimit] Of course, kernel can print a message like "split/bus lock detection is not supported by silicon" when feature is not available.Both features can work independently, and every combination can work wit h no issue.
Users are suggested to use "bus_lock_detect" to detect all bus lock and leave "split_lock_detect" to whatever. Of course they can only use "split_lock_detect" while leaving "bus_lock_detect" to off, if they are only interested in split lock.
Thanks. -Fenghua
![]() |