[PATCH 00/24] vt82c686b clean ups and vt8231 emulation - all in one

BALATON Zoltan via posted 24 patches 4 years, 10 months ago
Failed in applying to current master (apply log)
hw/audio/meson.build      |    1 +
hw/audio/via-ac97.c       |   93 ++++
hw/isa/trace-events       |    8 +
hw/isa/vt82c686.c         | 1000 ++++++++++++++++++++++++-------------
hw/mips/fuloong2e.c       |   38 +-
include/hw/isa/vt82c686.h |   15 +-
6 files changed, 761 insertions(+), 394 deletions(-)
create mode 100644 hw/audio/via-ac97.c
[PATCH 00/24] vt82c686b clean ups and vt8231 emulation - all in one
Posted by BALATON Zoltan via 4 years, 10 months ago
Hello,

This is an all in one series containing all the patches from my
previous part I and part II vt82c686b clean up series plus the end of
it to finally add vt8231 emulation that will be used by subsequent
ppc/pegasos2 emulation. I consider this finished for now and good
enough to get in also cleaning up and improving fuloong2e emulation a
bit but previous disclaimer is still valid: It does not aim to fix all
existing bugs or make the model perfectly emulate the real chip just
reach the level where we can have working emulation to boot guests
which can then be improved later. (E.g. I think state saving was
broken before and it remains broken after because I don't know all the
details how to add vmstate for all kinds of data structures and this
could be addressed separately when fixing the already broken state
saving if someone wants to test and fix it.) With this it boots at
least MorphOS on pegasos2 and works with the pmon_2e.bin for fuloong2e
which needs more fixes for Linux that are currently under review. More
testing is welcome.

It still needs the Bonito BONITO_PCICONF_REG_MASK fix for fuloong2e
because it no longer maps SMBus but due to the Bonito bug guest cannot
write register 0xd2 to map it. With that fix pmon_2e.bin from here:
http://www.anheng.com.cn/loongson/pmon/ works for me with this
command: qemu-system-mips64el -M fuloong2e -net none -bios pmon_2e.bin

After rolling this for two years now I hope it can finally be merged
and eventually also get pegasos2 emulation that will need this.

Regards,
BALATON Zoltan

BALATON Zoltan (24):
  vt82c686: Rename AC97/MC97 parts from VT82C686B to VIA
  vt82c686: Remove unnecessary _DEVICE suffix from type macros
  vt82c686b: Rename VT82C686B to VT82C686B_ISA
  vt82c686: Remove vt82c686b_[am]c97_init() functions
  vt82c686: Split off via-[am]c97 into separate file in hw/audio
  audio/via-ac97: Simplify code and set user_creatable to false
  vt82c686: Remove legacy vt82c686b_isa_init() function
  vt82c686: Remove legacy vt82c686b_pm_init() function
  vt82c686: Convert debug printf to trace points
  vt82c686: Remove unneeded includes and defines
  vt82c686: Use shorter name for local variable holding object state
  vt82c686: Rename superio config related parts
  vt82c686: Move superio memory region to SuperIOConfig struct
  vt82c686: Reorganise code
  vt82c686: Fix SMBus IO base and configuration registers
  vt82c686: Fix up power management io base and config
  vt82c686: Make vt82c686b-pm an abstract base class and add vt8231-pm
    based on it
  vt82c686: Simplify vt82c686b_realize()
  vt82c686: Move creation of ISA devices to the ISA bridge
  vt82c686: Fix superio_cfg_{read,write}() functions
  vt82c686: Implement control of serial port io ranges via config regs
  vt82c686: QOM-ify superio related functionality
  vt82c686: Add VT8231_SUPERIO based on VIA_SUPERIO
  vt82c686: Add emulation of VT8231 south bridge

 hw/audio/meson.build      |    1 +
 hw/audio/via-ac97.c       |   93 ++++
 hw/isa/trace-events       |    8 +
 hw/isa/vt82c686.c         | 1000 ++++++++++++++++++++++++-------------
 hw/mips/fuloong2e.c       |   38 +-
 include/hw/isa/vt82c686.h |   15 +-
 6 files changed, 761 insertions(+), 394 deletions(-)
 create mode 100644 hw/audio/via-ac97.c

