Bug 11575 - sync upstream patch and fix boot issue
Summary: sync upstream patch and fix boot issue
Status: RESOLVED FIXED
Alias: None
Product: Anolis OS 23
Classification: Anolis OS
Component: BaseOS Packages (show other bugs) BaseOS Packages
Version: unspecified
Hardware: All Linux
: P3-Medium S3-normal
Target Milestone: ---
Assignee: happy_orange
QA Contact: bolong_tbl
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-10-30 20:19 UTC by lixianglai
Modified: 2024-10-30 20:23 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description lixianglai loongson_group 2024-10-30 20:19:04 UTC
## 问题一
### 问题描述 
+ 内核版本: 6.6.25-2
+ OS 版本: Anolis OS 23
+ 平台架构: loongarch
+ 相关日志:

### 复现方法
启动qemu

```
/root/qemu-kvm-anolis-source/build/qemu-system-loongarch64 \
-bios /usr/share/edk2/loongarch64/QEMU_EFI.fd \
-machine virt,usb=off,dump-guest-core=off,acpi=on \
-accel kvm \
-m size=4194304k \
-smp 1,maxcpus=4,sockets=4,cores=1,threads=1 \
-no-user-config \
-nodefaults \
-boot strict=on \
-device '{"driver":"pcie-root-port","port":8,"chassis":1,"id":"pci.1","bus":"pcie.0","multifunction":true,"addr":"0x1"}' \
-device '{"driver":"pcie-root-port","port":9,"chassis":2,"id":"pci.2","bus":"pcie.0","addr":"0x1.0x1"}' \
-device '{"driver":"pcie-root-port","port":10,"chassis":3,"id":"pci.3","bus":"pcie.0","addr":"0x1.0x2"}' \
-device '{"driver":"pcie-root-port","port":11,"chassis":4,"id":"pci.4","bus":"pcie.0","addr":"0x1.0x3"}' \
-device '{"driver":"pcie-root-port","port":12,"chassis":5,"id":"pci.5","bus":"pcie.0","addr":"0x1.0x4"}' \
-device '{"driver":"pcie-root-port","port":13,"chassis":6,"id":"pci.6","bus":"pcie.0","addr":"0x1.0x5"}' \
-device '{"driver":"pcie-root-port","port":14,"chassis":7,"id":"pci.7","bus":"pcie.0","addr":"0x1.0x6"}' \
-device '{"driver":"pcie-root-port","port":15,"chassis":8,"id":"pci.8","bus":"pcie.0","addr":"0x1.0x7"}' \
-device '{"driver":"pcie-root-port","port":16,"chassis":9,"id":"pci.9","bus":"pcie.0","multifunction":true,"addr":"0x2"}' \
-device '{"driver":"pcie-root-port","port":17,"chassis":10,"id":"pci.10","bus":"pcie.0","addr":"0x2.0x1"}' \
-device '{"driver":"pcie-root-port","port":18,"chassis":11,"id":"pci.11","bus":"pcie.0","addr":"0x2.0x2"}' \
-device '{"driver":"pcie-root-port","port":19,"chassis":12,"id":"pci.12","bus":"pcie.0","addr":"0x2.0x3"}' \
-device '{"driver":"pcie-root-port","port":20,"chassis":13,"id":"pci.13","bus":"pcie.0","addr":"0x2.0x4"}' \
-device '{"driver":"pcie-root-port","port":21,"chassis":14,"id":"pci.14","bus":"pcie.0","addr":"0x2.0x5"}' \
-device '{"driver":"qemu-xhci","p2":15,"p3":15,"id":"usb","bus":"pci.2","addr":"0x0"}' \
-device '{"driver":"virtio-scsi-pci","id":"scsi0","bus":"pci.3","addr":"0x0"}' \
-blockdev '{"driver":"file","filename":"/home/kvm-nfs/vm1.qcow2","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-2-format","read-only":false,"discard":"unmap","driver":"qcow2","file":"libvirt-2-storage","backing":null}' \
-device '{"driver":"virtio-blk-pci","bus":"pci.5","addr":"0x0","drive":"libvirt-2-format","id":"virtio-disk0","bootindex":1}' \
-nographic \
-monitor tcp::3333,server,nowait \
-serial stdio

```
物理机中telnet连接monitor
```
telnet 127.0.0.1 3333
(qemu) device_add la464-loongarch-cpu,socket-id=1,core-id=0,thread-id=0,id=cpu-1 
```
在虚拟机中上线cpu, 并重启虚拟机
```
echo 1 > /sys/bus/cpu/devices/cpu1/online

reboot
```
### 实际效果
重启之后插入的cpu1不在线且无法上线
````
lscpu
Architecture:           loongarch64
  CPU op-mode(s):       32-bit, 64-bit
  Address sizes:        48 bits physical, 48 bits virtual
  Byte Order:           Little Endian
CPU(s):                 2
  On-line CPU(s) list:  0
  Off-line CPU(s) list: 1
BIOS Vendor ID:         QEMU
Model name:             Loongson-3A5000
  BIOS Model name:      virt  CPU @ 2.0GHz
  BIOS CPU family:      1
  CPU family:           Loongson-64bit
  Model:                0x10
  Thread(s) per core:   1
  Core(s) per socket:   1
  Socket(s):            1
  BogoMIPS:             4000.00
  Flags:                cpucfg lam ual fpu lsx lasx crc32 lbt_x86 lbt_arm lbt_mi
                        ps
Caches (sum of all):    
  L1d:                  64 KiB (1 instance)
  L1i:                  64 KiB (1 instance)
  L2:                   256 KiB (1 instance)
  L3:                   16 MiB (1 instance)
NUMA:                   
  NUMA node(s):         1
  NUMA node0 CPU(s):    0
[root@localhost ~]# ecd [   59.034989][   T28] kauditd_printk_skb: 21 callbacks suppressed
[   59.034996][   T28] audit: type=1131 audit(1730278688.246:159): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=fprintd comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=
? terminal=? res=success'
[   59.050034][   T28] audit: type=1334 audit(1730278688.262:160): prog-id=37 op=UNLOAD

bash: ecd: 未找到命令...

[   61.718606][   T28] audit: type=1130 audit(1730278690.930:161): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=packagekit comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? ad
dr=? terminal=? res=success'

文件搜索失败: cannot update repo 'os': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried; Last error: Curl error (6): Couldn't resolve host name for htt
p://mirrors.openanolis.cn/anolis/23/os/loongarch64/os/repodata/repomd.xml [Could not resolve host: mirrors.openanolis.cn]
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# cd [   63.029347][   T28] audit: type=1131 audit(1730278692.238:162): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=systemd-hostnamed comm="systemd" exe="/usr/lib/
systemd/systemd" hostname=? addr=? terminal=? res=success'
[   63.073921][   T28] audit: type=1334 audit(1730278692.286:163): prog-id=35 op=UNLOAD
[   63.074255][   T28] audit: type=1334 audit(1730278692.286:164): prog-id=34 op=UNLOAD
[   63.074557][   T28] audit: type=1334 audit(1730278692.286:165): prog-id=33 op=UNLOAD
/sys/bus/
acpi/           gadget/         nvmem/          serio/
auxiliary/      gpio/           pci/            snd_seq/
clockevents/    hid/            pci_express/    soc/
clocksource/    i2c/            platform/       spi/
container/      mdio_bus/       pnp/            usb/
cpu/            memory/         rapidio/        virtio/
dax/            memory_tiering/ scsi/           workqueue/
event_source/   node/           serial-base/    
[root@localhost ~]# cd /sys/bus/
acpi/           gadget/         nvmem/          serio/
auxiliary/      gpio/           pci/            snd_seq/
clockevents/    hid/            pci_express/    soc/
clocksource/    i2c/            platform/       spi/
container/      mdio_bus/       pnp/            usb/
cpu/            memory/         rapidio/        virtio/
dax/            memory_tiering/ scsi/           workqueue/
event_source/   node/           serial-base/    
[root@localhost ~]# cd /sys/bus/
acpi/           gadget/         nvmem/          serio/
auxiliary/      gpio/           pci/            snd_seq/
clockevents/    hid/            pci_express/    soc/
clocksource/    i2c/            platform/       spi/
container/      mdio_bus/       pnp/            usb/
cpu/            memory/         rapidio/        virtio/
dax/            memory_tiering/ scsi/           workqueue/
event_source/   node/           serial-base/    
[root@localhost ~]# cd /sys/bus/
acpi/           gadget/         nvmem/          serio/
auxiliary/      gpio/           pci/            snd_seq/
clockevents/    hid/            pci_express/    soc/
clocksource/    i2c/            platform/       spi/
container/      mdio_bus/       pnp/            usb/
cpu/            memory/         rapidio/        virtio/
dax/            memory_tiering/ scsi/           workqueue/
event_source/   node/           serial-base/    
[root@localhost ~]# cd /sys/bus/cpu/devices/cpu
-bash: cd: /sys/bus/cpu/devices/cpu: No such file or directory
[root@localhost ~]# cd /sys/bus/cpu/devices/cpu1
[root@localhost cpu1]# 
[root@localhost cpu1]# ls
crash_notes       driver         hotplug  online  subsystem
crash_notes_size  firmware_node  node0    power   uevent
[root@localhost cpu1]# echo 1 > online 
[   81.945696][ T1358] Booting CPU#1...



[   87.029660][ T1358] CPU1: failed to start
-bash: echo: 写入错误:Input/output error

```

### 期望效果
重启后cpu1上线
```
lscpu
Architecture:          loongarch64
  CPU op-mode(s):      32-bit, 64-bit
  Address sizes:       48 bits physical, 48 bits virtual
  Byte Order:          Little Endian
CPU(s):                2
  On-line CPU(s) list: 0,1
BIOS Vendor ID:        QEMU
Model name:            Loongson-3A5000
  BIOS Model name:     virt  CPU @ 2.0GHz
  BIOS CPU family:     1
  CPU family:          Loongson-64bit
  Model:               0x10
  Thread(s) per core:  1
  Core(s) per socket:  1
  Socket(s):           2
  BogoMIPS:            4000.00
  Flags:               cpucfg lam ual fpu lsx lasx crc32 lbt_x86 lbt_arm lbt_mip
                       s
Caches (sum of all):   
  L1d:                 128 KiB (2 instances)
  L1i:                 128 KiB (2 instances)
  L2:                  512 KiB (2 instances)
  L3:                  16 MiB (1 instance)
NUMA:                  
  NUMA node(s):        1
  NUMA node0 CPU(s):   0,1
```
## 问题二
### 问题描述  多核启动虚拟机报错
+ 内核版本: 6.6.25-2
+ OS 版本: Anolis OS 23
+ 平台架构: loongarch
+ 相关日志:

### 复现方法
使用多核启动虚拟机
```
/root/qemu-kvm-anolis-source/build/qemu-system-loongarch64 \
-bios /usr/share/edk2/loongarch64/QEMU_EFI.fd \
-machine virt,usb=off,dump-guest-core=off,acpi=on \
-accel kvm \
-m size=4194304k \
-smp 4,maxcpus=4,sockets=4,cores=1,threads=1 \
-no-user-config \
-nodefaults \
-boot strict=on \
-device '{"driver":"pcie-root-port","port":8,"chassis":1,"id":"pci.1","bus":"pcie.0","multifunction":true,"addr":"0x1"}' \
-device '{"driver":"pcie-root-port","port":9,"chassis":2,"id":"pci.2","bus":"pcie.0","addr":"0x1.0x1"}' \
-device '{"driver":"pcie-root-port","port":10,"chassis":3,"id":"pci.3","bus":"pcie.0","addr":"0x1.0x2"}' \
-device '{"driver":"pcie-root-port","port":11,"chassis":4,"id":"pci.4","bus":"pcie.0","addr":"0x1.0x3"}' \
-device '{"driver":"pcie-root-port","port":12,"chassis":5,"id":"pci.5","bus":"pcie.0","addr":"0x1.0x4"}' \
-device '{"driver":"pcie-root-port","port":13,"chassis":6,"id":"pci.6","bus":"pcie.0","addr":"0x1.0x5"}' \
-device '{"driver":"pcie-root-port","port":14,"chassis":7,"id":"pci.7","bus":"pcie.0","addr":"0x1.0x6"}' \
-device '{"driver":"pcie-root-port","port":15,"chassis":8,"id":"pci.8","bus":"pcie.0","addr":"0x1.0x7"}' \
-device '{"driver":"pcie-root-port","port":16,"chassis":9,"id":"pci.9","bus":"pcie.0","multifunction":true,"addr":"0x2"}' \
-device '{"driver":"pcie-root-port","port":17,"chassis":10,"id":"pci.10","bus":"pcie.0","addr":"0x2.0x1"}' \
-device '{"driver":"pcie-root-port","port":18,"chassis":11,"id":"pci.11","bus":"pcie.0","addr":"0x2.0x2"}' \
-device '{"driver":"pcie-root-port","port":19,"chassis":12,"id":"pci.12","bus":"pcie.0","addr":"0x2.0x3"}' \
-device '{"driver":"pcie-root-port","port":20,"chassis":13,"id":"pci.13","bus":"pcie.0","addr":"0x2.0x4"}' \
-device '{"driver":"pcie-root-port","port":21,"chassis":14,"id":"pci.14","bus":"pcie.0","addr":"0x2.0x5"}' \
-device '{"driver":"qemu-xhci","p2":15,"p3":15,"id":"usb","bus":"pci.2","addr":"0x0"}' \
-device '{"driver":"virtio-scsi-pci","id":"scsi0","bus":"pci.3","addr":"0x0"}' \
-blockdev '{"driver":"file","filename":"/home/kvm-nfs/vm1.qcow2","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-2-format","read-only":false,"discard":"unmap","driver":"qcow2","file":"libvirt-2-storage","backing":null}' \
-device '{"driver":"virtio-blk-pci","bus":"pci.5","addr":"0x0","drive":"libvirt-2-format","id":"virtio-disk0","bootindex":1}' \
-nographic \
-monitor tcp::3333,server,nowait \
-serial stdio

```

### 实际效果
虚拟机内核启动cpu失败
```
[    0.024125][    T1] smp: Bringing up secondary CPUs ...
[    0.024902][    T1] Booting CPU#1...
[    5.102541][    T1] CPU1: failed to start
[    5.103025][    T1] Booting CPU#2...


```

### 期望效果
虚拟机cpu正常启动