NVidia glx stuff dies in sysarch(I386_SET_LDT, ...)

David Xu davidxu at FreeBSD.org
Fri Aug 1 15:44:15 PDT 2003


On Saturday 02 August 2003 06:24, Munish Chopra wrote:
> On 2003-08-02 00:20 +0200, Thorsten Greiner wrote:
> > * Daniel Eischen <eischen at 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.

David Xu



More information about the freebsd-current mailing list