Age | Commit message (Collapse) | Author | Files | Lines |
|
Hex vs. decimal thinko
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
|
|
The USB stack did instance specific allocations for the
various buffers, but would then assign them to package
specific lists, and would generally get badly confused
as soon as multiple instances of the driver got opened.
This typically occurs when using a USB keyboard and booting
from a USB disk.
This makes everything node variables instead, with tracking
of how many instances are open, with one allocation pass
on the first open and one free pass on the last close.
The result is a lot more reliable, I can boot with USB keyboard
and a USB disk fine without hanging qemu.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
|
|
When erasing characters or when inserting characters in the middle of a line,
the framebuffer code did not correctly calculate the line width, since it was
not taking the bit depth into account yet.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
We now support populating the device-nodes ourselves when using
a newer qemu which doesn't do it anymore.
Note: I have removed the support for working with the existing
device nodes, so qemu needs to be updated in sync with slof
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
|
|
We don't support 8-bytes PIO
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
|
|
It was clobbering r4 and not marking it as such, causing
problems among others in virtio-blk
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
|
|
This is the default in qemu now
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
|
|
We do that by replacing the word "boot-command" to return
"(boot-ram)" (but we don't change the nvram env).
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
|
|
According to IEEE 1275, the "my-unit" command shall return the unit address
of the current _instance_, i.e. this unit address can be set differently for
each instance, it is not bound to the physical unit address like "my-space"
and "my-address". This behaviour is expected by the Citrine FCODE for example,
which does not set a physical unit address for the "sd" (disk) nodes, but
needs the unit address to be specified when opening the device tree node
instead.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
These two compiler flags for additional warnings help to improve the quality
of the source code: Removed some unused code and fixed some obvious bugs.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
Some functions in node.fs were formatted in a very bad way, using wrong
indentation or mixing spaces and tabs for indentation. Cleaned this up now,
without doing any functional changes.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
When the ' (tick) or postpone commands hit an unknown function, they simply
printed out "undefined word" without telling which word was not defined. These
problems were quite cumbersome to debug since it was quite hard to find the
right spot in the source code where such problems happened. Now the tick and
postpone command store the name of the undefined word, too, so that the code
which catches the ABORT also prints this information.
I also fixed the $FIND command to be standard compliant right from the start
(so that it leaves the string parameters on the stack in case the word has
not been found).
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
When the "open" method of the target node failed, the open-node function did
not correctly restore the previous value of "my-self" (it was using my-parent
of the new node to restore the previous value, but that did not work when the
new node could not be opened). Now the old value of "my-self" is saved on the
return stack instead and then always correctly restored.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
Now that our framebuffer code basically supports 16 and 32 bit color depths,
we can also enable support for these resolutions in the QEMU VGA device driver.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
The "Warning: Did not replace phandle in XYZ" messages could confuse the
normal users, so they are now only printed when running in diagnostic-mode.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
With these changes, it should be possible to use screen depth of 16 bit and
32 bit as well.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
The biosemu on bimini had some problems with newer versions of GCC ... I saw
on a couple of websites that for lwbrx and lhbrx, the assembler constraint
"Z" should be used instead of "r". This seems to fix the hang.
|
|
For some reasons, interrupt transfers do not work right on QEMU, so we use
control transfers there instead. Also digest one key scancode at a time only
to avoid the problem with phantom keypresses.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
QEMU already provides a string for the "model" property of the root node.
We should not change this to avoid incompatibilities with the kernel.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
Cleaned up indentation and superfluous white spaces in usb-keyboard.fs
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
Simple framebuffer support for the standard VGA display provided by QEMU.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
Since the FCODE evaluator can be used for more than one PCI card now, the
interpreter is now always included during boot. The framebuffer tokens are now
only initialized when the code from fbuffer.fs is being used.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
So far the net-snk could only use networking cards that had corresponding
drivers in the ROM filesystem. NICs that come with their of FCODE drivers were
not supported yet. For these NICs I added now a pseudo-module to the net-snk
that is able to use the corresponding device tree nodes via the "read" and
"write" functions of the client interface.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
These additional files are necessary to built board-js2x, see the following
URL for details: http://www.ibm.com/developerworks/power/pa-slof-js20/
|
|
The "open-node" command always tried to execute the "open" method of the node
that should be opened and used CATCH to determine whether the method is
available or not (and assumed success if it is not available). That works fine
as long as the "open" method does not ABORT due to any reason - in that case
the "open" should be considered as failure instead. So the code is now using
"find-method" instead to determine whether the "open" method is available or
not.
Second fix is about "my-unit". According to IEEE1275, this value should be
initialized to the firt component of the "reg" property in case it has not
been specified by other means.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
The get-inherited-property function messed up the stack in case the property
could not be found. Now it deals with this situation correctly.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
The TFTP downloads failed when the read request packet got lost.
This problem is now fixed by retransmitting the read request after a while.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
Some FCODE programs try to access their ROM BAR, so map-in has got to support
this BAR, too.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
According to the PCI bus binding to Open Firmware, the uppermost byte can
contain some description bits when doing "config-l@" and the like. For
accessing the config space via MMIO, we've got to mask them away.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
The BEHAVIOR function only worked with normal DEFER variables so far. It was
not aware of INSTANCE DEFERs yet. This problem has been fixed now.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
In 1275.fs there were some functions that were apparently not used anymore.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
IEEE1275 allows offset values to be either encoded with 8-bit values or
16-bit values. So far our FCODE engine only supported 16-bit offsets.
Now 8-bit offsets are working, too.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
The "dev" command parsed the whole remaining input line. That way it was not
possible to do something like "dev / ls" at the prompt. Now it parses only
the next available word in the input so that the rest of the input line can
be interpreted by the Forth engine instead.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
Printing the phandle of each node is quite handy when searching for a specific
phandle value.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
There are a lot of properties in the FDT that contain a string, but commands
like ".properties" only displayed them as byte array since all properties
were encoded with "encode-bytes". Now the code tries to detect valid ASCII
strings and encodes such properties with "encode-string" instead.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
IEEE 1275 stipulates that the "BUFFER:" keyword and its FCODE equivalent
"b(buffer:)" can both be used with the INSTANCE keyword to create an
instance-specific buffer. SLOF lacked this support, but now it's possible
to create such instance-specific buffers with SLOF, too.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
Currently the hvterm code just picks an arbitrary vty to use as the
console. It would be preferable under QEMU if we could use
linux,stdout-path.
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
|
|
Currently the hvterm routines always use termno=0. This works because
QEMU has code that recognies termno=0 and chooses a "default" vty.
It would be more correct if the hvterm routines took the termno as an
argument. That way if we open a vty other than the default the output
will correctly go to that vty.
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
|
|
The compiler flags -Wmissing-prototypes and -Wstrict-prototypes generally help
to write code with proper prototypes. This way one can avoid some ugly bugs
because it helps to identify functions that do not have prototypes in headers.
It also helps to improve performance since local functions then have to be
declared "static", so the compiler can do better optimizations.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
The "Recommended Practice: Interposition" document declares that token 0x12b
is used for "interpose".
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
The OHCI code unmaps the allocated DMA buffers during "quiesce". For this
the dma-map-out and dma-free functions were using the $call-parent function
that requires a valid current instance ("my-self"). However, there is no
current instance available during "quiesce" so $call-parent aborted the boot
process.
To fix the problem, the dma-* functions now use $call-static again so that
they also work without a current instance.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
When building SLOF from a git repository, use the SHA-id as version information
instead of the less useful "private build" string.
Also make sure that version information is updated during each build, so that
we also print more accurate "build date" information now.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
Added a driver for the "virtio-net" virtualized network devices from KVM/qemu.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
The virtio devices are preferred way of providing virtualized devices on
KVM/qemu. Here's now the basic support for virtio block devices.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
Fixed network booting for device tree nodes that do not provide a
local-mac-address property by default.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
|
|
The code for setting some of the device alias had a bug. When it was called
multiple times, for example because two or more hard disk images had been
configured, it left an item on the Forth stack, causing a crash or other
ugly side effects later.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
According to the PCI Bus Binding to IEEE 1275, the dma-alloc, dma-free,
dma-map-in, dma-map-out and dma-sync functions have to be provided by the
PCI bus node, not by the PCI device node, so I moved these functions to the
PHB node now. Since the "ibm,dma-window" property is still located in the
device node instead, I had to add a little hack to the $call-parent method
to remember the calling child, so that the parent node (the PHB node) can
access that property of the calling child.
Also added map-in and map-out functions now according the the PCI Bus Binding.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
Refactored the ohci-scan function a little bit and use the new "extend-device"
function to extend the ohci node properly.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|
|
Fixed various bugs and added some improvements in the device tree node instance
handling code:
- The ">instance" word now checks whether access is beyond the allocated memory
- Check max-instance-size when creating new instance variables/values
- The arg point and the args-len were stored the wrong way round in the
instance header structure
- Free instance args buffer when closing an instance to avoid memory leaking
- finish-device destroyed the instance-template buffer, causing instance values
not to be initialized correctly anymore
- Added new command "extend-device" to be able to modify the instance template
of already existing nodes
- Added new command "unselect-dev" to undo the changes from select-dev
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
|