LKML Archive on lore.kernel.org
 help / color / Atom feed
From: Borislav Petkov <bp@alien8.de>
To: Junichi Nomura <j-nomura@ce.jp.nec.com>
Cc: "bhe@redhat.com" <bhe@redhat.com>, Dave Young <dyoung@redhat.com>,
	"fanc.fnst@cn.fujitsu.com" <fanc.fnst@cn.fujitsu.com>,
	"kasong@redhat.com" <kasong@redhat.com>,
	"x86@kernel.org" <x86@kernel.org>,
	"kexec@lists.infradead.org" <kexec@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2] x86/boot: Use EFI setup data if provided
Date: Thu, 28 Mar 2019 16:52:56 +0100
Message-ID: <20190328155256.GP22720@zn.tnic> (raw)
In-Reply-To: <20190328074337.GA9470@jeru.linux.bs1.fc.nec.co.jp>

On Thu, Mar 28, 2019 at 07:43:38AM +0000, Junichi Nomura wrote:
>  /* Search EFI system tables for RSDP. */
> -static acpi_physical_address efi_get_rsdp_addr(void)
> +static acpi_physical_address __efi_get_rsdp_addr(unsigned long config_tables, unsigned int nr_tables, int size, bool efi_64)

Break this line like this:

static acpi_physical_address
__efi_get_rsdp_addr(unsigned long config_tables, unsigned int nr_tables,
                    int size, bool efi_64)


>  {
>  	acpi_physical_address rsdp_addr = 0;

You don't need that variable and can return "table" or 0 after the endif
below.

>  #ifdef CONFIG_EFI
> -	unsigned long systab, systab_tables, config_tables;
> +	int i;
> +
> +	/* Get EFI tables from systab. */
> +	for (i = 0; i < nr_tables; i++) {
> +		acpi_physical_address table;
> +		efi_guid_t guid;
> +
> +		config_tables += size;
> +
> +		if (efi_64) {
> +			efi_config_table_64_t *tbl = (efi_config_table_64_t *)config_tables;
> +
> +			guid  = tbl->guid;
> +			table = tbl->table;
> +
> +			if (!IS_ENABLED(CONFIG_X86_64) && table >> 32) {
> +				debug_putstr("Error getting RSDP address: EFI config table located above 4GB.\n");
> +				return 0;
> +			}
> +		} else {
> +			efi_config_table_32_t *tbl = (efi_config_table_32_t *)config_tables;
> +
> +			guid  = tbl->guid;
> +			table = tbl->table;
> +		}
> +
> +		if (!(efi_guidcmp(guid, ACPI_TABLE_GUID)))
> +			rsdp_addr = table;
> +		else if (!(efi_guidcmp(guid, ACPI_20_TABLE_GUID)))
> +			return table;
> +	}
> +#endif
> +	return rsdp_addr;
> +}
> +
> +static acpi_physical_address kexec_get_rsdp_addr(void)
> +{
> +#ifdef CONFIG_EFI
> +	struct efi_setup_data *esd;
> +	efi_system_table_64_t *systab;
> +	struct efi_info *ei;
> +	char *sig;

Please sort function local variables declaration in a reverse christmas
tree order:

	<type A> longest_variable_name;
	<type B> shorter_var_name;
	<type C> even_shorter;
	<type D> i;

> +
> +	esd = (struct efi_setup_data *) efi_get_kexec_setup_data_addr();
> +	if (!esd)
> +		return 0;

<---- newline here.

> +	if (!esd->tables) {
> +		debug_putstr("Wrong kexec SETUP_EFI data.\n");
> +		return 0;
> +	}
> +
> +	ei = &boot_params->efi_info;
> +	sig = (char *)&ei->efi_loader_signature;
> +	if (strncmp(sig, EFI64_LOADER_SIGNATURE, 4)) {
> +		debug_putstr("Wrong EFI loader signature.\n");

  "Wrong kexec EFI loader signature."

so that it differs from the other error message and we can know where we
are when debugging.

> +		return 0;
> +	}
> +
> +	/* Get systab from boot params. */
> +	systab = (efi_system_table_64_t *) (ei->efi_systab | ((__u64)ei->efi_systab_hi << 32));
> +	if (!systab)
> +		error("EFI system table not found.");

Ditto.

> +
> +	return __efi_get_rsdp_addr((unsigned long) esd->tables, systab->nr_tables, sizeof(efi_config_table_64_t), true);

You can easily break that line - no need to let it stick out.

> +#else
> +	return 0;
> +#endif
> +}

Other than those nitpicks, yes, it looks ok to me. Please send a proper
patch.

Thx.

-- 
Regards/Gruss,
    Boris.

Good mailing practices for 400: avoid top-posting and trim the reply.

  reply index

