CN104995613A - 用于建立虚拟pci设备和虚拟mmio设备的泛型方法 - Google Patents

用于建立虚拟pci设备和虚拟mmio设备的泛型方法 Download PDF

Info

Publication number
CN104995613A
CN104995613A CN201380073082.6A CN201380073082A CN104995613A CN 104995613 A CN104995613 A CN 104995613A CN 201380073082 A CN201380073082 A CN 201380073082A CN 104995613 A CN104995613 A CN 104995613A
Authority
CN
China
Prior art keywords
pci
equipment
virtual
virtual unit
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201380073082.6A
Other languages
English (en)
Other versions
CN104995613B (zh
Inventor
W·杨
C·徐
L·梁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN104995613A publication Critical patent/CN104995613A/zh
Application granted granted Critical
Publication of CN104995613B publication Critical patent/CN104995613B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

公开了一种用于实现将虚拟设备建立为虚拟外围控制器互连(PCI)设备或虚拟输入/输出(I/O)设备中的至少一个的方法的技术。本公开的方法包括接收针对PCI兼容设备的请求。所述方法还包括基于针对所述PCI兼容设备的请求来建立虚拟设备,其中所述虚拟设备被建立为虚拟PCI设备或虚拟I/O设备中的至少一个。

Description

用于建立虚拟PCI设备和虚拟MMIO设备的泛型方法
技术领域
本文所描述的实施例通常涉及处理设备,并且更具体地涉及用于建立虚拟PCI设备和虚拟MMIO设备的泛型方法。
背景技术
计算系统能够包括多个部件,例如,处理设备(如,微型控制器、微型处理器等)、存储器块、定时源、外围设备、外部接口、模拟接口、电压调节器、功率管理电路等。存储器块、外部接口或其它部件可以包括功能块,也被称为IP块或控制器,其提供处理设备和外围设备之间的接口。
计算系统中的部件能够与计算系统可访问的软件以及与外围设备以不同方式进行通信,例如,通过外围部件互连(PCI)总线。软件可以从一些外围设备(例如,闪速存储器)启动,然后由计算系统中的处理设备执行。
然而,计算系统中的一些部件(例如,功能块)可能不是PCI兼容的,并且因此不能与使用PCI总线用于通信的软件进行通信。此外,一些软件不能从某些外围设备(例如,PCI兼容外围设备)启动。
已经使用了多种方案来解决这些问题。解决功能块不能与使用PCI总线用于通信的软件进行通信的当前方案包括硬件方案和软件方案。当前的硬件方案需要改变功能块的硬件设计,以便使得功能块成为PCI兼容的。当前的软件方案需要创建用于功能块的软件,例如,用于功能块的可以解决功能块的不兼容性的专用设备驱动程序。解决软件不能从PCI兼容的外围设备启动的当前方案需要改变PCI兼容的外围设备的硬件构造(例如,改变硅)。然而,这些方案可能消耗相当大量的时间和成本。
附图说明
将从以下给出的详细描述以及根据本公开的各个实施例的附图来更全面地理解本公开。然而,附图不应被理解为将本公开限制为具体实施例,而仅是用于解释和理解。
图1是实现用于将虚拟设备建立为虚拟PCI设备或虚拟I/O设备的泛型方法的处理设备的一个实施例的框图;
图2是示出了根据本公开的实施例的用于实现将虚拟设备建立为虚拟PCI设备或虚拟I/O设备的泛型方法的虚拟设备模块的框图;
图3是示出了根据本公开的实施例的用于将虚拟设备建立为虚拟PCI设备或虚拟I/O设备的方法的流程图;
图4是示出了根据本公开的实施例的用于将虚拟设备建立为虚拟PCI设备的方法的流程图;
图5是示出了根据本公开的实施例的用于将虚拟设备建立为虚拟I/O设备的方法的流程图;
图6是示出了根据本公开的实施例的用于使用虚拟设备的方法的流程图;
图7是根据本公开的实施例的计算机系统的框图;
图8是根据本公开的另一实施例的计算系统的框图;以及
图9是根据本公开的又一实施例的计算系统的框图。
具体实施方式
软件(例如,操作系统或运行在计算系统的操作系统上的应用)可以利用驱动程序来访问计算系统中的硬件设备(例如,外围设备)。当驱动程序请求访问硬件设备时,驱动程序可以经由与硬件设备相关联的功能块来发送访问请求。功能块然后能够访问硬件设备,接收来自硬件设备的响应,并且将响应发送到驱动程序。因此,功能块用作驱动程序(以及相对应的软件)和硬件设备之间的接口。功能块对于驱动程序和/或硬件设备而言可以是透明的。驱动程序可以通过将用于硬件设备的命令(例如,诸如读取或写入之类的访问命令)写入到计算系统中的外围部件互连(PCI)总线来请求访问硬件设备。然而,如果与硬件设备相对应的功能块不是PCI兼容的,则功能块可能不知道驱动程序试图访问硬件设备或可能不能与驱动程序进行通信。
此外,操作系统可能仅能从一些硬件设备(例如,输入/输出(I/O)设备)启动,并且可能不能从其它硬件设备启动。例如,操作系统可能不能从操作系统视其为是可移除设备的外围设备(例如,PCI兼容设备)启动。然而,计算系统不会将硬件设备视为可移除的,并且可能希望操作系统从该硬件设备启动。
本公开的实施例提供了用于将虚拟设备建立为虚拟PCI设备或虚拟I/O设备的泛型方法。在一个实施例中,本公开的方法包括接收针对PCI兼容设备的请求。该方法还包括基于针对PCI兼容设备的请求来建立虚拟设备,其中虚拟设备被建立为虚拟PCI设备或虚拟I/O设备中的至少一个。
虚拟设备可以被建立为用于不是PCI兼容的功能块的虚拟PCI设备,并且虚拟设备可以被建立为用于与要从PCI兼容设备启动的操作系统相关联的PCI兼容设备的虚拟I/O设备。通过将虚拟设备建立为用于不是PCI兼容的功能块的虚拟PCI设备,针对与功能块相关联的PCI兼容设备的由PCI总线上的软件发送的任意访问和/或请求可以由虚拟设备识别,并且其可以被发送到功能块。因此,虚拟设备提供用于不是PCI兼容的功能块的接口,以接收PCI兼容访问和/或请求。通过将虚拟设备建立为用于与要从PCI兼容设备启动的操作系统相关联的PCI兼容设备的虚拟I/O设备,操作系统能够从虚拟设备启动,这是因为操作系统将判定出操作系统从其启动的设备是I/O设备而不是PCI兼容设备。
图1是根据本公开的实施例的实现用于建立虚拟PCI设备和虚拟MMIO设备的泛型方法的设备100的框图。设备100的一些示例可以包括但不限于:移动通信设备,例如,蜂窝手持式装置或智能电话;移动计算设备,例如平板计算机、上网本、笔记本型计算机、膝上型计算机、台式计算机、服务器计算机等等。
设备100可以包括例如主机105,以处理用于设备100的基线操作。主机105例如可以包括处理模块110、功能块115、存储器模块120以及其它模块135。处理模块110可以包括位于分离部件中的一个或多个处理器(也称为处理设备),或者可替换地,体现在例如被布置在片上系统(SOC)配置中的单个集成电路(IC)中的一个或多个处理核心。
功能块115可以包括被配置为支持处理模块110的电路。功能块115可以包括接口/桥接电路。在一个实施例中,每一个功能块115是被配置为处理与设备100中的专用总线(例如,PCI、串行AT附件(SATA)、通用串行总线(USB)等)或接口(例如,多媒体卡(MMC)设备、嵌入式多媒体卡(eMMC)设备、安全数字(SD)设备等)相关联的通信的集成电路(IC)。例如,如果设备100包括用于PCI、SATA、USB、MMC、eMMC和SD设备的总线和/或接口,则设备100将包括作为PCI控制器的功能块115(例如,控制器)、作为SATA控制器的功能块115、作为USB控制器的功能块115,作为MMC控制器的功能块115、作为eMMC控制器的功能块115、以及作为SD控制器的功能块115。功能块115可以通过将一种类型/速度的通信转换成另一种来处理各个模块之间的信令。每一个功能块115还可以与多种不同的设备兼容,以允许不同的系统实现、升级等。功能块115的功能中的一些还可以并入到处理模块110、存储器模块120、或其它模块135中。
处理模块110可以执行指令。指令可以包括程序代码以使得处理模块110执行各种动作,例如但不限于,读取数据、写入数据、处理数据、用公式表示数据、转换数据、变换数据等。包括指令、数据等(未示出)的信息可以存储于存储器模块120中。
存储器模块120可以包括固定或可移除格式的随机存取存储器(RAM)或只读存储器(ROM)。RAM可以包括在设备100的操作期间保持信息的存储器,例如,静态RAM(SRAM)或动态RAM(DRAM)。ROM可以包括诸如计算设备BIOS存储器之类的存储器,以用于在设备100激活时提供指令,可编程存储器(如,电可编程ROM(EPROM))、闪存等。其它固定和/或可移除存储器可以包括:磁存储器,例如,软盘、硬盘驱动等;电子存储器,例如固态闪速存储器(如,eMMC等);可移除存储器卡或棒(例如,USB、微型SD等);光存储器,例如基于压缩盘的ROM(CD-ROM)、全息等。
其它模块135可以包括用于支持设备100内的其它功能的模块。其它模块135可以包括例如用于向设备100供电的模块、用于在设备100中支持有线和/或无线通信的模块、用于在设备100中提供用户界面(UI)特征的模块、用于支持专门功能的模块等。取决于例如形状因子、配置设备100的用途等,其它模块100的组成是可变的。
外围设备140可以包括可移除或不可移除外围设备,例如,PCI兼容外围设备、存储器映射I/O(MMIO)外围设备、磁存储器(如软盘、硬盘驱动等)、电子存储器(例如,固态闪速存储器(如eMMC等))、可移除存储器卡或棒(例如,USB、微型SD等)、光存储器(例如基于压缩盘的ROM(CD-ROM))、全息存储器,等等。外围设备可以由其所附着的总线编号以及用于外围设备的类型的设备编号识别出。外围设备140可以包括存储于外围设备140中的一个或多个软件部件145(例如,应用、操作系统等)。
存储器模块120的实施例可以包括虚拟设备模块125以及一个或多个软件部件130。软件部件130可以包括应用、操作系统、BIOS、系统管理中断处理(SMI)程序等。在一个实施例中,软件部件130将针对外围设备140的请求(例如,枚举请求、访问请求等)发送给虚拟设备模块125。请求可以是用于获得针对外围设备140的信息的请求,所述信息例如是针对外围设备140的供应商标识符、设备标识符、以及地址信息。如果该信息通过虚拟设备模块125返回,则软件部件130能够使用该信息经由PCI来与外围设备140进行通信。
虚拟设备模块125能够接收针对外围设备140的请求。虚拟设备模块125能够基于针对外围设备140的请求来建立虚拟设备。虚拟设备可以是虚拟PCI设备或虚拟MMIO设备。
如果虚拟设备模块125判定所请求的外围设备140与不是PCI兼容的功能块115相关联,则虚拟设备模块125能够建立作为虚拟PCI设备的虚拟设备。如果功能块115不能读取或写入对PCI总线的访问请求,则功能块115不是PCI兼容的。在一个实施例中,虚拟设备模块125通过读取或写入对功能块115的访问请求来判定功能块115是否不是PCI兼容的。如果功能块115返回错误或者功能块115不能读取或写入访问请求的其它指示,则虚拟设备模块125可以确定功能块115不是PCI兼容的。在可替换的实施例中,虚拟设备模块125通过从功能块115获得兼容性信息并且判定功能块115的兼容性信息是否包括PCI,来判定功能块115是否不是PCI兼容的。在另一实施例中,虚拟设备模块125通过从设备100的专用硬件获得兼容性信息,来判定功能块115是否不是PCI兼容的。在又一实施例中,虚拟设备模块125通过从SMI处理机(未示出)、BIOS(未示出)等获得兼容性信息,来判定功能块115是否不是PCI兼容的。如果用于功能块115的兼容性信息不包括PCI,则功能块115不是PCI兼容的。在一个实施例中,虚拟设备模块125通过判定针对虚拟PCI设备的信息(例如,供应商标识符、设备标识符和地址信息),来将虚拟设备建立为虚拟PCI设备。在一些实施例中,响应于来自软件部件130的请求,虚拟设备模块125将该信息发送给软件部件130。
如果虚拟设备模块125判定所请求的外围设备140与将从外围设备140启动的软件部件145相关联,则虚拟设备模块125能够建立作为虚拟MMIO设备的虚拟设备。在一个实施例中,虚拟设备模块125通过访问存储于外围设备140上的一个或多个软件部件145,并且判定是否所述软件部件中的任何是预定义的软件部件(例如,操作系统等),来判定外围设备140是否与将从外围设备启动的软件部件145相关联。在一个实施例中,虚拟设备模块125通过丢弃从软件部件130接收到的请求,并且确定针对虚拟I/O设备的I/O地址范围,来将虚拟设备建立作为虚拟I/O设备。
一旦针对外围设备140建立了虚拟设备,则虚拟设备模块125可以将虚拟设备存储在诸如存储器模块120之类的存储器中。在一些实施例中,如果虚拟设备是用于外围设备140的虚拟PCI设备,则虚拟设备模块125向软件部件130(例如,发送针对外围设备140的请求的软件部件130)中的一个或多个提供针对所创建的虚拟设备的供应商标识符、设备标识符以及地址信息。在一些实施例中,如果虚拟设备是用于外围设备140的虚拟I/O设备,则软件部件130不再直接访问针对其发送请求的外围设备140,但相反访问用于外围设备140的虚拟PCI设备或虚拟I/O设备。虚拟设备模块125还可以提供软件部件130和虚拟设备之间的接口。在一些实施例中,当从软件部件130接收到对I/O地址的访问时,虚拟设备模块125判定I/O地址是否在作为虚拟I/O设备的虚拟设备的范围内。在这些实施例中,如果虚拟设备模块125判定I/O地址在作为虚拟I/O设备的虚拟设备的范围内,则虚拟设备模块125在向与虚拟I/O设备相关联的外围设备140提供访问请求之前将I/O地址转换成PCI地址。
图2示出了根据本公开的一个实施例的用于实现建立虚拟PCI设备和虚拟MMIO设备的泛型方法的虚拟设备模块200。在一个实施例中,虚拟设备模块200与以上关于图1描述的虚拟设备模块125相同。虚拟设备模块200可以包括虚拟设备判定模块205、虚拟PCI设备创建模块210、虚拟I/O设备创建模块215,以及虚拟I/O设备地址转换模块220。在不损失普遍性的情况下,虚拟设备模块200可以包括更多或更少的部件。
虚拟设备判定模块205能够接收针对外围设备的请求。该请求可以包括关于请求的识别信息,例如,该请求是否是访问请求、枚举请求等。该请求还可以包括针对外围设备的识别信息,例如,外围设备的地址。虚拟设备模块125能够基于针对外围设备的请求来判定是否将虚拟设备建立为虚拟PCI设备或虚拟I/O设备。
如果所请求的外围设备与不是PCI兼容的功能块相关联,则虚拟设备判定模块205能够判定出虚拟设备应该被建立为虚拟PCI设备。在一个实施例中,虚拟设备判定模块205通过从功能块获得兼容性信息并且确定针对功能块的兼容新信息是否包括PCI,来判定所请求的外围设备是否与不是PCI兼容的功能块相关联。在该实施例中,如果针对功能块的兼容性信息不包括PCI,则虚拟设备判定模块205判定出该功能模块不是PCI兼容的。在该实施例中,如果针对功能块的兼容性信息包括PCI,则虚拟设备判定模块205判定出该功能模块是PCI兼容的。在可替换的实施例中,虚拟设备判定模块205通过从SMI处理机(未示出)、陷阱(trap)处理机(未示出)或中断处理机(未示出)获得信息,来判定所请求的外围设备是否与不是PCI兼容的功能块相关联。如果外围设备与不是PCI兼容的功能块相关联,则虚拟设备判定模块205可以将请求发送到虚拟PCI设备创建模块210来将虚拟PCI设备建立为虚拟设备。
如果所请求的外围设备与将从外围设备启动的软件(例如,操作系统)相关联,则虚拟设备判定模块205可以确定虚拟设备应该被建立为虚拟I/O设备。在一个实施例中,虚拟设备判定模块205通过访问存储于外围设备上的软件,并且判定软件中的任何是否是预定义类型的软件(例如,操作系统等),来判定外围设备是否与将从外围设备启动的软件相关联。在可替换的实施例中,虚拟设备判定模块205通过从SMI处理机、陷阱处理机或中断处理机获得信息,来判定外围设备是否与将从外围设备启动的软件相关联。如果所请求的外围设备与将从外围设备启动的软件相关联,则虚拟设备判定模块205可以将请求发送到虚拟I/O设备创建模块215以将虚拟I/O设备创建为虚拟设备。
虚拟PCI设备创建模块210可以接收来自虚拟设备判定模块205的请求以创建虚拟PCI设备。虚拟PCI设备创建模块210可以通过基于与外围设备相关联的功能块来判定针对虚拟PCI设备的识别信息和地址信息,来创建虚拟PCI设备。所述识别信息可以包括供应商标识符、设备标识符等。所述地址信息可以包括能够由软件(未示出)使用以访问虚拟PCI设备的地址范围。在一个实施例中,虚拟PCI设备创建模块210从SMI处理机、陷阱处理机或中断处理机来获得识别信息和地址信息。一旦虚拟PCI设备创建模块210创建了虚拟PCI设备,则虚拟PCI设备创建模块210就能够将虚拟PCI设备存储在存储器中。在一个实施例中,虚拟PCI设备创建模块210将作为虚拟设备的虚拟PCI设备存储于存储器模块250内的虚拟设备信息255中。
虚拟I/O设备创建模块215能够接收来自虚拟设备判定模块205的请求以创建虚拟I/O设备。虚拟I/O设备创建模块215能够通过丢弃针对外围设备的请求并且确定针对虚拟I/O设备的I/O地址范围,来创建虚拟I/O设备。在一个实施例中,虚拟I/O设备创建模块215通过不响应针对外围设备的请求来丢弃针对外围设备的请求。在可替换的实施例中,虚拟I/O设备创建模块215通过将响应发送到请求失败的请求(例如,不成功的PCI读取),来丢弃针对外围设备的请求。一旦虚拟I/O设备创建模块215创建了虚拟I/O设备,虚拟I/O设备创建模块215就能够将虚拟I/O设备存储于存储器中。在一个实施例中,虚拟I/O设备创建模块215将虚拟I/O设备存储于存储器模块250内的虚拟设备信息255中。
虚拟I/O设备地址转换模块220能够接收对I/O地址的请求或访问。在一个实施例中,从软件接收所述请求或访问。响应于所述请求或访问,虚拟I/O设备地址转换模块220可以判定I/O地址是否在作为虚拟I/O设备的虚拟设备的地址范围内。虚拟I/O设备地址转换模块220通过对I/O地址与作为虚拟I/O设备的每一个虚拟设备的地址范围进行比较,来判定I/O地址是否在虚拟I/O设备的地址范围内。在一个实施例中,虚拟I/O设备地址转换模块220对I/O地址与虚拟设备信息255中的地址范围进行比较。如果虚拟I/O设备地址转换模块220判定出I/O地址在作为虚拟I/O设备的虚拟设备的地址范围内,则虚拟I/O设备地址转换模块220可以将I/O地址转换为PCI地址,并且能够使得与虚拟设备相关联的外围设备的PCI地址能被访问。
图3是根据本公开的实施例的用于建立虚拟PCI设备和虚拟MMIO设备的方法300的流程图。方法300可以由处理逻辑执行,所述处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(例如在处理设备上运行的指令)、固件,或其组合。在一个实施例中,方法300由关于图1所描述的设备100执行。
在框305处,处理逻辑接收针对PCI兼容设备的请求。PCI兼容设备可以是能够附接到PIC总线上的外围设备。针对PCI兼容设备的请求可以包括关于请求的识别信息,例如,请求是否是访问请求、枚举请求等。在一个实施例中,所述请求是从SMI处理机接收到的枚举请求,而执行方法300的处理设备处于系统管理模式(SMM)。
SMM是处理设备的所有正常执行(包括OS)都被挂起的操作模式,并且特殊的分离软件(通常是固件或硬件辅助调试器)在高权限模式中执行。SMM提供隔离的存储器和执行环境,并且SMM代码对于操作系统(OS)是不可见的同时保持对存储器的完全访问和对外围设备(例如PCI兼容设备等)的完全控制。当启动SMM时,处理设备的当前状态被保存并且所有其它进程被停止。高权限操作可以在SMM模式中执行,如调试、硬件管理、安全功能、枚举等,随后处理设备基于处理设备的保存状态来恢复操作。当发生系统管理中断(SMI)时,处理设备可以进入SMM并且运行SMI处理机。在处理设备的执行开始(启动)时,在将新的外围设备添加到设备上时,等等,可以生成SMI。例如,固件或BIOS能够在启动时生成SMI。
当接收到SMI时,SMI处理机通过查询(例如,试图读取)PCI总线以确定PCI兼容设备来枚举处理设备可用的PCI兼容(外围)设备。如果响应于启动而生成SMI,则设备中所有的PCI兼容设备可能尚未被枚举。如果响应于添加了新的PCI兼容设备而生成SMI,则新的PCI兼容设备可能尚未被枚举。SMI处理机可以生成针对每一个尚未被枚举的PCI兼容设备的枚举请求。所述枚举请求可以包括针对PCI兼容设备的识别信息,例如,针对PCI兼容设备的总线数量和设备数量。
返回图3,在框310处,处理逻辑判定所请求的PCI兼容设备是否与不是PCI兼容的功能块相关联。如果功能块不能读取或写入对PCI总线的访问请求,则该功能模块不是PCI兼容的。
在一个实施例中,处理逻辑通过从与PCI兼容设备相关联的功能块获得兼容性信息,并且判定用于功能块的兼容性信息是否包括PCI兼容性,来判定所请求的外围设备是否与不是PCI兼容的功能块相关联。如果针对功能块的兼容性信息包括PCI兼容性,则处理逻辑判定该PCI兼容设备与不是PCI兼容的功能块不相关联(换句话说,PCI兼容设备与是PCI兼容的功能块相关联)。如果针对功能块的兼容性信息不包括PCI兼容性,则处理逻辑判定该PCI兼容设备与不是PCI兼容的功能块相关联。
在可替换的实施例中,处理逻辑通过从SMI处理机获得针对与PCI兼容设备相关联的功能块的兼容性信息,来判定所请求的外围设备是否与不是PCI兼容的功能块相关联。所述兼容性信息能够包括与PCI兼容设备相关联的功能块是否是PCI兼容的。SMI处理机能够收集关于驱动程序和/或在处理设备上运行的或将要运行的软件(例如,应用)的信息,并且能够判定哪个PCI兼容设备被驱动程序和/或软件支持。SMI处理机能够从文档、从驱动程序或软件源代码等中收集关于驱动程序和/或软件的信息。当判定PCI兼容设备由驱动程序和/或软件支持时,SMI处理机能够确定针对每一个PCI兼容设备的相对应的功能块(例如,控制器),并且能判定相对应的功能块是否是PCI兼容的。SMI处理机能够访问每一个功能块以判定每一个功能块的PCI兼容性。例如,针对每一个功能块的设备类型信息可以被SMI处理机访问。在一个实施例中,通过发送针对功能块的兼容性信息的请求并且从SMI处理机接收针对功能块的兼容性信息,处理逻辑能够从SMI处理机获得针对与PCI兼容设备相关联的功能块的兼容性信息。在可替换实施例中,通过访问由SMI处理机写入的预定义的存储器位置,处理逻辑能够从SMI处理机获得针对功能块的兼容性信息。如果所述兼容性信息包括功能块不是PCI兼容的兼容性信息,则处理逻辑判定所述PCI兼容设备与不是PCI兼容的功能块相关联。如果针对功能块的兼容性信息包括功能块是PCI兼容的信息,则处理逻辑判定所述PCI兼容设备与不是PCI兼容的功能块不相关联(换句话说,PCI兼容设备与是PCI兼容的功能块相关联)。
在另一可替换实施例中,处理逻辑通过读取或写入对所请求的外围设备的访问请求,来判定所请求的外围设备是否不是PCI兼容的。如果所请求的外围设备返回错误或所请求的外围设备不能读取或写入访问请求的其它指示,则处理逻辑能够判定所请求的外围设备不是PCI兼容的。
如果处理逻辑判定PCI兼容设备与不是PCI兼容的功能块不相关联,则方法300进行到框320。如果处理逻辑判定PCI兼容设备与不是PCI兼容的功能块相关联,则方法300进行到框315。
在框315处,处理逻辑将虚拟设备建立为虚拟PCI设备。处理逻辑能够通过确定针对虚拟设备的PCI识别信息和地址信息,来将虚拟设备建立为虚拟PCI设备。以下关于图4描述了将虚拟设备建立为虚拟PCI设备的一个实现方式。在一个实施例中,当建立虚拟设备时,处理逻辑能够可选地提供对在305处接收到的请求的响应。所述对请求的响应可以包括成功读取与虚拟设备相关联的预定寄存器,并且还可以包括针对虚拟设备的标识符信息,例如,针对虚拟设备的供应商标识符、设备标识符、I/O地址范围、以及MMIO地址范围。例如,针对不是PCI兼容的具有GPIO控制器的通用输入/输出(GPIO)设备的枚举请求将接收成功响应,并且包括针对被创建用于与GPIO设备相关联的GPIO控制器的虚拟设备的供应商标识符(例如,0x8888)、设备标识符(例如,0x9999)、I/O地址范围(例如,0x200-0x20F)以及MMIO范围(0xA0000-0xA00FF)。
在框320处,处理逻辑判定PCI兼容设备是否与将从PCI兼容设备启动的软件相关联。将从PCI兼容设备启动的软件可以是操作系统、软件应用、BIOS等。在一些实施例中,将从PCI兼容设备启动的软件是要求从I/O设备启动的软件,所述I/O设备例如是存储器映射的I/O外围设备。在这些实施例中,软件可以被设计成不从被认为是可移除的设备的外围设备启动,所述外围设备例如是PCI兼容设备(如,嵌入式多媒体存储器卡(eMMC)等)。然而,一些PCI兼容设备是不可移除的,例如,SOC中的PCI设备。
在一个实施例中,处理逻辑通过访问存储于PCI兼容设备上的软件部件,并且判定该软件部件是否是预定义的软件部件,来判定PCI兼容设备是否与将从PCI兼容设备启动的软件相关联。处理逻辑能够通过将软件部件与已经被判定为在是不可移除的外围设备上的一个或多个预定义软件部件(例如,eMMC上的操作系统等)进行比较,来判定软件部件是否是预定义的软件部件。如果所述比较指示存储于PCI兼容设备上的软件部件包括一个或多个预定软件部件,则处理逻辑能够判定PCI兼容设备与将从PCI兼容设备启动的软件相关联。如果所述比较指示存储于PCI兼容设备上的软件部件不包括一个或多个预定软件部件,则处理逻辑能够判定PCI兼容设备不与将从PCI兼容设备启动的软件相关联。
在可替换实施例中,处理逻辑通过从SMI处理机获得软件信息,来判定PCI兼容设备是否与将从PCI兼容设备启动的软件相关联。在一个这样的实施例中,从SMI处理机获得的软件信息包括PCI兼容设备上的软件部件。在该实施例中,SMI处理机能够收集关于存储于PCI兼容设备上的驱动程序和/或软件部件的信息。在该实施例中,处理逻辑能够获得软件信息,并且将该软件信息与已经被判定为在不可移除的外围设备上的一个或多个预定软件部件(例如,eMMC上的操作系统等)进行比较。如果所述比较指示软件信息包括一个或多个预定软件部件,则处理逻辑能够判定PCI兼容设备与将从PCI兼容设备启动的软件相关联。如果所述比较指示软件信息不包括一个或多个预定软件部件,则处理逻辑能够判定PCI兼容设备与将从PCI兼容设备启动的软件不相关联。在可替换的这样的实施例中,软件信息包括在PCI兼容设备上的软件部件中的任意软件部件是否将从PIC兼容设备启动的指示符(例如,正指示符,如设置为1的位;或负指示符,如设置为0的位)。在该实施例中,处理逻辑获得该软件信息,并且基于指示符来判定PCI兼容设备是否与将从PCI兼容设备启动的软件相关联。如果指示符指示PCI兼容设备上的软件将从PCI兼容设备启动(例如,正指示符),则处理逻辑可以判定PCI兼容设备与将从PCI兼容设备启动的软件相关联。如果指示符指示PCI兼容设备不与将从PCI兼容设备启动的软件相关联(例如,负指示符),则处理逻辑可以判定PCI兼容设备与将从PCI兼容设备启动的软件不相关联。
在一个实施例中,处理逻辑能够通过发送针对PCI兼容设备的软件信息的请求以及从SMI处理机接收针对PCI兼容设备的软件信息,来从SMI处理机获得针对PCI兼容设备的软件信息。在可替换实施例中,处理逻辑能够通过访问由SMI处理机写入的预定义的存储器单元,来从SMI处理机获得针对PCI兼容设备的软件信息。
如果处理逻辑判定PCI兼容设备不与将从PCI兼容设备启动的软件相关联,则方法300以不建立虚拟设备结束。如果处理逻辑判定PCI兼容设备与将从PCI兼容设备启动的软件相关联,则方法300进行到框325。
在框325处,处理逻辑将虚拟设备建立为虚拟I/O设备。在一个实施例中,虚拟I/O设备是虚拟MMIO设备。以下结合图5描述了将虚拟设备建立为虚拟I/O设备的一种实现方式。在一个实施例中,当建立虚拟设备时,处理逻辑能够可选地提供对在框305处接收到的请求的响应。所述对请求的响应可以包括不成功的读取与PCI兼容设备相关联的预定寄存器。
图4是根据本公开的实施例的用于将虚拟设备建立为虚拟PCI设备的方法400的流程图。方法400可以由处理逻辑执行,所述处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(例如,在处理设备上运行的指令)、固件,或其组合。在一个实施例中,方法400由结合图1所描述的设备100执行。
在框405处,处理逻辑判定针对虚拟设备的供应商标识符。在一个实施例中,通过从SMI处理机或BIOS获得供应商标识符来确定供应商标识符。从SMI处理机或BIOS识别出的供应商可以由SMI处理机或BIOS进行分配,或能够匹配由驱动程序或软件部件要求的供应商标识符。例如,如果驱动程序请求供应商标识符“0x8086”,则SMI处理机或BIOS将供应商标识符“0x8086”分配给虚拟设备。在可替换实施例中,通过确定与PCI兼容设备相关联的供应商标识符以及将针对虚拟设备的供应商标识符配置为与所确定的供应商标识符相同,来确定供应商标识符。例如,如果PCI兼容设备是具有供应商标识符0x8888的GPIO设备,则针对虚拟设备的相对应的供应商标识符将也会是0x8888。
在框410处,处理逻辑确定针对虚拟设备的设备标识符。在一个实施例中,通过从SMI处理机或BIOS获得设备标识符,来确定设备标识符。从SMI处理机或BIOS识别出的供应商可以通过SMI处理机或BIOS分配,或能够匹配由驱动程序或软件部件要求的供应商标识符。例如,如果驱动程序请求设备标识符“0x8086”,则SMI处理机或BIOS将设备标识符“0x8086”分配给虚拟设备。在可替换实施例中,通过确定与PCI兼容设备相关联的设备标识符以及将虚拟设备的设备标识符配置为与所确定的设备标识符相同,来确定设备标识符。例如,如果PCI兼容设备是具有设备标识符0x9999的GPIO设备,则针对虚拟设备的相对应的设备标识符将也会是0x9999。
在框415处,处理逻辑确定针对虚拟设备的地址信息。针对虚拟设备的地址信息可以是针对虚拟设备的地址I/O地址范围和MMIO地址范围。在一个实施例中,可以通过从SMI处理机、BIOS、或硬件规范来获得地址信息,从而确定地址信息。在可替换实施例中,通过确定与PCI兼容设备相关联的地址信息,并且将针对虚拟PCI设备的地址信息配置为与所确定的地址信息相同,来确定地址信息。例如,如果PCI兼容设备是具有包括0x200到0x20F的I/O范围以及0xA0000到0xA00FF的MMIO地址范围在内的地址信息的GPIO设备,则针对虚拟设备的相对应的地址信息将也会是0x200到0x20F的I/O范围以及0xA0000到0xA00FF的MMIO地址范围。所述地址信息可以包括能够由软件部件(未示出)使用来访问虚拟设备的针对虚拟设备的地址范围。
图5是根据本公开的实施例的用于将虚拟设备建立为虚拟I/O设备的方法500的流程图。方法500可以由处理逻辑执行,所述处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(例如,在处理设备上运行的指令)、固件,或其组合。在一个实施例中,方法500由关于图1所描述的设备100执行。
在框505处,处理逻辑丢弃针对PCI兼容设备的请求。在一个实施例中,所述请求是与PCI兼容设备相关联的枚举请求。通过丢弃针对PCI兼容设备的请求,处理逻辑能够对做出请求的软件提供反馈:没有PCI兼容设备与请求相关联。这将使得软件相信软件存储于MMIO设备上或软件正在访问MMIO设备。在一个实施例中,处理逻辑通过不响应请求,来丢弃针对PCI兼容设备的请求。在可替换实施例中,处理逻辑通过生成对请求的响应,所述响应包括不成功读取与PCI兼容设备相关联的一个或多个预定寄存器(例如,与请求中所提供的供应商标识符和设备标识符相关联的PCI配置寄存器),来丢弃针对PCI兼容设备的请求。
在框510处,处理逻辑确定针对虚拟I/O设备的I/O地址范围。在一个实施例中,I/O地址范围是MMIO地址范围。在一个实施例中,处理逻辑通过从SMI处理机获得I/O地址范围,来确定针对虚拟I/O设备的I/O地址范围。在可替换实施例中,处理逻辑通过从高级配置和功率接口(ACPI)表获得(例如,解析)针对PCI兼容设备的I/O地址范围,来确定针对虚拟I/O设备的I/O地址范围。ACPI规范能够提供针对由操作系统进行的设备配置和功率管理的开放标准。ACPI表可以包括系统中可用的针对设备的设备资源信息。针对设备的设备资源信息可以包括设备名称、MMIO地址范围、I/O地址范围、中断机制、与设备相关联的设备等。
图6是根据本公开的实施例的用于使用虚拟设备的方法600的流程图。方法600可以由处理逻辑执行,所述处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(例如,在处理设备上运行的指令)、固件,或其组合。在一个实施例中,方法600由关于图1所描述的设备100执行。
在框605处,处理逻辑接收对于I/O地址的访问请求。在一个实施例中,I/O地址是MMIO地址。在一个实施例中,对于I/O地址的访问请求是从软件接收的。
在框610处,处理逻辑判定I/O地址是否在为虚拟I/O设备的虚拟设备的地址范围内。处理逻辑可以通过将该I/O地址与计算系统中的每一个虚拟I/O设备的地址范围进行比较,来判定I/O地址是否在为虚拟I/O设备的虚拟设备的地址范围内。如果处理逻辑判定I/O地址不在为虚拟I/O设备的虚拟设备的地址范围内,则方法600结束。如果处理逻辑判定I/O地址在虚拟I/O设备的地址范围内,则方法600进行到框615。在一个实施例中,框610是可选的并且不被执行。在该实施例中,判定I/O地址是否在为虚拟I/O设备的虚拟设备的地址范围内是由SMI处理机执行的。
在框615处,处理逻辑确定与I/O地址相对应的PCI设备的PCI地址。处理逻辑可以通过从SMI处理机获得针对I/O地址的PCI地址,来判定与I/O地址相对应的PCI设备的PCI地址。在一个实施例中,如果处理逻辑不支持存储器空间陷阱,则框615是可选的。在该实施例中,处理逻辑将访问针对虚拟I/O设备先前确定的针对虚拟I/O设备的I/O地址,这公开了与PCI设备的I/O地址相同的I/O地址。
例如,如果系统支持存储器空间中的陷阱,则当访问发生在作为虚拟I/O设备的虚拟设备的监控地址范围内时处理逻辑触发SMI。在该示例中,SMI处理机将被触发并且确定I/O地址是否在虚拟设备的地址范围内,以及从I/O地址转换为PCI地址。
图7是根据本公开的实施例的包括用于建立虚拟PCI设备和虚拟MMIO设备的逻辑电路的SoC 700的框图。虚线框是更为高级的SoC上的可选特征。在图7中,互连单元712与以下项目耦合:应用处理器720,其包括一个或多个核心702A-N以及共享高速缓存单元706的集合;系统代理单元710;总线控制器单元716;集成存储器控制器单元714;一组或者一个或多个介质处理器718,其可以包括集成图形逻辑708、用于提供静止和/或视频摄像机功能的图像处理器724、用于提供硬件音频加速的音频处理器726、以及用于提供视频编码/解码加速的视频处理器728;静态随机存取存储器(SRAM)单元730;直接存储器存取(DMA)单元732;以及用于与一个或多个外部显示器耦合的显示器单元740。
存储器层级包括核心内的一级或多级高速缓存,一组或者一个或多个共享高速缓存单元706,以及与一组集成存储器控制器单元714耦合的外部存储器(未示出)。所述一组共享高速缓存单元706可以包括一个或多个中间级别高速缓存,例如,二级(L2)、三级(L3)、四级(L4)、或其它级别的高速缓存、最后一级高速缓存(LLC),和/或其组合。
在一些实施例中,核心702A-N中的一个或多个能够是多线程的。
系统代理710包括调整和操作核心702A-N的那些部件。系统代理单元710可以包括例如功率控制单元(PCU)和显示器单元。PCU可以是或包括用于调整核心702A-N和集成图形逻辑708的功率状态所需的逻辑和部件。显示器单元用于驱动一个或多个外部连接的显示器。
根据架构和/或指令集,核心702A-N可以是同构的或异构的。例如,一些核心702A-N可以是有序的,而其它的则是乱序的。作为另一示例,两个或更多个核心702A-N能够执行相同的指令集,而其它的则仅能够执行所述指令集的子集或不同的指令集。
应用处理器720可以是通用处理器,例如,CoreTMi3、i5、i7、2Duo和Quad、XeonTM、ItaniumTM、XScalTM或StrongARMTM处理器,其可从加利福尼亚的圣克拉拉的英特尔公司获得。可替换地,应用处理器720可以来自其它公司(例如,ARM Holding有限公司)的MIPS等。应用处理器720可以是专用处理器,例如,网络或通信处理器、压缩引擎、图形处理器、协同处理器、嵌入式处理器等。应用处理器720可以实现于一个或多个芯片上。应用处理器720可以利用任意数量的处理技术(例如,BiCMOS、CMOS或NMOS)实现于一个或多个基板上和/或是其一部分。
在一个实施例中,应用处理器720还包括根据本发明的实施例的用于实现建立虚拟PCI设备和虚拟MMIO设备的逻辑。例如,应用处理器720可以包括用于执行虚拟设备模块(例如,关于图1描述的虚拟设备模块125)的逻辑,其中,虚拟设备模块能够基于针对外围设备的请求来建立虚拟设备。虚拟设备可以是虚拟PCI设备或虚拟MMIO设备。
图8是根据本公开的片上系统(SOC)设计的实施例的框图。作为具体的示意性示例,SOC 800包括在用户设备(UE)中。在一个实施例中,UE指的是由终端设备用于通信的任何设备,例如,手持电话、智能电话、平板电脑、超薄笔记本、具有宽带适配器的笔记本,或任意其它类似的通信设备。通常,UE连接到基站或节点上,所述UE可能本质上与GSM网络中的移动站(MS)相对应。
因此,SOC 800包括两个核心—806和807。核心806和807可以符合指令集架构,例如,基于Architecture CoreTM处理器、Advaced MicroDevices,Inc.(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计、或其顾客以及其许可方或接管者。核心806和807耦合到与总线接口单元809和L2高速缓存810相关联的高速缓存控制器808上,以与系统800的其它部件进行通信。互连件810包括片上互连件,例如,IOSF、AMBA或上述的其它互连件,其可能实现了上述公开的一个或多个方面。
接口810将通信信道提供给其它部件,例如,订户身份模块(SIM)830其用于与SIM卡进行接合;启动rom 835以保存由核心806和807执行的启动代码以初始化和启动SOC 800;SDRAM控制器840,其用于与外部存储器(例如,DRAM 806)进行接合;闪存控制器845,其用于与非易失性存储器(例如,闪存865)进行接合;外围控制850(例如,串行外围接口),其用于与外围部件进行接合;视频编码解码器820和视频接口825,其用于显示和接收输入(例如,支持触摸输入);GPU 815,其用于执行与图像有关的计算,等等。任何这些接口可以并入到本文所描述的本公开的方面。
在一个实施例中,核心806和807也包括根据本发明的实施例的用于实现建立虚拟PCI设备和虚拟MMIO设备的逻辑。例如,核心806和807可以包括用于执行虚拟设备模块(例如,关于图1描述的虚拟设备模块125)的逻辑,其中,虚拟设备模块能够基于针对外围设备(例如,DRAM 860、闪存865等)的请求来建立虚拟设备。虚拟设备可以是虚拟PCI设备或虚拟MMIO设备。
另外,系统800示出了用于通信的外围部件,例如,蓝牙模块870、3G调制解调器875、GPS 880、以及WiFi 885。如上所述应注意的是,UE包括用于通信的无线电装置。结果,并不要求所有这些外围通信模块。然而,在UE中,将包括用于外部通信的一些形式的无线装置。
图9示出了计算机系统900的示例性形式中的机器的示意性图示,在计算机系统900中,可以执行使得机器执行本文所讨论的任意一种或多种方法的一组指令。在可替换实施例中,所述机器可以连接(例如,联网)到LAN、内联网、外联网、或互联网中的其它机器上。机器可以在客户端-服务器网络环境中的服务器或客户端设备容量内进行操作或者作为对等(或分布式)网络环境中的对等机器操作。机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络应用、服务器、网络路由器、交换机或桥,或能够执行指定机器将要采取的动作的一组指令(顺序或其它方式)的任意机器。此外,虽然仅示出了单个机器,但术语“机器”还应被理解为包括单个和集体执行一组(或多组)指令以执行本文所讨论的一种或多种方法的机器的任意集合。
计算机系统900包括处理设备902、主存储器904(例如,只读存储器(ROM)、闪速存储器、动态随机存取存储器(DRAM)(例如,同步DRAM(SDRAM)或DRAM(RDRAM)等))、静态存储器906(例如,闪速存储器、静态随机存取存储器(SRAM)等),以及数据存储设备918,其经由总线930彼此进行通信。
处理设备902表示一个或多个通用处理设备,例如,微型处理器、中央处理单元等。更具体地,处理设备可以是复杂指令集计算(CISC)微型处理器、精简指令集计算机(RISC)微型处理器,超长指令字(VLIW)微型处理器、或实现其它指令集的处理器、或实现组合指令集的处理器。处理设备902还可以是一个或多个专用处理设备,例如,专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。在一个实施例中,处理设备902可以包括一个或多个处理核心。处理设备902被配置为执行处理逻辑926,以用于执行本文所讨论的操作和步骤。在一个实施例中,处理设备902与关于图1描述的实现用于建立虚拟PCI设备和虚拟MMIO设备的泛型方法的处理设备100相同。例如,处理设备902可以包括虚拟设备模块,例如,图1的虚拟设备模块125。
计算机系统900还可以包括与网络920可通信地耦合的网络接口设备908。计算机系统900还可以包括视频显示单元910(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备912(例如,键盘)、光标控制设备914(例如,鼠标),以及信号生成设备916(例如,扬声器)。此外,计算机系统900可以包括图形处理单元922、视频处理单元928、以及音频处理单元932。
数据存储设备918可以包括机器可访问存储介质924,在其上存储有实现本文描述的功能的任意一种或多种方法的软件926,例如,实现如上所述建立虚拟PCI设备和虚拟MMIO设备的泛型方法。软件926还可以在由计算机系统900对其执行期间完全或至少部分地驻于主存储器904内作为指令926,和/或在处理设备902内作为处理逻辑926;主存储器904和处理设备902也构成机器可访问存储介质。
机器可读存储介质924还可以用于存储实现建立虚拟PCI设备和虚拟MMIO设备的泛型方法的指令926,例如关于图1的设备100所描述的,和/或包含调用上述应用的方法的软件库。虽然在示例性实施例中将机器可读存储介质924示出为是单个介质,但是术语“机器可访问存储介质”应该被认为包括存储一组或多组指令的单个介质或多个媒介(例如,集中式或分布式数据库,和/或相关联的高速缓存和服务器)。术语“机器可读存储介质”也应该被认为包括能够存储、编码或携带一组用于由机器执行的一组指令的并且使得机器执行任意一种或多种本公开的方法的任意介质。术语“机器可读存储介质”因此可以被认为包括但不限于固态存储器以及光和磁介质。
以下示例属于进一步的实施例。
示例1是一种用于建立虚拟设备的装置,包括:1)存储器;以及2)与存储器通信地耦合的处理设备,所述处理设备用于:接收针对外围控制器互连(PCI)兼容设备的PCI请求;以及基于所述PCI兼容设备来建立虚拟设备,其中所述虚拟设备被建立为虚拟PCI设备或虚拟输入/输出(I/O)设备中的至少一个。
在示例2中,示例1的所述PCI兼容设备能够可选地与软件驱动程序相关联,其中所述软件驱动程序用于将PCI兼容的访问请求发送给虚拟设备,其中所述虚拟设备将所述PCI兼容访问请求提供给功能块,并且其中所述功能块基于所述PCI兼容的访问请求来与所述PCI兼容设备进行通信。
在示例3中,操作系统可选地利用示例1的所述虚拟设备来从所述PCI兼容设备启动。
在示例4中,基于所述PCI兼容设备来建立虚拟设备,所述示例1的处理设备能够可选地基于判定所述PCI兼容设备与不是PCI兼容的功能块相关联,来将所述虚拟设备建立为虚拟PCI设备;以及基于判定所述PCI兼容设备与将从PCI兼容设备启动的操作系统相关联,来将所述虚拟设备建立为虚拟I/O设备。
在示例5中,将所述虚拟设备建立为虚拟PCI设备,所述示例4的处理设备可选地确定针对所述虚拟设备的供应商标识符;确定针对所述虚拟设备的设备信息;以及确定针对所述虚拟设备的地址信息。
在示例6中,示例5的处理设备能够可选地响应于针对所述PCI兼容设备的请求,发送针对所述虚拟设备的供应商标识符、针对所述虚拟设备的设备信息、以及针对所述设备的地址信息。
在示例7中,将所述虚拟设备建立为虚拟I/O设备,示例4的处理设备可选地丢弃针对所述PCI兼容设备的PCI枚举请求;以及确定针对所述虚拟设备的I/O地址范围。
在示例8中,示例1的处理设备可选地接收针对I/O地址的存储器访问;当所述虚拟设备被建立为虚拟I/O设备时,判定所述I/O地址是否与所述虚拟设备相关联;以及当所述虚拟设备被建立为虚拟I/O设备时,基于判定出所述I/O地址与所述虚拟设备相关联,来判定与所述I/O地址相对应的所述PCI设备相关联的PCI地址。
在示例9中,示例1的虚拟I/O设备可以可选地包括虚拟存储器映射的输入/输出(MMIO)设备。
在示例10中,示例1的请求可以可选地包括针对PCI兼容设备的PCI枚举请求。
各个实施例可以具有上述操作特征的不同组合。例如,以上描述的装置的所有可选特征也可以相对于本文所描述的方法或过程而被实现,并且示例中的细节可以用于一个或多个实施例中的任意地方。
示例11是一种用于建立虚拟设备的方法,所述方法包括:1)接收针对外围控制器互连(PCI)兼容设备的PCI请求;以及2)基于所述PCI兼容设备来建立虚拟设备,其中所述虚拟设备被建立为虚拟PCI设备或虚拟输入/输出(I/O)设备中的至少一个。
在示例12中,示例11的PCI兼容设备与软件驱动程序相关联,其中所述软件驱动程序用于将PCI兼容访问请求发送给所述虚拟设备,其中所述虚拟设备将所述PCI兼容的访问请求提供给功能块,并且其中所述功能块基于所述PCI兼容访问请求来与所述PCI兼容设备进行通信。
在示例13中,操作系统可选地利用示例11的虚拟设备从所述PCI兼容设备启动。
在示例14中,基于示例11的PCI兼容设备来建立虚拟设备,可以可选地包括:基于判定所述PCI兼容设备与不是PCI兼容的功能块相关联,来将所述虚拟设备建立为虚拟PCI设备;以及基于判定所述PCI兼容设备与将从PCI兼容设备启动的操作系统相关联,来将所述虚拟设备建立为虚拟I/O设备。
在示例15中,示例14的将所述虚拟设备建立为虚拟PCI设备可以可选地包括:确定针对所述虚拟设备的供应商标识符;确定针对所述虚拟设备的设备信息;以及确定针对所述虚拟设备的地址信息。
在示例16中,示例15的主题可以可选地包括响应于针对所述PCI兼容设备的请求,发送针对所述虚拟设备的供应商标识符、针对所述虚拟设备的设备信息、以及针对所述设备的地址信息。
在示例17中,示例14的将所述虚拟设备建立为虚拟I/O设备可以可选地包括:丢弃针对所述PCI兼容设备的PCI枚举请求;以及确定针对所述虚拟设备的I/O地址范围。
在示例18中,示例11的主题可以可选地包括:接收针对I/O地址的存储器访问;当所述虚拟设备被建立为虚拟I/O设备时,判定所述I/O地址是否与所述虚拟设备相关联;以及当所述虚拟设备被建立为虚拟I/O设备时,基于判定出所述I/O地址与所述虚拟设备相关联,判定与所述I/O地址相对应的所述PCI设备相关联的PCI地址。
在示例19中,示例11的虚拟I/O设备可以可选地包括虚拟存储器映射输入/输出(MMIO)设备。
在示例20中,示例11的请求可以可选地包括针对PCI兼容设备的PCI枚举请求。
各个实施例可以具有上述操作特征的不同组合。例如,以上描述的方法的所有可选特征也可以相对于非暂时性的、计算机可读存储介质而被实现。示例中的细节可以用于一个或多个实施例中的任意地方。
示例21是一种包括数据的非暂时性、机器可读存储介质,所述数据当被处理设备访问时,使得处理设备执行示例11-20所述的方法。
示例22是一种用于建立虚拟设备的装置,包括:1)存储器;以及2)与所述存储器耦合的计算系统,其中所述计算系统被配置为执行根据权利要求11-20中的任一项所述的方法.
在示例23中,示例22的计算系统可以可选地包括用于接收针对外围控制器互连(PCI)兼容设备的PCI请求的接口;以及与所述接口耦合的虚拟设备处理块。
示例24是一种用于建立虚拟设备的计算系统,包括:用于接收针对外围控制器互连(PCI)兼容设备的PCI请求的接口;以及与所述接口耦合的虚拟设备处理块,其中所述虚拟设备处理块用于基于PCI兼容设备来建立虚拟设备,其中所述虚拟设备被建立为虚拟PCI设备或虚拟输入/输出(I/O)设备中的至少一个。
在示例25中,示例24的虚拟设备处理块可以可选地包括:虚拟设备判定块,其用于判定PCI兼容设备是否与不是PCI兼容的功能块相关联,以及用于判定所述PCI兼容设备是否与将从PCI兼容设备启动的操作系统相关联;虚拟PCI设备创建块,其用于当PCI兼容设备与不是PCI兼容的功能块相关联时,将虚拟设备建立为虚拟PCI设备;以及虚拟I/O设备创建块,其用于当所述PCI兼容设备与将从PCI兼容设备启动的操作系统相关联时,将所述虚拟设备建立为虚拟I/O设备。
在示例26中,用于将虚拟设备建立为虚拟PCI设备,示例25的虚拟PCI设备创建块可选地用于确定针对所述虚拟设备的供应商标识符;确定针对所述虚拟设备的设备信息;以及确定针对所述虚拟设备的地址信息。
在示例27中,将虚拟设备建立为虚拟I/O设备,示例25的虚拟I/O设备创建块可选地丢弃针对所述PCI兼容设备的PCI枚举请求;以及确定针对所述虚拟设备的I/O地址范围。
在示例28中,示例24的虚拟设备处理块能够可选地响应于针对所述PCI兼容设备的请求,发送针对所述虚拟设备的供应商标识符、针对所述虚拟设备的设备信息、以及针对所述设备的地址信息。
在示例29中,示例24的虚拟设备处理块可以可选地包括:虚拟I/O设备地址转换块,其用于接收针对I/O地址的存储器访问,当所述虚拟设备被建立为虚拟I/O设备时,判定所述I/O地址是否与所述虚拟设备相关联;以及当所述虚拟设备被建立为虚拟I/O设备时,基于判定出所述I/O地址与所述虚拟设备相关联,判定与所述I/O地址相对应的所述PCI设备相关联的PCI地址。
示例30是一种包括指令的非暂时性机器可读存储介质,所述指令在被计算系统执行时,使得计算系统执行包括以下的操作:1)接收针对外围控制器互连(PCI)兼容设备的PCI请求;以及2)基于所述PCI兼容设备来建立虚拟设备,其中所述虚拟设备被建立为虚拟PCI设备或虚拟输入/输出(I/O)设备中的至少一个。
在示例31中,其中,示例30的PCI兼容设备可以可选地与软件驱动程序相关联,其中所述软件驱动程序可选地将PCI兼容的访问请求发送给所述虚拟设备,其中示例30的虚拟设备能够可选地将所述PCI兼容的访问请求提供给功能块,并且其中所述功能块可以可选地基于所述PCI兼容的访问请求与所述PCI兼容设备进行通信。
在示例32中,操作系统利用示例30的虚拟设备从所述PCI兼容设备启动。
在示例33中,其中,基于示例30的PCI兼容设备来建立虚拟设备,能够可选地包括:基于判定所述PCI兼容设备与不是PCI兼容的功能块相关联,来将所述虚拟设备建立为虚拟PCI设备;以及基于判定所述PCI兼容设备与将从PCI兼容设备启动的操作系统相关联,来将所述虚拟设备建立为虚拟I/O设备。
在示例34中,示例33的将所述虚拟设备建立为虚拟PCI设备,可以可选地包括:确定针对所述虚拟设备的供应商标识符;确定针对所述虚拟设备的设备信息;以及确定针对所述虚拟设备的地址信息。
在示例35中,示例34的将虚拟设备建立为虚拟PCI设备可以可选地包括:响应于针对所述PCI兼容设备的请求,发送针对所述虚拟设备的供应商标识符、针对所述虚拟设备的设备信息、以及针对所述设备的地址信息。
在示例36中,示例33的将所述虚拟设备建立为虚拟I/O设备,可以可选地包括:丢弃针对所述PCI兼容设备的PCI枚举请求;以及确定针对所述虚拟设备的I/O地址范围。
在示例37中,示例30的主题可以可选地包括:接收针对I/O地址的存储器访问;当所述虚拟设备被建立为虚拟I/O设备时,判定所述I/O地址是否与所述虚拟设备相关联;以及当所述虚拟设备被建立为虚拟I/O设备时,基于判定出所述I/O地址与所述虚拟设备相关联,判定与所述I/O地址相对应的所述PCI设备相关联的PCI地址。
示例38是一种用于建立虚拟设备的装置,包括:1)接收针对外围控制器互连(PCI)兼容设备的PCI请求的接口;以及2)用于基于所述PCI兼容设备来建立虚拟设备的单元,其中所述虚拟设备被建立为虚拟PCI设备或虚拟输入/输出(I/O)设备中的至少一个。
在示例39中,示例38的用于基于PCI兼容设备来建立虚拟设备的单元能够可选地包括:用于判定PCI兼容设备是否与不是PCI兼容的功能块相关联的单元;用于基于判定出所述PCI兼容设备与不是PCI兼容的功能块相关联来将所述虚拟设备建立为虚拟PCI设备的单元;用于判定所述PCI兼容设备是否与将从PCI兼容设备启动的操作系统相关联的单元;以及用于基于判定出所述PCI兼容设备与将从PCI兼容设备启动的操作系统相关联来将所述虚拟设备建立为虚拟I/O设备的单元。
在上述描述中阐述了多个细节。然而对于本领域的技术人员显而易见的是,可以在没有这些具体细节的情况下来实践本公开。在一些实例中,以框图的形式而不是细节示出了公知的结构和设备,以便避免使本公开难以理解。
具体实施方式的一些部分借由计算机存储器内的数据位上的操作的算法和符号表示进行表示。这些算法描述和表示是数据处理领域中的技术人员所用的最有效地向本领域的其他技术人员传达他们的工作的实质的手段。算法在本文中通常被认为是导致期望结果的操作的自适应序列。操作是需要物理量的物理操纵。通常,虽然不是必要的,但是这些量采用电或磁信号的形式,其能够被存储、转移、组合、比较或者操纵。主要出于共同使用的原因,已经多次证明了将这些信号称作位、值、元素、符号、字符、术语、数字等是方便的。本文所描述的框可以是硬件、软件、固件或其组合。
然而,应该记住的是,所有这些以及类似的术语将与适当的物理量相关联,并且仅是应用于这些量的方便标签。除非明确以其它方式指出,否则如从以下讨论中显而易见的,应当意识到遍及说明书、讨论使用的术语例如“发送”、“接收”、“生成”、“判定”、“创建”、“转换”、“丢弃”、“比较”等指的是计算机系统或类似的电子计算设备的动作和处理,所述计算机系统或类似的电子计算设备将在计算机寄存器和存储器内表示为物理(电子)量的数据操纵和转变为类似地被表示在计算机系统存储器或寄存器或其它这种信息存储、传输或显示设备中的物理量的其它数据。
本公开还涉及用于执行本文的操作的装置。该装置可以是出于所要求的目的而专门构造的,或者其可以包括由存储于计算机内的计算机程序选择性地激活或重新配置的通用计算机。这样的计算机程序可以存储于机器可读存储介质中,例如但不限于,任何类型的盘,包括软盘、光盘、CD-ROM以及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁或光卡,或者适于存储电子指令的任意类型的介质,其中的每一个都耦合到计算机系统总线上。
本文所呈现的算法和显示本质上都不涉及任何特定的计算机或其它装置。根据本文的教导各种通用系统可以与程序一起使用,或者可以证明构建更专有的装置来执行操作是方便的。根据以下描述,多种这种系统所要求的结构将变得清晰。另外,并不结合任意特定的编程语言来描述本实施例。可以理解的是,多种编程语言可以用于实现本文描述的实施例的教导。
本公开可以被提供为可以包括其上存储有指令的机器可读介质的计算机程序产品或软件,其可以用于对计算机系统(或其它电子设备)进行编程以执行根据本公开的过程。机器可读介质包括用于以机器(例如,计算机)可读的形式存储或发送信息的任意技术。例如,机器可读(如,计算机可读)介质包括机器(如,计算机)可读存储介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪速存储器设备等),等等。
然而,在阅读了上述描述后,对于本领域的技术人员而言,无疑可以想到对本公开的多种修改和变型,可以理解的是通过图示所示和所述的任何特定实施例决不会是要被认为是限制性的。因此,对各个实施例的细节的引用并不是要限制权利要求的范围,权利要求本身只引用这些特征以为公开。

