Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754004AbcC3Pbm (ORCPT ); Wed, 30 Mar 2016 11:31:42 -0400 Received: from userp1040.oracle.com ([156.151.31.81]:44995 "EHLO userp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752770AbcC3Pbl (ORCPT ); Wed, 30 Mar 2016 11:31:41 -0400 Subject: Re: [PATCH v4] sparc/PCI: Fix for panic while enabling SR-IOV To: David Miller References: <1458849742-162399-1-git-send-email-babu.moger@oracle.com> <20160329.205717.1170899993877119259.davem@davemloft.net> Cc: bhelgaas@google.com, wangyijing@huawei.com, sowmini.varadhan@oracle.com, jiang.liu@linux.intel.com, eric.snowberg@oracle.com, yinghai@kernel.org, dan.j.williams@intel.com, sparclinux@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, ethan.zhao@oracle.com From: Babu Moger Organization: Oracle Corporation Message-ID: <56FBF146.3020701@oracle.com> Date: Wed, 30 Mar 2016 10:31:18 -0500 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 MIME-Version: 1.0 In-Reply-To: <20160329.205717.1170899993877119259.davem@davemloft.net> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-Source-IP: userv0021.oracle.com [156.151.31.71] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2199 Lines: 62 Hi David, On 3/29/2016 7:57 PM, David Miller wrote: > From: Babu Moger > Date: Thu, 24 Mar 2016 13:02:22 -0700 > >> We noticed this panic while enabling SR-IOV in sparc. > ... >> SR-IOV code looks for arch specific data while enabling >> VFs. When VF device is added, driver probe function makes set >> of calls to initialize the pci device. Because the VF device is >> added different way than the normal PF device(which happens via >> of_create_pci_dev for sparc), some of the arch specific initialization >> does not happen for VF device. That causes panic when archdata is >> accessed. >> >> To fix this, I have used already defined weak function >> pcibios_setup_device to copy archdata from PF to VF. >> Also verified the fix. >> >> Signed-off-by: Babu Moger >> Signed-off-by: Sowmini Varadhan >> Reviewed-by: Ethan Zhao > > Looks good, applied and queued up for -stable, thanks. Thanks. > > Just a note, I am assuming that the VFs are not instantiated in the > device tree. Because when you just memcpy the arch data over from the > PF, one thing we end up doing is using the device node of the PF. No. VFs are not instantiated in device tree(/proc/device-tree) > > I slightly cringed at the memcpy, because at least one of these > pointers are to objects which are reference counted, the OF device. > > Generally speaking we don't really support hot-plug for OF probed > devices, but if we did all of the device tree pointers have to be > refcounted properly. > > So in the long term that whole sequence where we go: > > struct dev_archdata *sd; > ... > sd = &dev->dev.archdata; > sd->iommu = pbm->iommu; > sd->stc = &pbm->stc; > sd->host_controller = pbm; > sd->op = op = of_find_device_by_node(node); > sd->numa_node = pbm->numa_node; > > should be encapsulated into a helper function, and both > of_create_pci_dev() and this new pcibios_setup_device() can > invoke it. > Yes. Agree. We need to refactor the whole of_create_pci_dev path to support hot-plug for the long term. I will start looking at it. For now we should be fine with the current patch. thanks