Bug#435040: xserver-xorg-video-ati: switching VT from console to X freezes computer with X22 (Radeon Mobility M6 LY)
Kari Pahula
kaol at iki.fi
Mon Aug 6 07:56:44 PDT 2007
On Mon, Aug 06, 2007 at 11:48:14AM +0200, Michel Dänzer wrote:
> On Mon, 2007-08-06 at 11:43 +0300, Kari Pahula wrote:
> > There's a delay of more than 15 seconds (mostly calling FBIOPUTCMAP
> > ioctl and gettimeofday, apparently) after the V_BIOS entry and before
> > X is usable, but at least the VT switches without any screen freezes
> > with int10. But those delays are a separate issue altogether.
>
> Does not using Option "UseFBDev" make any difference for this?
Commenting out the UseFBDev option made a difference, in that it made
starting X faster. But it also brought the VT switching freeze back,
and this time it would lock down the kernel and not just the screen.
Doesn't respond to pings or anything. I still had the int10 module
loaded.
I did some debugging and noticed that running X with
nice -n -10 strace X 2>stracedump
made the freezes go away... If I took away the nice command with the
negative priority, the system would freeze. Looks like X really likes
to have a bit longer delay at some point. I suppose the delay(s)
caused by FBDev could cause the same thing. I know that I'm happily
making only guesses about this... I don't know why it would behave
like it does.
Some of the time X didn't lock up the system even without that nice
thing I did above, but at least I think I could identify where the
system gets locked up.
This time I didn't even see anything as distinctive in the strace dump
as I did last time... I attached the output of
tail -n 400 ~/stracedump | uniq -c
This is from a run where strace wasn't niced and I got the freeze.
With a niced strace, the part where the freeze apparently happens goes
like this:
ioctl(6, VIDIOC_S_FMT or VT_RELDISP, 0x1) = 0
shutdown(5, 2 /* send and receive */) = 0
close(5) = 0
iopl(0) = 0
ioperm(0, 0x400, 0) = 0
gettimeofday({1186408789, 97309}, NULL) = 0
gettimeofday({1186408789, 97409}, NULL) = 0
select(256, [1 3 4], NULL, NULL, {111, 851000}) = ? ERESTARTNOHAND (To be restar
ted)
--- SIGUSR1 (User defined signal 1) @ 0 (0) ---
rt_sigaction(SIGUSR1, {0x80b0f60, [USR1], SA_RESTART}, {0x80b0f60, [USR1], SA_RE
START}, 8) = 0
sigreturn() = ? (mask now [IO])
ioctl(6, VIDIOC_S_FMT or VT_RELDISP, 0x2) = 0
rt_sigprocmask(SIG_BLOCK, [IO], [IO], 8) = 0
socket(PF_FILE, SOCK_STREAM, 0) = 5
connect(5, {sa_family=AF_FILE, path="/var/run/acpid.socket"}, 110) = 0
write(0, "(II) Open ACPI successful (/var/"..., 50) = 50
-------------- next part --------------
1 read(10, "9-9\nDejaVuSansCondensed.ttf -dej"..., 4096) = 4096
1 read(10, "0-iso8859-2\nDejaVuSansMono.ttf -"..., 4096) = 4096
1 read(10, " -dejavu-dejavu serif-medium-o-c"..., 4096) = 786
2 read(10, "", 4096) = 0
1 close(10) = 0
1 munmap(0xb7f72000, 4096) = 0
1 open("/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType/fonts.alias", O_RDONLY) = 10
2 fstat64(10, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
1 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f72000
1 read(10, "", 4096) = 0
1 close(10) = 0
1 munmap(0xb7f72000, 4096) = 0
1 open("/usr/share/fonts/X11/misc/6x13-ISO8859-1.pcf.gz", O_RDONLY) = 10
1 read(10, "\37\213\10\0I4\246F\0\3\355\\it\33\327u\376\260I\264\265"..., 8192) = 4637
1 read(10, "", 8192) = 0
1 close(10) = 0
1 open("/usr/share/fonts/X11/misc/cursor.pcf.gz", O_RDONLY) = 10
1 read(10, "\37\213\10\0:4\246F\0\3\355\233{p\335\305u\307\217\356"..., 8192) = 5225
1 read(10, "", 8192) = 0
1 brk(0x83a6000) = 0x83a6000
1 close(10) = 0
1 rt_sigprocmask(SIG_BLOCK, [IO], [], 8) = 0
1 rt_sigprocmask(SIG_UNBLOCK, [IO], NULL, 8) = 0
1 gettimeofday({1186401940, 291870}, NULL) = 0
1 gettimeofday({1186401940, 291958}, NULL) = 0
1 gettimeofday({1186401940, 292053}, NULL) = 0
1 gettimeofday({1186401940, 292151}, NULL) = 0
1 select(256, [1 3 4 5 6], NULL, NULL, {600, 0}) = 1 (in [6], left {594, 704000})
1 rt_sigprocmask(SIG_BLOCK, [IO], [], 8) = 0
1 read(6, "\35", 64) = 1
1 gettimeofday({1186401945, 589552}, NULL) = 0
1 rt_sigprocmask(SIG_BLOCK, [], [IO], 8) = 0
1 rt_sigprocmask(SIG_UNBLOCK, [IO], NULL, 8) = 0
1 setitimer(ITIMER_REAL, {it_interval={0, 20000}, it_value={0, 20000}}, NULL) = 0
1 gettimeofday({1186401945, 589917}, NULL) = 0
1 select(256, [1 3 4 5 6], NULL, NULL, {594, 703000}) = 1 (in [6], left {594, 696000})
1 rt_sigprocmask(SIG_BLOCK, [IO], [], 8) = 0
1 read(6, "8", 64) = 1
1 gettimeofday({1186401945, 595499}, NULL) = 0
1 rt_sigprocmask(SIG_BLOCK, [], [IO], 8) = 0
1 rt_sigprocmask(SIG_UNBLOCK, [IO], NULL, 8) = 0
1 gettimeofday({1186401945, 595735}, NULL) = 0
1 select(256, [1 3 4 5 6], NULL, NULL, {594, 697000}) = ? ERESTARTNOHAND (To be restarted)
1 --- SIGALRM (Alarm clock) @ 0 (0) ---
1 setitimer(ITIMER_REAL, {it_interval={0, 0}, it_value={0, 0}}, NULL) = 0
1 sigreturn() = ? (mask now [])
1 gettimeofday({1186401945, 610120}, NULL) = 0
1 gettimeofday({1186401945, 610178}, NULL) = 0
1 select(256, [1 3 4 5 6], NULL, NULL, {594, 682000}) = 1 (in [6], left {594, 640000})
1 rt_sigprocmask(SIG_BLOCK, [IO], [], 8) = 0
1 read(6, ";", 64) = 1
1 gettimeofday({1186401945, 651921}, NULL) = 0
1 rt_sigprocmask(SIG_BLOCK, [], [IO], 8) = 0
1 rt_sigprocmask(SIG_UNBLOCK, [IO], NULL, 8) = 0
1 setitimer(ITIMER_REAL, {it_interval={0, 20000}, it_value={0, 20000}}, NULL) = 0
1 gettimeofday({1186401945, 652213}, NULL) = 0
1 ioctl(6, VIDIOC_G_COMP or VT_ACTIVATE, 0x1) = 0
1 --- SIGUSR1 (User defined signal 1) @ 0 (0) ---
1 rt_sigaction(SIGUSR1, {0x80b0f60, [USR1], SA_RESTART}, {0x80b0f60, [USR1], SA_RESTART}, 8) = 0
1 sigreturn() = ? (mask now [])
1 gettimeofday({1186401945, 652601}, NULL) = 0
1 select(256, [1 3 4 5 6], NULL, NULL, {0, 500000}) = ? ERESTARTNOHAND (To be restarted)
1 --- SIGALRM (Alarm clock) @ 0 (0) ---
1 setitimer(ITIMER_REAL, {it_interval={0, 0}, it_value={0, 0}}, NULL) = 0
1 sigreturn() = ? (mask now [])
1 ioctl(6, KDSKBMODE, 0x1) = 0
1 ioctl(6, SNDCTL_TMR_TIMEBASE or TCGETS, {B0 -opost -isig -icanon -echo ...}) = 0
1 ioctl(6, SNDCTL_TMR_START or TCSETS, {B38400 opost isig icanon echo ...}) = 0
1 ioctl(6, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
1 fcntl64(9, F_GETFL) = 0x2802 (flags O_RDWR|O_NONBLOCK|O_ASYNC)
1 fcntl64(9, F_SETFL, O_RDWR|O_NONBLOCK) = 0
1 rt_sigaction(SIGIO, {SIG_DFL}, {0x80b2a70, [IO], 0}, 8) = 0
1 close(9) = 0
1 nanosleep({0, 300000000}, NULL) = 0
1 rt_sigprocmask(SIG_BLOCK, [IO], [], 8) = 0
4 nanosleep({0, 5000000}, NULL) = 0
1 write(0, "(II) RADEON(0): RADEONRestoreMem"..., 50) = 50
1 write(0, "(II) RADEON(0): MC_FB_LOCATION"..., 48) = 48
1 write(0, "(II) RADEON(0): MC_AGP_LOCATIO"..., 48) = 48
199 nanosleep({0, 1000}, NULL) = 0
1 nanosleep({0, 100000000}, NULL) = 0
2 nanosleep({0, 5000000}, NULL) = 0
1 nanosleep({0, 100000000}, NULL) = 0
2 nanosleep({0, 5000000}, NULL) = 0
1 nanosleep({1, 0}, NULL) = 0
1 open("/dev/mem", O_RDWR) = 9
1 mmap2(NULL, 65536, PROT_READ|PROT_WRITE, MAP_SHARED, 9, 0xa0) = 0xb7b65000
1 close(9) = 0
8 ioctl(8, MTRRIOC_GET_ENTRY, 0xbfee62bc) = 0
1 ioctl(8, MTRRIOC_GET_ENTRY, 0xbfee62bc) = -1 EINVAL (Invalid argument)
1 munmap(0xb7b65000, 65536) = 0
1 lseek(7, 4, SEEK_SET) = 4
1 write(7, "\204\3\260\2", 4) = 4
1 lseek(7, 4, SEEK_SET) = 4
1 write(7, "\204\3\260\2", 4) = 4
1 lseek(7, 4, SEEK_SET) = 4
1 write(7, "\204\3\260\2", 4) = 4
1 close(7) = 0
1 stat64("/proc/bus/pci/0000:02", 0xbfee6294) = -1 ENOENT (No such file or directory)
1 open("/proc/bus/pci/02/03.1", O_RDWR) = 7
1 lseek(7, 62, SEEK_SET) = 62
1 read(7, "\200\5", 2) = 2
1 close(7) = 0
1 stat64("/proc/bus/pci/0000:02", 0xbfee6294) = -1 ENOENT (No such file or directory)
1 open("/proc/bus/pci/02/03.0", O_RDWR) = 7
1 lseek(7, 62, SEEK_SET) = 62
1 read(7, "\200\5", 2) = 2
1 close(7) = 0
1 stat64("/proc/bus/pci/0000:00", 0xbfee6294) = -1 ENOENT (No such file or directory)
1 open("/proc/bus/pci/00/1e.0", O_RDWR) = 7
1 lseek(7, 62, SEEK_SET) = 62
1 read(7, "\4\0", 2) = 2
1 close(7) = 0
1 stat64("/proc/bus/pci/0000:00", 0xbfee6294) = -1 ENOENT (No such file or directory)
1 open("/proc/bus/pci/00/01.0", O_RDWR) = 7
1 lseek(7, 62, SEEK_SET) = 62
1 read(7, "\f\0", 2) = 2
1 lseek(7, 62, SEEK_SET) = 62
1 write(7, "\4\0", 2) = 2
1 close(7) = 0
1 stat64("/proc/bus/pci/0000:01", 0xbfee62a4) = -1 ENOENT (No such file or directory)
1 open("/proc/bus/pci/01/00.0", O_RDWR) = 7
1 lseek(7, 4, SEEK_SET) = 4
1 read(7, "\204\3\260\2", 4) = 4
1 lseek(7, 16, SEEK_SET) = 16
1 read(7, "\10\0\0\340", 4) = 4
1 lseek(7, 20, SEEK_SET) = 20
1 read(7, "\1 \0\0", 4) = 4
1 lseek(7, 24, SEEK_SET) = 24
1 read(7, "\0\0\20\300", 4) = 4
1 lseek(7, 28, SEEK_SET) = 28
1 read(7, "\0\0\0\0", 4) = 4
1 lseek(7, 32, SEEK_SET) = 32
1 read(7, "\0\0\0\0", 4) = 4
1 lseek(7, 36, SEEK_SET) = 36
1 read(7, "\0\0\0\0", 4) = 4
1 lseek(7, 48, SEEK_SET) = 48
1 read(7, "\0\0\0\0", 4) = 4
1 lseek(7, 4, SEEK_SET) = 4
1 read(7, "\204\3\260\2", 4) = 4
1 lseek(7, 4, SEEK_SET) = 4
1 write(7, "\204\3\260\2", 4) = 4
1 lseek(7, 48, SEEK_SET) = 48
1 write(7, "\0\0\0\0", 4) = 4
1 lseek(7, 16, SEEK_SET) = 16
1 write(7, "\10\0\0\340", 4) = 4
1 lseek(7, 20, SEEK_SET) = 20
1 write(7, "\1 \0\0", 4) = 4
1 lseek(7, 24, SEEK_SET) = 24
1 write(7, "\0\0\20\300", 4) = 4
1 lseek(7, 28, SEEK_SET) = 28
1 write(7, "\0\0\0\0", 4) = 4
1 lseek(7, 32, SEEK_SET) = 32
1 write(7, "\0\0\0\0", 4) = 4
1 lseek(7, 36, SEEK_SET) = 36
1 write(7, "\0\0\0\0", 4) = 4
1 lseek(7, 4, SEEK_SET) = 4
1 write(7, "\207\3\260\2", 4) = 4
1 close(7) = 0
1 stat64("/proc/bus/pci/0000:02", 0xbfee62a4) = -1 ENOENT (No such file or directory)
1 open("/proc/bus/pci/02/03.1", O_RDWR) = 7
1 lseek(7, 62, SEEK_SET) = 62
1 read(7, "\200\5", 2) = 2
1 close(7) = 0
1 stat64("/proc/bus/pci/0000:02", 0xbfee62a4) = -1 ENOENT (No such file or directory)
1 open("/proc/bus/pci/02/03.0", O_RDWR) = 7
1 lseek(7, 62, SEEK_SET) = 62
1 read(7, "\200\5", 2) = 2
1 close(7) = 0
1 stat64("/proc/bus/pci/0000:00", 0xbfee62a4) = -1 ENOENT (No such file or directory)
1 open("/proc/bus/pci/00/1e.0", O_RDWR) = 7
1 lseek(7, 62, SEEK_SET) = 62
1 read(7, "\4\0", 2) = 2
1 close(7) = 0
1 stat64("/proc/bus/pci/0000:00", 0xbfee62a4) = -1 ENOENT (No such file or directory)
1 open("/proc/bus/pci/00/01.0", O_RDWR) = 7
1 lseek(7, 62, SEEK_SET) = 62
1 read(7, "\4\0", 2) = 2
1 lseek(7, 62, SEEK_SET) = 62
1 write(7, "\f\0", 2) = 2
1 ioctl(6, VIDIOC_S_FMT or VT_RELDISP, 0x1) = 0
1 shutdown(5, 2 /* send and receive */) = 0
1 close(5) = 0
1 iopl(0) = 0
1 ioperm(0, 0x400, 0) = 0
1 gettimeofday({1186401947, 698902}, NULL) = 0
1 gettimeofday({1186401947, 698965}, NULL) = 0
1 select(256, [1 3 4], NULL, NULL, {592, 594000}
More information about the xorg-driver-ati
mailing list