From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) by mx.groups.io with SMTP id smtpd.web08.3588.1653622899886338961 for ; Thu, 26 May 2022 20:41:40 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=QHnV61oK; spf=pass (domain: suse.com, ip: 194.104.111.102, mailfrom: jlee@suse.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1653622897; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=PPuG3l7LgtU9vVTHAPcteUJxBwLLqOu43wvsfHzbpNQ=; b=QHnV61oKKi8M2fY+/Lpn1RsOrQYUEQSUPEO9+GztkOes8fWo85sr7BFN9dNWlmMwoM2TP4 AcdXbCARn7dvJsQ9dmfdZa2LrOWejlN8VZbHFHdKQcN3NJz1sMB+RM69cmTMJeRu3l9KJu fRRLI2V0QhKgCHyKuTrejYqI9Mczovc= Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2108.outbound.protection.outlook.com [104.47.17.108]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-36-Ec14Ye_dNQapP2ey42EC9Q-1; Fri, 27 May 2022 05:41:36 +0200 X-MC-Unique: Ec14Ye_dNQapP2ey42EC9Q-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mf+rBAg7mwqprk8jaFBW1gDzu3M0Uysc6xAwX3CwXiVpaD/gyOK/yIXj5M3QI7tRpjpeoKsGNB0B2nRmoNQs/pGJz261EaazRzr3SphwLBmOp8LhNkiK0jUwplG6olWzzfWTDHZwMPOuFi2VR5Szy9UADeSjh/xpgUpfcjezb7FFVZ4kvppX2YOTehvS5IcvvSFSfba16jzU7WKgNKyWRf9AphvgmlJnYa64fa6uVId9vpI4FXMvDlqJEap06f1F+bSGtwazqL1a9YcEdItZDwxWYNgkYeOYEInI/1l94C1Yr5vq7VpLBLkSrTkKQghrurqELhbxxKWFsHas4JNALQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PPuG3l7LgtU9vVTHAPcteUJxBwLLqOu43wvsfHzbpNQ=; b=anlKEf/YCywx0Ltn36FAI8fir5uNu8VDtfgeU3fffEHFBfybc1IFvx/NHt4Iz+5NZHV+2Wjm4A3plGp9EdlO8lFX+pl8GVgD/GhUby78Gv8TUEmgJP9t2UU92yZCNRs2z0OD3XlOjdtzXdXx7Jmou1heIh0AXL9J5GqTanfyzZn/w4rPjnZdtWO4DLKoCKRew5kHRWm4aST278X0mWP2nK76ZKPGqlslzrhXGey9XL18zh7MpqkI3WOmSl2zMOdlod4KYDKo/UBwuD7bSTKHdTGyRn+7UOUHXYWFOg/M51vt0XrgY3/9b96hxDNzzsxwziOYxB5AkJtYd2K8mHe0Yg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from DB8PR04MB7164.eurprd04.prod.outlook.com (2603:10a6:10:129::23) by AS8PR04MB7895.eurprd04.prod.outlook.com (2603:10a6:20b:2a3::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5293.13; Fri, 27 May 2022 03:41:34 +0000 Received: from DB8PR04MB7164.eurprd04.prod.outlook.com ([fe80::88f7:136:e93:c42c]) by DB8PR04MB7164.eurprd04.prod.outlook.com ([fe80::88f7:136:e93:c42c%5]) with mapi id 15.20.5293.013; Fri, 27 May 2022 03:41:34 +0000 Date: Fri, 27 May 2022 11:41:27 +0800 From: "joeyli" To: devel@edk2.groups.io, jirislaby@kernel.org Subject: Re: [edk2-devel] ovmf miscompiles with gcc-12 Message-ID: <20220527034127.GK4162@linux-l9pv.suse> References: <887c3f4f-c279-bd59-d92d-25922faae6dc@kernel.org> In-Reply-To: <887c3f4f-c279-bd59-d92d-25922faae6dc@kernel.org> User-Agent: Mutt/1.11.4 (2019-03-13) X-ClientProxiedBy: AM6PR01CA0066.eurprd01.prod.exchangelabs.com (2603:10a6:20b:e0::43) To DB8PR04MB7164.eurprd04.prod.outlook.com (2603:10a6:10:129::23) Return-Path: JLee@suse.com MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 914b902b-6d91-457e-8cfd-08da3f92cbaa X-MS-TrafficTypeDiagnostic: AS8PR04MB7895:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: q75/ozvyAdnilVvmwluhqvWVN/6MJiPgg1BZ5ablV64DJB2DvF/13FaBIUFL0bo8AU3lAlaDNwHmAiNpRPuy+uRKOBWKwouJIl7ZW+k5qPmk6PN0CKCvbqNDBgk7z1dI6qFxTBR0t5Q2jvu2YfuQNxY7BzTAdyM0fSno/LlW4EtmKsEGTaM3U3HON0JLDxGYeaLHx9hTFZjxBixBR/vGfv6pWkI49t/CJ9b19BWAW0yNuQOWJtVQKZM79wkXIHtLK4scTsliEY/GF3H3G+nBZ/25x6bDsqvXtByJr/77QPHntOchUNHUAyAcuuOLUfgNxajxue4W4Tgx7vm/L6xJPpJXUJAy/KQ2c8YKU8OTVwUDJuRy2LbCAMVGzCoAo4cXzUl1A8KoWxsX/Omu6inqqXZxeXbkVYj0gId3E/Vr1+OY9eU+RvEvBwdmgEfYMDtMKq891SchNMTb6eNlK1bN6howYD3zWIFqvfOSOccyR5MV295p9wPZWRL6uisS8HfJ14t+XgtDxhVryZdfHKa9ZhJstJIJfyYGkNsv5ECRQAfkk8R6ecuBzKeeuHTc93y5FMbYKuwMwm8BLa8TE5KRM2ibi6NwJl8xrthgJlz8shvVc1grHxXKQF3jCl+leSATVHC9NDiKmUPW828CoxDTifR3N5Et0hKnd5FsH+dvE86A/fPUA/dtEVQSotihiTEroS1ZX6CF4eit7BPnLdrOkZIlGUgCr2HWeYUdRj7SVNPLMVpNhPPl4yrPwiAka2UvZF5SDNnwpgygiWFGwuJScANSXELRQfMLdygFUYr2nQfnjJ7hPyiPvFo8gG/XCewa376jTKExM+HtPS1FC5q/pQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB8PR04MB7164.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(5660300002)(2906002)(508600001)(66476007)(66946007)(66556008)(36756003)(316002)(8676002)(86362001)(26005)(9686003)(38100700002)(6486002)(966005)(6666004)(6506007)(83380400001)(186003)(1076003)(6512007)(8936002)(33656002)(43062005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?0khnyTUYP/bTboWHEsdMr/e06hp+XzAHwpAKNwOkcO0hHdpLYSUPekqOAstD?= =?us-ascii?Q?3X49FHiQheoUHhvAPHqq9zbxX9jsqWgI6mHjCfstCGpesTZM1DOC0PcHpWcK?= =?us-ascii?Q?3WqVEvgtZemZuvEfVVVzXMmvw1vj8LBS+kAc8jaCSCrAHYiUGxyNF0fmgdUS?= =?us-ascii?Q?1esUsvWb45Cr9UdeqhEgVpOn+VxvR/XLIyyw2cA7ezlYA0tx0gXG+ny9ZUks?= =?us-ascii?Q?vZpPQue2lVS/tlETI9Z174N2H/CKKHHz/lsLt0mgaw81czo1LClXPlapCm9E?= =?us-ascii?Q?MeGlsdl2ht6SS7Jfcba40CjKqPEzO/pc5Yuq4MbZKwugt1ev1uJGoYxO+Ovy?= =?us-ascii?Q?Peh1Xs6PL0kWFYGA55BZxqmp7j35njZhOVjN77k6++boZk8b9gSTWZYvTiad?= =?us-ascii?Q?X0Rtrlz5BFoTVEXtt99PBYqb7VzxAmQZ8JQ3NEmbJTAZ5XD4NsQgPqnFvXHG?= =?us-ascii?Q?wtYBQd8fMoK/YiO4kWgkJldu1vOQRnluFddayNdqiHDL6r2fqQjz+KpWrLZa?= =?us-ascii?Q?APVQJu3yFH9gOZoAjaxZDzxakwBnJMQtQORG1eSfFmePc975YRL80PTSkoHe?= =?us-ascii?Q?DcPBWZjnV0cqHRYN5BdvomP8rHHdRW8K7kM0gYcMUOverLcgPWIMvpi7tUvK?= =?us-ascii?Q?BVAXM6t14wekfveQCr2TreRjweiTyXJiKZMqGVZjEdLjba0L6xf6VdOxwoPw?= =?us-ascii?Q?YVLtC7PGbsk/JQODFbxTRw7h/w5/2w3aisdKd2HC+JpNhguuKW37oRHEcAxV?= =?us-ascii?Q?Rmj/91xnp+dcOlYFhhwm37isURNraXKyWHuPW638JItYRYn1SFT7UqXqJ9gs?= =?us-ascii?Q?9256M2MxsbDInsYIxI6a7W3WtsWQJzOCyVKki2P0wjepNoT1c34LwyVH7kSs?= =?us-ascii?Q?C+36A40GFMdbGMM8TZVXHfNx8V60A9Fpeu2OMqls6/NtVOmj5CB3CxjDmG7v?= =?us-ascii?Q?K+1YRMy2ogdKon8A9V7nT6dVIyqJUzDULoqUSexM6oCygjteiWtNhSDfzoGP?= =?us-ascii?Q?X3eP5vrwo6T/S8gLxcHHEbTf4GulBNBOnmv0sbKhcfQ8CgkUQ+ilsVxKcdFV?= =?us-ascii?Q?6cInzAiJFdUW+/nfy5Y6TTQdhu+mMNI5usuXbGq541maDZaWDzcLGw0Auf51?= =?us-ascii?Q?3u7yUYVJXyq19thc9NT3HMKyhtTJ556k054iqe+in+IMZJ7isaKUsHaR5k93?= =?us-ascii?Q?3vfzlulXOozyzYR89AdYxUbIAKfqZnOYOcy7P+UXxUs1l+KpIvvPnPaNuI1j?= =?us-ascii?Q?kGOVFGCR1yvz8oedmAzQ5/pFmPF85V76AAk9WwnmoAZo3M6uYo5uM/BHhFhL?= =?us-ascii?Q?QjW6CXS/hVpjHiStv//WBMx6Z9ARhRCPkw+IHzTXEs2A/LsPdODLctML4zGw?= =?us-ascii?Q?L3r1EuBbuaiwiMyMheWMUx+2JsWGj9hn9yRQtVlck+ziSsj0xvSgISwrpSAo?= =?us-ascii?Q?gBUi3EWsm5GeMH2Mq5sjXfoUPD5v+B5qs8yAbcDah6zxN4InTAl6bE8CXUvl?= =?us-ascii?Q?Oylukrz7qhwm/+ktM6buwcvbF/09/0REDqPC9dL3yNm3RL6TIDVMi4SIA0Ow?= =?us-ascii?Q?CLIVTRUX5tMmdRVKI/m8JSaZXOFscQuLSh290J6/0CQ+X5R+C1iV48C/kAtJ?= =?us-ascii?Q?obMJJhghJi5x7S9uB+Qu65QxJgkHzNle3iy2ukB6WvDaXzQjOyX4N8W7+vRe?= =?us-ascii?Q?sMJtgUOiQ01vxEs/XhCMpwxyJMXeEqye7giULPX1cKZThvjDBkIQQwml7mRA?= =?us-ascii?Q?34Rn4OsKIg=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 914b902b-6d91-457e-8cfd-08da3f92cbaa X-MS-Exchange-CrossTenant-AuthSource: DB8PR04MB7164.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 May 2022 03:41:34.3416 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Cx0GUAQ9GtRzUNVTrZu8vh4wU5AdDAGRJATChIjYeHibP5tnfkXA9ZBLKL0cuTqp X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB7895 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi all, I have filed this issue on tianocore bugzilla: Bug 3934 - ovmf miscompiles with gcc-12 https://bugzilla.tianocore.org/show_bug.cgi?id=3934 Thanks Joey Lee On Thu, May 19, 2022 at 07:43:12AM +0200, Jiri Slaby via groups.io wrote: > Hi, > > we discovered that qemu-ovmf-x86_64 doesn't start when compiled using > gcc-12. Originally reported as: > https://bugzilla.suse.com/show_bug.cgi?id=1199597 > > I run qemu as: > qemu-kvm -drive file=/dev/null,format=raw -drive > if=pflash,format=raw,unit=0,readonly=on,file=OVMF.fd -m 3000 > > The platform repeatedly resets after TemporaryRamMigration as can be seen in > the debuglog: > https://bugzilla.suse.com/attachment.cgi?id=858969 > > The reason is TemporaryRamMigration() overwrites rbp unconditionally -- it > adds an offset to rbp even if rbp is NOT used as a frame pointer > (-fomit-frame-pointer was always used for compilation here). So commenting > out: > > //JumpBuffer.Rbp = JumpBuffer.Rbp + DebugAgentContext.StackMigrateOffset; > > makes it all work again. Also marking TemporaryRamMigration() as: > __attribute__((optimize("-fno-omit-frame-pointer"))) > works around the problem too. (But that doesn't guarantee anything.) > > The code is: > > if (SetJump (&JumpBuffer) == 0) { > > #if defined (MDE_CPU_IA32) > > JumpBuffer.Esp = JumpBuffer.Esp + DebugAgentContext.StackMigrateOffset; > > JumpBuffer.Ebp = JumpBuffer.Ebp + DebugAgentContext.StackMigrateOffset; > > #endif > > #if defined (MDE_CPU_X64) > > JumpBuffer.Rsp = JumpBuffer.Rsp + DebugAgentContext.StackMigrateOffset; > > JumpBuffer.Rbp = JumpBuffer.Rbp + DebugAgentContext.StackMigrateOffset; > > #endif > > LongJump (&JumpBuffer, (UINTN)-1); > > } > > It was only coincidence this ever worked -- gcc-11 omits the frame pointer > too, but apparently the caller (PeiCheckAndSwitchStack) does not use rbp. > > PeiCheckAndSwitchStack() (gcc-12): > > > 79a6: 4c 29 fd sub %r15,%rbp <------ used rbp > > 79a9: 4d 29 fe sub %r15,%r14 > > 79ac: 48 83 ec 20 sub $0x20,%rsp > > 79b0: 4d 89 e0 mov %r12,%r8 > > 79b3: 48 8d 4b 08 lea 0x8(%rbx),%rcx > > 79b7: 48 8b 44 24 50 mov 0x50(%rsp),%rax > > 79bc: 48 8b 54 24 20 mov 0x20(%rsp),%rdx > > 79c1: 4d 29 e8 sub %r13,%r8 > > 79c4: 4c 8b 4c 24 30 mov 0x30(%rsp),%r9 > > 79c9: ff 10 call *(%rax) <----------- call to TemporaryRamMigration > > 79cb: 48 83 c4 20 add $0x20,%rsp > > 79cf: be 01 00 00 00 mov $0x1,%esi > > 79d4: 4c 89 f7 mov %r14,%rdi > > 79d7: e8 f4 a8 ff ff call 22d0 > > 79dc: 48 83 ec 20 sub $0x20,%rsp > > 79e0: 4d 89 f0 mov %r14,%r8 > > 79e3: 31 d2 xor %edx,%edx > > 79e5: 48 89 e9 mov %rbp,%rcx <------ rbp used > > gcc-11 seems to copy rbp to r8 first and operates on r8 there instead. > > Now, what is the right way to fix this? Do the SetJump/LongJump in assembly > and wrap it into push rbp/pop rbp? > > thanks, > -- > js > suse labs > > > >