Thread overview: 90+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-22 11:03 [PATCH] " Junichi Nomura
2019-03-22 15:23 ` Borislav Petkov
2019-03-25  0:27   ` Junichi Nomura
2019-03-25  6:01     ` Dave Young
2019-03-25  6:19       ` Dave Young
2019-03-25  6:45         ` Kairui Song
2019-03-25  6:47         ` Junichi Nomura
2019-03-25  6:59           ` Dave Young
2019-03-25  8:27             ` [PATCH v2] " Junichi Nomura
2019-03-25  8:54               ` Boris Petkov
2019-03-25  9:25                 ` [PATCH v2] x86/boot: Don't try to search RSDP from EFI when kexec-booted Junichi Nomura
2019-03-25 10:15                 ` [PATCH v2] x86/boot: Use EFI setup data if provided Dave Young
2019-03-25 10:36                   ` Junichi Nomura
2019-03-25 11:16                     ` Dave Young
2019-03-25 12:01                     ` Borislav Petkov
2019-03-25 12:23                       ` Dave Young
2019-03-25 12:32                         ` Borislav Petkov
2019-03-25 23:10                           ` Junichi Nomura
2019-03-26 12:46                             ` Dave Young
2019-03-26 13:57                             ` Borislav Petkov
2019-03-27  1:48                               ` bhe
2019-03-27 12:14                                 ` Borislav Petkov
2019-03-28  4:17                                 ` Junichi Nomura
2019-03-28  6:26                                   ` Chao Fan
2019-03-28  6:43                                   ` bhe
2019-03-28  7:43                                     ` Junichi Nomura
2019-03-28 15:52                                       ` Borislav Petkov [this message]
2019-03-29  3:05                                         ` Junichi Nomura
2019-03-29  8:39                                           ` Borislav Petkov
2019-03-29  9:05                                             ` Chao Fan
2019-03-29  9:16                                               ` Borislav Petkov
2019-03-29  9:37                                                 ` Junichi Nomura
2019-03-29  9:44                                                   ` Chao Fan
2019-03-29  9:56                                                     ` Junichi Nomura
2019-03-29  7:20                                         ` [PATCH] x86/boot: Use efi_setup_data for searching RSDP on kexec-ed kernel Junichi Nomura
2019-03-29  7:49                                           ` bhe
2019-03-29  8:29                                           ` Chao Fan
2019-03-29  8:39                                             ` Junichi Nomura
2019-03-29  9:18                                               ` Chao Fan
2019-03-29  9:16                                             ` bhe
2019-03-29  9:20                                               ` Chao Fan
2019-04-01  0:08                                         ` [PATCH v2] " Junichi Nomura
2019-04-02  9:41                                           ` Chao Fan
2019-04-02  9:53                                             ` Junichi Nomura
2019-04-02 11:06                                               ` Chao Fan
2019-04-02 10:22                                                 ` Junichi Nomura
2019-04-02 12:03                                           ` Dave Young
2019-04-03  5:35                                             ` Chao Fan
2019-04-03  5:53                                               ` Dave Young
2019-04-03  6:39                                                 ` Dave Young
2019-04-03  7:30                                                   ` Chao Fan
2019-04-03  7:50                                                     ` bhe
2019-04-03  8:23                                                       ` Dave Young
2019-04-03  8:26                                                         ` Dave Young
2019-04-03 16:14                                                           ` Borislav Petkov
2019-04-04  1:02                                                             ` Chao Fan
2019-04-03  9:28                                                       ` Chao Fan
2019-04-03  7:21                                                 ` Chao Fan
2019-04-03  8:09                                                   ` Dave Young
2019-04-03  8:23                                                     ` Chao Fan
2019-04-03  9:02                                                       ` Chao Fan
2019-04-03  9:39                                                         ` Chao Fan
2019-04-04  1:23                                                         ` Junichi Nomura
2019-04-04  2:52                                                           ` Dave Young
2019-04-04  3:00                                                             ` bhe
2019-04-04  3:10                                                               ` bhe
2019-04-04  3:22                                                                 ` Dave Young
2019-04-04  6:41                                                                   ` Dave Young
2019-04-04  7:20                                                                     ` Chao Fan
2019-04-04  7:41                                                                       ` Dave Young
2019-04-04  7:48                                                                         ` Chao Fan
2019-04-04 12:22                                                                         ` Borislav Petkov
2019-04-04 14:08                                                                           ` Dave Young
2019-04-03  8:18                                                   ` Dave Young
2019-04-02 10:25                                         ` [PATCH v3] " Junichi Nomura
2019-04-04  7:32                                           ` Dave Young
2019-04-04 12:24                                             ` Borislav Petkov
2019-04-04 14:12                                               ` Dave Young
2019-04-04 14:41                                                 ` Borislav Petkov
2019-04-05  1:36                                                   ` Dave Young
2019-04-05  4:19                                             ` Junichi Nomura
2019-03-28 23:11                                       ` [PATCH v2] x86/boot: Use EFI setup data if provided bhe
2019-03-29  3:34                                         ` Junichi Nomura
2019-03-29  3:52                                           ` bhe
2019-03-29  5:16                                             ` Junichi Nomura
2019-03-25  7:27   ` [PATCH] " Baoquan He
2019-03-25  7:53     ` Borislav Petkov
2019-03-25  8:21       ` Baoquan He
2019-03-25  8:43         ` Thomas Gleixner
2019-03-25  9:03           ` Baoquan He

Reply instructions:

You may reply publically 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=20190328155256.GP22720@zn.tnic \
    --to=bp@alien8.de \
    --cc=bhe@redhat.com \
    --cc=dyoung@redhat.com \
    --cc=fanc.fnst@cn.fujitsu.com \
    --cc=j-nomura@ce.jp.nec.com \
    --cc=kasong@redhat.com \
    --cc=kexec@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=x86@kernel.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

LKML Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/lkml/0 lkml/git/0.git
	git clone --mirror https://lore.kernel.org/lkml/1 lkml/git/1.git
	git clone --mirror https://lore.kernel.org/lkml/2 lkml/git/2.git
	git clone --mirror https://lore.kernel.org/lkml/3 lkml/git/3.git
	git clone --mirror https://lore.kernel.org/lkml/4 lkml/git/4.git
	git clone --mirror https://lore.kernel.org/lkml/5 lkml/git/5.git
	git clone --mirror https://lore.kernel.org/lkml/6 lkml/git/6.git
	git clone --mirror https://lore.kernel.org/lkml/7 lkml/git/7.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 lkml lkml/ https://lore.kernel.org/lkml \
		linux-kernel@vger.kernel.org
	public-inbox-index lkml

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-kernel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git