用于多硬件平台飞腾服务器的软关机方法

文档序号:6367555阅读:463来源:国知局
专利名称:用于多硬件平台飞腾服务器的软关机方法
技术领域
本发明涉及飞腾服务器的软关机实现方法,具体涉及一种用于多硬件平台飞腾服务器的软关机方法。
背景技术
飞腾服务器(FT服务器)是国防科大研制、基于FT1000处理器的服务器计算机平台,其中FT1000处理器是国防科大研制、兼容spare指令集的通用64位处理器。飞腾服务器目前已经硬件的不同,分别包括nanga平台(见图I)、meili平台(见图2)以及nc平台(见图3)等不同的硬件平台。现有基于FT1000处理器的飞腾服务器中,通过处理器上集成的PCI-Express Unit (PEU: PCIe单元,它实现了 PCIe总线中的root complex)从而扩展 出了 PCIe 总线,PCI-Express Unit 与 PCIe 交换单兀(PCIe switch)相连,PCIe switch 后面则连有PCIe插槽或者具体的PCIe设备。对于飞腾服务器实现软关机的硬件实现而言,目前PCIe交换单元都有片上集成的GPI0,且都是使用PCIe交换单元的某一个GPIO作为关机控制端口来控制关机控制器(CPLD),通过CPLD进一步控制电源模块和复位信号来实现关机功能。但是,不同的硬件平台采用的PCIe交换单元不同,采用的关机控制端口也各不相同。如图I、图2和图3所示,nanga平台的PCIe交换单元采用PEX8664实现,采用的GPIO端口为GPIO 42平台的PCIe交换单元采用PEX8648实现,采用的GPIO端口为GPIO 19 ;nc平台的PCIe交换单元采用PEX8632实现,采用的GPIO端口为GPIO 32。对于飞腾服务器实现软关机的软件实现而言,在应用层面的软关机命令有poweroff, halt等,它们在操作系统中是通过系统调用reboot来实现的,该系统调用的实现在文件kernel/sys. c中,定义如下
SYSCALL_DEFINE4(
reboot, int, magicI, int, magic2, unsigned int, cmd, void_user*, arg);
该函数执行一些系统关机需要执行的一些必要动作后进入平台相关的底层函数中执行具体的关机动作。对飞腾服务器来说,这些底层函数在文件arch/sparc/kerner/reboot.c中。主要有以下几个函数,它们分别定义如下void machine_power_off(void);void machine_halt(void);void machine_restart(char 氺cmd);
要想实现软关机功能,只需在这几个函数的实现中加入执行具体关机动作的函数或语句就行了。要在飞腾服务器上实现软关机功能,除了硬件基础外,还要有软件支持,特别是操作系统的软件支持。目前飞腾服务器的基本输入输出系统和加载引导程序在系统启动检测和初始化硬件时把不同平台的PCIe交换单元的PCI内存空间映射到了同一片CPU物理地址空间。但是由于不同的硬件平台之间的采用的关机控制端口各不相同,最终导致其软关机的软件实现也各不相同,不同的硬件平台之间的软关机无法实现通用。飞腾服务器的不同硬件平台的硬件设计上的差异导致了不同平台上软关机功能软件实现上的差异,但是如果不同的飞腾服务器平台使用不同的实现软关机功能的软件,特别是软关机功能是操作系统的内部功能,将导致在不同的飞腾服务器平台上部署不同的操作系统,这将给飞腾服务器的用户带来不必要的麻烦和使用上的不便,大大降低飞腾服务器的用户体验,不利于飞腾服务器的推广。

