Skip to content

Commit 6fa9593

Browse files
authored
Add support for s390x ioctls. (#49)
Add support for s390x ioctls, add several more socket ioctl codes, and regenerate the generated ioctl files. Also, decnet has been removed from Linux, so remove dn.h.
1 parent a6cad05 commit 6fa9593

File tree

16 files changed

+3616
-108
lines changed

16 files changed

+3616
-108
lines changed

gen/ioctl/generate.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,8 @@ qemu-mipsel -L /usr/mipsel-linux-gnu ./main.exe >> "$out"
4141
riscv64-linux-gnu-gcc -Iinclude -c list.c $cflags
4242
riscv64-linux-gnu-gcc main.c list.o -o main.exe $cflags
4343
qemu-riscv64 -L /usr/riscv64-linux-gnu ./main.exe >> "$out"
44+
s390x-linux-gnu-gcc -Iinclude -c list.c $cflags
45+
s390x-linux-gnu-gcc main.c list.o -o main.exe $cflags
46+
qemu-s390x -L /usr/s390x-linux-gnu ./main.exe >> "$out"
4447

4548
rm list.o main.exe

gen/ioctl/generated.txt

Lines changed: 123 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,23 @@ SIOCGRARP
205205
SIOCSRARP
206206
SIOCGIFMAP
207207
SIOCSIFMAP
208+
SIOCRTMSG
209+
SIOCSIFNAME
210+
SIOCGIFINDEX
211+
SIOGIFINDEX
212+
SIOCSIFPFLAGS
213+
SIOCGIFPFLAGS
214+
SIOCDIFADDR
215+
SIOCSIFHWBROADCAST
216+
SIOCGIFCOUNT
217+
SIOCGIFBR
218+
SIOCSIFBR
219+
SIOCGIFTXQLEN
220+
SIOCSIFTXQLEN
221+
SIOCADDDLCI
222+
SIOCDELDLCI
223+
SIOCDEVPRIVATE
224+
SIOCPROTOPRIVATE
208225
FIBMAP
209226
FIGETBSZ
210227
FIFREEZE
@@ -242,6 +259,111 @@ MGSL_IOCGPARAMS
242259
ENI_SETMULT
243260
RIO_GET_EVENT_MASK
244261
LIRC_GET_MAX_TIMEOUT
262+
KVM_SET_BOOT_CPU_ID
263+
KVM_SET_MP_STATE
264+
KVM_GET_MP_STATE
265+
KVM_SET_MEMORY_REGION
266+
KVM_GET_API_VERSION
267+
KVM_S390_GET_SKEYS
268+
KVM_SET_ONE_REG
269+
KVM_IRQ_LINE_STATUS
270+
KVM_SET_USER_MEMORY_REGION
271+
KVM_S390_INTERRUPT
272+
KVM_TPR_ACCESS_REPORTING
273+
KVM_GET_FPU
274+
KVM_ASSIGN_SET_MSIX_ENTRY
275+
KVM_MEMORY_ENCRYPT_REG_REGION
276+
KVM_S390_UCAS_MAP
277+
KVM_ASSIGN_SET_INTX_MASK
278+
KVM_MEMORY_ENCRYPT_OP
279+
KVM_CREATE_PIT2
280+
KVM_S390_VCPU_FAULT
281+
KVM_REGISTER_COALESCED_MMIO
282+
KVM_SET_VAPIC_ADDR
283+
KVM_CREATE_DEVICE
284+
KVM_GET_IRQCHIP
285+
KVM_TRANSLATE
286+
KVM_S390_SET_INITIAL_PSW
287+
KVM_X86_SETUP_MCE
288+
KVM_DEASSIGN_PCI_DEVICE
289+
KVM_XEN_HVM_SET_ATTR
290+
KVM_GET_CLOCK
291+
KVM_SET_FPU
292+
KVM_KVMCLOCK_CTRL
293+
KVM_PPC_GET_PVINFO
294+
KVM_X86_GET_MCE_CAP_SUPPORTED
295+
KVM_S390_GET_IRQ_STATE
296+
KVM_GET_DEVICE_ATTR
297+
KVM_S390_INITIAL_RESET
298+
KVM_SET_REGS
299+
KVM_GET_TSC_KHZ
300+
KVM_CHECK_EXTENSION
301+
KVM_PPC_RESIZE_HPT_COMMIT
302+
KVM_GET_DIRTY_LOG
303+
KVM_S390_SET_IRQ_STATE
304+
KVM_S390_NORMAL_RESET
305+
KVM_SET_SIGNAL_MASK
306+
KVM_XEN_VCPU_SET_ATTR
307+
KVM_SET_GSI_ROUTING
308+
KVM_CREATE_VCPU
309+
KVM_S390_UCAS_UNMAP
310+
KVM_S390_STORE_STATUS
311+
KVM_UNREGISTER_COALESCED_MMIO
312+
KVM_ASSIGN_DEV_IRQ
313+
KVM_S390_PV_COMMAND
314+
KVM_S390_ENABLE_SIE
315+
KVM_CLEAR_DIRTY_LOG
316+
KVM_GET_ONE_REG
317+
KVM_ARM_SET_DEVICE_ADDR
318+
KVM_DIRTY_TLB
319+
KVM_NMI
320+
KVM_HYPERV_EVENTFD
321+
KVM_S390_MEM_OP
322+
KVM_PPC_SVM_OFF
323+
KVM_PPC_RESIZE_HPT_PREPARE
324+
KVM_INTERRUPT
325+
KVM_XEN_HVM_GET_ATTR
326+
KVM_GET_SREGS
327+
KVM_SET_IDENTITY_MAP_ADDR
328+
KVM_GET_REGS
329+
KVM_S390_GET_CMMA_BITS
330+
KVM_CREATE_IRQCHIP
331+
KVM_ASSIGN_PCI_DEVICE
332+
KVM_SET_NR_MMU_PAGES
333+
KVM_IOEVENTFD
334+
KVM_RUN
335+
KVM_S390_SET_SKEYS
336+
KVM_SET_DEVICE_ATTR
337+
KVM_DEASSIGN_DEV_IRQ
338+
KVM_SMI
339+
KVM_SET_TSS_ADDR
340+
KVM_GET_NR_MMU_PAGES
341+
KVM_XEN_VCPU_GET_ATTR
342+
KVM_REINJECT_CONTROL
343+
KVM_HAS_DEVICE_ATTR
344+
KVM_IRQFD
345+
KVM_S390_SET_CMMA_BITS
346+
KVM_SET_IRQCHIP
347+
KVM_SIGNAL_MSI
348+
KVM_GET_VCPU_MMAP_SIZE
349+
KVM_CREATE_VM
350+
KVM_S390_CLEAR_RESET
351+
KVM_RESET_DIRTY_RINGS
352+
KVM_ASSIGN_SET_MSIX_NR
353+
KVM_CREATE_PIT
354+
KVM_SET_GUEST_DEBUG
355+
KVM_GET_REG_LIST
356+
KVM_ARM_VCPU_FINALIZE
357+
KVM_SET_CLOCK
358+
KVM_PPC_ALLOCATE_HTAB
359+
KVM_PPC_GET_SMMU_INFO
360+
KVM_SET_TSC_KHZ
361+
KVM_S390_IRQ
362+
KVM_ENABLE_CAP
363+
KVM_IRQ_LINE
364+
KVM_SET_SREGS
365+
KVM_MEMORY_ENCRYPT_UNREG_REGION
366+
KVM_GET_STATS_FD
245367
USBDEVFS_CLAIMINTERFACE
246368
CHIOMOVE
247369
SONYPI_IOCGBATFLAGS
@@ -429,7 +551,6 @@ PTP_SYS_OFFSET
429551
BTRFS_IOC_SPACE_INFO
430552
VIDIOC_SUBDEV_ENUM_FRAME_SIZE
431553
ND_IOCTL_VENDOR
432-
SIOCSNETADDR
433554
SCIF_VREADFROM
434555
BTRFS_IOC_TRANS_START
435556
INOTIFY_IOC_SETNEXTWD
@@ -448,7 +569,6 @@ BTRFS_IOC_TREE_SEARCH
448569
RTC_PLL_GET
449570
RIO_CM_EP_GET_LIST
450571
USBDEVFS_DISCSIGNAL
451-
OSIOCSNETADDR
452572
LIRC_GET_MIN_TIMEOUT
453573
SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY
454574
DM_TARGET_MSG
@@ -537,7 +657,6 @@ UDF_GETEASIZE
537657
NVME_IOCTL_ADMIN64_CMD
538658
VHOST_SET_OWNER
539659
RIO_ALLOC_DMA
540-
F2FS_IOC_ABORT_VOLATILE_WRITE
541660
RIO_CM_CHAN_ACCEPT
542661
I2OHRTGET
543662
ATM_SETCIRANGE
@@ -762,7 +881,6 @@ UI_END_FF_ERASE
762881
SWITCHTEC_IOCTL_FLASH_PART_INFO
763882
FW_CDEV_IOC_SEND_PHY_PACKET
764883
NBD_SET_FLAGS
765-
SIOCGNETADDR
766884
VFIO_DEVICE_GET_REGION_INFO
767885
REISERFS_IOC_UNPACK
768886
FW_CDEV_IOC_REMOVE_DESCRIPTOR
@@ -792,7 +910,6 @@ NILFS_IOCTL_RESIZE
792910
PHN_GETREG
793911
I2OSWDL
794912
VBG_IOCTL_VMMDEV_REQUEST_BIG
795-
OSIOCGNETADDR
796913
JSIOCGBUTTONS
797914
VFIO_IOMMU_ENABLE
798915
DM_DEV_RENAME
@@ -1426,6 +1543,7 @@ HIDIOCGREPORTINFO
14261543
WDIOC_GETBOOTSTATUS
14271544
VDUSE_VQ_GET_INFO
14281545
ACRN_IOCTL_ASSIGN_PCIDEV
1546+
BLKGETDISKSEQ
14291547
ACRN_IOCTL_PM_GET_CPU_STATE
14301548
ACRN_IOCTL_DESTROY_VM
14311549
ACRN_IOCTL_SET_PTDEV_INTR

gen/ioctl/list.c

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ struct sockaddr {
6262
#include <linux/dma-buf.h>
6363
#include <linux/dma-heap.h>
6464
#include <linux/dm-ioctl.h>
65-
#include <linux/dn.h>
6665
#include <linux/fb.h>
6766
#include <linux/f2fs.h>
6867
#include <linux/fiemap.h>
@@ -453,6 +452,23 @@ void list(void) {
453452
IOCTL_REQUEST(SIOCSRARP);
454453
IOCTL_REQUEST(SIOCGIFMAP);
455454
IOCTL_REQUEST(SIOCSIFMAP);
455+
IOCTL_REQUEST(SIOCRTMSG);
456+
IOCTL_REQUEST(SIOCSIFNAME);
457+
IOCTL_REQUEST(SIOCGIFINDEX);
458+
IOCTL_REQUEST(SIOGIFINDEX);
459+
IOCTL_REQUEST(SIOCSIFPFLAGS);
460+
IOCTL_REQUEST(SIOCGIFPFLAGS);
461+
IOCTL_REQUEST(SIOCDIFADDR);
462+
IOCTL_REQUEST(SIOCSIFHWBROADCAST);
463+
IOCTL_REQUEST(SIOCGIFCOUNT);
464+
IOCTL_REQUEST(SIOCGIFBR);
465+
IOCTL_REQUEST(SIOCSIFBR);
466+
IOCTL_REQUEST(SIOCGIFTXQLEN);
467+
IOCTL_REQUEST(SIOCSIFTXQLEN);
468+
IOCTL_REQUEST(SIOCADDDLCI);
469+
IOCTL_REQUEST(SIOCDELDLCI);
470+
IOCTL_REQUEST(SIOCDEVPRIVATE);
471+
IOCTL_REQUEST(SIOCPROTOPRIVATE);
456472

457473
IOCTL_REQUEST(FIBMAP);
458474
IOCTL_REQUEST(FIGETBSZ);
@@ -562,7 +578,9 @@ void list(void) {
562578
IOCTL_REQUEST(KVM_SET_FPU);
563579
IOCTL_REQUEST(KVM_KVMCLOCK_CTRL);
564580
#ifdef KVM_GET_SREGS2
581+
#if 0 // needs `struct kvm_xcrs`
565582
IOCTL_REQUEST(KVM_GET_SREGS2);
583+
#endif
566584
#endif
567585
IOCTL_REQUEST(KVM_PPC_GET_PVINFO);
568586
IOCTL_REQUEST(KVM_X86_GET_MCE_CAP_SUPPORTED);
@@ -691,7 +709,9 @@ void list(void) {
691709
#endif
692710
IOCTL_REQUEST(KVM_SET_IRQCHIP);
693711
#ifdef KVM_SET_SREGS2
712+
#if 0 // needs `struct kvm_xcrs`
694713
IOCTL_REQUEST(KVM_SET_SREGS2);
714+
#endif
695715
#endif
696716
IOCTL_REQUEST(KVM_SIGNAL_MSI);
697717
IOCTL_REQUEST(KVM_GET_VCPU_MMAP_SIZE);
@@ -926,7 +946,6 @@ void list(void) {
926946
IOCTL_REQUEST(BTRFS_IOC_SPACE_INFO);
927947
IOCTL_REQUEST(VIDIOC_SUBDEV_ENUM_FRAME_SIZE);
928948
IOCTL_REQUEST(ND_IOCTL_VENDOR);
929-
IOCTL_REQUEST(SIOCSNETADDR);
930949
IOCTL_REQUEST(SCIF_VREADFROM);
931950
IOCTL_REQUEST(BTRFS_IOC_TRANS_START);
932951
IOCTL_REQUEST(INOTIFY_IOC_SETNEXTWD);
@@ -945,7 +964,6 @@ void list(void) {
945964
IOCTL_REQUEST(RTC_PLL_GET);
946965
IOCTL_REQUEST(RIO_CM_EP_GET_LIST);
947966
IOCTL_REQUEST(USBDEVFS_DISCSIGNAL);
948-
IOCTL_REQUEST(OSIOCSNETADDR);
949967
IOCTL_REQUEST(LIRC_GET_MIN_TIMEOUT);
950968
IOCTL_REQUEST(SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY);
951969
IOCTL_REQUEST(DM_TARGET_MSG);
@@ -1037,7 +1055,6 @@ void list(void) {
10371055
IOCTL_REQUEST(NVME_IOCTL_ADMIN64_CMD);
10381056
IOCTL_REQUEST(VHOST_SET_OWNER);
10391057
IOCTL_REQUEST(RIO_ALLOC_DMA);
1040-
IOCTL_REQUEST(F2FS_IOC_ABORT_VOLATILE_WRITE);
10411058
IOCTL_REQUEST(RIO_CM_CHAN_ACCEPT);
10421059
IOCTL_REQUEST(I2OHRTGET);
10431060
IOCTL_REQUEST(ATM_SETCIRANGE);
@@ -1273,7 +1290,6 @@ void list(void) {
12731290
IOCTL_REQUEST(SWITCHTEC_IOCTL_FLASH_PART_INFO);
12741291
IOCTL_REQUEST(FW_CDEV_IOC_SEND_PHY_PACKET);
12751292
IOCTL_REQUEST(NBD_SET_FLAGS);
1276-
IOCTL_REQUEST(SIOCGNETADDR);
12771293
IOCTL_REQUEST(VFIO_DEVICE_GET_REGION_INFO);
12781294
IOCTL_REQUEST(REISERFS_IOC_UNPACK);
12791295
IOCTL_REQUEST(FW_CDEV_IOC_REMOVE_DESCRIPTOR);
@@ -1303,7 +1319,6 @@ void list(void) {
13031319
IOCTL_REQUEST(PHN_GETREG);
13041320
IOCTL_REQUEST(I2OSWDL);
13051321
IOCTL_REQUEST(VBG_IOCTL_VMMDEV_REQUEST_BIG);
1306-
IOCTL_REQUEST(OSIOCGNETADDR);
13071322
IOCTL_REQUEST(JSIOCGBUTTONS);
13081323
IOCTL_REQUEST(VFIO_IOMMU_ENABLE);
13091324
IOCTL_REQUEST(DM_DEV_RENAME);

gen/ioctl/main.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ int main(void) {
4141
printf("#if __mips == 64\n");
4242
#elif defined(__riscv) && __riscv_xlen == 64
4343
printf("#if defined(__riscv) && __riscv_xlen == 64\n");
44+
#elif defined(__s390x__)
45+
printf("#if defined(__s390x__)\n");
4446
#else
4547
#error "unimplemented architecture"
4648
#endif

0 commit comments

Comments
 (0)