Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1334443

Re: [PATCH v2 3/9] ACPI: introduce acpi_table_parse2()

From Aleksey Makarov <aleksey.makarov@linaro.org>
Newsgroups linux.kernel
Subject Re: [PATCH v2 3/9] ACPI: introduce acpi_table_parse2()
Date 2016-02-15 14:00 +0100
Message-ID <r2qUX-140-13@gated-at.bofh.it> (permalink)
References <r1q0V-1Ii-5@gated-at.bofh.it> <r1qaC-1Lx-9@gated-at.bofh.it> <r1v0C-5ay-3@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw



On 02/13/2016 02:07 AM, Rafael J. Wysocki wrote:
> On Fri, Feb 12, 2016 at 6:43 PM, Aleksey Makarov
> <aleksey.makarov@linaro.org> wrote:
>> The function acpi_table_parse() has some problems:
>> 1 It can be called only from __init code
>> 2 It does not pass any data to the handler
>> 3 It just throws out the value returned from the handler
> 
> So why are those problems?

1.  We need this function to be non-__init because we need access to
some tables at unpredictable time--it may be before or after
the init functions are removed.  For example, SPCR (Serial Port Console
Redirection) table is needed each time a new console is registered.
It can be quite early (console_initcall) or when a module is inserted.

2. Having an additional pointer to void is very useful because it allows
drivers to pass (local) data to the handler.  Without this, we would need 
to have global data and a mutex as it was done in drivers/acpi/scan.c
(vars ape, acpi_probe_count, acpi_probe_lock).

3. Passing the value returned from the callback is less important as it 
could be modelled by having a (return) field in the data passed to 
the handler.  It is very convenient though.

I use these three properties in my next patch of this series.

>> These issues are addressed in this patch
> 
> How are they addressed?

A new function acpi_table_parse2() has been created that is just 
the old acpi_table_parse() without __init, taking the handler with 
additional data pointer and respecting the value returned from 
the handler.  The old acpi_table_parse() was implemented witht this 
new function.  Dropping __init was made possible by the previous 
patch where the attribute of the function early_acpi_os_unmap_memory()
was changed from __init to __ref and by dropping __init from 
acpi_apic_instance.

I understand why this approach is not good and I am going to fix it.

Thank you
Aleksey Makarov

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH v2 0/9] ACPI: parse the SPCR table Aleksey Makarov <aleksey.makarov@linaro.org> - 2016-02-12 18:50 +0100
  [PATCH v2 6/9] ACPI: add definition of DBG2 subtypes Aleksey Makarov <aleksey.makarov@linaro.org> - 2016-02-12 18:50 +0100
    RE: [PATCH v2 6/9] ACPI: add definition of DBG2 subtypes "Moore, Robert" <robert.moore@intel.com> - 2016-02-12 23:50 +0100
  [PATCH v2 1/9] printk: fix name and type of some variables Aleksey Makarov <aleksey.makarov@linaro.org> - 2016-02-12 18:50 +0100
  [PATCH v2 5/9] ACPI: enable ACPI_SPCR_TABLE on ARM64 Aleksey Makarov <aleksey.makarov@linaro.org> - 2016-02-12 19:00 +0100
  [PATCH v2 4/9] ACPI: parse SPCR and enable matching console Aleksey Makarov <aleksey.makarov@linaro.org> - 2016-02-12 19:00 +0100
    Re: [PATCH v2 4/9] ACPI: parse SPCR and enable matching console Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-02-12 20:00 +0100
  [PATCH v2 3/9] ACPI: introduce acpi_table_parse2() Aleksey Makarov <aleksey.makarov@linaro.org> - 2016-02-12 19:00 +0100
    Re: [PATCH v2 3/9] ACPI: introduce acpi_table_parse2() kbuild test robot <lkp@intel.com> - 2016-02-12 19:50 +0100
    Re: [PATCH v2 3/9] ACPI: introduce acpi_table_parse2() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-02-12 20:00 +0100
      Re: [PATCH v2 3/9] ACPI: introduce acpi_table_parse2() "Rafael J. Wysocki" <rafael@kernel.org> - 2016-02-13 00:10 +0100
        Re: [PATCH v2 3/9] ACPI: introduce acpi_table_parse2() Aleksey Makarov <aleksey.makarov@linaro.org> - 2016-02-15 14:10 +0100
    Re: [PATCH v2 3/9] ACPI: introduce acpi_table_parse2() "Rafael J. Wysocki" <rafael@kernel.org> - 2016-02-13 00:10 +0100
      Re: [PATCH v2 3/9] ACPI: introduce acpi_table_parse2() Aleksey Makarov <aleksey.makarov@linaro.org> - 2016-02-15 14:00 +0100
  [PATCH v2 2/9] ACPI: Change __init to __ref for early_acpi_os_unmap_memory() Aleksey Makarov <aleksey.makarov@linaro.org> - 2016-02-12 19:00 +0100
  [PATCH v2 7/9] serial: pl011: add acpi_match Aleksey Makarov <aleksey.makarov@linaro.org> - 2016-02-12 19:00 +0100

csiph-web