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 CC4BBC3ABB2 for ; Wed, 28 May 2025 19:52:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 363BF6B007B; Wed, 28 May 2025 15:52:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 313DE6B0082; Wed, 28 May 2025 15:52:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 22AFB6B0083; Wed, 28 May 2025 15:52:52 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 0B4116B007B for ; Wed, 28 May 2025 15:52:52 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 6E9C71A15A1 for ; Wed, 28 May 2025 19:52:51 +0000 (UTC) X-FDA: 83493364542.29.47DC6E8 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf05.hostedemail.com (Postfix) with ESMTP id 4C853100006 for ; Wed, 28 May 2025 19:52:49 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=IkjrUx6P; dmarc=pass (policy=quarantine) header.from=redhat.com; spf=pass (imf05.hostedemail.com: domain of dhildenb@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=dhildenb@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1748461969; 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:content-transfer-encoding:in-reply-to: references:dkim-signature; bh=g+3zZ1K31xkV4VckIAeGyggNzsEYBYLzL0Y5N0v1H1Q=; b=FKiMTNhZNlrjkjK3utWEXhhNvysaVd7wxe2TzDz+aVIkDej7IenBr0MiZOr2LHVHuqZUGC V+4Otb4jZc2kMUnv/15vZ0C4HgiLMADfVkKA74KLstZvUzTZ074Gzvk2Rjr+yFEkb/2u08 R1Ep90NEyQbhIBnFJr/pbsxVF50W3F8= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1748461969; a=rsa-sha256; cv=none; b=p7J5bB4haqcVxlhUBlFIaw/CECofjxKTf0/6fVlWvPjV4YQo+MxQlB6iuviAp+jA9uzhTK KdSObI0WCtdN3h+NHMnZGgpnF5V9chcRS0POqjEOtTYYKLuk+EZn0VWC567KyTYM2CpRAl NCpb9ZNioDj/Dy+hsxJQwTvDDVULjSs= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=IkjrUx6P; dmarc=pass (policy=quarantine) header.from=redhat.com; spf=pass (imf05.hostedemail.com: domain of dhildenb@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=dhildenb@redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1748461968; 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=g+3zZ1K31xkV4VckIAeGyggNzsEYBYLzL0Y5N0v1H1Q=; b=IkjrUx6PwWDjMFdIHDOkGL32iZ3weF66ggcwxSEm+ZjiN2oWCYiU5Ky5caGnqIBQ5B/VVE 43bAEzwjmMqaS+XSDrylM7Rq+CW2ZZujQ1RPjOtAfdn4rD8k6H8Gn9MI2BFkVzOE+RBk1B d9ucLsgCsZJBwBCXxG1fSzmnADobUcY= Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-146-HllI8qNEMOKtvM9amB-98g-1; Wed, 28 May 2025 15:52:47 -0400 X-MC-Unique: HllI8qNEMOKtvM9amB-98g-1 X-Mimecast-MFC-AGG-ID: HllI8qNEMOKtvM9amB-98g_1748461966 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-442dc6f0138so1096035e9.0 for ; Wed, 28 May 2025 12:52:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748461966; x=1749066766; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=g+3zZ1K31xkV4VckIAeGyggNzsEYBYLzL0Y5N0v1H1Q=; b=UC7EjKNbY/BTqAtAV9VLBXBK7mpJhDWmyWOqbKJauRBtSas8MB542SsjkXb71XzxLX h7AQi2DQ2Te8AMrLgvVWoXdjcMNTC3Xh/tEZLDEr52F+ou7c7elGGzpWxXcxG1b63bp2 htDbaWBS7aLFIEQNpN/jiBPyBgtU/DaNYs+Ot3Sni70xzFG3BLqatU+xqXJyhuWULXbd qIeHcQQdFYaqkPPhZPJ4f6NnRY6NnVpY93oyHYcXS17RNYtSI2QZcfX5i2qS8uy1aOh9 YHxaQMLgVnhm5exZJVWqMEhGYUl73kxSihKpg+Eu9rurATo3wGcyQwZjYDbgGndt2z5y ClQw== X-Gm-Message-State: AOJu0YybyrWee+ZizvCrotC16uahDhIvrs1sFflz7/B51/0ccoC8LIh2 SZMD1O1ab13Oe6Bhw765S+uuwYLZZDhEAQd7Y/gtMlZpyCbXneNiq3rUmFdCn3TGgTvwCvtRmSy ZjBSjhxevB3vm4VhyWQFKWxlcCpGexuaEQHJ1SWe5sP+ZAezaCW0vsmaVadY3VZU= X-Gm-Gg: ASbGncveiuzn5jtXc4CUr6drUaLOmefssvCQnB8Imtf4g2+9rUzS8KLAPxUj2G7lP3+ 7zNnm8gjwBaI9FSzQnBhL1TkoiMD4Mr6EwOWdYTLSr8Ozl0toxzNKyM3YzqIneqQTDLa8Qrkovu pLwPiXLDnxJ1CMql191J2/3Kg7+F22KG2NO/ZXE0EQsWV5uPJI9njhBnABEzixU+0f0SYRZAZGm Q0w6mDKzSjhAxthNbz4BM9uY3DOhqwtUNnYu9wCaWGIQ4z/g9IRISS/7hj/njK/gP5/aXTaPctC zNulnqtdtC4DpX38Bfuj1+nEM+LPgDaDX44W8w== X-Received: by 2002:a05:600c:64c6:b0:442:ffa6:d07e with SMTP id 5b1f17b1804b1-44c9141d996mr142856525e9.1.1748461966140; Wed, 28 May 2025 12:52:46 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGgw89HXpBys9AtsSs/u0lppq8iYMgrEKAe3lvjHHrT75X3gsbzLMb8QzLWDC7F41Sro+0ENQ== X-Received: by 2002:a05:600c:64c6:b0:442:ffa6:d07e with SMTP id 5b1f17b1804b1-44c9141d996mr142856365e9.1.1748461965729; Wed, 28 May 2025 12:52:45 -0700 (PDT) Received: from localhost (p57a1aa11.dip0.t-ipconnect.de. [87.161.170.17]) by smtp.gmail.com with UTF8SMTPSA id ffacd0b85a97d-3a4eac89d98sm2283367f8f.42.2025.05.28.12.52.44 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 28 May 2025 12:52:45 -0700 (PDT) From: David Hildenbrand To: linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org, linux-kselftest@vger.kernel.org, David Hildenbrand , Ryan Roberts , Aishwarya TCV , Andrew Morton , Shuah Khan , Lorenzo Stoakes Subject: [PATCH v1] selftests/mm: two fixes for the pfnmap test Date: Wed, 28 May 2025 21:52:44 +0200 Message-ID: <20250528195244.1182810-1-david@redhat.com> X-Mailer: git-send-email 2.49.0 MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 5rCXj0E21UiiR5zzjabxtPNQaXZYhb-zKFh20tqHahw_1748461966 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit content-type: text/plain; charset="US-ASCII"; x-default=true X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 4C853100006 X-Stat-Signature: x33qoszxd8aznan8uarhisrpcdeya4pf X-Rspam-User: X-HE-Tag: 1748461969-675250 X-HE-Meta: U2FsdGVkX1/HZi7sDrV+l7L0YMRDv8Gj5TAC6wWMVpTc88uEZQhFyWlRaGi0FX+KtYXKH+6opDLWnHo5Nr42QxzKKS211IMKPCK20LaIDEk5s+j9yR7IKwjmzZ25X2YLdiGP0tAoxvvLhSdKo8EXXcVFFZA8Hei+0TfgTCkbkWRAZdGzZFskqJ3Dths1016P/IOX/t1xUUG3BVRNBykmt6GF/OLCm8xw/jGliYmoYVm/uDU0ottCviuGv7QZ43m2f0n3ppNdme0d8HMjsu4l+JtAVIiCVjXFHy6FEnHCPlgcPDdOULCxmhps+YnEkoV2PgtoHn8n81kwIDJXNf71GwNc0WsePw+ixdWKU6M92kk67sypZzZH8p6LTOzkaVqNxjeXEbiHTzyDAqHPrEmQHsX/IQXdo/SgRyUUQdysyRtI1DkXFjGkZVQL0QTECW5XqSkYa2HuRwWyttkKw8DO33vjJrxXMhfXYdXh+gQWoxdYRcGxzAW6pBfXgNCeRBDbsmoWDEqskXfAxkYxffUl+F3KLyeRSyXcErgKRaDxAnnMC8ybZ9XfFn+UYTRqFaOvBM9nj02jvCyC8ex9vkVPf4/7L8MMizBWTrIUQOSLoDib5DGdlC72OYA9/lGzf0f3C1EWMhbdvvwjwyIn8EPV+gdr0Svheo3in/ea0WAqnREodML8AIxON2gn66zJz3z1fw1YMsnVnDZTDqEfMlmStWbwwoyxvelu6gEEZleaRGa+hd1MoiSpfVJTNBnf2iKr8rti+wROLI377yB+9FSrgi+FvJa/n1Q3NX/wE7i3iCUfQgFxjxwnojhY9M7hw5oiKNkIxNHfNZm/4/ptnAInp0MLna+zjqnxAh/Ds7MsYhx8CihgYg84rqf2IRzQS78Bhaduc1d49hUQOvrQFnWtxjCFjBqEKfve5hXyyHlxVl7DkhbOFuurc6nFaNorwWhx5P/6sz2uaYxgh5tL9YF HH4dlnih 5+bbgXn+qvxiT2mP+ZJ6XP0XI8BjjiDASKzg1oB5mwYKRbPM9I9Vh95Af1aYfGvekBaSkzFlJV9xl0J4/COBLy0VhTaZHUw2QRz1e2OOb/wQqZQ8WqOUrmqKesE59F3pk3ncfJPrXgNmplM0pnagTkw4i6/6GeIKzLf03fCS4xS5mRm60sN52WTBzzEqwPZKZ2rrJRFfX5nbA156rOcORBHXlKZyX199dSGyl68KCbFQ+azogWaTgoM/scU6Ql+wAsfEdsWUa/b7Z0gtxTajgTrkWITI4nNR/3X+i8at3VunbCoJ4MHToqBJUvaWbwMvvKuT7xuorF8nzW3/nXdQSevchdHEuiwLw4fSwhSaAfYtBHX1uecwxr0A3B1vG7eLEre+L6YFI9YksAvHEp5j/eNCUsjLa31ikoktg+l5KToKTtIzc5peH7O/ouGlvbYxIV7cLMWcx7hPPTE9jQr4aamBD0tbYASrfCrvNm3alLlf8RYy/su/NnaJLiQIRDwX7BZiSRThd3Fc2vxAx6MceVm1Uf4tBni2pHL39cDULN6lnecFxn17l6h/ZDBGt33BD7zz0sVcVQcWf6fqhwTgn75VcmV04Iy9SxBg2cDJz4nrGzHQI1LTICt/MUwT/nk6qkWSd8NSPhUheAVoI3v0nWfuOObmIDpu2jp82 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: List-Subscribe: List-Unsubscribe: When unregistering the signal handler, we have to pass SIG_DFL, and blindly reading from PFN 0 and PFN 1 seems to be problematic on !x86 systems. In particularly, on arm64 tx2 machines where noting resides at these physical memory locations, we can generate RAS errors. Let's fix it by scanning /proc/iomem for actual "System RAM". Reported-by: Ryan Roberts Closes: https://lore.kernel.org/all/232960c2-81db-47ca-a337-38c4bce5f997@arm.com/T/#u Fixes: 2616b370323a ("selftests/mm: add simple VM_PFNMAP tests based on mmap'ing /dev/mem") Reviewed-by: Ryan Roberts Tested-by: Aishwarya TCV Cc: Andrew Morton Cc: Shuah Khan Cc: Lorenzo Stoakes Signed-off-by: David Hildenbrand --- tools/testing/selftests/mm/pfnmap.c | 61 +++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 4 deletions(-) diff --git a/tools/testing/selftests/mm/pfnmap.c b/tools/testing/selftests/mm/pfnmap.c index 8a9d19b6020c7..866ac023baf5c 100644 --- a/tools/testing/selftests/mm/pfnmap.c +++ b/tools/testing/selftests/mm/pfnmap.c @@ -12,6 +12,8 @@ #include #include #include +#include +#include #include #include #include @@ -43,14 +45,62 @@ static int test_read_access(char *addr, size_t size, size_t pagesize) /* Force a read that the compiler cannot optimize out. */ *((volatile char *)(addr + offs)); } - if (signal(SIGSEGV, signal_handler) == SIG_ERR) + if (signal(SIGSEGV, SIG_DFL) == SIG_ERR) return -EINVAL; return ret; } +static int find_ram_target(off_t *phys_addr, + unsigned long long pagesize) +{ + unsigned long long start, end; + char line[80], *end_ptr; + FILE *file; + + /* Search /proc/iomem for the first suitable "System RAM" range. */ + file = fopen("/proc/iomem", "r"); + if (!file) + return -errno; + + while (fgets(line, sizeof(line), file)) { + /* Ignore any child nodes. */ + if (!isalnum(line[0])) + continue; + + if (!strstr(line, "System RAM\n")) + continue; + + start = strtoull(line, &end_ptr, 16); + /* Skip over the "-" */ + end_ptr++; + /* Make end "exclusive". */ + end = strtoull(end_ptr, NULL, 16) + 1; + + /* Actual addresses are not exported */ + if (!start && !end) + break; + + /* We need full pages. */ + start = (start + pagesize - 1) & ~(pagesize - 1); + end &= ~(pagesize - 1); + + if (start != (off_t)start) + break; + + /* We need two pages. */ + if (end > start + 2 * pagesize) { + fclose(file); + *phys_addr = start; + return 0; + } + } + return -ENOENT; +} + FIXTURE(pfnmap) { + off_t phys_addr; size_t pagesize; int dev_mem_fd; char *addr1; @@ -63,14 +113,17 @@ FIXTURE_SETUP(pfnmap) { self->pagesize = getpagesize(); + /* We'll require two physical pages throughout our tests ... */ + if (find_ram_target(&self->phys_addr, self->pagesize)) + SKIP(return, "Cannot find ram target in '/proc/iomem'\n"); + self->dev_mem_fd = open("/dev/mem", O_RDONLY); if (self->dev_mem_fd < 0) SKIP(return, "Cannot open '/dev/mem'\n"); - /* We'll require the first two pages throughout our tests ... */ self->size1 = self->pagesize * 2; self->addr1 = mmap(NULL, self->size1, PROT_READ, MAP_SHARED, - self->dev_mem_fd, 0); + self->dev_mem_fd, self->phys_addr); if (self->addr1 == MAP_FAILED) SKIP(return, "Cannot mmap '/dev/mem'\n"); @@ -129,7 +182,7 @@ TEST_F(pfnmap, munmap_split) */ self->size2 = self->pagesize; self->addr2 = mmap(NULL, self->pagesize, PROT_READ, MAP_SHARED, - self->dev_mem_fd, 0); + self->dev_mem_fd, self->phys_addr); ASSERT_NE(self->addr2, MAP_FAILED); } -- 2.49.0