Age | Commit message (Collapse) | Author |
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
In order to safely copy between disk and host memory through a
programming interface, DMS must be aware of the hardware disk block size
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Move to the buffer given to us if there it is a read, move from the
buffer given to us if it is a write
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Introduces reading and writing of SATA drives via a bufargs structure to
describe the buffer as well as its attributes
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Implements command slot allocation, command submission and the ATA
identify command
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
No need to overcomplicate things for now, just use a simple vm_alloc_frame() for
DMA allocations
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
This allows us to see what kind of capabilities the device has (e.g.,
MSI/MSI-X)
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
The host needs to wait for the controller to be ready by polling the CNR
bit as per section 4.2 of the spec
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Introduce programming interface based lookups for devices with different
kinds of interfaces
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Some devices are identified by very specific programming interfaces,
therefore this is important to have.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Instead of using bitfields to say which kind identification we are
doing, it is a better idea to just use the lookup type directly as it is
more scalable
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Backspace is implemented by moving the text and cursor position back and
overwriting the old characters with a '*' blending into the background.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Add text mode cursor which is the inversion of the console background
color.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Introduce a feature where a program with the correct rights may get
information about a MAC object
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
This commit introduces initial support for mandatory access control. As
one may recall, L5 follows "everything is memory". In order to interact
with a resource, a process must request it from the kernel in the form
of a (sometimes) syncable memory buffer.
Each resource as well as processes have an access level, if a process
attempts to request a resource with a higher access level than it, the
request is rejected by the kernel. However, if a process has a greater
than or equal access level as a resource, the request can be granted.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
As we rely on resetting the controller via GHC.HR, we'll need to
re-establish a link with each implemented port to actually bring them
online.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
This commit introduces this initial bring-up logic for ports on the HBA.
We have allocated the command headers and each FIS RX area for each
respective command slot. More work to be done but this lays the
groundwork
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Abort if the host controller does not support 64-bit addressing
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Here we ensure that the port is in a stopped state, we have also added
port descriptor lists to keep track of each port.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
The global host control register (described by section 3.1.2 in the AHCI
spec) has an HBA reset bit which resets *everything* to a known state.
This means that after the reset, we'll have to indicate to the HBA that
we want to speak to it over the AHCI interface. We do it once before the
reset if needed, then we do it again after.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
This commit introduces this initial ahci_init() logic by resetting HBA
state on startup.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
If we do not do this, we'll get stale x/y values the the characters will
never advance position when using multichar strings
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
When an attached device is detected, the driver will need information
about the PCI device for the bring up process.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
This commit handles base address registers by storing them in a bar
array within the PCI device structure. We also introduced a helper
header to perform operations with BARs such as getting the length of
their underlying region
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Introduce a special frame allocation utility to reserve memory for
DMA done between devices and the host.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
This commit introduces the support for having PCI specific device
drivers while providing a tiny AHCI stub that logs the existence of the
host bus adapter. The PCI bus itself has a driver for enumerating the
devices and associating a specific driver to it, the device drivers
themselve must advertise themselves to the PCI driver.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
This commit adds a new 'lookup_type_t' for representing the various
kinds of lookups one can perform on the PCI bus. The actual code to
drive the lookups is exposed as the pci_bus_lookup() routine.
When doing a lookup of a PCI device, you must specify the kind of lookup
to perform. If a PCI_LU_CLASSREV is requested, only the PCI class and
subclass fields in the PCI lookup are used.
If the PCI_LU_VENDEV is requested, only the PCI vendor ID and device ID
are used in the lookup.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
This commit adds the PCI class and revion (subclass) IDs to the PCI
device descriptor provided by L5.
Signed-off-by: Ian Moffett <ian@osmora.org>
|