Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751494AbdFFNIO (ORCPT ); Tue, 6 Jun 2017 09:08:14 -0400 Received: from mga01.intel.com ([192.55.52.88]:56840 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751305AbdFFNIM (ORCPT ); Tue, 6 Jun 2017 09:08:12 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.39,306,1493708400"; d="scan'208";a="270789068" Message-ID: <1496754476.22624.30.camel@linux.intel.com> Subject: Re: [PATCH v4 02/27] thunderbolt: No need to read UID of the root switch on resume From: Andy Shevchenko To: Mika Westerberg , Greg Kroah-Hartman Cc: Andreas Noever , Michael Jamet , Yehezkel Bernat , Lukas Wunner , Amir Levy , Andy Lutomirski , Mario.Limonciello@dell.com, Jared.Dominguez@dell.com, linux-kernel@vger.kernel.org Date: Tue, 06 Jun 2017 16:07:56 +0300 In-Reply-To: <20170606122519.35401-3-mika.westerberg@linux.intel.com> References: <20170606122519.35401-1-mika.westerberg@linux.intel.com> <20170606122519.35401-3-mika.westerberg@linux.intel.com> Organization: Intel Finland Oy Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.22.6-1 Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1917 Lines: 68 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 > Suggested-by: Andreas Noever > Signed-off-by: Mika Westerberg > Signed-off-by: Andreas Noever > --- >  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 Intel Finland Oy