On Thu, 12 Aug 2021, Philippe Mathieu-Daudé wrote:
> On 8/12/21 3:22 PM, Ani Sinha wrote: > > On Thu, 12 Aug 2021, Ani Sinha wrote: > > > >> Currently various acpi hotplug modules like cpu hotplug, memory hotplug, > >> pci > >> hotplug, nvdimm hotplug are all pulled in when CONFIG_ACPI_X86 is turned > >> on. > >> This brings in support for whole lot of subsystems that some targets like > >> mips does not need. They are added just to satisfy symbol dependencies. > >> This > >> is ugly and should be avoided. Targets should be able to pull in just what > >> they > >> need and no more. For example, mips only needs support for PIIX4 and does > >> not > >> need acpi pci hotplug support or cpu hotplug support or memory hotplug > >> support > >> etc. This change is an effort to clean this up. > >> In this change, new config variables are added for various acpi hotplug > >> subsystems. Targets like mips can only enable PIIX4 support and not the > >> rest > >> of all the other modules which were being previously pulled in as a part of > >> CONFIG_ACPI_X86. Function stubs make sure that symbols which piix4 needs > >> but > >> are not required by mips (for example, symbols specific to pci hotplug etc) > >> are available to satisfy the dependencies. > >> > >> Currently, this change only addresses issues with mips malta targets. In > >> future > >> we might be able to clean up other targets which are similarly pulling in > >> lot > >> of unnecessary hotplug modules by enabling ACPI_X86. > >> > >> This change should also address issues such as the following: > >> https://gitlab.com/qemu-project/qemu/-/issues/221 > >> https://gitlab.com/qemu-project/qemu/-/issues/193 > > > > I do not have a cross compiled mips64 vmlinux handy, so can't verify that > > issue #193 was indeed resolved. > > The functional tests use some pre-built: > > $ git grep I6400 tests/acceptance/ > Cool! Fantastic! Tested #193 as well, no crashes: $ ./qemu-system-mips64el -cpu I6400 -nographic -append "clocksource=GIC console=ttyS1" -smp 8 -kernel ../vmlinux Linux version 4.7.0-rc1-dirty (root@2e66df87a9ff) (gcc version 6.3.0 20170516 (Debian 6.3.0-18) ) #1 SMP Sat Feb 1 18:38:13 UTC 2020 earlycon: uart8250 at I/O port 0x3f8 (options '38400n8') bootconsole [uart8250] enabled CPU0 revision is: 0001a900 (MIPS I6400) FPU revision is: 20f30300 MSA revision is: 00000300 MIPS: machine is mti,malta Software DMA cache coherency enabled Determined physical RAM map: memory: 0000000008000000 @ 0000000000000000 (usable) Zone ranges: DMA [mem 0x0000000000000000-0x0000000000ffffff] DMA32 [mem 0x0000000001000000-0x00000000ffffffff] Normal empty Movable zone start for each node Early memory node ranges node 0: [mem 0x0000000000000000-0x0000000007ffffff] Initmem setup node 0 [mem 0x0000000000000000-0x0000000007ffffff] VP topology {8} total 8 Primary instruction cache 64kB, VIPT, 4-way, linesize 64 bytes. Primary data cache 64kB, 4-way, VIPT, no aliases, linesize 64 bytes percpu: Embedded 5 pages/cpu @980000000107c000 s29664 r8192 d44064 u81920 Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8163 Kernel command line: clocksource=GIC console=ttyS1 log_buf_len individual max cpu contribution: 4096 bytes log_buf_len total cpu_extra contributions: 28672 bytes log_buf_len min size: 32768 bytes log_buf_len: 65536 bytes early log buf free: 30424(92%) PID hash table entries: 512 (order: -2, 4096 bytes) Dentry cache hash table entries: 16384 (order: 3, 131072 bytes) Inode-cache hash table entries: 8192 (order: 2, 65536 bytes) Writing ErrCtl register=00000000 Readback ErrCtl register=00000000 MAAR configuration: [0]: 0x0000000000010000-0x0000000007ffffff speculate [1]: disabled [2]: disabled [3]: disabled [4]: disabled [5]: disabled [6]: disabled [7]: disabled Memory: 121104K/131072K available (5253K kernel code, 380K rwdata, 1276K rodata, 304K init, 278K bss, 9968K reserved, 0K cma-reserved) Hierarchical RCU implementation. Build-time adjustment of leaf fanout to 64. NR_IRQS:256 CPU frequency 333.33 MHz GIC frequency 100.00 MHz clocksource: GIC: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19113018267 ns clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 11467565337 ns sched_clock: 32 bits at 166MHz, resolution 6ns, wraps every 12884904956ns Console: colour dummy device 80x25 Calibrating delay loop... 1561.39 BogoMIPS (lpj=7806976) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 2048 (order: 0, 16384 bytes) Mountpoint-cache hash table entries: 2048 (order: 0, 16384 bytes) Primary instruction cache 64kB, VIPT, 4-way, linesize 64 bytes. Primary data cache 64kB, 4-way, VIPT, no aliases, linesize 64 bytes CPU1 revision is: 0001a900 (MIPS I6400) FPU revision is: 20f30300 MSA revision is: 00000300 Synchronize counters for CPU 1: done. Primary instruction cache 64kB, VIPT, 4-way, linesize 64 bytes. Primary data cache 64kB, 4-way, VIPT, no aliases, linesize 64 bytes CPU2 revision is: 0001a900 (MIPS I6400) FPU revision is: 20f30300 MSA revision is: 00000300 Synchronize counters for CPU 2: done. Primary instruction cache 64kB, VIPT, 4-way, linesize 64 bytes. Primary data cache 64kB, 4-way, VIPT, no aliases, linesize 64 bytes CPU3 revision is: 0001a900 (MIPS I6400) FPU revision is: 20f30300 MSA revision is: 00000300 Synchronize counters for CPU 3: done. Primary instruction cache 64kB, VIPT, 4-way, linesize 64 bytes. Primary data cache 64kB, 4-way, VIPT, no aliases, linesize 64 bytes CPU4 revision is: 0001a900 (MIPS I6400) FPU revision is: 20f30300 MSA revision is: 00000300 Synchronize counters for CPU 4: done. Primary instruction cache 64kB, VIPT, 4-way, linesize 64 bytes. Primary data cache 64kB, 4-way, VIPT, no aliases, linesize 64 bytes CPU5 revision is: 0001a900 (MIPS I6400) FPU revision is: 20f30300 MSA revision is: 00000300 Synchronize counters for CPU 5: done. Primary instruction cache 64kB, VIPT, 4-way, linesize 64 bytes. Primary data cache 64kB, 4-way, VIPT, no aliases, linesize 64 bytes CPU6 revision is: 0001a900 (MIPS I6400) FPU revision is: 20f30300 MSA revision is: 00000300 Synchronize counters for CPU 6: done. Primary instruction cache 64kB, VIPT, 4-way, linesize 64 bytes. Primary data cache 64kB, 4-way, VIPT, no aliases, linesize 64 bytes CPU7 revision is: 0001a900 (MIPS I6400) FPU revision is: 20f30300 MSA revision is: 00000300 Synchronize counters for CPU 7: done. Brought up 8 CPUs devtmpfs: initialized clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns NET: Registered protocol family 16 pm-cps: CPC does not support clock gating vgaarb: loaded SCSI subsystem initialized PCI host bridge to bus 0000:00 pci_bus 0000:00: root bus resource [mem 0x10000000-0x17ffffff] pci_bus 0000:00: root bus resource [io 0x1000-0x1fffff] pci_bus 0000:00: root bus resource [??? 0x00000000 flags 0x0] pci_bus 0000:00: No busn resource found for root bus, will use [bus 00-ff] pci 0000:00:00.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size) pci 0000:00:00.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size) pci 0000:00:00.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size) pci 0000:00:00.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size) pci 0000:00:00.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size) pci 0000:00:0a.1: legacy IDE quirk: reg 0x10: [io 0x01f0-0x01f7] pci 0000:00:0a.1: legacy IDE quirk: reg 0x14: [io 0x03f6] pci 0000:00:0a.1: legacy IDE quirk: reg 0x18: [io 0x0170-0x0177] pci 0000:00:0a.1: legacy IDE quirk: reg 0x1c: [io 0x0376] pci 0000:00:0a.3: quirk: [io 0x1000-0x103f] claimed by PIIX4 ACPI pci 0000:00:0a.3: quirk: [io 0x1100-0x110f] claimed by PIIX4 SMB vgaarb: device added: PCI:0000:00:12.0,decodes=io+mem,owns=none,locks=none pci 0000:00:12.0: BAR 0: assigned [mem 0x10000000-0x11ffffff pref] pci 0000:00:0b.0: BAR 6: assigned [mem 0x12000000-0x1203ffff pref] pci 0000:00:12.0: BAR 6: assigned [mem 0x12040000-0x1204ffff pref] pci 0000:00:12.0: BAR 1: assigned [mem 0x12050000-0x12050fff] pci 0000:00:0a.2: BAR 4: assigned [io 0x1040-0x105f] pci 0000:00:0b.0: BAR 0: assigned [io 0x1060-0x107f] pci 0000:00:0b.0: BAR 1: assigned [mem 0x12051000-0x1205101f] pci 0000:00:0a.1: BAR 4: assigned [io 0x1080-0x108f] clocksource: Switched to clocksource GIC VFS: Disk quotas dquot_6.6.0 VFS: Dquot-cache hash table entries: 2048 (order 0, 16384 bytes) NET: Registered protocol family 2 TCP established hash table entries: 2048 (order: 0, 16384 bytes) TCP bind hash table entries: 2048 (order: 1, 32768 bytes) TCP: Hash tables configured (established 2048 bind 2048) UDP hash table entries: 512 (order: 0, 16384 bytes) UDP-Lite hash table entries: 512 (order: 0, 16384 bytes) NET: Registered protocol family 1 RPC: Registered named UNIX socket transport module. RPC: Registered udp transport module. RPC: Registered tcp transport module. RPC: Registered tcp NFSv4.1 backchannel transport module. futex hash table entries: 2048 (order: 3, 131072 bytes) workingset: timestamp_bits=60 max_order=13 bucket_order=0 Installing knfsd (copyright (C) 1996 o...@monad.swb.de). Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) io scheduler noop registered io scheduler deadline registered io scheduler cfq registered (default) PCI: Enabling device 0000:00:12.0 (0000 -> 0002) cirrusfb 0000:00:12.0: Cirrus Logic chipset on PCI bus, RAM (4096 kB) at 0x10000000 Console: switching to colour frame buffer device 80x30 hrtimer: interrupt took 159860621 ns Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled serial8250.0: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A serial8250.0: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A console [ttyS1] enabled bootconsole [uart8250] disabled