Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp2312106ybi; Thu, 4 Jul 2019 08:38:32 -0700 (PDT) X-Google-Smtp-Source: APXvYqzMHwgvaLodYbqNlt2rP3MVF18kLOXgXPG6O66tVGYI9RKm5yppqQBC88H9ARPxWA8/Hbqk X-Received: by 2002:a17:90a:228b:: with SMTP id s11mr192439pjc.23.1562254712604; Thu, 04 Jul 2019 08:38:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1562254712; cv=none; d=google.com; s=arc-20160816; b=quXhPejvTEMlDmJrTgm6EKY/bs7YVhw4aEQiSuB/K5Itm4RTwBaqLc/YLKxc2T0A/P 3hofluKt22cFlDkjmp9YgcxXnGREqWNACz8FiyNzf6fxI/9aVxsxUxzjXzABK2cjVbkr eMtRn7GzTvFinn7sMF3HADtWFDBWPPJQsqi3AgiyRYY/0TV7OL5hNS3lk0oLWobF/Zzx yC2fX2UeGKsTAlakyYyGQTyrlkke1JiFlveWC1j8xdp3B96SqB9r2TzaKl0qfdg3P9Xw c7FxW87v9+OLMJidNH7wGRK8nhWZvLQe1EdZ/Nk9Ufw6wEwYrHw2kthorqe+gVHvWdFB 7myw== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=HdH/Nk62kEL52wkv2n3J5rEQY3EHxaipdQyu7HMvNx8=; b=bN2e3yOtMtDiDW1np1D9DQl7X3fZ0NRsDNKF9EaQZZ3FQn1wqyddljB8UF3zJ29UKA HMvt8ARlBzkl6z2uRghQ8thcqY/UnetRG2Zj7JoCO9N/S3cdeSe0zJrsV2s0YXaw8zkP +tRqhGZwdnnW0DnAvBLtr6Dhnut9qoRz4YjOY/kgx2VVseLCNTjHflx5M6Gj78m1pxzL BbBJunFJUzLAGRmWBk8pZDUoeVQ5EUN73sJC6ojqTVSdjEjeEFWUP6Y3hRiM5oy08C17 lkjKc2R+qRaUciv4KvDT6/idI5F2FtbWiVqjY3EX2BHHbDLbBllE3JTo5whoX0PnHdT/ ohUw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=dsTkiQvc; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f15si6146135plr.260.2019.07.04.08.38.17; Thu, 04 Jul 2019 08:38:32 -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; dkim=pass header.i=@gmail.com header.s=20161025 header.b=dsTkiQvc; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727840AbfGDPgN (ORCPT + 99 others); Thu, 4 Jul 2019 11:36:13 -0400 Received: from mail-qk1-f196.google.com ([209.85.222.196]:46673 "EHLO mail-qk1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727829AbfGDPgM (ORCPT ); Thu, 4 Jul 2019 11:36:12 -0400 Received: by mail-qk1-f196.google.com with SMTP id r4so5776528qkm.13; Thu, 04 Jul 2019 08:36:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=HdH/Nk62kEL52wkv2n3J5rEQY3EHxaipdQyu7HMvNx8=; b=dsTkiQvc5z3LvtqOIo/E5XpuO0y+r0xouyfc4SpEEyq4tyJdiSQqcQoF9tRJP6KWwr IU2ngTaeT8j/i+kavc8vDHHrZoES79xrjFV1Ejc4GogSJbWYqIeFnAWSstSlocbkO3c5 kR/ejo3uA6H4jRafN7ocX/GyXDAdnuo9P7/jLYe9nG1Dz6DpxHRLKX44obELtWrzsBC0 t4K6LZBKziKsxIhWa/G5GdCL9YhlV0xsYW5wxXr66TqYrnSpnVH6cyK7mAXLTR+aWmGc rbTGKQ0jNq9nNtKfPrvgR9IeKNrtbamOPWO6WG9g6QO7PHHZMeeTeMYZE/KfLAalKuH2 nR3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=HdH/Nk62kEL52wkv2n3J5rEQY3EHxaipdQyu7HMvNx8=; b=C7VDCVZ8Ex78HKhUyccZ8AxGl2lq3IDJTSD3yOlRicdzkMEoLb92FA9pFMkpKYgonU DGXH8b/oWb6OZqCCYIrnoQdlwdxSxrp8NfY7B3SyUBVSwT0/YpFe9s/GhN984Gduj+Qd 0G5lBH3hRPMFx3JJ0XQ3fk7o3JMMp4lDC/AYEmfQIQj8Ez93upIpS1ZcOe8XjhVET240 9GA7f12GphL18kl9XYGJeG3AfpAWc1QC5o5Evg/3e60M8SBrMXENb923canXF2zPO8PF QydrRypVZDyHEviSoy338Q5UYWGIuqZnNvX5R80BWW6i1X5KJuPAtYGzCSR0n6Gvt8nt zZDA== X-Gm-Message-State: APjAAAVNwQqPyiVlmx01sExRgG69p/u3Xk8pnfJTFSBhUkuJT/NYnfZV dVt9oHww4HlXjk1cwYx8qeM= X-Received: by 2002:a37:62cd:: with SMTP id w196mr1832076qkb.373.1562254571536; Thu, 04 Jul 2019 08:36:11 -0700 (PDT) Received: from localhost.localdomain (pool-72-93-241-64.bstnma.fios.verizon.net. [72.93.241.64]) by smtp.gmail.com with ESMTPSA id 67sm2087140qkh.108.2019.07.04.08.36.10 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Thu, 04 Jul 2019 08:36:11 -0700 (PDT) From: Ryan Kennedy To: gregkh@linuxfoundation.org, mathias.nyman@intel.com, stern@rowland.harvard.edu Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Ryan Kennedy Subject: [PATCH 1/2] usb: pci-quirks: Correct AMD PLL quirk detection Date: Thu, 4 Jul 2019 11:35:28 -0400 Message-Id: <20190704153529.9429-2-ryan5544@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190704153529.9429-1-ryan5544@gmail.com> References: <20190704153529.9429-1-ryan5544@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The AMD PLL USB quirk is incorrectly enabled on newer Ryzen chipsets. The logic in usb_amd_find_chipset_info currently checks for unaffected chipsets rather than affected ones. This broke once a new chipset was added in e788787ef. It makes more sense to reverse the logic so it won't need to be updated as new chipsets are added. Note that the core of the workaround in usb_amd_quirk_pll does correctly check the chipset. Signed-off-by: Ryan Kennedy --- drivers/usb/host/pci-quirks.c | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c index 3ce71cbfbb58..ad05c27b3a7b 100644 --- a/drivers/usb/host/pci-quirks.c +++ b/drivers/usb/host/pci-quirks.c @@ -205,7 +205,7 @@ int usb_amd_find_chipset_info(void) { unsigned long flags; struct amd_chipset_info info; - int ret; + int need_pll_quirk = 0; spin_lock_irqsave(&amd_lock, flags); @@ -219,21 +219,28 @@ int usb_amd_find_chipset_info(void) spin_unlock_irqrestore(&amd_lock, flags); if (!amd_chipset_sb_type_init(&info)) { - ret = 0; goto commit; } - /* Below chipset generations needn't enable AMD PLL quirk */ - if (info.sb_type.gen == AMD_CHIPSET_UNKNOWN || - info.sb_type.gen == AMD_CHIPSET_SB600 || - info.sb_type.gen == AMD_CHIPSET_YANGTZE || - (info.sb_type.gen == AMD_CHIPSET_SB700 && - info.sb_type.rev > 0x3b)) { + switch (info.sb_type.gen) { + case AMD_CHIPSET_SB700: + need_pll_quirk = info.sb_type.rev <= 0x3B; + break; + case AMD_CHIPSET_SB800: + case AMD_CHIPSET_HUDSON2: + case AMD_CHIPSET_BOLTON: + need_pll_quirk = 1; + break; + default: + need_pll_quirk = 0; + break; + } + + if (!need_pll_quirk) { if (info.smbus_dev) { pci_dev_put(info.smbus_dev); info.smbus_dev = NULL; } - ret = 0; goto commit; } @@ -252,7 +259,7 @@ int usb_amd_find_chipset_info(void) } } - ret = info.probe_result = 1; + need_pll_quirk = info.probe_result = 1; printk(KERN_DEBUG "QUIRK: Enable AMD PLL fix\n"); commit: @@ -263,7 +270,7 @@ int usb_amd_find_chipset_info(void) /* Mark that we where here */ amd_chipset.probe_count++; - ret = amd_chipset.probe_result; + need_pll_quirk = amd_chipset.probe_result; spin_unlock_irqrestore(&amd_lock, flags); @@ -277,7 +284,7 @@ int usb_amd_find_chipset_info(void) spin_unlock_irqrestore(&amd_lock, flags); } - return ret; + return need_pll_quirk; } EXPORT_SYMBOL_GPL(usb_amd_find_chipset_info); -- 2.21.0