Age | Commit message (Collapse) | Author |
|
sysbus_init_mmio_cb() uses the destructive IO_MEM_UNASSIGNED to remove a
region. Provide an alternative that calls an unmap callback, so the removal
may be done non-destructively.
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Clumsy due to the lack of clipping support, needed for
changing exposed ram size.
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Assuming that mmcfg size cannot change at runtime.
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Somewhat clumsy since it needs a variable sized region.
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Avoid #include hell.
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Improvements to the libtool support in QEMU. Replace hard coded
libtool in the infrastructure with $(LIBTOOL) and allow
overriding the libtool binary used via the configure
script.
Reviewed-by: Andreas F=E4rber <andreas.faerber@web.de>
Signed-off-by: Brad Smith <brad@comstyle.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
SetFilePointer returns INVALID_SET_FILE_POINTER when it fails.
In addition, GetLastError must be checked.
The first call of SetFilePointer did not use INVALID_SET_FILE_POINTER,
the second call used wrong error handling.
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Without this change, when using -Wl,--as-needed with GNU linker, the
libraries would be discarded.
Signed-off-by: Diego Elio Pettenò <flameeyes@flameeyes.eu>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Fix code format to make checkpatch.pl happy.
Signed-off-by: Robert Wang <wdongxu@linux.vnet.ibm.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Some guests will use the standard MII status register
to verify link state. They will not notice link changes
unless this register is updated.
Verified with Linux 3.0 and Windows XP guests.
Without this patch, ethtool will report speed and duplex as
unknown when the link is down, but still report the link as
up. This is because the Linux e1000 driver checks the
mac_reg[STATUS] register link state before it checks speed
and duplex, but uses the phy_reg[PHY_STATUS] register for
the actual link state check. Fix by updating both registers
on link state changes.
Linux guest before:
(qemu) set_link e1000.0 off
kvm-sid:~# ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Speed: Unknown!
Duplex: Unknown! (255)
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
MDI-X: Unknown
Supports Wake-on: umbg
Wake-on: d
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes
(qemu) set_link e1000.0 on
Linux guest after:
(qemu) set_link e1000.0 off
[ 63.384221] e1000: eth0 NIC Link is Down
kvm-sid:~# ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Speed: Unknown!
Duplex: Unknown! (255)
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
MDI-X: Unknown
Supports Wake-on: umbg
Wake-on: d
Current message level: 0x00000007 (7)
drv probe link
Link detected: no
(qemu) set_link e1000.0 on
[ 84.304582] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
Signed-off-by: Bjørn Mork <bjorn@mork.no>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
It's dead code.
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Signed-off-by: malc <av1474@comtv.ru>
|
|
|
|
Signed-off-by: malc <av1474@comtv.ru>
|
|
Signed-off-by: malc <av1474@comtv.ru>
|
|
|
|
This patch tries to cull any uneeded library dependencies from the guest
agent to improve portability across various distros. We do so by being
as explicit as possible about in-tree dependencies rather than relying
on existing *-obj-y targets, and by manually setting LIBS for the
qemu-ga target to avoid pulling in LIBS_TOOLS libraries discovered by
configure.
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
g_strcmp0 isn't in all version of glib 2.0, so don't use it to avoid
build breakage on older distros.
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
The memory API supports cracking wide accesses into narrower ones
when needed; but this was no implemented for the pio address space,
causing lsi53c895a's IO BAR to malfunction.
Fix by correctly cracking wide accesses when needed.
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
The memory API automatically cracks large reads and writes into smaller
ones when needed. Factor out this mechanism, which is now duplicated between
memory reads and memory writes, into a function.
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
|
|
Report from pahole on amd64 host:
struct M48t59State {
uint32_t type; /* 0 4 */
/* XXX 4 bytes hole, try to pack */
qemu_irq IRQ; /* 8 8 */
uint32_t io_base; /* 16 4 */
uint32_t size; /* 20 4 */
time_t time_offset; /* 24 8 */
time_t stop_time; /* 32 8 */
struct tm alarm; /* 40 56 */
/* --- cacheline 1 boundary (64 bytes) was 32 bytes ago --- */
struct QEMUTimer * alrm_timer; /* 96 8 */
struct QEMUTimer * wd_timer; /* 104 8 */
uint8_t lock; /* 112 1 */
/* XXX 1 byte hole, try to pack */
uint16_t addr; /* 114 2 */
/* XXX 4 bytes hole, try to pack */
uint8_t * buffer; /* 120 8 */
/* --- cacheline 2 boundary (128 bytes) --- */
/* size: 128, cachelines: 2 */
/* sum members: 119, holes: 3, sum holes: 9 */
}; /* definitions: 1 */
Fix by rearranging the structure to avoid padding.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
|
|
Edited report from pahole on amd64 host:
struct ChannelState {
...
ChnType type; /* 32 4 */
/* XXX 4 bytes hole, try to pack */
...
uint8_t rregs[16]; /* 66 16 */
/* XXX 2 bytes hole, try to pack */
...
/* size: 392, cachelines: 7 */
/* sum members: 382, holes: 2, sum holes: 6 */
/* padding: 4 */
/* last cacheline: 8 bytes */
}; /* definitions: 1 */
Fix by rearranging the structure to avoid padding.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
|
|
Edited report from pahole on amd64 host:
struct FDCtrl {
uint8_t version; /* 0 1 */
/* XXX 7 bytes hole, try to pack */
qemu_irq irq; /* 8 8 */
int dma_chann; /* 16 4 */
/* XXX 4 bytes hole, try to pack */
...
uint8_t status2; /* 42 1 */
/* XXX 5 bytes hole, try to pack */
uint8_t * fifo; /* 48 8 */
...
uint8_t pwrd; /* 76 1 */
/* XXX 3 bytes hole, try to pack */
int sun4m; /* 80 4 */
uint8_t num_floppies; /* 84 1 */
/* XXX 3 bytes hole, try to pack */
FDrive drives[2]; /* 88 64 */
/* --- cacheline 2 boundary (128 bytes) was 24 bytes ago --- */
int reset_sensei; /* 152 4 */
/* size: 160, cachelines: 3 */
/* sum members: 134, holes: 5, sum holes: 22 */
/* padding: 4 */
/* last cacheline: 32 bytes */
}; /* definitions: 1 */
Fix by rearranging the structure to avoid padding.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
|
|
Edited report from pahole on amd64 host:
struct PCNetState_st {
...
uint16_t bcr[32]; /* 340 64 */
/* XXX 4 bytes hole, try to pack */
...
int tx_busy; /* 4520 4 */
/* XXX 4 bytes hole, try to pack */
qemu_irq irq; /* 4528 8 */
void (*phys_mem_read)(void *, target_phys_addr_t, uint8_t *, int, int); /* 4536 8 */
/* --- cacheline 71 boundary (4544 bytes) --- */
void (*phys_mem_write)(void *, target_phys_addr_t, uint8_t *, int, int); /* 4544 8 */
void * dma_opaque; /* 4552 8 */
int looptest; /* 4560 4 */
/* size: 4568, cachelines: 72 */
/* sum members: 4556, holes: 2, sum holes: 8 */
/* padding: 4 */
/* last cacheline: 24 bytes */
}; /* definitions: 2 */
Fix by rearranging the structure to avoid padding.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
|
|
Report from pahole on amd64 host:
struct ESPState {
SysBusDevice busdev; /* 0 5648 */
/* --- cacheline 88 boundary (5632 bytes) was 16 bytes ago --- */
uint32_t it_shift; /* 5648 4 */
/* XXX 4 bytes hole, try to pack */
qemu_irq irq; /* 5656 8 */
uint8_t rregs[16]; /* 5664 16 */
uint8_t wregs[16]; /* 5680 16 */
/* --- cacheline 89 boundary (5696 bytes) --- */
int32_t ti_size; /* 5696 4 */
uint32_t ti_rptr; /* 5700 4 */
uint32_t ti_wptr; /* 5704 4 */
uint8_t ti_buf[16]; /* 5708 16 */
uint32_t status; /* 5724 4 */
uint32_t dma; /* 5728 4 */
/* XXX 4 bytes hole, try to pack */
SCSIBus bus; /* 5736 2120 */
/* --- cacheline 122 boundary (7808 bytes) was 48 bytes ago --- */
SCSIDevice * current_dev; /* 7856 8 */
SCSIRequest * current_req; /* 7864 8 */
/* --- cacheline 123 boundary (7872 bytes) --- */
uint8_t cmdbuf[16]; /* 7872 16 */
uint32_t cmdlen; /* 7888 4 */
uint32_t do_cmd; /* 7892 4 */
uint32_t dma_left; /* 7896 4 */
uint32_t dma_counter; /* 7900 4 */
uint8_t * async_buf; /* 7904 8 */
uint32_t async_len; /* 7912 4 */
/* XXX 4 bytes hole, try to pack */
ESPDMAMemoryReadWriteFunc dma_memory_read; /* 7920 8 */
ESPDMAMemoryReadWriteFunc dma_memory_write; /* 7928 8 */
/* --- cacheline 124 boundary (7936 bytes) --- */
void * dma_opaque; /* 7936 8 */
int dma_enabled; /* 7944 4 */
/* XXX 4 bytes hole, try to pack */
void (*dma_cb)(ESPState *); /* 7952 8 */
/* size: 7960, cachelines: 125 */
/* sum members: 7944, holes: 4, sum holes: 16 */
/* last cacheline: 24 bytes */
}; /* definitions: 1 */
Fix by rearranging the structure to avoid padding.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
|
|
Edited report from pahole on amd64 host:
struct sun4c_hwdef {
...
uint8_t nvram_machine_id; /* 112 1 */
/* XXX 1 byte hole, try to pack */
...
/* size: 136, cachelines: 3 */
/* sum members: 135, holes: 1, sum holes: 1 */
/* last cacheline: 8 bytes */
}; /* definitions: 1 */
struct sun4d_hwdef {
...
uint8_t nvram_machine_id; /* 128 1 */
/* XXX 1 byte hole, try to pack */
...
/* size: 152, cachelines: 3 */
/* sum members: 151, holes: 1, sum holes: 1 */
/* last cacheline: 24 bytes */
}; /* definitions: 1 */
struct sun4m_hwdef {
...
uint8_t nvram_machine_id; /* 260 1 */
/* XXX 1 byte hole, try to pack */
uint16_t machine_id; /* 262 2 */
uint32_t iommu_version; /* 264 4 */
/* XXX 4 bytes hole, try to pack */
...
/* size: 288, cachelines: 5 */
/* sum members: 283, holes: 2, sum holes: 5 */
/* last cacheline: 32 bytes */
}; /* definitions: 1 */
Fix by rearranging the structures to avoid padding.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
|