From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S939143AbdEYUcn (ORCPT ); Thu, 25 May 2017 16:32:43 -0400 Received: from mail-sn1nam02on0045.outbound.protection.outlook.com ([104.47.36.45]:4608 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S937165AbdEYUcj (ORCPT ); Thu, 25 May 2017 16:32:39 -0400 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com; From: Roy Pledge To: , , , CC: , Roy Pledge Subject: [PATCH] soc/fsl/qbman: Check if CPU is offline when initializing portals Date: Thu, 25 May 2017 16:32:32 -0400 Message-ID: <1495744352-22476-1-git-send-email-roy.pledge@nxp.com> X-Mailer: git-send-email 2.7.4 Reply-To: X-EOPAttributedMessage: 0 X-Matching-Connectors: 131402179564866518;(91ab9b29-cfa4-454e-5278-08d120cd25b8);() X-Forefront-Antispam-Report: CIP:192.88.158.2;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(336005)(39450400003)(39410400002)(39840400002)(39850400002)(39400400002)(39860400002)(39380400002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(9170700003)(5003940100001)(85426001)(81166006)(97736004)(2201001)(8936002)(8656002)(54906002)(53936002)(105606002)(50466002)(4326008)(498600001)(356003)(48376002)(36756003)(104016004)(2906002)(106466001)(77096006)(33646002)(5660300001)(305945005)(43066003)(50986999)(3450700001)(86362001)(8676002)(50226002)(47776003)(189998001)(38730400002)(2101003);DIR:OUT;SFP:1101;SCL:1;SRVR:BL2PR03MB164;H:az84smr01.freescale.net;FPR:;SPF:Fail;MLV:ovrnspm;MX:1;A:1;PTR:InfoDomainNonexistent;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BN1BFFO11FD002;1:m5recMp3gNTkiCyTQH/epCt3RnGl+wBHWIDol76Bvf9uGscOH19c7ZD/AtCALA85XWKO+nJUUorfW5/ShIrYowShBXKkz/XYToil+EVEjyG5pREsEXV/34eX2hEg6F0LnM5v4GcidfY06noLnOwFClPJr4rxZ+huY88m7l7xjPq0pi/MSsgOc/spHE7iBNw17ZrwvrD7ntHiHB13vJeH4jd+VSUMIBr9qPd8zOopxboV07VGA8VB1UbZ4v2h2DBwyImcdW+/1NCb7UU8Ts6Kue4rC5BSzsLVg0QifC6v7Rjj76Ns6R89Yf2i1N0KR48yQ0/IwefWX2UWp7zxdoev9EwT7iVuHUL5c0SPXZKWWc6q8K9xRUAt36B1NIh0slIYs2miGH1E7obsB7R06BRZtdtS5NrqG4kmIxhxiR0smj4BeiPMXNw+rN8309Sld3NNsc6U7l+zKVPWEzf/UWwDCg+3cni7SLzKbfkc5c52zv/8b+URUPy+xq2bAJZAr0CUuLv3yxn8DatujnaBkAC6OyWTBl9ZfRKK+BApykvYPK1Q4R3iSQEMLjLq2ENBaBhwotwMU+bBThxhEasrInw/OegMBqsHPAXX4NEOn7wk6ln70h3eNkbgzRf/OrrKV8as/4RTWa4tyX2WOqirICzxu2+537ctu+WQcjHrKxE8m3g= MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL2PR03MB164: X-MS-Office365-Filtering-Correlation-Id: ebeabe80-0904-4574-00d6-08d4a3ad2e11 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131430075)(201703131517081);SRVR:BL2PR03MB164; X-Microsoft-Exchange-Diagnostics: 1;BL2PR03MB164;3:s3O0msSyihUyO+Y/LjgEKxoQW3OtSRtV/dZM9dZoviuTbme/Qh5zVBOwl/XKjq6pl+j+EhxPY/X11luqrcQrEtbTIguTItk1sVcQZn3DgS7PmD3/0qX4cul4NcQ3Qyr16xQ9dN7LAsZW+tu4YYOPbeRjAwz0NNnRyZgVhkx2zxcVRHADWTNj/XJ04MRYKrnXHEhuwkHa9vFFBuJxsZAoTBt4I6ll3BS3o+2g6rnEAOBE5wBa68UBGxWYdQ7s//crjfjzYPiok4aIdp37yvmCcSehTDVF8p+BDs9N2D4g4XgKm7uzdF9MNkyHMAR/Mn3UcQLfH7iGsRIxv2H4seyzqI8xBX+BpCEISObfU0f3y+qgGYd/zaGVnMmxhVMjN8jCCGcxW44lITjS+g2RcWyMKlNeS/DktJSjj4yjfLD6LyEZetOTsTkUZmAIM6iEEtLi;25:BTE6JxxBCIgn/xbO6rTo7J1H1VzYA8lbgQz9jQ4Wf13HlbXR6ovMFt+1lAdQZxNhsm3vVicCITxXDunaoLCDn7txx94olnBkqiID59V8OAJ/nKaGrVEVpw2vdFL+HVPvSLB3FwvMdNckiLETALz4+XAvKbCcmVDQVQj9SdKVpzGyzr6TVz0uvn3nwVGbvUWEfbFwnsC/0MqEiNZgQPMtWy4dzkY2wo8/5HZWjKwYlSx1wN5YlzGP9+4JdabweR/aoEOZHkzGUL3PiaouCpy9Z5rrz74qvwpOf52GdQ5IDHBT1mRqXSnx1jSjZyU+Mn4xDT7gJAUoNlAPnvkFu7WPL/sbEUd68ZAWLd4mlG+tvvFgZoxI/J00d69ONoC7MgcNayulEWpeR1RSW06sF9K90yK1CuCqhQdSe1uimVhdpMTap1kcT8bUbuws+J4M8MbFgE+tMj1j0FTdCVSog8mm9iS0aQ/USf2Kw0psNzwNdMQ= X-Microsoft-Exchange-Diagnostics: 1;BL2PR03MB164;31:XtijgblhdNHxI06EpjWfDyLlSqy+L0SNph9zmZWWVKdYAfVfl0jHqyf/Qz7kzKRcIKJmRYBvRW7sHIA6+vTGfOIjvv5dlRJg8akmLZ9yyZN+Y/jdDqwHFcnVQRIbLYi6bRve5yO8yFYqKlDN56OGVlK/lrJzXUQyY13LYKvrlP1V/AuKb/MD6x+U+VBkj/xmwLpS9mTXaAWU9CS89y3UifS531lReDmGHwjQrMTySdCZoMexP2TiJDu3iYybmz5sBmFF8G3S24TlAsUmoD/3mUHk+4lxtWVSY845ZIe5XHU= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(209352067349851)(185117386973197)(227817650892897)(275809806118684); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6095135)(601004)(2401047)(8121501046)(5005006)(13018025)(13016025)(10201501046)(3002001)(93006095)(93001095)(6055026)(6096035)(20161123563025)(20161123561025)(20161123556025)(20161123559100)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(20161123565025);SRVR:BL2PR03MB164;BCL:0;PCL:0;RULEID:(400006);SRVR:BL2PR03MB164; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BL2PR03MB164;4:ATWsSXQa8nWCkT3t/WJPtwrtUSHeZWb6eejNRF/lFpv?= =?us-ascii?Q?dKxN+U12J32vsl+KFMmvKzFr5f21hk5K/XTLN8elJ4fXzJLleGxRdfY4nwT+?= =?us-ascii?Q?oV1Y5GiLprzxB/4N+Xz7bBUImGJtJu2aQwwBuISnhwD0LH6v/hdX8W7+dbdY?= =?us-ascii?Q?AtB8p1qvMxlHiG/VzGU/Rh2erDkMi+KbsRE46XSpA8LUlRZ3pE6gq3IFlOyb?= =?us-ascii?Q?LG6Ws0v03JvYtgkLh2okYl7vCBY5z8p6mT4pbmBJwpkwJBfX/lWpkaNareja?= =?us-ascii?Q?o6Gx66xpM36OmR0VDsQOKOA6ZuBCtozCD9NrDMUQSg6Ty+jCys96W3C7zWii?= =?us-ascii?Q?FLW4mFViHTtWK2Yu/gtUoDBB0YdOaYZjr95cGra9SUbIDiHvrV20PMDmwS+q?= =?us-ascii?Q?SMw5GWrFtGJp0sIOwmMnE/hSpcI0M+PTdWkEhtwVSEagi1gF1HYu7pGUP7BH?= =?us-ascii?Q?I1lrUEQma66zNS1Jc3OvLnTuunPgKBBVsROL3GwXoSca0ZO+nwBckzC32j5X?= =?us-ascii?Q?jtnlangDSW/nOPRzLOSKDXWwzchRyR+YGD/T5QWhghrpBKFPro/Nq9w4yYw6?= =?us-ascii?Q?g8XDyYFpe/W30HxVDFcjRdnvynVHuhRuESRsNYxWxQsr9jEfclpBtCaXeXPN?= =?us-ascii?Q?cm/8+4YVCzW1tDFYpdPs52Yxsi0ZCmXRRUqGuOQBY5ZFZCNTS941F81nst6F?= =?us-ascii?Q?oamwAEK/scnc1M79VQJR8iMcUIf4xDQZwYCQEJ2Z7noDrfzBK/148sODWGfd?= =?us-ascii?Q?CyeXSJkul6VF+Cx/EbcMwkg0DPTftEdAtQuHVj3Tcz69cNRxotV9mkSL5B58?= =?us-ascii?Q?oDiGEOIgqqVPgK9lnesAirbccgJdi3sXqbWgtPQQ2B4RGhR6X8TNCd98Yi/O?= =?us-ascii?Q?ZGEZZ2k0n9KBDedmJZKwbm/TdQnH0yEWs0A4AShfF3OwvbVE4lE54UHJ8gd5?= =?us-ascii?Q?zNk1SSDNmDj7LUWUyF8cNJyWOZZIGlM9laq9o9BGiv6XEB+p0kMngST3MA7n?= =?us-ascii?Q?qH0/slKK6Zby6CYjctVtg?= X-Forefront-PRVS: 0318501FAE X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BL2PR03MB164;23:VloGZagP4WxdVIC8GOhqax3lrS3ljSO7g+1j/q55zS?= =?us-ascii?Q?oI9X+ER6D1qH6bSU8HKjwLWYiBWTMz+bcIemayJ9lCeFJc6D7LTDfcCAKy/3?= =?us-ascii?Q?IeFzo9T064QJFOe6A99p/iA535HVordl7qydYGGxs4rkHnTaPVnOrOI6N/hq?= =?us-ascii?Q?NkWRu2BBc+bDL7wgZVckhcOAwyraXQduNuO5e2P9vxYHCWanFdvlEAqlAjIO?= =?us-ascii?Q?Gvp9E6CCmgoGoZUOaN28IomwVnm6Hz1XloXKhtNMK6kvQpe2gweJwxa8IwQ/?= =?us-ascii?Q?SkDuXy7pPqpXaq75JQRBUTcrdGFkcavsqEuFbHOr/URyBdF7vs9Gj8ymXoi1?= =?us-ascii?Q?3H5XG6aQ4Lr1E5+L3KppTxuhSTw/ERBn4wBD/Rd/duneC+7qbTDarQn3pLPB?= =?us-ascii?Q?yKQCum/fSFglAKRbp/3YJckK1mln3aVP6A3aAsBiHMsEkwmeuMM9gJROWwxq?= =?us-ascii?Q?AK8TZvYdFA9FSsY6OOF/Na4eepH3d9VocpvIgaUl6LcDjj2ceM2LUUr4p7g3?= =?us-ascii?Q?XomIvynEgB54dnmqREh3x6XZWywSkRyTBM/N2yXKKSStB45owxMAtE+7/9O8?= =?us-ascii?Q?zL142e+RzcBYSxh7pFPb1WneY5Vr9JjP3iylAHn9niFJ/lrcyNt+v6XCiAU/?= =?us-ascii?Q?mIpsDkThfzhQG627KH9CrDyu2jUMZGgUHONPjn8mz2kjVi3v+R2fvKGv/ruf?= =?us-ascii?Q?GZ7YKDh9h/mC6jHA1QS7rpsDc5LFCZGN2qaQz1HEwb2rafTIg6Q8/V0T9aBm?= =?us-ascii?Q?nmBBbi3x/iIKwInSSQhClzetsV5B4c+NbmcUvJQO0JpfrfIPm4z66e1rNAG6?= =?us-ascii?Q?eJWodHVWIL8Hw6ZO7/xRGHOO5sL/MRxXIHJnDj/HygDD2NHzZMetazylpgKJ?= =?us-ascii?Q?AdUMdywI+Jg+KhjGjcHFWYlGT+czDy9FMw8B9wLRQoNGNoVAclsIDATibYuy?= =?us-ascii?Q?t8eB3tbYKJSXFvPZlZqoiTJNsCTziVbs+jm78jg2N+8//Zr216snGZS2tcRJ?= =?us-ascii?Q?Ki2zCo1MWfd3m7XPOg3mVXUo9ZaXs4NSDRWHTS95z58ZjRs+6d7WzVyzqhii?= =?us-ascii?Q?CMBbNPyr3LUWhPHnDTWihnaYykJ81xFpFm+8YoXpY5hkNtwLRWpoucCRCrmB?= =?us-ascii?Q?S43UEDLECL+JcatsgXA5SaL590ZlsBj3mLEkTgGqqRgiIYJbaHpur1iQLSqP?= =?us-ascii?Q?whj75/DX01ehFyQWa7wKpvYlOReBMPNXfybrhw8JgNdzYVEEn/Mranmg=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1;BL2PR03MB164;6:dsRvoATqswqDdt0ymvjIEqE8BoKuqn5m0eMlqwOrT8zhJAwKA7pGmZIvkCzl45WT2ycAXjUXv8QSMNACAn+p6SSHFKwlMoOk0mtlBCvIg7PGiCxGbrmzJmAtRT6jAMO7dxbIhwF95VW7LAXLz9CA7e6zXPDLb8We7/ZX+UHJsMei3xj6R2K09pmyR2xZyyb8QgQKKBpfMB++TZVAdVPoD5bPKrrgc4yiNfaoohVkbmK7hadgFIblzPJaMmN86QTS40EeleK4xkBxPx2r0gak3eINrBeMrVlB8ZYx3X3MbXbYzr7YEMQY0J87wCkcNa57yhdgb+YvQT1MzbLcBM57jBKU20ClGPQ0CxM1Ot+V3PCRBDCemk8Fd7rRIlw2jZnqNOxjNY0+sulQZ7+0EN2xHra1eN3LUbbsPfA+5ZJ85xwXCOsfWfpDMUpyYdpbbb5Kh/d+t/HhpO14PelAOsSUmL5G3t6jk3XTxCc1fmmMdojy1wcLeOfjyVGw6PBQv94X8vxdixr2G9MCuTjg0vq/Zg==;5:BAoa+M6+eM69EC7xjrEvF0j179Bx/M3xlnlOm2KT+mcHVSZooUU9r6ZEhpA8JuZCuKFgDzmDJpg6lqXY/dHjojb/bBbr4M1wub+3+3cdQgaxteiRt8IDWzw1Qi64pdoWR3wbvy0MeFLRKs6OctWAfrAOdZ9XKOR70waf6wtdD8laM3Gi3Ukmm4O491mHWNh7;24:wSvvC9r+ixiaib9+k1B9w0RhDnZPcZ5uTWmTlCCCDb4lvO1gy5kga17OZDaCJZ2eyoSf9SJPv31XMyfF1il2AZRPedqM3Td/7oN3aKTSmds= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BL2PR03MB164;7:o2TgHvclpSRrb2ZlrBB6oma3+Lms56tl8lEPHhVMNpxJd0B+XeGkr7KN1nuI0XwNKNKAuSyt3r5Pdaj8JG3nF4axoSmKOCkia659W9wZZKqNyvaf2DB86O7WrRDDKSTBWwzWz14Ob0rquIFaR+QK7jIftnMYUTp63ry7fRsTfdeyUBMkO86qIbsNL/1XGh15FPK1XIgw49K3XufsWDmHoIAVJF4gBgBC28uBinCP6pUwc+bTWPo9NvfB/Y4b5f6dm++3BHNCEthbvqM4qU8ElkR0LkYHkU72Q5dp09u4LQgf5ePOxlIvcsg86uHyhnjqaCWUblAWlIq0ErTCstc69w== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 May 2017 20:32:36.1434 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;Ip=[192.88.158.2];Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2PR03MB164 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If the affine portal for a specific CPU is offline at boot time affine its interrupt to CPU 0. If the CPU is later brought online the hotplug handler will correctly adjust the affinity. Signed-off-by: Roy Pledge --- drivers/soc/fsl/qbman/bman.c | 17 +++++++++++++---- drivers/soc/fsl/qbman/qman.c | 18 +++++++++++++----- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/drivers/soc/fsl/qbman/bman.c b/drivers/soc/fsl/qbman/bman.c index 1fa9099..b72a92c 100644 --- a/drivers/soc/fsl/qbman/bman.c +++ b/drivers/soc/fsl/qbman/bman.c @@ -560,10 +560,19 @@ static int bman_create_portal(struct bman_portal *portal, dev_err(c->dev, "request_irq() failed\n"); goto fail_irq; } - if (c->cpu != -1 && irq_can_set_affinity(c->irq) && - irq_set_affinity(c->irq, cpumask_of(c->cpu))) { - dev_err(c->dev, "irq_set_affinity() failed\n"); - goto fail_affinity; + if (cpu_online(c->cpu) && c->cpu != -1 && + irq_can_set_affinity(c->irq)) { + if (irq_set_affinity(c->irq, cpumask_of(c->cpu))) { + dev_err(c->dev, "irq_set_affinity() failed %d\n", + c->cpu); + goto fail_affinity; + } + } else { + /* CPU is offline, direct IRQ to CPU 0 */ + if (irq_set_affinity(c->irq, cpumask_of(0))) { + dev_err(c->dev, "irq_set_affinity() cpu 0 failed\n"); + goto fail_affinity; + } } /* Need RCR to be empty before continuing */ diff --git a/drivers/soc/fsl/qbman/qman.c b/drivers/soc/fsl/qbman/qman.c index aebcf16..b1b1268 100644 --- a/drivers/soc/fsl/qbman/qman.c +++ b/drivers/soc/fsl/qbman/qman.c @@ -941,7 +941,6 @@ static inline int qm_mc_result_timeout(struct qm_portal *portal, break; udelay(1); } while (--timeout); - return timeout; } @@ -1218,10 +1217,19 @@ static int qman_create_portal(struct qman_portal *portal, dev_err(c->dev, "request_irq() failed\n"); goto fail_irq; } - if (c->cpu != -1 && irq_can_set_affinity(c->irq) && - irq_set_affinity(c->irq, cpumask_of(c->cpu))) { - dev_err(c->dev, "irq_set_affinity() failed\n"); - goto fail_affinity; + if (cpu_online(c->cpu) && c->cpu != -1 && + irq_can_set_affinity(c->irq)) { + if (irq_set_affinity(c->irq, cpumask_of(c->cpu))) { + dev_err(c->dev, "irq_set_affinity() failed %d\n", + c->cpu); + goto fail_affinity; + } + } else { + /* CPU is offline, direct IRQ to CPU 0 */ + if (irq_set_affinity(c->irq, cpumask_of(0))) { + dev_err(c->dev, "irq_set_affinity() cpu 0 failed\n"); + goto fail_affinity; + } } /* Need EQCR to be empty before continuing */ -- 2.7.4