Driver

共 38 篇文章。

用 BHyVe 虚拟机解决 FreeBSD Wi-Fi 驱动的问题

• Kernel

BHyVe

https://www.FreeBSD.org/ 10.0-RELEASE 起,系统提供了一个最早由 NetApp开发的使用处理器提供的虚拟化硬件支持 (目前是 Intel VT 和 AMD-V;针对 ARM 平台的支持也在 https://reviews.freebsd.org/D26976)的虚拟化环境 https://wiki.freebsd.org/bhyve,这套虚拟化环境可以运行支持 VirtIO规范的各种操作系统,并提供了 UEFI 支持。

阅读全文… ( 本文约 1153 字,阅读大致需要 3 分钟 )

FreeBSD Vendor Summit 201211

• Development

FreeBSD Vendor Summit 是定期举行的使用 FreeBSD 的公司的交流会,这次是在 Yahoo 总部举办。不过,早上因为没有注意收听广播,结果在 237 上堵了半个小时,到会场的时候已经在演示 VTune 了。

阅读全文… ( 本文约 865 字,阅读大致需要 2 分钟 )

FreeBSD 9.1-RC3

• Kernel

总算是 命名了……现在 re@ 已经开始拒绝所有的变动请求,包括前几天的 High Point Technologies 驱动更新。不出意外的话,两周之内应该会正式 release 了。

参与评论

LSI SAS HBA固件

• Hardware

最近我厂对 LSI 6Gb/s SAS HBA 的驱动 (mps(4)) 进行了改进,令其可以在 FreeBSD 环境中进行固件刷写操作。目前最新的固件版本是 14,这个版本修正了目前已知的全部问题。

以前一直没有太注意,这类 HBA 卡上可以用两种固件。一种是 IT (initiator target) 固件,这类固件只提供HBA功能;另一种是 IR (integrated RAID) 固件,这类固件提供集成 RAID 功能。对于我们的应用来说,显然希望用 IT 固件,因为它的代码量要少得多,而由于减少了包含校验的冗余,卡本身的 RAID 功能在 ZFS 环境多数情况下都是有害的。

阅读全文… ( 本文约 376 字,阅读大致需要 1 分钟 )

netmap进 -CURRENT

• Kernel

近日, netmap 已经正式进入 -CURRENT (r227614)。目前联编带 netmap 的内核需要做下面的操作:

% cd /usr/src/sys
% patch -p0 < dev/netmap/head.diff

然后在内核联编配置中加入:

阅读全文… ( 本文约 259 字,阅读大致需要 1 分钟 )

ses控制和监控程序

• Hardware

继续记一笔,在 /usr/src/share/examples/ses 里面。

为啥这些程序不成为基本系统的一部分呢?难道是因为太简单了……害得我好找(好歹应该在联机手册里面提一句吧)。顺手把代码清理了一下,等新机器到了拿这个去杵杵看。有谁知道ses设备和总线位置(也就是物理的槽位)之间的对应关系有什么办法能拿到吗?还是只能写个程序让一个人去根据这种设备训练一下系统?

参与评论

DMA设备驱动的常见问题

• Kernel

DMA (Direct Memory Access) 是一种提高计算机系统并发能力的技术。简单地说,它允许外围设备以异步方式操作内存,从而减少了CPU在I/O操作中的参与。

目前的微机和PC服务器都广泛采用了 DMA 技术。由于 DMA 是一种异步操作,因此在撰写驱动时,有很多需要注意的问题。

阅读全文… ( 本文约 895 字,阅读大致需要 2 分钟 )

改一行代码带来的性能改进

• Kernel

FreeBSD先前的vesa framebuffer驱动有个问题,就是滚屏的时候会比较慢。jkim大长辈于是改了一行代码。

好吧,我承认我之前一直以为是console驱动想要锁&Giant的问题。其实真正的原因是默认的pmap_mapdev并不做写合并,所以应该呼叫更低阶的pmap_mapdev_attr并传入PAT_WRITE_COMBINING参数。

阅读全文… ( 本文约 230 字,阅读大致需要 1 分钟 )

FreeBSD CAM/AHCI committed

• Kernel

下周一的8.0-BETA2会包含这个。CAM/AHCI是按照CAM框架重写的AHCI驱动(之前是ata(4)),提供了包括NCQ等硬件特性的支持,并改善了对SATA光驱的支持。与OpenBSD的实现不同,FreeBSD实现通过扩展CAM框架使其直接对ATA设备提供支持。

阅读全文… ( 本文约 201 字,阅读大致需要 1 分钟 )

驱动程序是什么

• Kernel

Disclaimer: 这是一篇科普文章,不会涉及太多的技术细节。

简单地说,驱动程序是操作系统与硬件(有时也包括其他的软件或在硬件上运行的firmware)之间的一种接口程序。对于操作系统来说,驱动程序是非常重要的

不过,在现代系统中,多数情况下,驱动程序并不只是简单机械地翻译操作系统的请求,更多的时候,驱动程序还有另外的很重要的作用,即绕过硬件本身的问题,常见的例如,临时加载一份较新版本的固件、针对某些版本的硬件禁用某些会导致问题的特性、分配内存的时候确保按边界对齐或只在前4GB分配以绕过DMA引擎寻址能力差的问题、通过增加延迟来解决硬件制造时对时序过于敏感的问题,等等。通过驱动程序绕过这些问题,能够让用户看不到(或者,至少在硬件负载不大的情况下看不到)问题的存在,并消除一小部分问题(例如原先随硬件发布的固件版本存在一些问题,而又没有提供更新固件的接口,新版本的驱动可能会在系统引导的过程中上传一份新版的固件到设备的临时存储)。

一般来说,驱动程序可以在逻辑上分为以下三个部分:

阅读全文… ( 本文约 1078 字,阅读大致需要 3 分钟 )