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:	Tue, 13 Apr 2010 14:09:25 -0700
From:	"H. Peter Anvin" <hpa@...or.com>
To:	Bjorn Helgaas <bjorn.helgaas@...com>
CC:	Yinghai <yinghai.lu@...cle.com>,
	Thomas Gleixner <tglx@...utronix.de>,
	Ingo Molnar <mingo@...hat.com>,
	Andy Isaacson <adi@...apodia.org>, guenter.roeck@...csson.com,
	Linus Torvalds <torvalds@...ux-foundation.org>,
	"linux-pci@...r.kernel.org" <linux-pci@...r.kernel.org>,
	"x86@...nel.org" <x86@...nel.org>,
	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
	Thomas Renninger <trenn@...e.de>
Subject: Re: [PATCH -v2 1/2] x86: Reserve [0xa0000, 0x100000] in e820 map

On 04/13/2010 02:02 PM, Bjorn Helgaas wrote:
> 
> I like the fact that this makes x86_64 and x86_32 handle the legacy VGA
> framebuffer the same way.
> 
> What about arch/x86/kernel/probe_roms_32.c?  That deals with expansion
> ROMs in the 0xc0000-0xfffff range, including the VGA ROM.  We only build
> it for x86_32; is that correct, or should it be unified, too?
> 

It should be.

>> Index: linux-2.6/arch/x86/kernel/setup.c
>> ===================================================================
>> --- linux-2.6.orig/arch/x86/kernel/setup.c
>> +++ linux-2.6/arch/x86/kernel/setup.c
>> @@ -693,7 +693,7 @@ static void __init trim_bios_range(void)
>>  	 * area (640->1Mb) as ram even though it is not.
>>  	 * take them out.
>>  	 */
>> -	e820_remove_range(BIOS_BEGIN, BIOS_END - BIOS_BEGIN, E820_RAM, 1);
>> +	e820_add_region(BIOS_BEGIN, BIOS_END - BIOS_BEGIN, E820_RESERVED);
> 
> Let me see if I understand this.  On Andy's machine, the e820 map
> doesn't mention the 0xa0000-0xf0000 range at all:
> 
>   BIOS-e820: 0000000000000000 - 000000000009ec00 (usable)
>   BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
> 
> e820_reserve_resources() inserts resources for some e820 entries (those
> that start before 0x100000 or are not E820_RESERVED).  Andy's machine
> didn't supply any e820 entries that cover 0xa0000-0xf0000, so we didn't
> insert any resources there, and PCI assumed that range was available.

[Note: it's worth noting that the e820 spec specifically says that e820
will not necessarily mark legacy ranges reserved.]

> This patch adds the [0xa0000-0x100000] range as E820_RESERVED.  Since
> that starts below 0x100000, e820_reserve_resources() will insert a
> corresponding resource marked as BUSY.
> 
> Then the second patch prevents PCI from using that BUSY region to
> allocate resources to devices.
> 
> Is my understanding correct?
> 
> I don't feel like I know enough about x86 architecture to ack this
> patch, but I don't object to it.

I guess the real question (which I haven't looked at myself) is if the
E820_RESERVED -> BUSY will cause an explicitly assigned BAR from being
moved.  That's bad, not so much for this particular range, but from BARs
which may be assigned by SMM.  Hacking that up in a simulator
(Qemu/Bochs) and testing it is probably on the to do list...

	-hpa
--
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