lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Fri, 29 Feb 2008 19:38:43 +0100
From:	"Alexander van Heukelum" <heukelum@...tmail.fm>
To:	"Mark McLoughlin" <markmc@...hat.com>,
	"Alexander van Heukelum" <heukelum@...lshack.com>
Cc:	"Ingo Molnar" <mingo@...e.hu>, "Ian Campbell" <ijc@...lion.org.uk>,
	"H. Peter Anvin" <hpa@...or.com>, "Andi Kleen" <ak@...e.de>,
	"Thomas Gleixner" <tglx@...utronix.de>,
	"Jeremy Fitzhardinge" <jeremy@...p.org>,
	"LKML" <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH] reserve end-of-conventional-memory to 1MB on 32-bit

On Fri, 29 Feb 2008 17:14:07 +0000, "Mark McLoughlin"
<markmc@...hat.com> said:
> On Fri, 2008-02-29 at 12:49 +0100, Alexander van Heukelum wrote:
> > This patch adds explicit detection of the EBDA and reservation
> > of the rom and adapter address space 0xa0000-0x100000 to the
> > i386 kernels. It uses reserve_bootmem instead of reserve_early,
> > because reserve_early is not yet available on i386.
> > 
> > Before this patch, the EBDA size was hardcoded as 4Kb. Also, the 
> > reservation of the adapter range was done by modifying the e820
> > map which is now not necessary any longer, and the code is removed
> > from copy_e820_map.
> > 
> > The changes in e820_64.c are only a change in the comment above
> > copy_e820_map, and some changes of the types of local variables
> > in that function such that the 32 and 64 bit versions become equal.
> > 
> > Signed-off-by: Alexander van Heukelum <heukelum@...tmail.fm>
> > 
> > ---
> > 
> > On Thu, Feb 28, 2008 at 09:09:56PM +0000, Ian Campbell wrote:
> > > On Thu, 2008-02-28 at 14:13 +0100, Alexander van Heukelum wrote:
> > > > The 32-bit code still uses reserve_bootmem, so this is not really
> > > > a unification with the 64-bit version of the ebda reservation code,
> > > > but at least it provides the same detection logic and reserves the
> > > > same areas.
> > > > 
> > > > This does not crash immediately on qemu. No further testing was
> > > > done! Otherwise:
> > > 
> > > I haven't tested extensively either but it does seem to solve the
> > > problem for Xen.
> > > 
> > > Thanks!
> > > Ian
> > 
> > Thank you!
> > 
> > Ingo,
> > 
> > I think this is ready for -x86#testing.
> > It boots to a small userspace in qemu (i386).
> > If I should separate the cleanups, let me know.
> 
> 	I haven't investigated in any detail, but with 2.6.25-rc3 and your
> patch I'm seeing a Xen guest hit this BUG:
> 
> void __init smp_alloc_memory(void)
> {
>         trampoline_base = alloc_bootmem_low_pages(PAGE_SIZE);
>         /*                                                                
>          * Has to be in very low memory so we can execute                 
>          * real-mode AP code.                                             
>          */
>         if (__pa(trampoline_base) >= 0x9F000)
>                 BUG();
> }
> 
> 	Stack looks like:
> 
>   [<c137ef97>] smp_alloc_memory+0x25  <--
>   [<c137ef97>] smp_alloc_memory+0x25 
>   [<c137a500>] setup_arch+0x28e 
>   [<c13735f7>] start_kernel+0x7a 
>   [<c1379240>] xen_start_kernel+0x300 

Ouch.

My first guess is that the BIOS data area is completely non-existent for
Xen.
Is it guaranteed that the memory is zeroed out on boot? In that case we
can
special-case it easily:

change:
        /* Paranoia: should never happen, but... */
        if (lowmem >= 0x100000)
                lowmem = 0xa0000;

into:
        /* Strange case, like Xen ;) */
        if (lowmem == 0 || lowmem >= 0x100000)
                lowmem = 0x9f000;

Can you test that?

Greetings,
    Alexander
-- 
  Alexander van Heukelum
  heukelum@...tmail.fm

-- 
http://www.fastmail.fm - Send your email first class

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