发明内容
本发明要解决的技术问题是提供一种能够实现多硬件平台飞腾服务器的软关机,兼容性好、使用方便、操作简单的用于多硬件平台飞腾服务器的软关机方法。为了解决上述技术问题,本发明采用的技术方案为 一种用于多硬件平台飞腾服务器的软关机方法,其实施步骤如下
1)在初始化硬件时把PCIe交换单元的PCI内存空间映射为CPU物理地址空间,再将所述CPU物理地址空间映射为CPU虚拟地址空间;
2)获取当前飞腾服务器的硬件平台信息;
3)根据所述硬件平台信息获取PCIe交换单元的关机控制端口在所述CPU虚拟地址空间内的映射端口地址;
4)如果接收到操作系统的软关机命令,则控制PCIe交换单元通过所述关机控制端口在CPU虚拟地址空间内的映射端口地址向关机控制器发送关机控制脉冲时序,关机控制器接收到关机控制脉冲时序后执行关机。作为本发明上述技术方案的进一步改进
所述步骤2)具体包括首先通过所述CPU虚拟地址空间读取PCIe交换单元的端口 O配置空间内subid寄存器的值,然后根据所述subid寄存器的值识别获取当前的硬件平台信息。所述关机控制端口为PCIe交换单元的GPIO端口 ;所述步骤4)中控制PCIe交换单元向关机控制器发送关机控制脉冲时序的详细步骤包括配置GPIO端口的方向寄存器使得GPIO端口的方向为输出,通过所述GPIO端口在CPU虚拟地址空间内的映射端口地址读写GPIO端口对应的寄存器来配置电平和延时,并将配置电平和延时得到的关机控制脉冲时序输出给关机控制器。本发明具有下述优点I、本发明在初始化硬件时把PCIe交换单元的PCI内存空间通过两次映射从而映射为CPU虚拟地址空间,根据飞腾服务器当前的硬件平台信息获取PCIe交换单元的关机控制端口在CPU虚拟地址空间内的映射端口地址,使用虚拟地址访问PCIe的关机控制端口的寄存器向关机控制器发送关机控制脉冲时序执行关机,在操作系统软关机的底层函数中增加了多硬件平台飞腾服务器的软关机支持,实现了对多种硬件平台飞腾服务器的软关机支持,可以在不同硬件平台上的飞腾服务器上部署同一套系统,具有兼容性好、使用方便、操作简单的优点,提高了飞腾服务器的用户体验,有利于飞腾服务器的推广。2、本发明进一步通过CPU虚拟地址空间读取PCIe交换单元的端口 O配置空间内SUbid寄存器的值,根据SUbid寄存器的值识别获取当前的硬件平台信息,判断方式简单方便。


图I为现有技术nanga硬件平台的软关机相关硬件结构示意图。图2为现有技术meili硬件平台的软关机相关硬件结构示意图。图3为现有技术nc硬件平台的软关机相关硬件结构示意图。图4为本发明实施例的主要流程示意图。
具体实施方式

