From: Geoff Levand <geoff@infradead.org>
To: Andre Heider <a.heider@gmail.com>
Cc: cbe-oss-dev@lists.ozlabs.org,
Hector Martin <hector@marcansoft.com>,
linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH part1 v2 3/9] ps3: Get lv1 high memory region from the repository
Date: Tue, 23 Aug 2011 13:53:40 -0700 [thread overview]
Message-ID: <4E541354.6030005@infradead.org> (raw)
In-Reply-To: <1313091073-4572-4-git-send-email-a.heider@gmail.com>
On 08/11/2011 12:31 PM, Andre Heider wrote:
> This lets the bootloader preallocate the high lv1 region and pass its
> location to the kernel through the repository. Thus, it can be used to
> hold the initrd. If the region info doesn't exist, the kernel retains
> the old behavior and attempts to allocate the region itself.
>
> Based on the patch
> "[PS3] Get lv1 high memory region from devtree"
> from Hector Martin <hector@marcansoft.com>
>
> Signed-off-by: Andre Heider <a.heider@gmail.com>
> ---
> arch/powerpc/platforms/ps3/mm.c | 46 ++++++++++++++++++++++++++++++++++++--
> 1 files changed, 43 insertions(+), 3 deletions(-)
>
> diff --git a/arch/powerpc/platforms/ps3/mm.c b/arch/powerpc/platforms/ps3/mm.c
> index c204588..983b719 100644
> --- a/arch/powerpc/platforms/ps3/mm.c
> +++ b/arch/powerpc/platforms/ps3/mm.c
> @@ -78,12 +78,14 @@ enum {
> * @base: base address
> * @size: size in bytes
> * @offset: difference between base and rm.size
> + * @destroy: flag if region should be destroyed upon shutdown
> */
>
> struct mem_region {
> u64 base;
> u64 size;
> unsigned long offset;
> + int destroy;
> };
>
> /**
> @@ -261,6 +263,7 @@ static int ps3_mm_region_create(struct mem_region *r, unsigned long size)
> goto zero_region;
> }
>
> + r->destroy = 1;
> r->offset = r->base - map.rm.size;
> return result;
>
> @@ -279,6 +282,12 @@ static void ps3_mm_region_destroy(struct mem_region *r)
> int result;
>
> DBG("%s:%d: r->base = %llxh\n", __func__, __LINE__, r->base);
> +
> + if (!r->destroy) {
> + DBG("%s:%d: not destroying region\n", __func__, __LINE__);
> + return;
> + }
> +
> if (r->base) {
> result = lv1_release_memory(r->base);
> BUG_ON(result);
> @@ -287,6 +296,29 @@ static void ps3_mm_region_destroy(struct mem_region *r)
> }
> }
>
> +static int ps3_mm_get_repository_highmem(struct mem_region *r)
> +{
> + int result = ps3_repository_read_highmem_info(&r->base, &r->size);
> +
> + if (result)
> + goto zero_region;
> +
> + if (!r->base || !r->size) {
> + result = -1;
> + goto zero_region;
> + }
> +
> + r->offset = r->base - map.rm.size;
> + DBG("%s:%d got high region from repository: %llxh %llxh\n",
> + __func__, __LINE__, r->base, r->size);
> + return 0;
> +
> +zero_region:
> + DBG("%s:%d no high region in repository...\n", __func__, __LINE__);
Three dots implies something more is on its way. I
don't think we need them.
> + r->size = r->base = r->offset = 0;
> + return result;
> +}
> +
> /**
> * ps3_mm_add_memory - hot add memory
> */
> @@ -303,6 +335,12 @@ static int __init ps3_mm_add_memory(void)
>
> BUG_ON(!mem_init_done);
>
> + if (!map.r1.size) {
> + DBG("%s:%d: no region 1, not adding memory\n",
> + __func__, __LINE__);
> + return 0;
> + }
> +
> start_addr = map.rm.size;
> start_pfn = start_addr >> PAGE_SHIFT;
> nr_pages = (map.r1.size + PAGE_SIZE - 1) >> PAGE_SHIFT;
> @@ -1217,9 +1255,11 @@ void __init ps3_mm_init(void)
> BUG_ON(map.rm.base);
> BUG_ON(!map.rm.size);
>
> -
> - /* arrange to do this in ps3_mm_add_memory */
> - ps3_mm_region_create(&map.r1, map.total - map.rm.size);
> + /* check if we got the highmem region from an earlier boot step */
> + if (ps3_mm_get_repository_highmem(&map.r1)) {
> + /* arrange to do this in ps3_mm_add_memory */
> + ps3_mm_region_create(&map.r1, map.total - map.rm.size);
> + }
>
> /* correct map.total for the real total amount of memory we use */
> map.total = map.rm.size + map.r1.size;
next prev parent reply other threads:[~2011-08-23 20:53 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-01 20:02 [PATCH 00/15] ps3: Support more than the OtherOS lpar Andre Heider
2011-08-01 20:02 ` [PATCH 01/15] [PS3] Add udbg driver using the PS3 gelic Ethernet device Andre Heider
2011-08-03 22:32 ` Geoff Levand
2011-08-04 16:35 ` Andre Heider
2011-08-11 12:13 ` [Cbe-oss-dev] " Arnd Bergmann
2011-08-11 17:32 ` Andre Heider
2011-08-31 4:26 ` Benjamin Herrenschmidt
2011-08-01 20:02 ` [PATCH 02/15] [PS3] Get lv1 high memory region from devtree Andre Heider
2011-08-03 22:30 ` Geoff Levand
2011-08-04 1:19 ` Hector Martin
2011-08-04 19:24 ` Geoff Levand
2011-08-06 11:50 ` Andre Heider
2011-08-01 20:02 ` [PATCH 03/15] [PS3] Add region 1 memory early Andre Heider
2011-08-03 22:32 ` Geoff Levand
2011-08-04 0:08 ` Hector Martin
2011-08-04 7:05 ` Geert Uytterhoeven
2011-08-04 11:13 ` Hector Martin
2011-08-04 15:57 ` Geoff Levand
2011-08-01 20:02 ` [PATCH 04/15] ps3: MEMORY_HOTPLUG is not a requirement anymore Andre Heider
2011-08-01 20:02 ` [PATCH 05/15] ps3: Detect the current lpar environment Andre Heider
2011-08-03 22:31 ` Geoff Levand
2011-08-04 16:34 ` Andre Heider
2011-08-01 20:02 ` [PATCH 06/15] ps3flash: Fix region align checks Andre Heider
2011-08-01 20:29 ` [Cbe-oss-dev] " Geert Uytterhoeven
2011-08-01 20:56 ` Andre Heider
2011-08-01 21:00 ` Geert Uytterhoeven
2011-08-01 20:02 ` [PATCH 07/15] ps3flash: Refuse to work in lpars other than OtherOS Andre Heider
2011-08-03 22:34 ` Geoff Levand
2011-08-04 16:40 ` Andre Heider
2011-08-04 19:27 ` [Cbe-oss-dev] " Geert Uytterhoeven
2011-08-06 12:40 ` Andre Heider
2011-08-01 20:02 ` [PATCH 08/15] ps3: Only prealloc the flash bounce buffer for the OtherOS lpar Andre Heider
2011-08-01 20:03 ` [PATCH 09/15] ps3: Limit the number of regions per storage device Andre Heider
2011-08-01 20:30 ` [Cbe-oss-dev] " Geert Uytterhoeven
2011-08-01 20:58 ` Andre Heider
2011-08-06 12:28 ` Andre Heider
2011-08-06 12:47 ` Andre Heider
2011-08-01 20:03 ` [PATCH 10/15] ps3stor_lib: Add support for multiple regions Andre Heider
2011-08-01 20:35 ` Geert Uytterhoeven
2011-08-01 21:01 ` Andre Heider
2011-08-01 20:03 ` [PATCH 11/15] ps3disk: Provide a gendisk per accessible region Andre Heider
2011-08-01 20:03 ` [PATCH 12/15] ps3stor_lib: Add support for storage access flags Andre Heider
2011-08-01 20:03 ` [PATCH 13/15] ps3disk: Use region flags Andre Heider
2011-08-01 20:03 ` [PATCH 14/15] ps3: Add a vflash driver for lpars other than OtherOS Andre Heider
2011-08-01 20:03 ` [PATCH 15/15] ps3: Add a NOR FLASH driver for PS3s without NAND Andre Heider
2011-08-03 22:23 ` [PATCH 00/15] ps3: Support more than the OtherOS lpar Geoff Levand
2011-08-04 16:31 ` Andre Heider
2011-08-11 12:17 ` [Cbe-oss-dev] " Arnd Bergmann
2011-08-11 17:34 ` Andre Heider
2011-08-11 19:31 ` [PATCH part1 v2 0/9] ps3: General improvements and preparation for support " Andre Heider
2011-08-11 19:31 ` [PATCH part1 v2 1/9] Add udbg driver using the PS3 gelic Ethernet device Andre Heider
2011-08-23 20:53 ` Geoff Levand
2011-08-31 16:32 ` [PATCH] [ps3] Add gelic udbg driver Geoff Levand
2011-08-11 19:31 ` [PATCH part1 v2 2/9] ps3: Add helper functions to read highmem info from the repository Andre Heider
2011-08-23 20:53 ` Geoff Levand
2011-08-11 19:31 ` [PATCH part1 v2 3/9] ps3: Get lv1 high memory region " Andre Heider
2011-08-23 20:53 ` Geoff Levand [this message]
2011-08-11 19:31 ` [PATCH part1 v2 4/9] Add region 1 memory early Andre Heider
2011-08-23 20:53 ` Geoff Levand
2011-08-23 22:37 ` [Cbe-oss-dev] " Antonio Ospite
2011-08-24 2:15 ` Geoff Levand
2011-08-11 19:31 ` [PATCH part1 v2 5/9] ps3: MEMORY_HOTPLUG is not a requirement anymore Andre Heider
2011-08-23 20:53 ` Geoff Levand
2011-08-11 19:31 ` [PATCH part1 v2 6/9] ps3: Detect the current lpar Andre Heider
2011-08-23 22:08 ` Geoff Levand
2011-08-11 19:31 ` [PATCH part1 v2 7/9] ps3: Log the detected lpar on startup Andre Heider
2011-08-11 19:31 ` [PATCH part1 v2 8/9] ps3flash: Refuse to work in lpars other than OtherOS Andre Heider
2011-08-23 22:12 ` Geoff Levand
2011-08-11 19:31 ` [PATCH part1 v2 9/9] ps3: Only prealloc the flash bounce buffer for the OtherOS lpar Andre Heider
2011-08-31 4:29 ` [PATCH part1 v2 0/9] ps3: General improvements and preparation for support more than " Benjamin Herrenschmidt
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=4E541354.6030005@infradead.org \
--to=geoff@infradead.org \
--cc=a.heider@gmail.com \
--cc=cbe-oss-dev@lists.ozlabs.org \
--cc=hector@marcansoft.com \
--cc=linuxppc-dev@lists.ozlabs.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).