Add a module parameter that allows user to completely disable CLx functionality in case problems are found. Signed-off-by: Gil Fine <gil.fine@xxxxxxxxx> --- drivers/thunderbolt/switch.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/thunderbolt/switch.c b/drivers/thunderbolt/switch.c index 945672b8fa25..89868632932d 100644 --- a/drivers/thunderbolt/switch.c +++ b/drivers/thunderbolt/switch.c @@ -13,6 +13,7 @@ #include <linux/sched/signal.h> #include <linux/sizes.h> #include <linux/slab.h> +#include <linux/module.h> #include "tb.h" @@ -26,6 +27,10 @@ struct nvm_auth_status { u32 status; }; +static bool clx_enabled = true; +module_param_named(clx, clx_enabled, bool, 0444); +MODULE_PARM_DESC(clx, "allow CLx on the High-Speed link (default: true)"); + /* * Hold NVM authentication failure status per switch This information * needs to stay around even when the switch gets power cycled so we @@ -3478,6 +3483,9 @@ int tb_switch_enable_clx(struct tb_switch *sw, enum tb_clx clx) { struct tb_switch *root_sw = sw->tb->root_switch; + if (!clx_enabled) + return 0; + /* CLx is not enabled and validated on USB4 platforms before ADL */ if (root_sw->generation < 4 || tb_switch_is_tiger_lake(root_sw)) @@ -3538,6 +3546,9 @@ static int tb_switch_disable_cl0s(struct tb_switch *sw) */ int tb_switch_disable_clx(struct tb_switch *sw, enum tb_clx clx) { + if (!clx_enabled) + return 0; + switch (clx) { case TB_CL0S: return tb_switch_disable_cl0s(sw); -- 2.17.1 --------------------------------------------------------------------- Intel Israel (74) Limited This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies.