From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1aUSmf-0003Ce-Ig for mharc-grub-devel@gnu.org; Sat, 13 Feb 2016 00:30:17 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55598) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aUSmd-0003CT-GY for grub-devel@gnu.org; Sat, 13 Feb 2016 00:30:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aUSma-0002hm-BB for grub-devel@gnu.org; Sat, 13 Feb 2016 00:30:15 -0500 Received: from mail-lf0-x22b.google.com ([2a00:1450:4010:c07::22b]:35013) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aUSma-0002he-22 for grub-devel@gnu.org; Sat, 13 Feb 2016 00:30:12 -0500 Received: by mail-lf0-x22b.google.com with SMTP id l143so63251316lfe.2 for ; Fri, 12 Feb 2016 21:30:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-type:content-transfer-encoding; bh=r2sx+jLJ5N6yZX9Zd+jAImtPXdn9zGTXPtiXgXJdmS0=; b=HK5DdzhycS1nrWn0X2kDk3M8Y/JYqN/YYfD12LbENvDOUeNdTfmACzkQixd+weII46 oWVbxJlnB5uQVzFwdWYKm6P3LljY5mK2EEm0/A6/JoRrJucZ/bE1W8z1eWbvSMhEAooH +QBEai9bjPp0MUldh4eHPM2Ke0rp5c68DNBZzuW0v7WTDjD5MH92gjpnDhi1rxThyikl 31o4plsPUHdsXhHGBNk+jwea5ONOJE07FgAWoXvZBDHeq36aEEIObArf0iTEgtUeYHPG uNm9mzqcWiVv1YmvBfJbXR/SsXdBJS1Mp3dg7CuBEVZov/BAFHLDT7sVd7sueSrSPMZJ HreA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:subject:to:references:cc:from:message-id:date :user-agent:mime-version:in-reply-to:content-type :content-transfer-encoding; bh=r2sx+jLJ5N6yZX9Zd+jAImtPXdn9zGTXPtiXgXJdmS0=; b=GMrVo8moEqOhyD6ZV6BRqhuN6fe4kk6+MjJhEKO7VzxTm8rt7f+f3aMvjuH9OxJQbH stQLZ/7k5UpWERW/EXRDWp0krlc/ja/0uhG89T53mTnbom97PozL90kK+n2FAq9qUttK x4VNhUyv35VnxKn8B89f+toiSMMci98oouKI2U8pNZS97j/D5a0c3cw9K6aLpl+dWZc0 Y9YxapPZ9DBT/BMNxwN6b7ak6uOFdT/k3MhQb6eGmLmVl9j2KWr2ikw2mG6yISUvO1wj B0vih0R8lbFnclUHo+JjukQ6Mp1CFf0JdW4SHndxruEbQO9sfXe5inA2XtRtOF+RrDdp /DSQ== X-Gm-Message-State: AG10YOS/CJQY7Kfz0VCW4vUIx4S6iNl2YPKTYgDPCjYdgo3OK7B4t5nYM0LeTzZoqUGZYg== X-Received: by 10.25.168.138 with SMTP id r132mr1971164lfe.77.1455341411143; Fri, 12 Feb 2016 21:30:11 -0800 (PST) Received: from [192.168.1.41] (ppp109-252-76-159.pppoe.spdop.ru. [109.252.76.159]) by smtp.gmail.com with ESMTPSA id o97sm2313963lfi.25.2016.02.12.21.30.09 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 12 Feb 2016 21:30:10 -0800 (PST) Subject: Re: [PATCH] sparc64: OBP available region contains grub. Start at grub_phys_end To: The development of GNU GRUB References: <1455312923-166743-1-git-send-email-eric.snowberg@oracle.com> From: Andrei Borzenkov Message-ID: <56BEBF61.8040205@gmail.com> Date: Sat, 13 Feb 2016 08:30:09 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1 MIME-Version: 1.0 In-Reply-To: <1455312923-166743-1-git-send-email-eric.snowberg@oracle.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::22b Cc: Eric Snowberg , daniel.kiper@oracle.com X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 13 Feb 2016 05:30:16 -0000 13.02.2016 00:35, Eric Snowberg пишет: > OBP available region contains grub. Start at grub_phys_end. > > This prevents a problem where grub was being overwritten since > grub_phys_start does not start at a zero offset within the memory > map. > > Signed-off-by: Eric Snowberg > --- > grub-core/loader/sparc64/ieee1275/linux.c | 16 ++++++++-------- > 1 files changed, 8 insertions(+), 8 deletions(-) > > diff --git a/grub-core/loader/sparc64/ieee1275/linux.c b/grub-core/loader/sparc64/ieee1275/linux.c > index d44d7a1..67ef048 100644 > --- a/grub-core/loader/sparc64/ieee1275/linux.c > +++ b/grub-core/loader/sparc64/ieee1275/linux.c > @@ -203,20 +203,20 @@ alloc_phys_choose (grub_uint64_t addr, grub_uint64_t len, > if (addr + ctx->size >= end) > return 0; > > - if (addr >= grub_phys_start && addr < grub_phys_end) > - { > - addr = ALIGN_UP (grub_phys_end, FOUR_MB); > - if (addr + ctx->size >= end) > - return 0; > - } > - if ((addr + ctx->size) >= grub_phys_start > - && (addr + ctx->size) < grub_phys_end) > + /* OBP available region contains grub. Start at grub_phys_end. */ > + /* grub_phys_start does not start at the beginning of the memory region */ > + if ((grub_phys_start >= addr && grub_phys_end < end) || > + (addr > grub_phys_start && addr < grub_phys_end)) What about a) overlapping regions? addr < grub_phys_start < end < grub_phys_end b) is is possible for requested region to fit before grub? addr < end < grub_phys_start > { > addr = ALIGN_UP (grub_phys_end, FOUR_MB); > if (addr + ctx->size >= end) > return 0; > } > > + grub_dprintf("loader", > + "addr = 0x%lx grub_phys_start = 0x%lx grub_phys_end = 0x%lx\n", > + addr, grub_phys_start, grub_phys_end); > + > if (loaded) > { > grub_addr_t linux_end = ALIGN_UP (linux_paddr + linux_size, FOUR_MB); >