adding Irix (and, to a lesser extent, Solaris) userland emulation to QEMU
Go to file
Bernhard Kohl 3bc5aa187f scsi-disk: respect the page control (PC) field in the MODE SENSE command
The page control (PC) field defines the type of mode parameter values
to be returned in the mode pages:

PC=0 : Current values
PC=1 : Changeable values
PC=2 : Default values
PC=3 : Saved values

The current implementation always returns the same type of parameters.
This is OK for Current and Default values as we don't support changes
to be done by the MODE SELECT command.

For Saved values the following applies (implemented by this patch):
"A PC field value of 3h requests that the target return the saved
values of the mode parameters. Implementation of saved page parameters
is optional. Mode parameters not supported by the target shall be set
to zero. If saved values are not implemented, the command shall be
terminated with CHECK CONDITION status, the sense key set to
ILLEGAL REQUEST and the additional sense code set to
SAVING PARAMETERS NOT SUPPORTED."

For Changeable values the following applies (implemented by this patch):
"A PC field value of 1h requests that the target return a mask denoting
those mode parameters that are changeable. In the mask, the fields of
the mode parameters that are changeable shall be set to all one bits and
the fields of the mode parameters that are non-changeable (i.e. defined
by the target) shall be set to all zero bits."

In newer versions of the SCSI-2 spec the following clause was added.
"If the logical unit does not implement changeable parameters mode pages
and the device server receives a MODE SENSE command with 01b in the PC
field, then the command shall be terminated with CHECK CONDITION status,
with the sense key set to ILLEGAL REQUEST, and the additional sense code
set to INVALID FIELD IN CDB."

This was not yet included in the SCSI-2 Working Drafts from 1986-1993.
I assume that the variant to return CHECK CONDITION for PC=1 is not
widely implemented by real devices. I have a legacy OS which fails,
if MODE_SENSE returns non GOOD for PC=1. So for highest compatibility I
implemented the former variant with this patch.

The last Working Draft X3T9.2 Rev. 10L 7-SEP-93 can be found here:
http://ldkelley.com/SCSI2/SCSI2/SCSI2-08.html#8.2.10

In mode_sense_page() this patch also avoids multiple hard coded
definitions of the same mode page length. Instead I use the varable
p[1]. In fact the returned length of the mode pages 4 and 5 were wrong
(2 bytes less).

