Received: by 2002:a05:7412:da14:b0:e2:908c:2ebd with SMTP id fe20csp34293rdb; Thu, 5 Oct 2023 15:46:47 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGjCIzfg0cCVfV3HpJ3ct6XqOloBGRCraJxaG8OcMceUAAM8+SGWkeEYgfQlNodmsbN9hTz X-Received: by 2002:a05:6a00:1302:b0:692:b8b9:f728 with SMTP id j2-20020a056a00130200b00692b8b9f728mr6837091pfu.30.1696546007263; Thu, 05 Oct 2023 15:46:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696546007; cv=none; d=google.com; s=arc-20160816; b=BIAnc/rw9vKunAoZNnfQOvdczjeI29fKGUU4l7tZCnsiugXY1NRlFPJMRkx0ktIubL cvzOHv1ufKtjWgUj496yPishfqVtpBAHf8vXUzwJEQ1O3G1TC0kQGs68QPV/2Ad0+zLN ujo117y203F+ccF4Pg4/uj9LJqRLWqbn7GwggsMRsZlqywZTHuBWGfgNUoRX/DqvfaKB iI6MmGiBEfLlbj6zKW8CqJ0QvydK6MLEPdvKvMTM+9zVskGIpK2uBWdheoAdqA3AN2hj T2qBok1kzmXLOEPNJao8uIlBnwJD/ixOA7mlCWBFHByRrA0riBUf4Ag3CsmzkwPKHHvP RAqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:from:subject :message-id:references:mime-version:in-reply-to:date:dkim-signature; bh=BFNKMdFnPveldc0HQ7aZGfenM2ZrJbvkhgfmrxqt94M=; fh=11mZAwqBLoRZhobFeLsAeLWv09MNZGexV29Cv67kzGg=; b=hSq+JWTVGxU6GjUvaoLjP1YSW+9myZ4UH7xych35u9mxhJAFg9fjRv7hIjS0UaqpHk 3LfJns3TYWhYRNbH38Z1q1DySFnaVVXmZqzTvukZdA3HBu8ArZg+5Ph2bzoC1WqvHj0p APFR5j28Sh+2pbHd7uDjrjmiOGfyO+0u3Y4TkP/NmHSd30NSNgbs5TayO2vB56ePhuww LNoRPe1kosPW4EQXWHLIHBLquO3VKNoM9yirmNP1SqcXiT3uGAMq8XhVYk9PlPnUJdVc NVvToAnVXDPzBs4nSbhHZ91NCVglPvN03hHUCUNCjPNf2IvciqSAzWb9VU7LOXwIRILj 1r3Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=b2ZAAo2R; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from morse.vger.email (morse.vger.email. [2620:137:e000::3:1]) by mx.google.com with ESMTPS id a62-20020a639041000000b005859e22461csi2303412pge.817.2023.10.05.15.46.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Oct 2023 15:46:47 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) client-ip=2620:137:e000::3:1; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=b2ZAAo2R; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id EEC9A8082CFC; Thu, 5 Oct 2023 15:46:44 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231766AbjJEWqc (ORCPT + 99 others); Thu, 5 Oct 2023 18:46:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52740 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229527AbjJEWqb (ORCPT ); Thu, 5 Oct 2023 18:46:31 -0400 Received: from mail-pj1-x1049.google.com (mail-pj1-x1049.google.com [IPv6:2607:f8b0:4864:20::1049]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DA285DE for ; Thu, 5 Oct 2023 15:46:29 -0700 (PDT) Received: by mail-pj1-x1049.google.com with SMTP id 98e67ed59e1d1-2773ced5d40so1382508a91.1 for ; Thu, 05 Oct 2023 15:46:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1696545989; x=1697150789; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=BFNKMdFnPveldc0HQ7aZGfenM2ZrJbvkhgfmrxqt94M=; b=b2ZAAo2RLBA8EGZPw55N+wyoEcba8G77IVJ8ZBcyQp2Dmi36Sn8Py4VOOv/A/7DA8B X4ZrjM15SD3XxzmLK4uTG9GIdFZWKGk0W2mKzCFxX+GyIJn1sastwlYLv6AJa9AwdlCh +t7uFiqtdMObMKKyShosdrvJESkXJBlxV5OUTyVtRbCHGPjPwtciJpxgqLILT4ms5hhm kCUXSEOnrq425/BV/1K4ftRZ/L9CycF7lKGYDceB0+JaNHJpy3I1LJG3GqfPoX55ilJE WibKy2ybISvuBuw4xrbycnIXVQnr9LCBc/E8+l5DsjgDZsfq+e1jGOOZJe7wm00Rnk/M 9i5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696545989; x=1697150789; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=BFNKMdFnPveldc0HQ7aZGfenM2ZrJbvkhgfmrxqt94M=; b=nKPYWFuXaM/PPYTG2L1x9LhR0KiCke8BYJVTBjeo92tj76GdMH/Sm+yijb+cqj5kKR kMQBKCVFjHPozwlhKYM6VNf/W4pHjs4qSMLL6UmJW7YDGku/RNTVfzDkyz2h4ET5EOh0 NwG+VoFtyryjO0pv9da2wLjVbQ/ew86uTFqaNwWs9j50pycPhSlOv8u1U6ySY55fK8gK kQEvVUgV1F/6Uo0odwWj6EPEZGplazqDRQCbqxMR89QFCJSFqrPr7R2NRCG+UETAJnrE laHbSym+IDkddbfg7cWu+kz+et8YIAwsfMPCdHUpPhBnyYIyAmzLF1KVsizwuOgmd4RV LPpw== X-Gm-Message-State: AOJu0YzxJP6G6ij0Rkpuc9NjjdL2cKEOl+ed/xeEaqEWlztDCoH/iaCF rWpbbc+dJhOb9KUyJc8L1GNq/2Ah23M= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a17:90b:e06:b0:279:9aa1:402c with SMTP id ge6-20020a17090b0e0600b002799aa1402cmr104744pjb.7.1696545989346; Thu, 05 Oct 2023 15:46:29 -0700 (PDT) Date: Thu, 5 Oct 2023 15:46:27 -0700 In-Reply-To: Mime-Version: 1.0 References: <20230914015531.1419405-1-seanjc@google.com> <20230914015531.1419405-8-seanjc@google.com> <117db856-9aec-e91c-b1d4-db2b90ae563d@intel.com> Message-ID: Subject: Re: [RFC PATCH v12 07/33] KVM: Add KVM_EXIT_MEMORY_FAULT exit to report faults to userspace From: Sean Christopherson To: Anish Moorthy Cc: Xiaoyao Li , Paolo Bonzini , Marc Zyngier , Oliver Upton , Huacai Chen , Michael Ellerman , Anup Patel , kvm@vger.kernel.org, kvmarm@lists.linux.dev, kvm-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Chao Peng , Fuad Tabba , Jarkko Sakkinen , Yu Zhang , Isaku Yamahata , Xu Yilun , Vlastimil Babka , Vishal Annapurve , Ackerley Tng , Maciej Szmigiero , David Hildenbrand , Quentin Perret , Michael Roth , Wang , Liam Merwick , Isaku Yamahata Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-8.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Thu, 05 Oct 2023 15:46:45 -0700 (PDT) On Thu, Oct 05, 2023, Anish Moorthy wrote: > On Tue, Oct 3, 2023 at 4:46=E2=80=AFPM Sean Christopherson wrote: > > > > The only way a KVM_EXIT_MEMORY_FAULT that actually reaches userspace co= uld be > > "unreliable" is if something other than a memory_fault exit clobbered t= he union, > > but didn't signal its KVM_EXIT_* reason. And that would be an egregiou= s bug that > > isn't unique to KVM_EXIT_MEMORY_FAULT, i.e. the same data corruption wo= uld affect > > each and every other KVM_EXIT_* reason. >=20 > Keep in mind the case where an "unreliable" annotation sets up a > KVM_EXIT_MEMORY_FAULT, KVM_RUN ends up continuing, then something > unrelated comes up and causes KVM_RUN to EFAULT. Although this at > least is a case of "outdated" information rather than blatant > corruption. Drat, I managed to forget about that. > IIRC the last time this came up we said that there's minimal harm in > userspace acting on the outdated info, but it seems like another good > argument for just restricting the annotations to paths we know are > reliable. What if the second EFAULT above is fatal (as I understand > all are today) and sets up subsequent KVM_RUNs to crash and burn > somehow? Seems like that'd be a safety issue. For your series, let's omit=20 KVM: Annotate -EFAULTs from kvm_vcpu_read/write_guest_page and just fill memory_fault for the page fault paths. That will be easier t= o document too since we can simply say that if the exit reason is KVM_EXIT_ME= MORY_FAULT, then run->memory_fault is valid and fresh. Adding a flag or whatever to mark the data as trustworthy would be the alte= rnative, but that's effectively adding ABI that says "KVM is buggy, sorry". My dream of having KVM always return useful information for -EFAULT will ha= ve to wait for another day.