From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751393AbdAQOGj (ORCPT ); Tue, 17 Jan 2017 09:06:39 -0500 Received: from mail-sn1nam02on0080.outbound.protection.outlook.com ([104.47.36.80]:20284 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750985AbdAQOGf (ORCPT ); Tue, 17 Jan 2017 09:06:35 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Tomasz.Nowicki@caviumnetworks.com; Subject: Re: [PATCH v8 14/18] irqdomain: irq_domain_check_msi_remap To: Auger Eric , , , , , , , , , , References: <1484127714-3263-1-git-send-email-eric.auger@redhat.com> <1484127714-3263-15-git-send-email-eric.auger@redhat.com> <8db94e75-7939-c6da-2101-cfa73827c16c@semihalf.com> CC: , , , , , , , , , , From: Tomasz Nowicki Message-ID: <5eb6945b-9d4c-9521-1d5d-10eba633fd59@caviumnetworks.com> Date: Tue, 17 Jan 2017 15:06:16 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [31.172.191.173] X-ClientProxiedBy: AM4PR03CA0018.eurprd03.prod.outlook.com (10.165.240.28) To SN1PR07MB2173.namprd07.prod.outlook.com (10.164.47.19) X-MS-Office365-Filtering-Correlation-Id: 68d7fa43-0b75-40b3-3eea-08d43ee20779 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:SN1PR07MB2173; X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2173;3:ScWMsKLnHwtNXCGBSXPf0TvZtgr+bke0I+5pfC5VIJMA/2c3fMguQhA3PTrTGeXluDKl4af0QiQBvG5U+30A5p666HLXGT7ZCQLXsF1iCE+ArLM6ywFmpeu8jtTlRLTxIpaCPoLDPxiyrQWE0MS6xedM2sK51UXP7NWnYQBNg1XHfX0nta1RTWzY5naV5z88KL4f/FckHjc/CW+LytjA/knt+Kq2sJm0ZRVSAhVGopokd18Lo/0YsD2DORXmJziwK3rdQnqKsK+o9ztGPbTfRA== X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2173;25:Vw+470g/xdHFJlAe0z4ofgekh9JsB8oMOfQEvzxEMCQNeD/MrefF8wpvodOJCTPTQLPrbOPdi3FkvHUVNBlQaMB8Msdf1VRZ8kozLslAooozlEkXm9hvB1M00kcmRILPAUTdIRCGtsN+WYHLYLbnFd0V5EGdfiTc6/odFVU49n39mCvrJZmLa3VTOZwYpE2jofutgbYKJ0ytBenISw1CrKO7tC5NoWS1IolvFTEGNcPZf4JUKCDF4krZcQ99l1epwIAZarmAgWkwZDuzLUvSbzxXq25M+LEO9DgYpCHv7jWGheHgmQkg73QQiDo+g6O27Lb9nPh/OL5qVXyDMGKBVNC1J5TjA3XJqLF5dXSr965L6YEsEPuEjAKIUUMiZEbf0Ciz++qOxd+ElwmXfZ8U1QJ19CU1n3meXy0dV+NNOOOv2cpQ2c8kpjjIldsR4P49Ei6LEX4dpX9aHmIxeGgxFF7BB7Lj2Lxd045ochngkPYtf2tkp+gDN0rPGYZD94PE326lyfberS6Ulh1B9wBORf8eE81GnZ195xbekjM4f9JCZ0Ljq4W7iMkC7usnVwFoRyblbHygZV+zkTyZIhJJGUWbTjsQM1YVVuyWidgQChgjsHJD3KOpj+MFDAYq3I1ngGORJHZXK9iOoaYkZBoRuUIDtJRFe3jHO8gJE/tcz0maws5yFqLktJTa36JjMyvxs5LnJJ0kLNnKYegz0XtrEe65xwoabl2oqUuOsIwnIrWEZzBKdIPZG5LtFlqkOz8b X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2173;31:GoWHkowbJMh3pPFB0Ml6LcZlKHAFVXz+0r5OyM6VYyk7kVyYVSqT7fR/2ejhOmGPHGEWTV7mf9UZBbIq48GQd1SjAvBoHl20qEDIGnZpCLU2ffGifxebamYA/q5SsG35K6ephqKo5z4ECsHS731i/JfuHBpGL7FKlEw7+ePeJm0+QXdC50L1iuv4Tj39TwGNjEE7HEtek0f362IUQ07krau4vXU0ZyqHEs2y8pEWj2O9bQC+IZdKj3wxGN98+IOz87EFlP9pzUrVzFMpQgTDTYj4hebiWDLYUVltPTR6hrE=;20:HgebU9jCPewCywgYzbxopPir6W5jziF5Yfff0QbDY67lEDLkpMdaOr/tg6eRwn8b5tm7oI0xGGJiQ1B6IG6Ei9OrJ/wevaoXAUlyCrbha94VrBBybXijN4jhFfjmkdOFD34jj3wnGK7Nr6ScTQAuXuT+teCmwQrNPaEXuHV41OkUWTqRQnstLrtVWKiDozUoUZ0TECYhlcy+v4Rr1ppeRxIo4SiR+O4H1sHuREltQkjfX/OwYzHtx5dOetUvCCAe6EKiZy5ECMFowr15cjNmQ/CFEHUI+ZAjSbR3D5wxY9sKnIBtKJUciaMwyYCyBDYil4qa3UKqkbQvGwE3234f/+YYSC4YsPYLDxP7VX/7OptKlFuBaKnEvLgmEeb0zKaaUFSB9qjhomaPDGK/UQ21hd24hjSE4A8kN5h7U7fxmPgyyTOstKrUGUHgLUoY/7Z066dhOZsljJt599lSwyPzgfzGOCkSVk2TVkhb7M/mxQkl0gd5ZplmHbXNis1+GeSB/UfVWkYTqlWzu61IGEoqNinY/NA2NyixoDZ4RAqsTDedwSECfO7WsSCKKWT/D9f/MaebXayQICXOYUMnyheSrvz3crnDg6U77VbuOd1mDjg= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(180628864354917); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6041248)(20161123562025)(20161123555025)(20161123564025)(20161123560025)(6072148);SRVR:SN1PR07MB2173;BCL:0;PCL:0;RULEID:;SRVR:SN1PR07MB2173; X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2173;4:6xERIoq9LfO2UjAyijLbb9/z1ayeMSkpbuUAyPw8+MCek00TF0LxT27MhwgUG6p1DRCiXDgTkNeZc5XgZ/y8RcQg10G3Gv3iOyQZKbN7ku4oU0K+jHUDKTTSYnr4hlScPIHzhuy5wn2w2rPNzu9ZpbDXtD4C3T9C9eFfZe/T6eerUQtL7Y295NXeFnR7WfV/XKEQ5WOuUsidAY1wO9yxV42cfxHiQCv/AmJp35t92B/BNgZXHGLZq9efdRKtGJsnl4QSMEiPaCdyFCqRE8n8aBwjv8oWT48H+SqBadY1xFGxBfe71spXaAjCevR42kXDcU03GcrwmbR3Vetlj2hSGaxhLhitP/asciUOiCBrVbQJC61l0sNeYVRS0ojwhzNC5DWbJKEiwKOKgj7CpngxFjonz2c4Cd8QQgKbSbkpTtEiF3vsHBRMgxbMNUP072MYB8MLqQiZhKNBIT0xyGFUuOBxCta0LrW/KXexD6iqarbPXP4bvTYnuGV2qsdP8WRUTghhAcSh+gvbi3eCxVPCEejtRQSf2PJpYSGKBZ2qhTdZoiFmC/O1p6z8GWwua4tA2sHxd738sqSKBXoGjAhNUrZcaNh8XR934TBehV2Xe2kBURlqlJowvOHuL40MQwPc X-Forefront-PRVS: 01901B3451 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(6049001)(7916002)(39450400003)(199003)(189002)(24454002)(92566002)(229853002)(76176999)(2201001)(50986999)(3846002)(5660300001)(6116002)(54356999)(23746002)(64126003)(305945005)(81166006)(2906002)(31696002)(25786008)(6666003)(65956001)(66066001)(47776003)(2950100002)(101416001)(30001)(105586002)(4326007)(230700001)(90366009)(81156014)(7736002)(83506001)(5001770100001)(189998001)(8656002)(8676002)(54906002)(97736004)(4001350100001)(50466002)(42186005)(33646002)(38730400001)(106356001)(77096006)(7416002)(93886004)(36756003)(6486002)(31686004)(68736007)(39060400001)(921003)(1121003)(83996005)(2101003);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR07MB2173;H:[10.0.0.85];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;SN1PR07MB2173;23:CYD0V1GhTVOB7TWCITkFqWf1cbznqd+8e0yda?= =?Windows-1252?Q?q5E07EAW6jFLGGvlE09k5F7nt6Z5OIakkHZlhhVKWhLYiJ36UhbAKIRy?= =?Windows-1252?Q?xGthBgGrs4eGGZQwAgEFpOrW31T/IVcrWksKoB70cD1dUjb9AneZti7R?= =?Windows-1252?Q?Q/oiOhBF3aq/w6MvdpiaaaHITo7PYDW0gIslzUCDALRoRebv7GTrqw5G?= =?Windows-1252?Q?tsg9DR8Iei4gCokXli3db8OhxzfAlPQEKtGuwyMvPxC85VoCOa5B1zAC?= =?Windows-1252?Q?PIoe9UDK3ZK/sQXX2WhBULa06Zjg7fuukLIgRmsYmbCE/l/cRVagC92B?= =?Windows-1252?Q?bYEg0E0N4bWKceAf0rEEng+rddztzf/WNU2xOy+hggNz3IS64/8XQSWW?= =?Windows-1252?Q?Urjuisw4SFuNCjTyZUiwrbGLv9qEhhnM95ElufXP7n1yaR3ToDahOy+S?= =?Windows-1252?Q?8PBN53S4syKmoKnLA1o2R0t02oAl26MTbDCvGrKz7VBhkkMfW0mFLWu0?= =?Windows-1252?Q?3YS08Skak0gxbXxD33Izm/yD6jvvTXyEGP7K4L6+yhXTiV1VqmhUJ4Ue?= =?Windows-1252?Q?5hEmEPisYirK9PJaMBlc7LX1iCkdBpQcmzPA2lCCkDiKhFrCDKaDB/b3?= =?Windows-1252?Q?/IzCmVqX+PO4uejQDs6Buw7QKER1wKsvAFuwgRrdHUFYsZ1r4rkgLyrG?= =?Windows-1252?Q?HsnHlfA6q+zklzRfv5D79x2itvSyxRcluy3TYsWwUZ+0Qle1oEtlNTqt?= =?Windows-1252?Q?cPwksxlwtIB4aYT1XtvZawjCz+X7NckgxBmFYd5m7Azn/HuO4/rfh3V3?= =?Windows-1252?Q?Za20AJdN5L7iVIuY5Ms7ACLLSvV+FYVCW/qyFZdZBE4/jzfnTLfK7vwm?= =?Windows-1252?Q?d3ZW8w1ZtLIRKcqIGHe+AfW7wTgz2T5ltMthXnIdCQFXtN/6HScDjp2l?= =?Windows-1252?Q?UQF87pgcQ1r3RY7Cyk6jM8vvt0ssXHtgu4OiSlFzxVRkCwHmeZldeRVS?= =?Windows-1252?Q?qJpb6zVvdWiNjW2VwpC70Tc/fOibge5xiDopH6urm+x09lFScc7Mc0FZ?= =?Windows-1252?Q?7Sc28iw4U5mB0Sp4ynBj2hv2E45FRwywM7BNNFim9RZyBdauCrqnOluO?= =?Windows-1252?Q?Slh35jlHDn4RB1gDbXDNekzqmpL5chr5eH/inhMp1M5FyRo8bEu4Lf/b?= =?Windows-1252?Q?MhXGWVa5jUhAttmkBw3v1cpphokWjb14XOmD89ey2S9z7bGE27nvvdnC?= =?Windows-1252?Q?7+75wseqsW23EbRpn9dwWxVGAOlVjpEyPkrRIOWxdnrRwAHlh8ux9T2S?= =?Windows-1252?Q?sO/2WrBkKmIjc+sz3mYnUPXsxAxmPUgsbGqZLmrtf4qpdFaYtxcTEgZv?= =?Windows-1252?Q?nrBzxG6IoAWn4j4FHbaAwbteSvCZDHls4SbT8/gbv9Q7TblsSV2KvExe?= =?Windows-1252?Q?iejmLjKxi4tL3j9xiIL/UXPSvHOHlruBwFrDTcGZ0w6d597gifSLhwoc?= =?Windows-1252?Q?bNATltKfcHU3BFJHZchrZjL4pSH9fMvJ6nzOPkgoylKwRPuPWiN9+JHt?= =?Windows-1252?Q?JKX87rFZ8t8JnpHTAjpV40WYLPguVcjKx5F?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2173;6:Qdhrk/v6rCCoBpWFtZpYudnei7057DCRm1fytCMCbi/MhKjwZISMT77A2tMJEIsnK0xNjtOur7JtGTvDpHXnFBAqQZpGBYDJpURTJpuLvRJShisYQuFpF8/5/IZHULDWWC+Jb1CiRr296ZpDoOR+OVS5326IHMNqcIrIeYo+2bPsOcn516APxqrruTFsyh0J1F/IazIoodmsiPG4yJOP/G2oZ/cV/ThOv0uejcceWdjX+M6WU6WBuLBnIZyauCZ5SOJxEmb5rLLAUC2mtnjD9O7Ox8rR6z9LqabAti0VsyhMfPJnStPzyBIChBFre0+49v5Wq8sM0i0uBgec5leD0szXFI46PCiWWJ3xsrL+DuQ8HFX/BTQAwDlEQeKGOmRUpG0017xyHXEASN7PfM40L3VxQgh99OyiyRJCKIndHhU=;5:Gdh84sNvh89oqzMaEaCRssD866w5hjt79I/r0YsdjcpoRHx65p+xl72YBsk1T+PHeQkQRt9g+/ieiu0n20xoP7YbUqvWGLscruZVxdfkHEd/JdZ5oUiHikm5u5dkJf3wkoxjMyi/5BWY4dVC0CH8aQ==;24:sqAwZvy3rhgfupWLfxKjWkhNrpHiWLKJze2ipCBMAxUd+FEkKb4OljRLASHu7XNthRKUJQTN2G0JiKA8WJPHoCB+9BhvKNDKGP2Yf2EIlHE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2173;7:o+HGQIgvcaZPGL75U/Swu1AgxArvgoHzd+Ggm08iIWw3fjOgS/p9NKB/b6eG+gz8HtNyzH6veZ+y5ynY2a7NU0qVswkWDXDEidLhSA1QYH+HgvDOmXp7WXo02tLw6Yy1fe+dLBkorM1673mjY1F8qn7eZdfT0zB4/iBtptPBBlVbWQU0twaih55evuZhQknY0F5eKdOvJeO0kbFnWNCcQyr+o54dJVhkt2lGAcivtwbN2L3fxHXUKftZm/zEj0nskLMwxHQj7FiQtqk2gewDRVEshPsVz8TDyPCwgXJRWGboGUMxs0Lf23BVvbatgftI26O+mPkEAQ2RCo2rqb9LuCCRhTR3L1GP3nHXtKPOOg2PlqP/PenkreuKd4xz2SgIGL1fWlqadA71x0/woI/CvVJMsOVuMBLSpzfemdj4fvQcFWHvUvYi1+6honXXT57CKCrDeKMnjZ6v8Rb3rUk4Zw== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jan 2017 14:06:24.1132 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR07MB2173 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 17.01.2017 14:53, Auger Eric wrote: > Hi Tomasz, > > On 17/01/2017 14:40, Tomasz Nowicki wrote: >> On 11.01.2017 10:41, Eric Auger wrote: >>> This new function checks whether all MSI irq domains >>> implement IRQ remapping. This is useful to understand >>> whether VFIO passthrough is safe with respect to interrupts. >>> >>> On ARM typically an MSI controller can sit downstream >>> to the IOMMU without preventing VFIO passthrough. >>> As such any assigned device can write into the MSI doorbell. >>> In case the MSI controller implements IRQ remapping, assigned >>> devices will not be able to trigger interrupts towards the >>> host. On the contrary, the assignment must be emphasized as >>> unsafe with respect to interrupts. >>> >>> Signed-off-by: Eric Auger >>> Reviewed-by: Marc Zyngier >>> >>> --- >>> v7 -> v8: >>> - remove goto in irq_domain_check_msi_remap >>> - Added Marc's R-b >>> >>> v5 -> v6: >>> - use irq_domain_hierarchical_is_msi_remap() >>> - comment rewording >>> >>> v4 -> v5: >>> - Handle DOMAIN_BUS_FSL_MC_MSI domains >>> - Check parents >>> --- >>> include/linux/irqdomain.h | 1 + >>> kernel/irq/irqdomain.c | 22 ++++++++++++++++++++++ >>> 2 files changed, 23 insertions(+) >>> >>> diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h >>> index bc2f571..188eced 100644 >>> --- a/include/linux/irqdomain.h >>> +++ b/include/linux/irqdomain.h >>> @@ -222,6 +222,7 @@ struct irq_domain *irq_domain_add_legacy(struct >>> device_node *of_node, >>> void *host_data); >>> extern struct irq_domain *irq_find_matching_fwspec(struct irq_fwspec >>> *fwspec, >>> enum irq_domain_bus_token bus_token); >>> +extern bool irq_domain_check_msi_remap(void); >>> extern void irq_set_default_host(struct irq_domain *host); >>> extern int irq_domain_alloc_descs(int virq, unsigned int nr_irqs, >>> irq_hw_number_t hwirq, int node, >>> diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c >>> index 876e131..d889751 100644 >>> --- a/kernel/irq/irqdomain.c >>> +++ b/kernel/irq/irqdomain.c >>> @@ -278,6 +278,28 @@ struct irq_domain >>> *irq_find_matching_fwspec(struct irq_fwspec *fwspec, >>> EXPORT_SYMBOL_GPL(irq_find_matching_fwspec); >>> >>> /** >>> + * irq_domain_check_msi_remap - Check whether all MSI >>> + * irq domains implement IRQ remapping >>> + */ >>> +bool irq_domain_check_msi_remap(void) >>> +{ >>> + struct irq_domain *h; >>> + bool ret = true; >>> + >>> + mutex_lock(&irq_domain_mutex); >>> + list_for_each_entry(h, &irq_domain_list, link) { >>> + if (irq_domain_is_msi(h) && >>> + !irq_domain_hierarchical_is_msi_remap(h)) { >>> + ret = false; >>> + break; >>> + } >>> + } >>> + mutex_unlock(&irq_domain_mutex); >>> + return ret; >>> +} >> >> Above function returns true, even though there is no MSI irq domains. Is >> it intentional ? > From the VFIO integration point of view this is what we want. If there > is no MSI controller in the system, we have no vulnerability with > respect to IRQ assignment and we consider the system as safe. If > requested I can add a comment? > I see. Yes, a comment would be helpful then :) Thanks! Tomasz