Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755197AbcKXCSw (ORCPT ); Wed, 23 Nov 2016 21:18:52 -0500 Received: from mail-by2nam03on0132.outbound.protection.outlook.com ([104.47.42.132]:48177 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754256AbcKXCSu (ORCPT ); Wed, 23 Nov 2016 21:18:50 -0500 From: KY Srinivasan To: Bjorn Helgaas , Long Li CC: Haiyang Zhang , Bjorn Helgaas , "devel@linuxdriverproject.org" , "linux-pci@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Long Li Subject: RE: [PATCH] pci-hyperv: use kmalloc to allocate hypercall params buffer Thread-Topic: [PATCH] pci-hyperv: use kmalloc to allocate hypercall params buffer Thread-Index: AQHSOfxEcBc8CofjH0icSlKieFPLAKDnTGCAgAAxO4A= Date: Thu, 24 Nov 2016 02:18:46 +0000 Message-ID: References: <1478642678-31659-1-git-send-email-longli@exchange.microsoft.com> <20161123232027.GM16033@bhelgaas-glaptop.roam.corp.google.com> In-Reply-To: <20161123232027.GM16033@bhelgaas-glaptop.roam.corp.google.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=kys@microsoft.com; x-originating-ip: [2601:600:8c00:1040:dccb:c178:33ca:8437] x-microsoft-exchange-diagnostics: 1;BN3PR03MB2226;7:OLTxRh1uMv8m7U5kDOM8KTDERZByMslWYpKtoZ4DynP4+YfVpiVKD0n4LDIDkMD46OiIpfaRZLSq0hsO7J8Tfdk5Ltnl0SeKyfDYfzvml2LTnQVvr1KULPxZPAlc0RDhdamz7xjf8Ax2ux7kwKp3K/v8Ao6F2aqYM2NaQt33BxTnjFK0GHZbaToKW1plWEXhh9hurqtWGQxzP0GxA5zLqHD2Nk4DexbRTpbPbmpXjJU80BIVicBNo0ggbmZXuEa1uxe632xJz2Kl+vp/0dxbuXuUhqNX4JPsqJdVCm39+JOPfX21QmCH5KZWVYr9SBvO9i0sp5GM/DAmfDxxfK6g6lTgtFBumyNvBtN3Yu5RgiaG/H3BoQBtmt3Sz4bLLKtE x-ms-office365-filtering-correlation-id: a8ddfff3-f64b-4841-27f2-08d4141038d5 x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:BN3PR03MB2226; x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(9452136761055)(189930954265078)(211936372134217)(219752817060721); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(61425038)(6045199)(6040307)(6060326)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6055026)(61426038)(61427038)(6041248)(6061324)(6046074)(6047074)(6072148);SRVR:BN3PR03MB2226;BCL:0;PCL:0;RULEID:;SRVR:BN3PR03MB2226; x-forefront-prvs: 0136C1DDA4 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(6009001)(7916002)(199003)(13464003)(24454002)(189002)(377454003)(1511001)(7846002)(305945005)(68736007)(7736002)(8676002)(106356001)(105586002)(10290500002)(5660300001)(106116001)(76576001)(77096005)(4001430100002)(229853002)(575784001)(99286002)(10090500001)(2900100001)(8990500004)(54356999)(122556002)(7696004)(50986999)(189998001)(86362001)(6862003)(5005710100001)(92566002)(86612001)(6506003)(97736004)(2906002)(81156014)(81166006)(6116002)(2950100002)(8936002)(76176999)(33656002)(102836003)(5001770100001)(2421001)(9686002)(2561002)(3660700001)(74316002)(101416001)(38730400001)(3280700002)(4326007)(6636002)(107886002);DIR:OUT;SFP:1102;SCL:1;SRVR:BN3PR03MB2226;H:DM5PR03MB2490.namprd03.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Nov 2016 02:18:46.8926 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR03MB2226 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by mail.home.local id uAO2IxpE028589 Content-Length: 4879 Lines: 131 > -----Original Message----- > From: Bjorn Helgaas [mailto:helgaas@kernel.org] > Sent: Wednesday, November 23, 2016 3:20 PM > To: Long Li > Cc: KY Srinivasan ; Haiyang Zhang > ; Bjorn Helgaas ; > devel@linuxdriverproject.org; linux-pci@vger.kernel.org; linux- > kernel@vger.kernel.org; Long Li > Subject: Re: [PATCH] pci-hyperv: use kmalloc to allocate hypercall params > buffer > > On Tue, Nov 08, 2016 at 02:04:38PM -0800, Long Li wrote: > > From: Long Li > > > > hv_do_hypercall assumes that we pass a segment from a physically > > continuous buffer. Buffer allocated on the stack may not work if > > CONFIG_VMAP_STACK=y is set. > > > > Change to use kmalloc to allocate this buffer. > > > > The v2 patch adds locking to access the pre-allocated buffer. > > > > Signed-off-by: Long Li > > Reported-by: Haiyang Zhang > > Waiting for a maintainer ack for this. Acked-by: K. Y. Srinivasan > > $ ./scripts/get_maintainer.pl -f drivers/pci/host/pci-hyperv.c > "K. Y. Srinivasan" (maintainer:Hyper-V CORE AND > DRIVERS) > Haiyang Zhang (maintainer:Hyper-V CORE AND > DRIVERS) > ... > > > --- > > drivers/pci/host/pci-hyperv.c | 29 +++++++++++++++++++---------- > > 1 file changed, 19 insertions(+), 10 deletions(-) > > > > diff --git a/drivers/pci/host/pci-hyperv.c b/drivers/pci/host/pci-hyperv.c > > index 763ff87..ca553df 100644 > > --- a/drivers/pci/host/pci-hyperv.c > > +++ b/drivers/pci/host/pci-hyperv.c > > @@ -378,6 +378,8 @@ struct hv_pcibus_device { > > struct msi_domain_info msi_info; > > struct msi_controller msi_chip; > > struct irq_domain *irq_domain; > > + struct retarget_msi_interrupt retarget_msi_interrupt_params; > > + spinlock_t retarget_msi_interrupt_lock;; > > }; > > > > /* > > @@ -774,34 +776,40 @@ void hv_irq_unmask(struct irq_data *data) > > { > > struct msi_desc *msi_desc = irq_data_get_msi_desc(data); > > struct irq_cfg *cfg = irqd_cfg(data); > > - struct retarget_msi_interrupt params; > > + struct retarget_msi_interrupt *params; > > struct hv_pcibus_device *hbus; > > struct cpumask *dest; > > struct pci_bus *pbus; > > struct pci_dev *pdev; > > int cpu; > > + unsigned long flags; > > > > dest = irq_data_get_affinity_mask(data); > > pdev = msi_desc_to_pci_dev(msi_desc); > > pbus = pdev->bus; > > hbus = container_of(pbus->sysdata, struct hv_pcibus_device, > sysdata); > > > > - memset(¶ms, 0, sizeof(params)); > > - params.partition_id = HV_PARTITION_ID_SELF; > > - params.source = 1; /* MSI(-X) */ > > - params.address = msi_desc->msg.address_lo; > > - params.data = msi_desc->msg.data; > > - params.device_id = (hbus->hdev->dev_instance.b[5] << 24) | > > + spin_lock_irqsave(&hbus->retarget_msi_interrupt_lock, flags); > > + > > + params = &hbus->retarget_msi_interrupt_params; > > + memset(params, 0, sizeof(*params)); > > + params->partition_id = HV_PARTITION_ID_SELF; > > + params->source = 1; /* MSI(-X) */ > > + params->address = msi_desc->msg.address_lo; > > + params->data = msi_desc->msg.data; > > + params->device_id = (hbus->hdev->dev_instance.b[5] << 24) | > > (hbus->hdev->dev_instance.b[4] << 16) | > > (hbus->hdev->dev_instance.b[7] << 8) | > > (hbus->hdev->dev_instance.b[6] & 0xf8) | > > PCI_FUNC(pdev->devfn); > > - params.vector = cfg->vector; > > + params->vector = cfg->vector; > > > > for_each_cpu_and(cpu, dest, cpu_online_mask) > > - params.vp_mask |= (1ULL << > vmbus_cpu_number_to_vp_number(cpu)); > > + params->vp_mask |= (1ULL << > vmbus_cpu_number_to_vp_number(cpu)); > > + > > + hv_do_hypercall(HVCALL_RETARGET_INTERRUPT, params, NULL); > > > > - hv_do_hypercall(HVCALL_RETARGET_INTERRUPT, ¶ms, NULL); > > + spin_unlock_irqrestore(&hbus->retarget_msi_interrupt_lock, flags); > > > > pci_msi_unmask_irq(data); > > } > > @@ -2186,6 +2194,7 @@ static int hv_pci_probe(struct hv_device *hdev, > > INIT_LIST_HEAD(&hbus->resources_for_children); > > spin_lock_init(&hbus->config_lock); > > spin_lock_init(&hbus->device_list_lock); > > + spin_lock_init(&hbus->retarget_msi_interrupt_lock); > > sema_init(&hbus->enum_sem, 1); > > init_completion(&hbus->remove_event); > > > > -- > > 2.7.4 > > > > -- > > To unsubscribe from this list: send the line "unsubscribe linux-pci" in > > the body of a message to majordomo@vger.kernel.org > > More majordomo info at > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fvger.ke > rnel.org%2Fmajordomo- > info.html&data=02%7C01%7Ckys%40microsoft.com%7C95f624c719384a83b0 > e308d413f75282%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C6361 > 55400348714262&sdata=iE5j0UF00ExjolDvuilAe9Kxo17TrPScjbkFU%2BA426w > %3D&reserved=0