From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751748AbdARIkz (ORCPT ); Wed, 18 Jan 2017 03:40:55 -0500 Received: from mail-bn3nam01on0080.outbound.protection.outlook.com ([104.47.33.80]:16320 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751481AbdARIkx (ORCPT ); Wed, 18 Jan 2017 03:40:53 -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: Tomasz Nowicki , 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> <5eb6945b-9d4c-9521-1d5d-10eba633fd59@caviumnetworks.com> CC: , , , , , , , , , , From: Tomasz Nowicki Message-ID: <14bd0114-ed40-d7c2-2d34-065a8de9ed50@caviumnetworks.com> Date: Wed, 18 Jan 2017 09:40:38 +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: <5eb6945b-9d4c-9521-1d5d-10eba633fd59@caviumnetworks.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [31.172.191.173] X-ClientProxiedBy: VI1PR07CA0017.eurprd07.prod.outlook.com (10.163.160.155) To SN1PR07MB2173.namprd07.prod.outlook.com (10.164.47.19) X-MS-Office365-Filtering-Correlation-Id: a643672b-f444-471e-f2d2-08d43f7db4af X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:SN1PR07MB2173; X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2173;3:FgFZ2sLAJCtGLRes+Jzpm1AW0qKZQfqDH1vF3i+GPQ+O0S5tc0aR6SNNzsPEkR9vCqkoaBmiqulZ8FdF0ftcR/ZyIu7EdUw/O88Qcu2AddW58RdjpnWjl1geujgGhNpcWr8V9tCHwTwzKpWgCsdkuGnh1X8TLJXmEU5g6XYADOmB6M6Z6OiSl5aIHt2s+i8MXne6jt2C/8wi6soeoe1CjfCyj3EX9r2XhwzjMnDrIRRwJEL38HdHGZcO2Rs6LGmyJaAVhgNIAqykcB4d06eg2Q==;25:15CM0ZsYnh+AhY7c1fwdaI3ui59b4AVMf1df8HJsWZ1U62NXpBG853JIu6TzU4SpEP/W7BC2yFIHYjDCXWHg5+vu2IrEl0FjHrgcEWWdtrv2pgXxy+ic3nCHbOMX0t8BoPhQUKw5EanqC99nbCxqduxBjh2+bBiV9iKbCpt4M6bZSfrptiqrMOrR8tY8tZd/onrZjB+cypvVaXPeAjSmWt0HAP2HolR/pje9+aRebXghI4mKz4CnurUkVsx2hozk0REswP0bSPM9PujyfpUmXdxohISH4M97NgggJl3t0zNfeg3O1+oyFoSXcju3GLSaxRzjVTVzbnd8tZDmUqBoEyx5T4UBHXq5aSXBeR/nNL9fsmrIj/vY/9SItBWuuJAZT4UefttfuDeHDJcUBgIZIlnAINwikJesjPqcFe84W+bEiMn4PpSYEJ6oHL+J/q9MTObQL4BzFsHcVs+SWgJH2w== X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2173;31:x07BzjZXmksGYLPc+qpLV8MAcDcBjvJZo7BVZfEucIRF8rAhK7VC0kGAXKsCxoQc9j3CfXL7oy5sPigPb3Bx0/qjyBhzfDj2hq1KGgfZN3myFCfttqOsdSkx3ivbzNoZrfjnIEoN6RA9hZ0vCXn7CGFwvzag0Wf0Owitxlo39EPcVeqiXeRxpar0D41DdPW7Kz03Mqt+HPDqW7OTclGUQe90ydaLSSLh8ODJ6vHJkMlRHVfRKZoY8oc90B6a6YmJpuspiwMcN7RDW26GxjrGgw==;20:KoKSZ2mcfZOF7S788Pzoj6m0cVTKe1SuszRusWygoVup4ezcbOzMB3yeEHyMAzKQo104w4IiCEQlJT/NyPvCf32/73xv7LpQvB1VobwmIjJYtZVJ/gKPVjoqouSiQyiWR0s9wpetfls0sVDMBaUQ1pM53O/EAKlhwNALYcv5RrmdcXf4HH37MKBwFfzBQG/HN0vbnyBgyFpMRykGs6Li4i/mCIp/GfRVjg3LRqlFVZfYPgtzIIhVt2m1uT9MJBlLgSm17ieBPUQsfhkEMI0kaO6SMmOUAqh9ry1+aDs0NAAOHlo0dPau9X/xssya3Xh0azhLSMe4c9xAd7Lb1Mxkmh0yGlnPUNKPAhEoZaxj3cZz07GVH2vXr5V+Ougmoh8v3Oy6tsRNa9zItSC3Ti7hRkWROsHfFlBVEeJSF0xklIaz+f1cUA7bSLx2N6xXP2U32BthzD1BglzPDetH3egcZ6zc3rgA1hbEMvvRnhIuzk+0JqVT7XMewlNl3s1lPYxHbkxuk8NnzAaxDm2fPDyOXDvL1M0IXobktT6VoG0uzs+6YK8Vao7kTL4slTtEd10Pr8Tkd3rR47JREqn44a1K95MbGw/Km49w4wuPQQd0DeQ= 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)(20161123560025)(20161123564025)(20161123555025)(20161123562025)(6072148);SRVR:SN1PR07MB2173;BCL:0;PCL:0;RULEID:;SRVR:SN1PR07MB2173; X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2173;4:v/KWWzrRrIZPLTr40eC1GgRcVNOLfiaGJYFYPcQqrbGx+vTDwD8WRaNIaB7n6tSal/xQodfcDaWlcsz1JIrimOilN+O+VfVm5iZxVSWFVI1PEddtOUN1KI+jXhz3o9olyyttOFjc/2hmcdyESsxTVdR6RhbJ2iuXzRX4vaatrN8ebUU0Jj//4pCmzcvvVQdBpHtO4r+jGIepaN75gbyB+3laUiwKuakRxpwiYEvSlWUt+i/9iA+nM38sp+x5miY4KsHz2KBAsCj0VJ44xqiRhRGqNIies/d/tOqJ58/+07iwA1xsJFOEDuYDURw+twn8Fzc4xV8VBBCd/xj32vXuKQ2WneLuNSQ3Iu71l5GQ9K+vlHlMxG4DbDaMTkdOrtOJ9Z7nIIlsiAbU1ksF1WmqftRYgEbKFoJwJy520RQWE/qQ4V7zVFUbpftQaKr+LTJOMTqirp4cR/U+lRmT6fGo3iB4vtn5xK+9KMveiAtIUoWhRRxdenfwfrjRitGeOp+4ojlYEo7Mdthg9wL4Jd/NbgfgHzRw5dPWTASC2WkvxX+20KvTZ2tZeTMz+A/y1LZFAYptiAiz3vKBH/5/iiEYrN6Yco8GQLL5VP/Ytl2VvsOcv4FomroSrPpJusljqyMK X-Forefront-PRVS: 01917B1794 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(6049001)(7916002)(39450400003)(189002)(199003)(24454002)(76176999)(92566002)(229853002)(50986999)(5660300001)(2201001)(53936002)(6116002)(81166006)(4326007)(305945005)(64126003)(54356999)(2950100002)(101416001)(31696002)(65956001)(66066001)(105586002)(3846002)(6666003)(47776003)(25786008)(230700001)(90366009)(81156014)(83506001)(7736002)(5001770100001)(189998001)(8656002)(4001350100001)(23746002)(50466002)(8676002)(54906002)(97736004)(36756003)(106356001)(38730400001)(77096006)(33646002)(2906002)(7416002)(93886004)(31686004)(68736007)(6486002)(42186005)(39060400001)(921003)(2101003)(1121003)(83996005);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR07MB2173;H:[10.0.0.85];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;SN1PR07MB2173;23:WLChzm24m7QsQgyMo25E5ljhrZyaJRA+rtF34?= =?Windows-1252?Q?Wte/nvEGQuS3oAGeSJ9+uobkpl61jEGZKnNs7vz0ja2TM0U5D47jWtl2?= =?Windows-1252?Q?QKT7Ok8Yq3FggM/aPAed8WpLtpNd5EdOm9xwqhMm/NwyiFafch5kQJK+?= =?Windows-1252?Q?o9BF4UYA+fgnJXqW4jBBH0zgn/a2ry/Uo88RDbWCgqFqOtHfQu5Ou+T8?= =?Windows-1252?Q?PzXa00bOPGLcPGZ2Lm8Jzex6JwRHTfhydtQ5tNZMv7IuuMxjt8kg90dJ?= =?Windows-1252?Q?jJvlj7sfmi6M5MBWg3asQoQYa0uhPUfxzbcxUUahisor7Jkhi9ji4gXb?= =?Windows-1252?Q?XdjPWnsxl9sI/uOeWgQfeA5DV9hmJ3UeWUqj/NN2yHgztYS1tzbkSO5b?= =?Windows-1252?Q?FFJ4ygGIIUzJdR6ugRC8QeKTMDlAFXTewopH7gxFEPu0Nztp/Mk1AwnZ?= =?Windows-1252?Q?8HszFVCfZnY9phpqR/pUD6dbT3ImxNs4CtDI2Dev4sRPCOrszjlTJ/c5?= =?Windows-1252?Q?K/b2RJZrHxW8UsIC57FTxDkiI6+oQm01gNouiXWM+R7lv7aqnCMnlK7q?= =?Windows-1252?Q?2i6p86u5OeZaepli0Nj72+LGExuhDeIHmuW7k3blmhky2JXXvZO878u2?= =?Windows-1252?Q?8Ws6edOV57YwDvSD7CTYe04bm2aMDmsw/2P5EaFOtuuy+X3j9Kw3+zW7?= =?Windows-1252?Q?wddyM7dSVqUS+8GHdQE18IRoaDv/Mtm3NRNvfr0JLyYw5D1i2mcQ2XXu?= =?Windows-1252?Q?zndE/bij+5/h7PVKoV7Fqv+nmOYFWCtZH1HZpaFShicv2bjEqe+H0ot9?= =?Windows-1252?Q?15n0cyNbFcpZJnci9981HtwWWK1IMw+1OaxBHC8nOWP94xhQdXH0owyt?= =?Windows-1252?Q?CecDvLoZf1qtP2OOQCMq1sKRqFyj3jnyOsBnqQehnmPKotlVeoSKAUns?= =?Windows-1252?Q?EWnr2eQ2TSSmtWspqIN0KktVDoF2veF1lkmnrFJiwJJHVbTcRR5dPGrx?= =?Windows-1252?Q?sXeBCCwlQcFZtdhFCPBpZ6jsTOmKXr/UqQjIX2tzVk9CkuwDLNjJZC3o?= =?Windows-1252?Q?0bThEEdWmy1mknyX09I+5/a+/W/Aj402KOB6n5h1+ZFbBJA3bz6iZ3Rp?= =?Windows-1252?Q?41AKxpE1ICHtMWu4Hq3WJAx2uN/SEOX306pwY5kauEtA1EV7EBfYDdXX?= =?Windows-1252?Q?pWBAW7jSjaUM/PhAto+6ZKW6+GY1Z0m5QrUyUbzJdtOTD3PiVWRmBr54?= =?Windows-1252?Q?U7dOLa2A2DInselK7XGm8oKdUCT+OAh7Qn7dg6H3ujuLO75FxAe9xKj+?= =?Windows-1252?Q?w0OVc8Ubpw4+ZRhdbOOPqgTMjjw8jjzAhglJPNk2v2jpBaLtfGAzQrwA?= =?Windows-1252?Q?kU+iyRqUKuVJxxGGygqf0cIm7nsIcwUXsv8Bmn/NYjZR/rViuPehbDBl?= =?Windows-1252?Q?rZNKNOxYC/rD9GTTFFBLvvfVU0oSg0pVKkgFl7GqsNZIIJKGczMDd2ti?= =?Windows-1252?Q?37uZcoI08HmtNu568cHW0wbm7+rqe3GTNZT976YzKmbCnFXqlCmjIuwe?= =?Windows-1252?Q?3ZO6Mxgtj6a7WmwIimNFAmwGgU0Yjc/vBfP?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2173;6:kxbcj98sQ1oL1Rnx+fU2Zya0/+VJbEFWjkp07xhskoUnE8MazqzoaFmNf+QMKwtJZsTrEkd3j4OoZn703lQS0pvjvms+4twphyt+cfRdwvNf99cfcIZBAA8OizeA2hv4E7uRjpV2aTFmEttHD6GnsLJ443eV/iPvcg/R2Uzhmo1NqFkKOne+0Zl5SNVuovYvdwiHQQNrePttFaJmahOk/RmBOqyzYvEuGN6SJcV2N0phkhzGA/vFOTdeNK88aFZsYPPDRI/43s5LBONpHcgQFiormO6UiSrtMlCRmlJJKDhnbubNmKdqbslheEu7xuDhcXk2GZRJpSB5U7Fog/HUMy9ECl2GcKCbFvE5hs4n3vDqZ9ty4L5vwlhPkIlpjFTvm7xNs2xoMQiEmaT5YDadKJmvsysz2qOlaq9OZQIH2Hs=;5:JcgZw10BwC44tipiUzYcIQoRQuOmCL5FYqT1HdtXHYdSayv3GhZe+B+VGnltPXNm96NTkM0DgZRJa0ww7afti3oENZlzW+Yewx/vCxejCJ0t2v255AU3+0zVf6c1nytzPSkDYy4V6VHmEGDqI30cEQ==;24:49D1udwE9i5syxUmnE2YN25g2jWr+8ColmoFTsXqVlqKanTbAGFWPj3y23tdEmrt3YEuEOHZLHFDF/61ZoLIkV1J22CB+ovYRFThX3vl2vs= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2173;7:3G7+IYh24hMN3f84qkBpGM7J/0aW1NSXORSApR0PKw5N3SX9UhEY5u38NqDOECQh9fyeblAAJF3oTuBaj79SoSSN3DVq+kvhNyetrYIBz0u+YYceq3F575hnkqA3Gq6ozQrCEfGS4g3AhQxuMT8Yb2Xs3wjVCaDTiALcVMrVDrFI9Gnc3T2SQNM2qV0hXyqjWagXjzdBoB7Q7rqhPb42HcTQmWLbbZ1Y/rRmvnNlcSsnqqJIxxNpVg5yLxmM37/JFLwqLVxtqI5f8b5mNoaMrs+4xGyxttzpMfnJ12pufPLNfhSet0QOmYgwQG1LjWj5d35gvvhLPx5q8F2JDIz0xrgQxOi2VqgfMBtHF64xwQz0WvovNJwd6lEyNdDHNCwVbvKpq3he5WirxizuFroivdBhcZP1dFolKx6VM3JlMQZdT0+nm+gpA2tOCz8lwEE0CrZUGsvIgj5/Fh6dVPeZMA== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2017 08:40:46.5924 (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 15:06, Tomasz Nowicki wrote: > 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! > Anyway: Reviewed-by: Tomasz Nowicki Thanks, Tomasz