0

As per PCIe FW spec 3.1 says

Prior to returning control to the BIOS, the Expansion ROM code moves the run-time code

What I am currently doing is copying the expansion ROM binary from the temporary location to runtime location(both of which supplied by BIOS in CS and BX respectively) byte by byte, and I am disabling the interrupts during this copy and enabling after done, I am also updating the byte checksum so that BIOS treats it as valid image, what is happening is after processing some initial BIOS calls, at a certain point system is restarting, so I was doubting an binary corruption but as per PCIe FW spec 3.1

The system firmware must write-protect the region where the PCI Expansion ROM run-time code resides in the new range.

So are there some steps needed or something to be taken care of, while copying the expansion ROM to runtime location ?

Regards,

Arka

Arka Sharma
  • 289
  • 1
  • 3
  • 10
  • According to these specs, the write protection is done at the very end of POST. At what stage did you see the errors? – haggai_e Aug 31 '15 at 06:59
  • Hello and thanks for your comment. I am seeing this issue when I attempt to boot to a particular boot entry either from one time boot menu or by setting BIOS boot priority, I receive int 13 calls, and when processing this int 13 the system is getting restarted, however the same code is working if use PCIe structure revision 2.1 and don't use relocation logic. – Arka Sharma Sep 20 '15 at 01:43
  • Is it possible you keep a pointer to the temporary region somewhere, and try to use it later within your int 13h handler? – haggai_e Sep 20 '15 at 05:03
  • I am sorry I didnt get you. Are you meaning that I should be using the older location where init vector was executed ? – Arka Sharma Oct 21 '15 at 13:02
  • No. I was just speculating as to what the issue may be. – haggai_e Oct 21 '15 at 14:01

0 Answers0