50 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 2553d2d26a9d0f46386bf8c37d184567e5cede6c Mon Sep 17 00:00:00 2001
 | |
| From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
 | |
| Date: Tue, 10 Jun 2025 13:36:45 +0100
 | |
| Subject: [PATCH] hw/audio/ac97: skip automatic zero-init of large arrays
 | |
| MIME-Version: 1.0
 | |
| Content-Type: text/plain; charset=UTF-8
 | |
| Content-Transfer-Encoding: 8bit
 | |
| 
 | |
| The 'read_audio' & 'write_audio' methods have a 4k byte array used
 | |
| for copying data between the audio backend and device. Skip the
 | |
| automatic zero-init of these arrays to eliminate the performance
 | |
| overhead in the I/O hot path.
 | |
| 
 | |
| The 'tmpbuf' array will be fully initialized when reading data from
 | |
| the audio backend and/or device memory.
 | |
| 
 | |
| Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
 | |
| Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
 | |
| Message-id: 20250610123709.835102-8-berrange@redhat.com
 | |
| Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
 | |
| ---
 | |
|  hw/audio/ac97.c | 4 ++--
 | |
|  1 file changed, 2 insertions(+), 2 deletions(-)
 | |
| 
 | |
| diff --git a/hw/audio/ac97.c b/hw/audio/ac97.c
 | |
| index 669a0463cc..eb7a847080 100644
 | |
| --- a/hw/audio/ac97.c
 | |
| +++ b/hw/audio/ac97.c
 | |
| @@ -886,7 +886,7 @@ static void nabm_writel(void *opaque, uint32_t addr, uint32_t val)
 | |
|  static int write_audio(AC97LinkState *s, AC97BusMasterRegs *r,
 | |
|                         int max, int *stop)
 | |
|  {
 | |
| -    uint8_t tmpbuf[4096];
 | |
| +    QEMU_UNINITIALIZED uint8_t tmpbuf[4096];
 | |
|      uint32_t addr = r->bd.addr;
 | |
|      uint32_t temp = r->picb << 1;
 | |
|      uint32_t written = 0;
 | |
| @@ -959,7 +959,7 @@ static void write_bup(AC97LinkState *s, int elapsed)
 | |
|  static int read_audio(AC97LinkState *s, AC97BusMasterRegs *r,
 | |
|                        int max, int *stop)
 | |
|  {
 | |
| -    uint8_t tmpbuf[4096];
 | |
| +    QEMU_UNINITIALIZED uint8_t tmpbuf[4096];
 | |
|      uint32_t addr = r->bd.addr;
 | |
|      uint32_t temp = r->picb << 1;
 | |
|      uint32_t nread = 0;
 | |
| -- 
 | |
| 2.47.3
 | |
| 
 |