如图4所示,本实施例用于多硬件平台飞腾服务器的软关机方法的实施步骤如下
1)在初始化硬件时把PCIe交换单元的PCI内存空间映射为CPU物理地址空间,再将CPU物理地址空间映射为CPU虚拟地址空间;
2)获取当前飞腾服务器的硬件平台信息;
3)根据硬件平台信息获取PCIe交换单元的关机控制端口在CPU虚拟地址空间内的映射端口地址;
4)如果接收到操作系统的软关机命令,则控制PCIe交换单元通过关机控制端口在CPU虚拟地址空间内的映射端口地址向关机控制器发送关机控制脉冲时序,关机控制器接收到关机控制脉冲时序后执行关机。本实施例的关机控制端口为PCIe交换单元的GPIO端口,关机控制器采用复杂可编程逻辑器件(CPLD)实现。不同的平台由于PCIe交换单元不同,所采用的GPIO端口也各不相同,例如nanga平台采用GPIO 42作为关机控制端口,meili平台采用GPIO 19作为关机控制端口,nc平台采用GPIO 32作为关机控制端口。本实施例能够实现不用区分不同平台的不同PCIe交换单元,而使用同一软件访问的配置空间寄存器而不会产生兼容性问题,其原因如下飞腾服务器初始化硬件时(基本输入输出系统和加载引导程序在检测和初始化系统中的硬件时)把不同平台的不同PCIe交换单元的PCI内存空间映射到了同一片CPU物理地址空间,再将CPU物理地址空间映射为CPU虚拟地址空间,然后使用虚拟地址访问PCIe交换单元的PCI内存空间,根据硬件平台信息获取PCIe交换单元的关机控制端口在CPU虚拟地址空间内的映射端口地址,如果接收到操作系统的软关机命令,则控制PCIe交换单元通过关机控制端口在CPU虚拟地址空间内的映射端口地址向关机控制器发送关机控制脉冲时序,关机控制器接收到关机控制脉冲时序后执行关机,所以对于多个硬件平台也不会产生兼容性问题。而且PCIe交换单元的配置空间中的寄存器同样位于PCI内存空间中,因此可以使用访问PCI内存空间的方法来访问PCI配置空间中的寄存器。因为不同的硬件平台采用了不同的PCIe交换单元,所以通过区分不同PCIe交换单元就可以获取不同的硬件平台信息。PCIe交换单元的PCIe配置空间中偏移为OxaS的subid寄存器中保存了 PCIe交换单元的subid值,不同的PCIe交换单元在该寄存器中的subid值不同,因此根据subid值就可以区分出不同的PCIe交换单元,进而区分出不同的硬件平台。因此,本实施例的步骤2)具体包括首先通过CPU虚拟地址空间读取PCIe交换单元的端口 O配置空间内subid寄存器(即端口 O配置空间中偏移为OxaS的寄存器)的值,然后根据subid寄存器的值识别获取当前的硬件平台信息。步骤4)中控制PCIe交换单元向关机控制器发送关机控制脉冲时序的详细步骤包括
A)配置GPIO端口的方向寄存器使得GPIO端口的方向为输出;
B)通过GPIO端口在CPU虚拟地址空间内的映射端口地址读写GPIO端口对应的寄存器来配置电平和延时,并将配置电平和延时得到的关机控制脉冲时序输出给关机控制器。由于PCIe交换单元的PCI内存空间经过两次映射后,位于PCI内存空间内的GPIO端口同样也被映射为CPU虚拟地址空间内,因此能够直接通过CPU虚拟地址空间内的映射端口地址读写GPIO端口对应的寄存器。
对于飞腾服务器而言,不同的硬件平台采用相同的关机控制脉冲时序,关机控制脉冲时序的时序为出100毫秒的低电平+ 1000毫秒的高电平+ 1000毫秒的低电平。因此步骤B)中配置电平和延时具体是指先输出100毫秒的低电平,再输出1000毫秒的高电平,最后输出1000毫秒的低电平。本实施例分别应用在安装有银河麒麟飞腾版操作系统的基于nanga平台、meili平台、nc平台三种硬件平台的飞腾服务器进行验证。在银河麒麟飞腾版操作系统启动完毕后执行软关机命令(poweroff)后,本实施例的方法均能够输出正确的关机控制脉冲时序,均成功实现飞腾服务器的关机断电。以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1.一种用于多硬件平台飞腾服务器的软关机方法,其特征在于其实施步骤如下 1)在初始化硬件时把PCIe交换单元的PCI内存空间映射为CPU物理地址空间,再将所述CPU物理地址空间映射为CPU虚拟地址空间; 2)获取当前飞腾服务器的硬件平台信息; 3)根据所述硬件平台信息获取PCIe交换单元的关机控制端口在所述CPU虚拟地址空间内的映射端口地址; 4)如果接收到操作系统的软关机命令,则控制PCIe交换单元通过所述关机控制端口在CPU虚拟地址空间内的映射端口地址向关机控制器发送关机控制脉冲时序,关机控制器接收到关机控制脉冲时序后执行关机。
2.根据权利要求I所述的用于多硬件平台飞腾服务器的软关机方法,其特征在于,所述步骤2)具体包括首先通过所述CPU虚拟地址空间读取PCIe交换单元的端口 O配置空间内subid寄存器的值,然后根据所述subid寄存器的值识别获取当前的硬件平台信息。
3.根据权利要求I或2所述的用于多硬件平台飞腾服务器的软关机方法,其特征在于,所述关机控制端口为PCIe交换单元的GPIO端口 ;所述步骤4)中控制PCIe交换单元向关机控制器发送关机控制脉冲时序的详细步骤包括配置GPIO端口的方向寄存器使得GPIO端口的方向为输出,通过所述GPIO端口在CPU虚拟地址空间内的映射端口地址读写GPIO端口对应的寄存器来配置电平和延时,并将配置电平和延时得到的关机控制脉冲时序输出给关机控制器。
全文摘要
本发明公开了一种用于多硬件平台飞腾服务器的软关机方法,其实施步骤如下1)在初始化硬件时把PCIe交换单元的PCI内存空间映射为CPU物理地址空间,再将CPU物理地址空间映射为CPU虚拟地址空间;2)获取当前飞腾服务器的硬件平台信息;3)根据硬件平台信息获取PCIe交换单元的关机控制端口在CPU虚拟地址空间内的映射端口地址;4)如果接收到操作系统的软关机命令,则控制PCIe交换单元通过关机控制端口在CPU虚拟地址空间内的映射端口地址向关机控制器发送关机控制脉冲时序,关机控制器接收到关机控制脉冲时序后执行关机。本发明能够实现多硬件平台飞腾服务器的软关机,具有兼容性好、使用方便、操作简单的优点。
文档编号G06F9/445GK102662710SQ201210095218
公开日2012年9月12日 申请日期2012年3月31日 优先权日2012年3月31日
发明者何易泽, 孔金珠, 孙立明, 张卫华, 李真能, 赵自成, 邵立松, 陈霖翔 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1