From patchwork Sat Apr 6 23:09:23 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 10888283 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1687A1669 for ; Sat, 6 Apr 2019 23:09:38 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D9C0F27FB0 for ; Sat, 6 Apr 2019 23:09:37 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id CD02728382; Sat, 6 Apr 2019 23:09:37 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5891727FB0 for ; Sat, 6 Apr 2019 23:09:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726713AbfDFXJf (ORCPT ); Sat, 6 Apr 2019 19:09:35 -0400 Received: from mout.gmx.net ([212.227.15.18]:47329 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726633AbfDFXJf (ORCPT ); Sat, 6 Apr 2019 19:09:35 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1554592166; bh=+Zm08DoAooomgpyHGsYjUJBqHgo4LPlllKkB73n2GqM=; h=X-UI-Sender-Class:Date:From:To:Subject; b=fIcFPJrgi8p/e28fjTc82gL6/GXrieUWy3hGkLTX4/Ua3xK8CNRTE6MNxG1oH/2lr xi/GYAgef2nFh5WmJuAzgFCFDHZPGLPhV58xRlQ/BVNnIw61TyaVubWhTuEwE1N+wV hlVgRpM3xBcSjMZywzOHGPG/qDqCuZq+/lAB8ljw= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from ls3530.dellerweb.de ([92.116.164.5]) by mail.gmx.com (mrgmx002 [212.227.17.190]) with ESMTPSA (Nemesis) id 0LmKOI-1geOto0pBC-00ZxOc; Sun, 07 Apr 2019 01:09:26 +0200 Date: Sun, 7 Apr 2019 01:09:23 +0200 From: Helge Deller To: linux-parisc@vger.kernel.org, James Bottomley , John David Anglin Subject: [PATCH] parisc: PA-Linux requires at least 32 MB RAM Message-ID: <20190406230923.GA20080@ls3530.dellerweb.de> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.11.3 (2019-02-01) X-Provags-ID: V03:K1:GnbgLxJInBk+IPvdRM6jSVfFyGn3JsmSz2DuassaMMC9THgPqVT HZ6AkmqSEt85WVUmuoEjGn06yNu5bOvHHTLYyiKjyzKBws9svv56fUN0YM+JfTeywpJCVLd llP5ygyMRsUiAyhD9+c8tEA5b7oFSCPRBo3/ZvRzTIJXtCQP8KGZvrX6RazydRpSOrp+qtb l2Xu+vtp+EdLzrLia0BJA== X-UI-Out-Filterresults: notjunk:1;V03:K0:MX5TVKj8So4=:+t9/uG+bT1E5wc1rxSz8Zt qsRT1XBEhOQjRuk4QaH06l94b3L/PWPBfkdFDSNi1/7Z9+5bWJuZdglwFlGoh3WpcvsJiT44X fAQetbNhC5x8qEFaVhYx3vB0EriY1fvdXn1kEzvK6NBXbHPXDpJ+fs2R6usXxfGc2CTlG4orK sgBPB0ULnCa302LsYTsClWw3JdNZn9vo/KK1IbdfHH2WwSR1NNDl0MW3RcWry8tKctLK5udRU Gm7GGSraOFwaOj5hHG6aXPG6SuEVpVPz3vdV0+LkVtfm7j8/HagJbK5gVss2dGjrbg8jpKb31 tyZMmblQ1xx0aMrEISKdIK7fWIXrDPeoyUMxRvCi+hu+VnP7xsVyo0b9c1GHeDBfpnI5Zo6ku ODd6qTOlsfmx8+3KwlLJzmwSF6GmaqIJqp9MeXOjqkE33054fcKW8H2e2lk5TSXgDNXTw4O2k hGUR0YEo3nUixObluJB/ltI6yRMhXpbb+Jzv4VttPj4hf4UBRvG8hREQQgOUJpXk+MIcXqBE8 ILfIbLar5QHvXucYL/S1jjrDst3U6Lx1td75zDh0d+AXkgkLHmnUGZNVoeAQVVsO4ytyPtb9j LTfUHkvhK/tfQ+hKguqpodR20hHgqwlBC25whWkJv2y1g9m35OFjdNiPlPl+IEGXxMNgwvr7v cAdQB8U9g+COMzh8rpXsg2KjcSrcIzYyMl4bLr/mUu7JsH15KqcW78T/rbQ1uzjA/8BqxtnBo /r7yAKXC6jszugzwn9BDZbJmgh7FHfbS25BJ/gAfSf1haiXM6p5qOF/OCaLqprxcwlnFyFVJH 6h63golTILcZBXG32LwiMxUxXWHIu5lzkyntkjcKDXfu+A6f8tHV3t5p7Naft/OerfjK6gOtL 6z83MBqncRKtB1VLySSiLKiM7brUBy8O+VfzPD4wU1XtL2UByr4ibj/BrKcrDQ Sender: linux-parisc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-parisc@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Even a 32-bit kernel requires at least 27 MB to decompress itself, so halt the system with a message if the system has less memory than 32 MB. Signed-off-by: Helge Deller diff --git a/arch/parisc/boot/compressed/misc.c b/arch/parisc/boot/compressed/misc.c index 2556bb181813..2d395998f524 100644 --- a/arch/parisc/boot/compressed/misc.c +++ b/arch/parisc/boot/compressed/misc.c @@ -145,14 +145,13 @@ static int putchar(int c) void __noreturn error(char *x) { - puts("\n\n"); - puts(x); - puts("\n\n -- System halted"); + if (x) puts(x); + puts("\n -- System halted\n"); while (1) /* wait forever */ ; } -static int print_hex(unsigned long num) +static int print_num(unsigned long num, int base) { const char hex[] = "0123456789abcdef"; char str[40]; @@ -160,12 +159,14 @@ static int print_hex(unsigned long num) str[i--] = '\0'; do { - str[i--] = hex[num & 0x0f]; - num >>= 4; + str[i--] = hex[num % base]; + num = num / base; } while (num); - str[i--] = 'x'; - str[i] = '0'; + if (base == 16) { + str[i--] = 'x'; + str[i] = '0'; + } else i++; puts(&str[i]); return 0; @@ -187,8 +188,9 @@ int printf(const char *fmt, ...) if (fmt[++i] == '%') goto put; + print_num(va_arg(args, unsigned long), + fmt[i] == 'x' ? 16:10); ++i; - print_hex(va_arg(args, unsigned long)); } va_end(args); @@ -327,8 +329,15 @@ unsigned long decompress_kernel(unsigned int started_wide, free_mem_end_ptr = rd_start; #endif - if (free_mem_ptr >= free_mem_end_ptr) - error("Kernel too big for machine."); + if (free_mem_ptr >= free_mem_end_ptr) { + int free_ram; + free_ram = (free_mem_ptr >> 20) + 1; + if (free_ram < 32) + free_ram = 32; + printf("\nKernel requires at least %d MB RAM.\n", + free_ram); + error(NULL); + } #ifdef DEBUG printf("\n");