Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754605AbcDAKY5 (ORCPT ); Fri, 1 Apr 2016 06:24:57 -0400 Received: from szxga03-in.huawei.com ([119.145.14.66]:52498 "EHLO szxga03-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752478AbcDAKYz (ORCPT ); Fri, 1 Apr 2016 06:24:55 -0400 Message-ID: <56FE3E85.60403@huawei.com> Date: Fri, 1 Apr 2016 17:25:25 +0800 From: Shannon Zhao User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: Mark Rutland , Ard Biesheuvel CC: Stefano Stabellini , "devicetree@vger.kernel.org" , "linux-efi@vger.kernel.org" , Catalin Marinas , Will Deacon , "linux-kernel@vger.kernel.org" , "Huangpeng (Peter)" , , "Stefano Stabellini" , Shannon Zhao , "xen-devel@lists.xen.org" , "linux-arm-kernel@lists.infradead.org" , David Vrabel Subject: Re: [PATCH v7 12/17] ARM64: ACPI: Check if it runs on Xen to enable or disable ACPI References: <1458830676-27075-1-git-send-email-shannon.zhao@linaro.org> <1458830676-27075-13-git-send-email-shannon.zhao@linaro.org> <20160329161837.GH6745@arm.com> <20160329163147.GB27223@leverpostej> <56FB7E00.7030400@huawei.com> <20160331124216.GE26532@leverpostej> In-Reply-To: <20160331124216.GE26532@leverpostej> Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.177.16.142] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020201.56FE4C28.00A3,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0, ip=0.0.0.0, so=2013-05-26 15:14:31, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 31a6691ac3242488133407b5ec7850a0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1922 Lines: 45 On 2016/3/31 20:42, Mark Rutland wrote: > On Thu, Mar 31, 2016 at 01:44:08PM +0200, Ard Biesheuvel wrote: >> > The heuristic is there to decide whether some DTB image contains a >> > complete description of the platform, or only some data handed over by >> > the bootloader. Arguably, a DT containing both /chosen and /hypervisor >> > but nothing else can still not describe an actual platform, and >> > whether we execute under Xen or not is completely irrelevant. > I disagree somewhat. > > In general, a /hypervisor node may not be a Xen node, and could > potentially imply some platform description. As /hypervisor is a generic > name up for grabs by any hypervisor, we simply cannot make assumptions > about it. > > As /chosen is a special reserved path that implies a particular binding > and has no compatible string, so checking its path alone is correct. > > While we do check that the /hypervisor node is "xen,xen" compatible > elsewhere, the canonical mechanism of checking for a Xen node (as > opposed to any hypervisor's node) is to check the compatible string. > > If we are going to handle nodes for other hypervisors while treating the > DTB as empty, we need code and discussion regarding said hypervisor. > > Hence, for checking for a Xen /hypervisor node, I would prefer we > checked the compatible string rather than the path. > > An is_xen_node() helper (which could also check that the path is > "/hypervisor") would avoid having redundant, subtly distinct ways of > checking, and would explicitly document precisely what we are checking > for. So if we use is_xen_node(), do we need to call xen_initial_domain() again? I still think here is_xen_node() and xen_initial_domain() have same meaning. Why do we need that? If it really needs is_xen_node(), I will not factor fdt_find_hyper_node() in patch 11 since it uses flat DT while here it's going to use unflatten DT. Thanks, -- Shannon