09 Feb, 2010
3 commits
-
Some servers hardcode an edid in rom so that they will
work properly with KVMs. This is a port of the relevant
code from the ddx.[airlied: reworked to validate edid at boot stage - and
remove special quirk, if there is a valid EDID in the BIOS rom
we'll just try and use it.]Signed-off-by: Alex Deucher
Signed-off-by: Dave Airlie -
Some servers have two VGA ports but only report
one in the bios connector tables. On these systems
always set up the TV DAC so that it displays properly
even if the bios is wrong.Signed-off-by: Alex Deucher
Signed-off-by: Dave Airlie -
wire hw i2c support into radeon i2c algo.
fixes merged:
- handle bus probing correctly
- use meaningful error numbers
- abort if transaction fails
- The line mapping is different depending on the asic.
- protect hw i2c engine with a mutex
- rs300 doesn't have a pin select bit
- r200 has a different pin select setupSigned-off-by: Alex Deucher
Signed-off-by: Dave Airlie
05 Feb, 2010
11 commits
-
Currently just a wrapper around bit algo
Signed-off-by: Alex Deucher
Signed-off-by: Dave Airlie -
This was incorrect according to the docs and the UMS driver does
it like this.Signed-off-by: Dave Airlie
-
Boot testing on my rs480 laptop found the MC idle never happened
on startup, a quick check with AMD found the idle bit is in a different
place on the rs4xx than r300.Implement a new rs400 mc idle function to fix this.
Signed-off-by: Dave Airlie
-
this was incorrect on my rs480.
Signed-off-by: Dave Airlie
-
Support isn't correct yet and we are getting green tinges on the
displays.Signed-off-by: Dave Airlie
-
In suspend path we unmap the GART table while in cleaning up
path we will unbind buffer and thus try to write to unmapped
GART leading to oops. In order to avoid this we don't call the
suspend path in cleanup path. Cleanup path is clever enough
to desactive GPU like the suspend path is doing, thus this was
redondant.Tested on: RV370, R420, RV515, RV570, RV610, RV770 (all PCIE)
Signed-off-by: Jerome Glisse
Signed-off-by: Dave Airlie -
drivers/gpu/drm/radeon/radeon_combios.c: In function 'radeon_combios_get_lvds_info':
drivers/gpu/drm/radeon/radeon_combios.c:893: warning: comparison is always false due to limited range of data typeCc: Dave Airlie
Signed-off-by: Andrew Morton
Signed-off-by: Dave Airlie -
Fix ati_pcigart printk format warning:
drivers/gpu/drm/ati_pcigart.c:115: warning: format '%Lx' expects type 'long long unsigned int', but argument 3 has type 'dma_addr_t'
Signed-off-by: Randy Dunlap
Cc: Zhenyu Wang
Cc: Dave Airlie
Signed-off-by: Andrew Morton
Signed-off-by: Dave Airlie -
Cache flush is required in case CPU is accessing rendered data.
This fixes glean/readPixSanity test case and random rendering
errors in sauerbraten and warzone2100.v2 Fix comment ordering in r100_fence_ring_emit and remove extra
defines added in first version.Signed-off-by: Pauli Nieminen
Reviewed-by: Jerome Glisse
Signed-off-by: Dave Airlie -
It seems that some R6XX/R7XX silently ignore HDP flush when
programmed through ring, this patch addback an ioctl callback
to allow R6XX/R7XX hw to perform such flush through MMIO in
order to fix a regression. For more details see:http://bugzilla.kernel.org/show_bug.cgi?id=15186
Signed-off-by: Jerome Glisse
Signed-off-by: Dave Airlie -
VGA might be overwritting VRAM and corrupt our blit shader leading
to corruption, it likely won't happen if you load fbcon right after
radeon. Thanks to Shawn Starr and Andre Maasikas for tracking down
this issue.Signed-off-by: Jerome Glisse
Signed-off-by: Dave Airlie
01 Feb, 2010
16 commits
-
If radeon_cs_parser_init() fails, radeon_cs_ioctl() calls
radeon_cs_parser_fini() with the non-zero error value. The latter dereferenced
parser->ib which hasn't been initialized yet -> boom. Add a test for parser->ib
being non-NULL before dereferencing it.Signed-off-by: Michel Dänzer
Signed-off-by: Dave Airlie -
We are happy enough that the KMS driver is stable enough for enough people
for the kms enable/disable to leave staging. Distros can now contemplate
turning this on.Signed-off-by: Dave Airlie
-
If an error happen in r600_blit_prepare_copy report it rather
than WARNING and keeping execution. For instance if ib allocation
failed we did just warn about but then latter tried to access
NULL ib ptr causing oops. This patch also protect r600_copy_blit
with a mutex as otherwise one process might overwrite blit temporary
data with new one possibly leading to GPU lockup.Should partialy or totaly fix:
https://bugzilla.redhat.com/show_bug.cgi?id=553279V2 failing blit initialization is not fatal, fallback to memcpy when
this happen
V3 init blit before startup as we pin in startup, remove duplicate
code (this one was actualy tested unlike V2)Signed-off-by: Jerome Glisse
Signed-off-by: Dave Airlie -
Signed-off-by: Jakob Bornecrantz
Signed-off-by: Dave Airlie -
This fixes the driver not loading on older versions of VMware.
Signed-off-by: Peter Hanzel
Signed-off-by: Jakob Bornecrantz
Signed-off-by: Dave Airlie -
Signed-off-by: Jakob Bornecrantz
Signed-off-by: Dave Airlie -
Signed-off-by: Austin Yuan
Acked-by: Thomas Hellstrom
Signed-off-by: Dave Airlie -
Signed-off-by: Dave Airlie
-
Re-order structure ttm_ref_object to remove 8 bytes of alignment padding
on 64 bit builds, so shrinking its size from 72 to 64 bytes allowing it
to fit into a smaller slab.Signed-off-by: Richard Kennedy
Acked-by: Thomas Hellstrom
Signed-off-by: Dave Airlie -
if we get an error, release the AGP if we've acquired it already.
Signed-off-by: Dave Airlie
-
First call drm_agp_acquire to check if agp has been acquired.
Second call drm_agp_info to fill in the info data struct, including aper_size.
Finally do the check to see if the aper_size makes sense.Signed-off-by: John Kacur
Signed-off-by: Dave Airlie -
- Fix warning by using %zu instead of %d for size_t
- Fix spelling mistake, "to" should be "too".Signed-off-by: John Kacur
Signed-off-by: Dave Airlie -
Fixes errors like:
> reserve_ram_pages_type failed 0x15b7a000-0x15b7b000, track 0x8, req 0x10
when a BO is moved between WC and UC areas.Reported-by: Xavier Chantry
Signed-off-by: Francisco Jerez
Acked-by: Thomas Hellstrom
Signed-off-by: Dave Airlie -
booting a Lenovo W500 with LVDS + DP outputs showed up a TODO we had
on our list, to pick a correct digital encoder block. The LVTMA
encoder requires the second digital encoder, all others can use any
encoder at all.This fixes the digital encoder selection logic to enable LVDS/DP combos
to work okay.V2: fix silly addition of connector dig_block and cleanup the other
places in the code that pick the encoder.V3: rename to dig_encoder and clean up further - also fix
the picking algorithm.tested on Lenovo W500 + desktop 3650 cards.
Signed-off-by: Dave Airlie
-
On the W500 we have UNIPHY routed to both DVI and DP, this seems
to always pick the DVI connector which means link training fails.Switch to using active device to pick the connector, this seems
like it should be safe from a code review, and it fixes things
a bit more here.Signed-off-by: Dave Airlie
-
This makes displayport work again here.
Signed-off-by: Dave Airlie
25 Jan, 2010
10 commits
-
This just adds a little more info to the warning for old -ati/mesa
userspaces.Signed-off-by: Dave Airlie
-
These printks aren't required anymore.
Signed-off-by: Dave Airlie
-
commit 731b5a15a3b1474a41c2ca29b4c32b0f21bc852e
Author: James Simmons
Date: Thu Oct 29 20:39:07 2009 +0000drm/kms: properly handle fbdev blanking
uses DRM_MODE_DPMS_ON for FB_BLANK_NORMAL, but DRM_MODE_DPMS_ON
is actually for turning output on instead of blank.This makes fb blank broken on my T61, it put LVDS on but leave
pipe disabled which made screen totally white or caused some
'burning' effect.[airlied: James objects to this but at this point in 2.6.33,
I can't see a patch that will fix this properly like he wants coming
in time and otherwise this is a regression - proper fix for 2.6.34
hopefully.]Cc: James Simmons
Signed-off-by: Zhenyu Wang
Signed-off-by: Dave Airlie -
This is the least invasive fix without migrating the radeon driver
to pm_ops from what I can see. We just always migrate VRAM objects
on IGPs for now and we can fix it up later to migrate depending
on STR vs STD.Signed-off-by: Dave Airlie
-
Use VRAM whenever there is free space for DMA buffers,
but use system GMR memory if using VRAM would cause an eviction.This significantly reduces the guest system memory usage for
VMs with a large amount of VRAM allocated.Signed-off-by: Thomas Hellstrom
Signed-off-by: Dave Airlie -
This is needed to fix a vmwgfx memory usage bug.
Signed-off-by: Thomas Hellstrom
Signed-off-by: Dave Airlie -
* korg/drm-radeon-next:
drm/radeon/kms: fix legacy get_engine/memory clock
drm/radeon/kms/atom: atom parser fixes
drm/radeon/kms: clean up atombios pll code
drm/radeon/kms: clean up pll struct
drm/radeon/kms/atom: fix crtc lock ordering
drm/radeon: r6xx/r7xx possible security issue, system ram access
drm/radeon/kms: r600/r700 don't test ib if ib initialization fails
drm/radeon/kms: Forbid creation of framebuffer with no valid GEM object
drm/radeon/kms: r600 handle irq vector ring overflow
drm/radeon/kms: r600/r700 don't process IRQ if not initialized
drm/radeon/kms: r600/r700 disable irq at suspend
drm/radeon/kms/r4xx: cleanup atom path
drm/radeon/kms: fix atombios_crtc_set_base
drm/radeon/kms/atom: upstream parser updates
drm/radeon/kms/atom: fix some parser bugs
drm/radeon/kms: fix hardcoded mmio size in register functions
drm/radeon/kms/r100: fix bug in CS parser
drm/radeon/kms/r200: fix bug in CS parser
drm/radeon/kms/r200: fix bug in CS parser -
* 'nouveau/for-airlied' of ../drm-nouveau-next:
drm/nv50: prevent switching off SOR when in use for DVI-over-DP
drm/nv50: fail auxch transaction if reply count not what we expect
drm/nouveau: fix failure path if userspace specifies no valid memtypes
drm/nouveau: report LVDS as disconnected if lid closed
drm/nv50: prevent accidently turning off encoders we're actually using
drm/nv50: fix alignment of per-channel fifo cache
drm/nouveau: Evict buffers in VRAM before freeing sgdma
drm/nouveau: Acknowledge DMA_VTX_PROTECTION PGRAPH interrupts
drm/nouveau: fix thinko in nv04_instmem.c
drm/nouveau: fix a race condition in nouveau_dma_wait() -
Resending this with Thomas Hellstrom's signoff for merging into 2.6.33
ttm_bo_delayed_delete has a race condition, because after we do:
kref_put(&nentry->list_kref, ttm_bo_release_list);we are not holding the list lock and not holding any reference to
objects, and thus every bo in the list can be removed and freed at
this point.However, we then use the next pointer we stored, which is not guaranteed
to be valid.This was apparently the cause of some Nouveau oopses I experienced.
This patch rewrites the function so that it keeps the reference to nentry
until nentry itself is freed and we already got a reference to nentry->next.v2 updated by me according to Thomas Hellstrom's feedback.
v3 proposed by Thomas Hellstrom. Commit comment updated by me.Both updates fixed minor efficiency/style issues only and all three versions
should be correct.Signed-off-by: Luca Barbieri
Signed-off-by: Thomas Hellstrom
Signed-off-by: Dave Airlie -
Another hack because of us exposing each encoder block's function as
an encoder rather than exposing a single encoder that deals with them
all.A proper fix will come, it's just rather invasive so this hack will
do until then.Signed-off-by: Ben Skeggs