On Tue, 2017-06-06 at 15:24 +0300, Mika Westerberg wrote:
> The root switch is part of the host controller and cannot be
> physically
> removed, so there is no point of reading UID again on resume in order
> to
> check if the root switch is still the same.
> 

FWIW,
Reviewed-by: Andy Shevchenko <andriy.shevche...@linux.intel.com>


> Suggested-by: Andreas Noever <andreas.noe...@gmail.com>
> Signed-off-by: Mika Westerberg <mika.westerb...@linux.intel.com>
> Signed-off-by: Andreas Noever <andreas.noe...@gmail.com>
> ---
>  drivers/thunderbolt/switch.c | 29 ++++++++++++++++++-----------
>  1 file changed, 18 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/thunderbolt/switch.c
> b/drivers/thunderbolt/switch.c
> index c6f30b1695a9..81f5164a6364 100644
> --- a/drivers/thunderbolt/switch.c
> +++ b/drivers/thunderbolt/switch.c
> @@ -452,19 +452,26 @@ void tb_sw_set_unplugged(struct tb_switch *sw)
>  int tb_switch_resume(struct tb_switch *sw)
>  {
>       int i, err;
> -     u64 uid;
>       tb_sw_info(sw, "resuming switch\n");
>  
> -     err = tb_drom_read_uid_only(sw, &uid);
> -     if (err) {
> -             tb_sw_warn(sw, "uid read failed\n");
> -             return err;
> -     }
> -     if (sw != sw->tb->root_switch && sw->uid != uid) {
> -             tb_sw_info(sw,
> -                     "changed while suspended (uid %#llx ->
> %#llx)\n",
> -                     sw->uid, uid);
> -             return -ENODEV;
> +     /*
> +      * Check for UID of the connected switches except for root
> +      * switch which we assume cannot be removed.
> +      */
> +     if (tb_route(sw)) {
> +             u64 uid;
> +
> +             err = tb_drom_read_uid_only(sw, &uid);
> +             if (err) {
> +                     tb_sw_warn(sw, "uid read failed\n");
> +                     return err;
> +             }
> +             if (sw->uid != uid) {
> +                     tb_sw_info(sw,
> +                             "changed while suspended (uid %#llx
> -> %#llx)\n",
> +                             sw->uid, uid);
> +                     return -ENODEV;
> +             }
>       }
>  
>       /* upload configuration */

-- 
Andy Shevchenko <andriy.shevche...@linux.intel.com>
Intel Finland Oy

Reply via email to