Re: gpu sharing layer for kernel



Hi Dave,

airlied@xxxxxxxx writes:

This patch series contains the gpu sharing layer for kernel that
I've mentioned before. It should apply against Linus's git tree.

I gave the patches a go on my PowerBook. I had to make a few changes
to get it to compile. Works fine so far: I switched between VTs and X
with an accelerated GLX client active a few times, no problems.

When I did a sleep/resume cycle it wedged on resume, but I expect this
is due to my hacking up radeonfb_early_resume(), as seen in the last
hunk below, which was just aimed at just getting it to compile.


diff --git a/drivers/video/aty/radeon_backlight.c b/drivers/video/aty/radeon_backlight.c
index 3abfd4a..560568b 100644
--- a/drivers/video/aty/radeon_backlight.c
+++ b/drivers/video/aty/radeon_backlight.c
@@ -105,7 +105,7 @@ static int radeon_bl_update_status(struct backlight_device *bd)
RADEON_PIXCLK_LVDS_ALWAYS_ON bit is off
*/
tmpPixclksCntl = INPLL(PIXCLKS_CNTL);
- if (rinfo->is_mobility || rinfo->is_IGP)
+ if (rinfo->gpu_info->is_mobility || rinfo->gpu_info->is_IGP)
OUTPLLP(PIXCLKS_CNTL, 0, ~PIXCLK_LVDS_ALWAYS_ONb);
lvds_gen_cntl &= ~(LVDS_BL_MOD_LEVEL_MASK | LVDS_BL_MOD_EN);
lvds_gen_cntl |= (radeon_bl_get_level_brightness(pdata, 0) <<
@@ -119,7 +119,7 @@ static int radeon_bl_update_status(struct backlight_device *bd)
rinfo->pending_lvds_gen_cntl = lvds_gen_cntl;
mod_timer(&rinfo->lvds_timer,
jiffies + msecs_to_jiffies(rinfo->panel_info.pwr_delay));
- if (rinfo->is_mobility || rinfo->is_IGP)
+ if (rinfo->gpu_info->is_mobility || rinfo->gpu_info->is_IGP)
OUTPLL(PIXCLKS_CNTL, tmpPixclksCntl);
}
rinfo->init_state.lvds_gen_cntl &= ~LVDS_STATE_MASK;
@@ -176,10 +176,10 @@ void radeonfb_bl_init(struct radeonfb_info *rinfo)
* direction backlight should work on a given panel?
*/
pdata->negative =
- (rinfo->family != CHIP_FAMILY_RV200 &&
- rinfo->family != CHIP_FAMILY_RV250 &&
- rinfo->family != CHIP_FAMILY_RV280 &&
- rinfo->family != CHIP_FAMILY_RV350);
+ (rinfo->gpu_info->family != CHIP_FAMILY_RV200 &&
+ rinfo->gpu_info->family != CHIP_FAMILY_RV250 &&
+ rinfo->gpu_info->family != CHIP_FAMILY_RV280 &&
+ rinfo->gpu_info->family != CHIP_FAMILY_RV350);

#ifdef CONFIG_PMAC_BACKLIGHT
pdata->negative = pdata->negative ||
diff --git a/drivers/video/aty/radeon_base.c b/drivers/video/aty/radeon_base.c
index f634c43..c8cc173 100644
--- a/drivers/video/aty/radeon_base.c
+++ b/drivers/video/aty/radeon_base.c
@@ -1837,7 +1837,8 @@ static int radeonfb_set_par(struct fb_info *info)

