qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [FYI 4/4] prep: Quickfix for ioport


From: Alexander Graf
Subject: Re: [Qemu-devel] [FYI 4/4] prep: Quickfix for ioport
Date: Tue, 4 Jan 2011 23:02:14 +0100

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


On 04.01.2011, at 22:59, Andreas Färber wrote:

> Am 04.01.2011 um 22:43 schrieb Alexander Graf:
> 
>> On 04.01.2011, at 22:36, Andreas Färber wrote:
>> 
>>> Am 04.01.2011 um 21:57 schrieb Alexander Graf:
>>> 
>>>> On 27.12.2010, at 01:25, Andreas Färber wrote:
>>>> 
>>>>> Am 27.12.2010 um 01:11 schrieb Alexander Graf:
>>>>> 
>>>>>> Am 27.12.2010 um 00:28 schrieb Andreas Färber <address@hidden>:
>>>>>> 
>>>>>>> Am 14.12.2010 um 01:49 schrieb Andreas Färber:
>>>>>>> 
>>>>>>>> Workaround the following error:
>>>>>>>> 
>>>>>>>> qemu: hardware error: register_ioport_read: invalid opaque
>>>>>>> 
>>>>>>> I found out that this is a conflict with i8042 registering I/O port 
>>>>>>> 0x0092 in pckbd.c, too.
>>>>>>> Not sure what the proper fix should look like - add some qdev property 
>>>>>>> to ISAKBDState to disable the port?
>>>>>> 
>>>>>> Well, why does the PREP board have its own mapping there in the first 
>>>>>> place? It should be the same as a PC from a port pov, no?
>>>>> 
>>>>> Why does the i8042 controller have a System Control Port in the first 
>>>>> place rather than the 'pc' machine? :)
>>>>> 
>>>>> The PReP spec v1.1 has a Special Port 0x0092 that includes two bits of 
>>>>> significence - softreset and endian mode. So wherever the port is 
>>>>> registered, the latter behavior is board-specific and does not match 
>>>>> pckbd.c (A20 gate or HDD activity depending on bit numbering).
>>>>> 
>>>>> A similar issue arises between PReP machines: The ioport currently does 
>>>>> not allow using a different opaque for reads and writes to the same 
>>>>> address. So either we need to change ioport or create some 
>>>>> inheritence/override mechanism for port behavior.
>>>> 
>>>> Hmm - sounds to me like that register simply doesn't belong there then, so 
>>>> a split would be the correct solution. The alternative would be to have 
>>>> the keyboard controller create a bus that those bits send signals to. An 
>>>> x86 system could then implement its A20 gate in x86 specific code while 
>>>> PREP could do its specific stuff.
>>> 
>>> Coincidentally there's a recent pckbd patch from Blue that resolves the 
>>> conflict. Feel free to review. :)
>> 
>> Ah, sorry :). Still catching up. Just now finished to watch news of the last 
>> 1 1/2 weeks :).
> 
> Welcome back. Did they have to pay much? ;)

The only one ending up paying was me to get in for the 27c3 ;).

>>> Any thoughts on the read vs. write port issue? Do we need to register both 
>>> ports in the base device and add hooks to the device state? Sounds 
>>> problematic VMState-wise, just like some of the qemu_irq constructs in the 
>>> ppc devices. (My prep_pci changes are still far from perfect, UniNorth has 
>>> similar issues I noticed.)
>> 
>> Well, the general idea is that a single IO always gets routed to the same 
>> device. I don't fully understand why you need separate handlers there tbh. 
>> Mind to explain this?
> 
> In short: Inheritance.
> 
> The actual issue appears to be snip'ed above, it's about apparent subtle 
> machine differences concerning non-standard register uses (here, "Motorola 
> ... register" in -M prep vs. nothing in PReP 1.1 spec).

Hrm. So the port belongs to machine specific code then and should only call 
helper functions for other generic bits, no?


Alex

-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.0.16 (Darwin)

iEYEARECAAYFAk0jmOYACgkQq7Wi27wfN1Pp2ACdFf7aa8y/tNC7fx9Z4zFheNnU
1RQAnjGNJqAGhYNvEOKuNihLVJKsVeG9
=QdiF
-----END PGP SIGNATURE-----



reply via email to

[Prev in Thread] Current Thread [Next in Thread]