Claims (22)

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/O设备包括:
丢弃针对所述PCI兼容设备的PCI枚举请求;以及
确定针对所述虚拟设备的I/O地址范围。
8.根据权利要求1所述的装置,其中,所述处理设备还用于:
接收针对I/O地址的存储器访问;
当所述虚拟设备被建立为虚拟I/O设备时,判定所述I/O地址是否与所述虚拟设备相关联;以及
当所述虚拟设备被建立为虚拟I/O设备时,在判定出所述I/O地址与所述虚拟设备相关联时,确定与对应于所述I/O地址的PCI设备相关联的PCI地址。
9.一种用于建立虚拟设备的方法,所述方法包括:
通过处理设备接收针对外围控制器互连(PCI)兼容设备的PCI请求;以及
基于所述PCI兼容设备,通过所述处理设备来建立所述虚拟设备,其中,所述虚拟设备被建立为虚拟PCI设备或虚拟输入/输出(I/O)设备中的至少一个。
10.根据权利要求9所述的方法,其中,所述PCI兼容设备与软件驱动程序相关联,其中,所述软件驱动程序将PCI兼容访问请求发送给所述虚拟设备,其中,所述虚拟设备将所述PCI兼容访问请求提供给功能块,并且其中,所述功能块基于所述PCI兼容访问请求来与所述PCI兼容设备进行通信。
11.根据权利要求9所述的方法,其中,利用所述虚拟设备,操作系统将从所述PCI兼容设备启动。
12.根据权利要求9所述的方法,其中,基于所述PCI兼容设备来建立所述虚拟设备包括:
在判定出所述PCI兼容设备与不是PCI兼容的功能块相关联时,将所述虚拟设备建立为所述虚拟PCI设备;以及
在判定出所述PCI兼容设备与将从所述PCI兼容设备启动的操作系统相关联时,将所述虚拟设备建立为所述虚拟I/O设备。
13.根据权利要求12所述的方法,其中,将所述虚拟设备建立为虚拟PCI设备包括:
确定针对所述虚拟设备的供应商标识符;
确定针对所述虚拟设备的设备信息;以及
确定针对所述虚拟设备的地址信息。
14.根据权利要求13所述的方法,还包括:
响应于针对所述PCI兼容设备的请求,发送针对所述虚拟设备的供应商标识符、针对所述虚拟设备的设备信息、以及针对所述设备的地址信息。
15.根据权利要求13所述的方法,其中,将所述虚拟设备建立为虚拟I/O设备包括:
丢弃针对所述PCI兼容设备的PCI枚举请求;以及
确定针对所述虚拟设备的I/O地址范围。
16.根据权利要求9所述的方法,还包括:
接收针对I/O地址的存储器访问;
当所述虚拟设备被建立为虚拟I/O设备时,判定所述I/O地址是否与所述虚拟设备相关联;以及
当所述虚拟设备被建立为虚拟I/O设备时,在判定出所述I/O地址与所述虚拟设备相关联时,确定与对应于所述I/O地址的PCI设备相关联的PCI地址。
17.根据权利要求9所述的方法,其中,所述虚拟I/O设备是虚拟存储器映射输入/输出(MMIO)设备。
18.根据权利要求9所述的方法,其中,所述请求是针对所述PCI兼容设备的PCI枚举请求。
19.一种用于建立虚拟设备的装置,包括:
用于接收针对外围控制器互连(PCI)兼容设备的PCI请求的单元;
用于基于所述PCI兼容设备来建立所述虚拟设备的单元,其中,所述虚拟设备被建立为虚拟PCI设备或虚拟输入/输出(I/O)设备中的至少一个。
20.根据权利要求19所述的装置,其中,用于基于所述PCI兼容设备来建立所述虚拟设备的所述单元包括:
用于判定所述PCI兼容设备是否与不是PCI兼容的功能块相关联的单元;
用于在判定出所述PCI兼容设备与不是PCI兼容的功能块相关联时,将所述虚拟设备建立为所述虚拟PCI设备的单元;
用于判定所述PCI兼容设备是否与将从所述PCI兼容设备启动的操作系统相关联的单元;以及
用于在判定出所述PCI兼容设备与将从所述PCI兼容设备启动的操作系统相关联时,将所述虚拟设备建立为所述虚拟I/O设备的单元。
21.一种用于建立虚拟设备的装置,包括:
存储器;以及
与所述存储器耦合的计算系统,其中,所述计算系统被配置为执行根据权利要求1-10中的任一项所述的方法。
22.根据权利要求21所述的装置,其中,所述计算系统包括:
用于接收针对外围控制器互连(PCI)兼容设备的PCI请求的接口;
与所述接口耦合的虚拟设备处理块。
CN201380073082.6A 2013-03-14 2013-03-14 用于建立虚拟pci设备和虚拟mmio设备的泛型方法 Active CN104995613B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/072583 WO2014139115A1 (en) 2013-03-14 2013-03-14 Generic method to build virtual pci device and virtual mmio device

