All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
To: Shannon Zhao <zhaoshenglong@huawei.com>
Cc: ian.campbell@citrix.com,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	peter.huangpeng@huawei.com, xen-devel@lists.xen.org,
	julien.grall@citrix.com, stefano.stabellini@citrix.com,
	shannon.zhao@linaro.org
Subject: Re: [PATCH v4 05/21] arm/acpi: Add basic ACPI initialization
Date: Thu, 28 Jan 2016 12:38:43 +0000	[thread overview]
Message-ID: <alpine.DEB.2.02.1601281237230.23388@kaball.uk.xensource.com> (raw)
In-Reply-To: <56AA0126.5040302@huawei.com>

On Thu, 28 Jan 2016, Shannon Zhao wrote:
> On 2016/1/28 19:27, Stefano Stabellini wrote:
> > On Thu, 28 Jan 2016, Shannon Zhao wrote:
> >> On 2016/1/28 18:44, Stefano Stabellini wrote:
> >>> On Thu, 28 Jan 2016, Shannon Zhao wrote:
> >>>>> On 2016/1/27 22:54, Stefano Stabellini wrote:
> >>>>>>> On Sat, 23 Jan 2016, Shannon Zhao wrote:
> >>>>>>>>>>> From: Shannon Zhao <shannon.zhao@linaro.org>
> >>>>>>>>>>>
> >>>>>>>>>>> acpi_boot_table_init() will be called in start_xen to get the RSDP and
> >>>>>>>>>>> all the table pointers. With this patch, we can get ACPI boot-time
> >>>>>>>>>>> tables from firmware on ARM64.
> >>>>>>>>>>>
> >>>>>>>>>>> Signed-off-by: Naresh Bhat <naresh.bhat@linaro.org>
> >>>>>>>>>>> Signed-off-by: Parth Dixit <parth.dixit@linaro.org>
> >>>>>>>>>>> Signed-off-by: Shannon Zhao <shannon.zhao@linaro.org>
> >>>>>>>>>>> ---
> >>>>>>>>>>>  xen/arch/arm/acpi/Makefile |  1 +
> >>>>>>>>>>>  xen/arch/arm/acpi/boot.c   | 58 ++++++++++++++++++++++++++++++++++++++++++++++
> >>>>>>>>>>>  xen/arch/arm/setup.c       |  4 ++++
> >>>>>>>>>>>  3 files changed, 63 insertions(+)
> >>>>>>>>>>>  create mode 100644 xen/arch/arm/acpi/boot.c
> >>>>>>>>>>>
> >>>>>>>>>>> diff --git a/xen/arch/arm/acpi/Makefile b/xen/arch/arm/acpi/Makefile
> >>>>>>>>>>> index b5be22d..196c40a 100644
> >>>>>>>>>>> --- a/xen/arch/arm/acpi/Makefile
> >>>>>>>>>>> +++ b/xen/arch/arm/acpi/Makefile
> >>>>>>>>>>> @@ -1 +1,2 @@
> >>>>>>>>>>>  obj-y += lib.o
> >>>>>>>>>>> +obj-y += boot.o
> >>>>>>>>>>> diff --git a/xen/arch/arm/acpi/boot.c b/xen/arch/arm/acpi/boot.c
> >>>>>>>>>>> new file mode 100644
> >>>>>>>>>>> index 0000000..1570f7e
> >>>>>>>>>>> --- /dev/null
> >>>>>>>>>>> +++ b/xen/arch/arm/acpi/boot.c
> >>>>>>>>>>> @@ -0,0 +1,58 @@
> >>>>>>>>>>> +/*
> >>>>>>>>>>> + *  ARM Specific Low-Level ACPI Boot Support
> >>>>>>>>>>> + *
> >>>>>>>>>>> + *  Copyright (C) 2001, 2002 Paul Diefenbaugh <paul.s.diefenbaugh@intel.com>
> >>>>>>>>>>> + *  Copyright (C) 2001 Jun Nakajima <jun.nakajima@intel.com>
> >>>>>>>>>>> + *  Copyright (C) 2014, Naresh Bhat <naresh.bhat@linaro.org>
> >>>>>>>>>>> + *  Copyright (C) 2015, Shannon Zhao <shannon.zhao@linaro.org>
> >>>>>>>>>>> + *
> >>>>>>>>>>> + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >>>>>>>>>>> + *
> >>>>>>>>>>> + *  This program is free software; you can redistribute it and/or modify
> >>>>>>>>>>> + *  it under the terms of the GNU General Public License as published by
> >>>>>>>>>>> + *  the Free Software Foundation; either version 2 of the License, or
> >>>>>>>>>>> + *  (at your option) any later version.
> >>>>>>>>>>> + *
> >>>>>>>>>>> + *  This program is distributed in the hope that it will be useful,
> >>>>>>>>>>> + *  but WITHOUT ANY WARRANTY; without even the implied warranty of
> >>>>>>>>>>> + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> >>>>>>>>>>> + *  GNU General Public License for more details.
> >>>>>>>>>>> + *
> >>>>>>>>>>> + *  You should have received a copy of the GNU General Public License
> >>>>>>>>>>> + *  along with this program; if not, write to the Free Software
> >>>>>>>>>>> + *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
> >>>>>>>>>>> + *
> >>>>>>>>>>> + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >>>>>>>>>>> + */
> >>>>>>>>>>> +
> >>>>>>>>>>> +#include <xen/init.h>
> >>>>>>>>>>> +#include <xen/acpi.h>
> >>>>>>>>>>> +
> >>>>>>>>>>> +#include <asm/acpi.h>
> >>>>>>>>>>> +
> >>>>>>>>>>> +/*
> >>>>>>>>>>> + * acpi_boot_table_init() called from setup_arch(), always.
> >>>>>>>>>>> + *      1. find RSDP and get its address, and then find XSDT
> >>>>>>>>>>> + *      2. extract all tables and checksums them all
> >>>>>>>>>>> + *
> >>>>>>>>>>> + * return value: (currently ignored)
> >>>>>>>>>>> + *	0: success
> >>>>>>>>>>> + *	!0: failure
> >>>>>>>>>>> + *
> >>>>>>>>>>> + * We can parse ACPI boot-time tables such as FADT, MADT after
> >>>>>>>>>>> + * this function is called.
> >>>>>>>>>>> + */
> >>>>>>>>>>> +int __init acpi_boot_table_init(void)
> >>>>>>>>>>> +{
> >>>>>>>>>>> +    int error;
> >>>>>>>>>>> +
> >>>>>>>>>>> +    /* Initialize the ACPI boot-time table parser. */
> >>>>>>>>>>> +    error = acpi_table_init();
> >>>>>>>>>>> +    if ( error )
> >>>>>>>>>>> +    {
> >>>>>>>>>>> +        disable_acpi();
> >>>>>>>>>>> +        return error;
> >>>>>>>>>>> +    }
> >>>>>>>>>>> +
> >>>>>>>>>>> +    return 0;
> >>>>>>>>>>> +}
> >>>>>>>>>>> diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
> >>>>>>>>>>> index 0ba601e..c15a09d 100644
> >>>>>>>>>>> --- a/xen/arch/arm/setup.c
> >>>>>>>>>>> +++ b/xen/arch/arm/setup.c
> >>>>>>>>>>> @@ -36,6 +36,7 @@
> >>>>>>>>>>>  #include <xen/pfn.h>
> >>>>>>>>>>>  #include <xen/vmap.h>
> >>>>>>>>>>>  #include <xen/libfdt/libfdt.h>
> >>>>>>>>>>> +#include <xen/acpi.h>
> >>>>>>>>>>>  #include <asm/page.h>
> >>>>>>>>>>>  #include <asm/current.h>
> >>>>>>>>>>>  #include <asm/setup.h>
> >>>>>>>>>>> @@ -749,6 +750,9 @@ void __init start_xen(unsigned long boot_phys_offset,
> >>>>>>>>>>>  
> >>>>>>>>>>>      setup_mm(fdt_paddr, fdt_size);
> >>>>>>>>>>>  
> >>>>>>>>>>> +    /* Parse the ACPI tables for possible boot-time configuration */
> >>>>>>>>>>> +    acpi_boot_table_init();
> >>>>>>> As I asked before, why do you need to call acpi_boot_table_init() before
> >>>>>>> vm_init?  If you called acpi_boot_table_init() after vm_init(), you
> >>>>>>> could implement __acpi_map_table with vmap, which would be better.
> >>>>>>>
> >>>>> Yes, if we call acpi_boot_table_init() before vm_init, it needs to move
> >>>>> end_boot_allocator after acpi_boot_table_init because it will assert in
> >>>>> acpi_os_zalloc_memory.
> >>> Why does acpi_os_zalloc_memory assert exactly?
> >>>
> >>
> >> If call acpi_boot_table_init after end_boot_allocator, system_state !=
> >> SYS_STATE_early_boot,
> > 
> > Could you please point out where end_boot_allocator changes
> > system_state?
> > 
> Oh, sorry, I see. It doesn't change the system_state. I mixed this with
> the patch[1] which change the system_state to SYS_STATE_boot, then will
> cause assert.
> 
> +    system_state = SYS_STATE_boot;
> +
>      vm_init();
> +
> +/*
> + * Parse the ACPI tables for possible boot-time configuration
> + */
> +
> +#if defined(CONFIG_ACPI) && defined(CONFIG_ARM_64)
> +    acpi_boot_table_init();
> +#endif
> 
> But current implementation doesn't do that so it won't cause assert.
> 
> While the true reason to move acpi_boot_table_init before
> end_boot_allocator is NUMA support. There is a discussion about it, see [2].
> 
> [1]http://lists.xenproject.org/archives/html/xen-devel/2015-02/msg00491.html
> [2]http://lists.xenproject.org/archives/html/xen-devel/2015-02/msg01157.html
 
All right, that's a good reason. Please fix the commit message of the
patch that moves end_boot_allocator. Also mention that it's done this
way on x86 too.

  reply	other threads:[~2016-01-28 12:38 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-23  9:19 [PATCH v4 00/21] Add ACPI support for Xen itself on ARM64 Shannon Zhao
2016-01-23  9:19 ` [PATCH v4 01/21] arm/acpi: Emulate io ports for arm Shannon Zhao
2016-01-27 12:52   ` Stefano Stabellini
2016-01-28 12:13     ` Shannon Zhao
2016-01-28 12:35       ` Stefano Stabellini
2016-01-23  9:19 ` [PATCH v4 02/21] arm/acpi: Add arm specific acpi header file Shannon Zhao
2016-01-23  9:19 ` [PATCH v4 03/21] arm/acpi: Add __acpi_map_table function for ARM Shannon Zhao
2016-01-23  9:19 ` [PATCH v4 04/21] arm/acpi: Move end_boot_allocator after acpi_boot_table_init Shannon Zhao
2016-01-27 14:53   ` Stefano Stabellini
2016-01-23  9:19 ` [PATCH v4 05/21] arm/acpi: Add basic ACPI initialization Shannon Zhao
2016-01-27 14:54   ` Stefano Stabellini
2016-01-28 10:33     ` Shannon Zhao
2016-01-28 10:44       ` Stefano Stabellini
2016-01-28 11:18         ` Shannon Zhao
2016-01-28 11:27           ` Stefano Stabellini
2016-01-28 11:53             ` Shannon Zhao
2016-01-28 12:38               ` Stefano Stabellini [this message]
2016-01-23  9:19 ` [PATCH v4 06/21] arm/acpi: Parse FADT table and get PSCI flags Shannon Zhao
2016-01-27 15:41   ` Stefano Stabellini
2016-02-23 12:13     ` Shannon Zhao
2016-02-23 14:37       ` Stefano Stabellini
2016-01-23  9:19 ` [PATCH v4 07/21] arm/acpi: Print GIC information when MADT is parsed Shannon Zhao
2016-01-25 14:49   ` Jan Beulich
2016-01-27 16:50   ` Stefano Stabellini
2016-01-23  9:20 ` [PATCH v4 08/21] arm/acpi: Parse MADT to map logical cpu to MPIDR and get cpu_possible_map Shannon Zhao
2016-01-25 14:53   ` Jan Beulich
2016-01-28 10:40   ` Stefano Stabellini
2016-01-23  9:20 ` [PATCH v4 09/21] arm/acpi: Add ACPI support for SMP initialization Shannon Zhao
2016-01-28 10:56   ` Stefano Stabellini
2016-01-23  9:20 ` [PATCH v4 10/21] acpi/table: Introduce acpi_table_get_entry_madt to get specified entry Shannon Zhao
2016-01-25 15:02   ` Jan Beulich
2016-01-29  7:49     ` Shannon Zhao
2016-01-23  9:20 ` [PATCH v4 11/21] arm: Introduce a generic way to use a device from acpi Shannon Zhao
2016-01-28 12:45   ` Stefano Stabellini
2016-01-23  9:20 ` [PATCH v4 12/21] arm/irq: Drop the DT prefix of the irq line type Shannon Zhao
2016-01-28 12:48   ` Stefano Stabellini
2016-01-23  9:20 ` [PATCH v4 13/21] arm/gic-v2: Add ACPI boot support for GICv2 Shannon Zhao
2016-01-28 12:56   ` Stefano Stabellini
2016-02-25  8:32     ` Shannon Zhao
2016-02-25 10:42       ` Stefano Stabellini
2016-02-25 14:06         ` Shannon Zhao
2016-02-25 14:56           ` Stefano Stabellini
2016-02-25 14:59             ` Stefano Stabellini
2016-01-23  9:20 ` [PATCH v4 14/21] arm/gic-v3: Add ACPI boot support for GICv3 Shannon Zhao
2016-02-02 17:31   ` Stefano Stabellini
2016-01-23  9:20 ` [PATCH v4 15/21] arm/gic: Add ACPI support for GIC preinit Shannon Zhao
2016-02-02 17:36   ` Stefano Stabellini
2016-01-23  9:20 ` [PATCH v4 16/21] arm/irq: Add helper function for setting interrupt type Shannon Zhao
2016-01-23  9:20 ` [PATCH v4 17/21] arm/acpi: Parse GTDT to initialize timer Shannon Zhao
2016-02-02 17:45   ` Stefano Stabellini
2016-01-23  9:20 ` [PATCH v4 18/21] arm/acpi: Add a new ACPI initialized function for UART Shannon Zhao
2016-01-25 15:04   ` Jan Beulich
2016-02-02 17:48   ` Stefano Stabellini
2016-01-23  9:20 ` [PATCH v4 19/21] arm/acpi: Initialize serial port from ACPI SPCR table Shannon Zhao
2016-01-25 15:05   ` Jan Beulich
2016-01-28 12:33     ` Shannon Zhao
2016-01-28 12:59       ` Jan Beulich
2016-02-02 17:51   ` Stefano Stabellini
2016-01-23  9:20 ` [PATCH v4 20/21] arm/fdt: Export device_tree_for_each_node Shannon Zhao
2016-02-02 18:01   ` Stefano Stabellini
2016-01-23  9:20 ` [PATCH v4 21/21] arm/acpi: Add acpi parameter to enable/disable acpi Shannon Zhao
2016-02-02 17:58   ` Stefano Stabellini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.DEB.2.02.1601281237230.23388@kaball.uk.xensource.com \
    --to=stefano.stabellini@eu.citrix.com \
    --cc=ian.campbell@citrix.com \
    --cc=julien.grall@citrix.com \
    --cc=peter.huangpeng@huawei.com \
    --cc=shannon.zhao@linaro.org \
    --cc=stefano.stabellini@citrix.com \
    --cc=xen-devel@lists.xen.org \
    --cc=zhaoshenglong@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.