Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756717AbcCaMmg (ORCPT ); Thu, 31 Mar 2016 08:42:36 -0400 Received: from foss.arm.com ([217.140.101.70]:54368 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756604AbcCaMmd (ORCPT ); Thu, 31 Mar 2016 08:42:33 -0400 Date: Thu, 31 Mar 2016 13:42:16 +0100 From: Mark Rutland To: Ard Biesheuvel Cc: Stefano Stabellini , Shannon Zhao , "devicetree@vger.kernel.org" , "linux-efi@vger.kernel.org" , Catalin Marinas , Will Deacon , "linux-kernel@vger.kernel.org" , "Huangpeng (Peter)" , julien.grall@arm.com, 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 Message-ID: <20160331124216.GE26532@leverpostej> 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> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1484 Lines: 34 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. Thanks, Mark.