开发者

Unlocking PAM on intel i5

I am trying to unlock PAM (Programmable Attribute Map) on intel i5 (HM55 chipset) so I could change Video BIOS a bit but I am unable to do so. Programmers manual says:

This register controls the read, write and shadowing attributes of the BIOS range from C_0000h to C_7FFFh. The Uncore allows programmable memory attributes on 13 legacy memory segments of various sizes in the 768 KB to 1 MB address range. Seven Programmable Attribute Map (PAM) registers are used to support these features. Cacheability of these areas is controlled using the MTRR register in the core.

Two bits are used to specify memory attributes for each memory segment. These bits apply to host accesses to the PAM areas. These attributes are: • RE – Read Enable. When RE=1, the host read accesses to the corresponding memory segment are claimed by the Uncore and directed to main memory. Conversely, when RE=0, the host read accesses are directed to DMI. • WE – Write Enable. When WE=1, the host write accesses to the corresponding memory segment are claimed by the Uncore and directed to main memory. Conversely, when WE=0, the host read accesses are directed to DMI.

                outl(0xcf8, 0x80000080);                                                                                                                                                          
                printf("Old pam1: %x pam2: %x\n",inb(0xcfd),inb(0xcfe));
                outl(0xcf8, 0x80000080);                                                                                                                                                          
                outb(0xcfd, 0x33);                                                                                                                                                                
                outb(0xcfe, 0x33);                                                                                                                                                                
                printf("New pam1: %x pam2: %x\n",inb(0xcfd),i开发者_运维问答nb(0xcfe));   

I am testing this from real mode (DOS) so this should be allowed to do. Example like this was shown in 915resolutions:

int unlock_bios_845g_865g() {
    // set permissions to read and write so I can write into shadowed VideoBIOS
    OUTL(0x80000090, 0xcf8);
    oldpam1 = inb(0xcfd);
    oldpam2 = inb(0xcfe);
    OUTL(0x80000090, 0xcf8);
    OUTB(0x33, 0xcfd);
    OUTB(0x33, 0xcfe);
    return 1;
}

but for my processor/chipset per (2nd Generation Intel® CoreTM Processor Family Mobile and Intel® Celeron® Processor Family Mobile):

B/D/F/Type: Address Offset: Reset Value: Access: Size: BIOS Optimal Default 0/0/0/PCI 81h 00h RW 8 bits 0h

so I use 81h as an offset.

Please advise, I.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