Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp1457838ybi; Fri, 2 Aug 2019 16:22:44 -0700 (PDT) X-Google-Smtp-Source: APXvYqyRYxZVyglgRpjyJQCLYFMcqILGfEtYFr571We+9ELrhE7a9RrW7nJQsoQh/jST8JGPlo2E X-Received: by 2002:a17:902:8a8a:: with SMTP id p10mr136139247plo.88.1564788164352; Fri, 02 Aug 2019 16:22:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564788164; cv=none; d=google.com; s=arc-20160816; b=LCiB2ddBWPJa+jP9c2ZRE/KzTl4lZnCsVVTsP9dsdDkZEj1djOcUE+kU7WLFAsCSa/ 65qawhaE/IjYiRu9sK1ctOEmjJeSBpR6Bo8M5WdA0e30mJXAbQDvJeDbcq/L9aKBJY8X a4fPlINU+jxPUJHGgls9ZfhSO0f9oQUByJ6RWsW+3F3tH8ESN7f8UdyAZ8J/lDDyo9WL Z7ESH6hBSqhqtj0df+KCSwsML0IoqYU9mEosSMLE8YHTa6PID8t3TDLI0eVTHZAKjkHJ vNumgPBMhOYs6KAm+m4Fvy+aWN2HIVviYkCT1PEcRFWDHmjj5ieYdFnGfKO4JvmYTzNB ZPcw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :organization:references:in-reply-to:message-id:subject:cc:to:from :date; bh=PVy1mrjN3ohvsVJtbZ/4D2zu+EhFxmA4pz1CY9fnc/A=; b=xHJd53B1p8flGgV1kcbRA+mArmqF+kEne4flj3j1xGBxkgOZy0fCkmRFS77+S0fJlB gs62ykDp2q0Phpug0FPDpB3aldDRW4IBQGQqGNZtwKVmYDY8ePT73XNPjIdpSAtbos8X RONNzFGoEnvLWHaFSv/OO84z0m1OgimmTkncepzv22rPZh6zQHnsgeaSJVWmOgdn5M2D lFitHMSGrIGVpy6IniuJn9DvNeSGsTO/4HYZP40uXlvQq4gFE8/FZrAMfYAcb4r8XtwQ FTBr96nVJp8/Z+9Krc0XBv5nc4fQ2ZxpCG5RDHd9oeqqeq5Wz5pNb0eTe2RDGQBqlC80 LdmQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d6si2269705pgu.153.2019.08.02.16.22.29; Fri, 02 Aug 2019 16:22:44 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2405155AbfHBMym (ORCPT + 99 others); Fri, 2 Aug 2019 08:54:42 -0400 Received: from mx2.suse.de ([195.135.220.15]:39686 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2404889AbfHBMyk (ORCPT ); Fri, 2 Aug 2019 08:54:40 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 983BEAD85; Fri, 2 Aug 2019 12:54:39 +0000 (UTC) Date: Fri, 2 Aug 2019 14:54:38 +0200 From: Jean Delvare To: Linux I2C Cc: Wolfram Sang , linux-kernel@vger.kernel.org, Andrew Cooks , linux-acpi@vger.kernel.org, platypus-sw@opengear.com, "Tobin C . Harding" , Guenter Roeck , Will Wagner Subject: [PATCH v5 2/3] i2c: piix4: Fix probing of reserved ports on AMD Family 16h Model 30h Message-ID: <20190802145438.601c9a8c@endymion> In-Reply-To: <20190802145109.38dd4045@endymion> References: <20190802145109.38dd4045@endymion> Organization: SUSE Linux X-Mailer: Claws Mail 3.17.3 (GTK+ 2.24.32; x86_64-suse-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Prevent bus timeouts and resets on Family 16h Model 30h by not probing reserved Ports 3 and 4. According to the AMD BIOS and Kernel Developer's Guides (BKDG), Port 3 and Port 4 are reserved on the following devices: - Family 15h Model 60h-6Fh - Family 15h Model 70h-7Fh - Family 16h Model 30h-3Fh Based on earlier work by Andrew Cooks. Reported-by: Andrew Cooks Signed-off-by: Jean Delvare --- Changes since v4: * Fix subject line * Drop local variable port_count, use piix4_adapter_count everywhere to represent the maximum number of main SMBus ports * Exclude early Hudson2 implementations from this change drivers/i2c/busses/i2c-piix4.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) --- linux-5.2.orig/drivers/i2c/busses/i2c-piix4.c 2019-08-02 14:08:17.003820098 +0200 +++ linux-5.2/drivers/i2c/busses/i2c-piix4.c 2019-08-02 14:15:38.284423549 +0200 @@ -72,7 +72,8 @@ #define PIIX4_BLOCK_DATA 0x14 /* Multi-port constants */ -#define PIIX4_MAX_ADAPTERS 4 +#define PIIX4_MAX_ADAPTERS 4 +#define HUDSON2_MAIN_PORTS 2 /* HUDSON2, KERNCZ reserves ports 3, 4 */ /* SB800 constants */ #define SB800_PIIX4_SMB_IDX 0xcd6 @@ -806,6 +807,7 @@ MODULE_DEVICE_TABLE (pci, piix4_ids); static struct i2c_adapter *piix4_main_adapters[PIIX4_MAX_ADAPTERS]; static struct i2c_adapter *piix4_aux_adapter; +static int piix4_adapter_count; static int piix4_add_adapter(struct pci_dev *dev, unsigned short smba, bool sb800_main, u8 port, bool notify_imc, @@ -865,7 +867,15 @@ static int piix4_add_adapters_sb800(stru int port; int retval; - for (port = 0; port < PIIX4_MAX_ADAPTERS; port++) { + if (dev->device == PCI_DEVICE_ID_AMD_KERNCZ_SMBUS || + (dev->device == PCI_DEVICE_ID_AMD_HUDSON2_SMBUS && + dev->revision >= 0x1F)) { + piix4_adapter_count = HUDSON2_MAIN_PORTS; + } else { + piix4_adapter_count = PIIX4_MAX_ADAPTERS; + } + + for (port = 0; port < piix4_adapter_count; port++) { retval = piix4_add_adapter(dev, smba, true, port, notify_imc, piix4_main_port_names_sb800[port], &piix4_main_adapters[port]); @@ -987,7 +997,7 @@ static void piix4_adap_remove(struct i2c static void piix4_remove(struct pci_dev *dev) { - int port = PIIX4_MAX_ADAPTERS; + int port = piix4_adapter_count; while (--port >= 0) { if (piix4_main_adapters[port]) { -- Jean Delvare SUSE L3 Support