brucech...@via.com.tw wrote: > Hello Sirs: > This patch is to solve the video hang issue caused by verification > function. These 3 patches has been verified in (1) CX700M platform (2) CLE266 > platform (3) K8M800 platform (4) CN400 platform with UniChrome/OpenChrome > driver except few of these platform is not supported by UniChrome such as > CX700 chipset. > > Signed-off-by Bruce C. Chang <brucech...@via.com.tw> > > diff -ruN old/drivers/gpu/drm/via/via_3d_reg.h > new/drivers/gpu/drm/via/via_3d_reg.h > --- old/drivers/gpu/drm/via/via_3d_reg.h 2009-10-22 13:01:06.000000000 > +0800 > +++ new/drivers/gpu/drm/via/via_3d_reg.h 2009-10-22 13:11:31.000000000 > +0800 > @@ -1647,4 +1647,6 @@ > #define VIA_VIDEO_HEADER6 0xFE050000 > #define VIA_VIDEO_HEADER7 0xFE060000 > #define VIA_VIDEOMASK 0xFFFF0000 > +#define INV_DUMMY_MASK 0xFF000000 > +#define HALCYON_HEADER_MASK 0xFE000000 > #endif > diff -ruN old/drivers/gpu/drm/via/via_verifier.c > new/drivers/gpu/drm/via/via_verifier.c > --- old/drivers/gpu/drm/via/via_verifier.c 2009-10-22 13:01:06.000000000 > +0800 > +++ new/drivers/gpu/drm/via/via_verifier.c 2009-10-22 13:05:49.000000000 > +0800 > @@ -227,7 +227,10 @@ > {0xf2, check_for_header2_err}, > {0xf0, check_for_header1_err}, > {0xcc, check_for_dummy}, > - {0x00, check_number_texunits} > + {0x00, check_number_texunits}, > + {0x01, no_check}, > + {0x02, no_check}, > + {0x03, no_check} > }; > > static hazard_t table1[256]; > @@ -768,11 +771,12 @@ > DRM_ERROR("Invalid VIDEO DMA command. " > "Attempt to access 3D- or command burst area.\n"); > return 1; > - } else if ((address > 0xCFF) && (address < 0x1300)) { > + } else if ((address > 0xDFF) && (address < 0x1200)) { > DRM_ERROR("Invalid VIDEO DMA command. " > "Attempt to access PCI DMA area.\n"); > return 1; > - } else if (address > 0x13FF) { > + } else if (((address > 0x13FF) && (address < 0x2200)) || > + (address > 0x33ff)) { > DRM_ERROR("Invalid VIDEO DMA command. " > "Attempt to access VGA registers.\n"); > return 1; > @@ -791,10 +795,11 @@ > return 1; > } > while (dwords--) { > - if (*buf++) { > + if (*buf && !is_dummy_cmd(*buf)) { > DRM_ERROR("Illegal video command tail.\n"); > return 1; > } > + buf++; > } > *buffer = buf; > return 0; > diff -ruN old/drivers/gpu/drm/via/via_verifier.h > new/drivers/gpu/drm/via/via_verifier.h > --- old/drivers/gpu/drm/via/via_verifier.h 2009-10-22 13:01:06.000000000 > +0800 > +++ new/drivers/gpu/drm/via/via_verifier.h 2009-10-22 13:05:49.000000000 > +0800 > @@ -25,7 +25,7 @@ > > #ifndef _VIA_VERIFIER_H_ > #define _VIA_VERIFIER_H_ > - > +#include "via_3d_reg.h" > typedef enum { > no_sequence = 0, > z_address, > @@ -59,4 +59,31 @@ > extern int via_parse_command_stream(struct drm_device *dev, const uint32_t > *buf, > unsigned int size); > > +static inline int is_agp_header(unsigned int data) > +{ > + if (data == HALCYON_HEADER2) > + return 1; > + else if ((data & VIA_VIDEOMASK) == VIA_VIDEO_HEADER5) > + ; > + else if ((data & VIA_VIDEOMASK) == VIA_VIDEO_HEADER6) > + ; > + else if ((data & HALCYON_HEADER_MASK) == HALCYON_HEADER1) > + ; > + else > + return 0; > + > + return 1; > +} > + > +static inline int is_dummy_cmd(uint32_t cmd) > +{ > + if ((cmd & INV_DUMMY_MASK) == 0xCC000000 || > + (cmd & INV_DUMMY_MASK) == 0xCD000000 || > + (cmd & INV_DUMMY_MASK) == 0xCE000000 || > + (cmd & INV_DUMMY_MASK) == 0xCF000000 || > + (cmd & INV_DUMMY_MASK) == 0xDD000000) > + return 1; > + return 0; > +} > + > #endif > > Thanks and Best Regards > ================================================= > Bruce C. Chang(張祖明) > VIA Technologies, Inc. > Address: 1F, 531, Chung-Cheng Road, Hsin-Tien, 231 Taipei > Tel: +886-2-22185452 Ext 7323 > Mobile: +886-968343824 > Fax: +886-2-22186282 > Skype: Bruce.C.Chang > Email: brucech...@via.com.tw > Acked-By: Thomas Hellstrom <thellst...@vmware.com>
------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july -- _______________________________________________ Dri-devel mailing list Dri-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/dri-devel