The Linux Kernel Mailing List
 help / color / mirror / Atom feed
From: Felipe Balbi <balbi@ti.com>
To: Olof Johansson <olof@lixom.net>
Cc: <linux-kernel@vger.kernel.org>, <keescook@chromium.org>,
	<bleung@chromium.org>
Subject: Re: [PATCH] platform/chrome: Add pstore platform_device
Date: Mon, 25 Nov 2013 13:52:50 -0600	[thread overview]
Message-ID: <20131125195250.GD18046@saruman.home> (raw)
In-Reply-To: <1385408226-22369-1-git-send-email-olof@lixom.net>

[-- Attachment #1: Type: text/plain, Size: 4900 bytes --]

Hi,

On Mon, Nov 25, 2013 at 11:37:06AM -0800, Olof Johansson wrote:
> Add the ramoops pstore device so that we get logs of panics across reboots.
> 
> Signed-off-by: Olof Johansson <olof@lixom.net>
> ---
> 
>  drivers/platform/chrome/Kconfig           |  14 +++++
>  drivers/platform/chrome/Makefile          |   1 +
>  drivers/platform/chrome/chromeos_pstore.c | 101 ++++++++++++++++++++++++++++++
>  3 files changed, 116 insertions(+)
>  create mode 100644 drivers/platform/chrome/chromeos_pstore.c
> 
> diff --git a/drivers/platform/chrome/Kconfig b/drivers/platform/chrome/Kconfig
> index b13303e75a34..06c53c8132ad 100644
> --- a/drivers/platform/chrome/Kconfig
> +++ b/drivers/platform/chrome/Kconfig
> @@ -25,4 +25,18 @@ config CHROMEOS_LAPTOP
>  	  If you have a supported Chromebook, choose Y or M here.
>  	  The module will be called chromeos_laptop.
>  
> +config CHROMEOS_PSTORE
> +	tristate "Chrome OS pstore support"
> +	---help---
> +	  This module instantiates the persistent storage on x86 ChromeOS
> +	  devices. It can be used to store away console logs and crash
> +	  information across reboots.
> +
> +	  The range of memory used is 0xf00000-0x1000000, tradionally the
> +	  memory used to back VGA controller memory.
> +
> +	  If you have a supported Chromebook, choose Y or M here.
> +	  The module will be called chromeos_pstore.
> +
> +
>  endif # CHROMEOS_PLATFORMS
> diff --git a/drivers/platform/chrome/Makefile b/drivers/platform/chrome/Makefile
> index 015e9195e226..2b860ca7450f 100644
> --- a/drivers/platform/chrome/Makefile
> +++ b/drivers/platform/chrome/Makefile
> @@ -1,2 +1,3 @@
>  
>  obj-$(CONFIG_CHROMEOS_LAPTOP)	+= chromeos_laptop.o
> +obj-$(CONFIG_CHROMEOS_PSTORE)	+= chromeos_pstore.o
> diff --git a/drivers/platform/chrome/chromeos_pstore.c b/drivers/platform/chrome/chromeos_pstore.c
> new file mode 100644
> index 000000000000..e0e0e65cf442
> --- /dev/null
> +++ b/drivers/platform/chrome/chromeos_pstore.c
> @@ -0,0 +1,101 @@
> +/*
> + *  chromeos_pstore.c - Driver to instantiate Chromebook ramoops device
> + *
> + *  Copyright (C) 2013 Google, Inc.
> + *
> + *  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, version 2 of the License.
> + */
> +
> +#include <linux/dmi.h>
> +#include <linux/module.h>
> +#include <linux/platform_device.h>
> +#include <linux/pstore_ram.h>
> +
> +static struct dmi_system_id chromeos_pstore_dmi_table[] __initdata = {
> +	{
> +		/*
> +		 * Today all Chromebooks/boxes ship with GOOGLE as vendor and
> +		 * coreboot as bios vendor. No other systems with this
> +		 * combination are known to date.
> +		 */
> +		.matches = {
> +			DMI_MATCH(DMI_SYS_VENDOR, "GOOGLE"),
> +			DMI_MATCH(DMI_BIOS_VENDOR, "coreboot"),
> +		},
> +	},
> +	{
> +		/*
> +		 * The first Samsung Chromebox and Chromebook Series 5 550 use
> +		 * coreboot but with Samsung as the system vendor.
> +		 */
> +		.matches = {
> +			DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG"),
> +			DMI_MATCH(DMI_BIOS_VENDOR, "coreboot"),
> +		},
> +	},
> +	{
> +		/* x86-alex, the first Samsung Chromebook. */
> +		.matches = {
> +			DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
> +			DMI_MATCH(DMI_PRODUCT_NAME, "Alex"),
> +		},
> +	},
> +	{
> +		/* x86-mario, the Cr-48 pilot device from Google. */
> +		.matches = {
> +			DMI_MATCH(DMI_SYS_VENDOR, "IEC"),
> +			DMI_MATCH(DMI_PRODUCT_NAME, "Mario"),
> +		},
> +	},
> +	{
> +		/* x86-zgb, the first Acer Chromebook. */
> +		.matches = {
> +			DMI_MATCH(DMI_SYS_VENDOR, "ACER"),
> +			DMI_MATCH(DMI_PRODUCT_NAME, "ZGB"),
> +		},
> +	},
> +	{ }
> +};
> +MODULE_DEVICE_TABLE(dmi, chromeos_pstore_dmi_table);

if you have this ...

> +/*
> + * On x86 chromebooks/boxes, the firmware will keep the legacy VGA memory
> + * range untouched across reboots, so we use that to store our pstore
> + * contents for panic logs, etc.
> + */
> +static struct ramoops_platform_data chromeos_ramoops_data = {
> +	.mem_size	= 0x100000,
> +	.mem_address	= 0xf00000,
> +	.record_size	= 0x20000,
> +	.console_size	= 0x20000,
> +	.ftrace_size	= 0x20000,
> +	.dump_oops	= 1,
> +};
> +
> +static struct platform_device chromeos_ramoops = {
> +	.name = "ramoops",
> +	.dev = {
> +		.platform_data = &chromeos_ramoops_data,
> +	},
> +};
> +
> +static int __init chromeos_pstore_init(void)
> +{
> +	if (dmi_check_system(chromeos_pstore_dmi_table))

is this check really necessary ? I would assume that your probe would
only be called if the device matches the dmi MODULE_DEVICE_TABLE().

Except that you don't have a probe function which is quite odd. Also,
there's nothing using chromeos_ramoops_data, how does this work ?

cheers

-- 
balbi

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

  reply	other threads:[~2013-11-25 19:53 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-25 19:37 [PATCH] platform/chrome: Add pstore platform_device Olof Johansson
2013-11-25 19:52 ` Felipe Balbi [this message]
2013-11-25 19:59   ` Olof Johansson
2013-11-25 20:03     ` Felipe Balbi
2013-11-25 20:04 ` Randy Dunlap
2013-11-25 20:49   ` Olof Johansson

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=20131125195250.GD18046@saruman.home \
    --to=balbi@ti.com \
    --cc=bleung@chromium.org \
    --cc=keescook@chromium.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=olof@lixom.net \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox