crash in aty128_set_lcd_enable on PowerBook
Current Linus tree crashes in aty128_set_lcd_enable() because par->pdev is NULL. This happens since at least a week. Call trace is:
aty128_set_lcd_enableaty128fb_set_parfbcon_initvisual_inittake_over_consolefbcon_takeovernotifier_call_chainblocking_notifier_call_chainregister_framebufferaty128fb_probepci_device_probebus_for_each_devdriver_attachbus_add_driverdriver_register__pci_register_driveraty128fb_init
initkernel_thread
This happens on a PowerBook pismo.
Quoted 4 lines · Olaf Hering
Current Linus tree crashes in
aty128_set_lcd_enable()becausepar->pdevis NULL. This happens since at least a week. Call trace is:
Quoted 10 lines
aty128_set_lcd_enableaty128fb_set_parfbcon_initvisual_inittake_over_consolefbcon_takeovernotifier_call_chainblocking_notifier_call_chainregister_framebufferaty128fb_probe
aty128_init calls register_framebuffer() before it assigns pdev.
2028 if (register_framebuffer(info) < 0) 2029 return 0; 2030 2031 par->pm_reg = pci_find_capability(pdev, PCI_CAP_ID_PM); 2032 par->pdev = pdev; 2033 par->asleep = 0; 2034 par->lock_blank = 0;
Quoted 17 lines · Olaf Hering
Quoted 4 lines · Olaf Hering
Current Linus tree crashes in
aty128_set_lcd_enable()becausepar->pdevis NULL. This happens since at least a week. Call trace is:Quoted 10 lines
aty128_set_lcd_enableaty128fb_set_parfbcon_initvisual_inittake_over_consolefbcon_takeovernotifier_call_chainblocking_notifier_call_chainregister_framebufferaty128fb_probe
Quoted 1 line
aty128_initcallsregister_framebuffer()before it assigns pdev.
Yeah, that looks like some serious bogosity in that code. Care to send a patch ?
Quoted 13 lines
2028 if (register_framebuffer(info) < 0) 2029 return 0; 2030 2031 par->pm_reg = pci_find_capability(pdev, PCI_CAP_ID_PM); 2032 par->pdev = pdev; 2033 par->asleep = 0; 2034 par->lock_blank = 0;_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://ozlabs.org/mailman/listinfo/linuxppc-dev
Quoted 3 lines
Yeah, that looks like some serious bogosity in that code. Care to send a patch ?
(I'm in a hotel room in Ottawa with no r128 at hand to test so I'm not doing it myself just now :)
Ben.
Quoted 6 lines · Benjamin Herrenschmidt
Quoted 3 lines
Yeah, that looks like some serious bogosity in that code. Care to send a patch ?
(I'm in a hotel room in Ottawa with no r128 at hand to test so I'm not doing it myself just now :)
It crashes later for different reasons. The whole init process works by luck it seems.
Quoted 11 lines · Olaf Hering
Quoted 6 lines · Benjamin Herrenschmidt
Quoted 3 lines
Yeah, that looks like some serious bogosity in that code. Care to send a patch ?
(I'm in a hotel room in Ottawa with no r128 at hand to test so I'm not doing it myself just now :)
It crashes later for different reasons. The whole init process works by luck it seems.
I've been having weird things happening with latest linus trees and really no time to debug ... do you have a backtrace for the "other" crash ?
Ben.
Quoted 6 lines · Benjamin Herrenschmidt
Quoted 2 lines
It crashes later for different reasons. The whole init process works by luck it seems.
I've been having weird things happening with latest linus trees and really no time to debug ... do you have a backtrace for the "other" crash ?
It was in aty128_bl_set_power(), cant remember the trace.
PATCH 1/1 crash in aty128_set_lcd_enable on PowerBook
In reply to Olaf HeringQuoted 15 lines · Olaf Hering
Current Linus tree crashes in
aty128_set_lcd_enable()becausepar->pdevis NULL. This happens since at least a week. Call trace is:
aty128_set_lcd_enableaty128fb_set_parfbcon_initvisual_inittake_over_consolefbcon_takeovernotifier_call_chainblocking_notifier_call_chainregister_framebufferaty128fb_probepci_device_probe
Quoted 9 lines
bus_for_each_devdriver_attachbus_add_driverdriver_register__pci_register_driveraty128fb_init
initkernel_thread
- info->fix was assigned twice.
- par->vram_size is assigned in aty128_probe(), no need to redo it again in aty128_init()
- register_framebuffer() uses uninitialized struct members,
move it past par->pdev assignment and past aty128_bl_init().
drivers/video/aty/aty128fb.c +3 -7
@@ -1910,9 +1910,6 @@ static int __devinit aty128_init(structu8 chip_rev;u32 dac; -if (!par->vram_size)/* may have already been probed */ - par->vram_size =aty_ld_le32 (CONFIG_MEMSIZE ) &0x03FFFFFF ; -/* Get the chip revision */ chip_rev = (aty_ld_le32 (CONFIG_CNTL ) >>16 ) &0x1F ;
@@ -2025,9 +2022,6 @@ static int __devinit aty128_init(structaty128_init_engine (par); -if (register_framebuffer (info) <0 ) -return 0 ; - par->pm_reg =pci_find_capability (pdev,PCI_CAP_ID_PM ); par->pdev = pdev; par->asleep =0 ;
@@ -2037,6 +2031,9 @@ static int __devinit aty128_init(structaty128_bl_init (par);#endif +if (register_framebuffer (info) <0 ) +return 0 ; +printk (KERN_INFO "fb%d: %s frame buffer device on %s\n" , info->node, info->fix.id, video_card);
@@ -2086,7 +2083,6 @@ static int __devinit aty128_probe(struct par = info->par; info->pseudo_palette = par->pseudo_palette; - info->fix = aty128fb_fix;/* Virtualize mmio region */ info->fix.mmio_start = reg_addr;
Quoted 27 lines · Olaf Hering
Quoted 14 lines · Olaf Hering
Current Linus tree crashes in
aty128_set_lcd_enable()becausepar->pdevis NULL. This happens since at least a week. Call trace is:
aty128_set_lcd_enableaty128fb_set_parfbcon_initvisual_inittake_over_consolefbcon_takeovernotifier_call_chainblocking_notifier_call_chainregister_framebufferaty128fb_probepci_device_probeQuoted 9 lines
bus_for_each_devdriver_attachbus_add_driverdriver_register__pci_register_driveraty128fb_init
initkernel_thread
Quoted 6 lines
-
info->fixwas assigned twice.
-par->vram_sizeis assigned inaty128_probe(), no need to redo it again inaty128_init()
-register_framebuffer()uses uninitialized struct members,
move it pastpar->pdevassignment and pastaty128_bl_init().
Looks good.
Quoted 1 line
Signed-off-by Olaf Hering <[email protected]>