Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 1 Aug 2003 18:51:33 -0400 (EDT)
From:      Daniel Eischen <eischen@vigrid.com>
To:        David Xu <davidxu@freebsd.org>
Cc:        current@freebsd.org
Subject:   Re: NVidia glx stuff dies in sysarch(I386_SET_LDT, ...)
Message-ID:  <Pine.GSO.4.10.10308011847230.18146-100000@pcnet5.pcnet.com>
In-Reply-To: <200308020647.18039.davidxu@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 2 Aug 2003, David Xu wrote:

> On Saturday 02 August 2003 06:24, Munish Chopra wrote:
> > On 2003-08-02 00:20 +0200, Thorsten Greiner wrote:
> > > * Daniel Eischen <eischen@vigrid.com> [2003-08-02 00:06]:
> > > > I think the bug was in the old code allowing this to
> > > > happen...
> > >
> > > Well, than someone should tell that to NVidia. Their driver is
> > > closed source and comes without "user servicable parts".
> > >
> > > Regards
> > >         -Thorsten
> >
> > That's going to be a lot easier to get through if someone can confirm
> > whether 0-16 are reserved, or whether (like julian says), 6-15 are
> > actually safe and something else is being clobbered.
> 
> #define LSYS5CALLS_SEL  0       /* forced by intel BCS */
> #define LSYS5SIGR_SEL   1
> #define L43BSDCALLS_SEL 2       /* notyet */
> #define LUCODE_SEL      3
> #define LSOL26CALLS_SEL 4       /* Solaris >= 2.6 system call gate */
> #define LUDATA_SEL      5
> /* separate stack, es,fs,gs sels ? */
> /* #define      LPOSIXCALLS_SEL 5*/     /* notyet */
> #define LBSDICALLS_SEL  16      /* BSDI system call gate */
> #define NLDT            (LBSDICALLS_SEL + 1)
> 
> LUCODE_SEL is used by kernel to load _ucodesel to user %cs
> LUDATA_SEL is used by kernel to load _udatasel to user %ds, %es, %fs, %gs.
> I didn't check other ABIs, but setting to a fixed location of LDT in userland
> is also a bad idea, I think it will conflict with thread library soon,
> it is better to use dynamic allocating facility newly added in i386_set_ldt.

Perhaps we need to rethink the interface and disallow
specification of any ldt; only allow dynamic.  We would
need a different method of setting an array of them, though.

-- 
Dan Eischen



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.10.10308011847230.18146-100000>