From patchwork Mon Mar 21 02:54:10 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Mika_Penttil=C3=A4?= X-Patchwork-Id: 12786759 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 DF43AC433F5 for ; Mon, 21 Mar 2022 02:54:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4719D6B0072; Sun, 20 Mar 2022 22:54:20 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3FAD16B0073; Sun, 20 Mar 2022 22:54:20 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 24C936B0074; Sun, 20 Mar 2022 22:54:20 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (relay.hostedemail.com [64.99.140.28]) by kanga.kvack.org (Postfix) with ESMTP id 1205D6B0072 for ; Sun, 20 Mar 2022 22:54:20 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id CA1EE2311F for ; Mon, 21 Mar 2022 02:54:19 +0000 (UTC) X-FDA: 79266874638.12.6914577 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf01.hostedemail.com (Postfix) with ESMTP id 12D2740007 for ; Mon, 21 Mar 2022 02:54:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1647831258; 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; bh=TY98zpyPJjrKTE23mA9lZxRQz88c3+rdB3CLIr1y+50=; b=QFYCtueGmfIkuNzJB8KS5ODDomvJy5WSDnRF0lmhroL0euBTvsnJvZHrru25dfGHTlE3a5 P3aU7f/wYUezpfDAmTKKppId6/De92b+fiZhOyD8fINDlodV7Teu65SuKFlK7IjICH0+EZ pp3LIe8mE/ytK28tEXHC7W9dWTMVq0w= Received: from mail-lf1-f71.google.com (mail-lf1-f71.google.com [209.85.167.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-226-n4mzdl2wPUqEF9WQkbAYOw-1; Sun, 20 Mar 2022 22:54:17 -0400 X-MC-Unique: n4mzdl2wPUqEF9WQkbAYOw-1 Received: by mail-lf1-f71.google.com with SMTP id u29-20020ac251dd000000b0044a245bcc1aso366795lfm.7 for ; Sun, 20 Mar 2022 19:54:16 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=TY98zpyPJjrKTE23mA9lZxRQz88c3+rdB3CLIr1y+50=; b=rtr/1eD/fudj9izLRYBpOFnSw3nQhA7tppVlZau+ibbYccCVQfPH9x9rBiHZc6SN3E O/49cQGWo6o1BPxUQ8yh3NkM70pqgJ0ljhmaDTKx5hC5KISeQWX7r+4xJZogbST4Qz8s L4UTGgQET646Tu2ydl5YoFvov09/qVSOXDtDzdvFA27BCjKg9sRZ9ZsDNHjM2r4BaW3a vW6Z44uA3PYZ/dKQjTmJkbMIsYKm2SAli00tXSEkBu/OBjTRhvJCr1kJb6LhvKUeCMGn Rh9s56iInxnUSEahle5grbPSp4FaUFdHKBI3MzA2kJM2Qm1UjOGMLMFcuXCLsuh0GiVj IgCg== X-Gm-Message-State: AOAM533UNcgJ3k1PX0607bpseMscu+VSdOXoIpgH8DadU0dzVMZb+hIE gHLoHgc7F6cN9DjqqCi8FAgQhesUCuLj2aMNz6vVxCmbu9eJBz5m1uUj26X76VW2AtE77XIFWl8 iXOX4x/wVUg== X-Received: by 2002:a2e:2c16:0:b0:249:66b6:e33d with SMTP id s22-20020a2e2c16000000b0024966b6e33dmr9551995ljs.110.1647831255444; Sun, 20 Mar 2022 19:54:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzPlD9DanXIioqDmkoSx1ZGhTEK3MfIzYvaL5XJttYEIwmmwaRaF4aT1WZPE6chFVlnm2Plmw== X-Received: by 2002:a2e:2c16:0:b0:249:66b6:e33d with SMTP id s22-20020a2e2c16000000b0024966b6e33dmr9551989ljs.110.1647831255238; Sun, 20 Mar 2022 19:54:15 -0700 (PDT) Received: from localhost.localdomain (91-145-109-188.bb.dnainternet.fi. [91.145.109.188]) by smtp.gmail.com with ESMTPSA id p27-20020a056512313b00b0044a315f262csm39213lfd.102.2022.03.20.19.54.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 20 Mar 2022 19:54:14 -0700 (PDT) From: mpenttil@redhat.com 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, =?utf-8?q?Mika_Penttil=C3=A4?= Subject: [PATCH v4] mm/hmm/test: use char dev with struct device to get device node Date: Mon, 21 Mar 2022 04:54:10 +0200 Message-Id: <20220321025410.21286-1-mpenttil@redhat.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 12D2740007 X-Stat-Signature: pf4rt8gbxeshw3xut4omuxg39rm9h58f Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=QFYCtueG; dmarc=pass (policy=none) header.from=redhat.com; spf=none (imf01.hostedemail.com: domain of mpenttil@redhat.com has no SPF policy when checking 170.10.133.124) smtp.mailfrom=mpenttil@redhat.com X-Rspam-User: X-HE-Tag: 1647831258-88186 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: Mika Penttilä 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. Change this to use proper use of cdev APIs and struct device. Delete the /proc/devices parsing from the user-space test script, now that it is unnecessary. Signed-off-by: Mika Penttilä Cc: Alistair Popple Cc: John Hubbard Cc: Ralph Campbell Cc: Jason Gunthorpe Cc: Vlastimil Babka Reviewed-by: John Hubbard --- v4: - fix commit log v3: - use cdev_device_add() instead of miscdevice v2: - Cleanups per review comments from John Hubbard - Added Tested-by and Ccs lib/test_hmm.c | 25 ++++++++++++++++++------- tools/testing/selftests/vm/test_hmm.sh | 6 ------ 2 files changed, 18 insertions(+), 13 deletions(-) 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 @@ #include "test_hmm_uapi.h" -#define DMIRROR_NDEVICES 2 #define DMIRROR_RANGE_FAULT_TIMEOUT 1000 #define DEVMEM_CHUNK_SIZE (256 * 1024 * 1024U) #define DEVMEM_CHUNKS_RESERVE 16 +static const char *dmirror_device_names[] = { + "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; }; @@ -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; unsigned int devmem_capacity; unsigned int devmem_count; @@ -132,7 +139,7 @@ static int dmirror_fops_open(struct inode *inode, struct file *filp) xa_init(&dmirror->pt); ret = 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_device *mdevice, int id) cdev_init(&mdevice->cdevice, &dmirror_fops); mdevice->cdevice.owner = THIS_MODULE; - ret = cdev_add(&mdevice->cdevice, dev, 1); + device_initialize(&mdevice->device); + dev_set_name(&mdevice->device, "%s", dmirror_device_names[id]); + mdevice->device.devt = dev; + + ret = cdev_device_add(&mdevice->cdevice, &mdevice->device); if (ret) return ret; @@ -1252,7 +1263,7 @@ static void dmirror_device_remove(struct dmirror_device *mdevice) kfree(mdevice->devmem_chunks); } - cdev_del(&mdevice->cdevice); + cdev_device_del(&mdevice->cdevice, &mdevice->device); } static int __init hmm_dmirror_init(void) diff --git a/tools/testing/selftests/vm/test_hmm.sh b/tools/testing/selftests/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 [ $? == 0 ]; then - major=$(awk "\$2==\"HMM_DMIRROR\" {print \$1}" /proc/devices) - mknod /dev/hmm_dmirror0 c $major 0 - mknod /dev/hmm_dmirror1 c $major 1 - fi } unload_driver() { modprobe -r $DRIVER > /dev/null 2>&1 - rm -f /dev/hmm_dmirror? } run_smoke()