From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751599AbdAPHZB (ORCPT ); Mon, 16 Jan 2017 02:25:01 -0500 Received: from mail-dm3nam03on0065.outbound.protection.outlook.com ([104.47.41.65]:26816 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751529AbdAPHYw (ORCPT ); Mon, 16 Jan 2017 02:24:52 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Suravee.Suthikulpanit@amd.com; From: Suravee Suthikulpanit To: , CC: , , , , Suravee Suthikulpanit Subject: [PATCH v8 7/9] perf/amd/iommu: Check return value when set and get counter value Date: Mon, 16 Jan 2017 01:23:34 -0600 Message-ID: <1484551416-5440-8-git-send-email-Suravee.Suthikulpanit@amd.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1484551416-5440-1-git-send-email-Suravee.Suthikulpanit@amd.com> References: <1484551416-5440-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: KL1PR0201CA0003.apcprd02.prod.outlook.com (10.167.53.141) To BN6PR12MB1443.namprd12.prod.outlook.com (10.172.24.20) X-MS-Office365-Filtering-Correlation-Id: bfdcccc1-5eb3-4395-9885-08d43de0bfd9 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:BN6PR12MB1443; X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1443;3:9jKgDNZ3IJlQXkAXBjoVXGsbtBPVHEtKLoAjxF18TAszBb7C9vABcXhBoomZ3D/hGL04NUngptgXfExVQljGCjAq2LefxfwDB7Iow7tv8eMIlguFfKr2yS5geq5HQDlu5dmrS22wBdmcQ8RHiDn56ZP8e207zX9HrxUf3MZYZnRKj9e93ZKGSndtzOup7P97cCZSPSVZQHmvhqnnqkocAuLlDYetBJIFDv3Uvc8UsVJQnp8XKTrU+gmgm2p2+2eUnEiN9CzfoM/nc0niY/Ez3A== X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1443;25:Ew9Pyo6wm/u8peBBlbIDQhdUQoQa0wY2sbodmcJkmkhDtOLLnsrreFeLQGP4g1BXspqEYwa/JbYAhmiP++4kbzmls0iQTTcPM/79+4RnFtJ9yxfQYJIIuAhWQtA0yxN66cnbv02e0GiDmi1cz44VXdjI29WoAsXw5o0C3ugZjDQ7CaqQweoUfL6XaQ/QnH5EmPQugmctZHLwVLEeP0PpHRA1Y6NdbnBPAdoEWw5qfqu3fp7Pmz9x4tWfW0ElByPGpW6uE3Et4JfCMCORunRuTuQK33/OduCyC4mD+JYh0QWTKKO8JYCkrDlkVubmymeF+G2lRS2jU1vkq0ozrwINvKjiju149U5CbmEmUMiX4RzGsrbC00OEaPaoo39kSs9nf78C28zjRJiDhKN6GwJ5beLmUJsoSMC/OgvJN5Djpt26/ABlNGREHlfZls3NsL7e4Y5QDdjA2qo/lEkdazOvf3nzl9hH2jms5BtfDpgrRqi1DCNEcyMvglWxq/51zWx6f1HVIbLHRDdnMYDHNRLgrDtggDbNTY2eSxUmeNuy+v+mXE64roFdMOX+RqV5Agr9c8AC/upYgKDI0xz8t/zS6FWmtkZ+NjZgv1bsvIVUiJdQhqvnQbr/hMokDYx7dgyHxdLScS6dUmcIQowHgzoouHSXLN2OpyJvT2lz1niTnMpyKFamjOV9Yg0IA40dJ5G0xau+9wSp13HZBkq9UP0HgqZXAcM+x1aU6swlDisHyeNMmgncaKH+L9MpAhJW1yBw8RAc/UTzR2Lv9kgyTlTW1Knh3p3TCIphdX7sGqlI32o= X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1443;31:kZ7TP22QDxgyk96nmiI7n3TOPSIACdwJ3/eIqO3OxWcxdHYrskuO7zigqe3qWuK0MEUco1ylLnPrcJxCSqjN2zMCJ4FL6e703BxvksQJyNcP/rHnD/q6c3O9QJ5Kv7Zna2Z5naG+CTSjpKpyt2wl4nBFN0H7582BTijiECw/ay1FGgaP69KlbFVpO8H5wh0P87P9Q9lTj5m236qF+SfKJRlH85jbVXomvQcg9V+O+9A5iZKmgq1UHfjpCU5vhhd0eEKLveeAsNDgFt7rq/IvYw==;20:RB+XyNefE5rQhmurpBM33ZmpFPwXnrg3B3uVVR/DYHo1QRNc2OKV9I2ypXc4AaIG+C8kjJtU4ohNVtQkzcEi821+UezWQ+YhGn82FVq552ZhXL2ulh6sN+CmC/KlGpCxX+Mo5I9w+L0W7cUz+7vzsyU/ckQO/SAp0QDZIAJiJ71sj2wiZ3L2WeG42ymBTg4zNFFDE9+wkZ9933VCJTs1/kzAc9ekcTtSmWlN5Dsp38IG7uBnHDCb1FXzFpPOfW7Y4KiBdC6DTXGN24Ys4ISIjm6wJXUzLFFYaGLhWOdUJuUdjRE4ofqbT4EydYg41qpkXZcN2BVNI83GTISoQ3PU+PQ7OANYlFPmOYyhWTSQsD2D6JRCbI7EP1GEIB3vRz7Bka0FwDJ89ntSJ1YzXvvo2oU8dKRKp8yv5y7JXAzLp63eCkZOi9FonDMyzOJaw6/4BKNIV7n0v54sFTRMEs1Thmm18l9nuMny+Ua+uGJxqsaZks5fr2MuqIlkbe4wgpqu 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)(10201501046)(3002001)(6055026)(6041248)(20161123555025)(20161123564025)(20161123562025)(20161123560025)(6072148);SRVR:BN6PR12MB1443;BCL:0;PCL:0;RULEID:;SRVR:BN6PR12MB1443; X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1443;4:2wjqJerR08u030+26vjeVLhBmCfPBDAnSUgXH73LAfhAmsih0FyLjyO0PwJpS8Yy5bL+gYM0j9WcqupDe4VxzgEA8ALQIFog2CJd/OzmIElq1DEYQAZbxG7KY7+/L4Cvz++aRPxGVM1ioPcH9tS7Ga2xdEQjqNjjiiTxzkKYAHxN0b9x8kMZmS9gjAfDPK0yo1qj+525dKLt3ghjZcBW5kVZaJgziBdmd84rQa6IbqQILRpmaul+i5I7QloSkeBVdmmci54+SPYaqZVs57D94JnXxyQc8pDpVvl/+jQVuC576ZxugVKT531OHAL7p5Qj+ra0os9hpIJlfIoiZpiomWEFxAmrDwBxOw8OMXiQmfC4dlVRcpleFyK1J05jgnpHodT/wAaxURf4yWCtJiG7wN85MnmkVFFtqDMHj9hCFmlUpq/AVSskgW2AdrF700p+acYrqhY6kmlUGDROsJV5UBrmDwCD+J2496Gjp16SPgkAcc9Ptb7Fiso5PgLnl/f+3otHa+nb+hKQAROIioncQTwBSPp9pHV+TJ8h5r1WAw5xmVtiI9kwHWymkD7WV4LkTexBnkH+NwPS+BQZJQBvShrHHX7A58tVe4eblElrg6fz7m0gPMioaHM5nQc3CJng X-Forefront-PRVS: 01894AD3B8 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(39840400002)(39860400002)(39410400002)(39850400002)(39450400003)(199003)(189002)(2906002)(6116002)(5001770100001)(86362001)(189998001)(92566002)(66066001)(68736007)(97736004)(3846002)(6512007)(305945005)(7736002)(4326007)(27001)(42186005)(8676002)(2950100002)(81156014)(81166006)(50226002)(6666003)(106356001)(5003940100001)(105586002)(50986999)(48376002)(38730400001)(101416001)(25786008)(6486002)(5660300001)(6506006)(4720700003)(76176999)(47776003)(54906002)(36756003)(50466002);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR12MB1443;H:ssuthiku-rhel73.localdomain;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BN6PR12MB1443;23:teib7HuLoYCy96SvR50N2Rg2mFjXnCEa4LTANPz6d?= =?us-ascii?Q?Rz+EZmRrVjXV8pmAAyhfhMEeHqrF5+qLsNXLFDpT5TeLQv8VsVhh6q27WSBO?= =?us-ascii?Q?sJeSVkw5Gd+SpqybTvjIjua6FRckuJCEYddGjTG9gPTRehdjtqh/UK98U+MQ?= =?us-ascii?Q?54mArParXeorDIVHD5oMm3MsLnyCCITPJgLao7xQyDFWRMlLj6KdqB13QLd5?= =?us-ascii?Q?0xl3zRWtMbOQ6OzSGm31whFyzy/5KCR3vfNdc05eR87rgHenzeNj9Qk/hjDU?= =?us-ascii?Q?Vy8H/Iq96f2jiooHVFZ1xaju/EfokGRgPdMdmxgLieHIIhjMw/RjpOPZGElH?= =?us-ascii?Q?yuW77cLv0spBzpKF5Y3+Ge1CvVTkQ2Ia1DihleCYPXEqaIKtepT4L4xS+TWd?= =?us-ascii?Q?xwLaVszRBI6w9lraZJBs5wdYD4c4H5EwvZUcW6UwXttdArgrvOREXtPstHzR?= =?us-ascii?Q?6XIcl/9LaRRcim0gNIohmjiX4cjkJtfH7Z/lN8QiTqq/MdzANl+huPpGLkK/?= =?us-ascii?Q?kYqk4Xq+Mq9u0qfttH0AjQSjy4/PuTK1wmHzrDivZo61gNxM0fZh58mSPzxj?= =?us-ascii?Q?NCSxvpIwv304H3zwO5qHnO5djfOh8OLMKDwLSRq4XWHKnesU9Ad5/7Ot8G0F?= =?us-ascii?Q?GikOdJXCItre2ZPXjMRmZnrKWgukjpCKdKAEvBll0HZXLkqWOLJ9+iBxkqQm?= =?us-ascii?Q?aHv2n+ByZFE4Ci+jUF/4DfH6b+IM2Vjs2imsefPpLdn6oV+dlbj4fgdCmcPb?= =?us-ascii?Q?yS81YCF7uLUd5eVUqp2+BRnnjOSdYYwKM/VHiacSUpnyC9cbWhherLDr1UNa?= =?us-ascii?Q?uUJ4Gb3rJmEtO4/ByrLRLCYxWHTp3rVXefOMJFnHvePrfTPcy/TsQKsA90sO?= =?us-ascii?Q?E2XfMcbKhw8G26esPc/X87Ko06DNdI+WNXJ4xCcHsgyYhiu8RsoB1JoZ4LXQ?= =?us-ascii?Q?YYOklIrb1QLdFT9sQkptFiZEL88gQTNSnoNitZcvcVRj8pCQ1Jn1OSqnp0HI?= =?us-ascii?Q?AHg3j2RHzQgCCN4ZDB+yS3wB7C9qO0fwAgcxtupFJzdMN7C/DCIF4RPONmJ/?= =?us-ascii?Q?6uafQ0BnvmbhHeUBYyFMW0ylAg+6E0hJlgqoWijVWhB7aPNgsWaxhAJWYrkL?= =?us-ascii?Q?ys40BqCu6oFGsdZ/KRTdkZdJFhBXYrlY1KwoC+dFq+LwiZAp1UJ3m5Znmaxd?= =?us-ascii?Q?+A7jliq5CILTicc02BbNe/6FwdJWps2fN1N?= X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1443;6:nGyjbbHExbIuQxXjKzQtZdnsk++b/+uBz8U7PfmpxHQKdHlWhlwxjvcrXew61lSBKfnHU4IlN5rYgMvme4sgbzjPFljjqbx9zedKVP/PCcXF43shaPHhCO0zg3jhF2WSiBM/XqKkp4BAKsEZuLTo9GZkU245Wj4JbAcwui/y72F4XWfDmX30jFqIDjEpAjWISncJ6qFJ5o0Ze1b5wemNY4H6TstN30DdVcZZFGmToxJzH29mHYULS49OzR0sX96Q5x5JeGJ7etiHk5Ew5KpN5F+3Dqz1acB0gNY7cAbi8MJ0/a5gNz2pS+s6JaluwBbwh+qJRQruSIYgPLspmPNfHfYO2ltmjIJdcMxgOhB+uIBiq3VJEsNlWZPO4qOneVzc7Kl05a2cmvRIjDCJd4qUEDG6O4HoiSQtaM1Cnu/8eiQJd22YynI+Z/bxUj3u+Cjutvy8gH88JHWTW88tr8WCOw==;5:DuzXgq6bjY6UEEeuAhRyWOjMU79gUNHs0j8r1ygim/o6mK2PAa3xj4Ms9Rfx9WtLD878zapoHSq/Jh5TBgnGvByHASITdTf50a/iS3NXtDxDiW107l1uq0sPKnLNzuFsrN2niCIRTyQaoBVBHAQdwh8GFnlAtp+SK0HiXXsZfkY=;24:ZbngH7hUujzGxMUQgffwZ3MJPhAKaDFpIT1FEKixYQtYaRk5Sjklt76q5L8WVrSmm/fc2hNsqbFQ613ZqVCs0d5piIuylLqmcgxntWI8dIg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1443;7:cPsXIwjmsO/3qbSH/VyNJjfszkV9buGq4YPAjntvq6Sp1x3Q6TErhH6u2nVPAed0hQVd+7nJdzoXgeLDH43XG0+rA3+TPIS3jtksh4DwePzy9EodbyUzZsyQvzDJJQpIuKeNGZHzW5jIWRIRXlGBNO0fTTK4Kksf9Gn+YqeMiu2/EA9KPw+gvLjKEIs09t3LreyNvagnlMsLvaD3Lbb4PF35b1z8AXOw/O9Qa8eWxMoWEUaWcZlbNNcEHlPzESc1mZA4Agwia5q97FuA10n46gdqhIBxfnqVNdJeS1q6KjmL7VCWqXhUhtZqXw9rgWVYkzTOEonOd4OeNVDyNBjfJ7wfJTIOC4iYx0dSMu6ZeP6R8zpK7B5pNEYcDwJax9vrHIN5JMrdoCroOlwljD8WrW3P1hDac5l4Z7cM5ndh3kwpIZZVFrB+d86RwC1cCgbIfgIFf9jZmL9+HqCywbQASQ==;20:x1Q4hD5mt0KZYh+r56qNtojxshJ+MnmbScUBzv9H8yDaW7nh3yBUzTAJ5zYEPN+4JuemomgUKV7DdmURJwaA5wPI3nmGqGt5YryoW1xWwK2+XqJPDs2uwPBN1c3nq9Obz4g+SDMFRRNTiKx9CAv6i3wKNA56orrUCvBFh/89K27FzCYvjhPXTkt+demGve9tQh/k5xGAaManEu+Cg0R+XjTTNCHIBo9c1u+qOULs8WiuDzAIS96jaaDdMeOEXOPt X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jan 2017 07:24:43.9707 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1443 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Suravee Suthikulpanit In, perf_iommu_start(), we need to check the return value from amd_iommu_set_reg(). In case of failure, we should not enable the PMU. Also, in perf_iommu_read(), we need to check the return value from amd_iommu_get_reg() before using the value. Cc: Peter Zijlstra Cc: Borislav Petkov Cc: Joerg Roedel Signed-off-by: Suravee Suthikulpanit --- arch/x86/events/amd/iommu.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/arch/x86/events/amd/iommu.c b/arch/x86/events/amd/iommu.c index 200d2e8..cc7bea4 100644 --- a/arch/x86/events/amd/iommu.c +++ b/arch/x86/events/amd/iommu.c @@ -284,6 +284,7 @@ static void perf_iommu_disable_event(struct perf_event *event) static void perf_iommu_start(struct perf_event *event, int flags) { + u64 val; struct hw_perf_event *hwc = &event->hw; if (WARN_ON_ONCE(!(hwc->state & PERF_HES_STOPPED))) @@ -292,15 +293,16 @@ static void perf_iommu_start(struct perf_event *event, int flags) WARN_ON_ONCE(!(hwc->state & PERF_HES_UPTODATE)); hwc->state = 0; - if (flags & PERF_EF_RELOAD) { - u64 prev_raw_count = local64_read(&hwc->prev_count); - amd_iommu_pc_set_reg(0, _GET_BANK(event), _GET_CNTR(event), - IOMMU_PC_COUNTER_REG, &prev_raw_count); - } + if (!(flags & PERF_EF_RELOAD)) + return; + + val = local64_read(&hwc->prev_count) & GENMASK_ULL(48, 0); + if (amd_iommu_pc_set_reg(0, _GET_BANK(event), _GET_CNTR(event), + IOMMU_PC_COUNTER_REG, &val)) + return; perf_iommu_enable_event(event); perf_event_update_userpage(event); - } static void perf_iommu_read(struct perf_event *event) @@ -309,8 +311,9 @@ static void perf_iommu_read(struct perf_event *event) s64 delta; struct hw_perf_event *hwc = &event->hw; - amd_iommu_pc_get_reg(0, _GET_BANK(event), _GET_CNTR(event), - IOMMU_PC_COUNTER_REG, &count); + if (amd_iommu_pc_get_reg(0, _GET_BANK(event), _GET_CNTR(event), + IOMMU_PC_COUNTER_REG, &count)) + return; /* IOMMU pc counter register is only 48 bits */ count &= GENMASK_ULL(48, 0); -- 1.8.3.1