From patchwork Wed Jan 22 17:43:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Duyck X-Patchwork-Id: 11346181 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8090D921 for ; Wed, 22 Jan 2020 17:43:45 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 3735B24673 for ; Wed, 22 Jan 2020 17:43:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ZS9t478F" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3735B24673 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 4002E6B026A; Wed, 22 Jan 2020 12:43:44 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 3D65D6B026B; Wed, 22 Jan 2020 12:43:44 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 313CF6B026C; Wed, 22 Jan 2020 12:43:44 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0219.hostedemail.com [216.40.44.219]) by kanga.kvack.org (Postfix) with ESMTP id 1CAD06B026A for ; Wed, 22 Jan 2020 12:43:44 -0500 (EST) Received: from smtpin30.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with SMTP id BD6B92489 for ; Wed, 22 Jan 2020 17:43:43 +0000 (UTC) X-FDA: 76405992726.30.thing45_35d3a9124314 X-Spam-Summary: 2,0,0,3efb8a5a64211bc1,d41d8cd98f00b204,alexander.duyck@gmail.com,:kvm@vger.kernel.org:mst@redhat.com:linux-kernel@vger.kernel.org:willy@infradead.org:mhocko@kernel.org::akpm@linux-foundation.org:mgorman@techsingularity.net:vbabka@suse.cz:yang.zhang.wz@gmail.com:nitesh@redhat.com:konrad.wilk@oracle.com:david@redhat.com:pagupta@redhat.com:riel@surriel.com:lcapitulino@redhat.com:dave.hansen@intel.com:wei.w.wang@intel.com:aarcange@redhat.com:pbonzini@redhat.com:dan.j.williams@intel.com:alexander.h.duyck@linux.intel.com:osalvador@suse.de,RULES_HIT:41:152:355:379:800:960:965:966:973:988:989:1260:1277:1311:1313:1314:1345:1359:1431:1437:1515:1516:1518:1535:1542:1593:1594:1711:1730:1747:1777:1792:2196:2199:2393:2559:2562:2689:2693:2898:3138:3139:3140:3141:3142:3353:3865:3866:3867:3868:3870:3872:3874:4117:4385:4390:4395:4605:5007:6261:6653:6742:7576:9413:10004:10400:11026:11473:11658:11914:12043:12048:12294:12296:12297:12438:12517:12519:12555:12679:12760:13255:13972:14 096:1409 X-HE-Tag: thing45_35d3a9124314 X-Filterd-Recvd-Size: 6146 Received: from mail-pg1-f195.google.com (mail-pg1-f195.google.com [209.85.215.195]) by imf42.hostedemail.com (Postfix) with ESMTP for ; Wed, 22 Jan 2020 17:43:42 +0000 (UTC) Received: by mail-pg1-f195.google.com with SMTP id l24so3901771pgk.2 for ; Wed, 22 Jan 2020 09:43:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:from:to:cc:date:message-id:in-reply-to:references :user-agent:mime-version:content-transfer-encoding; bh=fC8BMEakMR3GReeSfdwhKXM9BaYT1gHFYVPBpmBNfng=; b=ZS9t478FcpjQhPXyyPhEXLPJL4jUkaxGHmh3mdPi9pvHbaIkuE84B0LX66N4zdB5qO dd0hPnklYTHs3Ohgam48ACFcCfPlBrooSbJlTttkLP/7prQQfv8rE1C6TMbTi78eNr7M p+dUbuLUI7+RU4qzo4jl4+1s27hQ0gvUEoZS/I11MkT1akuMWJ79epj+fDBj5H9NJOjt Sv8iquZF/bqfGAGm+5X7bCPAQ+pBuH4boAWferhqvZvz4YCJ4aR2Prpszol88VdfQ23H PMXuGotwrbR4L/j4K1W6/2lVOVB6hVahqpVmILbGxY+NSeAkKidocsABCXJXUoDgquxa jueg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:cc:date:message-id:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=fC8BMEakMR3GReeSfdwhKXM9BaYT1gHFYVPBpmBNfng=; b=OJ4vDQ4Rrai+DMMrTVKIKXJZo5zNxyys04AhVkWib+n1KfXsmTD4z3WilB6yAhQ4Dh rWutNbm2VYFZ4epnrHc86po+LzLuVNTJ8WWeMHGgFVLjmUXlmbUFoGcbokC2U5GjM3yl S2dYgcH4squPlwbapVnQ+2Y4s7IiWz4ckGB9n7+2gPQhvSZPL6k6JE3R2nNSvm73bgzv i6oB/7M4NrfU6+izx+t6+iDmw71B4jy+9ztN7vnvp51QPdw4Hlak5yAjSrJ937i9L4e4 LkIFJk0B8FwNMVXgNemlNJwKEVmgnB6W97aEGLOrRFJ8ICq9NGILrli9mFcejgw0OFWw hohA== X-Gm-Message-State: APjAAAUd2YGng0nUVpcSj+rQJWlsVFLbWC4d+gYk5FYmh81p1vavYOEV KUqRniiKpcTHLEEcjtX1n7mm11tiMyuOEA== X-Google-Smtp-Source: APXvYqzKjCEX7ZBjs4hUYDLWzH2kTOno88iLkYoFk9VQTGNAJ92L0ikYKeR8jyL7h09ccoP14A5lSA== X-Received: by 2002:a62:382:: with SMTP id 124mr3679365pfd.11.1579715022042; Wed, 22 Jan 2020 09:43:42 -0800 (PST) Received: from localhost.localdomain ([2001:470:b:9c3:9e5c:8eff:fe4f:f2d0]) by smtp.gmail.com with ESMTPSA id r13sm3565632pgp.73.2020.01.22.09.43.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Jan 2020 09:43:41 -0800 (PST) Subject: [PATCH v16.1 5/9] virtio-balloon: Pull page poisoning config out of free page hinting From: Alexander Duyck To: kvm@vger.kernel.org, mst@redhat.com, linux-kernel@vger.kernel.org, willy@infradead.org, mhocko@kernel.org, linux-mm@kvack.org, akpm@linux-foundation.org, mgorman@techsingularity.net, vbabka@suse.cz Cc: yang.zhang.wz@gmail.com, nitesh@redhat.com, konrad.wilk@oracle.com, david@redhat.com, pagupta@redhat.com, riel@surriel.com, lcapitulino@redhat.com, dave.hansen@intel.com, wei.w.wang@intel.com, aarcange@redhat.com, pbonzini@redhat.com, dan.j.williams@intel.com, alexander.h.duyck@linux.intel.com, osalvador@suse.de Date: Wed, 22 Jan 2020 09:43:41 -0800 Message-ID: <20200122174341.6142.61622.stgit@localhost.localdomain> In-Reply-To: <20200122173040.6142.39116.stgit@localhost.localdomain> References: <20200122173040.6142.39116.stgit@localhost.localdomain> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 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: From: Alexander Duyck Currently the page poisoning setting wasn't being enabled unless free page hinting was enabled. However we will need the page poisoning tracking logic as well for free page reporting. As such pull it out and make it a separate bit of config in the probe function. In addition we need to add support for the more recent init_on_free feature which expects a behavior similar to page poisoning in that we expect the page to be pre-zeroed. Acked-by: Michael S. Tsirkin Reviewed-by: David Hildenbrand Signed-off-by: Alexander Duyck --- drivers/virtio/virtio_balloon.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c index 8e400ece9273..40bb7693e3de 100644 --- a/drivers/virtio/virtio_balloon.c +++ b/drivers/virtio/virtio_balloon.c @@ -862,7 +862,6 @@ static int virtio_balloon_register_shrinker(struct virtio_balloon *vb) static int virtballoon_probe(struct virtio_device *vdev) { struct virtio_balloon *vb; - __u32 poison_val; int err; if (!vdev->config->get) { @@ -929,11 +928,20 @@ static int virtballoon_probe(struct virtio_device *vdev) VIRTIO_BALLOON_CMD_ID_STOP); spin_lock_init(&vb->free_page_list_lock); INIT_LIST_HEAD(&vb->free_page_list); - if (virtio_has_feature(vdev, VIRTIO_BALLOON_F_PAGE_POISON)) { + } + if (virtio_has_feature(vdev, VIRTIO_BALLOON_F_PAGE_POISON)) { + /* Start with poison val of 0 representing general init */ + __u32 poison_val = 0; + + /* + * Let the hypervisor know that we are expecting a + * specific value to be written back in balloon pages. + */ + if (!want_init_on_free()) memset(&poison_val, PAGE_POISON, sizeof(poison_val)); - virtio_cwrite(vb->vdev, struct virtio_balloon_config, - poison_val, &poison_val); - } + + virtio_cwrite(vb->vdev, struct virtio_balloon_config, + poison_val, &poison_val); } /* * We continue to use VIRTIO_BALLOON_F_DEFLATE_ON_OOM to decide if a @@ -1034,7 +1042,10 @@ static int virtballoon_restore(struct virtio_device *vdev) static int virtballoon_validate(struct virtio_device *vdev) { - if (!page_poisoning_enabled()) + /* Tell the host whether we care about poisoned pages. */ + if (!want_init_on_free() && + (IS_ENABLED(CONFIG_PAGE_POISONING_NO_SANITY) || + !page_poisoning_enabled())) __virtio_clear_bit(vdev, VIRTIO_BALLOON_F_PAGE_POISON); __virtio_clear_bit(vdev, VIRTIO_F_IOMMU_PLATFORM);