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