From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752571AbdBGBnE (ORCPT ); Mon, 6 Feb 2017 20:43:04 -0500 Received: from mail-bn3nam01on0070.outbound.protection.outlook.com ([104.47.33.70]:11840 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751618AbdBGBnC (ORCPT ); Mon, 6 Feb 2017 20:43:02 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Suravee.Suthikulpanit@amd.com; Subject: Re: [PATCH v8 9/9] perf/amd/iommu: Enable support for multiple IOMMUs To: Borislav Petkov References: <1484551416-5440-1-git-send-email-Suravee.Suthikulpanit@amd.com> <1484551416-5440-10-git-send-email-Suravee.Suthikulpanit@amd.com> <20170122195531.5y4ufm7pm5qkz3yx@pd.tnic> CC: , , , , From: Suravee Suthikulpanit Message-ID: Date: Tue, 7 Feb 2017 08:42:42 +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: <20170122195531.5y4ufm7pm5qkz3yx@pd.tnic> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [171.96.222.170] X-ClientProxiedBy: KL1PR02CA0048.apcprd02.prod.outlook.com (10.167.54.16) To MWHPR12MB1455.namprd12.prod.outlook.com (10.172.55.136) X-MS-Office365-Filtering-Correlation-Id: 24f2df79-debd-4b68-778f-08d44efaa403 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081);SRVR:MWHPR12MB1455; X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1455;3:gdATUIvlcJvAdDqG1L5ptwIgo7waRun0/FvNy9f/XTCDmGkXLuPCbv3DRMI6ONNMS6n9f+FW0hQgEuIucan7316vLkU3LHYkV55beHCxx8KbZ2fPzKr5mNkKjEQ24w6vBEZiDEWj2udPCyO/7tY6yXzDgMqFH/HLgWYpkIxRfAJ3FXAua4F+nb4kfBDwVtp2mpR4+IvdVIrHoPBX1OE8L9c08Q+37s3hIi06bqaFyVdqZPPogQ/77z/J2x72bJ4EDlb/NfNsasc+G0dvuQlvtrkqy7A+I40yxtRDLunyiiQ=;25:Vw2bVq3QH/p7M2BCYIzVSXeX1U3fMNHNcZ0Bb96Sxww3G7nUrBnQHvxtRFwGK8ModyDctPqfB/iQcQGEHBLULlB6cdhRKYXo6zkTC54KO2xuO6yEnE2OkfIOXAnB+Ac+c72o0dN9ci8mucJaQI7xg1ygYJog7mIDZkXJrrULKCsvywuAqKSZORcAVElkPaIPSXVh91LFYJ+uFrawmwFRaFQ4e0elH7EYkAo1b73rXjnFjipG/iw5vZ86BDfLaldyGPC/NWEbquEOzVorp3kcQJesTx8yMX/UaumvNHPsrsrSdEPqpL6aPjBiXRkTFFrQimyjyXNoJAzFrAYxZ7zocnSFbXeRFjjFMc5RWG84IU1f18RtPEFgvRF0fzqqjzg4hhwTJIhrUUXXoxxvOOZ8mcJerKYLWigg9r2sZBskNOw2WEWoUmoNzv/lX5Vs7fCznRWX95Pqkz3e1VJdp9y35w== X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1455;31:WXgG6yWTDzkvhs3M+yjOjq2996GX33SaZQq+Voicu0t1zSANeHowjqQwlgDtK2jiphmVRP09m8zaZeFWlWOvFiXB1Io/PU/v0t7B8y2z7ELz3AVlj4MgRX4JqO/NjIVmUNJa4FLUbiX8OYdwralpawB9+avuO4sd6VKT+Vhm0jEOtCcij40uwaXpxGe2ADoXU8RDWD2EajUSBHAmXgXY+9PAWAdFUzGMG/ZM8XqJqfiOwWRCmTGPl25K2ZfAIEy36hvJq/FV/LOrPcaurbP9aw==;20:PlAKqhgVizEcKxln2uertlM7nI8S00P//FZHkRqKrfU6S4cKH+Z0fBpC0J5wZV/H5S0SECb116AYzdbRQVCNPh6wZllHOQxSxKzFGv92kq7VuXD2lq5oaT+rd0I4a7jSaX2hNFYC7XN1B5k9+AY2RROYK/jg81KlNJWUfn4uG1xnLq7353KJFrrLUWRNJXg3MmWSKOwDlPwihEqH00UCeY4Ve2j4m9d2veHdB0iiobW/6dCSIP9jp0NlH2Fn7JfZrzXZsjPtRYRTnZK5vBkZvuYAb/82sT9ZRSg7xoXXPRdWtM27JC3LZTEE8TnmKI1T7reE8fhJGw8DQRw0Dm/6T/X6i1Xou6R8wN5GvjEJOFeXcCMQweQz6U2D7nR7YcajsYDiXDnYqngU0RukOOORYL+1SjoL33krsBCLaw37z4reqgEXltnLlyjAgBESlsCICgtsB8IavsQhLbNuazH4SIV86qEHDtuYbZlxqjTaEm9pfjVM+nbdVvIp171+SS92 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(20170203043)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123564025)(20161123558025)(20161123560025)(20161123555025)(20161123562025)(6072148);SRVR:MWHPR12MB1455;BCL:0;PCL:0;RULEID:;SRVR:MWHPR12MB1455; X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1455;4:r3BHsXVdD2ALC3P1NzZq/8lPPGnB7Gvooql4up4aZRbaqGI5o0marJgNiQ65hkhX8YoJaegr9dbrokxOGX3tArhUz4sV1TkfAB5f04FDt83yIvbCV3t8hhPEeCaVKv6PjeB+TjAgqQ4j4ZmT5PM6P6+Te9sOUkSGNDv0W6yotYY/ibdfHbvX1QYenB4CdNNTpAshVrUI+1UAXB/SbaflpFciOXIBIQWSypmDa3HENYGfcBQINUUSoM6wxIgr/yB67BUBtnIwF1bnY7ClmgmRqg9F3BOfnuvJsLPpL3cd+RFvrn6DhhHUdwP52NAckjZyz2BgsfAxflXgVaF36bswLabhdzAHVy/Igy7jsncPBO7O8lc55+EDCU3R9gc+qlP4NtvMWSeJEIwZHbtInYgqP6KOZKgVy73V3w257Yqwlch5yyvexPWkzrKcHsVTl3l/zT1q3J6uYw2PcxtTZ/m18BDwhwE019KTspHgWbCUNnsM3bDtEsSPZlxPwMRhQew4Sa+8MSIOaD31T9ryUZ+o6XmVoax8E8A2aH1bwdPtk4irDl3i64FTI3SRt7u15FdrIKZ7wZx0xGQiCuq6qewHqQp/4+yyyzpzv9J7DzKtiPCfp8D7o2hxDAQ8Qa6t0wtFzKAcQWvmnv16ttlKycZSOA== X-Forefront-PRVS: 0211965D06 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(39840400002)(39860400002)(39850400002)(39410400002)(39450400003)(189002)(24454002)(199003)(25786008)(38730400002)(4326007)(83506001)(6486002)(305945005)(105586002)(6506006)(7736002)(53546003)(110136004)(81156014)(230700001)(8676002)(33646002)(6246003)(92566002)(229853002)(68736007)(2906002)(6512007)(54906002)(53936002)(81166006)(50466002)(42186005)(36756003)(106356001)(3846002)(47776003)(31696002)(31686004)(6116002)(66066001)(65806001)(65956001)(6916009)(23676002)(64126003)(101416001)(6666003)(2950100002)(86362001)(97736004)(5660300001)(50986999)(65826007)(4001350100001)(54356999)(76176999)(189998001);DIR:OUT;SFP:1101;SCL:1;SRVR:MWHPR12MB1455;H:Suravees-MacBook-Pro.local;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtNV0hQUjEyTUIxNDU1OzIzOlhnR3lvSnhVKzYyZThpR3NPa2tpTTExM1Za?= =?utf-8?B?Z1NjZExDWkRlUFZVQWtvSHB4TTRWTS9CbDlMOVYvZWptclM2b3M5TUNzcUM3?= =?utf-8?B?STBxV05IOTV6QzZ0M0VQM0ZLQ2pQOEdaWnBYTUFvWElYdzlMSXhUM3NEM0RX?= =?utf-8?B?bFh2ZFNlbm1EUEdvWC9QT2Z3czVwY3lQNEpDQ3lqd2cxU2ltN2txUG9TcWJN?= =?utf-8?B?NzlBQ2FyVU1xY3hEbU5XY21oS2ZHRFZWMWZjMkY2NWJaOUxzaEJUQjRjc01s?= =?utf-8?B?UDBYMzY0U0VjaUhBMDFmV3E5N2NWcEN0SWFOOXBjUWFNTnlZNnhuSzhiZmJq?= =?utf-8?B?WUFVQmQ0Y3pXY1d1WSt0cnNYZ2lrdUZENmR5YmFrVWhvQU5nUmhYOHY3MUl1?= =?utf-8?B?LzJLSHlNdVorREpkUmlHZVZpZmpCK2luZExkcnJac0pXZm1CNFY0Z3hZdkJz?= =?utf-8?B?K1hNa0NBMUFNejRCL21zT2RwOGNsU2lvNVozRnJVVlF6L0N2dHZPMGdFV3VR?= =?utf-8?B?anVnZkxWYXpsMEdka24xRGNGakNZVjJ1RHdpeWJaL0ZMYTVOTDJEWkhRUWc0?= =?utf-8?B?RXNGU210emNaREt3amEvL3NKYnZvNzI5Z1NJNERsOC9NVkF6eWNKVWxFZ0lT?= =?utf-8?B?c1RZMCtNQzhFLzc3dlRsYmZNT3hnZG5sR01NZmZ6U1E4bjlZWVFzRGNvOFZj?= =?utf-8?B?cDNsakppRUljczhmYkhlZ1NwV1Z3MDgrVmpsTUo2c2wydGphbHRBZ2tEME5T?= =?utf-8?B?RFUvZ3FVaHBUM0l4U0g1MlRiSW5RbVViempzMTRwVFQrNkxEWUtxNGZjMzR1?= =?utf-8?B?RnQyK1BPNG9BdEhMdzdJbkYzdlBXYWY2eTE5TG5YcWFCQ0YrMzBNRjJiT2dK?= =?utf-8?B?Tm45bHdXa3E5UnU5YVlDWmV6SVo5UlF2MUF0V2hwMnEzdk8veEVvT21rTlh0?= =?utf-8?B?MUdjZWxOeGhiSTV4UkhudWE3dTBnWHQ0alRYd0dEV1pOS0dOMWpwL1MrVDNS?= =?utf-8?B?ak1Mc1c0ZjFkMWdtTXMzdFpVK2FyKzVpZzI0YmhlVDVtaXpxM3VQeUZlcHpH?= =?utf-8?B?VkdzRlFqWUp4Nk81cE8yMHFUb2x4QVRIeUxOZDFnVnI2L1RPUnJwTnhTRXZK?= =?utf-8?B?N0ZMYUNQcnh6VzQ4UGdDbVFhQmhJNDl5M0NPeXdZM1JmUlJ5Z1R5WCtlR1Z4?= =?utf-8?B?NWhINitJNVQ5bXl2LytXd091aWxhblBmTGJuU0VLWVZHbHBKZU5zNzIrUWlr?= =?utf-8?B?VXVaaXZJZldocWJjMUdGanRPcnlXOHhwSzFySnRPWVB0T1ZpQ2pXOFovd3h5?= =?utf-8?B?WjM1cUhCVllQc09yUEFIeDlENWptVFBqODQ4MkcveWVBMi9oU1lsTEZBNnVl?= =?utf-8?B?MXlvRktsWk9HS1Q2RkdscTExeXVYNENJVXVaWjRnNFVxR0FtTm1FTDRGUTc4?= =?utf-8?B?TUQ4UTExR1hiWDk3NExrS1AycHZ2bktZMXU4RnROY1B3K0E1VWtKaFFWaERx?= =?utf-8?B?bFhWR0NoRmdteVR4bktoWjM1ZCtnNnJrL2VwMFgwR1p5MXJmRVo1emtTWGNX?= =?utf-8?B?RnFvcmdBaDR3SFlpM3pYZVRqS09VRWxicjcwYyt1M2Z1WlQxdFg0YWU5RjJw?= =?utf-8?B?RFVRVU9zcitQcmhDQWJUeGhZeGZMQnI4NE0wcXF4VHVHdDRDOTdIOTBtRXJo?= =?utf-8?B?eGhDS3ZqTEpETFhwKytCdktyaXMyMWxYVDRwczJUQnQraThCMFhlNlJyOC9H?= =?utf-8?B?YXdibXkzNTA3aWtCb2NrNGNqcTd1WEcrRzFHamM2SVpoSmc4enFRc25nNXZL?= =?utf-8?B?Qk9vNkt2M2ZVakFUZUVkcWVSSkRtMzlMWjZMcE1ZUkh1UjlBTFdyRGVRQ08y?= =?utf-8?B?a0Z2VDJpbGNsempNN2RWY0duYUZ2UFBoSWZPS3B6VDdyVGc1UTFRQng4eHMx?= =?utf-8?B?NVkxSFo5SHFZWmcyZGt4VmVnNWFJZVVSbzBjMjltNmIwa3NiRmx0eFpzK2dH?= =?utf-8?B?SEFtTlhzZkJORm1DYVIyWUlleEs1RVUzUVBDQT09?= X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1455;6:wbPFYcJ9DFBvsM1b3+FwZsThhEVIyrfjsHcGdiMe+OYFmPSzufkM31EIPsPuasfQ0Dz3mpHGw6iOcbOCTG8N6II0U1mou6pq2oc37/sB75BL6sGSrcsSEUZgdrzWq5eMgjcIbG+W/Vr0znWGA4M5Emp0CnkZ1txBEzrgL0xsOzBaUHtWPL+hEpjMoE9VevmmHuKe2qfg1hwnziHcbuTelseKaEvdRTuQmLCFKifQh3Omw6MPZJRdCf/y69MlwWcW1RBR2W6RStEWF+LN8zV5ALs2kKENyRG5/TCCcQIqTIyhSbtY1PgPJKjvLWjmR7voqpAm/Q3Bib1SYHICuuq5StIZf6/okq0h3993aib9O81M5NuiMaYpQga2YA4/kcFCfIp4LMW+W74XFA2zDtliHfY4CfTzyqM7TQ5bV60vr9s=;5:B52XtURy+ShRuHotUTOcFePuXfOsgk9MShZllZBnCw5WzI0c8mjCujkO5XyBni5keMjwLtXyLFDwqjWDLbY6JCqIFBKIMe+6OH1q9+Fzf20bL9Eo5kGuNHBo8Evs8gYCfolDPYnJS6MShEbnxSNarlxCwbgzijHqfyKaz9GPIZY=;24:yHoM2ekNAmtIHp3gJvOdhX/Cn/O2u9uhMkQcHEApkXlg9d9jsiLj474lY99LqlZRXo79YMNH8CFh3tZi7cCjHvbPxfxIuaRjiiANKjSugeM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1455;7:lpqGgNcsZX99T5sxrKMCm0SsIEZIXNjoUPrbHSo6kP+lMHssnZRnF0+AC5yTQIvsBufzVSWk3plo0+ekJH1iW9Q8bUR2HkxiY2Umw0Bv9h7Qr0+J2Cp3psn2dikqmZ0A4jUL4HtZbKxGp1OmV8eKb0SzNxnvK7G10G6OTraMa58aDuTp2jIQHrpCw+T2Nxf41sSBPKERA5F20nOu8OUReqx4vXQ0a9fdv+1S7snPxnlNfwtgN7guDLEuw89BfsAQP6Kn54yVpvAzZzEoZtraNO+D803LP4VroYs782dWzQT59J25TmLFPRfvzOVh89PqbaVgvKlHc5GU426d52bT+bRjAqaz8jQ+qdyMucBXcv4M5FrJcBc66Eq9ZvZMhL3dtur9V/5RYgsZCddVrQ4+/Lo9MFNNl7lLbTyeSFC42rmtYb8CkrSKFRZQa4YPlAP7JZmo53ILiuRb4vT8P5m9PATWDzMTDUXi00Lq64GkowGINrH34uRu5D6kJQUHdmaLCtMwzbR4rgpL0Zwp3veB+A==;20:yno4tW6HvJcPbXWRdima9pln1kkhMR4s9CWSgA9C4nveV6Me5E1332oYOwWvcBafJ3L9u8jSfpYYXlWI9qR153f0YroFFsr05iZa5UYTZ7/G6BBnsnQMGygOb8t+LxleJ7pxMMfdb5ERSYIM5y32gklR4WVjoBM8g0De/3on1aCfmjOTrx7Dyu1tWL18JDxWgWNKVI/9eYXhC+vqhdnrmbgjjIEuI9lAgw8rf5KCTfZODO3uux/nJ/4ZrxxzRJqM X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Feb 2017 01:42:54.8318 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR12MB1455 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Boris, On 1/23/17 02:55, Borislav Petkov wrote: >> @@ -421,46 +427,46 @@ static __init void amd_iommu_pc_exit(void) >> }; >> >> static __init int >> -_init_perf_amd_iommu(struct perf_amd_iommu *perf_iommu, char *name) >> +init_one_perf_amd_iommu(struct perf_amd_iommu *perf_iommu, unsigned int idx) >> { >> int ret; >> >> raw_spin_lock_init(&perf_iommu->lock); >> >> - /* Init cpumask attributes to only core 0 */ >> - cpumask_set_cpu(0, &iommu_cpumask); >> - >> - perf_iommu->max_banks = amd_iommu_pc_get_max_banks(0); >> - perf_iommu->max_counters = amd_iommu_pc_get_max_counters(0); >> + perf_iommu->idx = idx; >> + 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_SZ, "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, > This compiles but it is yucky. > > You should do that instead: > > static struct pmu amd_iommu_pmu = { > .event_init = perf_iommu_event_init, > .add = perf_iommu_add, > .del = perf_iommu_del, > .start = perf_iommu_start, > .stop = perf_iommu_stop, > .read = perf_iommu_read, > .task_ctx_nr = perf_invalid_context, > .attr_groups = amd_iommu_attr_groups, > }; > > ... > > ret = perf_pmu_register(&amd_iommu_pmu, perf_iommu->name, -1); > > 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. > Now, you need to access the struct perf_amd_iommu pointer for each > IOMMU PMU in some of the functions like perf_iommu_event_init(), for > example. But for that you only need the index and to iterate the > perf_amd_iommu_list. I think replacing the index w/ pointer to amd_iommu is a good idea. I'm changing this in V9. Thanks, Suravee > > I wasn't able to find a good way to do that from a quick stare but > PeterZ might have a better idea... >