From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751697AbdBOHNv (ORCPT ); Wed, 15 Feb 2017 02:13:51 -0500 Received: from mail-sn1nam01on0073.outbound.protection.outlook.com ([104.47.32.73]:8224 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750810AbdBOHNt (ORCPT ); Wed, 15 Feb 2017 02:13:49 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Suravee.Suthikulpanit@amd.com; Subject: Re: [PATCH v9 8/8] perf/amd/iommu: Enable support for multiple IOMMUs To: Borislav Petkov References: <1486456836-17428-1-git-send-email-Suravee.Suthikulpanit@amd.com> <1486456836-17428-9-git-send-email-Suravee.Suthikulpanit@amd.com> <20170208193340.x7lka54ismqqy7nw@pd.tnic> CC: , , , , From: Suravee Suthikulpanit Message-ID: <483deec0-412f-bc34-de30-ce6ffcce3d4b@amd.com> Date: Wed, 15 Feb 2017 14:13:29 +0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: <20170208193340.x7lka54ismqqy7nw@pd.tnic> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [223.24.108.147] X-ClientProxiedBy: HK2PR04CA0066.apcprd04.prod.outlook.com (10.170.154.34) To DM5PR12MB1450.namprd12.prod.outlook.com (10.172.38.139) X-MS-Office365-Filtering-Correlation-Id: 014d3a21-0ba6-4d25-ea67-08d455722ed0 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081);SRVR:DM5PR12MB1450; X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1450;3:YRbqv0UquyzwGH+TYaM2IejnCoqVCl6KkVdnEE2Fma5fcQu2HMFCtSnrYDmwhaUJCR/IyzXCBSQmxJLTnvL+F+K1AxRqvER14FrEACBGvvELtnsh9m1csfiCaeLmUHL1ZUopcWY/1VRmgnEhSWD3CeYMuPa/Ay4sjaDhj9nf0VWz7H9l6+BljxszykpvgSOiH6rjzre7NEoed1sqBNNS1fs7rk96yefPXbF5rz5HZImpmgb9pxEhfZ3KL/k/11F6RETekUvn1AwjO+iRZqJ76uJ6NyFx4DWBzeUYHmfjGTg=;25:QHhKd7b3tQ95xP51NOtAST+CL4EQsJJ0zB/WEGSjF5cCD3WqX40hUAOpeQ0sCp1VvB3MjdANDOKQj1XIAUiR0lHu3gS/O5NQIAp288HDC7yK3T6abeLVgBzxNTIiizlhXma2ZVtjh/ajN9iCbSPjKbtDl0CH4Ysm9Z1bIEnIwKqINx4qIh25wWJMcCiESDKNzDzEhbOBDZM6LVs5V33uCXuhjFuvHiKeS135I/fdO9NlDLEs4lKquceCC9EBFxwbNTiJuM5OTBaKj8tPFq6qTCuJ3yI2dZUbZPhML1wcOWdlmAg2PY7O4EdrInlX2UyXEnmD0tWt9lDKM8CE8NVoXK24LghIch2tUUbZ+oJQdqD5BxNWcODNFVPDIskn2NVh+2c0na84eJm6M12jTVPrPV0ksgDrkb1evdh/GV6r9LEvH1n6lw6lqLPV/GhSPmyIjIgHF6TZ+GkH2bsXx+07NQ== X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1450;31:TDXL+Q2ZZer6bTgSmTPxN4PWM2O1vOHrlx+U4pPUj+WsexgKOI7bc45E06op+9XfB9nEFDHtoOQ5N/s6WuT0N4uZi7jx+6zhVfQC1Whs9TxhErHhdgZnFsWMlaxWwxcTXyXjg54uJuCS682mwPRHgtmZ8D1KzuUmHQ8/d5g837rX3p0jruEfEFt3hXtHTVKjESTmO1Fdg8OOrVPM4IFWlYoD2Q+Sm/da94KvBozUgx+KK0IM2nyaWXVJE3HRt3u2b7W6FcHalmKKY/MIJ5Z2zt13lIduQt6e71dBmrhX6FQ=;20:B8VsZsfX+z504MssgZl3S3U/L6Jz2Ynwo02DBlcLQ+TWn2MSTgGiFnYz7JhBxaoFTsE/KOIc7pgTT9znLU7wq6feJlIeIFz/uRcr6h0CBKG5Ycx/z739X0Sovstr/Cvfanl/twOJwkjdApQiKHeG9Q9KOeUSQRW4KBTfLRbzUTkfEdCxfUhAH6X+MiWz/0rr24ATzfw3RyNsccWOP3m6Sy8CKMKA7u9togsXtppU966Cwo7evnprVDErtwBpJGYbyyjcuCR/72zhqzL3RIj+xSaLcK9YC6mLsF2WH8O/VTl69xbg3kuDMd8RaAyYkc0I2cPaYcuFGcTHfKxCDovD+Nmzkplm0NtEW53Td4KEWAwmzcRidcW516tGYUEEJxugzQjsPI+VaJ4B1xEOPQ4NGUnlzi20UwFm8Ud1TAhyx0Kby0RTivPyI9sPvcJbbH96o5LTEN+g2JKMhJG07aha7Kynjq0QfMrOsZC/oqMhDEXtrcauvZ6Y+T6t5Zps113m 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)(20161123558025)(20161123555025)(20161123564025)(20161123562025)(20161123560025)(6072148);SRVR:DM5PR12MB1450;BCL:0;PCL:0;RULEID:;SRVR:DM5PR12MB1450; X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1450;4:yqm7ao5ObbDTrU/QNyMVRUDszqCSWKrIKBEkqaURTysVVKelbvofbiP+aXI7w0slcjMXhvjwLx2WG95utc38ibaVEyjQn+dgiyr3ABWOZOscbE7PF1tGxWqsdDye6/VJwJPtQK4Nbi+m2nau/aZBvTjo+YrrJu9TJhjgSw0h8bjBUVWolFTstFG9DQM+EAsghukHsFALTpWFMfrgDWjSj0lgQDfnLnSJHoKr8uTkIXHWhF2OdAiaF/TFr/LeqWHer5ZV5fjp2qNFddGaFbEzMzcCOiDtV6pALyV+djNTwMr+VYjZYBKyP9UHt5ufq1r3XianXNTFSlL23rqzCjud19VqxdNGQG24uywMPd3oyT5PeUAA6LS0LRnpn2VpQCszoawK/GvEjOrMzeUobZctYd3q/uRy8LNN4wOfBuqRXjTICgDxN8o15Tx2xD3uFIS44faNtkcV3MZ8YE3oLnCxXr+7l0g6Jh8D8NHH0J/ae25rVL/s24Q6e0H9QL56dktLSE+TjhcVGPW+NaQmbVFNlzcXw1kJqnn+ZKTWNwqvRplsoGsM0iEqjB9dpFjGX6uUpS67/f+xGv89K/z6NuOyYj24ij8VosebSc+9Ax+ECFHf0NMkCdgF+M2OXxqiuKDemdFtvWpQS/GrJkhaKR5ANouBJrnoQAWvVfdY0VEOiMs= X-Forefront-PRVS: 021975AE46 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(6049001)(7916002)(39850400002)(39450400003)(39860400002)(39840400002)(39410400002)(189002)(199003)(24454002)(54356999)(5660300001)(101416001)(97736004)(76176999)(7736002)(305945005)(36756003)(50986999)(92566002)(4001350100001)(8676002)(117156001)(6116002)(33646002)(4326007)(2906002)(23676002)(65956001)(50466002)(65806001)(64126003)(106356001)(31686004)(105586002)(66066001)(6486002)(42186005)(68736007)(47776003)(229853002)(54906002)(3846002)(81156014)(53936002)(81166006)(6246003)(53546003)(65826007)(25786008)(90366009)(189998001)(110136004)(38730400002)(6916009)(230700001)(86362001)(6666003)(77096006)(83506001)(31696002)(2950100002)(389900002);DIR:OUT;SFP:1101;SCL:1;SRVR:DM5PR12MB1450;H:[192.168.43.18];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTVQUjEyTUIxNDUwOzIzOk9oVkp0Sm5vaWVPNjJzK0FuUXdzSU5CT3BZ?= =?utf-8?B?aWtJNkNQMEJsTEU5eFZtb3NRNlloT3RZdlJJV25LZCttVVBYUU1vWnF4SkdP?= =?utf-8?B?MHRYWmQyc3ZyQTlUek9lSjgyOW9VV25EVThNRVVlZWZJRmIzRXVjMVhHQldk?= =?utf-8?B?SmU5d3l4b3laUXB2RmtiWGllTHdHNTRBS1RuNVVRVE1wTU00eDFsL0p2bzlr?= =?utf-8?B?RjEveGs4MUJQTzRSOVJtbGVhc2tNQ3l0OUNsaHVXczdBcTdsMTlLMHpsMEVW?= =?utf-8?B?V09yWmtHWkFhUDJPTVpRVFV5ZFhLSFQ5WUdnc2FmWGZWWUllYkw2NWlLT01t?= =?utf-8?B?dWZ1NWJSYXNNVU5xMVM4TnNUT2hSWmYxbGVqL05UbTlKa1Fpa0JWeTh4N3N3?= =?utf-8?B?VWJtRXJEdVBiUytrZUUvbkI2SlBYMTh3UGdLZG5yZEJCZXFoNEhhZlJLQVJX?= =?utf-8?B?WEs1N0UvcmpvZW1CandvaWorSGRsZW5mZVF3Q3FMeHNzQzNQbUltb3VJT2xK?= =?utf-8?B?bXdVOTNRZ1AyMWhTMkY0aVN1YTZSeHViOTREREZwdXV6dGMwWm9nVEdNdWQ5?= =?utf-8?B?MTBqWmt2OTRMY2pGSXphVFo4N1dkU2R1MlpQdVBVbXpWQ3NqUGppVHMzSDJu?= =?utf-8?B?d0VabXZBUWlwSEtrSW5XNGtyYVViMzdraE42YkRTdUtiVGtkMllTUUErNWVU?= =?utf-8?B?ZCsxT2lGOGd3UjdYRyt4SmE2YllLeHVhZjMyMzZoWmRxM0lOZDgwbXlkaTVm?= =?utf-8?B?SWIxRlhBTVhzT1lwMFQzcjN2N2dvQ1RDSHkxbUdrMVlOTHVob2xPa2NJTzdv?= =?utf-8?B?ODJXQnQvWEE4YWswUngweHI1WGMrK0owYlZ3MkNNTGJ0dndOVlRDMnp4N2g0?= =?utf-8?B?Z3p1cHpwd0htbWhxVWd6YWZFQ2p0ZlJ6ekVwVnJod1lWSDc4TVhNSTJMMlU2?= =?utf-8?B?RUxqT1lwNkhMMG1Sa3dVQndPY295dzRkdWpJejF4ODY0YXc0WDdnOHFNS0tl?= =?utf-8?B?K3lLanl3d1YwNTVNdW5zRTJNUjEwZVYveXV4ZDNLaE5Pa0dJSjIvc290ZmxN?= =?utf-8?B?ejZzNU95MHFKTnNRRWRZQTM5OFA2VnJNemZqZXhPbXEzWldzSWFiRkt6NVZQ?= =?utf-8?B?WlR0NHJldlplWFhZN2ZwVWpEbHd4cU5yUmxQTnMwZ21OZS9rQ0w4YWd5dDhE?= =?utf-8?B?bXF4cVRvd2ROYXpJa1RJMUxhZ2ZaQ3U1NXBESGszY3N3dzFROUZPYXc3SnlY?= =?utf-8?B?eW1hWUU3eDlyRWFzZXZWajRiRkJOY295T3BkWWswcEF5OGNRVTVDSThON3kz?= =?utf-8?B?S2NMZi9YTmR3bnRUQ2FYMFBoZUc2S3I4NXkrblBTcmhJYk9QaGFXczZEVnVx?= =?utf-8?B?MWxKcDFxcm1ZTGI0M3JXRnZ6UFlqaVN5aDgxT0Q0ZFc3RXZjdml0anZRaDNM?= =?utf-8?B?WXkyZVVCenRHaGl1N0RmZ1lqYVlwUEhRWHZLY2VFOGs5RVJRYUVVTDRRbVRi?= =?utf-8?B?c2k5SndnVUlmbTBKYm1GWHlCdDh6RmNteGVFTEVnMWx2WHIydTJ3TFZaaW53?= =?utf-8?B?cFVlbG9US2tRMFppNHpzVmxWb01ZOVFQRGt1c2xaNWwxeEFnYmNWbjJqNHRk?= =?utf-8?B?bXo3d3B0Rm5tbG1KV1I4L0pNdFlueWdYTW9Ta0dmZHhDVmFIM1RlM0lPWDY4?= =?utf-8?B?anBNUmlKRExZc3VqY2E1d1BqYUsySzJLYklmbWtTOVNXZnNiVFc2aXhlclNW?= =?utf-8?B?T0VGSjEzVXo1VDdJOE94Y1FLdmJGeFRlUnJsQkhGcURpSnNxOG9OUjRHSnBL?= =?utf-8?B?YklmSW8xU0pmVkw3NEU0TzVVcHZzeUk0MlNLam1UTmNGdmM2TUsyTWJqdFU2?= =?utf-8?B?Qit3eDVFOTUxakZzVjVoYnFiYVkrMW81V0NzVFZzanhBeWtRSENTTVkxRTJm?= =?utf-8?B?cStJa2JOVG13bzVjVDMvS1JJWDUxNzdBZDNKTXR5aHhBMzZIRWYzZHJpNHFM?= =?utf-8?B?V2QxeTdtRzllRWtMbDdmZUIwNmY1blVpWTFUaU03ZGpCK1hocnFVdG1aSjEr?= =?utf-8?B?VzltUDE1eHVoeTU5VGc5VTZjTlBDTE4wUHZ3c2RqZmhuVy9aQlRBK2FsYTVw?= =?utf-8?B?T0E9PQ==?= X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1450;6:SoMv72UCFKP//J3Iab+k4EY+6pRCU2xFIEbpfbpylVQ+t5KQHlod5SPsw92cvF8OWLoiNdfIdAHFbyGmFxZNlb/fEqRv2j4rrqUNJXG1jWS2Rpnfj7hox3k3ov8DFH/Se6ZrO8tlHWdiq7JXBOpHI6a1byeFBR5rM3t+ORfx0BesWDuYdKPtRboiENwPnv+hynrrP9Wu6mhgiBlviTkjvz72hDAm+YRZc3xsC4RFlPYrwoHNbwhEMQB2qP2200MfsYwQkdCWMg8ndrk6pRc76q+mZq0HEbbdIaAB8KVOTC4B6euRSiAALI+qnk6cGjrMkgdD+iauB7BYSVYVlwHt0ExizkBqGjD2GcKfSdR5uXTzj7kr4qmgUuvAk5Kx6RtPpSlV+UwGlkQPAl6NH1I09ianZGe6o7YUY+hdr8fRhdU=;5:+wFhYtVLGM327h6E0oDoeJt/JS5TDBuCqCIAQRzSHbcoxUBifYciLLHibGwvTTtzchOmOgc0CAK+x6iFLqf2oBlXjWPMMdgBVVmlQnIqzRv+SmdhyJdnnmJ+2kO0jb2wj+VQfhK4Edt7xzwEDF9OIS7W3iWl3jtUNrXDBDr+dJk=;24:U+qnhKS/pTdmk6EW+a8KYaA+lUsQf/P4M6NFxfgMOLWUd+PpfqsngplxcvkmqLMDiIgfUSxpaqZe9iC0y8QiF040/u8Y6TeGjd79ezTHDmE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1450;7:69vGIWeZlOkL2t9WUBN34NtRlaM8A1w3gMgibzA00onX67mDJaaex1jalkN6ySxCyw7QHgeNTPlpZJ2SEm8Qvuedz5LFJdx0VivEHhkgXbyVe2/+4CiNLi3rDmf7eF109TqNu/4YpNwplrIoJNVZdLovSBHOFwQib8mogAo8anj+fZp3wSk4ctCLniK44W4JxDws3GD88PJzVXfbUfeCQGDGBkNJ1qQcQpKFea3fASUUq7CTVbnYWckOT34eEBErogVQqINV877837FtJp/GZF4EfqyRXfMpQ+4HZc5QsUsa4nOS9coCnLRr0XRrSaQFPLa2bFydU7OW6q+hCcRRiTBgPK0ydP+WeW2QGCCe7UCWIkMm/fXdqpQGrio2Gx7F8crc5o0QV1kbw7ARdjOQvpFV03xafUTSEA1fsNCs+wgCJw+mQETPkbN2UTdktzV9KPU7up4HLwGt0d77fWgD5gCsnihND/jztwgqIVrFdZdShIopljpItydvzY7erbDilvUbeTYj/3sbLGIqu5FKDw==;20:EwOTZ+/u8hHXLFVFih+rR9sqt0P5K7ypxPrUVi3bjDkoF1UyV+p3X1PN1EINwmbRCNoXTNajeaP6YUpM1rDqmysHoqBRXe5nUYJQjuaBuvtiGpQJNmn+ZDgbwcTY0LBsEQSVx7kcX98zLCaeInADBDibaR6p3k1JJAJM+K+CsUb2evSukfMotybUPoPdjeod31+mT3stMrT4TYLBiDxKZLNRq9juUaGcKE8koUY7E1abTEZpUw8hVvEdr5nIYf5t X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Feb 2017 07:13:44.1928 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1450 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Boris, On 2/9/17 02:33, Borislav Petkov wrote: > On Tue, Feb 07, 2017 at 02:40:36AM -0600, Suravee Suthikulpanit wrote: >> From: Suravee Suthikulpanit >> [......] >> + perf_iommu->max_banks = amd_iommu_pc_get_max_banks(idx); >> + perf_iommu->max_counters = amd_iommu_pc_get_max_counters(idx); >> if (!perf_iommu->max_banks || !perf_iommu->max_counters) >> return -EINVAL; >> >> + snprintf(perf_iommu->name, PERF_AMD_IOMMU_NAME_SIZE, "amd_iommu_%u", idx); >> + >> + perf_iommu->pmu.event_init = perf_iommu_event_init; >> + perf_iommu->pmu.add = perf_iommu_add; >> + perf_iommu->pmu.del = perf_iommu_del; >> + perf_iommu->pmu.start = perf_iommu_start; >> + perf_iommu->pmu.stop = perf_iommu_stop; >> + perf_iommu->pmu.read = perf_iommu_read; >> + perf_iommu->pmu.task_ctx_nr = perf_invalid_context; >> perf_iommu->pmu.attr_groups = amd_iommu_attr_groups; > > So you can define a static struct pmu in the driver and do struct > assignment directly instead of writing them one-by-one. I believe this is the same suggestion you have made in V8. Here our previous discussion in V8: On 2/7/17 08:42, Suravee Suthikulpanit wrote: > > On 1/23/17 02:55, Borislav Petkov wrote: >> Because otherwise you're carrying a struct pmu in each struct >> perf_amd_iommu which has identical contents. > > Actually, only the callbacks above will be identical on each pmu, but > there are other parts of the structure which are different > (e.g. pmu->name, pmu->type, etc.) Also, we need one pmu instance per > IOMMU since each pmu reference will get assigned to perf_event, and > also used to reference back to struct perf_amd_iommu. Note that each > pmu can also have different events. So, I still don't think we can have just one static PMU structure and assign it to each IOMMU. Lemme know if I am missing your point here. >> [...] >> @@ -463,7 +466,24 @@ static __init int amd_iommu_pc_init(void) >> if (ret) >> return ret; >> >> - ret = _init_perf_amd_iommu(&__perf_iommu, "amd_iommu"); >> + for (i = 0 ; i < amd_iommu_get_num_iommus(); i++) { >> + struct perf_amd_iommu *pi; >> + >> + pi = kzalloc(sizeof(struct perf_amd_iommu), GFP_KERNEL); >> + if (!pi) { >> + ret = -ENOMEM; >> + break; >> + } >> + >> + ret = init_one_perf_amd_iommu(pi, i); >> + if (ret) { >> + kfree(pi); >> + break; > > What happens with the iommus that have been initialized successfully > before this one fails? They remain in use? > > I think we need at least a warning saying here: > > pr_warning("Error initializing IOMMU %d ...") > > so that we at least know why some are missing. > The initialized ones should be functioning independently (as separate PMUs). So, it should be alright to just leave them. I'll add the warning message as you suggested. Thanks, Suravee