From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751742AbdBOTum (ORCPT ); Wed, 15 Feb 2017 14:50:42 -0500 Received: from mail-db5eur01on0056.outbound.protection.outlook.com ([104.47.2.56]:33516 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750806AbdBOTuh (ORCPT ); Wed, 15 Feb 2017 14:50:37 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Mark.Rutland@arm.com; Date: Wed, 15 Feb 2017 19:50:27 +0000 From: Mark Rutland To: Christopher Covington CC: Jonathan Corbet , Marc Zyngier , Catalin Marinas , Will Deacon , , , Peter Hurley , Aleksey Makarov , Robin Murphy , , , , "Rafael J. Wysocki" , Len Brown , Russell King , Greg Kroah-Hartman , Jiri Slaby , , , Mark Langsdorf , Mark Salter , Jon Masters , Neil Leeder , Subject: Re: [PATCH v3] tty: pl011: Work around QDF2400 E44 stuck BUSY bit Message-ID: <20170215195026.GN31733@leverpostej> References: <20170215180159.11359-1-cov@codeaurora.org> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <20170215180159.11359-1-cov@codeaurora.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Originating-IP: [217.140.96.140] X-ClientProxiedBy: AM5PR0601CA0025.eurprd06.prod.outlook.com (10.173.86.139) To DB6PR0802MB2391.eurprd08.prod.outlook.com (10.172.250.144) X-MS-Office365-Filtering-Correlation-Id: 70096f81-8af5-45f7-a05c-08d455dbe6d4 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081);SRVR:DB6PR0802MB2391; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0802MB2391;3:NMBI/mV6vkqKFFqQa5M7QYgnISTUXEODP6XieM0nFpvE6Fp0kQScdLeBhtQabL3NMWE0CfHR+MkYyPwAPcJ9fjBIWXmbFOcAyKxX4L+0Y9/+k811lurM7HzYQdJCbDid4OqvpTFCqcwBUiDt86Se8LNoxCTjYaZR2Ex0yLgPkKuy5SnjK2mzEtaMUisFCsmDDWQXVwNCheDG1o2CEiTeDwl2we8CtJdU0eZhb+9tzR0n+hAWcsWtB2te/tNra5KaBCXqJqRSBfz0+VwqZwjbty0Xi9JqRIde8+ADC9RC2w8=;25:whDsNBXkPfi8n7lwnsDbsO51n0Dm95s1c7C6TKQwxEdrFpx/tkk3L5xInjD4DaWVkCDlz7bxuZXdWkyBogkzM11fhL+GCaSyj6gJa2ebN0pQxXFVcFfQsYmnlaAfSbTIhars4DVxwu8ZI7642B3HKxPHyRNKYtOLQZ7XyoBiWBjigHtLEyeFQyKL+fW/JMiNfKS6U3ca4BuuIpLxF+fCTf3qtn4NTIBbJvptqCX005INZ/N6dheIYiVysslR8J05Fy6WXgDEHgX3SjVXmCh7kjMc+fzN/rXQPkOT1LzitYqkdCcyQf8kVwhYCiZ9Nu7kT2qb8DwSN1uuytmWTj2LIRsbHN9ssSkbRHaHiGO75mzn4v4ZvOfGZTPGKX40DC57jtSILmEul0iVAJjZZphGd2bRdT+bUKOSO+oxQpA6g4n3bXKjIULdA0yA6v0odAdsotbdkEyo05tZ4NSu8ccQPw== X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr X-Microsoft-Exchange-Diagnostics: 1;DB6PR0802MB2391;31:KGj4TdbecraoBFXtOM8DlMp5owk6qk4WyqpDoX7DDrSTA/fjQMmgXaPxzN4aveZsk/61L3TIAcS3MWK6GV52qMgMvnUl+pAcfFTdLkjdLXZn/qjHFd3Qjpt/snVdQhQZZ0NZ6csL9AECwplBKfEruHy5UgTzx6ymMUliRCWKaeg4rAqYbSgKQc4v8nXuUplV8b197bLztnqomC69jVGFJl47r1qArjSD++dd4t8pj+E=;20:vHaNM6EYPEcuQX/o/GPDFCqKRepO7qnVOfPnypU3aLIm0tgstL80iANfkUmpTK7DfM2XKjFaK5Jfugk8w3COPoG4s4zp2RWDrSSon4W6PiQx3THnZu/Ulo3pgIFu44rhHZ/KYFFuKfNufpO6krkJYbGdjThvpNIOf2hcZKc0uyY= NoDisclaimer: True X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(180628864354917)(84791874153150); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026)(6041248)(20161123555025)(20161123558025)(20161123562025)(20161123564025)(20161123560025)(6072148);SRVR:DB6PR0802MB2391;BCL:0;PCL:0;RULEID:;SRVR:DB6PR0802MB2391; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0802MB2391;4:nb0T7sYxBkQiJ8yhBMG0DC+Tadi+/SeAg7CnMahiMMXcrM/5p1ZGvtcLboa1adEfLGdCfX1HOELkCHf4Vx6xUPP6nOxNwg/i+W9cMiWMGz+z9vEnTUScMzsBM5njDGTF2gbOoJSBbe5DwNSxKrQAA07DBIN8f5K+/W/5YmQ8gpmgo3sJDwIjRaDC9TkZRj2W4XElXNAeuRgiagqbPOHjz7wFxcrN1d/tWfVlotjRiPJGhyo/0XBd+kedl2HC5/K+VIcjNfR3zgUFtq6HsMBa4VcNqhAjiEuB1eHGAvFFFuWsfEsoAX08dgVo1/GdJzkE9U9aHz1wqcGIkT8DKrYSB7Pzm0GgGjfRIyJrLJD6KNDbZuH3rCfE2LCnFkVVqnJAwns+HDaoT/KU+2dotYRIGxJV3WLTmcdP7sabPEXa9e4h6O7AzAhSgl2PFL1VfmM1sXBHGzrMlQ72pRRUzQMUXARnt0TfM0xuInCgFd4r2T0r4/n9eVK0gn5XXjPI6+CPdcgcIv+94Ds7meHQllnqznWdSmLwBjGv8s9XdeQwT8jz8GeHMiG0u/gkSzhD+bqQxyMa6BrT3BSEPdAPrxbGExFhqsAq1DKJ0infdbAb3IqXrKYpiBKAnUjfaBkS/1xpbkEY3Y50csoLycn/L5378lgKcZ5s5n/KqctGUR59V+VHgm//eAcg/eDLWeTR/fC6kR2KwvlGeMtyqoUd0hvxTA== X-Forefront-PRVS: 021975AE46 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(39840400002)(39410400002)(39850400002)(39860400002)(39450400003)(199003)(189002)(24454002)(110136004)(97736004)(25786008)(189998001)(46406003)(7736002)(4001350100001)(83506001)(92566002)(5660300001)(38730400002)(6916009)(7416002)(101416001)(15380165006)(76176999)(53936002)(2950100002)(54356999)(33656002)(8676002)(66066001)(68736007)(106356001)(81166006)(6666003)(305945005)(81156014)(50986999)(97756001)(50466002)(105586002)(47776003)(33716001)(42186005)(6496005)(966004)(86362001)(55016002)(575784001)(6246003)(23726003)(6116002)(6306002)(4326007)(54906002)(2906002)(9686003)(1076002)(389900002)(229853002)(3846002)(18370500001);DIR:OUT;SFP:1101;SCL:1;SRVR:DB6PR0802MB2391;H:leverpostej;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DB6PR0802MB2391;23:L4uOEJWqXKDEsyhWng/SoCqPlR/kiVwto5lLL4C?= =?us-ascii?Q?GmRxDJVnzVUB+IQCp6ukc6clBTj9rkjpiU36G+L4P7bQrlqRpgNrt6iGcpZM?= =?us-ascii?Q?bn65UtLgEXskkTK+KWmiiSDmm9qQzXdvnRYVA4MZ/Lm/gQ+nOSq+wDl3lAGk?= =?us-ascii?Q?4cws+1jcUu7HKWplxKMP19jl7iU9XpSAc/cT2/YJ2fvORWKC0ZNvfIdFKP9o?= =?us-ascii?Q?i6Ms6AAgBfTJqG+yAaGtat9jjC5bnJUZs7DKK/PFMltDBzOS7JklMrooyI3L?= =?us-ascii?Q?67PnaM6PWwlUVDkhNnt/BNys6D3eWs2rtBPykwfJ6UZDzPXQm9eLFNooytnA?= =?us-ascii?Q?qm61pWxHEJugpeC8DsvewkGPuVsuPkPbU4HoUZtnHRLm+wdjADyGHVOQ9rEM?= =?us-ascii?Q?3xhTSSsbtFt1KgT93QMpAIpoJLCv1kUjABqb4/RI3MiAU7lt/DcCMPCS56Iw?= =?us-ascii?Q?EebjaiZaZajNrfjV/2MqBSXY2BdfAUu8a59Q22YSZkQ8EgxJIJ7rUjAmKKHx?= =?us-ascii?Q?hnPulBC6iwkybEU/LS+nbfbEGoA2ov7p0orWaT72FIesGR6FoB3DzuOm9r0T?= =?us-ascii?Q?UiAQSfaApTOu4b0PxFZ6JoFqyWTyUdcfJcjdnfWaKo3hh9YbJUBctSzIkgbi?= =?us-ascii?Q?Vd8ER4Y2RXGk0JnRaz5AM4/F4LTPENdyolgFZ7+DSgZOOg0Q5tZ3Orl8LGNV?= =?us-ascii?Q?FffvpBo2kSX2ACOly28Q1DAbL38JgxzQi+a1m5RTMT21PqTYIIhCfFK4u2NV?= =?us-ascii?Q?DNGesOvNnqiFqft9g3b6aT/yU2M1BK+UYfWceuazH5QopPfmZHnIFEZAUkpA?= =?us-ascii?Q?Ncr1B94gVn3KfOWsRjLJIyBX+TdZyMQdv723Mp6DtT9SYVzyJtIsXoIF0CfF?= =?us-ascii?Q?KHEyWNdYGqnQv/RhoNfqQHxDwMHaPTnvgY+JJlHXQflwA1o6WxU41Z6rZfJE?= =?us-ascii?Q?jJsdhuVFbji1whDmE5TT8Yv3uifz8ClDfqbxG8TPZJYzDm4Fs57NSqO8E4zH?= =?us-ascii?Q?ESM4jBARZ7eh2oRaY6KpnSnYVEav/+otBPWHGe33ObFr+mkmdnpyKFffhXim?= =?us-ascii?Q?p1GY4O9NnmqAVwmXwsHxW2YI2TPBY9Lk8VLcHbajTrhGg3qUxjh4WxHMcMzS?= =?us-ascii?Q?4Ol7dvUfyUH4ef9sZa0zvHF+ex0WnBRSjaHjBDM5jplXSy1On+mtOm8J4lJ2?= =?us-ascii?Q?2ie9MZ4CDOkPQoMpGshELrKrr9/VYfnQjIqwrH6oz7PHBoJLC0SQlEB8fLQY?= =?us-ascii?Q?9dO7HahSPJxCgBKGHsQhUwg9KYWbkoqQQ7BVzcniymL2GlCTaYJpbMVhux9/?= =?us-ascii?Q?4VVjyKOJHGWS+0RRvxP9nxEiyontwPFy4XmzA1qcL0i8bttgBWSTLR+BnaaC?= =?us-ascii?Q?w6kt85aMxpPCuUnPEEEelBwehGhvjqXCnTERimAX2a+0naup+SFC8NbnuyWW?= =?us-ascii?Q?OzhPr0mbkwMX067fZHZhs5iZamnDmKF7Fj/sNmPpWLNLi8qxk78q7x6jMjfZ?= =?us-ascii?Q?Buk/STx3bTvapWDObKUJvOMlE//Jmq2MaNiGeD/3vBPNP+Wz2VvP/57Rs?= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0802MB2391;6:UQYTAd062RunT4TolB1VToZESA9ylxoBA5NVLL+8bBNTyAY/d9n5OCQA1hJ6zk8deQQVCe9iO3/o6TGA+LsybgMOYpshtiDZDVDGFFCY/KFi5YxEkpTXSmTW6yETFwuKZ+H09dG83jnMFUYkoKxFXEowXfqlv6H0c+2I8/9BLJS0o8/6jjleqLbPm2kVlS60OEaTd6GQHmikk+xCAyHSIlE5eJS0IJett0sBAH2KFA+RDTY6kOx+iVZ5BZPOHpzHPZeTCaZztVNbOVgz7BOGt9dPscnSg7MVlwUS10AWSlIsShAmwhbHYoyU/V3P/UOFt9arkPBDyxfL+/mdyqXBJDz0/9E4jqMOmxP8ADwBWcs+FsCPwKC2S8uJq5Oguk5AcIR5ix3WymMbmSUA0l8xXTWGzkgm+OTtwxNOoecgEzY=;5:sBxymSqTEq3KUx/Gd3vA2O2NR1WE/qcQHk6bRFQsHbLfmTW+9gKD9ZeOx+y1hz4AKQqegBTLWKofghYMxmUHTen9V5VMH+GGtFmpvnKLva8ZzHzJkwW/wANSHwYckQ3vkSP3Gh75eAnD7m4MmPr4KvC9mB6kZFq/Cgc3eoQm5z4=;24:HjdL+qCHQyq46RzD967ET2We8JTeps2WqetlYiM152U+MgH9BYiWF4TepIrAlad9+QILtEig14yMEuPEs7CIJWOsRJhB3wERg6NMSwIV4l8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DB6PR0802MB2391;7:2Z9ryv81tcf7X+Dh0zomDBjwcsWYJQPnOz2Mhw6aGIABwNoK3mZmMkvXg1rLfhDdKyTNrkMtz92xWB0Xdp1rTmvLk9Qpdp4Ifa6dTowPeJv0/qrtdhFkpi4WFSOMUzWGvDrVwi8YHpgtGbHqlfwWGZTEUhqdCzNOu+bqh2VtqpizxEU8amYTrtwIB1TGUrQHberulz+KJzdkl3vMbOMwimPftc0yShDytDCQI+oFsM+PHHVvGBT1ZSwT4+LrIMlY+ZWBbkrMCcpQfw3jVqFZElhIUreS666mWMVNEUXAu9ZbACBh3snDHnDZ0OaNr+euyldoRZ3Yfafb7N6HaZxXpA== X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Feb 2017 19:50:31.2335 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0802MB2391 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Feb 15, 2017 at 01:01:59PM -0500, Christopher Covington wrote: > The Qualcomm Datacenter Technologies QDF2400 family of SoCs contains a > custom (non-PrimeCell) implementation of the SBSA UART. Occasionally the > BUSY bit in the Flag Register gets stuck as 1, erratum 44 for both 2432v1 > and 2400v1 SoCs.Checking that the Transmit FIFO Empty (TXFE) bit is 0, > instead of checking that the BUSY bit is 1, works around the issue. > > To facilitate this substitution of flags and values, introduce > vendor-specific inversion of Feature Register bits when UART AMBA Port > (UAP) data is available. For the earlycon case, prior to UAP availability, > implement alternative putc and early_write functions. > > Similar to what how ARMv8 ACPI PCI quirks are detected during MCFG parsing, > check the OEM fields of the Serial Port Console Redirection (SPCR) ACPI > table to determine if the current platform is known to be affected by the > erratum. > > Signed-off-by: Christopher Covington > Acked-by: Russell King > --- > Since v2: Formatting and other improvements per Timur's suggestions > Due to known (although trivial) conflicts in silicon-errata.txt, based on > http://git.kernel.org/cgit/linux/kernel/git/arm64/linux.git/log/?h=for-next/core > --- > Documentation/arm64/silicon-errata.txt | 2 ++ > drivers/acpi/spcr.c | 23 ++++++++++++ > drivers/tty/serial/amba-pl011.c | 66 ++++++++++++++++++++++++++++++---- > 3 files changed, 84 insertions(+), 7 deletions(-) > > diff --git a/Documentation/arm64/silicon-errata.txt b/Documentation/arm64/silicon-errata.txt > index a71b8095dbd8..bc3d086bc624 100644 > --- a/Documentation/arm64/silicon-errata.txt > +++ b/Documentation/arm64/silicon-errata.txt > @@ -68,3 +68,5 @@ stable kernels. > | | | | | > | Qualcomm Tech. | Falkor v1 | E1003 | QCOM_FALKOR_ERRATUM_1003 | > | Qualcomm Tech. | Falkor v1 | E1009 | QCOM_FALKOR_ERRATUM_1009 | > +| Qualcomm Tech. | QDF2432v1 UART | SoC E44 | N/A | > +| Qualcomm Tech. | QDF2400v1 UART | SoC E44 | N/A | > diff --git a/drivers/acpi/spcr.c b/drivers/acpi/spcr.c > index b8019c4c1d38..2b5d0fac81f0 100644 > --- a/drivers/acpi/spcr.c > +++ b/drivers/acpi/spcr.c > @@ -16,6 +16,26 @@ > #include > #include > > +/* > + * Some Qualcomm Datacenter Technologies SoCs have a defective UART BUSY bit. > + * Detect them by examining the OEM fields in the SPCR header, similiar to PCI > + * quirk detection in pci_mcfg.c. > + */ > +static bool qdf2400_erratum_44_present(struct acpi_table_header *h) > +{ > + if (memcmp(h->oem_id, "QCOM ", ACPI_OEM_ID_SIZE)) > + return false; > + > + if (!memcmp(h->oem_table_id, "QDF2432 ", ACPI_OEM_TABLE_ID_SIZE)) > + return true; > + > + if (!memcmp(h->oem_table_id, "QDF2400 ", ACPI_OEM_TABLE_ID_SIZE) && > + h->oem_revision == 0) > + return true; > + > + return false; > +} > + > /** > * parse_spcr() - parse ACPI SPCR table and add preferred console > * > @@ -93,6 +113,9 @@ int __init parse_spcr(bool earlycon) > goto done; > } > > + if (qdf2400_erratum_44_present(&table->header)) > + uart = "qdf2400_e44"; > + This addresses my concern with using the MIDR; thanks for respinning this. FWIW: Acked-by: Mark Rutland It might be best to split the silicon-errata doc into a separate patch. That can go via the arm64 tree without conflict whiel the driver patch can go via the tty tree. Thanks, Mark.