[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#383465: Contains obfuscated source code, DFSG violation?



Package: xserver-xorg-video-nv
Version: 1:1.0.1.5-2
Severity: serious

The nv driver appears to be heavily obfuscated and is effectively 
unmodifiable. Rather than symbolic constants, almost every reference to 
hardware is performed using undocumented hex. The only registers that 
appear to be documented are the legacy CRTC ones which are effectively 
identical over all hardware. Take for example NVBacklightEnable:

    if((pNv->Chipset == 0x10DE0179) || 
       (pNv->Chipset == 0x10DE0189) || 
       (pNv->Chipset == 0x10DE0329))
    {
       /* NV17,18,34 Apple iMac, iBook, PowerBook */
      CARD32 tmp_pmc, tmp_pcrt;
      tmp_pmc = pNv->PMC[0x10F0/4] & 0x7FFFFFFF;
      tmp_pcrt = pNv->PCRTC0[0x081C/4] & 0xFFFFFFFC;
      if(on) {
          tmp_pmc |= (1 << 31);
          tmp_pcrt |= 0x1;
      }
      pNv->PMC[0x10F0/4] = tmp_pmc;
      pNv->PCRTC0[0x081C/4] = tmp_pcrt;
     }

The idea that nvidia do not posess an electronic list of register names 
and offsets is entirely implausible. The only rational explanation is 
that register information is postprocessed out in order to reduce 
information leakage. The shipped code is certainly not the preferred 
form for modification, and according to prevailing attitudes on 
debian-legal should be removed from Debian.

-- 
Matthew Garrett | mjg59@srcf.ucam.org



Reply to: