MXM Structure not found or invalid..., DELL XPS one A2010

Discussion in 'Desktop Hardware' started by tsalat, May 31, 2017.

  1. tsalat

    tsalat Newbie

    Likes Received:
    Trophy Points:

    i really hope that some can help me because iam already mad / lost and so on in this. I own an old AIO system from DELL, XPS A2010. Its an all in one computer and i would say a hybrid between a notebook and a desktop PC. The AIO has an LGA775 socket, standard DDR2 RAM size but an MXM slot for he GPU. Currently there is a ATI HD2400 256mb card in but i would like to change it to something more powerful. I actually didnt find anyone who made this and therefore there isnt any reference i could follow. I already changed the CPU to an E5450 xeon and it needs some better GPU now :)

    Anyway, i bought a Quadro FX770m card for try. The card fits there but upon the boot i hear beeps for 30sec. I didnt know what it was but few days ago i found out that its the "MXM Structure not found or invalid..." coming from the VBIOS. Well, the beeps are not the main problem. The problem is that the screen is black, all the time, even while booting. However, the card is recognized in windows and so on. Obviously its compatible by HW but not across the VBIOS and SBIOS.

    I searched first inside the SBIOS for a trace of the ATI card. Found a entry about it, see below but to be honest i have no idea what it does, assembler is not something iam good in.

    BIOS_F:86C0                 dec     bp
    BIOS_F:86C1                 inc     bp
    BIOS_F:86C2                 dec     cx
    BIOS_F:86C3                 dec     si
    BIOS_F:86C4                 inc     si
    BIOS_F:86C5                 dec     di
    BIOS_F:86C6                 add     [di], ax
    BIOS_F:86C8                 pushad
    BIOS_F:86CA                 xor     ah, ah
    BIOS_F:86CC                 mov     dx, 8
    BIOS_F:86CF                 call    sub_F2BEA
    BIOS_F:86D4                 inc     bx
    BIOS_F:86D5                 jz      short loc_F8712
    BIOS_F:86D7                 mov     ah, 8Ch ; 'î'
    BIOS_F:86D9                 mov     ebx, 2261028h              - SUBSYS
    BIOS_F:86DF                 mov     dx, 8
    BIOS_F:86E2                 call    sub_F2C05
    BIOS_F:86E7                 mov     dx, 8
    BIOS_F:86EA                 mov     ah, 19h
    BIOS_F:86EC                 call    sub_F2B5D
    BIOS_F:86F1                 mov     dh, al
    BIOS_F:86F3                 mov     dl, 0
    BIOS_F:86F5                 mov     ah, 0
    BIOS_F:86F7                 call    sub_F2BEA
    BIOS_F:86FC                 cmp     ebx, 94C91002h             - DEV/VEN
    BIOS_F:8703                 jnz     short loc_F8712
    BIOS_F:8705                 mov     ah, 4Ch ; 'L'
    BIOS_F:8707                 mov     ebx, 2261028h              - SUBSYS
    BIOS_F:870D                 call    sub_F2C05
    BIOS_F:8712 loc_F8712:                              ; CODE XREF: BIOS_F:86D5 j
    BIOS_F:8712                                         ; BIOS_F:8703 j
    BIOS_F:8712                 popad
    BIOS_F:8714                 retf
    At first i thought that its just a simple whitelist, however changing the values will not do much. I have no idea what to try next. I mean no clue where to search. Iam not sure if there is any MXM structure inside the SBIOS, if not what does it means? How the ATI card could work? If there isnt anything, why the FX770m is not working? well, i really hope that someone could help me here or give a clue what to try.

    i attached the memory dump from the RWEverything if someone would like to look in the SBIOS.

    any help would be much appreciated. Tomas
  2. tsalat

    tsalat Newbie

    Likes Received:
    Trophy Points:
    Hi everyone!

    i spent lots of time by trying to solve an issue with a new GPU inside XPS A2010 (9600m GT 512DDR3) and i guess iam almost at the end :) The A2010 has an MXM II slot with an ATI HD2400 card inside and therefore its theoretical changeable but while plugging another GPU inside you got a black screen and so on... Anyway, i was chating with one guy who did some modding in the past and figure out that no MXM structure is inside the BIOS. Well, this means that the vBIOS of the ATI card was customized for the machine and no other vBIOS would work. He injected the MXM structure inside the BIOS and it was light :). The screen went online with the BIOS with MXM structure but the fans (sys) are running full speed and if i install drivers for the card the screen goes black or distorted. Its not a driver issue, i tried at least 20x different drivers through 3x OS (XP, 7 and 10) but i noticed that the display is missing from the device manager after installing drivers or better, while the ATI card is plugged in, everything is working but when i plug the nVidia card the display is missing or wrongly detected with no EDID. Therefore the machine more likely refuse the new card due to missing mxm structure inside the DSDT table. Well sounds easy, its not :(

    I tried to figure this out but i have no idea what to inject, what to change and so on inside the DSDT table. Hence, anyone has some experience with DSDT edit? - bellow link to the DSDT table. Any suggestions?, with MXM structure

    Anyone any suggestion at least? It looks like the BIOS is still refusing the new GPU card for some reason and from this the fans are running full speed and afterwards i get problems with the monitor (no EDID). Iam completely lost here and i have no idea what to try. Iam even not sure if its really the DSDT table or not, the fans are starting at full speed while the BIOS check, so not after the power button is pressed, just some seconds later after the DELL logo appears and the bios beeps/check starts. I dont know where to start to dig in, try to change or similar and any suggestion or help will be appreciated. If any info is missing just let me know.

    If there is anyone willing and able to solve this iam open to send him a nVidia FX770m (MXM II) as "thank you". I have no use for it anyway. Tomas
  3. tsalat

    tsalat Newbie

    Likes Received:
    Trophy Points:
    Well, did it :)

    In the first place, the XPS A2010 which is was modding has an MXM II slot but no entry about the MXM structure inside system BIOS. The reason why its not there is because they modified the video BIOS of the default ATI card to inject this while loading the vBIOS into the memory. Therefore there wasnt anything mentioned about the MXM interface in the DSDT as well, thats logicaly [​IMG] why it should be there in the first place [​IMG]

    Hence, i had to modify all these to make it work. One user injected the MXM structure inside the system BIOS according to the MXM specification 2.1. Wasnt so hard i believe but you need to place there appropriated callbacks for the BIOS to load these, this is something which i cant explain more to be honest. The MXM structure consists from information like the interfaces to which the card can push the signal (internal LCD and so on), maximum power, maximum cooling capabilities and so on. Right after the MXM structure, EDID for the LCD can be add if the LCD doesnt have EDID pins to identify himself. Well, this was the part which add absolutely new feature to the system BIOS and the new card started to work with 3 major problems:
    • The performance was set to throttling
    • The picture was ok without the drivers but bad, and i mean really like distorted signal, after installing the drivers
    • The fans were all the time at full speed (system and CPU)

    Now, the first two problems are a DSDT issue. Because no MXM structure was present before no was added to the description table. Problem is that the DSDT table has some length. IF you want to inject it back to the SBIOS it has to be the same size or smaller. I was lucky because the XPS has a on-board GPU as well. Well, i deleted it from the DSDT table to make room together with some OS entries. The on-board GPU is in this case never active, even with the default DSDT, and therefore no sense to keep it there. After making room i added the MXM structure according to the MXM specification, you can compare both *.dsl files which are attached to see the changes. The MXM structure has an buffer which is equal to the structure which was injected to the SBIOS. This solved the performance problem. To solve the LCD problem i added the _DDC method to the LCD and created an buffer with the EDID of the LCD. This solved the LCD problem.

    Now, the fans were a bit more tricky. The DSDT doesnt have any Thermalzone and neither embedded controllers inside. Therefore the DSDT cant be the problem. The SBIOS could have some white list but no error at all. After some time i realized that the Fintek microchip which should control the fans is not used for that but instead Intel QST is controlling it. Well, dammit [​IMG] The Intel ME is not a part of the SBIOS but, i was lucky here, i found tools which could manipulate with the QST config. I looked on the status and realized that while changing the GPU the address of the fan changed and therefore the QST was in an emergency mod and set all fans to 100%. Well, dumped the settings, removed the GPU sensor and its done [​IMG]

    i hope that this will help someone [​IMG] Tomas

    Attached Files:

    t456 and namaiki like this.

Share This Page