Publications (2)

Publication Number Publication Date
CN104995613A true CN104995613A (zh) 2015-10-21
CN104995613B CN104995613B (zh) 2018-02-16

Family

ID=51535808

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380073082.6A Active CN104995613B (zh) 2013-03-14 2013-03-14 用于建立虚拟pci设备和虚拟mmio设备的泛型方法

Country Status (7)

Country Link
US (1) US20150026379A1 (zh)
EP (1) EP2972922A1 (zh)
KR (1) KR101698707B1 (zh)
CN (1) CN104995613B (zh)
RU (1) RU2611018C2 (zh)
TW (1) TWI528290B (zh)
WO (1) WO2014139115A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112988272A (zh) * 2021-03-22 2021-06-18 成都申威科技有限责任公司 一种在uboot中支持多路pcie rc的方法、装置及存储介质

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9983893B2 (en) 2013-10-01 2018-05-29 Red Hat Israel, Ltd. Handling memory-mapped input-output (MMIO) based instructions using fast access addresses
US9454394B2 (en) * 2013-11-22 2016-09-27 Red Hat Israel, Ltd. Hypervisor dynamically assigned input/output resources for virtual devices
US9916173B2 (en) * 2013-11-25 2018-03-13 Red Hat Israel, Ltd. Facilitating execution of MMIO based instructions
CN106648878B (zh) * 2015-10-29 2021-08-20 华为技术有限公司 一种系统及其动态分配mmio资源的方法
US9846610B2 (en) 2016-02-08 2017-12-19 Red Hat Israel, Ltd. Page fault-based fast memory-mapped I/O for virtual machines
US10055160B2 (en) 2016-04-11 2018-08-21 Dell Products L.P. Systems and methods for BIOS emulation of PCIe device
KR102331926B1 (ko) 2017-11-17 2021-11-29 삼성전자주식회사 저장 장치를 포함하는 호스트 시스템의 동작 방법 및 저장 장치 제어기의 동작 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1522415A (zh) * 2001-06-29 2004-08-18 英特尔公司 虚拟pci设备装置和方法
US7546599B2 (en) * 2004-12-20 2009-06-09 Intel Corporation Method, apparatus and system for instructing a virtual device from a virtual machine
CN101676894A (zh) * 2008-08-15 2010-03-24 北京北大众志微系统科技有限责任公司 面向集中地址译码的非pci片上总线的pci虚拟化装置及方法
EP2325747A2 (en) * 2009-11-05 2011-05-25 Intel Corporation Virtual platform for prototyping system-on-chip designs

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5664124A (en) * 1994-11-30 1997-09-02 International Business Machines Corporation Bridge between two buses of a computer system that latches signals from the bus for use on the bridge and responds according to the bus protocols
WO2012023151A2 (en) * 2010-08-19 2012-02-23 Ineda Systems Pvt. Ltd I/o virtualization and switching system
US8769175B2 (en) * 2011-03-09 2014-07-01 International Business Machines Corporation Adjustment of post and non-post packet transmissions in a communication interconnect
KR20120132820A (ko) * 2011-05-30 2012-12-10 삼성전자주식회사 스토리지 디바이스, 스토리지 시스템 및 스토리지 디바이스의 가상화 방법
JP5719023B2 (ja) * 2011-06-02 2015-05-13 株式会社日立製作所 仮想計算機の制御方法及び仮想計算機システム
US9411654B2 (en) * 2011-12-16 2016-08-09 International Business Machines Corporation Managing configuration and operation of an adapter as a virtual peripheral component interconnect root to expansion read-only memory emulation
WO2013159315A1 (en) * 2012-04-26 2013-10-31 Hewlett-Packard Development Company, L.P. Providing virtual optical disk drive

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1522415A (zh) * 2001-06-29 2004-08-18 英特尔公司 虚拟pci设备装置和方法
US7546599B2 (en) * 2004-12-20 2009-06-09 Intel Corporation Method, apparatus and system for instructing a virtual device from a virtual machine
CN101676894A (zh) * 2008-08-15 2010-03-24 北京北大众志微系统科技有限责任公司 面向集中地址译码的非pci片上总线的pci虚拟化装置及方法
EP2325747A2 (en) * 2009-11-05 2011-05-25 Intel Corporation Virtual platform for prototyping system-on-chip designs

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112988272A (zh) * 2021-03-22 2021-06-18 成都申威科技有限责任公司 一种在uboot中支持多路pcie rc的方法、装置及存储介质

