lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 13 Nov 2013 19:34:19 +0100
From:	Andreas Werner <wernerandy@....de>
To:	linux-kernel@...r.kernel.org
Subject: Black screen with GMA500 driver on Atom E680 (invalid VBT signature)

I´ve a question about the GMA 500 driver (gma500_gfx) with an Intel Atom E680.

Since the gma500 driver is in the Kernel, i get a black screen after loading
the driver.

The last message i can see are "Invalid VBT signature".
I have check the driver file "intel_bios.c" and there the driver map
the bios rom and search for the string "$VBT", but the driver cannot
find the string and return with "Invalid VBT signature".

Above the function with the relevant code.

int psb_intel_init_bios(struct drm_device *dev)
{
        struct drm_psb_private *dev_priv = dev->dev_private;
        struct pci_dev *pdev = dev->pdev;
        struct vbt_header *vbt = NULL;
        struct bdb_header *bdb = NULL;
        u8 __iomem *bios = NULL;
        size_t size;
        int i;


        dev_priv->panel_type = 0xff;

        /* XXX Should this validation be moved to intel_opregion.c? */
        if (dev_priv->opregion.vbt) {
                struct vbt_header *vbt = dev_priv->opregion.vbt;
                if (memcmp(vbt->signature, "$VBT", 4) == 0) {
                        DRM_DEBUG_KMS("Using VBT from OpRegion: %20s\n",
                                         vbt->signature);
                        bdb = (struct bdb_header *)((char *)vbt + vbt->bdb_offset);
                } else
                        dev_priv->opregion.vbt = NULL;
        }

        if (bdb == NULL) {
                bios = pci_map_rom(pdev, &size);
                if (!bios)
                        return -1;
             /* Scour memory looking for the VBT signature */
                for (i = 0; i + 4 < size; i++) {
                        if (!memcmp(bios + i, "$VBT", 4)) {
                                vbt = (struct vbt_header *)(bios + i);
                                break;
                        }
                }

                if (!vbt) {
                        dev_err(dev->dev, "VBT signature missing\n");
                        pci_unmap_rom(pdev, bios);
                        return -1;
                }
                bdb = (struct bdb_header *)(bios + i + vbt->bdb_offset);
        }

        /* Grab useful general dxefinitions */
        parse_general_features(dev_priv, bdb);
        parse_driver_features(dev_priv, bdb);
        parse_lfp_panel_data(dev_priv, bdb);
        parse_sdvo_panel_data(dev_priv, bdb);
        parse_sdvo_device_mapping(dev_priv, bdb);
        parse_device_mapping(dev_priv, bdb);
        parse_backlight_data(dev_priv, bdb);
        parse_edp(dev_priv, bdb);

        if (bios)
                pci_unmap_rom(pdev, bios);

        return 0;
}


My question now is, is it a bug in the driver or in the VGA Bios?

I´ve checked the VGA bios and did a hex dump but there is really no "$VBT" string.
On an Atom Gen1 CPU with intel GMA500 Graphic there is the string in the VGA BIOS.
But if i create the VGA BIOS for intel Atom E680 which has a GMA600 Graphic
there is no string.

Does anybody of you running the GMA500 driver with and Atom E680 without having this
problem? Or does anybody know how to get this string into the VGA BIOS?


Regards 
Andy


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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