#ifdef CONFIG_BOOTX_TEXT
/* Update debug text engine */
- btext_update_display(rinfo->fb_base_phys, mode->xres, mode->yres,
+ btext_update_display(rinfo->gpu_info->fb_base_phys,
+ mode->xres, mode->yres,
rinfo->depth, info->fix.line_length);
#endif

diff --git a/drivers/video/aty/radeon_monitor.c b/drivers/video/aty/radeon_monitor.c
index 8625f5d..4cd4f34 100644
--- a/drivers/video/aty/radeon_monitor.c
+++ b/drivers/video/aty/radeon_monitor.c
@@ -122,7 +122,7 @@ static int __devinit radeon_probe_OF_head(struct radeonfb_info *rinfo, int head_
while (dp == NULL)
return MT_NONE;

- if (rinfo->has_CRTC2) {
+ if (rinfo->gpu_info->has_CRTC2) {
const char *pname;
int len, second = 0;

@@ -141,7 +141,7 @@ static int __devinit radeon_probe_OF_head(struct radeonfb_info *rinfo, int head_
/* Maybe check for LVDS_GEN_CNTL here ? I need to check out
* what OF does when booting with lid closed
*/
- if (mt == MT_DFP && rinfo->is_mobility)
+ if (mt == MT_DFP && rinfo->gpu_info->is_mobility)
mt = MT_LCD;
return mt;
} else if (pname[len-1] == 'B' && head_no == 1)
@@ -655,7 +655,7 @@ static void radeon_fixup_panel_info(struct radeonfb_info *rinfo)
* PPC only for now...
*/
if (!rinfo->panel_info.use_bios_dividers && rinfo->mon1_type == MT_LCD
- && rinfo->is_mobility) {
+ && rinfo->gpu_info->is_mobility) {
int ppll_div_sel;
u32 ppll_divn;
ppll_div_sel = INREG8(CLOCK_CNTL_INDEX + 1) & 0x3;
diff --git a/drivers/video/aty/radeon_pm.c b/drivers/video/aty/radeon_pm.c
index 9a59804..f113616 100644
--- a/drivers/video/aty/radeon_pm.c
+++ b/drivers/video/aty/radeon_pm.c
@@ -957,7 +957,7 @@ static void radeon_pm_setup_for_suspend(struct radeonfb_info *rinfo)
#ifdef CONFIG_PPC_PMAC
if (machine_is(powermac)) {
/* AGP PLL control */
- if (rinfo->family <= CHIP_FAMILY_RV280) {
+ if (rinfo->gpu_info->family <= CHIP_FAMILY_RV280) {
OUTREG(BUS_CNTL1, INREG(BUS_CNTL1) | BUS_CNTL1__AGPCLK_VALID);
OUTREG(BUS_CNTL1,
(INREG(BUS_CNTL1) & ~BUS_CNTL1__MOBILE_PLATFORM_SEL_MASK)
@@ -2817,7 +2817,7 @@ static void radeonfb_early_resume(void *data)
struct radeonfb_info *rinfo = data;

rinfo->no_schedule = 1;
- radeonfb_pci_resume(rinfo->pdev);
+ radeonfb_gpu_resume(rinfo->gpu_info->info.device);
rinfo->no_schedule = 0;
}
#endif /* CONFIG_PPC_OF */


--
Paul Collins
Wellington, New Zealand

Dag vijandelijk luchtschip de huismeester is dood
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • Re: 2.6.19-rc6-rt8
    ... attached patch to making it compile and works in my PowerBook G4. ... +#ifdef CONFIG_HOTPLUG_CPU ...
    (Linux-Kernel)
  • Re: A scope problem??
    ... Multiple inclusions are a bane ... five or more times to compile a single C source file. ... The #ifdef trick ... Now if rearranging the way headers are included could reduce the ...
    (comp.lang.c)
  • Re: About third parties
    ... There is not that much of a difference from Delphi release to release, requiring you to wait for all new source. ... Compile and install packages ... Look for the latest Delphi version referenced ($IFDEF VERXXX, ...
    (borland.public.delphi.non-technical)
  • Re: Detecting type of variable ?
    ... The mBooleanTypeIs solution code does not compile, ... {$IFDEF BOOL_DOUBLE} ... TBoolean = Boolean; ...
    (alt.comp.lang.borland-delphi)
  • Re: [PATCH] mm: dont use ZONE_DMA unless CONFIG_ZONE_DMA is set in setup.c
    ... Dave Jones wrote: ... This wraps it with an #ifdef. ... you could hit this compile failure. ...
    (Linux-Kernel)