Merge remote branch 'mst/for_anthony' into staging
authorAnthony Liguori <aliguori@us.ibm.com>
Mon, 1 Nov 2010 15:33:45 +0000 (10:33 -0500)
committerAnthony Liguori <aliguori@us.ibm.com>
Mon, 1 Nov 2010 15:33:45 +0000 (10:33 -0500)
1  2 
Makefile
Makefile.objs
arch_init.c
qemu-common.h

diff --combined Makefile
index 071baa3db768d4accbfe8178f3715d8bc782f19d,cf8f48a4764d11459184d6a015a0bb062f5ac822..ec8a6bce009a2be94dfa1c2262ce50d780b3e84b
+++ b/Makefile
@@@ -1,6 -1,6 +1,6 @@@
  # Makefile for QEMU.
  
- GENERATED_HEADERS = config-host.h trace.h
+ GENERATED_HEADERS = config-host.h trace.h qemu-options.def
  
  ifneq ($(wildcard config-host.mak),)
  # Put the all: rule here so that config-host.mak can contain dependencies.
@@@ -71,6 -71,8 +71,8 @@@ build-all: $(DOCS) $(TOOLS) recurse-al
  
  config-host.h: config-host.h-timestamp
  config-host.h-timestamp: config-host.mak
+ qemu-options.def: qemu-options.hx
+       $(call quiet-command,sh $(SRC_PATH)/hxtool -h < $< > $@,"  GEN   $@")
  
  SUBDIR_RULES=$(patsubst %,subdir-%, $(TARGET_DIRS))
  
@@@ -129,27 -131,28 +131,28 @@@ version-obj-$(CONFIG_WIN32) += version.
  qemu-img.o: qemu-img-cmds.h
  qemu-img.o qemu-tool.o qemu-nbd.o qemu-io.o: $(GENERATED_HEADERS)
  
 -qemu-img$(EXESUF): qemu-img.o qemu-tool.o qemu-error.o $(trace-obj-y) $(block-obj-y) $(qobject-obj-y) $(version-obj-y) qemu-timer-common.o
 +qemu-img$(EXESUF): qemu-img.o qemu-tool.o qemu-error.o $(oslib-obj-y) $(trace-obj-y) $(block-obj-y) $(qobject-obj-y) $(version-obj-y) qemu-timer-common.o
  
 -qemu-nbd$(EXESUF): qemu-nbd.o qemu-tool.o qemu-error.o $(trace-obj-y) $(block-obj-y) $(qobject-obj-y) $(version-obj-y) qemu-timer-common.o
 +qemu-nbd$(EXESUF): qemu-nbd.o qemu-tool.o qemu-error.o $(oslib-obj-y) $(trace-obj-y) $(block-obj-y) $(qobject-obj-y) $(version-obj-y) qemu-timer-common.o
  
 -qemu-io$(EXESUF): qemu-io.o cmd.o qemu-tool.o qemu-error.o $(trace-obj-y) $(block-obj-y) $(qobject-obj-y) $(version-obj-y) qemu-timer-common.o
 +qemu-io$(EXESUF): qemu-io.o cmd.o qemu-tool.o qemu-error.o $(oslib-obj-y) $(trace-obj-y) $(block-obj-y) $(qobject-obj-y) $(version-obj-y) qemu-timer-common.o
  
  qemu-img-cmds.h: $(SRC_PATH)/qemu-img-cmds.hx
        $(call quiet-command,sh $(SRC_PATH)/hxtool -h < $< > $@,"  GEN   $@")
  
  check-qint.o check-qstring.o check-qdict.o check-qlist.o check-qfloat.o check-qjson.o: $(GENERATED_HEADERS)
  
 -check-qint: check-qint.o qint.o qemu-malloc.o
 -check-qstring: check-qstring.o qstring.o qemu-malloc.o
 -check-qdict: check-qdict.o qdict.o qfloat.o qint.o qstring.o qbool.o qemu-malloc.o qlist.o
 -check-qlist: check-qlist.o qlist.o qint.o qemu-malloc.o
 -check-qfloat: check-qfloat.o qfloat.o qemu-malloc.o
 -check-qjson: check-qjson.o qfloat.o qint.o qdict.o qstring.o qlist.o qbool.o qjson.o json-streamer.o json-lexer.o json-parser.o qemu-malloc.o
 +check-qint: check-qint.o qint.o qemu-malloc.o $(trace-obj-y)
 +check-qstring: check-qstring.o qstring.o qemu-malloc.o $(trace-obj-y)
 +check-qdict: check-qdict.o qdict.o qfloat.o qint.o qstring.o qbool.o qemu-malloc.o qlist.o $(trace-obj-y)
 +check-qlist: check-qlist.o qlist.o qint.o qemu-malloc.o $(trace-obj-y)
 +check-qfloat: check-qfloat.o qfloat.o qemu-malloc.o $(trace-obj-y)
 +check-qjson: check-qjson.o qfloat.o qint.o qdict.o qstring.o qlist.o qbool.o qjson.o json-streamer.o json-lexer.o json-parser.o qemu-malloc.o $(trace-obj-y)
  
  clean:
  # avoid old build problems by removing potentially incorrect old files
        rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h
