From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752770AbdBJOiX (ORCPT ); Fri, 10 Feb 2017 09:38:23 -0500 Received: from mail-eopbgr30121.outbound.protection.outlook.com ([40.107.3.121]:63808 "EHLO EUR03-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751956AbdBJOhz (ORCPT ); Fri, 10 Feb 2017 09:37:55 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=aryabinin@virtuozzo.com; Subject: Re: [PATCH] x86/mm/ptdump: Fix soft lockup in page table walker. To: Mark Rutland References: <0d19ac08-88b0-675d-19bd-4cdc543fdb30@virtuozzo.com> <20170210095405.31802-1-aryabinin@virtuozzo.com> <4bdfc6e9-0f68-bc30-fd1c-0def4508b472@virtuozzo.com> <730837a1-ee6f-9891-0421-93616dd1c4eb@virtuozzo.com> <20170210142928.GA29143@leverpostej> CC: Dmitry Vyukov , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , "x86@kernel.org" , Tobias Regnery , "Paul E . McKenney" , Alexander Potapenko , kasan-dev , LKML , stable From: Andrey Ryabinin Message-ID: <2c6787f4-d8fc-272e-e97b-6e831464763f@virtuozzo.com> Date: Fri, 10 Feb 2017 17:38:20 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: <20170210142928.GA29143@leverpostej> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: AM4PR02CA0034.eurprd02.prod.outlook.com (10.165.239.172) To VI1PR0801MB2064.eurprd08.prod.outlook.com (10.173.74.149) X-MS-Office365-Filtering-Correlation-Id: 1719f732-a3c1-45cb-ab54-08d451c25240 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:VI1PR0801MB2064; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB2064;3:qljYxHTTCyC36oYKW3+HMOINhmtpkI28t7g3x4tM7j96qlXXwwzbTgmR011QK9DUJqbyOGh9wiECvp3kgPdod7SyPJi8g3PVT2C5VuxJZccdib9x/TxFzCsnreiJmdQsc8lM49xggQ9CEFroZTu8oOjf3a5CL4qYAhNxMqu9p9KJ9cQZ77qNcSLFNmL5DwZaJ+V0oCrm7+EzMEHFquslg7s610/59o8XxrVkuWtLn3pdCFiI0ifQOCX1MVl2qUn590oQmca79qFrNh+0gpyuOw==;25:1dpyeowoREYpNk/DO2RMniLPuTy84+txRnChgQcRjRsz6yiRMixx3m9TbU8QYVztwB/jvIcY2jglnJGVfFiTyJKOPatTc5mNi47ksHCudlMrg52deQf7wjFLuNB6sYPI7hTNjdJTf5f8QG597Q54A10P2aSpjtxVHulZyjk3rE6TLPCrSa+9+bOzqXPygQqcTt4rSNH9s1P32DgpzsXGFB8ILbKnDoO3o60z6Z/cnc0yscktguV7yPyIRs9krrhKFdXtKHRbhzvFpGGQuymmbV+PnDITrdO4bo2RHCM76iuyaYqMO9NGXRs/WIW3nXG/HAX5so8ES12vSyxFRlMrvFy3QCa5pk6alcwlij2KI/IXYEbLFp/sSNBeRxVC00EQEuFR/DtfpXkGbA8Ey3wZrEEFuY7BpBbfnj1TaAVx5tFJanqG/rhnwzz9NiYHpBsjAHTjDV4LSJF5oNz6tg9w3w== X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB2064;31:weiABwERE+pHtEVl+m/TE/fxYaUXi9YqCtk4RBc/D+G7zPWZjGHMTNlGf/tvWGnraswKMZNvYDddp2mnJIbcV5r2nI5760yRON5vL4UZQP0AaIz59OR7h8wOp9z6gANTKOYnU39IK8ILAGWC1a9XNj46ZSnFzcPoKMUDfA+AJKPEU7plqY8yJANHJSOAvmKEqVPZUVvt4/Z/G/1P3SeaEHH+JWE/lP9lmj/ysgXrMgpvbXGnRFqf2W+zeV1JQ26+ilQxK/ChBP9ocfqPH+iR9A==;20:j3sP9hHBbgq/r7zQSyJMlhsfIOvJIoSNRn28/AX2eCgctRhO7bFj1bCGn90j8/7ZXaNEGfnJ5JAz2k1QbW7lghKLGdN3eaaD6zxdCPhFwe4p+GXMOiYGYvwiskSs6sJIVdRTIBr2ucKn6tz9+p4IUfmwn1yakB4QEoXR0HgUxLgMBrx14RGlJCOOxrN5l6b4I04omYuRfFfvvKdHKWmXFRILyiL8GKkiW8JdcwJylff91NJrRyr5mjh3uSy16gq+di6w0r5IvvbzxG/g6Yd+9Qk7FSNZlyPAHkewb7UUrl/UDIcYFdbmvPdKnxtwnEZZLU5CIKn+yTLgtR26YPUKVKOkdGxpLFIe0Cq2Sg/O8SoA87ck98fokHzqzAl/65wgkXiuNRQNWmTmeU1Lz1YNJpg9ZeiQgryHku1jM7Q39nE= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6041248)(20161123564025)(20161123562025)(20161123555025)(20161123558025)(20161123560025)(6072148);SRVR:VI1PR0801MB2064;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0801MB2064; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB2064;4:oGNHiAQXo7DJAVuwzJ5OJMKcekKMTKkukN/95UiA9ZkekiOBK2alJp7I9elm2+Qkct1epqQEqlpGtoqw0L1OFYrcBSB5Txw5ioEouXmeDHYsOVmhVBtrDJ6BM8eHTAkAfGmmrv0Eb+Usp9qJLQAtHw+OBFfeUeKjaFRzHu5I3CC2vQCKEQUvcgtLCFceqU26aa6S8W55rNEQMukXuJNB+gXJnXitI7TyK/hKj2zp/XTHdJ+8wMBv+rSvhPoJk/6eVJxedN6lVOnSN9DOD8LVsFaJmw4/r4ANbiL0cRdzbdkxiLnD+TtB53naLa3hXpjhJ9CMiU4ok8U0aCvQOGJ8DMWbzf/fP1rU91JRIdomLWoHsSvRqIH4Ul5dXVg6Yj+txOJDh2MJJiYKA4wnOp4MhvAU+pRfmpNKPkbMJ220Xr3kzU8dT4+h4/rAqBEzrWJcP3Rguj8A7dpCvPSsptoqjWXe6IQMhZHz9w18LwvJQ+/SFw9UzCVm4IY/5Jp2HCsBmoRL1FjvNAvL7idykmHTOUvSMjJeAwFJtorVYFG3nWG56WYmdwkC5GinJgbjb/H7OKCcD1P7CUG2GM8RmjHZY9NjrHdbsXgfOWMB/TRmxxI= X-Forefront-PRVS: 0214EB3F68 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6049001)(6009001)(7916002)(39450400003)(377454003)(24454002)(189002)(199003)(86362001)(65826007)(229853002)(4326007)(66066001)(8676002)(23746002)(81156014)(81166006)(92566002)(2906002)(47776003)(31696002)(53936002)(93886004)(65956001)(105586002)(305945005)(230700001)(7736002)(65806001)(42186005)(6246003)(31686004)(97736004)(7416002)(33646002)(53546003)(4001350100001)(68736007)(5660300001)(189998001)(36756003)(6116002)(3846002)(39060400001)(83506001)(6486002)(54356999)(106356001)(2950100002)(50986999)(6916009)(77096006)(54906002)(64126003)(38730400002)(90366009)(110136004)(101416001)(50466002)(76176999)(25786008);DIR:OUT;SFP:1102;SCL:1;SRVR:VI1PR0801MB2064;H:[172.16.25.12];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;VI1PR0801MB2064;23:/nKYzZMnoV6u7VIUmJJlorghXxF9ziknhhT?= =?Windows-1252?Q?gLNrBWjMSYJYBwNJg8r8cPfQARZXU5Jsqr8hQgo+ZokfMyz3ZI5wFue3?= =?Windows-1252?Q?vHCtxPY9NQ7vtpAeV9PXkJcXbo1RexUaVJyMyCe72ng4eCCBYEWY5fxt?= =?Windows-1252?Q?z4WFH4xs1bHZNSb9iDQ8x14pRoDL0OrigSGzmLcT7st5dDEaLmBo/zwz?= =?Windows-1252?Q?9HUG+bXkl1hBfHtDLbpX4i/9qHw5Vf9+DdbVfLu3QvWjVq31JT1UCdy6?= =?Windows-1252?Q?/+vqfmWkhjACe0ZsT/+xZVGWkvizNejZua26V5ZCAjL9K/gnGbwd5Zqw?= =?Windows-1252?Q?864c/aIANeXfHIQJQdV5i7jEGklBzH4sr28b6b03o6CdszA1m0KPPnku?= =?Windows-1252?Q?EPan/12xWjc0W2uOGb7tDHMdbmf3XD1gTXuOqJXvyMFKryjTTDe+CgK+?= =?Windows-1252?Q?95QwGjg223ke5sqUwoJ5aJnP14QOmiSBAM3KRFVq4qHl8xgyzy4OIIxM?= =?Windows-1252?Q?O9WKoWaywp9FbaKLXepIo4dH+OOj/QPKU0Xt0vQF7O7ISL6Z6I5aEuwk?= =?Windows-1252?Q?6xUGXSk95EFq2CnDSP3psMOc5dH52ok4WF3nM0xWct3qU5ijgZOAwXqY?= =?Windows-1252?Q?1EOnAQbE7D+Gqhk73snstJDPTTUgePr/dFr+IYx2eaE6SlHPgcDuaal+?= =?Windows-1252?Q?eCCTiAOeGmwYVVko7Hsn8nCnth4LgZaaPGMMVKu1UafyUTi+r5aLHk10?= =?Windows-1252?Q?+PiZevs+90EdUkKygUAm4GuKrJy5/QCYI0lZS6NmQ+dzj+RA/3kX21QW?= =?Windows-1252?Q?XZ3AVWISff7Vz7jh7yfSVl7i1eJ44zlNg5o6mATERbWxOmA2bHEcm0CJ?= =?Windows-1252?Q?Gl/9D0foJ17S0BrWWeM6LnvvDQNQiT/frpR000eBxLTItnIuAPLWat68?= =?Windows-1252?Q?aKrfGo5AV5aljUEoMUJk9xVss6LNRWbl/HV8Wc/hlAfyfVbVcHeDfMPj?= =?Windows-1252?Q?Xs7wDwsZbFKgTLGOIzg+4PH/AE3DaS5CuXc/UQ0eZYGPoFOul8lgaxFJ?= =?Windows-1252?Q?uzRm0M8Z53M2UhDWkU6o2/NzlAPDc+OPWFxnKsr2lRXgAQF+vpnSRyGe?= =?Windows-1252?Q?hP/4f+jJWdfylon/sRbQH33UycoKJu0fSt+vcoMpVk6xQwLdNHnhJ9b+?= =?Windows-1252?Q?cJwuHNQWKKHR+W2h9nkoaWdjBrvAaV5zGq/F+TTLUrz97jrGkAM6KhLk?= =?Windows-1252?Q?h/UucxR2IKkA7f0skUQ5MfPPuuhjSKH0cQnToAYMEtRFu3sca8cU+bok?= =?Windows-1252?Q?Ts6aM+EKUyqSNii6da99xD6Xhc0vs9eL3S2o9C48e7x6ErUO5DQK2FqF?= =?Windows-1252?Q?xOA+YxSY4SQ07ygt6WjAGWL4hT6/i/rzfi6d2EEceDHS6UrEDWTrij0I?= =?Windows-1252?Q?+VyU+jouLC52xYd07KMsxoKsRfaLoJV1qftKGzz7GVZhE607j//DXW8p?= =?Windows-1252?Q?bP9tH30LsBQRbN6encKJ6czhc8WS3+i/5vc8n8Jd+ri9PFA+7iTv6dzW?= =?Windows-1252?Q?0d55lONOvske5/sZsFnp3sfLCmRcoWo8bC939?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB2064;6:fDiUEeai8MgEvTIT3v3YJK8WxVUqjcTRjeAkf8bV8L3N+BgLXjUB1zWmG6k9/eBQpAf016uWbAeu3h+pfZBkKo+2Ou0t73dggV3b8NA6942ApQAJkTKDBOeYJ7dSZTub1aynHZ5ZAnR92a4WQo89tY2OPKxFaU0giOLfhzgsBDglr1MsnVqQdj2tyylaRmnSImGSEeBJLwr2LgITqtM1oIpkG7XCdOh4EC6eU5cszSKDcGeur/xXUEiLw2XchxrOvrRzYp8TZATomWMvOwpc0/7DqaWmpacvhe/MMk+qfJ2ZHNS80mgXjhygwU0tS6sKiWrBAENLFsQvklcgyeoaxJB3+lgVpzMtB/+z6QAlWFZoPmN+X/Mii552Zc+ft6vtUTwevhge0+jAB19e4U6Law==;5:2ZKJvi7ZIW7MD3f2qraP1jUAuIEFcTLrNHcSw5zCMxVIqMj/XeH7qJ1ey+yWjNLPNY5HySYf1Zlf6jG31A0PTAB+aw7/r3ErqJCwfnIclNYeqITWz9ISn2mogJHYHXEYhHK5OJEaKZsOAto7JAAFjg==;24:4bxGKocYEHqZStSwAtAyfLfz5mMJfhstfoJvwjIDAUFPFe7VGLMB4YlQVXjV0o0MQrcx0sf+pGrPrZ99Nr2H4etZjBdFU1FASDhfEfNXplA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB2064;7:H73/Hm8zVA46BX4bZVPPEMtpJKzh3g8SQf3MJuIVdbj8x/MZjm0OldMpPv5QZRV2VkgS7kkG0gjcH4gwnGAHei+Nu/Y9CZkk3aHceOwD+mh/C6N2A1H6rBd+4VOIBU9nGcyUF2kqbc+7YJtnUJIoSAZLsrMamRyP8R1d2ZygV+zSbyN7aSRU+Yd6oEpA9wgYuzmm8z8gLwCPhOuq0NLhE6RoA9cnCKumYRDqYLkN0RMO/Il7mKOCDhCmpEdpHnTQDhqDENJziSV/RzqMRtN32Mftep0Wzt4xYto6XBwofXVjWCeajMx58Wmj3PnZq5E+LszLczS+vxpRC/M89lnqFsFV55MZEq03JMTMFMYdMrDrO2YWz7WoOqsPzoVfsOVvjUmTrNdeMZ9gulYkziaV+7YTXEMUIu1nRF4cb0IVrAC8K4Y/aMvPfwhJxfRCuYiYMPQlmEHJfUfzg7rTXxiymNV7NuksuhAHq21VKe2k0ZV6FgK6Rt216AuxnR3ThAHaXaLfVEb74g3CyuRvg6BDqg==;20:3iCiJkJ0B7Aw5FNK+GHT6Unolyhcn2du/Trk3jkn1ll1Wq5PbwIOJ/cVVfAYyZu/RjzUFTFCulTkUUF+ZMSUE0KgfWLoqEt2ME6ZeDBY0Z2HY6D+FDkXwNj+7jmi1ffuEL9RqAREKB+sWk9Bxo+x2fxcM8hcdlgw0MaP5qBwRd/Aa8f0rOTEa7O1nVE7LgioQOq2z0NR/917nzfICr6dtmFaVIT0O8dZTdUCvnw9rBbApXEcbzu0IQsYIWLAAf1j X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2017 14:37:20.2750 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB2064 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 02/10/2017 05:29 PM, Mark Rutland wrote: > Hi, > > On Fri, Feb 10, 2017 at 04:56:19PM +0300, Andrey Ryabinin wrote: >> On 02/10/2017 04:02 PM, Dmitry Vyukov wrote: >>> On Fri, Feb 10, 2017 at 1:15 PM, Andrey Ryabinin >>> wrote: >>>> On 02/10/2017 02:18 PM, Thomas Gleixner wrote: >>>>> On Fri, 10 Feb 2017, Dmitry Vyukov wrote: > >> diff --git a/arch/x86/mm/dump_pagetables.c b/arch/x86/mm/dump_pagetables.c >> index 8aa6bea..1599a5c 100644 >> --- a/arch/x86/mm/dump_pagetables.c >> +++ b/arch/x86/mm/dump_pagetables.c >> @@ -373,6 +373,11 @@ static inline bool is_hypervisor_range(int idx) >> #endif >> } >> >> +static bool pgd_already_checked(pgd_t *prev_pgd, pgd_t *pgd, bool checkwx) >> +{ >> + return checkwx && prev_pgd && (pgd_val(*prev_pgd) == pgd_val(*pgd)); >> +} >> + >> static void ptdump_walk_pgd_level_core(struct seq_file *m, pgd_t *pgd, >> bool checkwx) >> { >> @@ -381,6 +386,7 @@ static void ptdump_walk_pgd_level_core(struct seq_file *m, pgd_t *pgd, >> #else >> pgd_t *start = swapper_pg_dir; >> #endif >> + pgd_t *prev_pgd = NULL; >> pgprotval_t prot; >> int i; >> struct pg_state st = {}; >> @@ -396,7 +402,8 @@ static void ptdump_walk_pgd_level_core(struct seq_file *m, pgd_t *pgd, >> >> for (i = 0; i < PTRS_PER_PGD; i++) { >> st.current_address = normalize_addr(i * PGD_LEVEL_MULT); >> - if (!pgd_none(*start) && !is_hypervisor_range(i)) { >> + if (!pgd_none(*start) && !is_hypervisor_range(i) && >> + !pgd_already_checked(prev_pgd, start, checkwx)) { > > This means we'll fall into the else case... > >> if (pgd_large(*start) || !pgd_present(*start)) { >> prot = pgd_flags(*start); >> note_page(m, &st, __pgprot(prot), 1); >> @@ -408,6 +415,7 @@ static void ptdump_walk_pgd_level_core(struct seq_file *m, pgd_t *pgd, >> note_page(m, &st, __pgprot(0), 1); > > ... i.e. the note_page() here, where we'll claim that the's nothing > present due to the empty prot. > > That'll give erroneous output for the userspace pagetable dumps, so I do > not think this is quite right, even though it gives a boot-time speedup. > For userspace pagetable dumps checkwx is false, so page_already_checked() will return false and will not go into else. userspace pagetable dumps works as before. > Thanks, > Mark. >