Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S941698AbcLWNja (ORCPT ); Fri, 23 Dec 2016 08:39:30 -0500 Received: from mail-by2nam03on0046.outbound.protection.outlook.com ([104.47.42.46]:14377 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1759582AbcLWNj2 (ORCPT ); Fri, 23 Dec 2016 08:39:28 -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 V6 1/7] perf/amd/iommu: Misc fix up perf_iommu_read Date: Fri, 23 Dec 2016 20:38:44 +0700 Message-ID: <1482500330-5606-2-git-send-email-Suravee.Suthikulpanit@amd.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1482500330-5606-1-git-send-email-Suravee.Suthikulpanit@amd.com> References: <1482500330-5606-1-git-send-email-Suravee.Suthikulpanit@amd.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: BN6PR1301CA0025.namprd13.prod.outlook.com (10.174.84.166) To DM5PR12MB1449.namprd12.prod.outlook.com (10.172.38.138) X-MS-Office365-Filtering-Correlation-Id: 56711938-90c3-472d-f4ce-08d42b391cf0 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:DM5PR12MB1449; X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1449;3:xdgoiT4zFNzvERdsSme8bp+at3R7IJOcvIAiYiVQ2EZnHldm02P65kGsLhtKXK6WGtycyOMS5Me3oSV8qv5mj4nrOlN+QkNze2E/kN5x0bCKSygXqfJ39cZDCBLQEQD0ih5ivv5bmtG89UTwY0xk2QUx97xoRiyILHjvZOUMeBjLBGBDbPq39F3YZPmX3tdGr1RDkpH5IdpUbmRd9vkBwD9JNAPCGwTrMZhh2AfA+wfu1Cx4Nu79i0X6hZFJ/+o6ZmDbGj01aqBQQG385XOAow== X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1449;25:w0/y27L3CifnzOjuFQLodaWg2i5JTzqH+ocNubR+Aoa/iCbwpXKCWZIrOtNZlHevGf0WuXI10IFKJShTgZiZZKYI2z+lG2OUqr6MB1OteG9p6lV0/A1xpl1Q+pYzc3bqd9rjSRf0pnoQB1f21jn1u6m92towBtKBvcA8xbtaFCQ+go7SAGY0Uxr8CS/GfTJYV1ZmJAqrQ8rJvlNXQ72u8O4XzFzv9GK3rOVWrVSd5iv3KOPxWYcBEITWDOoBCT7y58w37840G+UOBxYK3qSkiZNA0nizXaKL+fy+ViJlAhnwBXaZQTYRNCm+rkUP2fNtxPJ58eplf1NywPlQij1UtVc2Xj7vs22VdKpyHK7d51PpGXldm5tmLeGNwKJobfUF7zHUytpMqQ4CAkx/+ylpC82eYLU69bLnr57mngCXHR+xKoeF9TqdJyCAEVgd57djteB0DXPwVHbK9YI9clwhCouE4GJDA63uqKm42lPjUpOsAE6ZZDsUuU4plu29fHHPJxZj2Pg2DOheGsqApifbswO8YcrwtQAyMuCZK/mapqvsjEt6eNxbku2miq/MxUGRZ3Ust5i+sQ580XmN3xp9H3RTwNskl0lHDRhPuqvhMZFFtdzO1e9MCW0DKVwem557qH6P3BlwQO6FUO+0M37zyxIAf19+7OsQ9wQt3aWD8c5xUXmDcjs9MtyiM0sWT9Ge1IHRyAbIMMaDk0An5+Lf7cxjOvjVk4W2UQ7sCVK7olHcohRF8hdwSVhaevS6AxJzpeshHxw6Hp+8XYp1OA2PlFoENARGldKgByI1gf6kre8= X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1449;31:n0e0s5qOaiMPHoIVb8P4Q+jVtbaMtFo40EE2/A1MlvqhgIZGrdOv/QSuIeFtOweVyNNNSwQycrgkN1EZcHYzOdmKfdlxKISLWcUSIRPYYL1Q9Nr+J4op2vNGe7gtr5pDzG0ESBqly2j6g0hhIbHl2aGuu7OhQZGUtpjJ+a3mPAO99Lt/xDlQaj0RbQnoEcCsGds3C89izgC+xL1Z6bDVjmNTWQEkGIOe2x04NPEpvUzGVVEez0zpoen2178JQ5Ae;20:mr/qvj1JBtECfYgn8jpX3pvcLbDi3PkU//I5eas2Kys/yOxPcMTJ4URRDdAXv4SguVfww4ruEtrDUtg0+pf19ewEfiLXaGO2iop3RQEP9MUACzGJOsbv61OZeTdZCl7P3cI2ZKV6ADMdrm6unLaQFnXkB/6zZazDHedcbl0AS0LaBRPSxzLhRt9PrDBjlEM2ZtG3FNfcrLbbthOaEOinilt5vnhWff4aRyhN7D9Qo/iGTCsh8Y6pwglffreYSbZY4WuLahu+81xmJIBHYV5XZjAcBxPhI9vM8DUSFLMjBfO9U7z9zdBmqR6qUta/fQxMOXHvBf1eGZWBG+Yg7rIVGfeaEXj8t3KgmCN+laGbkT346GRsKvFHs3DflnaXpmNlaArU15MCVcNR3anGXaYXKCaIFf922ojdeyan0/qLUDZYI6Nt7sjgozebhI49EROhXjnMMgXRC/ytxkhEtrGF3j6K7E8m7dg/3mrVi2cG6OhbotF0WK1FtE0k13JC0L5g 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)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123564025)(20161123562025)(20161123555025)(20161123558021)(20161123560025)(6072148);SRVR:DM5PR12MB1449;BCL:0;PCL:0;RULEID:;SRVR:DM5PR12MB1449; X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1449;4:b3SlXc2d/+/cmd07uKzC/xFCtBJu7jboZE4kCOfYeP3QJ5g99V9xtASJsS+Nlq7geTcU8da14y0+5lTWFoBgMyHzAs6aflQUf4UyIAr+Wd7jVzkRmLCdULksQUf1AAexNoE7UMN7FdpvNHIzrwezb32cO7ZYb/G8eZxFzFqI0yOz37DMQSHDIXA578QuCtEc+lglI1RgNOgxE/OWX2abcHpQ6nljGQcQFmfqmYOn6Vcry3UOixIEjRDUHU2xYErkHQ1sU6ZyZjmo9RFeMeV0MlOEmpwIHJ1bcCz2vfCBkbcw8Gb2hocCjGIckvcuQiZD36Uvf9Y8MGr2zb5qIXP+oOMYfqEnewWjT2Y9n7BvwRrHXRsTh5qZmK82/ROU4vGsjuUkWwa/fFm0sE0hIwhfoEWLrDVtq6ScogsOA9ZS8muOr4bvM8IrdS1wiJSRnlGI9kPTaoEYveUAGPzVBb6McPBYorkfwWS8ZaDTDzKM5hwfKaApSfFqt2NrjquqFlDJO40pJeQsD4pvr2WEMrbOb0FdtJUuDwCIfrd0AAR48UW4QaEe3ployyal5jS7/7snov3//EZRvZELs27Kb/a5S5BwRRXO8Rl2LCREATGP6AdJFKps1QW27UgF+p+ocbp7USafMGZ/0KynXXExoFNIn9fOU/D6bacZ512yY8YnbQQ= X-Forefront-PRVS: 016572D96D X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(39450400003)(39840400002)(39410400002)(39850400002)(39860400002)(189002)(199003)(305945005)(86362001)(47776003)(7736002)(50226002)(81166006)(81156014)(5003940100001)(68736007)(8676002)(48376002)(106356001)(50466002)(3846002)(6116002)(4326007)(2906002)(50986999)(53416004)(92566002)(66066001)(42186005)(97736004)(105586002)(36756003)(5001770100001)(38730400001)(6666003)(76176999)(101416001)(5660300001)(189998001)(25786008)(2950100002)(6486002);DIR:OUT;SFP:1101;SCL:1;SRVR:DM5PR12MB1449;H:ssuthiku-ubuntu-lt.amd.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM5PR12MB1449;23:HBKI+np0Rqws8nc9qQzrcNzuHXc+6+grlj5jFz396?= =?us-ascii?Q?IRGgeIaRhMU7sk6Ug9WL6hrWwHj4UFh+C4i80lIapcgV0GQynmYZvSTI9kWu?= =?us-ascii?Q?h6aWmF6IMzLWVEQKwGWBVdWe/yXgKlJyY3qoWKwJfySEYj/OJAf4ryNWNw6E?= =?us-ascii?Q?1xoGaaY1jev5SVTed5qkV9OpspBEh2o8gbP9cumkd1XF0nvJIstf9rZLMy0J?= =?us-ascii?Q?pznJZ9jVib6EEpjZR2ilzzqyNd9SGnhiKEbMzk+HapQPzZhpHzpotTi5339K?= =?us-ascii?Q?h0Dquo4D4JeLDbxtnldsGVHLCvMzOc/p1/ECvq6xsiAhdGCZMDKzpsAUjsLO?= =?us-ascii?Q?zvfr7fMPLUpU78BuaEWHgGYDKlc+but+9939rGd9iDziri6BAzTxkhjLHOPM?= =?us-ascii?Q?hONgA5JeAwDkqEj/5ZCjNgxcscAxLs96L2uFqgcU1A77zoC72oDenkQuGCAQ?= =?us-ascii?Q?H8fh/rn9iwQqDhj6Vg1/k3mmNLGI4dfklzJT10L1i/07c3m3yasC/Q8cMlR/?= =?us-ascii?Q?16wvVpaoz0Zfz2da4dRrhMYBGFLJzIoGTGe6oyG15ipvJBJCK2FVMAXmsIqI?= =?us-ascii?Q?XLpSY9IKdpDQRjFAjC46LacFxcdSiPtwiENdJ5v3ER6ZKdQpT8n4iBpaG+0K?= =?us-ascii?Q?x8lVVxW11x0dwT69ZZjzCxBG+fgbT5IYX3SrSCbSNhHNlNdZWaC2FzbsM+Dm?= =?us-ascii?Q?EqrhBbSiVxrpngh9PFQF9XDzibph5+v7NGqfVRZlU1n485IIAxBAN4RPgziQ?= =?us-ascii?Q?eNXoB+KNH9l8fJDWbg8Kayae+ptdJ1ZnLK6VTrfq8NmwQIPfP/dkgq3f6Uky?= =?us-ascii?Q?qChxIM2qyNbEyT6vdWgSUHAPUhLcgGwaaMctdze/vQOFdOr/Z5sHF7ooo5uv?= =?us-ascii?Q?9zLWlzdGMyk683BZ/tjAjwapaHAyH1hiJ/8K5gBjo/DofWZxNjNFFiwBSkwe?= =?us-ascii?Q?p1YSmkyDnBLgIajXHcPLQat0IKLbXi4Q4m2MUEpYMKi7SgC6gWf637HyJmGM?= =?us-ascii?Q?we9JZA7bKYjUoHwrhRLZuUBtRswwNVYwNoKP4B533+8ckRbDdasYrhYQ9c1B?= =?us-ascii?Q?VFcvod/X74MYfblzwGlBlq0PreSV8RBo+oGn0mE1A7fkbayyx40takSkAEJO?= =?us-ascii?Q?vXFOVDj+rSVgYR0omQ8JBLTBV1iJqV8?= X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1449;6:gp8VziH747Lcwg5HVee0K1hRXce3hibx3zH1D1kzFk4fKLw3x6/Iu8IKW1biOqzGd0jSZKZzzRxeN3VVvNmERW9eAkYfGIOJNOIayDwD1fxQPyGhDKlUDrnTfjmY4vadaye07BEgTqNqJUsangdiat3zTxCzAHxH3HYgzU4vfU0Ufz+4p5AKJjoG+g9EC4I5a1yMUfkz95WbrwMbD231C6EnI5OrZUmVoKpmOtfI0y/W4QS6EYupU4rjgHI/H8UNXL+UqZV3pp6562kjmWeyq2m35B/JvXTnSSS8PFEToNFcYIsUrxAo40oZpJd+ZhgLJIEiRa1kwj5NBjSHfdA8W3dpn9OKciAn+fMLJTVLW1E+D1EjeSigKGRwX0x+QtuWopY6hIHU5Nb/zUh6czYTmfv4X5CBqJOJMzfoW8J6ui/IxfJGFOF8hFnkORlXi1izQZJ1MpUPkJR4DFSsYe0F/g==;5:bDY5itDwY1+TY+bWo586q6getxhCi4SuPrIGNJ/KceDtyd62yp0LMqL2nsE0nkkGBJDGlzZiE+os6+gKmWn/xLRjElIpZkaaAMSUy+pM1bCfvzXx/DMtWDq/HBRi4rX4EVQnITdYa1hWVijrh1NjAw==;24:2mU/WMQHKHGSwzyaVXi6iZpQDZLlzZuEs+ZmE2C/FkCN1kcBRh858Re0I1t/XhZ17DYyT2p610nS4RfElkWKBHDV+uraF2i7OMTIqK8U7AM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1449;7:ngXrTmmOIEVbt6wjtWWLRRNiSmDKJs/kh8LWbQ3QTeKcR2EAn6qwbz0fZERLehmNPSJRTBqMqf50krAJpBaNZMuXEpLuWJn7QaXQcoZ1sAiovZB/H/HkzBwvleZ33cRnxV0zIho9mTNMeuoKKsum32imAQykekV/d+FyuItj1u0hfUKbd2nyN56s9Agw1f+WYNsirfNZTxR9K00XWHTuzOvKWPbxzs8Bp/B6Jrrf+RYKKU4kAupxc/ynETtJZ+9wLYbqZy9w4PRBcGCT9y4haJsGb/a1zjIeUlo9jl4yFgsd3pKZGcYTzJmxKGAmFslzRVYWyCBHYwcToUN2QhFmc34ZW4Iwnp6OWdQoFoXhVPo/7hrn47vUF+ZVJq+P8AGyx0O5TVzEsJUZ98jwnf35d4CkNVFDMNps302WuE3B9rAsVYqB3Mo2FhoxdaOU8Z+kgbzSFQBKCcamKoJ+IfYNnQ==;20:8OphpA8mU+o1n00zST7wr4G/JVySEI13ri9Sfgygcq4zOoyOgHqk5BFG/GyvJOzmTRZOUV5RPQcMWfCuvSUtw0Icbe5VI5DIZtzh1tj3LQgS1ALRDrEjXkusIOsoUECYt5tzYGDiuJDrrzQfFKBprXoZmp99Aeq7VXoSSnim+kpSzTCaLdp6VmOjMiXG+bXKOvRq8Q37Igeo0QPDo3q2fve3yksZPmWDDvj3v6LbnslrQd7e0iUxQwU58+bx1Yxs X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Dec 2016 13:39:17.7431 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1449 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1998 Lines: 61 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