+       rm -f qemu-options.def
        rm -f *.o *.d *.a $(TOOLS) TAGS cscope.* *.pod *~ */*~
        rm -f slirp/*.o slirp/*.d audio/*.o audio/*.d block/*.o block/*.d net/*.o net/*.d fsdev/*.o fsdev/*.d ui/*.o ui/*.d
        rm -f qemu-img-cmds.h
        $(MAKE) -C tests clean
        for d in $(ALL_SUBDIRS) libhw32 libhw64 libuser libdis libdis-user; do \
        if test -d $$d; then $(MAKE) -C $$d $@ || exit 1; fi; \
+       rm -f $$d/qemu-options.def; \
          done
  
  distclean: clean
        rm -f config-host.mak config-host.h* config-host.ld $(DOCS) qemu-options.texi qemu-img-cmds.texi qemu-monitor.texi
-       rm -f qemu-options.def
        rm -f config-all-devices.mak
        rm -f roms/seabios/config.mak roms/vgabios/config.mak
        rm -f qemu-doc.info qemu-doc.aux qemu-doc.cp qemu-doc.dvi qemu-doc.fn qemu-doc.info qemu-doc.ky qemu-doc.log qemu-doc.pdf qemu-doc.pg qemu-doc.toc qemu-doc.tp qemu-doc.vr
diff --combined Makefile.objs
index 0f9142f85e92e2f8845bf6f629ffce1812f893ba,702569f67331e24416b925907b86cd259177083d..faf485ed1bcae3b16fa49c2f3d658057e50560c5
@@@ -4,17 -4,11 +4,17 @@@ qobject-obj-y = qint.o qstring.o qdict.
  qobject-obj-y += qjson.o json-lexer.o json-streamer.o json-parser.o
  qobject-obj-y += qerror.o
  
 +#######################################################################
 +# oslib-obj-y is code depending on the OS (win32 vs posix)
 +oslib-obj-y = osdep.o
 +oslib-obj-$(CONFIG_WIN32) += oslib-win32.o
 +oslib-obj-$(CONFIG_POSIX) += oslib-posix.o
 +
  #######################################################################
  # block-obj-y is code used by both qemu system emulation and qemu-img
  
  block-obj-y = cutils.o cache-utils.o qemu-malloc.o qemu-option.o module.o
 -block-obj-y += nbd.o block.o aio.o aes.o osdep.o qemu-config.o
 +block-obj-y += nbd.o block.o aio.o aes.o qemu-config.o
  block-obj-$(CONFIG_POSIX) += posix-aio-compat.o
  block-obj-$(CONFIG_LINUX_AIO) += linux-aio.o
  
@@@ -56,7 -50,6 +56,7 @@@ common-obj-y += $(net-obj-y
  common-obj-y += $(qobject-obj-y)
  common-obj-$(CONFIG_LINUX) += $(fsdev-obj-$(CONFIG_LINUX))
  common-obj-y += readline.o console.o cursor.o async.o qemu-error.o
 +common-obj-y += $(oslib-obj-y)
  common-obj-$(CONFIG_WIN32) += os-win32.o
  common-obj-$(CONFIG_POSIX) += os-posix.o
  
@@@ -159,7 -152,8 +159,8 @@@ user-obj-y += cutils.o cache-utils.
  hw-obj-y =
  hw-obj-y += vl.o loader.o
  hw-obj-y += virtio.o virtio-console.o
- hw-obj-y += fw_cfg.o pci.o pci_host.o pcie_host.o
+ hw-obj-y += fw_cfg.o pci.o pci_host.o pcie_host.o pci_bridge.o
+ hw-obj-y += ioh3420.o xio3130_upstream.o xio3130_downstream.o
  hw-obj-y += watchdog.o
  hw-obj-$(CONFIG_ISA_MMIO) += isa_mmio.o
  hw-obj-$(CONFIG_ECC) += ecc.o
@@@ -206,7 -200,8 +207,8 @@@ hw-obj-$(CONFIG_PIIX4) += piix4.
  # PCI watchdog devices
  hw-obj-y += wdt_i6300esb.o
  
- hw-obj-y += msix.o
+ hw-obj-y += pcie.o pcie_port.o
+ hw-obj-y += msix.o msi.o
  
  # PCI network cards
  hw-obj-y += ne2000.o
@@@ -253,7 -248,6 +255,7 @@@ sound-obj-$(CONFIG_AC97) += ac97.
  sound-obj-$(CONFIG_ADLIB) += fmopl.o adlib.o
  sound-obj-$(CONFIG_GUS) += gus.o gusemu_hal.o gusemu_mixer.o
  sound-obj-$(CONFIG_CS4231A) += cs4231a.o
 +sound-obj-$(CONFIG_HDA) += intel-hda.o hda-audio.o
  
  adlib.o fmopl.o: QEMU_CFLAGS += -DBUILD_Y8950=0
  hw-obj-$(CONFIG_SOUND) += $(sound-obj-y)
@@@ -293,10 -287,3 +295,3 @@@ vl.o: QEMU_CFLAGS+=$(GPROF_CFLAGS
  
  vl.o: QEMU_CFLAGS+=$(SDL_CFLAGS)
  
- vl.o: qemu-options.def
- os-posix.o: qemu-options.def
- os-win32.o: qemu-options.def
- qemu-options.def: $(SRC_PATH)/qemu-options.hx
-       $(call quiet-command,sh $(SRC_PATH)/hxtool -h < $< > $@,"  GEN   $(TARGET_DIR)$@")
diff --combined arch_init.c
index cea3c8b1cbd1e23e65a32430cd4c9d4432de206c,4caadd0c0acee6e9383a01222e923b7e80d386c2..44869255efbbdab0b550ee1ec646c051caf56044
@@@ -390,6 -390,9 +390,9 @@@ int ram_load(QEMUFile *f, void *opaque
                  host = qemu_get_ram_ptr(addr);
              else
                  host = host_from_stream_offset(f, addr, flags);
+             if (!host) {
+                 return -EINVAL;
+             }
  
              ch = qemu_get_byte(f);
              memset(host, ch, TARGET_PAGE_SIZE);
@@@ -499,16 -502,6 +502,16 @@@ struct soundhw soundhw[] = 
      },
  #endif
  
 +#ifdef CONFIG_HDA
 +    {
 +        "hda",
 +        "Intel HD Audio",
 +        0,
 +        0,
 +        { .init_pci = intel_hda_and_codec_init }
 +    },
 +#endif
 +
  #endif /* HAS_AUDIO_CHOICE */
  
      { NULL, NULL, 0, 0, { NULL } }
