2024年6月14日发(作者:游痴凝)
(19)中华人民共和国国家知识产权局
(12)发明专利说明书
(21)申请号 CN2.3
(22)申请日 2012.03.31
(71)申请人 中国人民解放军国防科学技术大学
地址 410073 湖南省长沙市砚瓦池正街47号中国人民解放军国防科学技术大学计算机
学院软件研究所
(72)发明人 邵立松 赵江涛 孔金珠 张卫华 董攀 赵自成 薛晋泽 何易泽
(74)专利代理机构 湖南兆弘专利事务所
代理人 赵洪
(51)
G06F13/10
权利要求说明书 说明书 幅图
(10)申请公布号 CN 102662883 A
(43)申请公布日 2012.09.12
(54)发明名称
用于多硬件平台的飞腾服务器的机
器类型识别方法
(57)摘要
本发明公开了一种用于多硬件平台
的飞腾服务器的机器类型识别方法,其实
施步骤如下:1)在计算机的扩展ROM中
建立平台信息字段地址,虚拟机监控器将
平台信息字段地址的读写接口函数进行封
装并提供给操作系统内核调用;2)在操作
系统启动过程中,首先获取操作系统接收
的引导装入程序命令并分析引导装入程序
命令的硬件平台参数,如果包含硬件平台
参数则将硬件平台参数对应的硬件平台类
型信息写入扩展ROM中的平台信息字段
地址中;3)通过平台信息字段地址读写接
口函数读取硬件平台字段地址中的硬件平
台类型信息,根据硬件平台类型信息识别
飞腾虚拟服务器的硬件平台。本发明具有
兼容性好、使用方便、操作简单的优点。
法律状态
法律状态公告日
法律状态信息
法律状态
权 利 要 求 说 明 书
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中的平台信息字段地址
中。
说 明 书
技术领域
本发明涉及飞腾服务器的虚拟化技术领域,具体涉及一种用于多硬件平台的飞腾服
务器的机器类型识别方法。
背景技术
飞腾服务器(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平台三种硬件平台的飞腾服务器进行验证,验证结
果发现操作系统能够有效识别不同的硬件平台类型,并能够根据识别出来的硬件平
台加载不同的驱动程序和控制程序,成功地实现了银河麒麟飞腾版操作系统的正确
启动。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,
凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术
领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改
进和润饰也应视为本发明的保护范围。
2024年6月14日发(作者:游痴凝)
(19)中华人民共和国国家知识产权局
(12)发明专利说明书
(21)申请号 CN2.3
(22)申请日 2012.03.31
(71)申请人 中国人民解放军国防科学技术大学
地址 410073 湖南省长沙市砚瓦池正街47号中国人民解放军国防科学技术大学计算机
学院软件研究所
(72)发明人 邵立松 赵江涛 孔金珠 张卫华 董攀 赵自成 薛晋泽 何易泽
(74)专利代理机构 湖南兆弘专利事务所
代理人 赵洪
(51)
G06F13/10
权利要求说明书 说明书 幅图
(10)申请公布号 CN 102662883 A
(43)申请公布日 2012.09.12
(54)发明名称
用于多硬件平台的飞腾服务器的机
器类型识别方法
(57)摘要
本发明公开了一种用于多硬件平台
的飞腾服务器的机器类型识别方法,其实
施步骤如下:1)在计算机的扩展ROM中
建立平台信息字段地址,虚拟机监控器将
平台信息字段地址的读写接口函数进行封
装并提供给操作系统内核调用;2)在操作
系统启动过程中,首先获取操作系统接收
的引导装入程序命令并分析引导装入程序
命令的硬件平台参数,如果包含硬件平台
参数则将硬件平台参数对应的硬件平台类
型信息写入扩展ROM中的平台信息字段
地址中;3)通过平台信息字段地址读写接
口函数读取硬件平台字段地址中的硬件平
台类型信息,根据硬件平台类型信息识别
飞腾虚拟服务器的硬件平台。本发明具有
兼容性好、使用方便、操作简单的优点。
法律状态
法律状态公告日
法律状态信息
法律状态
权 利 要 求 说 明 书
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中的平台信息字段地址
中。
说 明 书
技术领域
本发明涉及飞腾服务器的虚拟化技术领域,具体涉及一种用于多硬件平台的飞腾服
务器的机器类型识别方法。
背景技术
飞腾服务器(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平台三种硬件平台的飞腾服务器进行验证,验证结
果发现操作系统能够有效识别不同的硬件平台类型,并能够根据识别出来的硬件平
台加载不同的驱动程序和控制程序,成功地实现了银河麒麟飞腾版操作系统的正确
启动。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,
凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术
领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改
进和润饰也应视为本发明的保护范围。