From: Jean Delvare I indeed think this patch is causing the oops. The old code did call savage_do_probe_i2c_edid even if no i2c bus had been created for the board, and savage_do_probe_i2c_edid bailed out quickly in that case ("chan->par = NULL;" at the end of savage_setup_i2c_bus, and "if (chan->par) {" at the beginning of savage_do_probe_i2c_edid.) The new fb_ddc_read function has no such quick exit, it pretty much assumes that an i2c bus was successfully created beforehand. So my guess is that Jurriaan's graphics adapter is supported by the savagefb driver, but the driver doesn't create an i2c bus for it (either because the hardware doesn't have it, or we simply have no support.) Jurriaan, please confirm that your adapter is not one of Savage4, Savage2000, ProSavagePM, ProSavage8. If my analysis is correct, the following patch should fix the problem. It can probably be optimized/cleaned up, but I'll leave that to Antonino. Jurriaan, can you please apply this patch on top of 2.6.18-rc6-mm1 and report success or failure? Signed-off-by: Jean Delvare Cc: "Antonino A. Daplas" Cc: Jurriaan Signed-off-by: Andrew Morton --- drivers/video/savage/savagefb-i2c.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletion(-) diff -puN drivers/video/savage/savagefb-i2c.c~savagefb-use-generic-ddc-reading-fix drivers/video/savage/savagefb-i2c.c --- a/drivers/video/savage/savagefb-i2c.c~savagefb-use-generic-ddc-reading-fix +++ a/drivers/video/savage/savagefb-i2c.c @@ -218,7 +218,10 @@ int savagefb_probe_i2c_connector(struct struct savagefb_par *par = info->par; u8 *edid; - edid = fb_ddc_read(&par->chan.adapter); + if (par->chan.par) + edid = fb_ddc_read(&par->chan.adapter); + else + edid = NULL; if (!edid) { /* try to get from firmware */ _