发现以前的一些记录 shutdown AP CPU

今天无意中发现我以前记录的一些没解决的问题。----》》

英特尔手册(多处理器规范1.4)中记录的方法:用80286重入实模式的方法可以关闭AP CPU,由BSP发送INIT IPI给AP CPU。下面这些数据必须先设置好!

1 :BIOS数据区:0:0x467复位代码地址:可以重入实模式

2:0:0x472复位标致   (0x1234热启动.0x0冷启动)

3:CMOS RAM:0xF发送0xA到这(没有EOI的JMP远指针)这个办法能SHUTDOWN AP。

-------------------------------------

1)向CMOS 0x0F写入值0x0A
 2)写入启动地址为0x40:0x67
 3)向AP发送INIT IPI

这个规则应该是老的CPU(使用82489DX)使用的规则,估计是486吧,不是太清楚这个。

奔腾处理器已经内置APIC了。82489DX的手册上没有看到有SIPI或STARTUP IPI的说明,应该是486

内置APIC的版本号都是1.x,82489dx的版本号是0.x。

----------------------------------------

晚上试试看。

看样子不是我一个人的问题,在INTEL上查找到的:-->

https://software.intel.com/zh-cn/forums/intel-moderncode-for-parallel-architectures/topic/289483

我希望这是一个像我这样的问题的正确论坛。

在为多核系统编写一些实验软件的过程中,我希望能够选择性地停止和重新启动各个“逻辑处理器”(线程,核心)。代码当前运行“裸机”,即没有操作系统,像启动加载程序一样启动。在没有受害处理器的协作的情况下暂停逻辑处理器应该是可能的,即具有定义的“关闭”标志或“关闭”IPI不是选项,因为处理器可能忽略关闭请求。

通过向AP发送INIT IPI(使AP进入等待SIPI状态),然后是两个STARTUP IPI(让AP开始在向量<< 12处执行),可以容易地实现停止和重新启动AP(应用处理器)。通过使用下面描述的热复位矢量方法作为安全保护,这应该适用于所有处理器,包括具有忽略STARTUP IPI的离散APIC的系统(这意味着它们在INIT之后立即开始执行)。

对于BSP(自举处理器)来说,情况更加困难。通过编程CMOS / RTC RAM偏移0xF关闭代码0xA和热复位向量40:67h在BDA与一些代码的地址我想重新启动从我可以实现相同的BSPs。这在多个系统上正常工作,包括具有Intel BIOS的D945GCLF2,具有Core2 Quad处理器和AMI BIOS的IMEI板以及使用VMWare和BOCHS的仿真平台。
不幸的是,它不工作在富士通Celsius R570工作站与双Xeon-5520处理器和凤凰SecureCore BIOS。Celsius中的BIOS显然忽略关闭代码,并在发送到BSP的INIT之后重新启动执行后重置整个系统。

我正在寻找的是实现停止,然后重新启动BSP而不影响AP的方法。重启应从一个AP发起,可靠地通过发送IPI到BSP。它看起来像在40:67h的热复位向量不被现代BIOS使用(至少由Celsius R570)。有没有任何替代方法?

转载于:https://my.oschina.net/u/2601353/blog/836796

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值