Hi, I just asked Linus to pull from my BK tree. It should fix a bunch of problems including I hope that lockup you were seeing a while ago. Attached are some things to go with that update: 1. ioctl patch that adds some missing compatible ioctls and removes some that are not compatible 2. update ppc64 pci patch. Still ugly stuff, just less buggy. We were overwriting the final byte in the pci dev when bus got bigger than 8bit. So we zeroed out the multifunction flag with a NULL terminator. If this isnt a big warning light that I need to get pci domains done then I dont know what is :) Anton ===== include/linux/compat_ioctl.h 1.1 vs edited ===== drivers/pci/probe.c | 2 - include/linux/compat_ioctl.h | 49 ++++++++++++++++++++++--------------------- include/linux/pci.h | 10 ++++---- 3 files changed, 32 insertions(+), 29 deletions(-) diff -puN drivers/pci/probe.c~ppc64-ioctl-pci-update drivers/pci/probe.c --- 25/drivers/pci/probe.c~ppc64-ioctl-pci-update 2003-05-22 01:16:04.000000000 -0700 +++ 25-akpm/drivers/pci/probe.c 2003-05-22 01:16:04.000000000 -0700 @@ -173,7 +173,7 @@ void __devinit pci_read_bridge_bases(str limit |= (io_limit_hi << 16); } - if (base && base <= limit) { + if (base <= limit) { res->flags = (io_base_lo & PCI_IO_RANGE_TYPE_MASK) | IORESOURCE_IO; res->start = base; res->end = limit + 0xfff; diff -puN include/linux/compat_ioctl.h~ppc64-ioctl-pci-update include/linux/compat_ioctl.h --- 25/include/linux/compat_ioctl.h~ppc64-ioctl-pci-update 2003-05-22 01:16:04.000000000 -0700 +++ 25-akpm/include/linux/compat_ioctl.h 2003-05-22 01:16:04.000000000 -0700 @@ -89,6 +89,8 @@ COMPATIBLE_IOCTL(BLKRRPART) COMPATIBLE_IOCTL(BLKFLSBUF) COMPATIBLE_IOCTL(BLKSECTSET) COMPATIBLE_IOCTL(BLKSSZGET) +COMPATIBLE_IOCTL(BLKRASET) +COMPATIBLE_IOCTL(BLKFRASET) /* RAID */ COMPATIBLE_IOCTL(RAID_VERSION) COMPATIBLE_IOCTL(GET_ARRAY_INFO) @@ -274,7 +276,6 @@ COMPATIBLE_IOCTL(SG_SET_COMMAND_Q) COMPATIBLE_IOCTL(SG_GET_VERSION_NUM) COMPATIBLE_IOCTL(SG_NEXT_CMD_LEN) COMPATIBLE_IOCTL(SG_SCSI_RESET) -COMPATIBLE_IOCTL(SG_IO) COMPATIBLE_IOCTL(SG_GET_REQUEST_TABLE) COMPATIBLE_IOCTL(SG_SET_KEEP_ORPHAN) COMPATIBLE_IOCTL(SG_GET_KEEP_ORPHAN) @@ -513,6 +514,7 @@ COMPATIBLE_IOCTL(AUTOFS_IOC_FAIL) COMPATIBLE_IOCTL(AUTOFS_IOC_CATATONIC) COMPATIBLE_IOCTL(AUTOFS_IOC_PROTOVER) COMPATIBLE_IOCTL(AUTOFS_IOC_EXPIRE) +COMPATIBLE_IOCTL(AUTOFS_IOC_EXPIRE_MULTI) /* DEVFS */ COMPATIBLE_IOCTL(DEVFSDIOC_GET_PROTO_REV) COMPATIBLE_IOCTL(DEVFSDIOC_SET_EVENT_MASK) @@ -523,6 +525,18 @@ COMPATIBLE_IOCTL(RAW_SETBIND) COMPATIBLE_IOCTL(RAW_GETBIND) /* SMB ioctls which do not need any translations */ COMPATIBLE_IOCTL(SMB_IOC_NEWCONN) +/* NCP ioctls which do not need any translations */ +COMPATIBLE_IOCTL(NCP_IOC_CONN_LOGGED_IN) +COMPATIBLE_IOCTL(NCP_IOC_SIGN_INIT) +COMPATIBLE_IOCTL(NCP_IOC_SIGN_WANTED) +COMPATIBLE_IOCTL(NCP_IOC_SET_SIGN_WANTED) +COMPATIBLE_IOCTL(NCP_IOC_LOCKUNLOCK) +COMPATIBLE_IOCTL(NCP_IOC_GETROOT) +COMPATIBLE_IOCTL(NCP_IOC_SETROOT) +COMPATIBLE_IOCTL(NCP_IOC_GETCHARSETS) +COMPATIBLE_IOCTL(NCP_IOC_SETCHARSETS) +COMPATIBLE_IOCTL(NCP_IOC_GETDENTRYTTL) +COMPATIBLE_IOCTL(NCP_IOC_SETDENTRYTTL) /* Little a */ COMPATIBLE_IOCTL(ATMSIGD_CTRL) COMPATIBLE_IOCTL(ATMARPD_CTRL) @@ -539,28 +553,6 @@ COMPATIBLE_IOCTL(ATMTCP_CREATE) COMPATIBLE_IOCTL(ATMTCP_REMOVE) COMPATIBLE_IOCTL(ATMMPC_CTRL) COMPATIBLE_IOCTL(ATMMPC_DATA) -#if defined(CONFIG_BLK_DEV_LVM) || defined(CONFIG_BLK_DEV_LVM_MODULE) -/* 0xfe - lvm */ -COMPATIBLE_IOCTL(VG_SET_EXTENDABLE) -COMPATIBLE_IOCTL(VG_STATUS_GET_COUNT) -COMPATIBLE_IOCTL(VG_STATUS_GET_NAMELIST) -COMPATIBLE_IOCTL(VG_REMOVE) -COMPATIBLE_IOCTL(VG_RENAME) -COMPATIBLE_IOCTL(VG_REDUCE) -COMPATIBLE_IOCTL(PE_LOCK_UNLOCK) -COMPATIBLE_IOCTL(PV_FLUSH) -COMPATIBLE_IOCTL(LVM_LOCK_LVM) -COMPATIBLE_IOCTL(LVM_GET_IOP_VERSION) -#ifdef LVM_TOTAL_RESET -COMPATIBLE_IOCTL(LVM_RESET) -#endif -COMPATIBLE_IOCTL(LV_SET_ACCESS) -COMPATIBLE_IOCTL(LV_SET_STATUS) -COMPATIBLE_IOCTL(LV_SET_ALLOCATION) -COMPATIBLE_IOCTL(LE_REMAP) -COMPATIBLE_IOCTL(LV_BMAP) -COMPATIBLE_IOCTL(LV_SNAPSHOT_USE_RATE) -#endif /* LVM */ #if defined(CONFIG_DRM) || defined(CONFIG_DRM_MODULE) COMPATIBLE_IOCTL(DRM_IOCTL_GET_MAGIC) COMPATIBLE_IOCTL(DRM_IOCTL_IRQ_BUSID) @@ -615,6 +607,17 @@ COMPATIBLE_IOCTL(HCISETLINKMODE) COMPATIBLE_IOCTL(HCISETACLMTU) COMPATIBLE_IOCTL(HCISETSCOMTU) COMPATIBLE_IOCTL(HCIINQUIRY) +COMPATIBLE_IOCTL(HCIUARTSETPROTO) +COMPATIBLE_IOCTL(HCIUARTGETPROTO) +COMPATIBLE_IOCTL(RFCOMMCREATEDEV) +COMPATIBLE_IOCTL(RFCOMMRELEASEDEV) +COMPATIBLE_IOCTL(RFCOMMGETDEVLIST) +COMPATIBLE_IOCTL(RFCOMMGETDEVINFO) +COMPATIBLE_IOCTL(RFCOMMSTEALDLC) +COMPATIBLE_IOCTL(BNEPCONNADD) +COMPATIBLE_IOCTL(BNEPCONNDEL) +COMPATIBLE_IOCTL(BNEPGETCONNLIST) +COMPATIBLE_IOCTL(BNEPGETCONNINFO) /* Misc. */ COMPATIBLE_IOCTL(0x41545900) /* ATYIO_CLKR */ COMPATIBLE_IOCTL(0x41545901) /* ATYIO_CLKW */ diff -puN include/linux/pci.h~ppc64-ioctl-pci-update include/linux/pci.h --- 25/include/linux/pci.h~ppc64-ioctl-pci-update 2003-05-22 01:16:04.000000000 -0700 +++ 25-akpm/include/linux/pci.h 2003-05-22 01:16:04.000000000 -0700 @@ -409,7 +409,7 @@ struct pci_dev { struct resource dma_resource[DEVICE_COUNT_DMA]; struct resource irq_resource[DEVICE_COUNT_IRQ]; - char slot_name[8]; /* slot name */ + char slot_name[12]; /* slot name */ /* These fields are used by common fixups */ unsigned int transparent:1; /* Transparent PCI bridge */ @@ -451,10 +451,10 @@ struct pci_bus { void *sysdata; /* hook for sys-specific extension */ struct proc_dir_entry *procdir; /* directory entry in /proc/bus/pci */ - unsigned char number; /* bus number */ - unsigned char primary; /* number of primary bridge */ - unsigned char secondary; /* number of secondary bridge */ - unsigned char subordinate; /* max number of subordinate buses */ + unsigned int number; /* bus number */ + unsigned int primary; /* number of primary bridge */ + unsigned int secondary; /* number of secondary bridge */ + unsigned int subordinate; /* max number of subordinate buses */ char name[48]; _