From: Mika Westerberg <mika.westerberg@linux.intel.com> To: linux-kernel@vger.kernel.org Cc: Andreas Noever <andreas.noever@gmail.com>, Michael Jamet <michael.jamet@intel.com>, Yehezkel Bernat <YehezkelShB@gmail.com>, "Rafael J. Wysocki" <rjw@rjwysocki.net>, Len Brown <lenb@kernel.org>, Lukas Wunner <lukas@wunner.de>, Mario.Limonciello@dell.com, Anthony Wong <anthony.wong@canonical.com>, Rajmohan Mani <rajmohan.mani@intel.com>, Raanan Avargil <raanan.avargil@intel.com>, David Laight <David.Laight@ACULAB.COM>, Mika Westerberg <mika.westerberg@linux.intel.com>, linux-acpi@vger.kernel.org Subject: [PATCH v3 6/8] thunderbolt: Expose active parts of NVM even if upgrade is not supported Date: Mon, 19 Aug 2019 14:22:21 +0300 Message-ID: <20190819112223.15359-7-mika.westerberg@linux.intel.com> (raw) In-Reply-To: <20190819112223.15359-1-mika.westerberg@linux.intel.com> Ice Lake Thunderbolt controller NVM firmware is part of the BIOS image which means it is not writable through the DMA port anymore. However, we can still read it so we can keep nvm_version and active parts of NVM. This way users still can find out the active NVM version and other potentially useful information directly from Linux. Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com> Reviewed-by: Yehezkel Bernat <YehezkelShB@gmail.com> --- drivers/thunderbolt/switch.c | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/drivers/thunderbolt/switch.c b/drivers/thunderbolt/switch.c index bd3eaaf34ea1..531f11fecf75 100644 --- a/drivers/thunderbolt/switch.c +++ b/drivers/thunderbolt/switch.c @@ -364,12 +364,14 @@ static int tb_switch_nvm_add(struct tb_switch *sw) nvm->active = nvm_dev; } - nvm_dev = register_nvmem(sw, nvm->id, NVM_MAX_SIZE, false); - if (IS_ERR(nvm_dev)) { - ret = PTR_ERR(nvm_dev); - goto err_nvm_active; + if (!sw->no_nvm_upgrade) { + nvm_dev = register_nvmem(sw, nvm->id, NVM_MAX_SIZE, false); + if (IS_ERR(nvm_dev)) { + ret = PTR_ERR(nvm_dev); + goto err_nvm_active; + } + nvm->non_active = nvm_dev; } - nvm->non_active = nvm_dev; sw->nvm = nvm; return 0; @@ -398,7 +400,8 @@ static void tb_switch_nvm_remove(struct tb_switch *sw) if (!nvm->authenticating) nvm_clear_auth_status(sw); - nvmem_unregister(nvm->non_active); + if (nvm->non_active) + nvmem_unregister(nvm->non_active); if (nvm->active) nvmem_unregister(nvm->active); ida_simple_remove(&nvm_ida, nvm->id); @@ -1355,8 +1358,11 @@ static umode_t switch_attr_is_visible(struct kobject *kobj, sw->security_level == TB_SECURITY_SECURE) return attr->mode; return 0; - } else if (attr == &dev_attr_nvm_authenticate.attr || - attr == &dev_attr_nvm_version.attr) { + } else if (attr == &dev_attr_nvm_authenticate.attr) { + if (sw->dma_port && !sw->no_nvm_upgrade) + return attr->mode; + return 0; + } else if (attr == &dev_attr_nvm_version.attr) { if (sw->dma_port) return attr->mode; return 0; @@ -1707,13 +1713,17 @@ static int tb_switch_add_dma_port(struct tb_switch *sw) break; } - if (sw->no_nvm_upgrade) + /* Root switch DMA port requires running firmware */ + if (!tb_route(sw) && sw->config.enabled) return 0; sw->dma_port = dma_port_alloc(sw); if (!sw->dma_port) return 0; + if (sw->no_nvm_upgrade) + return 0; + /* * Check status of the previous flash authentication. If there * is one we need to power cycle the switch in any case to make -- 2.23.0.rc1
next prev parent reply index Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-08-19 11:22 [PATCH v3 0/8] thunderbolt: Intel Ice Lake support Mika Westerberg 2019-08-19 11:22 ` [PATCH v3 1/8] thunderbolt: Correct path indices for PCIe tunnel Mika Westerberg 2019-08-19 11:22 ` [PATCH v3 2/8] thunderbolt: Move NVM upgrade support flag to struct icm Mika Westerberg 2019-08-19 11:22 ` [PATCH v3 3/8] thunderbolt: Use 32-bit writes when writing ring producer/consumer Mika Westerberg 2019-08-19 11:22 ` [PATCH v3 4/8] thunderbolt: Do not fail adding switch if some port is not implemented Mika Westerberg 2019-08-19 11:22 ` [PATCH v3 5/8] thunderbolt: Hide switch attributes that are not set Mika Westerberg 2019-08-19 11:22 ` Mika Westerberg [this message] 2019-08-19 11:22 ` [PATCH v3 7/8] thunderbolt: Add support for Intel Ice Lake Mika Westerberg 2019-08-19 11:22 ` [PATCH v3 8/8] ACPI / property: Add two new Thunderbolt property GUIDs to the list Mika Westerberg 2019-08-19 16:29 ` [PATCH v3 0/8] thunderbolt: Intel Ice Lake support Mario.Limonciello 2019-08-19 17:57 ` Mika Westerberg 2019-08-19 18:22 ` Mario.Limonciello 2019-08-19 19:36 ` Mario.Limonciello 2019-08-20 10:01 ` Mika Westerberg 2019-08-20 11:34 ` Lukas Wunner 2019-08-20 17:00 ` Mario.Limonciello 2019-08-26 9:20 ` Mika Westerberg
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190819112223.15359-7-mika.westerberg@linux.intel.com \ --to=mika.westerberg@linux.intel.com \ --cc=David.Laight@ACULAB.COM \ --cc=Mario.Limonciello@dell.com \ --cc=YehezkelShB@gmail.com \ --cc=andreas.noever@gmail.com \ --cc=anthony.wong@canonical.com \ --cc=lenb@kernel.org \ --cc=linux-acpi@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=lukas@wunner.de \ --cc=michael.jamet@intel.com \ --cc=raanan.avargil@intel.com \ --cc=rajmohan.mani@intel.com \ --cc=rjw@rjwysocki.net \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Linux-ACPI Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/linux-acpi/0 linux-acpi/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 linux-acpi linux-acpi/ https://lore.kernel.org/linux-acpi \ linux-acpi@vger.kernel.org public-inbox-index linux-acpi Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.linux-acpi AGPL code for this site: git clone https://public-inbox.org/public-inbox.git