Misc HW patch queue
- Restrict probe_access*() functions to TCG (Phil) - Extract do_invalidate_device_tlb from vtd_process_device_iotlb_desc (Clément) - Fixes in Loongson IPI model (Bibo & Phil) - Make docs/interop/firmware.json compatible with qapi-gen.py script (Thomas) - Correct MPC I2C MMIO region size (Zoltan) - Remove useless cast in Loongson3 Virt machine (Yao) - Various uses of range overlap API (Yao) - Use ERRP_GUARD macro in nubus_virtio_mmio_realize (Zhao) - Use DMA memory API in Goldfish UART model (Phil) - Expose fifo8_pop_buf and introduce fifo8_drop (Phil) - MAINTAINERS updates (Zhao, Phil) -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEE+qvnXhKRciHc/Wuy4+MsLN6twN4FAmagFF8ACgkQ4+MsLN6t wN5bKg//f5TwUhsy2ff0FJpHheDOj/9Gc2nZ1U/Fp0E5N3sz3A7MGp91wye6Xwi3 XG34YN9LK1AVzuCdrEEs5Uaxs1ZS1R2mV+fZaGHwYYxPDdnXxGyp/2Q0eyRxzbcN zxE2hWscYSZbPVEru4HvZJKfp4XnE1cqA78fJKMAdtq0IPq38tmQNRlJ+gWD9dC6 ZUHXPFf3DnucvVuwqb0JYO/E+uJpcTtgR6pc09Xtv/HFgMiS0vKZ1I/6LChqAUw9 eLMpD/5V2naemVadJe98/dL7gIUnhB8GTjsb4ioblG59AO/uojutwjBSQvFxBUUw U5lX9OSn20ouwcGiqimsz+5ziwhCG0R6r1zeQJFqUxrpZSscq7NQp9ygbvirm+wS edLc8yTPf4MtYOihzPP9jLPcXPZjEV64gSnJISDDFYWANCrysX3suaFEOuVYPl+s ZgQYRVSSYOYHgNqBSRkPKKVUxskSQiqLY3SfGJG4EA9Ktt5lD1cLCXQxhdsqphFm Ws3zkrVVL0EKl4v/4MtCgITIIctN1ZJE9u3oPJjASqSvK6EebFqAJkc2SidzKHz0 F3iYX2AheWNHCQ3HFu023EvFryjlxYk95fs2f6Uj2a9yVbi813qsvd3gcZ8t0kTT +dmQwpu1MxjzZnA6838R6OCMnC+UpMPqQh3dPkU/5AF2fc3NnN8= =J/I2 -----END PGP SIGNATURE----- Merge tag 'hw-misc-20240723' of https://github.com/philmd/qemu into staging Misc HW patch queue - Restrict probe_access*() functions to TCG (Phil) - Extract do_invalidate_device_tlb from vtd_process_device_iotlb_desc (Clément) - Fixes in Loongson IPI model (Bibo & Phil) - Make docs/interop/firmware.json compatible with qapi-gen.py script (Thomas) - Correct MPC I2C MMIO region size (Zoltan) - Remove useless cast in Loongson3 Virt machine (Yao) - Various uses of range overlap API (Yao) - Use ERRP_GUARD macro in nubus_virtio_mmio_realize (Zhao) - Use DMA memory API in Goldfish UART model (Phil) - Expose fifo8_pop_buf and introduce fifo8_drop (Phil) - MAINTAINERS updates (Zhao, Phil) # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCAAdFiEE+qvnXhKRciHc/Wuy4+MsLN6twN4FAmagFF8ACgkQ4+MsLN6t # wN5bKg//f5TwUhsy2ff0FJpHheDOj/9Gc2nZ1U/Fp0E5N3sz3A7MGp91wye6Xwi3 # XG34YN9LK1AVzuCdrEEs5Uaxs1ZS1R2mV+fZaGHwYYxPDdnXxGyp/2Q0eyRxzbcN # zxE2hWscYSZbPVEru4HvZJKfp4XnE1cqA78fJKMAdtq0IPq38tmQNRlJ+gWD9dC6 # ZUHXPFf3DnucvVuwqb0JYO/E+uJpcTtgR6pc09Xtv/HFgMiS0vKZ1I/6LChqAUw9 # eLMpD/5V2naemVadJe98/dL7gIUnhB8GTjsb4ioblG59AO/uojutwjBSQvFxBUUw # U5lX9OSn20ouwcGiqimsz+5ziwhCG0R6r1zeQJFqUxrpZSscq7NQp9ygbvirm+wS # edLc8yTPf4MtYOihzPP9jLPcXPZjEV64gSnJISDDFYWANCrysX3suaFEOuVYPl+s # ZgQYRVSSYOYHgNqBSRkPKKVUxskSQiqLY3SfGJG4EA9Ktt5lD1cLCXQxhdsqphFm # Ws3zkrVVL0EKl4v/4MtCgITIIctN1ZJE9u3oPJjASqSvK6EebFqAJkc2SidzKHz0 # F3iYX2AheWNHCQ3HFu023EvFryjlxYk95fs2f6Uj2a9yVbi813qsvd3gcZ8t0kTT # +dmQwpu1MxjzZnA6838R6OCMnC+UpMPqQh3dPkU/5AF2fc3NnN8= # =J/I2 # -----END PGP SIGNATURE----- # gpg: Signature made Wed 24 Jul 2024 06:36:47 AM AEST # gpg: using RSA key FAABE75E12917221DCFD6BB2E3E32C2CDEADC0DE # gpg: Good signature from "Philippe Mathieu-Daudé (F4BUG) <f4bug@amsat.org>" [full] * tag 'hw-misc-20240723' of https://github.com/philmd/qemu: (28 commits) MAINTAINERS: Add myself as a reviewer of machine core MAINTAINERS: Cover guest-agent in QAPI schema util/fifo8: Introduce fifo8_drop() util/fifo8: Expose fifo8_pop_buf() util/fifo8: Rename fifo8_pop_buf() -> fifo8_pop_bufptr() util/fifo8: Rename fifo8_peek_buf() -> fifo8_peek_bufptr() util/fifo8: Use fifo8_reset() in fifo8_create() util/fifo8: Fix style chardev/char-fe: Document returned value on error hw/char/goldfish: Use DMA memory API hw/nubus/virtio-mmio: Fix missing ERRP_GUARD() in realize handler dump: make range overlap check more readable crypto/block-luks: make range overlap check more readable system/memory_mapping: make range overlap check more readable sparc/ldst_helper: make range overlap check more readable cxl/mailbox: make range overlap check more readable util/range: Make ranges_overlap() return bool hw/mips/loongson3_virt: remove useless type cast hw/i2c/mpc_i2c: Fix mmio region size docs/interop/firmware.json: convert "Example" section ... Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
commit
6410f877f5
26 changed files with 226 additions and 161 deletions
|
|
@ -228,6 +228,7 @@ guint qemu_chr_fe_add_watch(CharBackend *be, GIOCondition cond,
|
|||
* is thread-safe.
|
||||
*
|
||||
* Returns: the number of bytes consumed (0 if no associated Chardev)
|
||||
* or -1 on error.
|
||||
*/
|
||||
int qemu_chr_fe_write(CharBackend *be, const uint8_t *buf, int len);
|
||||
|
||||
|
|
@ -242,6 +243,7 @@ int qemu_chr_fe_write(CharBackend *be, const uint8_t *buf, int len);
|
|||
* attempted to be written. This function is thread-safe.
|
||||
*
|
||||
* Returns: the number of bytes consumed (0 if no associated Chardev)
|
||||
* or -1 on error.
|
||||
*/
|
||||
int qemu_chr_fe_write_all(CharBackend *be, const uint8_t *buf, int len);
|
||||
|
||||
|
|
@ -253,6 +255,7 @@ int qemu_chr_fe_write_all(CharBackend *be, const uint8_t *buf, int len);
|
|||
* Read data to a buffer from the back end.
|
||||
*
|
||||
* Returns: the number of bytes read (0 if no associated Chardev)
|
||||
* or -1 on error.
|
||||
*/
|
||||
int qemu_chr_fe_read_all(CharBackend *be, uint8_t *buf, int len);
|
||||
|
||||
|
|
|
|||
|
|
@ -301,6 +301,9 @@ static inline void tlb_flush_range_by_mmuidx_all_cpus_synced(CPUState *cpu,
|
|||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_TCG)
|
||||
|
||||
/**
|
||||
* probe_access:
|
||||
* @env: CPUArchState
|
||||
|
|
@ -357,6 +360,7 @@ int probe_access_flags(CPUArchState *env, vaddr addr, int size,
|
|||
bool nonfault, void **phost, uintptr_t retaddr);
|
||||
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
|
||||
/**
|
||||
* probe_access_full:
|
||||
* Like probe_access_flags, except also return into @pfull.
|
||||
|
|
@ -392,7 +396,8 @@ int probe_access_full_mmu(CPUArchState *env, vaddr addr, int size,
|
|||
MMUAccessType access_type, int mmu_idx,
|
||||
void **phost, CPUTLBEntryFull **pfull);
|
||||
|
||||
#endif
|
||||
#endif /* !CONFIG_USER_ONLY */
|
||||
#endif /* CONFIG_TCG */
|
||||
|
||||
static inline tb_page_addr_t tb_page_addr0(const TranslationBlock *tb)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -15,10 +15,9 @@ typedef struct {
|
|||
* @fifo: struct Fifo8 to initialise with new FIFO
|
||||
* @capacity: capacity of the newly created FIFO
|
||||
*
|
||||
* Create a FIFO of the specified size. Clients should call fifo8_destroy()
|
||||
* Create a FIFO of the specified capacity. Clients should call fifo8_destroy()
|
||||
* when finished using the fifo. The FIFO is initially empty.
|
||||
*/
|
||||
|
||||
void fifo8_create(Fifo8 *fifo, uint32_t capacity);
|
||||
|
||||
/**
|
||||
|
|
@ -26,9 +25,8 @@ void fifo8_create(Fifo8 *fifo, uint32_t capacity);
|
|||
* @fifo: FIFO to cleanup
|
||||
*
|
||||
* Cleanup a FIFO created with fifo8_create(). Frees memory created for FIFO
|
||||
*storage. The FIFO is no longer usable after this has been called.
|
||||
* storage. The FIFO is no longer usable after this has been called.
|
||||
*/
|
||||
|
||||
void fifo8_destroy(Fifo8 *fifo);
|
||||
|
||||
/**
|
||||
|
|
@ -39,7 +37,6 @@ void fifo8_destroy(Fifo8 *fifo);
|
|||
* Push a data byte to the FIFO. Behaviour is undefined if the FIFO is full.
|
||||
* Clients are responsible for checking for fullness using fifo8_is_full().
|
||||
*/
|
||||
|
||||
void fifo8_push(Fifo8 *fifo, uint8_t data);
|
||||
|
||||
/**
|
||||
|
|
@ -52,7 +49,6 @@ void fifo8_push(Fifo8 *fifo, uint8_t data);
|
|||
* Clients are responsible for checking the space left in the FIFO using
|
||||
* fifo8_num_free().
|
||||
*/
|
||||
|
||||
void fifo8_push_all(Fifo8 *fifo, const uint8_t *data, uint32_t num);
|
||||
|
||||
/**
|
||||
|
|
@ -64,25 +60,40 @@ void fifo8_push_all(Fifo8 *fifo, const uint8_t *data, uint32_t num);
|
|||
*
|
||||
* Returns: The popped data byte.
|
||||
*/
|
||||
|
||||
uint8_t fifo8_pop(Fifo8 *fifo);
|
||||
|
||||
/**
|
||||
* fifo8_pop_buf:
|
||||
* @fifo: FIFO to pop from
|
||||
* @dest: the buffer to write the data into (can be NULL)
|
||||
* @destlen: size of @dest and maximum number of bytes to pop
|
||||
*
|
||||
* Pop a number of elements from the FIFO up to a maximum of @destlen.
|
||||
* The popped data is copied into the @dest buffer.
|
||||
* Care is taken when the data wraps around in the ring buffer.
|
||||
*
|
||||
* Returns: number of bytes popped.
|
||||
*/
|
||||
uint32_t fifo8_pop_buf(Fifo8 *fifo, uint8_t *dest, uint32_t destlen);
|
||||
|
||||
/**
|
||||
* fifo8_pop_bufptr:
|
||||
* @fifo: FIFO to pop from
|
||||
* @max: maximum number of bytes to pop
|
||||
* @numptr: pointer filled with number of bytes returned (can be NULL)
|
||||
*
|
||||
* Pop a number of elements from the FIFO up to a maximum of max. The buffer
|
||||
* New code should prefer to use fifo8_pop_buf() instead of fifo8_pop_bufptr().
|
||||
*
|
||||
* Pop a number of elements from the FIFO up to a maximum of @max. The buffer
|
||||
* containing the popped data is returned. This buffer points directly into
|
||||
* the FIFO backing store and data is invalidated once any of the fifo8_* APIs
|
||||
* are called on the FIFO.
|
||||
* the internal FIFO backing store and data (without checking for overflow!)
|
||||
* and is invalidated once any of the fifo8_* APIs are called on the FIFO.
|
||||
*
|
||||
* The function may return fewer bytes than requested when the data wraps
|
||||
* around in the ring buffer; in this case only a contiguous part of the data
|
||||
* is returned.
|
||||
*
|
||||
* The number of valid bytes returned is populated in *numptr; will always
|
||||
* The number of valid bytes returned is populated in *@numptr; will always
|
||||
* return at least 1 byte. max must not be 0 or greater than the number of
|
||||
* bytes in the FIFO.
|
||||
*
|
||||
|
|
@ -91,15 +102,15 @@ uint8_t fifo8_pop(Fifo8 *fifo);
|
|||
*
|
||||
* Returns: A pointer to popped data.
|
||||
*/
|
||||
const uint8_t *fifo8_pop_buf(Fifo8 *fifo, uint32_t max, uint32_t *numptr);
|
||||
const uint8_t *fifo8_pop_bufptr(Fifo8 *fifo, uint32_t max, uint32_t *numptr);
|
||||
|
||||
/**
|
||||
* fifo8_peek_buf: read upto max bytes from the fifo
|
||||
* fifo8_peek_bufptr: read upto max bytes from the fifo
|
||||
* @fifo: FIFO to read from
|
||||
* @max: maximum number of bytes to peek
|
||||
* @numptr: pointer filled with number of bytes returned (can be NULL)
|
||||
*
|
||||
* Peek into a number of elements from the FIFO up to a maximum of max.
|
||||
* Peek into a number of elements from the FIFO up to a maximum of @max.
|
||||
* The buffer containing the data peeked into is returned. This buffer points
|
||||
* directly into the FIFO backing store. Since data is invalidated once any
|
||||
* of the fifo8_* APIs are called on the FIFO, it is the caller responsibility
|
||||
|
|
@ -109,7 +120,7 @@ const uint8_t *fifo8_pop_buf(Fifo8 *fifo, uint32_t max, uint32_t *numptr);
|
|||
* around in the ring buffer; in this case only a contiguous part of the data
|
||||
* is returned.
|
||||
*
|
||||
* The number of valid bytes returned is populated in *numptr; will always
|
||||
* The number of valid bytes returned is populated in *@numptr; will always
|
||||
* return at least 1 byte. max must not be 0 or greater than the number of
|
||||
* bytes in the FIFO.
|
||||
*
|
||||
|
|
@ -118,7 +129,16 @@ const uint8_t *fifo8_pop_buf(Fifo8 *fifo, uint32_t max, uint32_t *numptr);
|
|||
*
|
||||
* Returns: A pointer to peekable data.
|
||||
*/
|
||||
const uint8_t *fifo8_peek_buf(Fifo8 *fifo, uint32_t max, uint32_t *numptr);
|
||||
const uint8_t *fifo8_peek_bufptr(Fifo8 *fifo, uint32_t max, uint32_t *numptr);
|
||||
|
||||
/**
|
||||
* fifo8_drop:
|
||||
* @fifo: FIFO to drop bytes
|
||||
* @len: number of bytes to drop
|
||||
*
|
||||
* Drop (consume) bytes from a FIFO.
|
||||
*/
|
||||
void fifo8_drop(Fifo8 *fifo, uint32_t len);
|
||||
|
||||
/**
|
||||
* fifo8_reset:
|
||||
|
|
@ -126,7 +146,6 @@ const uint8_t *fifo8_peek_buf(Fifo8 *fifo, uint32_t max, uint32_t *numptr);
|
|||
*
|
||||
* Reset a FIFO. All data is discarded and the FIFO is emptied.
|
||||
*/
|
||||
|
||||
void fifo8_reset(Fifo8 *fifo);
|
||||
|
||||
/**
|
||||
|
|
@ -137,7 +156,6 @@ void fifo8_reset(Fifo8 *fifo);
|
|||
*
|
||||
* Returns: True if the fifo is empty, false otherwise.
|
||||
*/
|
||||
|
||||
bool fifo8_is_empty(Fifo8 *fifo);
|
||||
|
||||
/**
|
||||
|
|
@ -148,7 +166,6 @@ bool fifo8_is_empty(Fifo8 *fifo);
|
|||
*
|
||||
* Returns: True if the fifo is full, false otherwise.
|
||||
*/
|
||||
|
||||
bool fifo8_is_full(Fifo8 *fifo);
|
||||
|
||||
/**
|
||||
|
|
@ -159,7 +176,6 @@ bool fifo8_is_full(Fifo8 *fifo);
|
|||
*
|
||||
* Returns: Number of free bytes.
|
||||
*/
|
||||
|
||||
uint32_t fifo8_num_free(Fifo8 *fifo);
|
||||
|
||||
/**
|
||||
|
|
@ -170,7 +186,6 @@ uint32_t fifo8_num_free(Fifo8 *fifo);
|
|||
*
|
||||
* Returns: Number of used bytes.
|
||||
*/
|
||||
|
||||
uint32_t fifo8_num_used(Fifo8 *fifo);
|
||||
|
||||
extern const VMStateDescription vmstate_fifo8;
|
||||
|
|
|
|||
|
|
@ -210,8 +210,8 @@ static inline int range_covers_byte(uint64_t offset, uint64_t len,
|
|||
|
||||
/* Check whether 2 given ranges overlap.
|
||||
* Undefined if ranges that wrap around 0. */
|
||||
static inline int ranges_overlap(uint64_t first1, uint64_t len1,
|
||||
uint64_t first2, uint64_t len2)
|
||||
static inline bool ranges_overlap(uint64_t first1, uint64_t len1,
|
||||
uint64_t first2, uint64_t len2)
|
||||
{
|
||||
uint64_t last1 = range_get_last(first1, len1);
|
||||
uint64_t last2 = range_get_last(first2, len2);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue