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 55940C001B0 for ; Mon, 7 Aug 2023 12:47:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B7AF96B0080; Mon, 7 Aug 2023 08:47:37 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B2B2B8D0003; Mon, 7 Aug 2023 08:47:37 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9A48C8D0002; Mon, 7 Aug 2023 08:47:37 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 8B4516B0080 for ; Mon, 7 Aug 2023 08:47:37 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 58E8C80A5F for ; Mon, 7 Aug 2023 12:47:37 +0000 (UTC) X-FDA: 81097284954.15.E3EF809 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2040.outbound.protection.outlook.com [40.107.244.40]) by imf06.hostedemail.com (Postfix) with ESMTP id 621E9180014 for ; Mon, 7 Aug 2023 12:47:34 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=Zu2r2mv6; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf06.hostedemail.com: domain of apopple@nvidia.com designates 40.107.244.40 as permitted sender) smtp.mailfrom=apopple@nvidia.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1691412454; 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=98udQuufWcszvln/j/Gh0J4XAnE8SYnB7vQxuIvOr/A=; b=tegTjkn5KvmLMCyh9+7olIEkJzx/d9FIaiodQakM13+1f0PXLhpMiqNNWD09iwQEtW36SN RcPTc+Ou95sjTGWXSTJ656XszfUvj+Iu8deb+2TIHA/Ovc8/G/1FFmE/UDCCdijmL2Wp13 TgwUXgyZ4yr1VkKSyC6wA4dS+LJSH/o= ARC-Authentication-Results: i=2; imf06.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=Zu2r2mv6; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf06.hostedemail.com: domain of apopple@nvidia.com designates 40.107.244.40 as permitted sender) smtp.mailfrom=apopple@nvidia.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1691412454; a=rsa-sha256; cv=pass; b=eCnIkIg2YrL85sRu6sq+30KAG/eywTfXmI/cC3z+iDTn11XQL+K38GZUPDkwZg2wZjyQnC bKzsTi0XiMLBQ3QFNsRmOveybQvGQdpgGWPWiPi027Gn3D0Vz8wBkLQvP+VHeVuTwyAUVr bgmcqkAz+BSMjw4C0yyE9Cd66k+d/1E= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BsWGQbXwcBD5NMVV92vscRILf0QlADehZv9a3d901oyK7XV4vAGbTpL2Uox9Wjh81MBUbRJfcaXy2to8IltBeIAH3oR+xnn3zENOzkZjb4aN4mqlRKwWEOFGPmu7cgNovZQaI695fuOq/Y4OkQblntGeb7D29z7Ma67DntS9/wyBhH9MIaRzYRdqzHXIZoliOe8HcjtvxfYwK+10G/rykEzHNiVDBW7YnvmVlHFM51hhK7DZCN28NHGjyr4IXCqo3LCyVVxTJ/xeEZH93rXCqUUZJt6H5AbIGAAhXQTopREtjax2c+GqD5v9OdWO5AlVKhwUGV4nL6InRq80/3rDqg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=98udQuufWcszvln/j/Gh0J4XAnE8SYnB7vQxuIvOr/A=; b=eKQUeP4Zo7IN4Q9TVs/NgVdatMZkp0TRhO4Ar/tMgQYA/pj67dTwCa2gkT1GuTdCn8ip2PH1bI6FzF0CeUm2uf3W3xX51U18b8esgtp1lyQ6wilSZ26tmsgC9a+g14Smxxf+ysUiNukzFLdS3+9rQhsBcSGIcwOTgnSKG5QShXmmG5Dnq/7XPZn6yGNgk3r19CnGM9IV5QDTZ2zB18KMxOnN1yys1zC6weQK+3xbzFIqo48A5tkv4hUM/eQG9NbmrFQYc3ShWRuB7vV/OHzjel0KJaUEA72em7oyJ3ftnLiTo49SzgXfkSgn7ElDAng5uECNh982ndQ0+Hs8dzQW9g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=98udQuufWcszvln/j/Gh0J4XAnE8SYnB7vQxuIvOr/A=; b=Zu2r2mv6+9PGagq37vP5fXHA5sLYGLvT6v8/pLXas+tZXQtwXR4ze9wphPiMu/fx/N/i4I84tc/VTioeu6kAtwxQW5HBa7G6KEfc2vcTSo2SAFDCfzIJrqq3moIOcW3GEvETciMxZ26SBvHP0wphLt5W3PQijZEWC7Bs0wpHCeMudRcsgQGxNAKKicGliXI7mtbpP0JVr2KDV322fD6eCKcR9wgm0i8FFjBj59ucCofnYnN2PexJ1HkULjJ3pC3Hb9En5YU4l70IQ6cN0nEvBE+UH1tJo3ZNjnGW8eYVhQmLjdC65bs3HxTIFsAURutFRyVvqbyjze4O3frymGMcrw== Received: from BYAPR12MB3176.namprd12.prod.outlook.com (2603:10b6:a03:134::26) by SJ2PR12MB8928.namprd12.prod.outlook.com (2603:10b6:a03:53e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6652.20; Mon, 7 Aug 2023 12:47:31 +0000 Received: from BYAPR12MB3176.namprd12.prod.outlook.com ([fe80::df45:7f28:ee84:b0b2]) by BYAPR12MB3176.namprd12.prod.outlook.com ([fe80::df45:7f28:ee84:b0b2%6]) with mapi id 15.20.6652.026; Mon, 7 Aug 2023 12:47:31 +0000 References: <20230807063945.911582-1-apopple@nvidia.com> <20230807063945.911582-2-apopple@nvidia.com> <9de42ace-dab1-5f60-af8a-26045ada27b9@arm.com> User-agent: mu4e 1.8.13; emacs 28.2 From: Alistair Popple To: Ryan Roberts Cc: Andrew Morton , linux-mm@kvack.org, mhocko@suse.com, jhubbard@nvidia.com, ying.huang@intel.com, osalvador@suse.de, baolin.wang@linux.alibaba.com, ziy@nvidia.com, shy828301@gmail.com Subject: Re: [PATCH 2/2] selftests/migration: Disable NUMA balancing and check migration status Date: Mon, 07 Aug 2023 22:41:40 +1000 In-reply-to: <9de42ace-dab1-5f60-af8a-26045ada27b9@arm.com> Message-ID: <87leen2f4y.fsf@nvdebian.thelocal> Content-Type: text/plain X-ClientProxiedBy: SY5P282CA0068.AUSP282.PROD.OUTLOOK.COM (2603:10c6:10:203::10) To BYAPR12MB3176.namprd12.prod.outlook.com (2603:10b6:a03:134::26) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BYAPR12MB3176:EE_|SJ2PR12MB8928:EE_ X-MS-Office365-Filtering-Correlation-Id: f2183c25-e46c-475e-e548-08db9744770a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: IQUSvp+HRWxi5VhT8CFh2O2B7ivuXgxiKNUVue/PFzFqzlG2bOhe4aKFzLcOTTHbwMc+pjbx5XuVKvul/o3PkrzR+KlJDxgBo9fMAsOlwIPUYCOSF4wvXNRVCqG9yhG9yNdUGllmn7Pjx+yDgnGwc5/vw8bqYgmV9CH5RBoz3894UwjjEoVW6q5ZPDU7gxvzAS6+BS4Tz66qA+RdNflOPchgr/59dszc1gmYXXiSwmRuhbdirdxXaSw1p7x9cOtJ7EOHcSjsvutNHofggZmXoKDamwHvkDtOXy7gotXzTwqtghkJyv5G6krC80Q1f1avfgz3UGCJJqqUwfIKrjj7OcUB8mA/fUpLfp+KLfdVGntMnFU9wEFpXbvo/OjjuZdCQ/uzwSiujIeNKbGtjAYUDL4YYKJop93qBLh0brrXO6bPdj6UA8ryAzP5CkAovzzkt63CN+47C1XNdekDwmTTmYW8X1MkE4jnafuxVVjgAC8zUGrAa2K6q9Ch+s4zRFC22Rovrz2xjdB6ZZWoBc3hCCj3PWFWVolnK8QhzV7/kUH9Gk+a+jiPLApqR4ggClV0 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR12MB3176.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(366004)(346002)(376002)(39860400002)(396003)(136003)(186006)(1800799003)(451199021)(66946007)(66556008)(66476007)(6916009)(4326008)(2906002)(478600001)(8676002)(8936002)(5660300002)(41300700001)(6666004)(316002)(86362001)(6486002)(38100700002)(6512007)(9686003)(53546011)(6506007)(26005)(83380400001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?gigsBmPSNT1BsH1DJkmOK6p1QNqUafGknSTQBQ+ABzi4i4R/Qt3lu9EGPDuJ?= =?us-ascii?Q?UHsRt0I/Ohj7yl9X6Ae/9kJ5FmxYW/wHcG+Nl5grbUR5Zkq7AoqKs8b9/+1U?= =?us-ascii?Q?NZNeu7HCbILUiXMMVRuUFK4KJYMWZFtl4lwEsami2VfSstVFRJWdaHOs1mWg?= =?us-ascii?Q?cSi6p+mnqARwYNVgJTuydYAekH3ptxRty2WwT/w+5/dra685qXO1hjMNknjC?= =?us-ascii?Q?DjDCtGe9xmyUEqi/Zsxiiecsg7dOhlNQcEdcdzDAHyaRYPZ+xj0CFc0VbZ3s?= =?us-ascii?Q?Fv/x6tIlXxQzuTSWtuigKXEjodlw8c7NFCpJxmjjxW3xPyqIEKnYjSIP4Fb1?= =?us-ascii?Q?FGr5EOLXwStgIFZRIp6Edw77gAPbzK04agXz9j9dxY+xMa4vSYUFuCHofanM?= =?us-ascii?Q?HCWmjJKdpwFplpelwdXp4aR5Lnj251eh0cYl+Npi+1KcUhW70ae3wUqjF79t?= =?us-ascii?Q?mHQnm8Yi9s1OllWCR1TwptIoD8G+ODuCSSPHL1KWKcbFRR6Zc+UwVmomd+AT?= =?us-ascii?Q?1RnkFvip3cLHLIhnTv+S/lA1TdSjTcP3pBerRZbh1MgDzGOWytjvHRWE8dNh?= =?us-ascii?Q?dKHjJm4q7zhjTnWA0xvMkiIHb1P0eis4l5lyKggg5UZO1S6YKEQWmp0wnlvZ?= =?us-ascii?Q?ovYdCRLYHwB/F7rHsI3BZtuqP50DcUJRvK859yV2YtnDAFbMJ+Shn8dxUA0u?= =?us-ascii?Q?y39j8PSLtVlwZo4VTIPKemZhCsTl85x8Xuu4soaTtakiEw8TVrSF0hstBlNs?= =?us-ascii?Q?igmgoaHXYWe8OSlZsevJ6l7xTY0F71zpxnMKEi2kDnYXJnIeZ2P3I+X9GyHk?= =?us-ascii?Q?Z7AvkdVTPTA6HJZ1F5ayDfwDY067znU+uX4hJOyfVzPdLo1afeULucilzjvF?= =?us-ascii?Q?i79rpkXXo/jSOAVgOEzrcvrQF738GXG/3nFlwCriHTTsu63RjBl9Dv4qFLc8?= =?us-ascii?Q?s9U/vmU1lu/cSrlyPopbfUlTAopgCt/e5VX9MD5ge+lctQFM9aGkzAEHK6rH?= =?us-ascii?Q?EyoxqvOMZ7gORORQ3Xqk1XFcX6De287mB/IL9n+7RiLDNtfm/KuRkiMc3mYV?= =?us-ascii?Q?+iZeDq5UaOnZoJ2h84+1JbmD1BpWc9NKrFZghdcqDFlMOhzSZ2gtixMsSMPp?= =?us-ascii?Q?c9K4yDS7r2jYTKtBpjXcxy89oxRTxBpcccqxdelwG2WxXH2vGyHowd5maanI?= =?us-ascii?Q?fHrEAfXwmOkV5BDXIvd9CeHqNdnJQuSyiYP/p9o9gpbr7gIeHo9TIAj/heOj?= =?us-ascii?Q?MemD4wmVbE8YZE4z48T77oaXrfosgEGuGvr28/kerCour1Snyw54HVL6S+dC?= =?us-ascii?Q?ncTeAOVF88pNOVt+UZW0dIVCPVboIfQFC3YC6ZopSZ16Tt+a81zyYPNoGoW0?= =?us-ascii?Q?aWPf7XtQV2QgYIur0GjbDdzr2dLR43bJBzwI/InRryRHHfwgJ889cMax0Bt3?= =?us-ascii?Q?cPn9IAId7sMRdjIzSc525lP4DjJS0JbZL29ARVSljI1RbGV7FodQsaO0KDRG?= =?us-ascii?Q?3VaMi1+PLcXXMz8ZVjoZbuVqYkXMO9Um4I8bsJ0QhPRUQvAC8kfW15HOd5bA?= =?us-ascii?Q?ixvr0dJzOlS+M2TaWRZwTLz5vyWmumOXiBIAjWMY?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: f2183c25-e46c-475e-e548-08db9744770a X-MS-Exchange-CrossTenant-AuthSource: BYAPR12MB3176.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Aug 2023 12:47:31.5741 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: TufDtzhWQ1+KFQDuG80kmQIBqIyw25vO8HEC139L7n/I5jvaEm0Pn9GGrbAfGkrUSECa+6xt6Dd9n5/A8XXAHQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB8928 X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 621E9180014 X-Stat-Signature: 5xjgn7b1gdtf695d4cdkutfjshkkft4e X-HE-Tag: 1691412454-298161 X-HE-Meta: U2FsdGVkX1952Kt2WD5/gdfZTM4qYrkq0m9AC8RJci5yrdMAKuPsEdN/7pT+uH4sKvihEiNK8sqeoubaJwSg0VdRJ7FLAhzi0m3PbpjqKNp5tt7/vurCHc/AuIUaGcr/JY9KyN+LQkS60qhnB9LbPl+Y5sJwwmVgEaMDCUKVc/Y83ZBppUVJLqmj3ih/C136uLxozrcqtD4dhHNs/BkZdsBDMfTzyUglRHbcAs8LkiBckOVUeZnIgya/J4YcegWPBirdKQPx8hnsCpja5TfmsvuzqLASQsGTjBifIrWPH8+emFvfi5AMIDxUcRCBV6URMl5Izm+0pSWePwxiqPlC9E5epyQtB45EMSIf8ztiHcMzQPkLDjy214iua8wMKEbq3bIInvhUjCU+K6YRhzta9I5XTJJcinFHDAVJXDH0peAK16wfregYT7t8SVQH8FpTEulzG/ZVbDwMadcngY0XsMftM5V+lqumbWmwZAaPT37x7HjNbnzdyWH7fVeGC2+oBhY0zaRuKQU8R2MiTsbHUaGSP1Tl+FWn7IKqxEV7hBr+dto0KFmNaNA6752dlvkw2KiBB3fGSqOL2ekUmOCzvQtW9Me7t/3QkfYk8SjC/YCx7UnBZGQ98rgaGUYu76PDPWi4TJXbg94j1wL709rJ/whvAKOZAaE4kkpCmp6pJLE7Au7wahkNp7ybgzgJ6q/a8DmeovQI2w3IgJpNtwuvXRncMbEaQPxu413v2sWROtZ950GpEtpj4rPIH8gwirIqiIqaOqoKF6uYjvd39uZRE90DBpyAtacjRKFXtP/W6mhhJGYQmW7ZaJ4Alt66XGvuD96JQBkZImhU0Az/5/gr8h+Xdsh5J7X9wztQbAwm88Qfs6cG5/JRYnQR3VxFQoOGKHVDPi85dmteBksOUQUMGZDtS51SA0u6NTOvZq4tPTw9Wk8hTwF0jUFAXgNfD/eF1yP9fyMpExgC0Drz5iw kgebp3Rm oOKQpHG3Cf+2+6GOgCXsS3L2Dd9FfBgntssTFkKP4Vd8mWu00LHYYsaz8h0NkVOoqzmXXr3kkpvC2T8WIj5a7cQvbZDtpEgxr7MJm7yiuNwrja/ZKSh/cKquwtEQJwSOwPMSUCHfd8Kly1a6lFuw96o0Y2WLRRraWSpwTir7U4AyqGouTzR+mWBfHLRG9dsp8saPobrAOEbz0QYA= 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: Ryan Roberts writes: > On 07/08/2023 07:39, Alistair Popple wrote: >> The migration selftest was only checking the return code and not the >> status array for migration success/failure. Update the test to check >> both. This uncovered a bug in the return code handling of >> do_pages_move(). >> >> Also disable NUMA balancing as that can lead to unexpected migration >> failures. >> >> Signed-off-by: Alistair Popple >> Suggested-by: Ryan Roberts >> --- >> >> Ryan, this will still cause the test to fail if a migration failed. I >> was unable to reproduce a migration failure for any cases on my system >> once I disabled NUMA balancing though so I'd be curious if you are >> still seeing failures with this patch applied. AFAIK there shouldn't >> be anything else that would be causing migration failure so would like >> to know what is causing failures. Thanks! > > > Hi Alistair, > > Afraid I'm still seeing unmigrated pages when running with these 2 patches: > > > # RUN migration.shared_anon ... > Didn't migrate 1 pages > # migration.c:183:shared_anon:Expected migrate(ptr, self->n1, self->n2) (-2) == 0 (0) > # shared_anon: Test terminated by assertion > # FAIL migration.shared_anon > not ok 2 migration.shared_anon > > > I added some instrumentation; it usually fails on the second time > through the loop in migrate() but I've also seen it fail the first > time. Never seen it get though 2 iterations successfully though. Interesting. I guess migration failure is always possible for various reasons so I will update the test to report the number of failed migrations rather than making it a test failure. I was mostly just curious as to what would be causing the occasional failures for my own understanding, but the failures themselves are unimportant. > I did also try just this patch without the error handling update in the kernel, but it still fails in the same way. > > I'm running on arm64 in case that wasn't clear. Let me know if there is anything I can do to help debug. Thanks! Unless you're concerned about the failures I am happy to ignore them. Pages can fail to migrate for all sorts of reasons although I'm a little suprised anonymous migrations are failing so frequently for you. > Thanks, > Ryan > > >> >> tools/testing/selftests/mm/migration.c | 18 +++++++++++++++++- >> 1 file changed, 17 insertions(+), 1 deletion(-) >> >> diff --git a/tools/testing/selftests/mm/migration.c b/tools/testing/selftests/mm/migration.c >> index 379581567f27..cf079af5799b 100644 >> --- a/tools/testing/selftests/mm/migration.c >> +++ b/tools/testing/selftests/mm/migration.c >> @@ -51,6 +51,12 @@ FIXTURE_SETUP(migration) >> ASSERT_NE(self->threads, NULL); >> self->pids = malloc(self->nthreads * sizeof(*self->pids)); >> ASSERT_NE(self->pids, NULL); >> + >> + /* >> + * Disable NUMA balancing which can cause migration >> + * failures. >> + */ >> + numa_set_membind(numa_all_nodes_ptr); >> }; >> >> FIXTURE_TEARDOWN(migration) >> @@ -62,13 +68,14 @@ FIXTURE_TEARDOWN(migration) >> int migrate(uint64_t *ptr, int n1, int n2) >> { >> int ret, tmp; >> - int status = 0; >> struct timespec ts1, ts2; >> >> if (clock_gettime(CLOCK_MONOTONIC, &ts1)) >> return -1; >> >> while (1) { >> + int status = NUMA_NUM_NODES + 1; >> + >> if (clock_gettime(CLOCK_MONOTONIC, &ts2)) >> return -1; >> >> @@ -85,6 +92,15 @@ int migrate(uint64_t *ptr, int n1, int n2) >> return -2; >> } >> >> + /* >> + * Note we should never see this because move_pages() should >> + * have indicated a page couldn't migrate above. >> + */ >> + if (status < 0) { >> + printf("Page didn't migrate, error %d\n", status); >> + return -2; >> + } >> + >> tmp = n2; >> n2 = n1; >> n1 = tmp;