Subject: Re: drm on amd64 (drmMap failed)
To: Blair Sadewitz <blair.sadewitz@gmail.com>
From: Xning Lee <xning@soforge.com>
List: tech-x11
Date: 04/05/2007 21:08:13
--=-=-=

"Blair Sadewitz" <blair.sadewitz@gmail.com> writes:

> This is exactly the same problem I had on amd64; I've since switched
> to i386 (for reasons other than drm; linux compatability on amd64 for
> EMT64 processors is broken).  Could you file a PR for this, please?
>
> Thanks,
>

The issue of 'drmMap failed' on amd64 because the function
'udv_attach' of /usr/src/sys/uvm/uvm_device.c can't accept address
offset value more than 4GB: (the type of 'voff_t' is int64)

struct uvm_object *
udv_attach(void *arg, vm_prot_t accessprot,
    voff_t off,	        /* used only for access check */
    vsize_t size	/* used only for access check */)
{
        ...

	if (off < 0)
		return(NULL);
        ...
}

When I changed the type of parameter 'off' from 'voff_t' to
'vsize_t'(u_long), 'drm on amd64' can work now.

Xorg.0.log:

--=-=-=
Content-Type: application/octet-stream
Content-Disposition: attachment; filename=Xorg.0.log.gz
Content-Transfer-Encoding: base64
Content-Description: Xorg log for 'drm on amd64'

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
/wXtrgl/ts4AAA==
--=-=-=--