在driver/base/cacheinfo.c 中cache_shared_cpu_map_setup 函数会通过
pptt table来parse bios 通过ACPI 表传给os的cache信息
cache_shared_cpu_map_setup->cache_setup_acpi
其源码在driver/acpi/pptt.c 中
int cache_setup_acpi(unsigned int cpu)
{struct acpi_table_header *table;acpi_status status;pr_debug("Cache Setup ACPI cpu %d\n", cpu);
#得到pptt tablestatus = acpi_get_table(ACPI_SIG_PPTT, 0, &table);if (ACPI_FAILURE(status)) {pr_warn_once("No PPTT table found, cache topology may be inaccurate\n");return -ENOENT;}
#开始parse Cache信息cache_setup_acpi_cpu(table, cpu);acpi_put_table(table);return status;
}static void cache_setup_acpi_cpu(struct acpi_table_header *table,unsigned int cpu)
{struct acpi_pptt_cache *found_cache;struct cpu_cacheinfo *this_cpu_ci = get_cpu_cacheinfo(cpu);u32 acpi_cpu_id = get_acpi_id_for_cpu(cpu);struct cacheinfo *this_leaf;unsigned int index = 0;struct acpi_pptt_processor *cpu_node = NULL;while (index < get_cpu_cacheinfo(cpu)->num_leaves) {this_leaf = this_cpu_ci->info_list + index;found_cache = acpi_find_cache_node(table, acpi_cpu_id,this_leaf->type,this_leaf->level,&cpu_node);pr_debug("found = %p %p\n", found_cache, cpu_node);if (found_cache)#找到cache node,则根据flag更新cache信息update_cache_properties(this_leaf,found_cache,cpu_node);index++;}
}static void update_cache_properties(struct cacheinfo *this_leaf,struct acpi_pptt_cache *found_cache,struct acpi_pptt_processor *cpu_node)
{this_leaf->fw_token = cpu_node;#根据flag更新cache的size等信息if (found_cache->flags & ACPI_PPTT_SIZE_PROPERTY_VALID)this_leaf->size = found_cache->size;if (found_cache->flags & ACPI_PPTT_LINE_SIZE_VALID)this_leaf->coherency_line_size = found_cache->line_size;if (found_cache->flags & ACPI_PPTT_NUMBER_OF_SETS_VALID)this_leaf->number_of_sets = found_cache->number_of_sets;if (found_cache->flags & ACPI_PPTT_ASSOCIATIVITY_VALID)this_leaf->ways_of_associativity = found_cache->associativity;if (found_cache->flags & ACPI_PPTT_WRITE_POLICY_VALID) {switch (found_cache->attributes & ACPI_PPTT_MASK_WRITE_POLICY) {case ACPI_PPTT_CACHE_POLICY_WT:this_leaf->attributes = CACHE_WRITE_THROUGH;break;case ACPI_PPTT_CACHE_POLICY_WB:this_leaf->attributes = CACHE_WRITE_BACK;break;}}}

os 通过pptt table得到cache信息相关推荐

  1. SAP Spartacus B2B table的配置信息的merge原理

    以SAP Spartacus b2b unit table的配置信息为例:位于文件units.config.ts里: 运行时,这些配置信息,被merge在table.service.ts的this.c ...

  2. linux如何手动释放内存吗,Linux如何手动清理内存中cache信息

    当在Linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching.那么Linux如何手动清理内存中cache信息?下面跟着学习啦小编一起来了解一下吧. ...

  3. linux查看CPU高速缓存(cache)信息

    一.Linux下查看CPU Cache级数,每级大小 dmesg | grep cache 实例结果如下: 二.查看Cache的关联方式 在 /sys/devices/system/cpu/中查看相应 ...

  4. 使用VUE实现在table中文字信息超过5个隐藏,鼠标移到时弹窗显示全部

    使用VUE实现在table中文字信息超过5个隐藏,鼠标移到时弹窗显示全部 <template> <div> <table> <tr v-for="i ...

  5. oracle cache table,Multiple-table cache group配置

    1.准备测试表和数据 SQL> CREATE TABLE customer 2 (cust_num NUMBER(6) NOT NULL PRIMARY KEY, 3 name VARCHAR2 ...

  6. oracle x kglob,x$kglob/x$kgltr 中library cache信息查看(结果同dump内容)

    Sys登录,执行此sql: select*fromX$KGLOBwherekglhdadr='2A5790C4'; 执行结果如下: ADDR08FDF118 INDX1093 INST_ID1 KGL ...

  7. 【UEFI实战】OS下如何查看系统相关信息

    说明 本文主要介绍OS下如何来查看系统信息,这些系统信息大多是通过BIOS上传的.这里的OS主要分为Linux和Windows两个部分来说明,前者使用的发行版系统是Ubuntu18.04,后者使用的是 ...

  8. Mac OS X 命令查看系统版本信息

    Mac 下使用 sw_vers 查看系统版本信息: gouwa@bbox:~$ sw_vers ProductName: Mac OS X ProductVersion: 10.7.2 BuildVe ...

  9. SAP Spartacus B2B table的配置信息从哪里来?

    运行时的table配置: 实现位于table.config.ts里: 以unit table为例,配置的实现在units.config.ts文件里: 运行时的效果: 更多Jerry的原创文章,尽在:& ...

最新文章

  1. 《c++ templates》学习笔记(9)——第十二章 特化与重载
  2. 两数相加c++_LeetCode 热题 HOT 100(01,两数相加)
  3. c#中用鼠标点击事件实现抠图
  4. scara机器人本体介绍
  5. 不懂分布式锁的这些问题,就亏大了
  6. 使用 Docker 部署 Spring Boot
  7. OAuth2.0_环境介绍_授权服务和资源服务_Spring Security OAuth2.0认证授权---springcloud工作笔记138
  8. 排除jar_通过IDEA快速定位和排除依赖冲突
  9. android 广播反注册后,BroadcastReceiver注册、使用及其权限
  10. [leetcode]5366. 检查网格中是否存在有效路径
  11. VS2019打包生成安装文件教程(详细实操版)
  12. 微信图片怎么添加竖排文字_如何给微信图片添加上竖排文字?
  13. H指数和G指数的Java实现
  14. 硬件基础:嵌入式软件可靠性设计要注意的问题
  15. 美苏太空竞赛历年卫星火箭发射以及历史事件介绍
  16. Arduino播放声音
  17. 下载m3u8文件中的视频,使用FFMpeg解密合并.ts文件
  18. 接口自动化场景用例——对象嵌套对象
  19. 【VUE项目实战】64、CND优化ElementUI以及首页内容定制
  20. 研究方向三选一选择FPGA/计算机视觉/故障检测

热门文章

  1. uniapp css实现轮播图片逐渐放大效果
  2. 特征工程系列:数据清洗
  3. [POI2008]MAF-Mafia
  4. 富文本编辑器导出html静态页面和pdf格式文件
  5. Hair-Gan论文翻译
  6. 遗传算法优化LSTM网络结构(实现自动根据适应度函数:即准确率来全局搜索最佳网络结构):主要被优化参数:网络层数,每层的神经元个数,全连接的层数,全连接层的神经元个数。代码有详细注解
  7. 岩板铺地好吗_卧室铺地板还是瓷砖好 这里给你答案
  8. [FirefoxOS_调试]Firefox OS调试开发系列视频教程
  9. 学习Python的Django执行python manage.py startapp myApp创建应用出现的问题
  10. React---解决跨域