Table of Contents

Name

Work

I've listed uncommitted code/bug fixes I've written for FreeBSD in the hope they might be useful to others.

If you have a system for which these patches are useful, and you want an easy way of installing all of them, download this: multifix.diff. It contains all the bug fixes and new feature patches listed below.

If you haven't already, then download the repository of FreeBSD sources, create a new branch from RELENG-13.1 (stable will probably work, but perhaps you'll have to touch it up), and build and install a new world and kernel - including updating /etc. The man pages will be updated to reflect the new configuration options, but the defaults will probably work.

You'll also have to download the patch files for drm-510-kmod (files.shar) and build and install it.

If any of this work gets committed, I'll update the list to indicate that.

Bugs

Here is a patch fix relative to 13.2-RELEASE: PATCH

Here is a patch fix relative to 13.2-RELEASE: PATCH

Here is a patch fix relative to 13.2-RELEASE: PATCH

Here is a patch fix relative to 13.2-RELEASE: PATCH

Here is a patch fix relative to 13.2-RELEASE: PATCH

Device Drivers

New Developments

Such a device will need to have the screen rotated by the correct multiple of 90 degrees by each display management system. In FreeBSD, this would typically be the boot loader, the console driver (usually vt(4)), and X or Wayland.

In the cases of X and Wayland, the rotation is easily handled by existing configuration options. This is not the case with the boot loader or console, and the purpose of this code.

The specification of any required rotation should be done in the SMBIOS VBT table (when this option is available), where there are bits reserved there for this purpose. They are rarely used at this time, probably because the engineers building these devices don't know about them. Other options include a quirk table and manual configuration in /boot/loader.conf.

The quirk table and VBT lookup is done by the linux code in the drm-kmod module. The loader.conf file data is obtained by the loader's parser. The information from each of these sources must be shared with the other participants. Inside of FreeBSD, this is done with kenv(2). One problem remains - how to pass it to the loader when it starts, before it has had a chance to read the (possibly encrypted, requiring a prompt and a response) root filesystem? The solution used here is to store the data in a UEFI variable.

There are three separate patches providing full functionality; one for each of the loader, the vt(4) framebuffer, and the drm-kmod module. Each of the patches will work with or without the others.

Contact

Feel free to contact me regarding these projects, which are somewhat elaborated on here: GPD_MicroPC