From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1161751AbdAJDew (ORCPT ); Mon, 9 Jan 2017 22:34:52 -0500 Received: from mail-by2nam01on0069.outbound.protection.outlook.com ([104.47.34.69]:53808 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932400AbdAJDet (ORCPT ); Mon, 9 Jan 2017 22:34:49 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Suravee.Suthikulpanit@amd.com; From: Suravee Suthikulpanit To: , CC: , , , , Suravee Suthikulpanit , Suravee Suthikulpanit Subject: [PATCH v7 1/7] perf/amd/iommu: Misc fix up perf_iommu_read Date: Mon, 9 Jan 2017 21:33:41 -0600 Message-ID: <1484019227-11473-2-git-send-email-Suravee.Suthikulpanit@amd.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1484019227-11473-1-git-send-email-Suravee.Suthikulpanit@amd.com> References: <1484019227-11473-1-git-send-email-Suravee.Suthikulpanit@amd.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [114.109.128.54] X-ClientProxiedBy: SG2PR04CA0045.apcprd04.prod.outlook.com (10.169.49.141) To CY4PR12MB1447.namprd12.prod.outlook.com (10.172.71.139) X-MS-Office365-Filtering-Correlation-Id: 014c2c2d-533b-4bba-951c-08d439099da9 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:CY4PR12MB1447; X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1447;3:17zw7egtgkjc3NV9ruTLIGybutyep6D0MDmzZAETKD2ha5Ib6ukRLWwGFtobYGePvQe7iLvs8elz+OdEuTQvVVf9c+XbSFkKlblEyUjTPUXdUSsoBzXmMSUavMxsAh8z1k6FZycvvwmqqITN0hj3QtpdS47T/9+vwQwfLj9x+Qoc4gZRWDOm9sTgrVOcOKuoJQYCF5xFDGj1//0QH6M8SAoOAK6U7S8MHUkiAzf5TZEU7/QSSz8HOQyXWZRl0QozPprele4TI3KS3+1UjBHUGg==;25:MXM4owICGgRyrQtjTZr9D8mI5oYPq99TlI/8wjcqKF0FGf9DA1j8JK3m76dC/IAVDaprDx/7qmM1l35+wJ1/Hm/Kdf9vw1TPtoD1hIM/25cjFiZZarAg+M7HnZxSY2diswhY+8c3GcYaE880U4Kl1ABmICiDzg7Kh5gDspCZo7vtpBGrYYFMHSXkGGoWKl2RSU5Uj6FTFZ2ogZNcjNySfxvUxBa0thORPDJBNaFWPaXtLqJG66nwbxPLw650RJ/rvfxErw2vcBBps617W6T3L05gt79VS7eIG647308BHsOyu9CY1KyGvga7MIRDzbR7Eo0y4O2qp8IIKnam2M/vTgkK+JUzlaOxmImdwaP99KuTsL1vdTXLMUt3q3jOwDpCNAJR6miEQnAHMUBRspTDuXjgcFHNs70RGjDVfYtMX26Cr/pcRGbcZRNIhXtogpex11gGonXWt7c/kca8oJ9Gxg== X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1447;31:uItaVSnWLxtWJ2PDOdr2blGMm1hl1OYufMN8xt9n26ZrPQmXwB9mPy2N8bBiR3PPlQG5NJqmsSAaSGkJcaB7TbQRZxBt2jqcytnyRPPrt3OFTdL9dp4TbW6Ci8AarjyuDs5JQErC7CxxmMq+ufodL/hc1t7SDC6fTp8x9RSZOS2u50du3gfBec6UOryvmxqUtamAZB9a01jaO9WEsTt/N945nBCq2/eriHqdixxd5pFCsQsrbZnYNulJdRQleBQ3;20:LLvephCpJVQn/Pro3Kfhr7nT5j47THkP14wklejWhSX6fbIYRr8yAUW9VpQdKEkNO+9Ji62JFvjoHeuDWPiT5dKs6idq76vOc6VJpfThMOx9VvT2jToYgL8yCRMWr0uZsLHJSo7DyR/soT+uVxwVRQ+05syRmXk8KbKRGlIGRHVDIj5gYjwTOh8l7bj6oc0Q0Yeoig2fKg3p7ulrr0F0EQG4KPnfTZ0QOOp/MD39G+VjE68AOjlW5sF1GttjtqCHyJgBb4eBnBNAwwk5WEKv9cwlvkIYQ42PTE6Y8oASM+F1Db/K3zGMiuTUYsG/VEEJNiZzGKQ5HAuXJL45rQ3b9D5DtLPHLNyPLjL0znSHuJL+uqwUUtLSpfPlSkXaWd6JXa0zvpuG4ANdLEhbDxQNlNZiTHxpyKNhrm95HaJTFZMfSozRwAwB+qsXfz+Nm5r1nBT9M8My3FaHr3i3n0GWndlSr+bobBcRMmMhSPBZP4omxSUzOfFW3txEl6LHg6ff X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6041248)(20161123560025)(20161123558021)(20161123555025)(20161123562025)(20161123564025)(6042181)(6072148);SRVR:CY4PR12MB1447;BCL:0;PCL:0;RULEID:;SRVR:CY4PR12MB1447; X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1447;4:bqGetwOlfrDISHHQhIm7oPkqkzWfpyL78fpJxX4wjoYu0xCZNQKOJgvns7FaR75V0TxwYUBV2yOtcz4OAGF80yv7Sc78vbIlVL5THcFmCw+aQDglqGLP2d5trhhVPE61/q2GV1qMfCkF1TTVjStUmc5jweM/4vuSGJdZMZVgB+3WEGmd+D4nt2M3O+lV+lFDmb4BIQ5ax0Ag/l3IlFEFcUBg6FUVp6ecpM1q6G0k7j/0xa+vUCt6ZYIDl9I/QRZRFI3O6qY4uuOywPK/4HbLzZdd2FYRpe1WFTh2uBedIxHS8qvBMPQ8zXJZ45bKP1tQen+0w6mmwa4UG9FTK2upQC18TiFhuOoJifvoXJ57s5FE40qVX9YY5L6M0nBMfIRw9khR5it8WXmq2k60v0MABsmytREmOBjNxS8KpqP0jKF5UUmRX4NiLZs7dSldWAQ1iEUAFLwjpZ61JPAPq3SkCEzR6ql1ariiLiFhwvbj5RMn8Grf1ibSEgEhJeQS6vKuZeerxQFpBk4MkBRJk/I2rYOw9MG5DyJ+UXZ4YuK4QrLJeNFnEURi4UJInO1WP9KW/gypdzHFDfSPYZENzCj8dh0Jux11AbP/M4pbSX6qmjhLEazDBwqTowr2H1uGRdx4VS8QaF4Mvciw8gro8pT47at7T1QuO1rvYf9hDjzHV48Oc67hHtjldeDnvYtfx1Xc X-Forefront-PRVS: 01834E39B7 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(189002)(199003)(38730400001)(86362001)(54906002)(48376002)(50466002)(25786008)(305945005)(7736002)(189998001)(6486002)(6506006)(97736004)(68736007)(4720700003)(5001770100001)(6666003)(5660300001)(6512007)(101416001)(66066001)(92566002)(6116002)(3846002)(47776003)(2906002)(50986999)(2950100002)(76176999)(42186005)(8676002)(81156014)(5003940100001)(81166006)(36756003)(50226002)(105586002)(106356001)(4326007);DIR:OUT;SFP:1101;SCL:1;SRVR:CY4PR12MB1447;H:ssuthiku-rhel73.localdomain;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY4PR12MB1447;23:nuED7RrPuX3WGtgB8AOSzZep4wX21YtMfkADkO2yH?= =?us-ascii?Q?pDJ/f/MPidPm9UVrOZFAJq0wUpDj3h7mhLm1925+WaCW8S6KF4aS5Y6yAvxf?= =?us-ascii?Q?E+P5IXwy5TepLkwwbw/d1SVyXBeZLYtLBNgS80xXygu/Dorg9U+fongbIFWP?= =?us-ascii?Q?iR4PIIgSt6oU1u1eSiRXeR+j6HMVcOwZLULu+pLThraWQGLx/jC00R62xQWY?= =?us-ascii?Q?mAk9KWNALZnDH2n9/MIfu0W/a1ANPuqipBoFOILqNfZP3192XWxmFPaM6v9B?= =?us-ascii?Q?d/aGxxxwj3JKnjAeBdSC5edHUO0iGOedNpxW7J87SB9EWZfP1P8k0nfnqFks?= =?us-ascii?Q?trSdr5+5ADMsqCtcKZyW6WVIRr6bzOkptfhHqMMNb7sf3M/9kZ1Uezi3j2X1?= =?us-ascii?Q?DCI/DhX8MTwKEqNAKshFOLV8b6OsWrWm3sqhpQODGD0T38CE/eshG/rREeyf?= =?us-ascii?Q?+BLxC4b8ayRO41S+we7SmZWdkoUwUZuwk3W19eiQTtKpgNNBZJyi6sZ5XA2P?= =?us-ascii?Q?9oqk1C8RQLyXE0Uk8vb63C11DuuX96WnaA++eTXusLFsNm9JJRjsDfVIHOlo?= =?us-ascii?Q?4YMpPs02z4XAKMGxOg3yXnu354VTOWWsEbiSB142/hBWq48Oi2LBEQ8zqfmk?= =?us-ascii?Q?6fzUF1eaHOEcVKS+4HMFiPJ21xcweV0TPH7enWs32R/jYKf8ibM5wWR7X12e?= =?us-ascii?Q?rKuV6DAupPCqAi/iaqS+EygsChdR/JvX5KiNQrTjLO4Uu/LgSs/x14Bwm/0B?= =?us-ascii?Q?L61azraAWGPeQGS85QNZOIMZ+7AfoRZ34PrP2Wei6T8a/kWitAlDesWcjQlI?= =?us-ascii?Q?XSYJ6g6ivbzRaDNbLvZkq7on5akVEAfKAPN4rB8G7RSHE8wX6IaOw6fcOmyF?= =?us-ascii?Q?J4aqWcUefcwqo50q6hvGaud9tRV4X24+ciOY6j2nXcmfJtDlNTdtVW72QLF3?= =?us-ascii?Q?lrkNUDuU1fbYYP32wMm3PAaiZhKblw9DbVn8wOJ9cJozWMZxtBwIC0ELL5fc?= =?us-ascii?Q?kRSJCyomrYTyeTlhmqipiZJ2CNm/I/76O7sxZ5FnjJKUObiwjGRi948JYPaB?= =?us-ascii?Q?GhbCidoRnkLmvZ+JZxnpXwfuhb3?= X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1447;6:uW4EDZ12ri+xUKmOefFJV45EHKgrhxpm0H/4aKpcsHt7+4i2Uu93glSXavUdpP0CXEAEfeBiWQ4aGqZNIBk+1RM4upOoWXmFdAYNz/QdOq1/16QiADBUHDAyn+/o6HNY+rsjxxtkuS+ZBMvF+fm+AOjikMS1wmUgCXz07IA0J7NeA+14d4BzcKZ9NyGWZCsOIjUbYSI4kFJEQ61p6wqWBmSQ4HS38xtdzxxCvHhbLFvvsAgycvFMukxxJd5SCJTFeLYP6eC/aDz9qc0HFjYaM97WuSqJ1ndgtzqhdSn4nWsuk2SbjiBSophnF74NNIOy5XPajqP4YNNCFVkCwlGpXLT/iDB0lu+M+GPsWrI+VslYYVn3B4/2mE2YaVERd4HEv20zc+G3c1FQpMLdMM1v3t+Wsilhpk6fdfNxN28idzmgN+TxHr8onUNUL8u6gXA2EYUMzV9L2MtzcBIkRvGi9w==;5:e4WDle1pX1GpI7poTkjlOGdYzxIhMrP/APx9qFq6hS0zTMKKUC0mRvGTNPUbTgCTCTzgUtRwql1JgLXsRipS+UKosSTJ0SZUi12vYRTKWklaJCVRmAebK3pxhWkjn5cByfgs+UUPdBgj+GiEun1gekL0CbF/Iaxkne3XxkXIDdE=;24:opDTHrrq4rfJjREVUsxe3Vc2M0F/h2iP3QKD2/omlkd9QS0uwsJlqfk2QWEzX6zD/912fNAq+cXiwPxNXRJ8M1qY8H/YFu96D/cTuKuXY+I= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1447;7:ozli6M77i2yz2At5wojnQRaU43UwMRa8kVmHOHVTti0nP8MZ1qbiwHbY27qUV2BxLd2+9ilMY/2cMpRQ75jgHrAB5Ot+60SU/EHC25otMxOhrfCiZsgs4EFpfpGHYnPAuaL39QvBaiJNrOgKYbY9+TPkOLPIx+IUIYtx2SW6uYMPaHDX8xhrSerpWnKN+H1BmSokDJLpxsSInJAKAWdqPBCGaL59FTYhbYJ8KP4r6J5/SoU47ewYFFFzE89Va+kmc0qW/2/nBOgX1puxKi6ll6ImS0ye8qZuPr8BXycF3ZXoqTebW4Zk2wvaOhiQm+qntFwzLokp+l/q9Yv54ndx/M7k7K6hH01xZj1rwTij2Kn2PdGj/Hca/amP19v7Y/qHiJLY/rD6lpChxGGAyh617BWGdfQ7gHXeMtMEid0fG5wa4whkF1v3XLmcSawGglpeQlVAIIP8cGTC5nOFmOdfgg==;20:I3MVH8TsCUrUDhwnj5x2Pez5jt7+0Jx7bqZpbTfuWhHtJoiGGm699B1LpkhmfmIWiWOFQDeA0vWePdu6SQoJ74yFUXxbyB0nJWT1EZGJMb3MCdEE9oGwPvjJm0VIlYRVZQph97oq2nl/Z5KMhV5k968w/qsFmqBGVlShabyZofV8OG9vHlHciojbK1/GSSRvGXx22bF1irKJgIe8ewsDBSAYR6AP4BbY8LLYpMs5kfYpNzNDvcILBdPafIYtqf7w X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2017 03:34:35.3214 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR12MB1447 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch contains the following minor fixup: * Fixed overflow handling since u64 delta would lose the MSB sign bit. * Remove unnecessary local64_set(). * Coding style and make use of GENMASK_ULL macro. Cc: Peter Zijlstra Cc: Borislav Petkov Signed-off-by: Suravee Suthikulpanit --- arch/x86/events/amd/iommu.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/arch/x86/events/amd/iommu.c b/arch/x86/events/amd/iommu.c index b28200d..f387baf 100644 --- a/arch/x86/events/amd/iommu.c +++ b/arch/x86/events/amd/iommu.c @@ -319,29 +319,30 @@ static void perf_iommu_start(struct perf_event *event, int flags) static void perf_iommu_read(struct perf_event *event) { - u64 count = 0ULL; - u64 prev_raw_count = 0ULL; - u64 delta = 0ULL; + u64 cnt, prev; + s64 delta; struct hw_perf_event *hwc = &event->hw; pr_debug("perf: amd_iommu:perf_iommu_read\n"); amd_iommu_pc_get_set_reg_val(_GET_DEVID(event), _GET_BANK(event), _GET_CNTR(event), - IOMMU_PC_COUNTER_REG, &count, false); + IOMMU_PC_COUNTER_REG, &cnt, false); /* IOMMU pc counter register is only 48 bits */ - count &= 0xFFFFFFFFFFFFULL; + cnt &= GENMASK_ULL(48, 0); - prev_raw_count = local64_read(&hwc->prev_count); - if (local64_cmpxchg(&hwc->prev_count, prev_raw_count, - count) != prev_raw_count) - return; + prev = local64_read(&hwc->prev_count); - /* Handling 48-bit counter overflowing */ - delta = (count << COUNTER_SHIFT) - (prev_raw_count << COUNTER_SHIFT); + /* + * Since we do not enable counter overflow interrupts, + * we do not have to worry about prev_count changing on us. + */ + local64_set(&hwc->prev_count, cnt); + + /* Handle 48-bit counter overflow */ + delta = (cnt << COUNTER_SHIFT) - (prev << COUNTER_SHIFT); delta >>= COUNTER_SHIFT; local64_add(delta, &event->count); - } static void perf_iommu_stop(struct perf_event *event, int flags) -- 1.8.3.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Suravee Suthikulpanit Subject: [PATCH v7 1/7] perf/amd/iommu: Misc fix up perf_iommu_read Date: Mon, 9 Jan 2017 21:33:41 -0600 Message-ID: <1484019227-11473-2-git-send-email-Suravee.Suthikulpanit@amd.com> References: <1484019227-11473-1-git-send-email-Suravee.Suthikulpanit@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1484019227-11473-1-git-send-email-Suravee.Suthikulpanit-5C7GfCeVMHo@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: iommu-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Errors-To: iommu-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org To: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Cc: peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org, mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, bp-Gina5bIWoIWzQB+pC5nmwQ@public.gmane.org List-Id: iommu@lists.linux-foundation.org This patch contains the following minor fixup: * Fixed overflow handling since u64 delta would lose the MSB sign bit. * Remove unnecessary local64_set(). * Coding style and make use of GENMASK_ULL macro. Cc: Peter Zijlstra Cc: Borislav Petkov Signed-off-by: Suravee Suthikulpanit --- arch/x86/events/amd/iommu.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/arch/x86/events/amd/iommu.c b/arch/x86/events/amd/iommu.c index b28200d..f387baf 100644 --- a/arch/x86/events/amd/iommu.c +++ b/arch/x86/events/amd/iommu.c @@ -319,29 +319,30 @@ static void perf_iommu_start(struct perf_event *event, int flags) static void perf_iommu_read(struct perf_event *event) { - u64 count = 0ULL; - u64 prev_raw_count = 0ULL; - u64 delta = 0ULL; + u64 cnt, prev; + s64 delta; struct hw_perf_event *hwc = &event->hw; pr_debug("perf: amd_iommu:perf_iommu_read\n"); amd_iommu_pc_get_set_reg_val(_GET_DEVID(event), _GET_BANK(event), _GET_CNTR(event), - IOMMU_PC_COUNTER_REG, &count, false); + IOMMU_PC_COUNTER_REG, &cnt, false); /* IOMMU pc counter register is only 48 bits */ - count &= 0xFFFFFFFFFFFFULL; + cnt &= GENMASK_ULL(48, 0); - prev_raw_count = local64_read(&hwc->prev_count); - if (local64_cmpxchg(&hwc->prev_count, prev_raw_count, - count) != prev_raw_count) - return; + prev = local64_read(&hwc->prev_count); - /* Handling 48-bit counter overflowing */ - delta = (count << COUNTER_SHIFT) - (prev_raw_count << COUNTER_SHIFT); + /* + * Since we do not enable counter overflow interrupts, + * we do not have to worry about prev_count changing on us. + */ + local64_set(&hwc->prev_count, cnt); + + /* Handle 48-bit counter overflow */ + delta = (cnt << COUNTER_SHIFT) - (prev << COUNTER_SHIFT); delta >>= COUNTER_SHIFT; local64_add(delta, &event->count); - } static void perf_iommu_stop(struct perf_event *event, int flags) -- 1.8.3.1