mirror of
https://github.com/genodelabs/genode.git
synced 2025-03-23 04:25:21 +00:00
intel_fb: support larger resolutions
Increase "assumed" internal kernel memory size based on available memory to support allocation of framebuffer larger than 16M, which was before hardcoded. Issue #4659
This commit is contained in:
parent
5df68922eb
commit
72217a6771
@ -216,7 +216,7 @@ append config {
|
||||
|
||||
append_if $use_gpu config {
|
||||
<start name="intel_gpu_drv" caps="2000">
|
||||
<resource name="RAM" quantum="40M"/>
|
||||
<resource name="RAM" quantum="90M"/>
|
||||
<provides>
|
||||
<service name="Gpu"/>
|
||||
<service name="Platform"/>
|
||||
@ -241,7 +241,7 @@ append_if $use_gpu config {
|
||||
append config {
|
||||
<start name="intel_fb_drv" caps="1000">
|
||||
<binary name="pc_intel_fb_drv"/>
|
||||
<resource name="RAM" quantum="60M"/>
|
||||
<resource name="RAM" quantum="90M"/>
|
||||
<route>}
|
||||
|
||||
append_if $use_gpu config {
|
||||
|
@ -48,3 +48,9 @@ unsigned short emul_intel_gmch_control_reg()
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
unsigned long long emul_avail_ram()
|
||||
{
|
||||
return Lx_kit::env().env.pd().avail_ram().value;
|
||||
}
|
||||
|
@ -333,9 +333,6 @@ void i915_gem_driver_register(struct drm_i915_private * i915)
|
||||
|
||||
void i915_gem_init_early(struct drm_i915_private *dev_priv)
|
||||
{
|
||||
/* 4 * 4M XXX */
|
||||
unsigned const ram_pages = 4 * 1024;
|
||||
|
||||
i915_gem_init__mm(dev_priv);
|
||||
/*
|
||||
i915_gem_init__contexts(dev_priv);
|
||||
@ -345,7 +342,15 @@ void i915_gem_init_early(struct drm_i915_private *dev_priv)
|
||||
|
||||
spin_lock_init(&dev_priv->fb_tracking.lock);
|
||||
|
||||
totalram_pages_add(ram_pages);
|
||||
/*
|
||||
* Used by resource_size() check in shmem_get_pages in
|
||||
* drivers/gpu/drm/i915/gem/i915_gem_shmem.c and initialized in
|
||||
* i915_gem_shmem_setup() using totalram_pages()
|
||||
*
|
||||
* The memory is managed by Genode, so we have just to provide a
|
||||
* value which is "big" enough truncated by the max available memory.
|
||||
*/
|
||||
totalram_pages_add(emul_avail_ram() / 4096);
|
||||
}
|
||||
|
||||
|
||||
|
@ -44,13 +44,9 @@ void intel_wopcm_init_early(struct intel_wopcm * wopcm)
|
||||
|
||||
void si_meminfo(struct sysinfo * val)
|
||||
{
|
||||
/* 4M, ttm actually use only half - more or configurable XXX ? */
|
||||
unsigned const ram_pages = 1024;
|
||||
unsigned long long const ram_pages = emul_avail_ram() / PAGE_SIZE;
|
||||
|
||||
/* used by drivers/gpu/drm/ttm/ttm_device.c */
|
||||
|
||||
lx_emul_trace(__func__);
|
||||
|
||||
val->totalram = ram_pages;
|
||||
val->sharedram = 0;
|
||||
val->freeram = ram_pages;
|
||||
@ -58,6 +54,8 @@ void si_meminfo(struct sysinfo * val)
|
||||
val->totalhigh = 0;
|
||||
val->freehigh = 0;
|
||||
val->mem_unit = PAGE_SIZE;
|
||||
|
||||
lx_emul_trace(__func__);
|
||||
}
|
||||
|
||||
|
||||
|
@ -38,6 +38,8 @@ unsigned short emul_intel_gmch_control_reg(void);
|
||||
|
||||
enum { OPREGION_PSEUDO_PHYS_ADDR = 0xffffefff };
|
||||
|
||||
unsigned long long emul_avail_ram(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user