QEMU With E2K User Support
Go to file
Bernhard Kohl 282ab04eb1 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>
2010-09-08 12:39:07 +02:00
audio audio/sdl: return on error 2010-08-07 20:04:24 +04:00
block nbd: Introduce NBD named exports. 2010-08-30 18:29:22 +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 Device specification for shared memory PCI device 2010-08-10 16:25:15 -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-08 12:39:07 +02:00
linux-user microblaze: Fix the target version of stat64 struct 2010-08-09 10:13:33 +02:00
net Fix a warning on OpenSolaris 2010-07-31 19:40:13 +00:00
pc-bios Sparc: update OpenBIOS images to r859 2010-08-26 17:57:47 +00:00
QMP QMP: Update README file 2010-08-22 17:11:06 -05: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
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 QemuOpts: make most qemu_*_opts static 2010-08-22 17:11:06 -05: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: Add support for VInt and VEIC irq modes 2010-08-06 12:21:16 +02:00
target-ppc PPC: Add PV hypercall transport through fw_cfg 2010-08-26 18:13:38 +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: Revert ppc64 tcg_out_movi32 change 2010-08-15 00:57:40 +04:00
tests cris: Correct settls1 testcase. 2010-07-29 17:15:28 +02:00
ui vnc: check fd before calling qemu_set_fd_handler2() in vnc_client_write() 2010-08-22 16:48:23 -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
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 arch_init: replace tabs by spaces. 2010-08-22 16:19:00 -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_int.h block: Change bdrv_eject() not to drop the image 2010-08-03 15:57:22 +02:00
block-migration.c block migration: replace tabs by spaces. 2010-08-03 15:57:22 +02:00
block-migration.h
block.c block: Fix image re-open in bdrv_commit 2010-08-30 18:29:22 +02:00
block.h Fix -snapshot deleting images on disk change 2010-07-26 13:39:40 +02:00
blockdev.c QemuOpts: make most qemu_*_opts static 2010-08-22 17:11:06 -05:00
blockdev.h Rearrange block headers 2010-08-24 15:22:24 +00: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 set proper migration status on ->write error (v5) 2010-08-19 08:44:37 -05: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
Changelog
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
CODING_STYLE CODING_STYLE: Reserve qemu_ prefix for library wrappers 2010-03-19 15:27:27 -05:00
config.h
configure Fix "make install" with a cross toolchain 2010-08-26 18:18:26 +02: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
COPYING
COPYING.LIB
cpu-all.h linux-user: fix build on hosts not using guest base 2010-07-30 21:09:10 +02:00
cpu-common.h Add qemu_ram_alloc_from_ptr function 2010-08-10 16:25:15 -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 mips: Add support for VInt and VEIC irq modes 2010-08-06 12:21:16 +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_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
cursor.c 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 Add more DT_* and AT_* constants to qemu's copy of elf.h. 2010-07-29 08:32:27 +02:00
envlist.c
envlist.h
exec-all.h remove dead code 2010-07-24 14:42:29 +02:00
exec.c Fix segfault in mmio subpage handling code. 2010-08-28 08:47:23 +00: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
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
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
json-parser.c Merge remote branch 'qmp/for-anthony' into staging 2010-06-14 09:39:01 -05:00
json-parser.h
json-streamer.c json-streamer: Don't use qdict_put_obj() 2010-06-11 15:25:14 -03:00
json-streamer.h
kvm-all.c Merge remote branch 'qemu-kvm/uq/master' into staging 2010-08-23 15:10:12 -05:00
kvm-stub.c Add kvm_set_ioeventfd_mmio_long definition for non-KVM systems 2010-08-15 09:44:47 +00:00
kvm.h Add function to assign ioeventfd to MMIO. 2010-08-10 16:25:15 -05:00
libfdt_env.h
LICENSE
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
MAINTAINERS
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 Fix "make install" with a cross toolchain 2010-08-26 18:18:26 +02:00
Makefile.user
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 set proper migration status on ->write error (v5) 2010-08-19 08:44:37 -05: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 QMP/monitor: update do_info_version() to output broken down version string 2010-08-22 17:11:06 -05:00
monitor.h monitor: Allow to exclude commands from QMP 2010-07-01 14:27:14 -03:00
nbd.c nbd: Introduce NBD named exports. 2010-08-30 18:29:22 +02:00
nbd.h nbd: Introduce NBD named exports. 2010-08-30 18:29:22 +02:00
net-checksum.c
net.c QemuOpts: make most qemu_*_opts static 2010-08-22 17:11:06 -05: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 Use ARRAY_SIZE macro 2010-08-20 21:03:24 +00:00
os-win32.c win32: Add missing function setenv 2010-08-15 09:45:28 +00:00
osdep.c win32: Add missing function ffs 2010-06-27 19:25:25 +03:00
osdep.h win32: Add missing function setenv 2010-08-15 09:45:28 +00:00
path.c
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:29:22 +02:00
ppc64.ld
ppc-dis.c
ppc.ld
qbool.c Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
qbool.h
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_socket.h move socket_init to qemu-sockets.c 2010-04-09 18:55:54 +02:00
qemu-aio.h
qemu-barrier.h Introduce proper compiler barrier 2010-07-22 05:52:08 +02:00
qemu-binfmt-conf.sh
qemu-char.c QemuOpts: make most qemu_*_opts static 2010-08-22 17:11:06 -05:00
qemu-char.h RESEND: Inter-VM shared memory PCI device 2010-08-10 16:25:16 -05:00
qemu-common.h Rearrange block headers 2010-08-24 15:22:24 +00:00
qemu-config.c QemuOpts: make most qemu_*_opts static 2010-08-22 17:11:06 -05:00
qemu-config.h QemuOpts: make most qemu_*_opts static 2010-08-22 17:11:06 -05:00
qemu-doc.texi nbd: Introduce NBD named exports. 2010-08-30 18:29:22 +02: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:29:22 +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 fix variable type in qemu-io.c 2010-07-30 23:05:51 +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 QMP doc: Add 'Stability Considerations' section 2010-08-22 17:11:06 -05:00
qemu-nbd.c nbd: Introduce NBD named exports. 2010-08-30 18:29:22 +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 compile -fsdev and -virtfs cmd line options unconditionally. 2010-08-22 17:11:06 -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
qemu-sockets.c qemu-sockets: avoid strlen of NULL pointer 2010-05-18 19:49:16 +02:00
qemu-tech.texi
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
qerror.c migration: Accept 'cont' only after successful incoming migration 2010-07-30 23:14:08 +02:00
qerror.h migration: Accept 'cont' only after successful incoming migration 2010-07-30 23:14:08 +02:00
qfloat.c Fix qtypes' licenses 2010-05-19 12:45:54 -03:00
qfloat.h
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
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
readline.h
README
rules.mak Put dependency files in proper subdir 2010-05-22 08:31:20 +00:00
rwhandler.c
rwhandler.h
s390-dis.c s390: Disassemble some general-instruction-extension insns. 2010-06-10 00:46:41 +02:00
s390.ld
savevm.c savevm: Generate a name when run without one 2010-08-30 18:29:23 +02:00
sh4-dis.c sh4: Fix compiler warning (fprintf format string) 2010-04-14 01:04:02 +02:00
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
softmmu-semi.h
sparc64.ld
sparc-dis.c sparc64: more ultrasparc asi extensions for disassembler 2010-05-06 20:13:02 +00:00
sparc.ld
sysemu.h migration: Accept 'cont' only after successful incoming migration 2010-07-30 23:14:08 +02: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
TODO
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
usb-linux.c Return usb device to host on exit 2010-06-30 22:51:17 +02:00
usb-stub.c
VERSION Update version for 0.13.x 2010-07-28 07:58:15 -05:00
vgafont.h
vl.c compile -fsdev and -virtfs cmd line options unconditionally. 2010-08-22 17:11:06 -05:00
x86_64.ld

Read the documentation in qemu-doc.html.

Fabrice Bellard.