From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id E5AC7C05027 for ; Thu, 9 Feb 2023 07:25:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1E2E56B0072; Thu, 9 Feb 2023 02:25:35 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 193686B0075; Thu, 9 Feb 2023 02:25:35 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 033D16B0078; Thu, 9 Feb 2023 02:25:34 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id E41F56B0072 for ; Thu, 9 Feb 2023 02:25:34 -0500 (EST) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id A315714077D for ; Thu, 9 Feb 2023 07:25:34 +0000 (UTC) X-FDA: 80446918188.01.06158DF Received: from mail-pj1-f49.google.com (mail-pj1-f49.google.com [209.85.216.49]) by imf17.hostedemail.com (Postfix) with ESMTP id D120B40015 for ; Thu, 9 Feb 2023 07:25:32 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=Qqsr8VuF; spf=pass (imf17.hostedemail.com: domain of isaku.yamahata@gmail.com designates 209.85.216.49 as permitted sender) smtp.mailfrom=isaku.yamahata@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1675927532; a=rsa-sha256; cv=none; b=tPz8GiuFDckYJSYAhGoe0f97eOgJIIOYj5iJ2jU7Tbv6csE3GafFKqLiJfdjr5M6hwFoXt kB4/16TwxvLPQkLmsibSG5j+R3Dd22Rjoc+Q7qypORNNyisFFWuaKIaPV8qACJ8e4s+Ltf 6Y1wEcDlmt6CgetgGActepN6Ep8QqKA= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=Qqsr8VuF; spf=pass (imf17.hostedemail.com: domain of isaku.yamahata@gmail.com designates 209.85.216.49 as permitted sender) smtp.mailfrom=isaku.yamahata@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1675927532; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=rmVDDhkBD33dRebxUB6WkABikP1v8rHGLOz9oy+lzOw=; b=hljZ6vA3twe5m5x1FynDmTOfycUPso6kbBW0u8dgnYUKb3TO+hpilCkipaDe84HHsXriEx ry+9Xrn8ozcb0l0T0JErbsw0k/9EGKntB8lqxLY2a/mPMqxOTGZIsFOFhV0Q3hpU3mSigY Vu7/0YG3+Rv7HDEj9bmqiUJIhY5bJ4c= Received: by mail-pj1-f49.google.com with SMTP id f16-20020a17090a9b1000b0023058bbd7b2so1510229pjp.0 for ; Wed, 08 Feb 2023 23:25:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=rmVDDhkBD33dRebxUB6WkABikP1v8rHGLOz9oy+lzOw=; b=Qqsr8VuFj/cb61lWwBfIJiwftaSsXtTbIODDj9kMRlVfS2CUTcXAcnkVENwaHeFXCc eXeZ9Y66+6ildCk3obb8k3r83H0DWVz4TJzYVPAXagF7GXjgZ3GxGOCw/EF1i0/rp5IN pgGJSBfHppwSSxlu/WOaFOQm7D96GzMtKBjclGwqHDQYZ8V5NNbTw5oahMvkY62J4Bcv xvuULTn8M1jB7ooQLdS2tItxTCRS2SNix0Lv5msweEF06EcK/+YQoovw+ALLc950AbCO dNuYMGg/puoIQ39KxeNIBvRe2lqaJj+1rlej0C5Dhe4aDgkWXgpDufZzv1pwpPPiB1NX cjLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=rmVDDhkBD33dRebxUB6WkABikP1v8rHGLOz9oy+lzOw=; b=5nDz4vD/tM2+N7olT5j+Jm3ewzMRlStzVe9airXrvnCMzMwi5dUSCRam32CYS1tBF0 4OG4xBpyQuW7BgMvO6vEAapD4HaNX54AlB6qHEn0J78vYFzWEl8u8K4T9WWT8DYKMq8h iOBT4MPV08Yyn9vvZcmEYXAXNZ8xsCSqpNYcxh8OqyWiiRvmvtouAnvOhFEY5ZJwb0Mh eNG/NVklrL+LUaYg3QVOgTaoJNN0RQaAWFMmIyN/bBsVqWP5HvgwiNZuDch2JcLu6ZcP 06sW+GVTZa2FiNutjxbFQeH3xz7/ciRqV5/Yc7zVWEmowhANmsyEYVLZR1XpB6ExslEr 40Nw== X-Gm-Message-State: AO0yUKX5L5OCbtD0xeDx5lzeZCQmlZbaQK1fE8vfNGLeXMKUJCG4R2Q9 4g/mEOylromjfoGRU44jh/w= X-Google-Smtp-Source: AK7set81TKZAFzmOrFzSNHYZptbc1qRIgjmsCDass4PkbAdTYVS+WfbfkwETMnLWvQHYBCaWiFrNHA== X-Received: by 2002:a17:902:f2c9:b0:19a:6098:103a with SMTP id h9-20020a170902f2c900b0019a6098103amr325179plc.23.1675927531617; Wed, 08 Feb 2023 23:25:31 -0800 (PST) Received: from localhost ([192.55.54.55]) by smtp.gmail.com with ESMTPSA id n20-20020a170902d0d400b0019948184c33sm664782pln.243.2023.02.08.23.25.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Feb 2023 23:25:30 -0800 (PST) Date: Wed, 8 Feb 2023 23:25:29 -0800 From: Isaku Yamahata To: Chao Peng Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-arch@vger.kernel.org, linux-api@vger.kernel.org, linux-doc@vger.kernel.org, qemu-devel@nongnu.org, Paolo Bonzini , Jonathan Corbet , Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Arnd Bergmann , Naoya Horiguchi , Miaohe Lin , x86@kernel.org, "H . Peter Anvin" , Hugh Dickins , Jeff Layton , "J . Bruce Fields" , Andrew Morton , Shuah Khan , Mike Rapoport , Steven Price , "Maciej S . Szmigiero" , Vlastimil Babka , Vishal Annapurve , Yu Zhang , "Kirill A . Shutemov" , luto@kernel.org, jun.nakajima@intel.com, dave.hansen@intel.com, ak@linux.intel.com, david@redhat.com, aarcange@redhat.com, ddutile@redhat.com, dhildenb@redhat.com, Quentin Perret , tabba@google.com, Michael Roth , mhocko@suse.com, wei.w.wang@intel.com, isaku.yamahata@gmail.com Subject: Re: [PATCH v10 2/9] KVM: Introduce per-page memory attributes Message-ID: <20230209072529.GB4175971@ls.amr.corp.intel.com> References: <20221202061347.1070246-1-chao.p.peng@linux.intel.com> <20221202061347.1070246-3-chao.p.peng@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20221202061347.1070246-3-chao.p.peng@linux.intel.com> X-Rspam-User: X-Rspamd-Queue-Id: D120B40015 X-Rspamd-Server: rspam01 X-Stat-Signature: xwmzuue6urbxopjcpzg5rzr4p591rsp3 X-HE-Tag: 1675927532-911483 X-HE-Meta: U2FsdGVkX19u0JPAb45VUzE7Z+IXvj8MA2yew6krAcREAHHhQ92CMg66W1lgMHmAJv2cedFnPIIxdx+M09Owino77hJO8++mT6lbuL3GH0BwT1XAwViCVtq2lfUXhNdPSjHs92cYwPT5uSnLMXSIElEVZhNfUXpFKneDo2Lp3EEGFS/C/xbp1/Jq+ewr76ApDmBhvZrYufVWv60qY0vNZwAj6TIUlqmo9siSx+I6kCMcJlGjSb4e1feTULlLqgyuV4QYG+eoVWPgemDxEYgoKUgRDg3A1q30YiFXCbns5GLcm+tZxvYNZxqkvDnNIIdR2c9ckIcrIyOd00mm3EEAjI9NXGtV9ueb8kv4BzUvT/RUYv+PlbypyfOHicNsgK76NjHP829/jOx4zQ1ZbGiGGPzi8LaqxMV+xcgGwqLjnmrgXAyvRctd+cZBpzFhGMUTYOiMe9/5vEgx+Gw7yYlWyvRdNh5GLLKxBzmF2xGi2A7V66KT1ePpCB/ok7HD1N9pgTfIOFgYbteFKaF6j797HHxbZd/BFxPk0GOca6KM4r+5y68zfnc8uf2C3ncOi2TZzifRi2kRE6j5ugqVkojMqrf2/ll9krxbdjjOU0Chz2fn+MrHfQxuTsdFgkZHBFIkcg4mxMpDwwfLwDNMHqbqcVbA/5Mf+ZhE+FrxWOUGZXvoGUTNwCWqCFirgaC97nSyPi8SRj2zQx/OQUA8gNxyyt24vDpKWS8F5TNsPytakSON+jBWJUf4b+8G4yFQlc20nMQBK0cHzjJR9o1zYSeSaNZXEJ1AQgXV+HBkbxVSBtXdO07n7CW9G3XrWfD5RI6WCHri1JduUmq1AVaY5nFuuiMm7HOkV5GBAmOW9zWvW/Ou6ZfX9+P2P36qBOZ5ASlp8spPofawEAaLY7zx6OaEs0kowFgrUeYcl3sjJJ68FuUQTYC5bnO2WE0tYfgynTEai60a0/QOf5C4uHo2ePD B+eNI+// jvLNtdJCeMFHFCSHEi8gUQwwXWkHn6FXTht4mQqumOf4jR7tgupIo2clc6PXK5+zl29RJ2C4wKQD16xyyQQihEmbQZUSyIpj2KoIjAqsDh00sAyb/k0XDhkZTaA5t+rcJqgRpdwbFPFTCCvi1uQf0f1UvLJp48aCognxWPnzGR5356P9y6FE3VQWGppF3PsNwB0nfpLcIvFHEsFmDt1AAHKBRxy2rIFFIyfPiEFbF4uoPaD7He/N8Zx7L/8T2zgNN/qrzFUYVmWswasvr7GdC6YpvZPIg7RJ5d0sIHUkdW5yxCgUTEdFpHNqoTBjCdWn1+Ah0rp5UvkLelIDTIMxJNSxlXWmdmgNbiHcycuTbI70cQiibWQYQVKeXW4Npi+xxLirIEhH4XguoKj+SbF6ymk9PZObIg5AUInGUNXF1RWlG2fcaWwdNmlHUCqR3tRUt0uHg6+Wu1cEffC0cdmh73XRoIrjcCM1lmflbIjIzUGkHIlG0mm7jXBqGL6wazQ2XtmGAKomCWQvO8x+r6a9KiqJL7K+6bsVuJZraGv7Hr75eFyu6UB1yrvSMZg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Fri, Dec 02, 2022 at 02:13:40PM +0800, Chao Peng wrote: > +static int kvm_vm_ioctl_set_mem_attributes(struct kvm *kvm, > + struct kvm_memory_attributes *attrs) > +{ > + gfn_t start, end; > + unsigned long i; > + void *entry; > + u64 supported_attrs = kvm_supported_mem_attributes(kvm); > + > + /* flags is currently not used. */ > + if (attrs->flags) > + return -EINVAL; > + if (attrs->attributes & ~supported_attrs) > + return -EINVAL; > + if (attrs->size == 0 || attrs->address + attrs->size < attrs->address) > + return -EINVAL; > + if (!PAGE_ALIGNED(attrs->address) || !PAGE_ALIGNED(attrs->size)) > + return -EINVAL; > + > + start = attrs->address >> PAGE_SHIFT; > + end = (attrs->address + attrs->size - 1 + PAGE_SIZE) >> PAGE_SHIFT; > + > + entry = attrs->attributes ? xa_mk_value(attrs->attributes) : NULL; > + > + mutex_lock(&kvm->lock); > + for (i = start; i < end; i++) > + if (xa_err(xa_store(&kvm->mem_attr_array, i, entry, > + GFP_KERNEL_ACCOUNT))) > + break; > + mutex_unlock(&kvm->lock); > + > + attrs->address = i << PAGE_SHIFT; > + attrs->size = (end - i) << PAGE_SHIFT; > + > + return 0; > +} > +#endif /* CONFIG_HAVE_KVM_MEMORY_ATTRIBUTES */ > + If memslot isn't private, it should return error if private attribute is set. Something like following check is needed. + if (attrs->flags & KVM_MEM_PRIVATE) { + /* non-private memory slot doesn't allow KVM_MEM_PRIVATE */ + for (i = 0; i < kvm_arch_nr_memslot_as_ids(kvm); i++) { + struct kvm_memslot_iter iter; + struct kvm_memslots *slots; + + slots = __kvm_memslots(kvm, i); + kvm_for_each_memslot_in_gfn_range(&iter, slots, start, end) { + if (!kvm_slot_can_be_private(iter.slot)) { + mutex_unlock(&kvm->slots_lock); + return -EINVAL; + } + } + } + } + -- Isaku Yamahata