From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754854AbcHVKKN (ORCPT ); Mon, 22 Aug 2016 06:10:13 -0400 Received: from mail-by2nam01on0078.outbound.protection.outlook.com ([104.47.34.78]:45266 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751602AbcHVKKK (ORCPT ); Mon, 22 Aug 2016 06:10:10 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Suravee.Suthikulpanit@amd.com; Subject: Re: [PART2 PATCH v6 12/12] svm: Implements update_pi_irte hook to setup posted interrupt To: =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= References: <1471549364-6672-1-git-send-email-Suravee.Suthikulpanit@amd.com> <1471549364-6672-13-git-send-email-Suravee.Suthikulpanit@amd.com> <20160819144907.GB1885@potion> <57BAC3AD.8020001@amd.com> CC: , , , , , From: Suravee Suthikulpanit Message-ID: <57BACF73.8020401@amd.com> Date: Mon, 22 Aug 2016 17:09:55 +0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.7.2 MIME-Version: 1.0 In-Reply-To: <57BAC3AD.8020001@amd.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: YQXPR01CA0045.CANPRD01.PROD.OUTLOOK.COM (10.165.103.13) To DM5PR12MB1451.namprd12.prod.outlook.com (10.172.38.140) X-MS-Office365-Filtering-Correlation-Id: 7f7f116a-a398-4316-8fe1-08d3ca747e05 X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1451;2:l2EXqr54Kdg70DhfWjYXEBv4vAt5SjxPD1fowPFj1gQWEalJL5NWu/uHSUsi5aoLVW3k/TJrOjWIdvmtfwYwrbZBUIeczBMo8afYroH9iECDtVsS/QQd6dNG/7K/gSqjxzooLuKoYbJmiF5suM004yENxPS8M7KYG3C4JX56ZR/48kw4O4+VBvsXT2G/f8gS;3:y7oezhiEPbQJvvs1GEYNIz606zKoiNc/rZNx7JVH4P/WesITbwDHG03gE5WzL4Ayh6tHz7cG1rSu16frj0JzwBue29jp/OXX/b13/KPwr2PIKPwSqBOd2i5EiB7EYyk/;25:3VORIYTTFCbM9NooX5P5YLyw1vU23cgreWIvCB7yZqfUyp7BEYndh2oQOaLt48O754RqYAa6PioVDg2kg9uQwGmk9cEMg6j2qWY0dCrfyNlqCcpvtByfIeCSbu1j+05GNO5WHLw5KYnH5bdvgQsQz7aO0dXb8XwLRMNJ+CsmYIL+Pv1POYddWxdWSnWiYRue9KEBk0kAIazG9VgySOuy1bqnEzJirktPs7HqiLtsroWPPpwAwUWuHvEGxaYtmvLPZNPxmY7Kh1HpWByCGRonwrZ123HfiXYNvdj78v9iJzT1zvrmn/zLQfgHSbr0MCr71Guqi3GwxClz9zUnTI+H+glF9qjIW6eMuMZ7lpAkBTGy1HhxI7dOtXntPyUUfF7Q7c2sRH/FJFlqcus5IBD2g/p8aK+cMupWHjoTwJoSkFg= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM5PR12MB1451; X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1451;31:xHNyET4AUU08AHvme0oXTJWEEh4411CygJjsmX7IAzEQxl6YF7v7ztPLeW15Stj9wbrAebac6r0L6hxNy/Z332peu3uQggUp33yZOSx5tv3JsGfCdkvmJUb6BFct46CHBck9uwe7Zd1KSRSGog01G12Rj009r3Ah/UHvzz58zluyYbvU6scUsroRMjdXLXVq6I1ZQgwFJhO7aPc6AjcZ84FMJhud2t72JBMi8lEsMTk=;20:c9ty0JpEDC3QBU7ycE3eJWjcVrG164v0qG+lBntv4aOHayI/S8h0gViVkT8THoTY/zLRIpXZ5CNJ/l78LyiENRA6m4vTcS4BgVqcbbFSgvYjOybTW0YRlMrJuJdRwnnNlcSHvPiiR7kp+8gtnd6dgrGMjQuipMMGmSaGJet50HUCKD8SBBB5XnrXMK1MPRg2IaTEEU9o8LQJaZwngOZWlvLa7uHTKhlrGJuS5gnfT+NyBv4jQnYNt569u8XNkRxFgyP8daaU36nSH2wK17MyB0EtfRFGCSQrxzHnuDKqJm8AKxUb/Ee3mzETCzddKYvAXd0hI30fyHV4vZra527UkvtKhExsH+V6g8Zs/ww10Cu/rj+SneieeSMOOk1tZFMy2qUv8nJ9XqLlIwk8+O3D0DGp10dPh/MCEpwApCxR45KXHtw56b3GX9DVfw6/v5uaW5tRGGvivLejfKaR5i/TaiVjE7klkE2irX60pNVyAiKmozVtM6n4PqLjZqYP0BHH X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026);SRVR:DM5PR12MB1451;BCL:0;PCL:0;RULEID:;SRVR:DM5PR12MB1451; X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1451;4:r3zCRkV1TKrQ0OWatveMpVL8K3h99B4La69zQSfoj/wMb5SWyk06zgMQrspnX0xHKtYQ3kcsrTy5onQLIOwrqG1tIjmAogL7QoXiB4uDgMGDtCVNh27yfL+H6tZ9nqqKMdPlVksLFiZdaDmGOrxyRyK1S1ApsHycLjcH3yBf65rs+2h0M71i90QvjOtH31fD4K044povJuf/NcLhBzz4gIUnYNKuu1SuEMKnia/ucbpXyahRnpt/Si04VY9DIjlWO3rNNrn9k1LjPpEqPNjgjpFgeFzbquQlP1zc6s8/GhjBMnWLkBKekHEn4LHIPchjhGk0hHz8YTOVVGRYDUiHXUnrc5Ex1WfhaGs7AinbFUD4LSvEsrUSCoY1WguTQRC0fO2SV9FO8ZubSZ0/IsV1CQ== X-Forefront-PRVS: 00429279BA X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6049001)(6009001)(7916002)(51444003)(189002)(199003)(76104003)(377454003)(24454002)(52314003)(68736007)(33656002)(23676002)(42186005)(36756003)(83506001)(105586002)(5660300001)(106356001)(86362001)(59896002)(2950100001)(77096005)(586003)(76176999)(80316001)(65956001)(8676002)(6116002)(93886004)(3846002)(87266999)(92566002)(66066001)(65806001)(54356999)(50986999)(47776003)(65816999)(101416001)(230700001)(64126003)(7846002)(189998001)(50466002)(305945005)(4001350100001)(110136002)(81166006)(2906002)(97736004)(81156014)(7736002)(4326007);DIR:OUT;SFP:1101;SCL:1;SRVR:DM5PR12MB1451;H:[10.224.14.193];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTVQUjEyTUIxNDUxOzIzOnVFWi83M2pvZG5mN1JpZFBHS1RpejJDb1FH?= =?utf-8?B?eUgvdGNWSHU2WENlYjAyYnVheHlNcHR5U2lVa3VTcGF4M3g0VDZwUnNzdHFr?= =?utf-8?B?VngzcE5pU0pFUTRhUFJnUGk0NHJTMG9Pa09nVGdCNkZwTnBZcXdKWlMvN3pJ?= =?utf-8?B?d1hqOGUrYTNwZWZRRXlTVDR6cHFoSEVlWVQxazU3WEVoU2wzbytGdldHNmVD?= =?utf-8?B?WENjR0paSnFJSHhlUkdUVGdwVW9kZ005L2drTGxobEdzNkdrR3YvU3JWYWpl?= =?utf-8?B?Wm9rSENVelZ4K0xQNzJwZjZPY3NDS2tNdnRXQy9RZXZ6WTVCa3Bkdjk1Rnlp?= =?utf-8?B?QU8zMkVYVjJOTGlSdTJXeURlTlZkU0pQVWt4UUNtd2I3MGUrNE4waDM0bE9T?= =?utf-8?B?bjQzNldTY0l6NGJCbkx1VFRWSldWdVFHdStrY0ltajJZQkMzR3hmZ2Q1ZWEx?= =?utf-8?B?dk9KeTNJVDNLelloSnFDdEY2c200UkhFMkNHbkdEaWdSWm95bXpJaXpWK3J0?= =?utf-8?B?RnUzNk5YYzdBSW1Wa1ZwSlgyVHE1QzhkdCtxZ3M1M3JDZkx0bzQyZHozYm5y?= =?utf-8?B?T0ExM2xlQlh0UzVvT1l3OXJ3OXRTNnZxRHVUWktDN3lzZmFqK0padURYcHlh?= =?utf-8?B?akFTZ2ZsdlJnQm5PaHE4dWJHcXhkODNVZEZNeGlNSFdUN0QxK0s4Wk1sVDVW?= =?utf-8?B?ZHJLMi83b2llZnpsYTdEVTdTNFVHQ1BleXZhZEJMbE9tNzJwVUdqYVJaWnVK?= =?utf-8?B?VVY5U0hGSVdnRlpUM1h6K2VvRGcvNDNmSlVwNyt4V3JGSGhQMTh4eTN5bXYy?= =?utf-8?B?clJSQlNpMkw1dXl1WmQvaVVIQ21HRDcybmFnU0w0OVQ3cHdjZCtFR0JVU1dH?= =?utf-8?B?RmZOQmZqR3BWUm1xNlE4Q0RRajl1QkJzNWNQcU95azViYjhCTHUrTWIxQ3dj?= =?utf-8?B?aGhaSVRacCtMdWNxWWt2Tm5RS2V2SVg3OWtHZU42ZTloSWZDVG8xMUZaUGpG?= =?utf-8?B?cDlzMVYwQjBRSG8vMlM3NURQRTFManpHb01TaklnZ0QyeVYyR3E0SUw1QUgz?= =?utf-8?B?V2psVkc2MThEYWtUT2QxUGhENHBkUmo3S3d6ZGNXcVBJc05vSktHM1U1SllI?= =?utf-8?B?MiswbG1KVTBlTlcrSXF6WC9Zczl6Uk5lNzY5TEdhZmtoZ3hWdTkzdkY4TzZE?= =?utf-8?B?VFZpMHlHdUtoTHlTTkhqWFBrazBBbUxhdnBnNURqSk8xcEpkY1dOKzNnUEp0?= =?utf-8?B?TDlaeWJ3MlZvOU0wSUZBdk0xbTVIdC9nR1FaanN6eVNzeFJ0K1lXVTlRM1Zn?= =?utf-8?B?bVRYUVRtUEt2bUdBbTVqTGhKR09waktpUnZKL1BVNFl3U2N1WlI0UjhGWks4?= =?utf-8?B?MTg0Nlg2a2FTamhWYlVRTEwrREt3b0ZoMnB2VTNPdDFORDEyMTlLMEp4TGM1?= =?utf-8?B?QTgrbmh2ck5DUjBaU2RScERjb1ZkZ3BTYUpjRHhHUHZwMGpZUnFXNW5iellw?= =?utf-8?B?eGM3N0o4MWRtbGJNMk9jSUNMcGdaUzNMeXY1ckZxSjBJVWpkNjV2ODUyVnZJ?= =?utf-8?B?UGxtQkR4eDVEdW1BQ2FqbkZXZnVBVnI5d3psTFhwelVBYktxalAxdnEzVmda?= =?utf-8?B?VEtuQ25pN25HQ20yczB6cDk1N1pURVVoZnRINnpnWFUvcHJqZzNac2dQMGlo?= =?utf-8?B?enhYVFhCVnc5RllaVFdud0tMUEZKeXR5WFlvWnkyRmlQSGljbzJtaE1CMUNI?= =?utf-8?B?bEF3NzJmSUMvSlk2eHJqV2NlZTFieUtlNDdveFY5S3lvVWt4NWlsV3EyN3E3?= =?utf-8?B?V0tLZTFBWlY2TE91VzVPeDBKUEtQKzNLeGdyWFZSc1BKVFE9PQ==?= X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1451;6:QB/icAcX+JEwTlemuUZkDjF/hzxWK5c8Ef70ojmdUknhlq42jxVXhrEOFTaQXS+o5eEsHI69rnwwbTLO43X/du6Nixg+YJLqISpyi4Z4ACHdJWiQ2aUNohxvllqtbKGQcdIHnnMOcWT/esUSCG0aD22/tQwuLJzZM5keIV59aY76KB7a8jRh15eBVD3mXjXjlxXqo1S7s+Ahn5qu65cnDH+8SSqZ8aJZgZDnjJ6no9Fa/BstdCEGTh3UJ7K6HLiaQ3qO3rUrSfkMBdcJfI9/krtMV/xFFRd6vntVawx2Gib4qkqO92uA4vsEtb0nORJarypJXRrzDyqWtgkHc9Dyog==;5:nNLcgEBkURpkSGp0BurB9LI7hDzztuUC5AR9+x0LJdT2yGEq7iL/5YNREUvTowKbLqs9VMDLgINhrqxjh/P5SqaJHaN8rkUtAg6DNYEXdZtRI0qU2y/87OxC05DYWLRlfRd8RqZeLSd8OQpPp1aRLg==;24:RSQ9Rw3+UpkqprU+TlllasKIGUJ5FB+J6udrUZwiXDqEzywyliFlQAj6HupdlhV6sEGu/GOi8wsIlQIgY6zhia4ls7RLR+FjJSLK0AQkIuo=;7:h+gH+Mi9bmrb7YH93pX/AfMc9yP6uH84uz/nPg5h77ZRVYD2qmT0BOwY1lIk0tWjfA/KP3crJEo912fVLwr1+9YWhw6CKxpoUht42sfj/Da9lrk4MTWa8gVRu7mrsZ2aV6TTme8e56uAt6gphCj0KyO/gPI4CQcpJg2OULAvjgdFTzkZAkEvPHeOSPzvKjfp45IL/Q8dhEgcBTuIJYnfM1VIHbI3J0bTj1i235cTFQTa2z7e53W6q2or1qZtzzcN SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1451;20:a1cDD/HAN+cHhLhZOGYAWwjLQ58VexWxIEFB0PmBrvxtZkwmv9aBPxBQ2QCz13/UPJXudDQFw9FqLIgwWeyRR5pVAwYoyYRAOsswrYx/rBbNv10/q6dbjZISzXHGffFuZJdMHuiDlwqvO18etLyX+i0UcnS0wqPoV6cHIa7Sh0N1P/vd9biZmh8+g4u9V5KJnMgtSQBA+SMD/x3LvmHZvDwjiKW8vUdGEPEPb6NbZ2zsxBwHwMHB2hZz2KEwI1c8 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Aug 2016 10:10:03.5875 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1451 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Radim, On 08/22/2016 04:19 PM, Suravee Suthikulpanit wrote: >> he problem with wrappers is that we don't know what list we should >> remove the "struct amd_ir_data" from; we would need to add another >> tracking structure or go through all VCPUs. >> >> Having "struct list_head" in "struct amd_ir_data" would allow us to know >> the current list and remove it from there: >> One "struct amd_ir_data" should never be used by more than one caller of >> amd_iommu_update_ga(), because they would have to be cooperating anyway, >> which would mean a single mediator, so we can add a "struct list_head" >> into "struct amd_ir_data". >> >> Minor design note: >> To make the usage of "struct amd_ir_data" safer, we could pass "struct >> list_head" into irq_set_vcpu_affinity(), instead of returning "struct >> amd_ir_data *". >> >> irq_set_vcpu_affinity() would add "struct amd_ir_data" to the list >> only >> if ir_data was not already in some list and report whether the list >> was modified. >> >> I think that adding "struct list_head" into "struct amd_ir_data" is >> nicer than having wrappers. >> >> Joerg, Paolo, what do you think? >> > > I think modifying irq_set_vcpu_affinity() to also pass struct list_head > seems a bit redundant since it is currently design to allow passing in > void *, which leaves the other option where we might just need to pass > in a wrapper (e.g. going back to the previous design where we pass in > struct amd_iommu_pi_data) and also add a pointer to the ir_list in the > wrapper as well. Then, IOMMU is responsible for adding/deleting ir_data > to/from this list instead of SVM. This should be fine since we only need > to coordinate b/w SVM and AMD-IOMMU. > > Thanks, > Suravee Actually, thinking about this again, going back to keeping the per-vcpu list of struct amd_iommu_pi_data is probably the simplest here. * We avoid having to expose the amd_ir_data to SVM. * We can match using amd_ir_data * when traversing the list. * We can easily add the code to manage the list in the SVM. We can make sure that the struct amd_iommu_pi_data is not already mapped before adding it to a new per-vcpu list. If it is currently mapped, we can simply unmapped it. Doing this from IOMMU would be more complicate and require lots of parameter passing. Thanks, Suravee