From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from DB8PR08MB5515.eurprd08.prod.outlook.com (2603:10a6:10:11f::9) by PAXPR08MB6942.eurprd08.prod.outlook.com with HTTPS; Wed, 16 Sep 2026 13:34:29 +0000 Received: from PAYP264CA0013.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:11e::18) by DB8PR08MB5515.eurprd08.prod.outlook.com (2603:10a6:10:11f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.9; Wed, 16 Sep 2026 13:34:24 +0000 Received: from ZR1PEPF0000E6BC.eurprd07.prod.outlook.com (2603:10a6:102:11e:cafe::16) by PAYP264CA0013.outlook.office365.com (2603:10a6:102:11e::18) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.11 via Frontend Transport; Wed, 16 Sep 2026 13:34:24 +0000 Authentication-Results: spf=softfail (sender IP is 99.81.216.78) smtp.mailfrom=openvz.org; dkim=pass (signature was verified) header.d=openvz.org;dmarc=pass action=none header.from=openvz.org;compauth=pass reason=100 Received-SPF: SoftFail (protection.outlook.com: domain of transitioning openvz.org discourages use of 99.81.216.78 as permitted sender) Received: from nat.eu.perception-point.io (99.81.216.78) by ZR1PEPF0000E6BC.mail.protection.outlook.com (10.167.241.75) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.7 via Frontend Transport; Wed, 16 Sep 2026 13:34:21 +0000 X-PERCEPTION-POINT-VERDICT: CLN X-PERCEPTION-POINT-SPF: X-PERCEPTION-POINT-SPAM: PASS X-PERCEPTION-POINT-SENDER-IP: 2a00:1450:4864:30::10 X-PP-Forefront-Antispam-Report: CIP:2a00:1450:4864:30::10;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail-wr2-x10.google.com;PTR:mail-wr2-x10.google.com;CAT:NONE;SFS:(13230040)(6059299003)(82310400026)(3072899012)(2092899012)(43022699015)(12012899012)(6133799003)(19002099009)(55112099003)(57112099003)(16102099003)(22082099003)(18002099003)(5063699009)(5023799004)(10067099003);DIR:INB; Received: from AM0PR07CU002.outbound.protection.outlook.com (mail-am0pr07cu00206.outbound.protection.outlook.com [40.93.65.70]) by inbound-smtp.eu-west-1.amazonaws.com with SMTP id 299snv94a2c5rrr4pl5fka3eqsral3p8q2800fg1; Wed, 16 Sep 2026 13:34:19 +0000 (UTC) X-SES-Spam-Verdict: PASS X-SES-Virus-Verdict: PASS Received-SPF: softfail (spfCheck: transitioning domain of openvz.org does not designate 40.93.65.70 as permitted sender) client-ip=40.93.65.70; envelope-from=den@openvz.org; helo=AM0PR07CU002.outbound.protection.outlook.com; Authentication-Results-Original: amazonses.com; spf=softfail (spfCheck: transitioning domain of openvz.org does not designate 40.93.65.70 as permitted sender) client-ip=40.93.65.70; envelope-from=den@openvz.org; helo=AM0PR07CU002.outbound.protection.outlook.com; dkim=pass header.i=@openvz.org; dmarc=pass header.from=openvz.org; X-SES-RECEIPT: AEFBQUFBQUFBQUFFTjBDVXdWT0psN2EvYXp5NXBTUmVZN05XYnVRc1RQSW9tcUFLS28xM2xNY1dCYlgyZVRrWDR2RmdEanVFK0tjYUJITFg2K2NhV3Rla1hLUndrM3BNMEJZVG5PRkNEWTJkb1dUU3FtMFV5cTZ5aVMydmpEYVBLM2FyKzMrZTgwemlPTnBYR0NyQlJnNjBJZ05xYlhPNGVSaFRVeDdjY1JQOGJ6N1FZemlJaW1oY29iRzBFaDlFUFpyRkdZbFBUOWNidWF4YmllRExGOTF6WGZRVDlOaVlrZWRKVHY1NDhmTldUM0FmTi9uZjFNcTYvR2xaYVF0ZzRkN2hYOTdmUnAwRnFtdFlFcHpJelBOT01PMFBCOTFlS1RvM0QzU0dZTDJKa3ZrVHdSN1N4K2c9PQ== X-SES-DKIM-SIGNATURE: a=rsa-sha256; q=dns/txt; b=QtJxCZ2g0kxLR8oJasEkLo5tZkQBowT0+9ql62+RYbOW37mPogwVPV/LdWr4MZuPmNvjRdTB8QzFQwB93G31SIIlZZvtsasLvGTmMqzdAE8QV/uSuUZWImqJlXtUjKJkgi++yN/j7fhicwnHsZZwnI4GKqarbGU2tStZFsfAu4w=; c=relaxed/simple; s=shh3fegwg5fppqsuzphvschd53n6ihuv; d=amazonses.com; t=1789565659; v=1; bh=a0SYIFNcqu98Z4SrSdaOiwd+9BvFbxoF7Zo98ip9B10=; h=From:To:Cc:Bcc:Subject:Date:Message-ID:MIME-Version:Content-Type:X-SES-RECEIPT; Received: from VIVP296CA0043.AUTP296.PROD.OUTLOOK.COM (2603:10a6:800:353::15) by DBBPR08MB6028.eurprd08.prod.outlook.com (2603:10a6:10:208::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.11; Wed, 16 Sep 2026 13:34:13 +0000 Received: from MI3PEPF00008484.eurprd02.prod.outlook.com (2603:10a6:800:353:cafe::86) by VIVP296CA0043.outlook.office365.com (2603:10a6:800:353::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.11 via Frontend Transport; Wed, 16 Sep 2026 13:34:13 +0000 Authentication-Results-Original: spf=pass (sender IP is 2a00:1450:4864:30::10) smtp.mailfrom=openvz.org; dkim=pass (signature was verified) header.d=openvz.org;dmarc=pass action=none header.from=openvz.org;compauth=pass reason=100 Received-SPF: Pass (protection.outlook.com: domain of openvz.org designates 2a00:1450:4864:30::10 as permitted sender) receiver=protection.outlook.com; client-ip=2a00:1450:4864:30::10; helo=mail-wr2-x10.google.com; pr=C Received: from mail-wr2-x10.google.com (2a00:1450:4864:30::10) by MI3PEPF00008484.mail.protection.outlook.com (2603:10a6:298:1::6b) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.7 via Frontend Transport; Wed, 16 Sep 2026 13:34:12 +0000 Received: by mail-wr2-x10.google.com with SMTP id ffacd0b85a97d-485b1d2874fso303247f8f.0 for ; Wed, 16 Sep 2026 06:34:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=openvz.org; s=google; t=1789565652; x=1790170452; darn=virtuozzo.com; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=NPSSsz/QOwtBlCmxSlV2XVUG8PU87rpVVgl01WsZ/Ls=; b=l+KFRop+Lp1AcY4kxXn5POakPA4hzSX6h9OSIDEqshlz65OuMI3Ra6WJ+vC759OdM8 PNvwxAzplVX2yiEodvWSFDrklhkuzydtJf2AbGFq0poZhv8CTCBuIGe+vwoiKOwvuE9u iZDkfdTaeBOMGBhkXCFcybz0JmS57NBBf9OTs5ljXfXBF2wgJEYx/LS3qzVQSmKZcB7l X0qmVA2gi+ByD2rCkCOYggRH3BLPxFtzHRmxccilUO5kAwJ+PqOLn/ukY3dN5C42/Dm2 2sPVeBshNCJTHcB5sAFNtRBRcUJUoMt1mm+Hz3P9SVcywLjzIe8ccTk9SNuzjt/L0+gd ZZDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789565652; x=1790170452; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=NPSSsz/QOwtBlCmxSlV2XVUG8PU87rpVVgl01WsZ/Ls=; b=MoynrxUSmgORv8uESp1r4C5/G7uFFymaFZ0IFqQOXF0GdtQdOTrj3pnBZxlWLLkiJT 7rZB6ciPO+Xr0QDFYebfsxqWCp6SS2SIqo69Yns9ULkNIAvfaO5tCC4P0ByM7pakBOJf cne9phAy1/R7Ng6We0zJVcWieMRsggkcmB+5VVBVRXJAo+J3Zei3ZUpN6B8lqdEPl1Vl j5woPPuKnTI+uIbaKdUxhy8+7kbg6kLLky8MIRUklz6BuaAsqfQW46CZB+pxZaMRQVmn 7heIyWDc/NJb4fPhdVIj7MH+gPpxSTUA4tAArw2LjZ5dFiu3quFK2FtYIU9EyKtDhNtD bGLw== X-Gm-Message-State: AFuF++kp9EWU2wLqoay9cLl3XO2NP9B/w6hD351JVLH/d5kIot2cYS7v 885AT5KlwfS/meVDdM2b5mTmEw+oVrZ2KYOrcifoca/oqXEiQ/a5TFlHuxfjXBwf0Rvx6mSElSZ ZeXj9fSQ= X-Gm-Gg: AYBFou0uvDDpeV+32et4UWkWN14hjPDZ8Q7Tm9XbV83xg0GXFRg0tK6mQYV9ZHLj+Bz 59Uz5dNLSaNO+Xx7xtKSS5qxBamw7rCMqWx5quq//+NKVPc+eu8FFQ65Ke6Own6vtbnw3rBUGbQ Uof71TsYjfq9X3nVUIuYkGhAdNs8N+iKY2hvv3nnzJyFrNUAFZyBWasF02lr5RN6yt+EJD5agDp EpefoIWe1w8S9HIWDYU6P+3FyMz8NFkKmmMEBqxz8UIZ4p68QvA5xzxc3aGE0SNhIw/Yad+6Xnk 4FOxdg7c4OYM5fCj0/c16lpF4HW1TZApsuNHriiz7MGsKQUZDA4lRUS9//4gRecTvlqdEBcVVZB 3A5xGdBQJQEsURjLrapMBvsTeiPc5kPfcXUxEoemaoVDyGfn5rTHJ0bdavdjRv1XmAN7KEp2Gwy 34FtcBs8KpHHQSTPd7DHmVOo7et+fM/J5fM3196YwvYZByUZ/yBM8fFFBpHaueLZ5KqVO+ X-Received: by 2002:a05:600c:c168:b0:49e:715d:95ca with SMTP id 5b1f17b1804b1-49ea20ac69cmr32911955e9.13.1789565651982; Wed, 16 Sep 2026 06:34:11 -0700 (PDT) Return-Path: den@openvz.org Received: from athena.sw.ru ([2a06:5b06:b600:300:f56f:c51e:c53f:b1ce]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49e83da9a7csm76763235e9.11.2026.09.16.06.34.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:34:11 -0700 (PDT) From: "Denis V. Lunev" To: svt-core@virtuozzo.com Cc: andrey.drobyshev@virtuozzo.com, den@openvz.org Subject: [PATCH hci-8.0 09/12] system/cpus: report a BQL held past a deadline #VSTOR-144507 Date: Wed, 16 Sep 2026 15:33:48 +0200 Message-ID: <20260916133351.1640303-10-den@openvz.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916133351.1640303-1-den@openvz.org> References: <20260916133351.1640303-1-den@openvz.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-EOPAttributedMessage: 1 X-EOPTenantAttributedMessage: 0bc7f26d-0264-416e-a6fc-8352af79c58f:1 X-MS-TrafficTypeDiagnostic: MI3PEPF00008484:EE_|DBBPR08MB6028:EE_|ZR1PEPF0000E6BC:EE_|DB8PR08MB5515:EE_|PAXPR08MB6942:EE_ X-MS-Office365-Filtering-Correlation-Id: a48d55c3-1624-4c23-1332-08df13f737f4 X-MS-Exchange-AtpMessageProperties: SA|SL X-PERCEPTION-POINT-CUSTOM: vzpp X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|6059299003|82310400026|3072899012|2092899012|43022699015|12012899012|6133799003|19002099009|55112099003|57112099003|16102099003|22082099003|18002099003|5063699009|5023799004|10067099003; X-Microsoft-Antispam-Message-Info-Original: =?utf-8?B?TUdDYXdSSldCQnZyanRpbVlHS2NmZ2V1cVk5S2ViRkg5bStWeWF4V21TRkJ5?= =?utf-8?B?emttR08zbXNYZUEzcmVSVDF2bkIva3NORjFaZjRJdDYvaWx1QTBOL0p0cy9T?= =?utf-8?B?SFBWU2dXdHRhMnpqajhDZFJhenVwcWdhUXB1eDNreXhVdWM0eHBKTWc5eER3?= =?utf-8?B?MlptbVRXYXl1bWdEQThrdlVadHJyRUp6UWJrYW14NldxSmtMcEIxQ1BJWXRQ?= =?utf-8?B?QmhQS2RVV0VOVDdodnJMTk9JcVdYbEpqVGlqeEVFa3VPKzlSUEkrYlhhT2V2?= =?utf-8?B?Vjcwc3FIQjdUVStyUzVnUzcyNGFjRG0vMFJDQ2ZjOEFTQ2piemJYK29kUjd3?= =?utf-8?B?SmRuVWYydnhCYWVTTCtxa2lHaFg0MlRvNjlNTE9UcWVkSU1DbWRwVmZXTUNl?= =?utf-8?B?NXpZakVPc3JMSHgrcmR4bnh1RHZWc0lhSzMvMkphTFVzYTZ1QldXbEoxU0lR?= =?utf-8?B?S1c3dlBmeW91TU5nQ1dkcnlxTlZCVTRiSXNlelFnY2dZU3ljamZ0V1dnQXlF?= =?utf-8?B?L200WEd5QzhYajBwM1NLYS9BekhNRWduYUJIZk05eWcxUnVjYW0ycmF1NUZm?= =?utf-8?B?V1VFYmgvVjNYZ0VMMTArOVMwaXZaN0E1eEtQalZVaExwUWMyK2F0N3cvb01X?= =?utf-8?B?RmdkMFloWGlYTVYrYUczSEtGU29MMWFKVEtqb2VKODJDRUFPY0Y5L29ZYzFu?= =?utf-8?B?dCtsclZFQkxNN294bzdrOHRBNTlJWGxjNUp0akxDVGRIMzVsN3V3K2FKN3ZI?= =?utf-8?B?S1p4L1AyK1JUR2Zpclh1UUg4MTlETWJqZm1uVk5ZYnpSUkFQZE5kQ2FwT1VQ?= =?utf-8?B?M25jNkxVK0JaUWNWUkdmRzYvSXZWUmIyV2oyMngxYytjWmVZZERiZ1h2R2xr?= =?utf-8?B?RjZPLytCRHhWd08yZ0MrblQyQ3FLdE1kbmxPbm55Mzh5Tk5GL2VZdGR4Kzhh?= =?utf-8?B?U2p2aXI3ckVNcEpYL0RucGhkbFNRTG9YZmFOa2p6TTVpUXdlVW9ENnB5aWV5?= =?utf-8?B?cWJTUWZac3RUQk9kY0NCMndPSWlqbU10cGpPYU43MlUyd1V5YUE2UkdRczNa?= =?utf-8?B?U0NvaDZwbExuVzRFeGd1MTNxeVFtcVBIcStUWmdkVjZvRGxVaXRDdWhkRWg0?= =?utf-8?B?Ukg2d0ozRDNYeVR0UnhvbXdoNzFyRmxuK2IwenRRK0k0VVUxQjMxY3pXalhq?= =?utf-8?B?OVZqQlBvblB4bndGNUMraEhJVXFlUWJEUzFIVVA5YndkeE56Tk1peVdMeXlM?= =?utf-8?B?Y3RkSUdDVnZ1NG14MXlaaFRWSTg2SFR5MDZLOVVOS1RncVJpMmxCSnJnbmhh?= =?utf-8?B?bkhJQ012OGx0b2ZXTWVvSFJ3TXhVSmU4bXhQa2pyMmE4aXk0VmhJQWRCQmpQ?= =?utf-8?B?RXUwaVQwZkVpb1paQnlYSGE5aTVGZ1UwdGl0NWZIVmZpY3luczlTTmFtWTRS?= =?utf-8?B?Uk1QamVRYTNuZ1I5MHZ6N3ZxWkNSOWs4dFAydHZ6dGxGSktHMnpSQ0FWb1BK?= =?utf-8?B?RWtxRVBNRzRycGZ4eGU5SmNOSkRyRi9kTkcvL3BlZ2JjOFM1dzQ3eWVjdktW?= =?utf-8?B?RUx3VHhaZUpoaEllaFRQQStJYkxwNmU1NEQxc1hqVGUyWEl1cTZRSWlCOERu?= =?utf-8?B?dEhSc1Rvd2w5c2JodStGZERzSXFpTUhjOTN2eWQ5WENMOFZ5WFRPa080czZh?= =?utf-8?B?RHpHWVJqT2lLNjNhUzhaVktJUmlkSjBsSGZPL0duR3dSQ0ZLcXFFbnRqQVVz?= =?utf-8?B?UEkvdTdSV2RUeTFnY2tnbFRQWE1MeUpGems1TmZqM1F4MHF6bXliR2N4TGZD?= =?utf-8?B?NDllTVMxVGIrOG52QS9nejhaRWJrY2J1MjFqQ3ViNjBFSWptMW5YSDJqd3Fq?= =?utf-8?B?dEljYUt2Ukg5TElqT3drejVUR21ZSWJOOVZzVG5yZDAxZ1liVDlGUU9jTFlk?= =?utf-8?B?MmdKSmtzZWpLZnZ4QmtTY1FEazN4VDBVRGdKZnhSbzl6SW96ZFVnQUNneGdO?= =?utf-8?B?enBrOXk1ZTJTN0ltSzBTcWNZdmthNkVnWUVHRFNBa3IrcGhxNmlCeG04MU0r?= =?utf-8?B?V2RoNnVEdlh4TzNWSkV1aDB5MUlKcU1PZTg3L2VlWW1hWCtJSU4vSStFb3Zy?= =?utf-8?B?akR3R3A5SDJSdExGKzZyaXR0S2N5ZUU3Q00zbW9Fa3R4cmxQNFZlRHhydTBz?= =?utf-8?B?WWoyaVNtZHFTUnl5VjVLZm1aSW1ORFdiVHhoSHZieXBOMlZFSGJxSW1EZ3g5?= =?utf-8?B?cGJ2dUt2R0h4VzUvc3VTK1hWL2hGU2tOdHQzUUVZRFZvUlljb3RqVDRZVC9M?= =?utf-8?B?eVc5MVN4Z3JGQitVblEzYzBVZGRvSmdBKzdMQXF3Z0FWRXV0ZUtBT0loWHpF?= =?utf-8?B?VzJ4ekRtRkE4OWdPbU82T0p5VjhFWXc2N0lPbXAwK1ROa0liZmlQa3RvVlpu?= =?utf-8?B?RVFYQ2M1b0NOaThKYU42Sm5TK1gxc3ZUYlhBRVdvQ1ZvTXplRzY3bzRqR2lY?= =?utf-8?B?YzhOL21qWHZ3RkpBTEZLTHM4bFJKbFQ4d3lhenNnWXkvSFlFc1ZBRHYzUnBD?= =?utf-8?B?amZyaHJtQ05oeDFnWUVCUVBlZUtzNmZMTEZyRGNKckd1M2FCWkE4RlZUakIv?= =?utf-8?B?c3hTUmtkUis2dmNDazRIQmlOTDhaL2NneDgrZEdEVWlkZ2s4aHUvOS9SYU5P?= =?utf-8?B?Y0JKb2N5cWhrVDNYbW1xNUxxSlgzbFFUSDMvSGxmWVJhZkpZUStLRXlnanp6?= =?utf-8?B?cXBwTDljanp6dkNaNjlpWlZIdldubExHOXl0bmpZckJRbFB4Y0JyWGovM1l2?= =?utf-8?B?MnYrRzBoY2RZdUI3SUk2MnVUeDZBNEtEb0psNUZJS0xRVkxwdTgzYVMxeVBT?= =?utf-8?B?bmx5VU93U1AyaVBzU3JBZEx5NW9xUEVpMDZUajJWODRPWThBZ3ZMUGxSbkpS?= =?utf-8?Q?tlAj558Gz4q1ber0?= X-Forefront-Antispam-Report-Untrusted: CIP:2a00:1450:4864:30::10;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail-wr2-x10.google.com;PTR:mail-wr2-x10.google.com;CAT:NONE;SFS:(13230040)(6059299003)(82310400026)(3072899012)(2092899012)(43022699015)(12012899012)(6133799003)(19002099009)(55112099003)(57112099003)(16102099003)(22082099003)(18002099003)(5063699009)(5023799004)(10067099003);DIR:INB; X-Auto-Response-Suppress: DR, OOF, AutoReply X-Exchange-RoutingPolicyChecked: UDrtFdllp4I0V0J0gFG+VTTdmFQc92Tevq0at7BWA1HQQ+2ccHukVbuLQwyLita2iJOHAxORAG+2t6Ur4UOqfUXQHlbVzJpPFGMOLbCZloX0CIBULrACw8kdGRL5p+sYTk2mrzZdrnhG5uvkDIH/PaGsHCTeUE5yJkFeSE1oJmmXwK5RAD/aYnzNrtpbKPae2tGn+Jp3jSinMKIzIDz3wEoxt5dx2MoZOTqPMMe+QMM94q9kDcD+eu6BVpMqKiYFCIPS5OsuKAUdjb6Djkyjmvn4SJZzFUdCLMeuczlvCEZc1DuzNDZM7ow4TkaBCvu4tNVjSbrH/T/zI3xJt9hWiw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB6028 X-MS-Exchange-Organization-ExpirationStartTime: 16 Sep 2026 13:34:22.6492 (UTC) X-MS-Exchange-Organization-ExpirationStartTimeReason: OriginalSubmit X-MS-Exchange-Organization-ExpirationInterval: 1:00:00:00.0000000 X-MS-Exchange-Organization-ExpirationIntervalReason: OriginalSubmit X-MS-Exchange-Organization-Network-Message-Id: a48d55c3-1624-4c23-1332-08df13f737f4 X-MS-Exchange-Organization-MessageDirectionality: Incoming X-MS-Exchange-Transport-CrossTenantHeadersStripped: ZR1PEPF0000E6BC.eurprd07.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Exchange-Organization-AuthSource: ZR1PEPF0000E6BC.eurprd07.prod.outlook.com X-MS-Exchange-Organization-AuthAs: Anonymous X-MS-Office365-Filtering-Correlation-Id-Prvs: 0ae83493-010c-4429-8b96-08df13f7320f X-MS-Exchange-Organization-SCL: -1 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|6059299003|35042699022|43022699015|12012899012|3072899012|2092899012|56012099006|5063699009|5023799004|18003699003|6133799003|5133699003|10067099003|16102099003|22082099003|55112099003|19002099009; X-Forefront-Antispam-Report: CIP:99.81.216.78;CTRY:IE;LANG:en;SCL:-1;SRV:;IPV:CAL;SFV:SKN;H:nat.eu.perception-point.io;PTR:nat2.eu.perception-point.io;CAT:NONE;SFS:(13230040)(82310400026)(6059299003)(35042699022)(43022699015)(12012899012)(3072899012)(2092899012)(56012099006)(5063699009)(5023799004)(18003699003)(6133799003)(5133699003)(10067099003)(16102099003)(22082099003)(55112099003)(19002099009);DIR:INB; X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Sep 2026 13:34:21.8523 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a48d55c3-1624-4c23-1332-08df13f737f4 X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-AuthSource: ZR1PEPF0000E6BC.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR08MB5515 X-MS-Exchange-Transport-EndToEndLatency: 00:00:07.1622970 X-MS-Exchange-Processed-By-BccFoldering: 15.21.0451.004 X-Microsoft-Antispam-Mailbox-Delivery: ucf:0;jmr:0;auth:0;dest:I;ENG:(910005)(944506478)(944626604)(920097)(930201)(20251009189)(140003); X-Microsoft-Antispam-Message-Info: =?utf-8?B?RkRXRWxMajBjUUdyNUFNLzNSMFJ6MGJ5YkJuN0FuVjczMlRSVGJITnBqRXJ0?= =?utf-8?B?a2Z2MklPS1N0cUVPeW9DMkkrRmhacy9xTXczcFRzaGQ1MFVBMTNYL0N4cFZV?= =?utf-8?B?bVN6STAyNmVDTXpneEwwQkRlUUNHUVdGRHdOMGVqZnNWdUZpRURRdkN2clpG?= =?utf-8?B?K0didW9mdkg3UkJhaGJzR1JiM2dIa2l0Q3ZzOXd1b2o2T2ZSOHRuME9FMEM4?= =?utf-8?B?amp0TkdDbk9nTG1IeG5XWkwyQnlTeUhndnRmM1dnYVNET3hVUWhTR24rck9O?= =?utf-8?B?cVMvd3hNZEFtLzlDZlFpN2pOTGk2SVhMOFEyYmNqN1VhQUFMRGV6WTAzU1hJ?= =?utf-8?B?Qm1BTk5ucElUZ0FiSEhGbjhkR21xRHFlUG5nZllmKytqN3lSaE81cjdCS0Q4?= =?utf-8?B?VWMyS1paVEdwVTRiMEt2S0VOZHZya1RaL3Z4bUVUYmN4a1hKVzNjZTN4Mjd0?= =?utf-8?B?dGlrR21oQ2JyaGtoakc1YjQ0TDlmbUpYYUI4UkZ3WjJLSUgxKzE2RlhCZVpG?= =?utf-8?B?MmEzRGN2R29Wa2JTZUgreEtLeHJhcUVjaThUYnZTL2R4L3FWR2lGNFI4OUJ4?= =?utf-8?B?Q3UwNkJ1VnphbUk1YVdWenVzaFlFOVIwMnNCbytVay9xUjdwRlF1eWNZM2dG?= =?utf-8?B?c2RTcE1TZ0ZrcVRiMVpqODhHdzZkYTdNb3N6TGpObGEvUzBkOWFrb0piWXlq?= =?utf-8?B?b2cvSWpYbWVDbkZvTjZpMkppR01EeXVPV0MxQkU2cExrWUprSGhpbWdvM0ZP?= =?utf-8?B?Zkt0OUZEVUxoKzB6cDZwSGllM0ZsemlUeUZwaFRFOEgzN1Q2YlZMalZZWHo1?= =?utf-8?B?SWNLVnA1ZUdxNDVDbi9BZjFUSndkZExicFNINzVwSTFaUGFXaVM5eWxtd1oz?= =?utf-8?B?V2hwdyt1MDh6L1NHbTJ1T1p6bUtaWGJ4SXE2b0N1bWZWVHdrazM2QUVhMTRD?= =?utf-8?B?Q2ZscTZXMVpzczVhbXhSUXBobGJUNDJBOUM3VjJHUjZxSG1tbXNrVHQ4di9k?= =?utf-8?B?TmhISk4wem03VXdVbndkSUhvdHFsb3JUN1pzclc5OVdSWGQvZjJXNWV0K2tY?= =?utf-8?B?SEN6V0crYmRycjBpbmZ3blJnTTVGZnBIbW04MExvTEVrRW5rdlZvTC9CSkhx?= =?utf-8?B?UVhwOWhndldWSC9lbEEwUnNZRnQwN0taYTIwUmxEWGJnaE5RbHlrakhkSHc2?= =?utf-8?B?aTJGTE9JWXhxb0JJMFVDK0RwaTFDcElzejJYcGhDbjBoTG9QclN6R0lBbFRY?= =?utf-8?B?U1hwbU1CaHJEUEE0L1BDVnVKYU9PRDc5cFZNYUpVdWJEYVIxOTl3NFJNN2Z4?= =?utf-8?B?Q2dvaGpaUmI2QWxhZFpTa3NPd3hEYk56YzlCL0VCYk1qTTJDaENGdDFBVkcr?= =?utf-8?B?VnBSMkY3UmFzc2wxS1lyV1RqLzRRZ1ZCeDFIUDZYUlBhYWc2M3RVUzBDczk1?= =?utf-8?B?KzN4anZxOFkySmE0V28vRUtkZTg2NUsweWVMTEc0N2xBWWgrRDY1VTJzU0Zz?= =?utf-8?B?QVBobW5xM0dBRStRb0c0N1ZBaHI1a0czYUVXc0hoeWFrTzNOL0M2a1pZZzYx?= =?utf-8?B?RStEWkYwRExvYlJyUGdsUWlma0ZaVmNsTFVZZm81KzJMTHIzRlJkKzQ3VHFO?= =?utf-8?B?SXM4RkxwbWl1U0hEamZMMDE0M3haKzdtRWFYSHAxaG5MNldMUmxxeEtNL0dY?= =?utf-8?B?S3VqQUpuWWxXTDBVa05BNlQ5RTVBaTVvcDRpMlN6RW53b3M4TkZzbGlHakh6?= =?utf-8?B?V21VRHBBS1ZGV0JCc0ZTWUVTZjBTV0JCT3E2VXZKQk9MK0J4ckkvbE1JcjFt?= =?utf-8?B?cUFienVFR1pwRmJRT0pZcFFQRjVKUXg4b1ZMNnJxK1NOWHQ0bjBGOGlZd2Ru?= =?utf-8?B?aHBrWGsxQUF2QUJzQzJBa1VsSzdRYnRBZ0FXeW9aNENrWWtJbStFR1JtVE41?= =?utf-8?B?eEljcjN0RXVPL1hVaUw2MWhyc1dad0tCeTI0b3RxNTgzRko4VWN6RXFacWZB?= =?utf-8?B?UG15OTZYd3h6a1VOMUtOR1Y4cGNPdHR5aVd6ZEdnT3Nyak8raGN0ejJQR2FR?= =?utf-8?B?bVdYcGRBdHUvV2FzSFF6ZzBUOU1aa2JIYlJqSU5IUnNHWC9pRXVGQTA0ZDlp?= =?utf-8?B?VFBtcXYzQVQyM2ZHdFhvLzVTdENEUTA3WDk4YnA4dHYzYzQzOC9NTkJjZkpV?= =?utf-8?B?c1R2RVcxTVNPRXpiZW5yVkcwb0w4MWxlMWF4V2tNZTBTYUJVMW5URm8xSFhE?= =?utf-8?B?RGpvTFcwV1p0Sk1oMzU2SnFpL0pkU0YrNFB3WUJKMWlheEQ3cWNLUnJ1NEpQ?= =?utf-8?B?N3VGdEd5WmExa2RQMU85YkdSOFlBbHJpbVkyYXVGTUw5djFoTWZBbzMyQUZL?= =?utf-8?B?ZFY2cGluYWFQVlhobU5MT1hkMVZiWThCemVzc3R0cEQ0QmlOSVlIT1JiOFhY?= =?utf-8?B?R0dPSEZxQ3ZtdU9aK3V3cTVwdDNWYXJOdm5sUzlJVmRkZnhjMkFyS2pBV1Rs?= =?utf-8?B?bW1SSXlsUHBsc2FabGZrM3dXWEFDUElDaEQ4YmVlYjY1THRZcDIyYXQ1a2ZR?= =?utf-8?B?N2c4N1d1R05KS2E2NHp0bnUvQUpCR09RSVgyZGxlc2p5RUM3d1R0VmQ4dnFk?= =?utf-8?B?VGNybkJVVTNodmlWQjhiYng3UzZtckY5dHluaW1yR0UzTEU3bU5vSHlBOHV0?= =?utf-8?B?SGhBUkRYUzJ5UkNQSE15c2NJcXFXYkhhL29keGR1OTZVSjE2cEg2UDZoVlcv?= =?utf-8?B?RGdRTXU0R2M1bFR3T1hIMTdrVndqSnIvSTlyKzQxMlp1M3kxbWg2NVZEU1kv?= =?utf-8?B?bHdKQU0vNU5XazUxNzJOcGY0aVBaZmlxRWlRTWhJb2YvUVNkOXhSUU1weExG?= =?utf-8?B?aTQ4ODFXTmVCU0lnUjN6OFZZUHd5NjZpNHR6bHpqOVAzcHRPT2lPYzBUYTFw?= =?utf-8?B?VmZFZCtzQUJWd0dSUHk5TzY1SVEyU2syVWMzVldFbGNzYmk4OXV2aC84c1Bu?= =?utf-8?B?UHJPZ2RraGV0LzlkWGYxYVFEeWhaQ3RCam9yVFBTR2NWbWI3VTNRcTBWajA4?= =?utf-8?B?RWxOc2pDRUovMzNObUVLUkxWRzZGdmFEWkZlK1E5N1RyM1BSa2RRN0dkOTJS?= =?utf-8?B?KzUxVWkvdGZiK2ZEa3pGTktsN1JuMzk5aEtGNUxWMHR5RHA0YUFzS3F5WjM1?= =?utf-8?B?NjFqeWhUcWRjODVuUHVKbzQxQ0luelhmckJ5Q3F1Nm5NWWNsTFB4SFMvRXF2?= =?utf-8?B?MWgzUjNVMHdGMVl4S002NVVrTEE2VW11eVhRRkxzK2JsZUVsd2ZnMU1WSnMv?= =?utf-8?B?cVd2K2ZDNXdsM0Y2MUFCTWZSaGs2UnFUY2FCNUQ1OCtiWDlXbzR6NE9VaEtV?= =?utf-8?B?Qm8rdkJQaFVneFZDenVDR1I4cjJmWnd4ZnBDQVkrV1hqYUdLOEZqRXhobW1B?= =?utf-8?B?dGduNmhWTmlGeVVLNGdaNUQ5by9WbnNqUG8rZDJBWjJVQ1g5VE9mcHJ3cWhV?= =?utf-8?B?bnBObkRjTDNYNzVsNFJVZEs3YVRnTE1idU9DeVZvQnZoRjYzKzJPUmgxcklW?= =?utf-8?B?Si9TcytreXJvaFRIRVFYbHhBb2x0UWVFSTAzVkM0bmZHTjMzaVFkVGEzRWtT?= =?utf-8?B?bFVNdkVwaHZqL0ZFUkw2V1MzeU1lZ1BlaWFxaUNNQTFYMXJpTDBhVjNLbm5o?= =?utf-8?B?SlVGczQ5NUQybmJKVDUyVjczdVJ1VkxnQXlpUTEvKy9Fd25aMjVnZEFqaVZ3?= =?utf-8?B?QkZURGM2Uk52ZXMxUFZURHdMdVlWZDBFVWlWRmc9PQ==?= MIME-Version: 1.0 List-Id: From: Denis V. Lunev A vCPU thread reacquires the BQL on every exit that needs userspace, so a lock held for tens of seconds stops those vCPUs dead and the guest reports its own soft lockup. Nothing in qemu records that this happened, which leaves a guest panic as the only evidence and no way to tell a stuck holder from a guest that wedged on its own. Add a BQL watchdog. A thread of its own samples a counter advanced on every acquire and every release, so it is odd while the lock is held. One odd value seen throughout the window means a single owner held the lock for the whole window, because any handover would have advanced the counter twice. Advance it in bql_update_status(), which the mutex hooks already call for exactly those two transitions, so a cond-wait that drops and retakes the lock is covered without the wrappers knowing, and so is any caller that reaches the BQL through the plain mutex API. Record the holder's tid beside it, under the same lock, because the thread listing alone cannot tell a thread parked on its own condvar from one blocked on the BQL. Cache the tid per thread, since gettid is a syscall and this is the lock path. On expiry, name the holder and list every thread's state. The listing separates a thread blocked on the BQL, which waits in a futex, from one idle inside KVM, which waits in kvm_vcpu_block, and names the syscall a wedged holder is stuck in. Report once per episode, or a lock held for a minute buries the log in copies of one answer. Put the time on the line unless -msg timestamp=on already does: a hold is only worth reporting if it can be lined up against what the guest saw, and that option has to be asked for in advance. The deadline has to clear the longest legitimate hold, and migration setup can hold the BQL for a while, so the watchdog stays off unless asked for. The bql-watchdog-ms machine property is the whole interface: it sets the deadline, on the command line or over qom-set at any time, and 0 turns the watchdog off. Reject a deadline above a minute: a hold that long has already shown up as a soft lockup inside the guest. Cc: Paolo Bonzini Cc: Richard Henderson Cc: Philippe Mathieu-Daudé Cc: Zhao Liu Signed-off-by: Denis V. Lunev --- hw/core/machine.c | 27 ++++++++++ include/system/cpus.h | 4 ++ qemu-options.hx | 6 +++ system/cpus.c | 120 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 157 insertions(+) diff --git a/hw/core/machine.c b/hw/core/machine.c index bd61aa69ccc..d5bb047744d 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -923,6 +923,27 @@ static void machine_set_dump_guest_core(Object *obj, bool value, Error **errp) ms->dump_guest_core = value; } +static void machine_get_bql_watchdog_ms(Object *obj, Visitor *v, + const char *name, void *opaque, + Error **errp) +{ + uint64_t value = bql_watchdog_get_timeout_ms(); + + visit_type_uint64(v, name, &value, errp); +} + +static void machine_set_bql_watchdog_ms(Object *obj, Visitor *v, + const char *name, void *opaque, + Error **errp) +{ + uint64_t value; + + if (!visit_type_uint64(v, name, &value, errp)) { + return; + } + bql_watchdog_set_timeout_ms(value, errp); +} + static bool machine_get_mem_merge(Object *obj, Error **errp) { MachineState *ms = MACHINE(obj); @@ -1671,6 +1692,12 @@ static void machine_class_init(ObjectClass *oc, const void *data) object_class_property_set_description(oc, "dump-guest-core", "Include guest memory in a core dump"); + object_class_property_add(oc, "bql-watchdog-ms", "uint64", + machine_get_bql_watchdog_ms, machine_set_bql_watchdog_ms, NULL, NULL); + object_class_property_set_description(oc, "bql-watchdog-ms", + "Watchdog deadline for a Big QEMU Lock hold, in ms. " + "Default: 0 (disabled)"); + object_class_property_add_bool(oc, "mem-merge", machine_get_mem_merge, machine_set_mem_merge); object_class_property_set_description(oc, "mem-merge", diff --git a/include/system/cpus.h b/include/system/cpus.h index 4aebec48705..45adcacdc38 100644 --- a/include/system/cpus.h +++ b/include/system/cpus.h @@ -41,4 +41,8 @@ void cpu_synchronize_all_post_reset(void); void cpu_synchronize_all_post_init(void); void cpu_synchronize_all_pre_loadvm(void); +/* Watchdog deadline for a BQL hold. 0 disables the watchdog. */ +bool bql_watchdog_set_timeout_ms(uint64_t ms, Error **errp); +uint64_t bql_watchdog_get_timeout_ms(void); + #endif diff --git a/qemu-options.hx b/qemu-options.hx index aae51823d70..2809fe42fb9 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -32,6 +32,7 @@ DEF("machine", HAS_ARG, QEMU_OPTION_machine, \ " vmport=on|off|auto controls emulation of vmport (default: auto)\n" " dump-guest-core=on|off include guest memory in a core dump (default=on)\n" " mem-merge=on|off controls memory merge support (default: on)\n" + " bql-watchdog-ms=ms report a Big QEMU Lock held longer than ms (default: 0, off)\n" " aes-key-wrap=on|off controls support for AES key wrapping (default=on)\n" " dea-key-wrap=on|off controls support for DEA key wrapping (default=on)\n" " suppress-vmdesc=on|off disables self-describing migration (default=off)\n" @@ -84,6 +85,11 @@ SRST supported by the host, de-duplicates identical memory pages among VMs instances (enabled by default). + ``bql-watchdog-ms=ms`` + Report when the Big QEMU Lock has been held for more than ``ms`` + milliseconds, up to a minute. The default is 0, which disables the + watchdog. + ``aes-key-wrap=on|off`` Enables or disables AES key wrapping support on s390-ccw hosts. This feature controls whether AES wrapping keys will be created diff --git a/system/cpus.c b/system/cpus.c index 5c2bdc3f3d0..fe7f47ab1c3 100644 --- a/system/cpus.c +++ b/system/cpus.c @@ -36,6 +36,7 @@ #include "exec/cpu-common.h" #include "qemu/thread.h" #include "qemu/main-loop.h" +#include "qemu/error-report.h" #include "qemu/plugin.h" #include "system/cpus.h" #include "qemu/guest-random.h" @@ -419,12 +420,129 @@ static QemuCond qemu_cpu_cond; /* system init */ static QemuCond qemu_pause_cond; +/* + * Advanced by bql_update_status() below, so odd while the BQL is held and + * even while it is free. A sampler that sees one odd value throughout its + * window knows a single owner held the lock for the whole window: any + * handover would have advanced it twice. + */ +static unsigned int bql_seq; + +/* Who advanced bql_seq to its current odd value, 0 while the BQL is free */ +static int bql_owner_tid; + +static int bql_this_tid(void) +{ + static __thread int tid; + + if (tid) { + return tid; + } + tid = qemu_get_thread_id(); + return tid; +} + +/* Poll this many times per timeout, to bound how late the watchdog reacts */ +#define BQL_WATCHDOG_POLLS 4 + +#define BQL_WATCHDOG_MAX_MS (60 * 1000) + +static QemuThread bql_watchdog_thread; +static QemuSemaphore bql_watchdog_sem; +static uint64_t bql_watchdog_timeout_ms; + +static void bql_report_thread_states(void) +{ + g_autofree char *states = qemu_thread_states(); + + if (!states) { + return; + } + qemu_flockfile(stderr); + fputs(states, stderr); + qemu_funlockfile(stderr); +} + +static void *bql_watchdog_fn(void *opaque) +{ + unsigned int last = qatomic_read(&bql_seq); + unsigned int reported = 0; + int stuck_polls = 0; + + for (;;) { + uint64_t timeout_ms = qatomic_read(&bql_watchdog_timeout_ms); + g_autofree char *when = NULL; + unsigned int seq; + + if (!timeout_ms) { + /* Park rather than exit, so re-arming needs no new thread */ + qemu_sem_wait(&bql_watchdog_sem); + last = qatomic_read(&bql_seq); + stuck_polls = 0; + continue; + } + qemu_sem_timedwait(&bql_watchdog_sem, + MAX(timeout_ms / BQL_WATCHDOG_POLLS, 1)); + + seq = qatomic_read(&bql_seq); + if (seq != last || !(seq & 1)) { + last = seq; + stuck_polls = 0; + continue; + } + if (++stuck_polls < BQL_WATCHDOG_POLLS) { + continue; + } + if (seq == reported) { + continue; + } + reported = seq; + if (!message_with_timestamp) { + when = real_time_iso8601(); + } + error_report("%s%sBQL held for more than %" PRIu64 " ms by thread %d", + when ?: "", when ? " " : "", timeout_ms, + qatomic_read(&bql_owner_tid)); + bql_report_thread_states(); + } +} + +uint64_t bql_watchdog_get_timeout_ms(void) +{ + return qatomic_read(&bql_watchdog_timeout_ms); +} + +bool bql_watchdog_set_timeout_ms(uint64_t ms, Error **errp) +{ + static bool started; + + assert(bql_locked()); + if (ms > BQL_WATCHDOG_MAX_MS) { + error_setg(errp, "BQL watchdog deadline must not exceed %d ms", + BQL_WATCHDOG_MAX_MS); + return false; + } + qatomic_set(&bql_watchdog_timeout_ms, ms); + if (!ms) { + return true; + } + if (!started) { + started = true; + qemu_thread_create(&bql_watchdog_thread, "bql-watchdog", + bql_watchdog_fn, NULL, QEMU_THREAD_DETACHED); + } else { + qemu_sem_post(&bql_watchdog_sem); + } + return true; +} + void qemu_init_cpu_loop(void) { qemu_init_sigbus(); qemu_cond_init(&qemu_cpu_cond); qemu_cond_init(&qemu_pause_cond); qemu_mutex_init(&bql); + qemu_sem_init(&bql_watchdog_sem, 0); qemu_thread_get_self(&io_thread); } @@ -528,6 +646,8 @@ void bql_update_status(bool locked) /* This function should only be used when an update happened.. */ assert(bql_locked() != locked); set_bql_locked(locked); + qatomic_set(&bql_owner_tid, locked ? bql_this_tid() : 0); + qatomic_set(&bql_seq, qatomic_read(&bql_seq) + 1); } static uint32_t bql_unlock_blocked; -- 2.53.0