From: Zachary Amsden <zach@vmware.com>
To: Linus Torvalds <torvalds@osdl.org>
Cc: Andrew Morton <akpm@osdl.org>, Chris Wright <chrisw@osdl.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Virtualization Mailing List <virtualization@lists.osdl.org>,
"H. Peter Anvin" <hpa@zytor.com>,
Zwane Mwaikambo <zwane@arm.linux.org.uk>,
Martin Bligh <mbligh@mbligh.org>,
Pratap Subrahmanyam <pratap@vmware.com>,
Christopher Li <chrisl@vmware.com>,
"Eric W. Biederman" <ebiederm@xmission.com>,
Ingo Molnar <mingo@elte.hu>
Subject: Re: [PATCH 4/21] i386 Broken bios common
Date: Tue, 08 Nov 2005 13:07:10 -0800 [thread overview]
Message-ID: <4371137E.50202@vmware.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0511080703530.3247@g5.osdl.org>
Linus Torvalds wrote:
>On Mon, 7 Nov 2005, Zachary Amsden wrote:
>
>
>>Both the APM BIOS and PnP BIOS code use a segment hack to simulate real
>>mode selector 0x40 (which points to the BIOS data area at 0x00400 in
>>real mode). Several broken BIOSen use selector 0x40 as if they were
>>running in real mode, which we make work by faking up selector 0x40 in
>>the GDT to point to physical memory starting at 0x400. We limit the
>>access to the remainder of this physical page using a byte granular
>>limit. Rather than have this tricky code in multiple places, it makes
>>sense to define it in one place, and the GDT makes a very convenient
>>place for it. Use GDT entry 4 as the BAD_BIOS_CACHE segment.
>>
>>
>
>I'd much rather use entry 8 instead, which should just automatically mean
>that selector 0x40 _always_ points to virtual address 0x400. No switching
>etc..
>
>Isn't this what Wine already has to work around, or something?
>
>Ingo, can we move the TLS selectors upwards, or does user space perhaps
>know about the current TLS layout? Wine in particular may well know ;(
>
>
Looking at the Wine code, it doesn't seem to know. It uses a GDT entry
if possible in preference to an LDT entry, and appears to not care which
TLS descriptor it gets. So I think it would be safe to reserve selector
0x40 for the BIOS real mode segment and move TLS up. That's kind of a
scary change, but I don't see anything wrong with it other than the
testing implications. Hopefully DOSEmu is not affected..
/***********************************************************************
* wine_ldt_alloc_fs
*
* Allocate an LDT entry for a %fs selector, reusing a global
* GDT selector if possible. Return the selector value.
*/
unsigned short wine_ldt_alloc_fs(void)
{
if (global_fs_sel == -1)
{
struct modify_ldt_s ldt_info;
int ret;
ldt_info.entry_number = -1; <--------- note it doesn't care
fill_modify_ldt_struct( &ldt_info, &null_entry );
if ((ret = set_thread_area( &ldt_info ) < 0))
{
global_fs_sel = 0; /* don't try it again */
if (errno != ENOSYS) perror( "set_thread_area" );
}
else global_fs_sel = (ldt_info.entry_number << 3) | 3;
}
if (global_fs_sel > 0) return global_fs_sel;
return wine_ldt_alloc_entries( 1 );
next prev parent reply other threads:[~2005-11-08 21:07 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-11-08 4:22 [PATCH 4/21] i386 Broken bios common Zachary Amsden
2005-11-08 7:19 ` Ingo Molnar
2005-11-08 12:48 ` Zachary Amsden
2005-11-08 12:57 ` Ingo Molnar
2005-11-08 15:06 ` Linus Torvalds
2005-11-08 15:16 ` H. Peter Anvin
2005-11-08 21:07 ` Zachary Amsden [this message]
2005-11-08 21:52 ` Zachary Amsden
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=4371137E.50202@vmware.com \
--to=zach@vmware.com \
--cc=akpm@osdl.org \
--cc=chrisl@vmware.com \
--cc=chrisw@osdl.org \
--cc=ebiederm@xmission.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mbligh@mbligh.org \
--cc=mingo@elte.hu \
--cc=pratap@vmware.com \
--cc=torvalds@osdl.org \
--cc=virtualization@lists.osdl.org \
--cc=zwane@arm.linux.org.uk \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.