Also Published As

Publication number Publication date
RU2611018C2 (ru) 2017-02-17
CN104995613B (zh) 2018-02-16
WO2014139115A1 (en) 2014-09-18
EP2972922A1 (en) 2016-01-20
US20150026379A1 (en) 2015-01-22
TWI528290B (zh) 2016-04-01
TW201502992A (zh) 2015-01-16
KR20150103373A (ko) 2015-09-10
RU2015134102A (ru) 2017-02-16
KR101698707B1 (ko) 2017-01-20

Similar Documents

Publication Publication Date Title
CN104995613A (zh) 用于建立虚拟pci设备和虚拟mmio设备的泛型方法
CN104185836B (zh) 用于在系统改变之后验证计算设备的适当操作的方法和系统
TWI477967B (zh) 用以實現gpu加速位址轉換之系統及方法以及圖形處理器
US9152428B2 (en) Alternative boot path support for utilizing non-volatile memory devices
CN102184122B (zh) 一种龙芯CPU主板bios及中断的实现方法
US20140342715A1 (en) Virtualized subscriber identification module (sim)
JP6466476B2 (ja) マルチオペレーティングシステム装置に対するアクセス分離
CN108701109A (zh) 用于计算机扩展总线的插件机制的方法、装置和系统
KR101813480B1 (ko) 하드웨어 기반 디바이스간 리소스 공유
EP3063621A1 (en) Flexible bootstrap code architecture
JP2013539878A (ja) コンピュータ装置のプレブートフェーズ中の無線通信を容易にするシステム及び方法
CN102096597A (zh) 使用管理引擎的虚拟总线设备
JP2017519294A (ja) フラッシュメモリベースストレージデバイスのマルチホスト電力コントローラ(mhpc)
CN101772761A (zh) 电子设备接口控制系统
US10162616B2 (en) System for binary translation version protection
RU2643481C2 (ru) Способ идентификации типа операционной системы и устройство USB
CN103198257B (zh) 在混合信息处理设备环境下的安全性重新使用
CN112346390B (zh) 光模块控制方法、装置、设备及计算机可读存储介质
CN112654964A (zh) 一种刷机控制方法、刷机控制装置及终端设备
US10402454B1 (en) Obtaining platform-specific information in a firmware execution environment
CN107483226B (zh) 一种信息处理方法及电子设备
US20190286450A1 (en) Controlled customization of silicon initialization
CN116318658A (zh) 信任域扩展媒介的密钥验证方法、装置、电子设备及介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant