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 4E0AEC433F5 for ; Mon, 21 Mar 2022 02:57:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C86A36B0072; Sun, 20 Mar 2022 22:57:08 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C65176B0073; Sun, 20 Mar 2022 22:57:08 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AD4846B0074; Sun, 20 Mar 2022 22:57:08 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0146.hostedemail.com [216.40.44.146]) by kanga.kvack.org (Postfix) with ESMTP id 9BEBA6B0072 for ; Sun, 20 Mar 2022 22:57:08 -0400 (EDT) Received: from smtpin22.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 4C5709813E for ; Mon, 21 Mar 2022 02:57:08 +0000 (UTC) X-FDA: 79266881736.22.F19BA53 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf14.hostedemail.com (Postfix) with ESMTP id A285910000F for ; Mon, 21 Mar 2022 02:57:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1647831427; h=from:from: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:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pCuhllurteRua5PyUU4kLUMk7Q61fYm32vUEavsNEtE=; b=Rzenykna5aRjO1X4YmEJ+tlgYnCycqtdoicPzJzFVEpkEAcFxhV2gLItxFmYiwM4rrpCDD nEvGmxwnsoSlprnkDgo2c86xMovAV51aEpoIZcD1vUCpw4XqM3WyMNoS4yFvF6oqYExIax 4JGWE86RVOK4nj7qlQCB5SA6L/jyQ2M= Received: from mail-lf1-f72.google.com (mail-lf1-f72.google.com [209.85.167.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-450-RNIX9oghPoONowsTfOu5pw-1; Sun, 20 Mar 2022 22:57:06 -0400 X-MC-Unique: RNIX9oghPoONowsTfOu5pw-1 Received: by mail-lf1-f72.google.com with SMTP id bq6-20020a056512150600b0044840cccf4bso3397255lfb.1 for ; Sun, 20 Mar 2022 19:57:05 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:cc:references:from:in-reply-to :content-transfer-encoding; bh=pCuhllurteRua5PyUU4kLUMk7Q61fYm32vUEavsNEtE=; b=rweG76z+3mWBkZ0nxt/rJvgccsqRBSpXczpsW9s3dC1iyS2dv3DvYFDS+FoBQ4KWce w90rEjxIshl3w8pBXUz9ENobcmUY60AeyaTktf/nv31Co0uU7j6Dfi6b2qWKFkYYCFLE YE0Vz8EypIrb+e1qEOv9jZMgStS0B8LCpae5Ie61nRZ+OF6qwPvqWYSFeyAwozm64n94 rJBugj4ANtlJuiEB9jN+YvmXXG2b3FO0XVO92lLdV1YEDR1zq+tO4pOHf5BPJfMe8N+l J946kxv0bJgAmOijoD+QZy0+IEwEfW+Wmj+L1X22fqd7c4rPp0CiGY16fE5KzVyN8bmF +BhA== X-Gm-Message-State: AOAM533ldF3p+lHXky4mfa4dS5M2n2X8kINcE7jYp1Wr+Qq5KdZw9SEA OWCBqfk1pavBNQ32urcUGF0YN1GfOC4Ck4IHT4DRCF0VOHFHbjPdF6LLEWVSWfPpryTDsiAeL/t O4qE2Mle6ug== X-Received: by 2002:a05:6512:168f:b0:44a:2173:ed7b with SMTP id bu15-20020a056512168f00b0044a2173ed7bmr5262112lfb.371.1647831424537; Sun, 20 Mar 2022 19:57:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxGJ6Jw1DEi6JG7t+j0bPwnAbvz6hpB8dNlEaxU1hDs2uTDRVf/3MKog+mSrYdO+eyKYtn8Bg== X-Received: by 2002:a05:6512:168f:b0:44a:2173:ed7b with SMTP id bu15-20020a056512168f00b0044a2173ed7bmr5262101lfb.371.1647831424325; Sun, 20 Mar 2022 19:57:04 -0700 (PDT) Received: from [192.168.1.121] (91-145-109-188.bb.dnainternet.fi. [91.145.109.188]) by smtp.gmail.com with ESMTPSA id s6-20020a2e98c6000000b0024803f88994sm1944727ljj.79.2022.03.20.19.57.03 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 20 Mar 2022 19:57:04 -0700 (PDT) Message-ID: <3db4f14c-b0ff-45be-738d-3baa40490892@redhat.com> Date: Mon, 21 Mar 2022 04:57:03 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Subject: Re: [PATCH v3] mm/hmm/test: use char dev with struct device to get device node To: linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: apopple@nvidia.com, jhubbard@nvidia.com, rcampbell@nvidia.com, jgg@ziepe.ca, vbabka@suse.cz References: <20220321024400.20956-1-mpenttil@redhat.com> From: =?UTF-8?Q?Mika_Penttil=c3=a4?= In-Reply-To: <20220321024400.20956-1-mpenttil@redhat.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed X-Rspamd-Queue-Id: A285910000F X-Stat-Signature: r31wtgh1kku9zxan9f617adagb73xgue X-Rspam-User: Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=Rzenykna; dmarc=pass (policy=none) header.from=redhat.com; spf=none (imf14.hostedemail.com: domain of mpenttil@redhat.com has no SPF policy when checking 170.10.133.124) smtp.mailfrom=mpenttil@redhat.com X-Rspamd-Server: rspam02 X-HE-Tag: 1647831427-831285 Content-Transfer-Encoding: quoted-printable 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: Sorry ignore this one, see v4 On 21.3.2022 4.44, mpenttil@redhat.com wrote: > From: Mika Penttil=C3=A4 >=20 > HMM selftests use an in-kernel pseudo device to emulate device private > memory. The pseudo device registers a major device range for two pseudo > device instances. User space has a script that reads /proc/devices in > order to find the assigned major number, and sends that to mknod(1), > once for each node. >=20 > This duplicates a fair amount of boilerplate that misc device can do > instead. >=20 > Change this to use misc device, which makes the device node names appea= r > for us. This also enables udev-like processing if desired. >=20 > Delete the /proc/devices parsing from the user-space test script, now > that it is unnecessary. >=20 > Signed-off-by: Mika Penttil=C3=A4 > Cc: Alistair Popple > Cc: John Hubbard > Cc: Ralph Campbell > Cc: Jason Gunthorpe > Cc: Vlastimil Babka > --- > v3: > - use cdev_device_add() instead of miscdevice > v2: > - Cleanups per review comments from John Hubbard > - Added Tested-by and Ccs >=20 > lib/test_hmm.c | 25 ++++++++++++++++++------- > tools/testing/selftests/vm/test_hmm.sh | 6 ------ > 2 files changed, 18 insertions(+), 13 deletions(-) >=20 > diff --git a/lib/test_hmm.c b/lib/test_hmm.c > index 767538089a62..d247e9c0fe94 100644 > --- a/lib/test_hmm.c > +++ b/lib/test_hmm.c > @@ -29,11 +29,17 @@ > =20 > #include "test_hmm_uapi.h" > =20 > -#define DMIRROR_NDEVICES 2 > #define DMIRROR_RANGE_FAULT_TIMEOUT 1000 > #define DEVMEM_CHUNK_SIZE (256 * 1024 * 1024U) > #define DEVMEM_CHUNKS_RESERVE 16 > =20 > +static const char *dmirror_device_names[] =3D { > + "hmm_dmirror0", > + "hmm_dmirror1" > +}; > + > +#define DMIRROR_NDEVICES ARRAY_SIZE(dmirror_device_names) > + > static const struct dev_pagemap_ops dmirror_devmem_ops; > static const struct mmu_interval_notifier_ops dmirror_min_ops; > static dev_t dmirror_dev; > @@ -74,7 +80,7 @@ struct dmirror { > * ZONE_DEVICE pages for migration and simulating device memory. > */ > struct dmirror_chunk { > - struct dev_pagemap pagemap; > + struct dev_pagemap pagemap; > struct dmirror_device *mdevice; > }; > =20 > @@ -82,8 +88,9 @@ struct dmirror_chunk { > * Per device data. > */ > struct dmirror_device { > - struct cdev cdevice; > - struct hmm_devmem *devmem; > + struct cdev cdevice; > + struct device device; > + struct hmm_devmem *devmem; > =20 > unsigned int devmem_capacity; > unsigned int devmem_count; > @@ -132,7 +139,7 @@ static int dmirror_fops_open(struct inode *inode, s= truct file *filp) > xa_init(&dmirror->pt); > =20 > ret =3D mmu_interval_notifier_insert(&dmirror->notifier, current->mm= , > - 0, ULONG_MAX & PAGE_MASK, &dmirror_min_ops); > + 0, ULONG_MAX & PAGE_MASK, &dmirror_min_ops); > if (ret) { > kfree(dmirror); > return ret; > @@ -1225,7 +1232,11 @@ static int dmirror_device_init(struct dmirror_de= vice *mdevice, int id) > =20 > cdev_init(&mdevice->cdevice, &dmirror_fops); > mdevice->cdevice.owner =3D THIS_MODULE; > - ret =3D cdev_add(&mdevice->cdevice, dev, 1); > + device_initialize(&mdevice->device); > + dev_set_name(&mdevice->device, "%s", dmirror_device_names[id]); > + mdevice->device.devt =3D dev; > + > + ret =3D cdev_device_add(&mdevice->cdevice, &mdevice->device); > if (ret) > return ret; > =20 > @@ -1252,7 +1263,7 @@ static void dmirror_device_remove(struct dmirror_= device *mdevice) > kfree(mdevice->devmem_chunks); > } > =20 > - cdev_del(&mdevice->cdevice); > + cdev_device_del(&mdevice->cdevice, &mdevice->device); > } > =20 > static int __init hmm_dmirror_init(void) > diff --git a/tools/testing/selftests/vm/test_hmm.sh b/tools/testing/sel= ftests/vm/test_hmm.sh > index 0647b525a625..69f5889f8575 100755 > --- a/tools/testing/selftests/vm/test_hmm.sh > +++ b/tools/testing/selftests/vm/test_hmm.sh > @@ -41,17 +41,11 @@ check_test_requirements() > load_driver() > { > modprobe $DRIVER > /dev/null 2>&1 > - if [ $? =3D=3D 0 ]; then > - major=3D$(awk "\$2=3D=3D\"HMM_DMIRROR\" {print \$1}" /proc/devices) > - mknod /dev/hmm_dmirror0 c $major 0 > - mknod /dev/hmm_dmirror1 c $major 1 > - fi > } > =20 > unload_driver() > { > modprobe -r $DRIVER > /dev/null 2>&1 > - rm -f /dev/hmm_dmirror? > } > =20 > run_smoke()