>On 17/10/2018 18:52, Peng Hao wrote: >> + /* register rtc 0x70 port as coalesced_pio */ >> + memory_region_set_flush_coalesced(&s->io); >> + memory_region_init_io(&s->coalesced_io, OBJECT(s), &cmos_ops, >> + s, "rtc1", 1); >> + isa_register_ioport(isadev, &s->coalesced_io, base); > >I think instead of isa_register_ioport you can use >memory_region_add_subregion, so that s->coalesced_io is added below s->io? > isa_register_ioport also called memory_region_add_subregion. modify code like this: //isa_register_ioport(isadev, &s->coalesced_io, base); memory_region_add_subregion(get_system_io(),0x70,&s->coalesced_io); The regional distribution before and after code modification is consistent.
0000000000000070-0000000000000070 (prio 0, i/o): rtc1 0000000000000070-0000000000000071 (prio 0, i/o): rtc >This way, you don't rely on the behavior of overlapping regions. > >Paolo > >> + memory_region_add_coalescing(&s->coalesced_io, 0, 1); >> +