-- 
2.21.3


Re: [PATCH 00/24] vt82c686b clean ups and vt8231 emulation - all in one
Posted by Philippe Mathieu-Daudé 4 years, 10 months ago
On 1/2/21 11:43 AM, BALATON Zoltan via wrote:
> Hello,
> 
> This is an all in one series containing all the patches from my
> previous part I and part II vt82c686b clean up series plus the end of
> it to finally add vt8231 emulation that will be used by subsequent
> ppc/pegasos2 emulation. I consider this finished for now and good
> enough to get in also cleaning up and improving fuloong2e emulation a
> bit but previous disclaimer is still valid: It does not aim to fix all
> existing bugs or make the model perfectly emulate the real chip just
> reach the level where we can have working emulation to boot guests
> which can then be improved later. (E.g. I think state saving was
> broken before and it remains broken after because I don't know all the
> details how to add vmstate for all kinds of data structures and this
> could be addressed separately when fixing the already broken state
> saving if someone wants to test and fix it.) With this it boots at
> least MorphOS on pegasos2 and works with the pmon_2e.bin for fuloong2e
> which needs more fixes for Linux that are currently under review. More
> testing is welcome.
> 
> It still needs the Bonito BONITO_PCICONF_REG_MASK fix for fuloong2e
> because it no longer maps SMBus but due to the Bonito bug guest cannot
> write register 0xd2 to map it. With that fix pmon_2e.bin from here:
> http://www.anheng.com.cn/loongson/pmon/ works for me with this
> command: qemu-system-mips64el -M fuloong2e -net none -bios pmon_2e.bin
> 
> After rolling this for two years now I hope it can finally be merged
> and eventually also get pegasos2 emulation that will need this.
> 
> Regards,
> BALATON Zoltan
> 
> BALATON Zoltan (24):
>   vt82c686: Rename AC97/MC97 parts from VT82C686B to VIA
>   vt82c686: Remove unnecessary _DEVICE suffix from type macros
>   vt82c686b: Rename VT82C686B to VT82C686B_ISA
>   vt82c686: Remove vt82c686b_[am]c97_init() functions
>   vt82c686: Split off via-[am]c97 into separate file in hw/audio
>   audio/via-ac97: Simplify code and set user_creatable to false
>   vt82c686: Remove legacy vt82c686b_isa_init() function
>   vt82c686: Remove legacy vt82c686b_pm_init() function
>   vt82c686: Convert debug printf to trace points
>   vt82c686: Remove unneeded includes and defines
>   vt82c686: Use shorter name for local variable holding object state
>   vt82c686: Rename superio config related parts

As the first half of this series is reviewed, I'm queuing it
(patches 1-12) via mips-next.

Regards,

Phil.