diff --combined qemu-common.h
index 5a18ca56b53ba57a5b684b0dbcc5bba094229d74,2498769efac34133300ae27a81b864555c603154..21fc3a5308f5beca7b0ed1f2a5e2e35069bfe095
@@@ -81,9 -81,6 +81,9 @@@ struct iovec 
  #define GCC_FMT_ATTR(n, m)
  #endif
  
 +typedef int (*fprintf_function)(FILE *f, const char *fmt, ...)
 +    GCC_FMT_ATTR(2, 3);
 +
  #ifdef _WIN32
  #define fsync _commit
  #define lseek _lseeki64
@@@ -170,12 -167,6 +170,12 @@@ const char *path(const char *pathname)
  #define qemu_isascii(c)               isascii((unsigned char)(c))
  #define qemu_toascii(c)               toascii((unsigned char)(c))
  
 +#ifdef _WIN32
 +/* ffs() in oslib-win32.c for WIN32, strings.h for the rest of the world */
 +int ffs(int i);
 +#endif
 +
 +void *qemu_oom_check(void *ptr);
  void *qemu_malloc(size_t size);
  void *qemu_realloc(void *ptr, size_t size);
  void *qemu_mallocz(size_t size);
@@@ -237,6 -228,10 +237,10 @@@ typedef struct PCIHostState PCIHostStat
  typedef struct PCIExpressHost PCIExpressHost;
  typedef struct PCIBus PCIBus;
  typedef struct PCIDevice PCIDevice;
+ typedef struct PCIExpressDevice PCIExpressDevice;
+ typedef struct PCIBridge PCIBridge;
+ typedef struct PCIEPort PCIEPort;
+ typedef struct PCIESlot PCIESlot;
  typedef struct SerialState SerialState;
  typedef struct IRQState *qemu_irq;
  typedef struct PCMCIACardState PCMCIACardState;
@@@ -318,30 -313,6 +322,30 @@@ static inline uint8_t from_bcd(uint8_t 
      return ((val >> 4) * 10) + (val & 0x0f);
  }
  
 +/* compute with 96 bit intermediate result: (a*b)/c */
 +static inline uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c)
 +{
 +    union {
 +        uint64_t ll;
 +        struct {
 +#ifdef HOST_WORDS_BIGENDIAN
 +            uint32_t high, low;
 +#else
 +            uint32_t low, high;
 +#endif
 +        } l;
 +    } u, res;
 +    uint64_t rl, rh;
 +
 +    u.ll = a;
 +    rl = (uint64_t)u.l.low * (uint64_t)b;
 +    rh = (uint64_t)u.l.high * (uint64_t)b;
 +    rh += (rl >> 32);
 +    res.l.high = rh / c;
 +    res.l.low = (((rh % c) << 32) + (rl & 0xffffffff)) / c;
 +    return res.ll;
 +}
 +
  #include "module.h"
  
  #endif