Signed-off-by: Bernhard Kohl <bernhard.kohl@nsn.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
(cherry picked from commit 282ab04eb1)
2010-09-13 14:31:15 +02:00
QMP QMP: Fix python helper /wrt long return strings 2010-07-01 14:27:13 -03:00
audio savevm: Add DeviceState param 2010-07-06 10:36:28 -05:00
block vvfat: fat_chksum(): fix access above array bounds 2010-08-30 18:44:13 +02:00
bsd-user rename CONFIG_QEMU_PREFIX 2010-06-10 00:09:49 +02:00
darwin-user Fix %lld or %llx printf format use 2010-05-22 08:02:12 +00:00
default-configs piix4: compile only once 2010-07-03 06:49:47 +00:00
docs Initial documentation for migration 2010-07-26 16:19:51 -05:00
fpu softfloat: add float32_exp2() 2010-07-13 18:18:23 +02:00
fsdev virtio-9p: Introduces an option to specify the security model. 2010-06-22 15:15:30 -05:00
gdb-xml
hw scsi-disk: respect the page control (PC) field in the MODE SENSE command 2010-09-13 14:31:15 +02:00
linux-user linux-user: fix build on hosts not using guest base 2010-07-30 21:12:59 +02:00
net give some useful error messages when tap open 2010-06-22 15:15:30 -05:00
pc-bios Update OpenBIOS images 2010-07-13 20:09:24 +02:00
roms Update SeaBIOS 2010-07-13 08:55:04 -05:00
slirp slirp: Remove declarations which are no longer needed 2010-07-25 16:59:41 +02:00
sysconfigs/target Add cpu model configuration support.. 2010-02-22 16:16:17 -06:00
target-alpha remove exec-all.h inclusion from cpu.h 2010-07-03 09:48:24 +03:00
target-arm remove exec-all.h inclusion from cpu.h 2010-07-03 09:48:24 +03:00
target-cris cris: Avoid debug clobbering for both I & D MMU state. 2010-07-05 11:39:04 +02:00
target-i386 target-i386: use gen_update_cc_op() 2010-07-25 17:04:07 +02:00
target-m68k remove exec-all.h inclusion from cpu.h 2010-07-03 09:48:24 +03:00
target-microblaze microblaze: Remove unused members from the disas context 2010-07-25 00:09:41 +02:00
target-mips mips: more fixes to the MIPS interrupt glue logic 2010-07-25 16:54:02 +02:00
target-ppc target-ppc: fix power mode checking on 7400/7410 2010-07-19 00:33:29 +02:00
target-s390x remove exec-all.h inclusion from cpu.h 2010-07-03 09:48:24 +03:00
target-sh4 target-sh4: Add support for ldc & stc with sgr 2010-07-12 10:20:31 +02:00
target-sparc remove exec-all.h inclusion from cpu.h 2010-07-03 09:48:24 +03:00
tcg tcg-s390: new TCG Target 2010-06-29 23:07:51 +02:00
tests tests: Replace u_int8_t, u_int16_t, u_int32_t, u_int64_t by standard int types 2010-07-25 16:59:40 +02:00
ui vnc: tight: split send_sub_rect 2010-07-26 17:36:14 -05:00
.gitignore add cscope.* to .gitignore 2010-07-25 17:03:49 +02:00
.gitmodules use absolute URLs for .gitmodules 2010-03-06 23:09:28 +01:00
CODING_STYLE CODING_STYLE: Reserve qemu_ prefix for library wrappers 2010-03-19 15:27:27 -05:00
COPYING
COPYING.LIB
Changelog Update version and changelog to sync with stable branch 2009-12-19 08:26:03 -06:00
LICENSE
MAINTAINERS Update MAINTAINERS 2010-02-06 19:24:42 +01:00
Makefile ui: move all ui components in ui/ 2010-07-26 17:35:54 -05:00
Makefile.dis Compile disassemblers only once 2010-03-21 08:28:47 +00:00
Makefile.hw Clean libhw subdirs as well 2010-05-22 08:24:49 +00:00
Makefile.objs vnc: threaded VNC server 2010-07-26 17:36:14 -05:00
Makefile.target vnc: tight add PNG encoding 2010-07-26 17:36:14 -05:00
Makefile.user Use vpath directive 2010-01-08 09:58:40 -06:00
README
TODO
VERSION Update version for 0.13.0-rc1 2010-08-31 08:19:23 -05:00
a.out.h
acl.c
acl.h
aes.c
aes.h
aio.c block: fix aio_flush segfaults for read-only protocols (e.g. curl) 2010-05-21 11:49:18 +02:00
alpha-dis.c
alpha.ld
arch_init.c ramblocks: No more being lazy about duplicate names 2010-07-06 10:36:29 -05:00
arch_init.h Refactor target specific handling, compile vl.c only once 2010-03-29 19:23:52 +00:00
arm-dis.c arm: remove dead assignments, spotted by clang analyzer 2010-04-25 19:31:06 +00:00
arm-semi.c GDB exit status for semihosting 2010-06-16 13:03:51 +01:00
arm.ld
async.c
balloon.c move balloon handling to balloon.c 2010-04-09 18:55:56 +02:00
balloon.h move balloon handling to balloon.c 2010-04-09 18:55:56 +02:00
block-migration.c block migration: propagate return value when bdrv_write() returns < 0 2010-07-28 14:04:24 -05:00
block-migration.h block migration: Report progress also via info migration 2009-12-03 10:48:53 -06:00
block.c block: Fix image re-open in bdrv_commit 2010-08-30 18:42:15 +02:00
block.h Fix -snapshot deleting images on disk change 2010-07-28 14:04:25 -05:00
block_int.h block: Change bdrv_eject() not to drop the image 2010-08-03 16:39:54 +02:00
blockdev.c Fix -snapshot deleting images on disk change 2010-07-28 14:04:25 -05:00
blockdev.h blockdev: drive_get_by_id() is no longer used, remove 2010-07-02 13:18:02 +02:00
bswap.h Fix leul_to_cpu on big endian hosts 2010-05-31 20:55:23 +02:00
bt-host.c bt: remove dead assignments, spotted by clang analyzer 2010-04-25 18:20:28 +00:00
bt-host.h
bt-vhci.c
buffered_file.c Do not use dprintf 2010-02-07 02:03:50 +03:00
buffered_file.h
cache-utils.c FreeBSD ppc_init_cacheline_sizes(): add missing #includes 2010-03-13 01:14:01 +03:00
cache-utils.h
check-qdict.c check-qdict: Introduce test for the new iteration API 2010-07-01 14:27:13 -03:00
check-qfloat.c Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
check-qint.c Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
check-qjson.c Merge remote branch 'qmp/for-anthony' into staging 2010-06-14 09:39:01 -05:00
check-qlist.c Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
check-qstring.c Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
cmd.c qemu-io: check registered fds in command_loop() 2010-06-22 14:38:02 +02:00
cmd.h
config.h Makefile dependencies for device configs 2009-11-22 21:24:54 +00:00
configure vnc: better default values for VNC options 2010-07-26 17:36:14 -05:00
console.c Add support for depth 15 to qemu_default_pixelformat() 2010-06-01 12:53:36 -05:00
console.h un-register kbd driver in case of USB kbd unplug. 2010-06-14 15:46:28 -05:00
cpu-all.h linux-user: fix build on hosts not using guest base 2010-07-30 21:12:59 +02:00
cpu-common.h qemu_ram_alloc: Add DeviceState and name parameters 2010-07-06 10:36:28 -05:00
cpu-defs.h move stop/stopped CPU_COMMON fields after area zeroed by reset 2010-05-11 14:02:22 -03:00
cpu-exec.c Fix cpu_exit for tcp_cpu_exec 2010-07-22 05:52:09 +02:00
cpus.c Rework debug exception processing for gdb use 2010-07-22 05:52:09 +02:00
cpus.h Rename tcg_cpu_exec and tcg_has_work 2010-07-22 05:52:09 +02:00
create_config configure: Fix evaluation of config-host.mak in create_config 2010-06-13 12:50:30 +02:00
cris-dis.c
cursor.c cursor: add cursor functions. 2010-05-24 15:18:23 -05:00
cursor_hidden.xpm cursor: add cursor functions. 2010-05-24 15:18:23 -05:00
cursor_left_ptr.xpm cursor: add cursor functions. 2010-05-24 15:18:23 -05:00
cutils.c split out qemu-timer.c 2010-03-17 11:16:15 -05:00
def-helper.h tcg: Optionally sign-extend 32-bit arguments for 64-bit hosts. 2010-06-16 11:29:11 +02:00
device_tree.c
device_tree.h
dis-asm.h ia64 disas support 2010-04-01 21:51:59 +02:00
disas.c ia64 disas support 2010-04-01 21:51:59 +02:00
disas.h Disassembler symbol lookup fix 2010-03-01 04:39:50 +00:00
dma-helpers.c
dma.h
dyngen-exec.h Move stdbool.h 2010-06-13 19:00:50 +01:00
elf.h microblaze: Update elf machine nums. 2010-05-19 15:24:17 +02:00
envlist.c
envlist.h
exec-all.h remove dead code 2010-07-24 14:42:29 +02:00
exec.c Declare code_gen_ptr, code_gen_max_blocks 'static' 2010-07-22 05:52:10 +02:00
feature_to_c.sh
gdbstub.c remove exec-all.h inclusion from cpu.h 2010-07-03 09:48:24 +03:00
gdbstub.h GDB exit status for semihosting 2010-06-16 13:03:51 +01:00
gen-icount.h Compile qemu-timer only once 2010-03-29 19:24:00 +00:00
host-utils.c
host-utils.h target-alpha: Fix generic ctz64. 2009-12-17 18:12:04 +01:00
hpet.h
hppa-dis.c tcg-hppa: Fix const errors in hppa-dis.c 2010-03-23 22:00:43 +01:00
hppa.ld
hxtool hxtool: Fix line number reporting on SQMP/EQMP errors 2010-06-11 16:35:46 -03:00
i386-dis.c i386-dis: Fix unused return value, spotted by clang 2010-04-18 14:27:44 +00:00
i386.ld Fix missing symbols in .rel/.rela.plt sections 2010-02-06 22:22:27 +01:00
ia64-dis.c Fix %lld or %llx printf format use 2010-05-22 08:02:12 +00:00
ia64.ld
input.c un-register kbd driver in case of USB kbd unplug. 2010-06-14 15:46:28 -05:00
ioport-user.c
ioport.c
ioport.h
iov.c iov: Move from hw/ to topdir 2010-05-10 11:36:03 -05:00
iov.h iov: Move from hw/ to topdir 2010-05-10 11:36:03 -05:00
json-lexer.c remove unnecessary lookaheads 2010-06-11 15:25:14 -03:00
json-lexer.h Add a lexer for JSON 2009-11-17 08:49:39 -06:00
json-parser.c Merge remote branch 'qmp/for-anthony' into staging 2010-06-14 09:39:01 -05:00
json-parser.h Add a JSON parser 2009-11-17 08:49:39 -06:00
json-streamer.c json-streamer: Don't use qdict_put_obj() 2010-06-11 15:25:14 -03:00
json-streamer.h Add a JSON message boundary identifier 2009-11-17 08:49:39 -06:00
kvm-all.c Rework debug exception processing for gdb use 2010-07-22 05:52:09 +02:00
kvm-stub.c remove exec-all.h inclusion from cpu.h 2010-07-03 09:48:24 +03:00
kvm.h kvm: Enable XSAVE live migration support 2010-06-28 13:06:03 -03:00
libfdt_env.h
linux-aio.c linux-aio: Fix typo in read() EINTR check 2010-04-23 16:21:57 +02:00
m68k-dis.c m68k-dis: fix unused return value, spotted by clang 2010-04-23 19:22:17 +00:00
m68k-semi.c GDB exit status for semihosting 2010-06-16 13:03:51 +01:00
m68k.ld
microblaze-dis.c microblaze: fix custom fprintf 2010-04-27 18:56:11 +00:00
migration-exec.c Factorize common migration incoming code 2010-06-22 15:15:51 -05:00
migration-fd.c Factorize common migration incoming code 2010-06-22 15:15:51 -05:00
migration-tcp.c Close socket file descriptor when qemu_accept fails 2010-07-25 17:03:51 +02:00
migration-unix.c Factorize common migration incoming code 2010-06-22 15:15:51 -05:00
migration.c Monitor: handle optional '-' arg as a bool 2010-07-01 14:27:13 -03:00
migration.h Factorize common migration incoming code 2010-06-22 15:15:51 -05:00
mips-dis.c mips-dis: add support for Godson integer instructions 2010-06-29 23:26:34 +02:00
mips.ld
module.c
module.h
monitor.c Merge remote branch 'qmp/for-anthony' into staging 2010-07-06 08:31:17 -05:00
monitor.h monitor: Allow to exclude commands from QMP 2010-07-01 14:27:14 -03:00
nbd.c Fix %lld or %llx printf format use 2010-05-22 08:02:12 +00:00
nbd.h Move stdbool.h 2010-06-13 19:00:50 +01:00
net-checksum.c
net.c net: delete QemuOpts when net_client_init() fails. 2010-07-01 14:27:13 -03:00
net.h Move stdbool.h 2010-06-13 19:00:50 +01:00
notify.c Add support for generic notifier lists 2010-03-19 15:27:32 -05:00
notify.h Add support for generic notifier lists 2010-03-19 15:27:32 -05:00
os-posix.c Include sys/mman.h before qemu-options.h 2010-07-06 08:53:59 -05:00
os-win32.c Move daemonize handling to OS specific files 2010-06-12 08:49:15 +03:00
osdep.c win32: Add missing function ffs 2010-06-27 19:25:25 +03:00
osdep.h qdev: move DO_UPCAST() into osdep.h 2009-12-03 09:41:29 -06:00
path.c path.c fix warning with _FORTIFY_SOURCE 2009-12-25 18:19:15 +00:00
pci-ids.txt
poison.h move targphys.h and hw/poison.h inclusion to cpu-common.h 2010-04-09 18:55:55 +02:00
posix-aio-compat.c posix-aio-compat: Fix async_conmtext for ioctl 2010-08-30 18:44:22 +02:00
ppc-dis.c
ppc.ld
ppc64.ld
qbool.c Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
qbool.h Add a QBool type 2009-11-17 08:49:39 -06:00
qdict-test-data.txt
qdict.c QDict: Introduce qdict_get_try_bool() 2010-07-01 14:27:13 -03:00
qdict.h QDict: Introduce qdict_get_try_bool() 2010-07-01 14:27:13 -03:00
qemu-aio.h
qemu-barrier.h Introduce proper compiler barrier 2010-07-22 05:52:08 +02:00
qemu-binfmt-conf.sh target-alpha: Add binfmt entry. 2009-12-13 20:32:36 +01:00
qemu-char.c block: Decouple block device "commit all" from DriveInfo 2010-06-15 09:41:59 +02:00
qemu-char.h Always notify consumers of char devices if they're open 2010-04-09 22:03:22 +02:00
qemu-common.h apic: qdev conversion cleanup 2010-06-19 07:47:42 +00:00
qemu-config.c virtio-9p: Introduces an option to specify the security model. 2010-06-22 15:15:30 -05:00
qemu-config.h virtio-9p: Create a syntactic shortcut for the file-system pass-thru 2010-05-03 12:17:39 -05:00
qemu-doc.texi Documentation: Fix spelling bugs 2010-07-11 20:29:31 +03:00
qemu-error.c error: Move qerror_report() from qemu-error.[ch] to qerror.[ch] 2010-03-27 14:30:38 +01:00
qemu-error.h error: Move qerror_report() from qemu-error.[ch] to qerror.[ch] 2010-03-27 14:30:38 +01:00
qemu-img-cmds.hx qemu-img: Fix copy+paste bug in documentation 2010-07-13 17:48:17 +02:00
qemu-img.c qemu-img rebase: Open new backing file read-only 2010-08-30 18:44:03 +02:00
qemu-img.texi qemu-img: Add 'resize' command to grow/shrink disk images 2010-05-03 10:07:32 +02:00
qemu-io.c qemu-io: Fix error messages 2010-06-04 11:43:39 +02:00
qemu-lock.h
qemu-log.h
qemu-malloc.c cow: stop using mmap 2010-06-15 09:41:59 +02:00
qemu-monitor.hx monitor: Establish cmd flags and convert the async tag 2010-07-01 13:58:38 -03:00
qemu-nbd.c qemu-nbd: Improve error reporting 2010-05-17 10:20:04 +02:00
qemu-nbd.texi qemu-nbd: Fix wrong description in qemu-nbd.texi 2010-03-06 23:03:50 +01:00
qemu-objects.h Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
qemu-option.c error: New qemu_opts_loc_restore() 2010-07-06 17:05:49 +02:00
qemu-option.h error: New qemu_opts_loc_restore() 2010-07-06 17:05:49 +02:00
qemu-options.h Introduce OS specific cmdline argument handling and move SMB arg to os-posix.c 2010-06-12 08:49:15 +03:00
qemu-options.hx move 'unsafe' to end of caching modes in help 2010-07-28 14:04:24 -05:00
qemu-os-posix.h Move set_proc_name() to OS specific files. 2010-06-12 08:49:15 +03:00
qemu-os-win32.h win32: Add define for missing EPROTONOSUPPORT 2010-06-27 19:09:56 +03:00
qemu-queue.h Import a simple queue implementation from NetBSD 2009-12-03 10:48:52 -06:00
qemu-sockets.c qemu-sockets: avoid strlen of NULL pointer 2010-05-18 19:49:16 +02:00
qemu-tech.texi Documentation: Use UTF-8 encoding and fix one wrong encoding 2010-02-10 12:43:04 -06:00
qemu-thread.c qemu-thread: add qemu_mutex/cond_destroy and qemu_mutex_exit 2010-07-26 17:36:14 -05:00
qemu-thread.h qemu-thread: add qemu_mutex/cond_destroy and qemu_mutex_exit 2010-07-26 17:36:14 -05:00
qemu-timer.c savevm: Add DeviceState param 2010-07-06 10:36:28 -05:00
qemu-timer.h Implement cpu_get_real_ticks for Alpha. 2010-04-27 05:50:42 +02:00
qemu-tool.c error: Link qemu-img, qemu-nbd, qemu-io with qemu-error.o 2010-03-27 14:30:38 +01:00
qemu-x509.h move x509 file name defines to qemu-x509.h 2010-03-08 11:30:09 -06:00
qemu.sasl
qemu_socket.h move socket_init to qemu-sockets.c 2010-04-09 18:55:54 +02:00
qerror.c QError: Introduce QERR_QMP_EXTRA_MEMBER 2010-07-01 14:27:13 -03:00
qerror.h QError: Introduce QERR_QMP_EXTRA_MEMBER 2010-07-01 14:27:13 -03:00
qfloat.c Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
qfloat.h Add a QFloat datatype 2009-11-17 08:49:38 -06:00
qint.c Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
qint.h Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
qjson.c qjson: Handle "\f" 2010-06-11 15:25:14 -03:00
qjson.h QJSON: Introduce qobject_from_jsonv() 2009-12-03 09:41:18 -06:00
qlist.c Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
qlist.h Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
qobject.h Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
qstring.c Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
qstring.h Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
readline.c cope with printf macro definition in readline.c 2010-02-08 12:12:40 +03:00
readline.h
rules.mak Put dependency files in proper subdir 2010-05-22 08:31:20 +00:00
rwhandler.c Don't compile rwhandler.c for user targets 2010-02-20 09:27:38 +00:00
rwhandler.h rwhandler: simplified way to register for mem/io 2010-02-14 16:10:53 +02:00
s390-dis.c s390: Disassemble some general-instruction-extension insns. 2010-06-10 00:46:41 +02:00
s390.ld
savevm.c savevm: Fix memory leak of compat struct 2010-07-30 23:02:03 +02:00
sh4-dis.c sh4: Fix compiler warning (fprintf format string) 2010-04-14 01:04:02 +02:00
softmmu-semi.h
softmmu_defs.h
softmmu_exec.h sparc64: handle asi referencing nucleus and secondary MMU contexts 2010-05-06 23:14:26 +03:00
softmmu_header.h sparc64: fix 32bit load sign extension 2010-06-02 20:04:52 +00:00
softmmu_template.h Split TLB addend and target_phys_addr_t 2010-04-05 00:28:53 +01:00
sparc-dis.c sparc64: more ultrasparc asi extensions for disassembler 2010-05-06 20:13:02 +00:00
sparc.ld
sparc64.ld
sysemu.h pci hotplug: make pci_device_hot_remove() static 2010-07-11 23:14:57 +03:00
targphys.h Split TLB addend and target_phys_addr_t 2010-04-05 00:28:53 +01:00
tcg-runtime.c tcg: add div/rem 32-bit helpers 2010-03-14 22:04:50 +01:00
texi2pod.pl
thunk.c
thunk.h
translate-all.c tcg: get rid of copy_size in TCGOpDef 2010-06-09 16:10:50 +02:00
uboot_image.h
usb-bsd.c qdev: Replace device names containing whitespace 2009-12-12 07:59:38 -06:00
usb-linux.c Return usb device to host on exit 2010-06-30 22:51:17 +02:00
usb-stub.c
vgafont.h
vl.c Rename tcg_cpu_exec and tcg_has_work 2010-07-22 05:52:09 +02:00
x86_64.ld Fix missing symbols in .rel/.rela.plt sections 2010-02-06 22:22:27 +01:00

README

Read the documentation in qemu-doc.html.

Fabrice Bellard.