Re: [PATCH 00/24] vt82c686b clean ups and vt8231 emulation - all in one
Posted by BALATON Zoltan via 4 years, 10 months ago
On Sun, 3 Jan 2021, Philippe Mathieu-Daudé wrote:
> On 1/2/21 11:43 AM, BALATON Zoltan via wrote:
>> Hello,
>>
>> This is an all in one series containing all the patches from my
>> previous part I and part II vt82c686b clean up series plus the end of
>> it to finally add vt8231 emulation that will be used by subsequent
>> ppc/pegasos2 emulation. I consider this finished for now and good
>> enough to get in also cleaning up and improving fuloong2e emulation a
>> bit but previous disclaimer is still valid: It does not aim to fix all
>> existing bugs or make the model perfectly emulate the real chip just
>> reach the level where we can have working emulation to boot guests
>> which can then be improved later. (E.g. I think state saving was
>> broken before and it remains broken after because I don't know all the
>> details how to add vmstate for all kinds of data structures and this
>> could be addressed separately when fixing the already broken state
>> saving if someone wants to test and fix it.) With this it boots at
>> least MorphOS on pegasos2 and works with the pmon_2e.bin for fuloong2e
>> which needs more fixes for Linux that are currently under review. More
>> testing is welcome.
>>
>> It still needs the Bonito BONITO_PCICONF_REG_MASK fix for fuloong2e
>> because it no longer maps SMBus but due to the Bonito bug guest cannot
>> write register 0xd2 to map it. With that fix pmon_2e.bin from here:
>> http://www.anheng.com.cn/loongson/pmon/ works for me with this
>> command: qemu-system-mips64el -M fuloong2e -net none -bios pmon_2e.bin
>>
>> After rolling this for two years now I hope it can finally be merged
>> and eventually also get pegasos2 emulation that will need this.
>>
>> Regards,
>> BALATON Zoltan
>>
>> BALATON Zoltan (24):
>>   vt82c686: Rename AC97/MC97 parts from VT82C686B to VIA
>>   vt82c686: Remove unnecessary _DEVICE suffix from type macros
>>   vt82c686b: Rename VT82C686B to VT82C686B_ISA
>>   vt82c686: Remove vt82c686b_[am]c97_init() functions
>>   vt82c686: Split off via-[am]c97 into separate file in hw/audio
>>   audio/via-ac97: Simplify code and set user_creatable to false
>>   vt82c686: Remove legacy vt82c686b_isa_init() function
>>   vt82c686: Remove legacy vt82c686b_pm_init() function
>>   vt82c686: Convert debug printf to trace points
>>   vt82c686: Remove unneeded includes and defines
>>   vt82c686: Use shorter name for local variable holding object state
>>   vt82c686: Rename superio config related parts
>
> As the first half of this series is reviewed, I'm queuing it
> (patches 1-12) via mips-next.

Thanks, You may want to fix the single vt82c686b: in the above commit 
title that was a typo, just for consistency. Will this pull include the 
Bonito BONITO_PCICONF_REG_MASK fix or some replacement for that? That 
would be needed to get the rest of this series starting with 15/24 
working. Up to that it's just clean up which should be OK. I can repost 
the remaining patches rebased once it's merged in master or if you tell me 
which branch should I use.

Regards,
BALATON Zoltan
Re: [PATCH 00/24] vt82c686b clean ups and vt8231 emulation - all in one
Posted by Philippe Mathieu-Daudé 4 years, 10 months ago
On 1/3/21 3:27 PM, BALATON Zoltan via wrote:
> On Sun, 3 Jan 2021, Philippe Mathieu-Daudé wrote:
>> On 1/2/21 11:43 AM, BALATON Zoltan via wrote:
>>> Hello,
>>>
>>> This is an all in one series containing all the patches from my
>>> previous part I and part II vt82c686b clean up series plus the end of
>>> it to finally add vt8231 emulation that will be used by subsequent
>>> ppc/pegasos2 emulation. I consider this finished for now and good
>>> enough to get in also cleaning up and improving fuloong2e emulation a
>>> bit but previous disclaimer is still valid: It does not aim to fix all
>>> existing bugs or make the model perfectly emulate the real chip just
>>> reach the level where we can have working emulation to boot guests
>>> which can then be improved later. (E.g. I think state saving was
>>> broken before and it remains broken after because I don't know all the
>>> details how to add vmstate for all kinds of data structures and this
>>> could be addressed separately when fixing the already broken state
>>> saving if someone wants to test and fix it.) With this it boots at
>>> least MorphOS on pegasos2 and works with the pmon_2e.bin for fuloong2e
>>> which needs more fixes for Linux that are currently under review. More
>>> testing is welcome.
>>>
>>> It still needs the Bonito BONITO_PCICONF_REG_MASK fix for fuloong2e
>>> because it no longer maps SMBus but due to the Bonito bug guest cannot
>>> write register 0xd2 to map it. With that fix pmon_2e.bin from here:
>>> http://www.anheng.com.cn/loongson/pmon/ works for me with this
>>> command: qemu-system-mips64el -M fuloong2e -net none -bios pmon_2e.bin
>>>
>>> After rolling this for two years now I hope it can finally be merged
>>> and eventually also get pegasos2 emulation that will need this.
>>>
>>> Regards,
>>> BALATON Zoltan
>>>
>>> BALATON Zoltan (24):
>>>   vt82c686: Rename AC97/MC97 parts from VT82C686B to VIA
>>>   vt82c686: Remove unnecessary _DEVICE suffix from type macros
>>>   vt82c686b: Rename VT82C686B to VT82C686B_ISA
>>>   vt82c686: Remove vt82c686b_[am]c97_init() functions
>>>   vt82c686: Split off via-[am]c97 into separate file in hw/audio
>>>   audio/via-ac97: Simplify code and set user_creatable to false
>>>   vt82c686: Remove legacy vt82c686b_isa_init() function
>>>   vt82c686: Remove legacy vt82c686b_pm_init() function
>>>   vt82c686: Convert debug printf to trace points
>>>   vt82c686: Remove unneeded includes and defines
>>>   vt82c686: Use shorter name for local variable holding object state
>>>   vt82c686: Rename superio config related parts
>>
>> As the first half of this series is reviewed, I'm queuing it
>> (patches 1-12) via mips-next.
> 
> Thanks, You may want to fix the single vt82c686b: in the above commit
> title that was a typo, just for consistency.

Fixed (along with your git author email, instead of the list).

> Will this pull include the
> Bonito BONITO_PCICONF_REG_MASK fix or some replacement for that? That
> would be needed to get the rest of this series starting with 15/24
> working. Up to that it's just clean up which should be OK.

I checked the Bonito(32) ASIC and Bonito64 (FPGA) manuals, and
for (vendor_id = 0xdf53, device_id = 0x00d5) our implementation
is correct. I am waiting for further news from Jiaxun who asked
someone at Loongson for a manual of their Bonito variant.

I expect a different PCI device_id, so we can add it with your
change.

> I can repost
> the remaining patches rebased once it's merged in master or if you tell
> me which branch should I use.

IMHO no need (at least not worthwhile until mips/next is merged).

Regards,

Phil.

Re: [PATCH 00/24] vt82c686b clean ups and vt8231 emulation - all in one
Posted by BALATON Zoltan via 4 years, 10 months ago
On Sun, 3 Jan 2021, Philippe Mathieu-Daudé wrote:
> On 1/3/21 3:27 PM, BALATON Zoltan via wrote:
>> On Sun, 3 Jan 2021, Philippe Mathieu-Daudé wrote:
>>> On 1/2/21 11:43 AM, BALATON Zoltan via wrote:
>>>> Hello,
>>>>
>>>> This is an all in one series containing all the patches from my
>>>> previous part I and part II vt82c686b clean up series plus the end of
>>>> it to finally add vt8231 emulation that will be used by subsequent
>>>> ppc/pegasos2 emulation. I consider this finished for now and good
>>>> enough to get in also cleaning up and improving fuloong2e emulation a
>>>> bit but previous disclaimer is still valid: It does not aim to fix all
>>>> existing bugs or make the model perfectly emulate the real chip just
>>>> reach the level where we can have working emulation to boot guests
>>>> which can then be improved later. (E.g. I think state saving was
>>>> broken before and it remains broken after because I don't know all the
>>>> details how to add vmstate for all kinds of data structures and this
>>>> could be addressed separately when fixing the already broken state
>>>> saving if someone wants to test and fix it.) With this it boots at
>>>> least MorphOS on pegasos2 and works with the pmon_2e.bin for fuloong2e
>>>> which needs more fixes for Linux that are currently under review. More
>>>> testing is welcome.
>>>>
>>>> It still needs the Bonito BONITO_PCICONF_REG_MASK fix for fuloong2e
>>>> because it no longer maps SMBus but due to the Bonito bug guest cannot
>>>> write register 0xd2 to map it. With that fix pmon_2e.bin from here:
>>>> http://www.anheng.com.cn/loongson/pmon/ works for me with this
>>>> command: qemu-system-mips64el -M fuloong2e -net none -bios pmon_2e.bin
>>>>
>>>> After rolling this for two years now I hope it can finally be merged
>>>> and eventually also get pegasos2 emulation that will need this.
>>>>
>>>> Regards,
>>>> BALATON Zoltan
>>>>
>>>> BALATON Zoltan (24):
>>>>   vt82c686: Rename AC97/MC97 parts from VT82C686B to VIA
>>>>   vt82c686: Remove unnecessary _DEVICE suffix from type macros
>>>>   vt82c686b: Rename VT82C686B to VT82C686B_ISA
>>>>   vt82c686: Remove vt82c686b_[am]c97_init() functions
>>>>   vt82c686: Split off via-[am]c97 into separate file in hw/audio
>>>>   audio/via-ac97: Simplify code and set user_creatable to false
>>>>   vt82c686: Remove legacy vt82c686b_isa_init() function
>>>>   vt82c686: Remove legacy vt82c686b_pm_init() function
>>>>   vt82c686: Convert debug printf to trace points
>>>>   vt82c686: Remove unneeded includes and defines
>>>>   vt82c686: Use shorter name for local variable holding object state
>>>>   vt82c686: Rename superio config related parts
>>>
>>> As the first half of this series is reviewed, I'm queuing it
>>> (patches 1-12) via mips-next.
>>
>> Thanks, You may want to fix the single vt82c686b: in the above commit
>> title that was a typo, just for consistency.
>
> Fixed (along with your git author email, instead of the list).

Thanks, sorry for the email address, that's something that seems to have 
changed last August without me doing anthing differently and I still don't 
know if it's something with the list or my mail provider. I've asked them 
both but I guess it's still holidays so haven't got an answer yet.

>> Will this pull include the
>> Bonito BONITO_PCICONF_REG_MASK fix or some replacement for that? That
>> would be needed to get the rest of this series starting with 15/24
>> working. Up to that it's just clean up which should be OK.
>
> I checked the Bonito(32) ASIC and Bonito64 (FPGA) manuals, and
> for (vendor_id = 0xdf53, device_id = 0x00d5) our implementation
> is correct. I am waiting for further news from Jiaxun who asked
> someone at Loongson for a manual of their Bonito variant.
>
> I expect a different PCI device_id, so we can add it with your
> change.

It's not my change, Jiaxun suggested it but fixes the problem with 
accessing register at 0xd2 that's needed on fuloong2e to get SMBus mapped 
after my series (patch 15 to be exact).

>> I can repost
>> the remaining patches rebased once it's merged in master or if you tell
>> me which branch should I use.
>
> IMHO no need (at least not worthwhile until mips/next is merged).

OK, I'll wait for that then before posting the remaining patches again. If 
you can have a look at them anyway I can make any necessary changes by 
then.

