From 1bbc81207e899bbdc07b9e792fbb57bef5e835b2 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Tue, 19 Oct 2021 16:08:29 -0300 Subject: [PATCH] acpi: Add SMI trap information to display --- acpi/ACPI.EXE | Bin 23616 -> 24558 bytes acpi/acpi.c | 81 ++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 62 insertions(+), 19 deletions(-) diff --git a/acpi/ACPI.EXE b/acpi/ACPI.EXE index 6f9f1025281435d24b20bb6e7761deca3677e3f5..908749f3961a895db9c9a00cd280b407286b05aa 100644 GIT binary patch delta 6337 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 delta 5301 zcmZ8l4O~;lmY;ib@6An!d>cLuU=cy7O%zc<0xCv}icu<3wAkI+_O)xf?`fiaT{YoF zYKDupb-MlG+qQ~veJtzxwo8Az5%*~%Ht~bDsQsYO`cZ9rLy%hSLyDU0nIQIc!!J2A z=RfDnIWy;+nPKn*<8d>#WwmAKF(e=kwV`mhpGP7>6>5Ys(defE+Hp|`4Z-(I4MLAE zK&V()&Od-rSMdHD@EPkOvpXKi@v54t71gWow~hhUdD3}NAI3e-bGY|t8NyzDkNh5w zy=M1BWR`8ID#t0#e$9?A+0T{X-Wz7e#~i+O!|W~r^uFjgCAh1hbsJjjE>pLKm;tyE1X_4;241;O;SerRpJi>j(D@fZi2tpcW52 zRrll?FbFKK6>Adpy`wA| z;{+ABvp)Qq-I`sJ@H=aUTY=2g?j>Mc4a^{PfZR=)4Fy*Q&Y{3@RKNY+s#t4M{m3(K zS>x!~MpHaR5RfXJr;h#2~UUBoX;G}ecOIEx~1J5;h-Zyk1X)Krl*%Wsa3>flfiyJrK# z4h+`KAlT$}fv@hH-D)Hkkw=u-%y_a`nGye2{+HDf%=mNpUGjV7PG&7(#L2b-er04C zwN1UdO#RVDxvW$&4T7p#uR9&d<9`jy6HDKaOgDp<&29n7!(2^OHTL4qeL|e5@CgYb z>WCHHu}D55?$?S=Wuq=hbf$x8bu{)^B>T7;I+i^Es5VLLh|P@*w~H{w3ogosxRr(r z?*HcGJt7#uqQF0Mk*Ri*PelFfXoy~}YQ;)J-%(^A(R(_EHG}Xwq8WtNzz&Z!5!#e$ ze8N(W^$E+k%%C3kkQh~JdHv7GZjEm6Sk)9{C>VR!Zd}SCtEOs&do8SFDhC^|e<`QG zUK`04Sjf*5HKSS1HRdek$X-<*s|u5Onncp0Dvn-0<8)nGE|(xkK3?nX4<*O+IS>1sx!8dy&GS+3UGq^;z<#iuqUOg(j{r&u`6 zZxNchi-k(g!g!-=-AhyussS@ktm7uxVEHR~8Uky)RV!hG9mX~eZI71d%E`YKu&*Q>w#4C^bs%60N4IepMh0d3a*+)NI$F8F$3j&k$kcw*&_Aj0 zMclc|G~_o8|3xMLPdrSt#yc8>P&&k2)g&c4sptq)9(&Fa?i0s%dOA%-BJQNqsOG9I zyi>U#*zXt#Ta)LUvnYpzBV49soZ$>Uttvdikr$&Eu2|0RK6&i0%HfT%U%Q!ub*K59 zCS515_-d51`@D1wxMz9k;`#p3zZ|>K$0KWr6wRV0&(zb!=Ql>dnz;W#-E=nap<+)= zqT0hty^5ZkmQJ4NVkS(1IXZJBBdEs4tDs-F##E|(s9zCo&5v!c~$#l={Hiz*%7?A9~qH&$)o1!oB zuFrsc!MnZ$(#OxZ;l8YKeGTo)ygQ8K@8acs@#c=@Br8@MR|!`BZ@#+9yt3(&-IqJI zsmbEl332smsC^%leUvrB(-A`@$mZBx%yPoT<+D=~$@I7!+uCG^bf~5HB>r4l#O|H* z`BuT2H0R`&1j)up3%RLEVA;l5xj82{DIrVO)jjF8KQH{i#27qz%h})$v;s(5ILebO zoPQCE5S|73J{H&5hcDym&``M`Sn7t#m9f^jjuFNxO6Ba{JijgFytI~+7IFS^D#%II zA$(UV7wzkXpsY=%dz=f~ZhgcZ4%7Np=ar`>H+U>xG+eL_G@RKc%VG-l`8gE|ejQxx z7-22dpxv?x;N_r39!$ojA(#qZ+>5J+rRt%)PTY-0(&~mIjkC6tUVK|dVNjVmHn+Sl ziO$Q@aKmsQ=)wk1&=JfF>Z#56Ha3mm>U($?pOyU~5WG4jIJIsht@2**ggg*}xdWwP zc|$Vxf#uY`Kv_7j`957{`33O6s>G-9tw6&1`?x1C|9%zrI=iJL{dEAzj<|*Fxny!K zE+zB7q9I#u;t{!KBBb5+5VDN3uUC%XoA#wjPX1U+xcE8jaPbAX#G`1j%w2pt7;>p@=Q4~*lfbQ3(u^E}l|1lG;5d0MYk~UKjT4*_j~p8iNX*3X(OW}A8gH~^>OgN$R( zUwI#{ITx=;x_mLO8|trNi0OptSRHEUvrLmprFCrMB4r1ITFWdN+#?q!&QtmD-Qd+$ z(R#DEF0}D>{oO&1erC8NG-n^(=O%Zvdk&+ z!PGqFkL1$S$?T`GM4A68Q$zlcznIl(NLPM4I~?6!|7fm)Swhz z;FD5ezG%46Fa%|1E!(hMuyRsC@aFuXMao#qUtv?qZv_W&cO4BPa4mSYrHl6qU2u{V zW+um}p7cV&Xxz6?v|nTN-{YP&UbtSKBrS#dJZj7M#&k%}Q5g1Iuy19M<DW*MXb`O*Oj?fWC^geeA=D?j{?K?tP`<{Ti1J+MTRMBI$ zgTm%zQsDss{3wR+N@=MYLwC;48)KTFu;O9)WdV0Ws6JI3eNfnv4<|(M3xg+8$*F68 z(>(zNkKn?Cf>gL)2p%(dD0Lkag8zv@BKWbL*1Q-{^gLveMe8$#P;duyb5+nylA+H8 zEMeRoJPcPAV6Bo052;9ZQIVQjWgSn|k;LMPm;wOkIv1o<%?1}EU>nC z5o_V_rQnZ}5_2unM683a5>CM?30e((R(6e7QbLZy&MpWA`(gKBr!y^-y-1WRsc%2o zmn$=YtF-n*3y`W};gGPAGk9Q-u3I>Ng#jI7Y$~Z!k8*L+8ZYTK&Pd+F?hXDl_Ap{0 zPvJDZEaNaqE7hk=AE23{L2&*>Jo3u3+2Bus14{C5bLX=;9Jw*~Dka?|9!mBYjd^g2 zieC6p7(9@c^eX7=g!|t~`6V8dYwGVJX45>o@f1&Xm8OUngl6oM+XCcBX@U5j=z3dl zeJ7Cq(g|sA3k=%r%aN4erq20|{`W zpi+L}JK>-rIHBQ!g@@ZmP%FQ{fk7N7QpwMR zrSvuQZH;R2@L22NBl>%1lg$`?jiQZT3y?FP|-4YRPSGYywGKrBD0ELjex}Acn zNOa8=ZLV_BwLz@+?m$#mPNT9JdlxwFGT?U#!n!gzLw5?1X}lGN3lJNIGcKcO=yRhO zzc63SM5{iEeQJ^oxfYAEj)AE2p1&sTG;`8E$TZzjup0XNnmJbmWLu@^xEr>nAB#n9 z6mPg-IJ1g;Zi=y0igx1-xKl%kt`NCxqF*qHB6uO+3H>tr(=fMdw;0fet5({L13a=U z_6b1bw^=ze+_G4dw4=tl8bz#a5*=Q1#3L!gIjp~4;VKmM9<1F1@h-aF5L=9*KD-#~ zW{a-3YDGBE>FW{ue8LT$kuQX>cCIK@Luix(0d*!IYOH+@hz4ta10))2Uj!113yVaR zc0&Y@o-bnU-$PS_buUA6y-1EPdO{doKa#xood?bKj>T#wtyx4(x*Z~H2z`V=^vvZq z&X!9Q$6gi5<;QbXuZqaR`-EnZ#8%YKc0%p3Rk~3sT{c4>UG=%C)-s3DDTXZ?c^A!w zNa{_27v+h25Ff7#Qgnkr4pihk#wfGtokCGw) diff --git a/acpi/acpi.c b/acpi/acpi.c index 9a71517..40f794e 100644 --- a/acpi/acpi.c +++ b/acpi/acpi.c @@ -30,61 +30,104 @@ static char dummy_buf[256]; void probe_intel(uint8_t dev, uint8_t func) { - uint16_t acpi_base; + uint8_t status; + uint16_t acpi_base, devctl; int type; /* Read and print ACPI I/O base. */ + pci_writew(0, dev, func, 0x40, 0x4001); acpi_base = pci_readw(0, dev, func, 0x40); printf("ACPI base register = %04X\n", acpi_base); - acpi_base &= 0xff80; + acpi_base &= 0xffc0; + + /* Read and print SMI traps. */ + devctl = inl(acpi_base + 0x2e); + status = pci_readb(0, dev, func, 0x62); + printf("SMI traps: Dev9 %04X+%X Decode[%c] Trap[%c]\n", pci_readw(0, dev, func, 0x60), status & 0x0f, + (status & 0x20) ? '√' : ' ', (devctl & 0x0008) ? '√' : ' '); + status = pci_readb(0, dev, func, 0x66); + printf(" Dev10 %04X+%X Decode[%c] Trap[%c]\n", pci_readw(0, dev, func, 0x64), status & 0x0f, + (status & 0x20) ? '√' : ' ', (devctl & 0x0020) ? '√' : ' '); + status = pci_readb(0, dev, func, 0x6a); + printf(" Dev12 %04X+%X Decode[%c] Trap[%c]\n", pci_readw(0, dev, func, 0x68), status & 0x0f, + (status & 0x10) ? '√' : ' ', (devctl & 0x0100) ? '√' : ' '); + status = pci_readb(0, dev, func, 0x72); + printf(" Dev13 %04X+%X Decode[%c] Trap[%c]\n", pci_readw(0, dev, func, 0x70), status & 0x0f, + (status & 0x10) ? '√' : ' ', (devctl & 0x0200) ? '√' : ' '); /* Print contents of both PM1a control registers. */ - printf("PMCNTRL 04=%04X 40=%04X\n", inw(acpi_base | 0x04), inw(acpi_base | 0x40)); + printf("PMCNTRL: %04X=%04X %04X=%04X\n", acpi_base + 0x04, inw(acpi_base + 0x04), acpi_base + 0x40, inw(acpi_base + 0x40)); /* Prompt for sleep type. */ printf("Enter hex sleep type to try: "); scanf("%x%*c", &type); /* Try sleep through alternate port. */ - printf("Press ENTER to try sleep %02X through register 40...", type); + printf("Press ENTER to try sleep %02X through register %04X...", type, acpi_base + 0x40); gets(dummy_buf); - outw(acpi_base | 0x40, 0x2000 | (type << 10)); + outw(acpi_base + 0x40, 0x2000 | (type << 10)); /* Try sleep through main port. */ - printf("Nothing?\nPress ENTER to try sleep %02X through register 04...", type); + printf("Nothing?\nPress ENTER to try sleep %02X through register %04X...", type, acpi_base + 0x04); gets(dummy_buf); - outw(acpi_base | 0x04, 0x2000 | (type << 10)); + outw(acpi_base + 0x04, 0x2000 | (type << 10)); printf("Nothing still?\n"); } void -probe_via(uint8_t dev, uint8_t func, uint8_t is586) +probe_via(uint8_t dev, uint8_t func, uint16_t dev_id) { - uint16_t acpi_base; + uint8_t mask; + uint16_t acpi_base, glben, status; int type; /* Read and print ACPI I/O base. */ - acpi_base = pci_readw(0, dev, func, is586 ? 0x20 : 0x48); + acpi_base = pci_readw(0, dev, func, (dev_id == 0x3040) ? 0x20 : 0x48); printf("ACPI base register = %04X\n", acpi_base); acpi_base &= 0xff00; /* Print contents of both PM1a control registers. */ - printf("PMCNTRL 04=%04X F0=%04X\n", inw(acpi_base | 0x04), inw(acpi_base | 0xf0)); + printf("PMCNTRL: %04X=%04X %04X=%04X\n", acpi_base + 0x04, inw(acpi_base + 0x04), acpi_base + 0xf0, inw(acpi_base + 0xf0)); + + /* Read and print SMI traps. */ + if (dev_id >= 0x3050) { + mask = pci_readb(0, dev, 0, 0x80); + glben = inw(acpi_base + 0x2a); + if (dev_id == 0x3050) { + status = pci_readw(0, dev, 0, 0x76); + printf("SMI traps: PCS0 %04X+%X Decode[%c] IntIO[%c] Trap[%c]\n", pci_readw(0, dev, 0, 0x78), mask & 0x0f, + (status & 0x0010) ? '√' : ' ', (status & 0x1000) ? '√' : ' ', (glben & 0x4000) ? '√' : ' '); + printf(" PCS1 %04X+%X Decode[%c] IntIO[%c] Trap[%c]\n", pci_readw(0, dev, 0, 0x7a), (mask >> 4) & 0x0f, + (status & 0x0020) ? '√' : ' ', (status & 0x2000) ? '√' : ' ', (glben & 0x8000) ? '√' : ' '); + } else { + status = pci_readw(0, dev, 0, 0x8b); + printf("SMI traps: PCS0 %04X+%X Decode[%c] IntIO[%c] Trap[%c]\n", pci_readw(0, dev, 0, 0x78), mask & 0x0f, + (status & 0x0100) ? '√' : ' ', (status & 0x1000) ? '√' : ' ', (glben & 0x4000) ? '√' : ' '); + printf(" PCS1 %04X+%X Decode[%c] IntIO[%c] Trap[%c]\n", pci_readw(0, dev, 0, 0x7a), (mask >> 4) & 0x0f, + (status & 0x0200) ? '√' : ' ', (status & 0x2000) ? '√' : ' ', (glben & 0x8000) ? '√' : ' '); + mask = pci_readb(0, dev, 0, 0x8a); + glben = inw(acpi_base + 0x42); /* extended I/O trap */ + printf(" PCS2 %04X+%X Decode[%c] IntIO[%c] Trap[%c]\n", pci_readw(0, dev, 0, 0x8c), mask & 0x0f, + (status & 0x0400) ? '√' : ' ', (status & 0x4000) ? '√' : ' ', (glben & 0x0001) ? '√' : ' '); + printf(" PCS3 %04X+%X Decode[%c] IntIO[%c] Trap[%c]\n", pci_readw(0, dev, 0, 0x8e), (mask >> 4) & 0x0f, + (status & 0x0800) ? '√' : ' ', (status & 0x8000) ? '√' : ' ', (glben & 0x0002) ? '√' : ' '); + } + } /* Prompt for sleep type. */ printf("Enter hex sleep type to try: "); scanf("%x%*c", &type); /* Try sleep through alternate port. */ - printf("Press ENTER to try sleep %02X through register F0...", type); + printf("Press ENTER to try sleep %02X through register %04X...", type, acpi_base + 0xf0); gets(dummy_buf); - outw(acpi_base | 0xf0, 0x2000 | (type << 10)); + outw(acpi_base + 0xf0, 0x2000 | (type << 10)); /* Try sleep through main port. */ - printf("Nothing?\nPress ENTER to try sleep %02X through register 04...", type); + printf("Nothing?\nPress ENTER to try sleep %02X through register %04X...", type, acpi_base + 0x04); gets(dummy_buf); - outw(acpi_base | 0x04, 0x2000 | (type << 10)); + outw(acpi_base + 0x04, 0x2000 | (type << 10)); printf("Nothing still?\n"); } @@ -105,7 +148,7 @@ main(int argc, char **argv) /* Scan PCI bus 0. */ for (dev = 0; dev < 32; dev++) { - /* Single-function devices are definitely not the southbridge. */ + /* Single-function devices are definitely not the southbridge. */ if (!(pci_readb(0, dev, 0, 0x0e) & 0x80)) continue; @@ -122,18 +165,18 @@ main(int argc, char **argv) return 0; } else if ((ven_id == 0x1106) && (dev_id == 0x3040)) { printf("Found VT82C586 ACPI at device %02X function %d\n", dev, 3); - probe_via(dev, 3, 1); + probe_via(dev, 3, dev_id); return 0; } else if ((ven_id == 0x1106) && (dev_id == 0x3050)) { printf("Found VT82C596 ACPI at device %02X function %d\n", dev, 3); - probe_via(dev, 3, 0); + probe_via(dev, 3, dev_id); return 0; } else { ven_id = pci_readw(0, dev, 4, 0); dev_id = pci_readw(0, dev, 4, 2); if ((ven_id == 0x1106) && (dev_id == 0x3057)) { printf("Found VT82C686 ACPI at device %02X function %d\n", dev, 4); - probe_via(dev, 4, 0); + probe_via(dev, 4, dev_id); return 0; } }