CN102662883B - 用于多硬件平台的飞腾服务器的机器类型识别方法 - Google Patents
用于多硬件平台的飞腾服务器的机器类型识别方法 Download PDFInfo
- Publication number
- CN102662883B CN102662883B CN201210095029.3A CN201210095029A CN102662883B CN 102662883 B CN102662883 B CN 102662883B CN 201210095029 A CN201210095029 A CN 201210095029A CN 102662883 B CN102662883 B CN 102662883B
- Authority
- CN
- China
- Prior art keywords
- platform
- hardware platform
- read
- hardware
- information field
- 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.)
- Active
Links
Abstract
本发明公开了一种用于多硬件平台的飞腾服务器的机器类型识别方法,其实施步骤如下:1)在计算机的扩展ROM中建立平台信息字段地址,虚拟机监控器将平台信息字段地址的读写接口函数进行封装并提供给操作系统内核调用;2)在操作系统启动过程中,首先获取操作系统接收的引导装入程序命令并分析引导装入程序命令的硬件平台参数,如果包含硬件平台参数则将硬件平台参数对应的硬件平台类型信息写入扩展ROM中的平台信息字段地址中;3)通过平台信息字段地址读写接口函数读取硬件平台字段地址中的硬件平台类型信息,根据硬件平台类型信息识别飞腾虚拟服务器的硬件平台。本发明具有兼容性好、使用方便、操作简单的优点。
Description
技术领域
本发明涉及飞腾服务器的虚拟化技术领域,具体涉及一种用于多硬件平台的飞腾服务器的机器类型识别方法。
背景技术
飞腾服务器(FT服务器)是由中国人民解放军国防科学技术大学研制的、基于FT1000处理器的服务器计算机平台,其中FT1000处理器是国防科大研制、兼容sparc指令集的通用64位处理器。目前的飞腾服务器包含多种硬件平台类型,例如nanga平台、meili平台以及nc平台等,Nanga平台、meili平台和nc平台都是基于FT1000处理器的飞腾计算机,由于现有的硬件厂商和接口不同等原因,其外围设备并不完全相同。各硬件平台所使用的PCIe交换单元不完全相同(如nanga平台PCIe交换单元采用PEX8664实现,meili平台PCIe交换单元采用PEX8648实现,nc平台PCIe交换单元采用PEX8632实现)、其外围设备如实时时钟(RTC)芯片和监控芯片等不相同。
由于飞腾服务器各平台的硬件配置不完全相同,不同的硬件配置所需的驱动软件不一样,因此导致在不同的飞腾服务器平台上部署不同的操作系统,因此在将飞腾服务器进行虚拟化时,就会受到特定硬件平台的约束,不能实现多种硬件平台之间的相互兼容,给用户带来了不便,不利于飞腾服务器的应用推广。
发明内容
本发明要解决的技术问题是提供一种兼容性好、使用方便、操作简单的用于多硬件平台的飞腾服务器的机器类型识别方法。
为了解决上述技术问题,本发明采用的技术方案为:
一种用于多硬件平台的飞腾服务器的机器类型识别方法,其实施步骤如下:
1)在计算机的扩展ROM中建立用于存储硬件平台类型信息的平台信息字段地址,虚拟机监控器将所述平台信息字段地址的读写接口函数进行封装并提供给操作系统内核调用;
2)在操作系统启动过程中,首先获取操作系统接收的引导装入程序命令并分析引导装入程序命令中的硬件平台参数,如果引导装入程序命令中包含硬件平台参数则将所述硬件平台参数对应的硬件平台类型信息通过所述平台信息字段地址的读写接口函数写入所述扩展ROM中的平台信息字段地址中;
3)通过所述平台信息字段地址的读写接口函数读取所述平台信息字段地址中的硬件平台类型信息,根据所述硬件平台类型信息识别当前飞腾虚拟服务器的硬件平台。
作为本发明上述技术方案的进一步改进:
所述步骤1)中虚拟机监控器将所述平台信息字段地址的读写接口函数进行封装并提供给操作系统内核调用的详细步骤如下:
A)虚拟机监控器将平台信息字段地址的读写接口函数封装并提供给操作系统;
B)操作系统将所述步骤A)中封装好的读写接口函数进一步封装并提供给操作系统的内核子模块;
C)操作系统的内核子模块将所述步骤B)中封装好的读写接口函数进一步封装得到平台信息字段地址的读写接口函数并提供给操作系统内核调用。
所述虚拟机监控器将0xFFF0F00000到0xFFF1000000的地址范围映射为计算机的扩展ROM地址,且所述平台信息字段地址占用所述扩展ROM映射地址范围的第17个字节~第20个字节。
所述步骤2)的详细步骤为:
Ⅰ)预设一组硬件平台参数数组,所述硬件平台参数数组的每一项包括字符类型的硬件平台参数和对应的整数值;
Ⅱ)在操作系统启动过程中读取引导装入程序命令中的硬件平台参数;
Ⅲ)将读取的硬件平台参数与硬件平台参数数组中字符类型的硬件平台参数进行逐一比较,如果找到匹配的硬件平台参数,则将匹配的硬件平台参数对应的整数值通过所述平台信息字段地址的读写接口函数写入所述扩展ROM中的平台信息字段地址中。
本发明具有下述优点:
1、本发明在扩展ROM设置用于存储硬件平台类型信息的平台信息字段地址,通过引导装入程序命令带入硬件平台参数的形式来实现对平台信息字段地址的配置或者修改,并在系统启动过程中读取扩展ROM中的值来判断机器类型,实现了对多种硬件平台飞腾服务器的机器类型识别的支持,可以在不同硬件平台的飞腾虚拟服务器上部署同一套系统,具有兼容性好,使用方便、操作简单的优点,有利于飞腾服务器的推广。
2、本发明在计算机的扩展ROM中建立用于存储硬件平台类型信息的平台信息字段地址,虚拟机监控器将平台信息字段地址的读写接口函数进行封装并提供给操作系统内核调用,因此通过虚拟机监控器操作扩展ROM的物理地址,并提供了读写该地址的读写接口函数并由操作系统对其进行封装再提供给其他子模块使用,保证了虚拟机的安全性和健壮性。
附图说明
图1为本发明实施例的基本流程示意图。
图2为本发明实施例的硬件框架结构示意图。
图3为本发明实施例扩展ROM的地址空间分布示意图。
具体实施方式
如图1所示,本实施例用于多硬件平台的飞腾服务器的机器类型识别方法的实施步骤如下:
1)在计算机的扩展ROM(bootrom)中设置用于存储硬件平台类型信息的平台信息字段地址(ft_type),虚拟机监控器(hypervisor)将平台信息字段地址(ft_type)的读写接口函数进行封装并提供给操作系统内核调用;
2)在操作系统启动过程中,首先获取操作系统接收的引导装入程序(silo)命令并分析silo命令中的硬件平台参数(ft_type参数),如果silo命令中包含硬件平台参数则将硬件平台参数对应的硬件平台类型信息通过平台信息字段地址的读写接口函数写入bootrom中的平台信息字段地址中;
3)通过平台信息字段地址的读写接口函数读取硬件平台字段地址中的硬件平台类型信息,根据所述硬件平台类型信息识别当前飞腾虚拟服务器的硬件平台。
如图2所示, bootrom存储在flash存储器中,flash存储器具有可擦写,并断电保留数据的特点,本实施例能够实现对ft_type参数的读写,Bootrom在启动时被映射为飞腾服务器CPU物理地址空间内,不同的硬件平台中飞腾服务器CPU分别与不同的PCIe交换单元相连,不同的硬件平台中PCIe交换单元所连接的外围设备、关机控制器也各不相同。飞腾虚拟服务器通过hypervisor管理系统物理资源并为操作系统提供系统服务,本实施例通过hypervisor直接控制读写平台信息字段地址并提供接口函数给操作系统,能够提高虚拟机的安全性和健壮性。
本实施例步骤1)中虚拟机监控器将平台信息字段地址的读写接口函数进行封装并提供给操作系统内核调用的详细步骤如下:
A)hypervisor将平台信息字段地址的读写接口函数封装并提供给操作系统;
B)操作系统将步骤A)中封装好的读写接口函数进一步封装并提供给操作系统的内核子模块。
C)操作系统的内核子模块将步骤B)中封装好的读写接口函数进一步封装得到平台信息字段地址的读写接口函数并提供给操作系统内核调用。
本实施例中,步骤A)中虚拟机监控器将平台信息字段地址的读写接口函数封装为
extern int sun4v_flash_rw(unsigned long command,
unsigned long address,
unsigned long size,
unsigned long buffer)。
步骤B)中操作系统进一步将平台信息字段地址的读写接口函数封装为:
u32 bootrom_read(int reg);
int bootrom_write(u32 data, int reg)。
步骤C)中内核子模块进一步将平台信息字段地址的读写接口函数封装为bootrom_read和bootrom_write函数:
u32 bootrom_read_ft_type(void);
int bootrom_write_ft_type(struct ft_bootrom *bootrom)。
silo命令通过命令行的形式负责加载内核映像,并将控制权传递给内核映像,本实施例的操作系统内核可以接收到来自silo命令行参数并对其进行解析,在系统第一次安装或者需要修改硬件平台类型信息时,则可以通过silo命令传递ft_type参数,操作系统将ft_type参数对应的值写入bootrom对应的地址空间。在实际的操作系统启动过程中,对bootrom的操作分为两种情况:第一,系统接收到来自silo命令传递的ft_type参数;第二,系统没有接收到来自silo命令传递的ft_type参数;对于第一种情况,在获取机器类型的子模块中,操作系统内核通过bootrom_write_ft_type将ft_type的值写到bootrom中,然后内核通过bootrom_read_ft_type读出ft_type的值,即得到硬件平台类型信息的值,该情况一般发生在第一次安装系统或者需要更改硬件平台类型信息时;对于第二种情况,在获取机器类型子模块中,操作系统内核通过bootrom_read_ft_type读出ft_type的值,即得到硬件平台类型信息的值。本实施例实现机器类型识别的功能,除了硬件基础外,还要有软件支持,特别是操作系统的软件支持。Hypervisor将操作bootrom的物理地址,并提供给操作系统读取该地址段的接口函数,操作系统将机器类型保存到该空间。
如图3所示,本实施例中虚拟机监控器将0xFFF0F00000到0xFFF1000000的地址范围映射为计算机的bootrom地址,且所述平台信息字段地址占用bootrom映射地址范围的第17个字节~第20个字节。Bootrom的映射地址范围中,前6个字节留给MAC地址使用,然后保留10个字节,接下来的4个字节(第17个字节~第20个字节)即为平台信息字段地址(ft_type),用来保存硬件平台类型信息的值。因此,操作系统将硬件结构的bootrom用软件结构struct ft_bootrom表示:
struct ft_bootrom {
uint8_t mac[6];
uint8_t reserved_0[10];
uint32_t ft_type;
uint8_t reserved_1[12];
}。
本实施例步骤2)的详细步骤为:
Ⅰ)预设一组硬件平台参数数组,硬件平台参数数组的每一项包括字符类型的硬件平台参数和对应的整数值;
Ⅱ)在操作系统启动过程中读取silo命令中的硬件平台参数;
Ⅲ)将读取的硬件平台参数与硬件平台参数数组中字符类型的硬件平台参数进行逐一比较,如果找到匹配的硬件平台参数,则将匹配的硬件平台参数对应的整数值通过平台信息字段地址的读写接口函数写入bootrom中的平台信息字段地址中。
本实施例中,硬件平台参数数组(machine_ft)的结构如下:
static char *machine_ft[] = {
[FT_UNKNOWN] "unknown",
[FT_NANGA2WAY] "nanga2way",
[FT_NANGA1WAY] "nanga1way",
[FT_MEILI] "meili",
[FT_NC] "nc",
[FT_706ZJ] "zj_706",
[FT_32ZJ] "zj_32",
[FT_END] NULL
}。
其中,左侧的[FT_UNKNOWN]、[FT_NANGA2WAY]、[FT_NANGA1WAY]、[FT_MEILI]、[FT_NC]、[FT_706ZJ]、[FT_32ZJ]、[FT_END]均对应为各个硬件平台对应的整数值,其右侧对应的字符串则为操作系统可接受silo命令中的硬件平台参数。
步骤3)中则根据读取的硬件平台类型信息来识别当前飞腾虚拟服务器的硬件平台,如果读取的硬件平台类型信息为[FT_MEILI]对应的整数值,则当前飞腾虚拟服务器的硬件平台为meili平台,如果读取的硬件平台类型信息为[FT_NC]对应的整数值,则当前飞腾虚拟服务器的硬件平台为nc平台,以此类推。
本实施例通过hypervisor操作bootrom的物理地址,并提供了读写该地址的接口函数,作系统对其进行封装,再提供给其他内核子模块使用,限制用户空间对其访问,保证其安全性和健壮性。本实施例通过silo命令传递参数的方式来修改bootrom中机器类型的值,并在系统启动过程中读取bootrom中的值来判断机器类型,判断方式简单方便。例如meili平台通过silo命令行传参数ft_type=meili;nc平台通过silo命令行传参数ft_type=nc;内核将得到的字符串“meili”或者“nc”与对应的整型值相匹配,并将相应的整型值通过bootrom_write_ft_type写入到bootrom对应的地址空间,从而保存了ft_type的值。内核再读取bootrom中ft_type的值,从而得到机器类型。本发明只需要在系统安装或者修改bootrom中机器类型的值时,传递命令行参数,修改bootrom中的值。实现了对多种硬件平台飞腾服务器的机器类型识别的支持,可以在不同硬件平台的飞腾服务器上部署同一套系统,具有兼容性好,使用方便、操作简单的优点,有利于飞腾服务器的推广。
本实施例分别通过安装有银河麒麟飞腾版操作系统的基于nanga平台(nanga1way)、meili平台、nc平台三种硬件平台的飞腾服务器进行验证,验证结果发现操作系统能够有效识别不同的硬件平台类型,并能够根据识别出来的硬件平台加载不同的驱动程序和控制程序,成功地实现了银河麒麟飞腾版操作系统的正确启动。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (4)
1.一种用于多硬件平台的飞腾服务器的机器类型识别方法,其特征在于其实施步骤如下:
1)在计算机的扩展ROM中建立用于存储硬件平台类型信息的平台信息字段地址,虚拟机监控器将所述平台信息字段地址的读写接口函数进行封装并提供给操作系统内核调用;
2)在操作系统启动过程中,首先获取操作系统接收的引导装入程序命令并分析引导装入程序命令中的硬件平台参数,如果引导装入程序命令中包含硬件平台参数则将所述硬件平台参数对应的硬件平台类型信息通过所述平台信息字段地址的读写接口函数写入所述扩展ROM中的平台信息字段地址中;
3)通过所述平台信息字段地址的读写接口函数读取所述平台信息字段地址中的硬件平台类型信息,根据所述硬件平台类型信息识别当前飞腾虚拟服务器的硬件平台。
2.根据权利要求1所述的用于多硬件平台的飞腾服务器的机器类型识别方法,其特征在于,所述步骤1)中虚拟机监控器将所述平台信息字段地址的读写接口函数进行封装并提供给操作系统内核调用的详细步骤如下:
A)虚拟机监控器将平台信息字段地址的读写接口函数封装并提供给操作系统;
B)操作系统将所述步骤A)中封装好的读写接口函数进一步封装并提供给操作系统的内核子模块;
C)操作系统的内核子模块将所述步骤B)中封装好的读写接口函数进一步封装得到所述平台信息字段地址的读写接口函数并提供给操作系统内核调用。
3.根据权利要求1所述的用于多硬件平台的飞腾服务器的机器类型识别方法,其特征在于:所述虚拟机监控器将0xFFF0F00000到0xFFF1000000的地址范围映射为计算机的扩展ROM地址,且所述平台信息字段地址占用所述扩展ROM映射地址范围的第17个字节~第20个字节。
4.根据权利要求1或2或3所述的用于多硬件平台的飞腾服务器的机器类型识别方法,其特征在于所述步骤2)的详细步骤为:
Ⅰ)预设一组硬件平台参数数组,所述硬件平台参数数组的每一项包括字符类型的硬件平台参数和对应的整数值;
Ⅱ)在操作系统启动过程中读取引导装入程序命令中的硬件平台参数;
Ⅲ)将读取的硬件平台参数与硬件平台参数数组中字符类型的硬件平台参数进行逐一比较,如果找到匹配的硬件平台参数,则将匹配的硬件平台参数对应的整数值通过所述平台信息字段地址的读写接口函数写入所述扩展ROM中的平台信息字段地址中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210095029.3A CN102662883B (zh) | 2012-03-31 | 2012-03-31 | 用于多硬件平台的飞腾服务器的机器类型识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210095029.3A CN102662883B (zh) | 2012-03-31 | 2012-03-31 | 用于多硬件平台的飞腾服务器的机器类型识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102662883A CN102662883A (zh) | 2012-09-12 |
CN102662883B true CN102662883B (zh) | 2014-12-03 |
Family
ID=46772379
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210095029.3A Active CN102662883B (zh) | 2012-03-31 | 2012-03-31 | 用于多硬件平台的飞腾服务器的机器类型识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102662883B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104765626B (zh) * | 2014-01-08 | 2018-05-04 | 深圳中电长城信息安全系统有限公司 | 一种固件程序烧写方法及装置 |
CN107222355B (zh) * | 2017-07-27 | 2020-12-01 | 苏州浪潮智能科技有限公司 | 一种服务器升级方法及装置 |
CN108804844B (zh) * | 2018-06-20 | 2022-02-11 | 深圳市易星标技术有限公司 | 一种电路模块识别方法、电路模块和仿真实验系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1128373A (zh) * | 1994-08-01 | 1996-08-07 | 国际商业机器公司 | 自行配置的计算机系统 |
CN101114243A (zh) * | 2006-07-25 | 2008-01-30 | 辉达公司 | 用以加速识别硬件平台类别的系统和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7577722B1 (en) * | 2002-04-05 | 2009-08-18 | Vmware, Inc. | Provisioning of computer systems using virtual machines |
-
2012
- 2012-03-31 CN CN201210095029.3A patent/CN102662883B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1128373A (zh) * | 1994-08-01 | 1996-08-07 | 国际商业机器公司 | 自行配置的计算机系统 |
CN101114243A (zh) * | 2006-07-25 | 2008-01-30 | 辉达公司 | 用以加速识别硬件平台类别的系统和方法 |
Non-Patent Citations (2)
Title |
---|
PCI网卡的BOOT ROM的应用;周敬利等;《计算机工程与应用》;20021231;第38卷(第19期);第140-143页 * |
周敬利等.PCI网卡的BOOT ROM的应用.《计算机工程与应用》.2002,第38卷(第19期),第140-143页. * |
Also Published As
Publication number | Publication date |
---|---|
CN102662883A (zh) | 2012-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107209681B (zh) | 一种存储设备访问方法、装置和系统 | |
CN102147763B (zh) | 一种网络日志的记录方法、系统及计算机 | |
US20140115161A1 (en) | Method and system for migration of multi-tier virtual application across different clouds hypervisor platforms | |
US10606677B2 (en) | Method of retrieving debugging data in UEFI and computer system thereof | |
US20120036308A1 (en) | Supporting a secure readable memory region for pre-boot and secure mode operations | |
CN102754076A (zh) | 用于在虚拟化环境中处理i/o操作的方法和设备 | |
KR102386495B1 (ko) | 데이터에 액세스하는 방법, 장치, 기기 및 매체 | |
CN109324991B (zh) | 一种pcie设备的热插拔装置、方法、介质及系统 | |
US9058257B2 (en) | Persistent block storage attached to memory bus | |
CN102129384A (zh) | 虚拟化主机usb适配器的方法和装置 | |
CN103077102A (zh) | 计算机开机侦测系统 | |
CN103810429A (zh) | 基于桌面云虚拟化技术的电脑病毒查杀方法 | |
US20210149587A1 (en) | Technologies to provide access to kernel and user space memory regions | |
CN102662883B (zh) | 用于多硬件平台的飞腾服务器的机器类型识别方法 | |
CN105786725A (zh) | 基于异构混合内存的内存管理方法和系统 | |
US20190171505A1 (en) | Management controller-based solution for processor ras in smi-free environment | |
US10877918B2 (en) | System and method for I/O aware processor configuration | |
US20230185599A1 (en) | Fast device discovery for virtual machines | |
CN201078772Y (zh) | 多接口和可自动安装的信息安全设备 | |
CN106933558B (zh) | 一种电源控制方法及装置 | |
US7519790B2 (en) | Method, apparatus and system for memory instructions in processors with embedded memory controllers | |
US7225295B2 (en) | External RAM module | |
CN112052132B (zh) | 通过sdio接口调试外挂芯片的方法、装置、设备和介质 | |
CN201072551Y (zh) | 一种财税安全卡 | |
US20180004274A1 (en) | Determining power state support |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |