PCI range checking under qemu-system-sparc64

Mark Cave-Ayland mark.cave-ayland at ilande.co.uk
Sun Sep 13 17:46:23 UTC 2015


On 13/09/15 03:39, Marius Strobl wrote:

> On Sun, Sep 06, 2015 at 03:22:59PM +0100, Mark Cave-Ayland wrote:
>> On 06/09/15 14:42, Alexey Dokuchaev wrote:
>>
>>> On Sun, Sep 06, 2015 at 02:02:01PM +0100, Mark Cave-Ayland wrote:
>>>> I wonder if the problem is just that suitable console drivers can't
>>>> be found?
>>>>
>>>>>   ebus0: <su> addr 0x14000003f8-0x14000003ff irq 43 (no driver attached)
>>>>>   ebus0: <kb_ps2> addr 0x1400000060-0x1400000067 (no driver attached)
>>>>
>>>> The QEMU hardware model is still a WIP and the serial port currently
>>>> uses a 16550A UART (su) device rather than ESCC found in real hardware,
>>>> while the keyboard is a simple PS2 keyboard.
>>>>
>>>> If you alter your kernel configuration to include building of the su and
>>>> ps2 driver modules, does this help with detection of the serial and
>>>> keyboard devices and if so, does boot progress any further at all?
>>>
>>> Hmm, I'm running GENERIC, so it looks like everything should be already
>>> there, no?  At least by looking at ./conf/files.sparc64 I don't see what
>>> else ("device ???") should I add to it to get su/kb_ps2 support...
>>
>> I'm afraid I'm not really a BSD person, but a quick browse at the source
>> on github suggests you need these drivers:
>>
>> https://github.com/freebsd/freebsd/blob/master/sys/dev/uart/uart_bus_ebus.c
>>
>> https://github.com/freebsd/freebsd/blob/master/sys/dev/atkbdc/atkbdc_ebus.c
>>
>> It also looks like you'd need to hack atkbdc_ebus.c to allow "kb_ps2" as
>> a device name rather than just trying to match on "8042", although this
>> could potentially be fixed by renaming the device in OpenBIOS moving
>> forwards as long as it doesn't cause any regressions.
>>
> 
> Simple renaming in OpenBIOS wouldn't be the right fix either and neither
> change would make things work.
> On real machines for PS/2 there's a "8042" node on the EBus and _beneath_
> that "8042" node there's a "kb_ps2" as well as a "kdmouse" one. "8042"
> has _two_ _identical_ addresses assigned, which its children index via
> their "reg" properties. The interrupt also goes onto the "8042" node.
> See the example of a Sun AXe board below.
> 
> *Please* emulate real machines with QEMU. This specifically also applies
> to ARM hardware.

Well if there was enough time and people working on this... :)  Interest
in SPARC appears to have dropped significantly since the switch to
Oracle so the work I do is limited to the available spare time.
Currently the PS/2 keyboard/mouse code is I believe based on old PReP
code, but I agree looking at this that the existing model is wrong -
I'll go away and get this fixed ASAP.

Longer term it may be that switching to an ESCC serial port would be a
better option here. The sad part is that complete emulation is unlikely
to be obtainable, for example the code required for just a complete
implementation of an ATI Rage card with its hardware acceleration would
be fairly substantial.


ATB,

Mark.



More information about the freebsd-sparc64 mailing list