From patchwork Fri Jan 15 09:38:20 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhiqiang Hou X-Patchwork-Id: 567989 X-Patchwork-Delegate: scottwood@freescale.com Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [103.22.144.68]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4EE511402D2 for ; Fri, 15 Jan 2016 20:47:42 +1100 (AEDT) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 20D011A06C1 for ; Fri, 15 Jan 2016 20:47:42 +1100 (AEDT) X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Received: from na01-bl2-obe.outbound.protection.outlook.com (mail-bl2on0122.outbound.protection.outlook.com [65.55.169.122]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 861091A0050 for ; Fri, 15 Jan 2016 20:46:46 +1100 (AEDT) Received: from BN3PR0301CA0054.namprd03.prod.outlook.com (10.160.152.150) by BY1PR03MB1482.namprd03.prod.outlook.com (10.162.210.140) with Microsoft SMTP Server (TLS) id 15.1.361.13; Fri, 15 Jan 2016 09:46:34 +0000 Received: from BN1BFFO11FD028.protection.gbl (2a01:111:f400:7c10::1:106) by BN3PR0301CA0054.outlook.office365.com (2a01:111:e400:401e::22) with Microsoft SMTP Server (TLS) id 15.1.365.19 via Frontend Transport; Fri, 15 Jan 2016 09:46:34 +0000 Authentication-Results: spf=permerror (sender IP is 192.88.168.50) smtp.mailfrom=freescale.com; freescale.mail.onmicrosoft.com; dkim=none (message not signed) header.d=none; freescale.mail.onmicrosoft.com; dmarc=none action=none header.from=freescale.com; Received-SPF: PermError (protection.outlook.com: domain of freescale.com used an invalid SPF mechanism) Received: from tx30smr01.am.freescale.net (192.88.168.50) by BN1BFFO11FD028.mail.protection.outlook.com (10.58.144.91) with Microsoft SMTP Server (TLS) id 15.1.355.15 via Frontend Transport; Fri, 15 Jan 2016 09:46:30 +0000 Received: from titan.ap.freescale.net ([10.192.208.233]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id u0F9kNWZ019605; Fri, 15 Jan 2016 02:46:24 -0700 From: Zhiqiang Hou To: , , , Subject: [PATCH] powerpc/fsl-pci: Add a workaround for PCI 5 errata Date: Fri, 15 Jan 2016 17:38:20 +0800 Message-ID: <1452850700-39442-1-git-send-email-Zhiqiang.Hou@freescale.com> X-Mailer: git-send-email 2.1.0.27.g96db324 X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD028; 1:yeuJhvWeoxzSgruQwQiKZ/HO07CxgI2HAObDp9zScLpiHPvYTcVhaa+9R01xevdLMFjXxccHU6xmNBwDhLPEevi370msslkiOXm0U1TsaiAzu8G2cE5O8ZdAsTrWHeJHP/3tclx+dFpJgyhhnAvtQDvcOKY3Yo2JjfGbSn5ytnaO73jW5ixmNdebFYsZkb5O8XY8rgtxHAtI9WnY35E2B7SX1PVThMRB/BjrL0Ws8mkjYLJu1Aj4mWg5gWlOilYDHA79Q8GA1oMB7wN7Gs2v0Dl9T5zIdvKvhxcAQmm4G1UPO4oU3zcwoy3ipWYYMAh+BbOk8hiBhLgqndtV/JFS+xaT30gQhNf7mFc0pOD3HzKuWZeE9yfwcgoaeDpaj58IUrc1XpgjCSPG7sQgJJFKokZ+oU1Jtyj5Qm4Y4+rrWJO8SOt/PbJ+pgWFwAl71msoart2Kuf3TjRCyybw7CFlAw== X-Forefront-Antispam-Report: CIP:192.88.168.50; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(448002)(3190300001)(189002)(199003)(586003)(4001430100002)(104016004)(107886002)(11100500001)(1096002)(5003940100001)(6806005)(229853001)(5008740100001)(1220700001)(92566002)(2906002)(4326007)(50226001)(36756003)(87936001)(47776003)(106466001)(85326001)(50466002)(48376002)(551934003)(189998001)(86362001)(77096005)(2201001)(5001960100002)(81156007)(19580405001)(19580395003)(5001770100001)(50986999)(97736004); DIR:OUT; SFP:1102; SCL:1; SRVR:BY1PR03MB1482; H:tx30smr01.am.freescale.net; FPR:; SPF:PermError; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; MIME-Version: 1.0 X-Microsoft-Exchange-Diagnostics: 1; BY1PR03MB1482; 2:J10hFuJXkUUcZeNbcpJ3tM9lFbbUbvYSvbsJHGKhRIXEoamOM0Co7o5NZpWYbBm/aIwXeUx5M9cxk0VKb9NnV8f/+70tW2RKu6BXF7RwWJYq5D/1bUc+lgBuB+hIe7RnanVGiJYtv11ACOiHr4O7Vw==; 3:5TiQX/bParABpYIqUoXHpe1zFuPS6G4/4c790c3n9bieW0dUsPY4FUSqhwc2xmbuUEk/aobDgUsL1TeHGfMNVjoyBDiQK6N0Lh8wO6Y/8ZyobC8qCCTFNDqi36EbxYwL7cjhr4mLSu3hfa+75WXOiMvU9NYY79eJOcWUla3q6bkUiDnucTk7JCnOxlJWeo6FHR8+OT4leI8UYs+c8Mv2cQ+1hOkoQPN+Q8XPCy8jKwY=; 25:lKhlC3nKLpdOFf4o6cE2ytoToMgbD30LMm9aSPY8w6c2IH8D3cqzfgOxlnEK+CRDBm/8jFmA8YOLeysK4wuckyIgFr1DCHFhdJTAHvfJDFWb+C5Ry5ItsrO038xSk6EODYXG2hb5d4noBWLra5R5hEDSExwrneplOAgyPSeHpB+zkk23C3rD3mOWtgpWNY4MIwqcnJQc/RsupyYkSl72wyfCMST9bWLHByOspq/3U73vA+g/Z3VFq4F6jEXGIwqm X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY1PR03MB1482; X-MS-Office365-Filtering-Correlation-Id: 6def1711-d774-4c7b-8485-08d31d90c10a X-Microsoft-Exchange-Diagnostics: 1; BY1PR03MB1482; 20:R0QCyCGq79Ok1MqxmQ4EhnBtT7UQUwGMqx6qXBoSofIrnJIAgtZu2wscFqHbv/JQ3wAw5h57LAZja4bfHPhhxgZ2GQunjUcy2CQIkZxY3OfHQbzexVqmoPxTGCEx7yd8yxIil4Ij6MOh+LUbxDb1lvaRrb1UAgfv/BkRHx1Wh04sqKEXWgPKuIBzPt6KrxxGmPd9p/U4S3qRwyvZhygrPWEY+7q9SubVQNZWSnIcwvKmVcqVH/m0Yf1SYPWpr587wZku6xGqzk9xBa2YkLtNFtO5VsgJ0TeVXFqOuP6CJaVRJ5tepCnPUyH53INMLf0rXQWhYcRMw7qWliTKBuhf2WjHV0DV/kwGitASYPQdtFLspR1l/rwI+hLnoaxeBlJ5G3oNIyzkXt+gXY8E3BFJAunjjcW3D6si3v2Opgafxv0kmtaGIcPbvcfH5CSKotYF; 4:l0+F+qTzk1+Omfx1v9HAgp2CNY3sywoAPCa3hMmp2wR8FJlx0NbPNXFv5YdV8hDreBKK9BWDStFqDGPGEqI1n361+HVm0UhSIJnQhpHc8rbzgIuJGICdD32uWJtN3wfqKUTdDrkTml3wvf4aJErlbGBybJ0XVsElEdp704YzvaksgM7301usWguHSigSr02G5wKswB4N5DvQDfqJwTYebxsyhDk1eub3eMeD4al3cPkKoqOzj51hOwanSACDUbaZxRYAXq1ouWJFzW2yAL4V7X1SKXtLwcZVYSkr3rxqpnG6+WCHHG5PVGTVqpcgSzFS5tiD7VkHmxJzcL3PIx+ts0K0VqiVyy9cM7fGnns6hJLsaoiWofVSKw6czxqre1q5/gFzhvDxNHNwVQnnTMSRC2vT1fS3ONvmKXYUbN+EquJLKUZ6kuJZfaGuGjZZxSc+gebcvWIDNVpz8sqdixZhEdaKK8QYAWqWtfB5xrTv+Uw= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(101931422205132); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(520078)(8121501046)(13018025)(5005006)(13015025)(13017025)(10201501046)(3002001); SRVR:BY1PR03MB1482; BCL:0; PCL:0; RULEID:; SRVR:BY1PR03MB1482; X-Forefront-PRVS: 08220FA8D6 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY1PR03MB1482; 23:5HdpsOrDwQykncXhisk1Do7zXqoBOoah/A1PjOpBE?= =?us-ascii?Q?LTqsvSwMGnNiLqI48dxsG1mna/LQGSBcmtxsmJsB3ZLggQLUFfCtb+BfxBi6?= =?us-ascii?Q?DxOM/AazZYvaDsdX9eXHb1rHYqX4G0fj+6XQJT0AWmpuDxf06dizfWRrJqRK?= =?us-ascii?Q?g4HLkT2KNQ9FSg97JLXVtkck1+iHz4ZFnkQqpMfbEh/O6dfVgCFldOmxao3W?= =?us-ascii?Q?fbEP/K9yBq59zvfgmdU4oJeYq5SzmYeOHWnXdg6yJ1AgUBKptJahboxJOScP?= =?us-ascii?Q?a5MdMxbJNV02euC6wFHvSFdvHgB6mCtVPD6gpe3AW+NF3UE7ZrO183Z2facB?= =?us-ascii?Q?RTARfoI6aaMoQalQBVXFD7atpIiVlR43uivrMHDVMAWBA/eCCYe1oZehsQXR?= =?us-ascii?Q?4Tsu/96ELj+V4UVEBRsaETdhV7GwGYIh5d/A/4dzQYOUyfEUGBPUK/Gc2EzP?= =?us-ascii?Q?O/71wDVgQUzqyTnpKr2ZHvP+mIrwAJelm//1ASS13vy/ltBGi3oGHYmkpti6?= =?us-ascii?Q?lz340gdJTuluIDdib95ts7Q+5K+NaM8bCv3Okewt8Hqku4gCC5rRZ0WraMix?= =?us-ascii?Q?yJ6GGKbtuimG2PQDZjPSLi6zCO3NxsokKuzRPJo3z9n6OpeY4cMC7ypAIuxD?= =?us-ascii?Q?r4AzIKHgEUo7m+NbVdEJd/hLg3BUA2FtmZmXBIfC4T2Y2Kfo9ODFfZS1kT/8?= =?us-ascii?Q?RdaeQBXi7wYuQdub1fFKIxQYliV/QBE/Kn6inqy7SIL0oqu3hwtK7qcBIdWL?= =?us-ascii?Q?liOkXZh1T5UpWX68Yeu8nHS3QZDQ3oOckmwWwyCbgOO40l13Zr6M2BUpio1W?= =?us-ascii?Q?0H6q4j4W5Ta/fd3UgzvTOy0wwebQlo5GMf3+LycKgvrOS3YslxRvEpzqXE1J?= =?us-ascii?Q?jcPgM/0KBG8u/MdNjDVK9FkDfrsMZFdTsuF4YiGLPr6nlggROA7PMyzcpbRD?= =?us-ascii?Q?LrY1rDpmkrQ6br6jonN4bygq0FByWNi7KbSp1MBlu8DbP8Q7otIVmZ/stk+4?= =?us-ascii?Q?tFMATNsq1xNBwHhfQ99BwgtNdVY5h5jlZ3J4pb66JVz80rW+DoGxfBFooeEM?= =?us-ascii?Q?wwPwzV+zvr5OSlVlXlSsWm1Th7f?= X-Microsoft-Exchange-Diagnostics: 1; BY1PR03MB1482; 5:47Nd5EOYiiIF2kPqS56wFp7VasKS84R2hGZsEBOVM2u/WBmpUm9w8T9LVwxUdFbmoVm4Hvf7oG5ehtG4Vz5td/wXTNQnqtTn2U0mulyMMh0awwIxT0C7OLnBiRxuOCDV4PW1jPD9RK3Eo6YU5oEYyw==; 24:OgLozxu+zZzSC0EWlTwaM/KLhR+fB6vlsQzIwFp04jAVpckLsRfiT9Mc668I9z1sFnXCLjzLmXNvuxAqfMNOb7zLgzJs5dQVQFk94GuJe/8= X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jan 2016 09:46:30.6084 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR03MB1482 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: scottwood@freescale.com, Minghuan.Lian@freescale.com, Mingkai.Hu@freescale.com, Zhiqiang Hou , chenhui.zhao@freescale.com Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" From: chenhui zhao Issue: As a master, the PCI IP block can combine a memory write to the last PCI double word (4 bytes) of a cacheline with a 4 byte memory write to the first PCI double word of the subsequent cacheline. This affects 32-bit PCI target devices that blindly assert STOP on memory-write transactions, without detecting that the data beat being transferred is the last data beat of the transaction. It can cause a hang. PCI-X operation is not affected by this erratum. Workaround: Setting the bit MDS in the PCI Bus Function Register will disable the combining of crossing cacheline boundary requests into one burst transaction. Therefore, it can prevent the errata scenario from occurring. This errata exists in MPC8543, MPC8543E, MPC8545, MPC8545E, MPC8547, MPC8547E, MPC8548 and MPC8548E. Refer to PCI 5 in MPC8548 errata document. Signed-off-by: Zhao Chenhui Signed-off-by: Zhiqiang Hou --- arch/powerpc/sysdev/fsl_pci.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c index c69e88e..33e50f3 100644 --- a/arch/powerpc/sysdev/fsl_pci.c +++ b/arch/powerpc/sysdev/fsl_pci.c @@ -37,6 +37,7 @@ #include #include #include +#include #include #include #include @@ -527,6 +528,8 @@ int fsl_add_bridge(struct platform_device *pdev, int is_primary) u8 hdr_type, progif; struct device_node *dev; struct ccsr_pci __iomem *pci; + u16 temp; + u32 svr = mfspr(SPRN_SVR); dev = pdev->dev.of_node; @@ -596,6 +599,27 @@ int fsl_add_bridge(struct platform_device *pdev, int is_primary) PPC_INDIRECT_TYPE_SURPRESS_PRIMARY_BUS; if (fsl_pcie_check_link(hose)) hose->indirect_type |= PPC_INDIRECT_TYPE_NO_PCIE_LINK; + } else { + /* + * Set PBFR(PCI Bus Function Register)[10] = 1 to + * disable the combining of crossing cacheline + * boundary requests into one burst transaction. + * PCI-X operation is not affected. + * Fix erratum PCI 5 on MPC8548 + */ +#define PCI_BUS_FUNCTION 0x44 +#define PCI_BUS_FUNCTION_MDS 0x400 /* Master disable streaming */ + if (((SVR_SOC_VER(svr) == SVR_8543) || + (SVR_SOC_VER(svr) == SVR_8545) || + (SVR_SOC_VER(svr) == SVR_8547) || + (SVR_SOC_VER(svr) == SVR_8548)) && + !early_find_capability(hose, 0, 0, PCI_CAP_ID_PCIX)) { + early_read_config_word(hose, 0, 0, + PCI_BUS_FUNCTION, &temp); + temp |= PCI_BUS_FUNCTION_MDS; + early_write_config_word(hose, 0, 0, + PCI_BUS_FUNCTION, temp); + } } printk(KERN_INFO "Found FSL PCI host bridge at 0x%016llx. "