ОБЩИЙ СПОСОБ ПОСТРОЕНИЯ ВИРТУАЛЬНОГО PCI-УСТРОЙСТВА И ВИРТУАЛЬНОГО MMIO-УСТРОЙСТВА

1. Устройство для построения виртуального устройства, содержащее
память; и
устройство обработки, коммуникативно связанное с этой памятью, причем устройство обработки выполнено с возможностью:
приема запроса межсоединения периферийных компонентов (PCI) для устройства, совместимого с PCI;
построения виртуального устройства на основе этого устройства, совместимого с PCI, при этом виртуальное устройство построено, по меньшей мере, как одно из виртуального PCI-устройства или виртуального устройства ввода/вывода (I/O).
2. Устройство по п. 1, в котором устройство, совместимое с PCI, связано с драйвером программного обеспечения, в котором драйвер программного обеспечения представляет совместимый с PCI запрос доступа в виртуальное устройство, и в котором виртуальное устройство представляет этот совместимый с PCI запрос доступа в функциональный блок, и в котором функциональный блок связывается с устройством, совместимым с PCI, на основе этого совместимого с PCI запроса доступа.
3. Устройство по п. 1, в котором операционная система должна быть загружена из устройства, совместимого с PCI, с использованием виртуального устройства.
4. Устройство по п. 1, в котором для построения виртуального устройства на основе устройства, совместимого с PCI, устройство обработки должно:
после определения того, что устройство, совместимое с PCI, связано с функциональным блоком, который не является совместимым с PCI, построить виртуальное устройство как виртуальное PCI-устройство; и
после определения того, что устройство, совместимое с PCI, связано с операционной системой, подлежащей загрузке с этого устройства, совместимого с PCI, построить виртуальное устройство как виртуальное I/O-устройство.
5. Устройство по п. 4, в котором построение виртуального устройства как виртуального PCI-устройства содержит
определение идентификатора поставщика для виртуального устройства;
определение информации об устройстве для виртуального устройства; и
определение информации об адресах для виртуального устройства.
6. Устройство по п. 5, в котором устройство обработки дополнительно выполнено с возможностью в качестве реакции на запрос для устройства, совместимого с PCI, послать идентификатор поставщика для виртуального устройства, информацию об устройстве для виртуального устройства и информацию об адресах для этого устройства.
7. Устройство по п. 4, в котором построение виртуального устройства как виртуального I/О-устройства содержит игнорирование запроса PCI-нумерации для устройства, совместимого с PCI; и определение диапазона I/О-адресов для виртуального устройства.
8. Устройство по п. 1, в котором устройство обработки дополнительно выполнено с возможностью получить доступ к памяти для I/О-адреса; определить, связан ли этот I/О-адрес с виртуальным устройством, когда виртуальное устройство построено как виртуальное I/О-устройство; и
после определения того, что этот I/О-адрес связан с виртуальным устройством, когда виртуальное устройство построено как виртуальное I/О-устройство, определить PCI-адрес, связанный с PCI-устройством, соответствующий этому I/O-адресу.
9. Устройство по п. 1, в котором виртуальное I/О-устройство является виртуальным устройством ввода/вывода с отображением на оперативное запоминающее устройство (MMIO).
10. Способ построения виртуального устройства, способ содержащий
прием, посредством устройства обработки, запроса межсоединения периферийных компонентов (PCI) для устройства, совместимого с PCI; и
построение, посредством этого устройства обработки, виртуального устройства на основе этого устройства, совместимого с PCI, в котором виртуальное устройство строится, по меньшей мере как одно из виртуального PCI-устройства или виртуального устройства ввода/вывода (I/O).
11. Способ по п. 10, в котором устройство, совместимое с PCI, связано с драйвером программного обеспечения, в котором драйвер программного обеспечения должен передать совместимый с PCI запрос доступа в виртуальное устройство, в котором это виртуальное устройство представляет совместимый с PCI запрос доступа для функционального блока, и где функциональный блок связывается с устройством, совместимым с PCI, на основе этого совместимого с PCI запроса доступа.
12. Способ по п. 10, в котором операционная система должна загружаться из устройства, совместимого с PCI, с использованием виртуального устройства.
13. Способ по п. 10, в котором построение виртуального устройства на основе устройства, совместимого с PCI, предусматривает
после определения, что устройство, совместимое с PCI, связано с функциональным блоком, который не является совместимым с PCI, построение виртуального устройства как виртуального PCI-устройства; и
после определения, что устройство, совместимое с PCI, связано с операционной системой, подлежащей загрузке из этого устройства, совместимого с PCI, построение виртуального устройства как виртуального I/O-устройства.
14. Способ по п. 13, в котором построение виртуального устройства как виртуального PCI-устройства содержит
определение идентификатора поставщика для виртуального устройства;
определение информации об устройстве для виртуального устройства; и
определение информации об адресах для виртуального устройства.
15. Способ по п. 14, дополнительно содержащий
в качестве реакции на запрос для устройства, совместимого с PCI, посылку идентификатора поставщика для виртуального устройства, информации об устройстве для виртуального устройства и информации об адресах для этого устройства.
16. Способ по п. 13, в котором построение виртуального устройства как виртуального I/O-устройства содержит
игнорирование запроса PCI-нумерации для устройства, совместимого с PCI; и
определение диапазона I/О-адресов для виртуального устройства.
17. Способ по п. 10, дополнительно содержащий
получение доступа к памяти для I/O-адреса;
определение, связан ли этот I/O-адрес с виртуальным устройством, когда виртуальное устройство строится как виртуальное I/O-устройство; и
после определения, что этот I/O-адрес связан с виртуальным устройством, когда виртуальное устройство строится как виртуальное I/O-устройство, определение PCI-адреса, связанного с PCI-устройством, соответствующего этому I/O-адресу.
18. Способ по п. 10, в котором запрос является запросом PCI-нумерации для устройства, совместимого с PCI.
19. Постоянный машинодоступный носитель данных, содержащий инструкции, которые при их выполнении компьютерной системой побуждают компьютерную систему к выполнению следующих операций:
прием запроса межсоединения периферийных компонентов (PCI) для устройства, совместимого с PCI; и
построение виртуального устройства на основе этого устройства, совместимого с PCI, в котором виртуальное устройство строится, по меньшей мере как одно из виртуального PCI-устройства или виртуального устройства ввода/вывода (I/O).
20. Постоянный машинодоступный носитель данных по п. 19, в котором устройство, совместимое с PCI, связано с драйвером программного обеспечения, в котором драйвер программного обеспечения должен передать совместимый с PCI запрос доступа в виртуальное устройство, в котором это виртуальное устройство представляет совместимый с PCI запрос доступа для функционального блока, и где функциональный блок связывается с устройством, совместимым с PCI, на основе этого совместимого с PCI запроса доступа.
21. Постоянный машинодоступный носитель данных по п. 19, в котором операционная система должна загружаться из устройства, совместимого с PCI, с использованием виртуального устройства.
22. Постоянный машинодоступный носитель данных по п. 19, в котором построение виртуального устройства на основе устройства, совместимого с PCI, предусматривает:
после определения, что устройство, совместимое с PCI, связано с функциональным блоком, который не является совместимым с PCI, построение виртуального устройства как виртуального PCI-устройства; и
после определения, что устройство, совместимое с PCI, связано с операционной системой, подлежащей загрузке из этого устройства, совместимого с PCI, построение виртуального устройства как виртуального I/O-устройства.
23. Постоянный машинодоступный носитель данных по п. 22, в котором построение виртуального устройства как виртуального PCI-устройства содержит
определение идентификатора поставщика для виртуального устройства;
определение информации об устройстве для виртуального устройства; и
определение информации об адресах для виртуального устройства.
24. Постоянный машинодоступный носитель данных по п. 22, в котором построение виртуального устройства как виртуального I/O-устройства содержит
игнорирование запроса PCI-нумерации для устройства, совместимого с PCI; и
определение диапазона I/O-адресов для виртуального устройства.
25. Постоянный машинодоступный носитель данных по п. 19, в котором операции дополнительно содержат
получение доступа к памяти для I/O-адреса;
определение, связан ли этот I/O-адрес с виртуальным устройством, когда виртуальное устройство строится как виртуальное I/O-устройство; и
после определения, что этот I/O-адрес связан с виртуальным устройством, когда виртуальное устройство строится как виртуальное I/O-устройство, определение PCI-адреса, связанного с PCI-устройством, соответствующего этому I/O-адресу.