From patchwork Wed Aug 30 23:19:53 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Manlunas, Felix" X-Patchwork-Id: 807976 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com header.i=@CAVIUMNETWORKS.onmicrosoft.com header.b="gtW5S4q+"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xjLzh17W6z9s7F for ; Thu, 31 Aug 2017 09:18:56 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751110AbdH3XSx (ORCPT ); Wed, 30 Aug 2017 19:18:53 -0400 Received: from mail-sn1nam01on0077.outbound.protection.outlook.com ([104.47.32.77]:59328 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751155AbdH3XSw (ORCPT ); Wed, 30 Aug 2017 19:18:52 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=bE1IAZbYo4r+tStQFMcKTjFcKmzB1USHpiQjOQCPbXE=; b=gtW5S4q+x5rjXvnK5vxGwbYeE0Da15u3ConvuT/O5Fgrn9kcDL/jmNSATsK1Q01sGiu9Jqa1R+fa91oi6sp93cnM1m26DJE7D5PT88vrSQ5g8EzhDlVwY7C3HhT/1GK5oDy+7XmAe6QjFMNOLTGDjsRuf45I7SCVZkMtflPms6s= Received: from localhost (50.233.148.156) by BN6PR07MB3171.namprd07.prod.outlook.com (10.172.105.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.13.10; Wed, 30 Aug 2017 23:18:49 +0000 Date: Wed, 30 Aug 2017 16:19:53 -0700 From: Felix Manlunas To: davem@davemloft.net Cc: netdev@vger.kernel.org, raghu.vatsavayi@cavium.com, derek.chickles@cavium.com, satananda.burla@cavium.com, ricardo.farrington@cavium.com Subject: [PATCH net-next] liquidio: fix crash in presence of zeroed-out base address regs Message-ID: <20170830231953.GA14744@felix-thinkpad.cavium.com> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.6.1 (2016-04-27) X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: MWHPR22CA0048.namprd22.prod.outlook.com (10.168.250.162) To BN6PR07MB3171.namprd07.prod.outlook.com (10.172.105.141) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a7159233-440f-429d-a0f6-08d4effd78e4 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:BN6PR07MB3171; X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3171; 3:6ipoK3F/vX9joaplUM+Acbexf4opcIm6RRB+TXzuve6zAG+xjkpoh828S9qy0ZEntFMBKxxwDt2dKeq+jHHo9GYyp48cQbNP1DRQ7Ma41PvmGMW4vND4K861YTkMIF6tqgcxQAq3NiOcmcX0LmRtBDPLUxiVdkjKiuJOGyRw6xAg4cK0QtNKw3dOymXAepx2meqbFC6vhZj5A3m6Im3XGJeLtOKeGaFMuP8Vv4lRNRm56s1lItBDD/iZLvfKYCj0; 25:49KXzu2/Ok1egWROJb7eymJgI9tw/JaZKrFpbb5BWN3trXtsxO7oGCYiRwBNgT3BH4GJ/8PUT+L/F4X0GxFtRN0c4175fZrQkt4TJMUf7XbcTcV+e6l+ot9iDqLC5+p4bBxfileCkXfdyCAT+CLNigsANj8CnNNb5haal4XOu19uIbZnHAvqoj1csPEEfL9xP4VhmqIA7FvkCWHewFGuwWxHe+WqKabAzXFIGc9gBwEMI5FRvaB7MDEYdHAUP6sPHVJXBcXmn1c4DzAWLgSZVvn2elBRiPvorqQ2IbVgK4srHI/ALir/9c+7RzZ7Yc5nbA215OD5wuldSxNmQENdwQ==; 31:nL0W9zWiJNtrSy7J4ph8KyL/RVKloXw+uZ0dcANjCXL0Jriv0mA5PG40BEd3QWk5kyFOtI6a9AhcYTj6mR11hcOooiQIdSDBvlufKKPIzq3TgKVs7AG7vl64Gj3G/ZRn5Sac8SuvwnspkMDe/fMABUXZ0aZngj7CZx7UOveZlnL0J3cB5sSfhMsnawtuexY4Txq8Mibzq/MWdssHdkFkmcwrGLzY5DPTRijZcyMm0Ww= X-MS-TrafficTypeDiagnostic: BN6PR07MB3171: X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3171; 20:wbRZ5a5IdkM6lm3aqgxltYsORRPlNyJeylKKrK6NzKhHeva0C46CSptukb3Ub9DNQOfHZkIFA4bmqt3qPXl64dCnBMqiZFh8kyUUmZL0pifpcJdfaDyIGd/a5p3DMmI6qvSZjePFfCO9Lj/LVVyk7J/t5pJcOeJVBUV9B7+S3+hDcM73zQ4w0/c1E61yXKV4uxPTGv9f8gq5lrfIDNBjAApxqIRnVqAT2MTjPB0a59eSsmVyU14JO2W9++N/SXqZXsZvq71KLBZV4mTmZ+CjUv7G4WGeTSu19bZXeZIcqOggzLdO+F6pKL5V0h/I3wPHMl/bAnrSZ0JGNWpzP9Zl4ffFvJaAOtEKcyybL34iIjE135qWzo9r4oxCwL5sLXaUb4i04GxR4qfbLZlkJmd93N51QqpELL4Tl11BGG/qOyPdBl0e6BpEKzZtbskCZ6KMcMetP/KVZ+1p+u+/PPPUVkJoCBzghlOzXaREeomdO+Xbz82uVR1MyxB4d5ulAHjC; 4:qrXRmtFppA0HCbsz37jsllxDmNNX9EeN7Oqbzo/RvFdxT2HGl0Ob09MWc5CDGHlOwJ1CO8+Sp5VF8D0cV0G6/FagX8ajh+0cBgVHEfHC1r3EUHDMr/Yt4poMSDSzgT555/7TysqoCcbVkZoFbAVWDqgazOnpXvKLW2dl9BI3M6nKdRJBSXraL2O1P0r7Z3ksek+J0LUdkkyUfWx5XA30rdlKYIp9d4cW6lflPLdE8zpLN/yHt5+npwr10YCJHIWa X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(10201501046)(100000703101)(100105400095)(3002001)(93006095)(93001095)(6041248)(20161123564025)(20161123558100)(20161123560025)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BN6PR07MB3171; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BN6PR07MB3171; X-Forefront-PRVS: 041517DFAB X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(6069001)(199003)(189002)(1076002)(86362001)(575784001)(3846002)(97736004)(2361001)(189998001)(68736007)(6486002)(4001350100001)(23726003)(6116002)(478600001)(50466002)(72206003)(5660300001)(83506001)(53936002)(76506005)(6666003)(33656002)(110136004)(107886003)(54356999)(106356001)(105586002)(6496005)(305945005)(2906002)(50986999)(7736002)(2351001)(8676002)(81166006)(6916009)(81156014)(42186005)(8936002)(47776003)(4326008)(101416001)(66066001)(25786009)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR07MB3171; H:localhost; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Felix.Manlunas@cavium.com; X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3171; 23:hnwgPciU+gUuEwlo3E62EKE43EkMbsYS6P0eXXYDVWyBSwOJ97qW/wmxVhzvQqiCtKZZZP5gyACMH5aEZl7CsA3v+xgzdU4YdBJQQ86a7uBcfZ9Na7rIlhT2s+v1HObnmKSZ8/B3UbEIFGxhwCU4FWlzlhTQEJXrxDX2vQjUUbJWViqak4hsM0B9EhinSpk310UhrlEDAS41Ti3zCngyR/L2a9OyZVp17zO3/xdSdKNpqBWB7NV3ednvW8L625gSDhlgBX9Akfxku+QXP8GAwAJ5ln/4IimYnTkLuIuKf4KvmoTeajszZCPdNo3egheQWwp1mQDIENCAGs1eKZqLuzDUoLUpQyvz9KOlByCXtcwYwKzJg7ssctBL3fMDTR7JUiGbi2xdffhP/MU/jNkcEfoZRUA3Yqvf99JkdkRyILo05ARxFdPmuffMjZFATeqwWpJmCVukVcFpeGSP5JC3K79ihwdPW3onbFbCa3FOPXb22gxUVNh5kQA65UB2AxYECd4UlqTurcAGlhWek6QQ9gIArbrQVqLfsprBP94ec3IP0XjudHWf0xSnuW0Jm7ymK+AV9FRuB8oak8b56B74W7WI/sehDlbeooZdgysNezNRDpTiCCCzsssK5nPSiDk8H/8bz4LDnStLF9Mxmbzbr8azp3AZ4RFdpWzIdF6qH++tCOEbjSewonhmMs01uNToKUVTWRr/iu3GCE5onarK1S3yGyR0PKfiAUZzxGKOAZjTWhbQOBCyAI+9zQsoKk2yfu6UsVf/yHuvHztKPrfdoYKd6MkXViX14Ib1NH/WFUiteJWgmy5Rh/JjxWAyA9YUgLklOXx6xTjna8B0x2fBDsUBc0d0ZdwKu6yRAjDvhTaqX1n6MkCNOOkPpP40FIN2qIgR1Nwsmvn37F6HGQFw5yN/CVjfa+c1El6BDjoFF4dWMPn8EnHHHV3f7L6jNKHF6S0ItkCP2Tw14bqrC2skYKIizRM4LRW+6zW3u9XQaRqIVLDULHFtOXocxPta4AC6lMqEYzQhDuDMzrw592Ktn9xF5XYBtEy/sdE0E5Sfk1IMIkL4qIBZhlgz9F4H6WnK7Hng3IPzxkYLUeZofGJ2OuemD7hUZO1q1gVu9a7Ijb/aTBfFrNgS5nUhpC3o7FDr X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3171; 6:26EDH0OwOxS7jE6nya/OGsLvmuMZ1TsnFnHFcJ5j5/Cr5x/CbXrSkDFqExsClUwqecK/sEY2z6mSH3CvziW+fU1pXfx4ADy16J5amAJ7jpacLZQl8EFcYFgDiAWsYpwCAAoMhDPEiN1efwjkvtJxYRhtba+fKu0I7ghekjuF0AbRh0O26sDgX1PBj8RFirt+M+CvRa9qf0ekLwYdOlIK+QpLMN+mJ1VFpfrXsZVU9nmeRppPLFhJ2AYIfqvVA9S7yVO+4A9PrC0CxEg+/o7L805bkrghdRVY7xr8UOEfEm8F3V1zxOXTlJKSHMJHUvurELNAQk09Qx2h3UfHkxDN+A==; 5:vSIDCVX6MeHyFuuawqppWaUYwSJtOwmWxs5VpF3DB3byUf3EU4SqwkASygFusYuOG9821xaBaw5jbjR6s4mojKfMeIBO9B0sXK6/cX9uojNlW8KHlmJGfFJQzLLMjL1TTfrVgbuOQbtS0sT/IxeVig==; 24:Ldt8aPHgqbsYVpxJAZataiRKig2UKp608QzZNZZFkRI9eVSoZdO7DB5qzkA3MKtJKfHa5Uth4x1aHpVIkRfO1aamGfTjltFqokNwf1S5LZc=; 7:i3B1OR8f1Z9OIhTCmPT5MnJGIZN8lBONJDl+jrlAkLU08reWxYk+SCzu87uZ4jtGr5bBltqJcuUowBQrhVeQZlxreYt4mmWZqXDOo3tvv3yKPDBLkLfRcu+c93OypLg8BVkvbwd89eAwipoupuygRhc3QwtFuPJSuJbqnf3gHdNeKKkiTKU7LygzDzLrlq6AFWk+Eu3xkusDpxHar5lHL2CtBe7xkk9qqvh2XZJqzuU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Aug 2017 23:18:49.8024 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR07MB3171 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Rick Farrington Fix crash in linux PF driver when BARs have been cleared/de-programmed; fail early init (prior to mapping BARs) if the BAR0 or BAR1 registers are zero. This situation can arise when the PF is added to a VM (PCI pass-through), then a PF FLR is issued (in the VM). After this occurs, the BAR registers will be zero. If we attempt to load the PF driver in the host (after VM has been shutdown), the host can reset. Signed-off-by: Rick Farrington Signed-off-by: Raghu Vatsavayi Signed-off-by: Felix Manlunas --- .../net/ethernet/cavium/liquidio/cn23xx_pf_device.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c b/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c index 4b0ca9f..8705e23 100644 --- a/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c +++ b/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c @@ -1269,6 +1269,26 @@ static int cn23xx_sriov_config(struct octeon_device *oct) int setup_cn23xx_octeon_pf_device(struct octeon_device *oct) { + u32 data32; + u64 BAR0, BAR1; + + pci_read_config_dword(oct->pci_dev, PCI_BASE_ADDRESS_0, &data32); + BAR0 = (u64)(data32 & ~0xf); + pci_read_config_dword(oct->pci_dev, PCI_BASE_ADDRESS_1, &data32); + BAR0 |= ((u64)data32 << 32); + pci_read_config_dword(oct->pci_dev, PCI_BASE_ADDRESS_2, &data32); + BAR1 = (u64)(data32 & ~0xf); + pci_read_config_dword(oct->pci_dev, PCI_BASE_ADDRESS_3, &data32); + BAR1 |= ((u64)data32 << 32); + + if (!BAR0 || !BAR1) { + if (!BAR0) + dev_err(&oct->pci_dev->dev, "device BAR0 unassigned\n"); + if (!BAR1) + dev_err(&oct->pci_dev->dev, "device BAR1 unassigned\n"); + return 1; + } + if (octeon_map_pci_barx(oct, 0, 0)) return 1;