Regards,
BALATON Zoltan
Re: [PATCH 00/24] vt82c686b clean ups and vt8231 emulation - all in one
Posted by Jiaxun Yang 4 years, 10 months ago
在 2021/1/4 上午1:07, BALATON Zoltan 写道:
> On Sun, 3 Jan 2021, Philippe Mathieu-Daudé wrote:
>> On 1/3/21 3:27 PM, BALATON Zoltan via wrote:
>>> On Sun, 3 Jan 2021, Philippe Mathieu-Daudé wrote:
>>>> On 1/2/21 11:43 AM, BALATON Zoltan via wrote:
>>>>> Hello,
>>>>>
>>>>> This is an all in one series containing all the patches from my
>>>>> previous part I and part II vt82c686b clean up series plus the end of
>>>>> it to finally add vt8231 emulation that will be used by subsequent
>>>>> ppc/pegasos2 emulation. I consider this finished for now and good
>>>>> enough to get in also cleaning up and improving fuloong2e emulation a
>>>>> bit but previous disclaimer is still valid: It does not aim to fix 
>>>>> all
>>>>> existing bugs or make the model perfectly emulate the real chip just
>>>>> reach the level where we can have working emulation to boot guests
>>>>> which can then be improved later. (E.g. I think state saving was
>>>>> broken before and it remains broken after because I don't know all 
>>>>> the
>>>>> details how to add vmstate for all kinds of data structures and this
>>>>> could be addressed separately when fixing the already broken state
>>>>> saving if someone wants to test and fix it.) With this it boots at
>>>>> least MorphOS on pegasos2 and works with the pmon_2e.bin for 
>>>>> fuloong2e
>>>>> which needs more fixes for Linux that are currently under review. 
>>>>> More
>>>>> testing is welcome.
>>>>>
>>>>> It still needs the Bonito BONITO_PCICONF_REG_MASK fix for fuloong2e
>>>>> because it no longer maps SMBus but due to the Bonito bug guest 
>>>>> cannot
>>>>> write register 0xd2 to map it. With that fix pmon_2e.bin from here:
>>>>> http://www.anheng.com.cn/loongson/pmon/ works for me with this
>>>>> command: qemu-system-mips64el -M fuloong2e -net none -bios 
>>>>> pmon_2e.bin
>>>>>
>>>>> After rolling this for two years now I hope it can finally be merged
>>>>> and eventually also get pegasos2 emulation that will need this.
>>>>>
>>>>> Regards,
>>>>> BALATON Zoltan
>>>>>
>>>>> BALATON Zoltan (24):
>>>>>   vt82c686: Rename AC97/MC97 parts from VT82C686B to VIA
>>>>>   vt82c686: Remove unnecessary _DEVICE suffix from type macros
>>>>>   vt82c686b: Rename VT82C686B to VT82C686B_ISA
>>>>>   vt82c686: Remove vt82c686b_[am]c97_init() functions
>>>>>   vt82c686: Split off via-[am]c97 into separate file in hw/audio
>>>>>   audio/via-ac97: Simplify code and set user_creatable to false
>>>>>   vt82c686: Remove legacy vt82c686b_isa_init() function
>>>>>   vt82c686: Remove legacy vt82c686b_pm_init() function
>>>>>   vt82c686: Convert debug printf to trace points
>>>>>   vt82c686: Remove unneeded includes and defines
>>>>>   vt82c686: Use shorter name for local variable holding object state
>>>>>   vt82c686: Rename superio config related parts
>>>>
>>>> As the first half of this series is reviewed, I'm queuing it
>>>> (patches 1-12) via mips-next.
>>>
>>> Thanks, You may want to fix the single vt82c686b: in the above commit
>>> title that was a typo, just for consistency.
>>
>> Fixed (along with your git author email, instead of the list).
>
> Thanks, sorry for the email address, that's something that seems to 
> have changed last August without me doing anthing differently and I 
> still don't know if it's something with the list or my mail provider. 
> I've asked them both but I guess it's still holidays so haven't got an 
> answer yet.
>
>>> Will this pull include the
>>> Bonito BONITO_PCICONF_REG_MASK fix or some replacement for that? That
>>> would be needed to get the rest of this series starting with 15/24
>>> working. Up to that it's just clean up which should be OK.
>>
>> I checked the Bonito(32) ASIC and Bonito64 (FPGA) manuals, and
>> for (vendor_id = 0xdf53, device_id = 0x00d5) our implementation
>> is correct. I am waiting for further news from Jiaxun who asked
>> someone at Loongson for a manual of their Bonito variant.
>>
>> I expect a different PCI device_id, so we can add it with your
>> change.

Hi all,

Bonito 2E manual (Chinese) is available here:
https://github.com/loongson-community/docs/blob/master/2E/Godson_2E_NB_UM.pdf

It said when accessing PCICFG map, the address is continues, so
there is no need to mask out lowest 2 bit.

The actual command on PCI bus will be shifted by hardware as per PCI 
spec requirement,
but that is out of our scope, it is SysAD internal implementation.

As you may see, bonito64(malta version) driver in kernel does not shift 
regno as well.
https://elixir.bootlin.com/linux/latest/source/arch/mips/pci/ops-bonito64.c

So In my opinion the fix is fine.

Thanks.

- Jiaxun



>
> It's not my change, Jiaxun suggested it but fixes the problem with 
> accessing register at 0xd2 that's needed on fuloong2e to get SMBus 
> mapped after my series (patch 15 to be exact).
>
>>> I can repost
>>> the remaining patches rebased once it's merged in master or if you tell
>>> me which branch should I use.
>>
>> IMHO no need (at least not worthwhile until mips/next is merged).
>
> OK, I'll wait for that then before posting the remaining patches 
> again. If you can have a look at them anyway I can make any necessary 
> changes by then.
>
> Regards,
> BALATON Zoltan