All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@kernel.org>
To: Juergen Gross <jgross@suse.com>
Cc: linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org,
	x86@kernel.org, boris.ostrovsky@oracle.com, hpa@zytor.com,
	tglx@linutronix.de, mingo@redhat.com, corbet@lwn.net,
	rjw@rjwysocki.net, lenb@kernel.org, linux-acpi@vger.kernel.org
Subject: Re: [PATCH v2 2/3] x86/acpi: take rsdp address for boot params if available
Date: Fri, 8 Dec 2017 08:05:05 +0100	[thread overview]
Message-ID: <20171208070505.25j6dtun555v6ofo@gmail.com> (raw)
In-Reply-To: <20171207122821.30158-3-jgross@suse.com>


* Juergen Gross <jgross@suse.com> wrote:

> In case the rsdp address in struct boot_params is specified don't try
> to find the table by searching, but take the address directly as set
> by the boot loader.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>
> ---
>  drivers/acpi/osl.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
> index 3bb46cb24a99..3b25e2ad7d75 100644
> --- a/drivers/acpi/osl.c
> +++ b/drivers/acpi/osl.c
> @@ -45,6 +45,10 @@
>  #include <linux/uaccess.h>
>  #include <linux/io-64-nonatomic-lo-hi.h>
>  
> +#ifdef CONFIG_X86
> +#include <asm/setup.h>
> +#endif
> +
>  #include "internal.h"
>  
>  #define _COMPONENT		ACPI_OS_SERVICES
> @@ -195,6 +199,10 @@ acpi_physical_address __init acpi_os_get_root_pointer(void)
>  	if (acpi_rsdp)
>  		return acpi_rsdp;
>  #endif
> +#ifdef CONFIG_X86
> +	if (boot_params.hdr.acpi_rsdp_addr)
> +		return boot_params.hdr.acpi_rsdp_addr;
> +#endif

Argh, that's typical short sighted hackery, layering violations and general 
eyesore combined into a single patch ...

Those #ifdefs are a disgrace, plus why should generic ACPI code include platform 
details like boot_params.hdr/acpi_rsdp_addr? It's also not very extensible to 
non-x86 - so someone will have to redo this work for ARM64 as well in the future 
...

So how about doing it right:

1)

Add a __weak acpi_arch_get_root_pointer() __weak function to drivers/acpi/osl.c:


__weak acpi_physical_address acpi_arch_get_root_pointer(void)
{
	return 0;
}

2)

use it in acpi_os_get_root_pointer():

	...
	pa = acpi_arch_get_root_pointer();
	if (pa)
		return pa;
	...

3)

Override the default variant in x86's acpi.c via something like:

acpi_physical_address acpi_arch_get_root_pointer(void)
{
	return boot_params.hdr.acpi_rsdp_addr;
}

4)

Add this to arch/x86/include/asm/acpi.h:

extern acpi_physical_address acpi_arch_get_root_pointer(void);

5)

Add #include <asm/acpi.h> to drivers/acpi/osl.c.


That looks much cleaner, has no layering violations and is infinitely more 
extensible, right?

Thanks,

	Ingo

  reply	other threads:[~2017-12-08  7:05 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-07 12:28 [PATCH v2 0/3] x86: make rsdp address accessible via boot params Juergen Gross
2017-12-07 12:28 ` [PATCH v2 1/3] x86/boot: add acpi rsdp address to setup_header Juergen Gross
2017-12-08  7:16   ` Ingo Molnar
2017-12-08  8:28     ` [Xen-devel] " Jan Beulich
2017-12-08  8:28       ` Jan Beulich
2017-12-08  8:35       ` Ingo Molnar
2017-12-08  8:35       ` [Xen-devel] " Ingo Molnar
2017-12-08  8:35         ` Ingo Molnar
2017-12-08  8:28     ` Jan Beulich
2017-12-08  8:36     ` Juergen Gross
2017-12-08  8:36     ` Juergen Gross
2017-12-08  8:48       ` Ingo Molnar
2017-12-08  8:52         ` Juergen Gross
2017-12-08  8:52         ` Juergen Gross
2017-12-08  8:48       ` Ingo Molnar
2017-12-08  7:16   ` Ingo Molnar
2017-12-07 12:28 ` Juergen Gross
2017-12-07 12:28 ` [PATCH v2 2/3] x86/acpi: take rsdp address for boot params if available Juergen Gross
2017-12-07 12:28 ` Juergen Gross
2017-12-08  7:05   ` Ingo Molnar [this message]
2017-12-08  8:26     ` Juergen Gross
2017-12-08  8:26     ` Juergen Gross
2017-12-08 11:14     ` Juergen Gross
2017-12-08 11:26       ` Ingo Molnar
2017-12-08 11:51         ` Juergen Gross
2017-12-08 11:51         ` Juergen Gross
2017-12-08 11:26       ` Ingo Molnar
2017-12-08 11:14     ` Juergen Gross
2017-12-08  7:05   ` Ingo Molnar
2017-12-07 12:28 ` [PATCH v2 3/3] x86/xen: supply rsdp address in boot params for pvh guests Juergen Gross
2017-12-08  7:22   ` Ingo Molnar
2017-12-08  7:22   ` Ingo Molnar
2017-12-08  8:40     ` Juergen Gross
2017-12-08  8:40     ` Juergen Gross
2017-12-07 12:28 ` Juergen Gross

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=20171208070505.25j6dtun555v6ofo@gmail.com \
    --to=mingo@kernel.org \
    --cc=boris.ostrovsky@oracle.com \
    --cc=corbet@lwn.net \
    --cc=hpa@zytor.com \
    --cc=jgross@suse.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=rjw@rjwysocki.net \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    --cc=xen-devel@lists.xenproject.org \
    /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.