From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-vk1-f175.google.com (mail-vk1-f175.google.com [209.85.221.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3854D58224 for ; Mon, 18 Mar 2024 21:12:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.175 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710796336; cv=none; b=RPDlm6OdlPzONpRU0YqOvdzsID3+1cFCxnyrChRkgMYY7XwJdpwdi5WwN5XJz08AxypIl8KYd1CLNg8udC9XDczZUCl7hzEQ+Vkm2vOjjYx4zfTZxJlrn7tneRlGaanyDEPIhClWImk9+QV998T3N/2pIX1d6QZE7oyca9mU4Ww= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710796336; c=relaxed/simple; bh=Vd+/OJG1k3W2zx/Ke8sEvYEtZJ9Sb1ah1U7QlBuW76M=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=srNEl743el97Nz/Zou/cHELJhPVJg+sA7HxtM+FIrpb1SM0rfJUWo8Ppz+TedTIp2xzDCuzPJx6TXuVtBeUl9Bly0p/8duG4iyWeBTynQy4P26PGxFKU4KIIwzHnssYP+/uRqA8he5BrEeVJqqW4OqIFZPGciSV1YbKS5SjNX1E= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=TYu/lLJ7; arc=none smtp.client-ip=209.85.221.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="TYu/lLJ7" Received: by mail-vk1-f175.google.com with SMTP id 71dfb90a1353d-4d44fb48077so650911e0c.0 for ; Mon, 18 Mar 2024 14:12:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1710796334; x=1711401134; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=jOmSWXBGJKbpv4KQjbyvpjiMj6pPHXaAxI1UbGjWR3A=; b=TYu/lLJ7BwcrB0vO5okNI+7RjJGl46+uIz96FQZMW3jW2zmKwDSLjMEKAGDoxffJAn NiXW/BFd0UUWj/Z8kOo33Fl0YdXpbYTQZ4JqHTbHy/20KrxxcX3CXCKCATS24c6d5V7d dMFVIIfCMZBukNfB3puKNVR/Xo+in9vSfxKLFJYPgr8NeLmbvmgWDDoPhJMdZGzEHEfP j84KxGgKA6wXGCtdvMXWuaEZICFehktI+ZMtua1tWXo2Q2CfzAfXoyZk9t3YDL/hCrr9 dNQTGdVEJBmq3X5rCqu3sNp94rhBM2FcZY2aF5VLt8jtjBz3MOegj9waWWfBqs2ut11d CbbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710796334; x=1711401134; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jOmSWXBGJKbpv4KQjbyvpjiMj6pPHXaAxI1UbGjWR3A=; b=rTy3I/lU2BOYAK3X3LEw48mKcxGoKT6h+wywwMOzNv28T9J+VLf8fwFjWvxUl0ZBoW E1SVne0GQdWDJ4a8Q8WAsOc4/4jV+G+GzWVR8soybMUT+Yjww7nc6wkOU0xeZSckjJLF oO0GYlFhNbc3czAbXe2lWSI5wkX4oCoX8yHDGljSaiRvjnfSWcy5JBD6daYUXeriUaTA 0X7t7chtswoQG9ZCAW90XzljwQ8VLXADYL0wITe7V3qlh1qCQ8odjeMgUUlBKZhdUxh3 oEKj7JqG4NNkjOqGzvMQyJ19/Gn/nP0ibXWqWA3qvlBRySAKDXnkDLDWBbmcUBZSNKsA OS/w== X-Forwarded-Encrypted: i=1; AJvYcCUB3W0OoZVqiNbdfVdxWDkmOIltzCHG1oYUiL2soB2pbYyEAgyC2iOfNev18KYoCbQTGGesQku7vemZ6ziXnUdGHJWLuiaj/Sw1Sps= X-Gm-Message-State: AOJu0YxwW9WA1ksxkLnSr+Bxu56exnpLtEC/L7u/r5w+bNOHK0sB2mKB HKdKN7fw56ps1D+CXQT0K94CfPPcyFAMU4k6j/pE04c4uc2RlnDaYOxpOp1q+8zEQjOoAd04RSa FVmHhh3znXXb1PEeCW48jePzwY0E= X-Google-Smtp-Source: AGHT+IEAhnFwrXMM6Rg9dK7wlk0KB/AmNzUGURp45Z+sDG85WK9MSZZSjGyY7ZzAgyJc2CGBxoRdPDSNyZeqvGrWC78= X-Received: by 2002:a1f:f401:0:b0:4d3:3446:6bcb with SMTP id s1-20020a1ff401000000b004d334466bcbmr320068vkh.16.1710796333894; Mon, 18 Mar 2024 14:12:13 -0700 (PDT) Precedence: bulk X-Mailing-List: linux-block@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: In-Reply-To: From: Daeho Jeong Date: Mon, 18 Mar 2024 14:12:02 -0700 Message-ID: Subject: Re: [f2fs-dev] [bug report]WARNING: CPU: 22 PID: 44011 at fs/iomap/iter.c:51 iomap_iter+0x32b observed with blktests zbd/010 To: Shinichiro Kawasaki Cc: Yi Zhang , linux-block , Jaegeuk Kim , Bart Van Assche , "linux-f2fs-devel@lists.sourceforge.net" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Mar 17, 2024 at 10:49=E2=80=AFPM Shinichiro Kawasaki via Linux-f2fs-devel wrote: > > I confirmed that the trigger commit is dbf8e63f48af as Yi reported. I too= k a > look in the commit, but it looks fine to me. So I thought the cause is no= t > in the commit diff. > > I found the WARN is printed when the f2fs is set up with multiple devices= , > and read requests are mapped to the very first block of the second device= in the > direct read path. In this case, f2fs_map_blocks() and f2fs_map_blocks_cac= hed() > modify map->m_pblk as the physical block address from each block device. = It > becomes zero when it is mapped to the first block of the device. However, > f2fs_iomap_begin() assumes that map->m_pblk is the physical block address= of the > whole f2fs, across the all block devices. It compares map->m_pblk against > NULL_ADDR =3D=3D 0, then go into the unexpected branch and sets the inval= id > iomap->length. The WARN catches the invalid iomap->length. > > This WARN is printed even for non-zoned block devices, by following steps= . > > - Create two (non-zoned) null_blk devices memory backed with 128MB size = each: > nullb0 and nullb1. > # mkfs.f2fs /dev/nullb0 -c /dev/nullb1 > # mount -t f2fs /dev/nullb0 "${mount_dir}" > # dd if=3D/dev/zero of=3D"${mount_dir}/test.dat" bs=3D1M count=3D192 > # dd if=3D"${mount_dir}/test.dat" of=3D/dev/null bs=3D1M count=3D192 ifl= ag=3Ddirect > > I created a fix candidate patch [1]. It modifies f2fs_iomap_begin() to ha= ndle > map->m_pblk as the physical block address from each device start, not the > address of whole f2fs. I confirmed it avoids the WARN. > > But I'm not so sure if the fix is good enough. map->m_pblk has dual meani= ngs. > Sometimes it holds the physical block address of each device, and sometim= es > the address of the whole f2fs. I'm not sure what is the condition for > map->m_pblk to have which meaning. I guess F2FS_GET_BLOCK_DIO flag is the > condition, but f2fs_map_blocks_cached() does not ensure it. > > Also, I noticed that map->m_pblk is referred to in other functions below,= and > not sure if they need the similar change as I did for f2fs_iomap_begin(). > > f2fs_fiemap() > f2fs_read_single_page() > f2fs_bmap() > check_swap_activate() > > I would like to hear advices from f2fs experts for the fix. > > > [1] > > diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c > index 26e317696b33..5232223a69e5 100644 > --- a/fs/f2fs/data.c > +++ b/fs/f2fs/data.c > @@ -1569,6 +1569,7 @@ static bool f2fs_map_blocks_cached(struct inode *in= ode, > int bidx =3D f2fs_target_device_index(sbi, map->m_pblk); > struct f2fs_dev_info *dev =3D &sbi->devs[bidx]; > > + map->m_multidev_dio =3D true; > map->m_bdev =3D dev->bdev; > map->m_pblk -=3D dev->start_blk; > map->m_len =3D min(map->m_len, dev->end_blk + 1 - map->m_= pblk); > @@ -4211,9 +4212,11 @@ static int f2fs_iomap_begin(struct inode *inode, l= off_t offset, loff_t length, > unsigned int flags, struct iomap *iomap, > struct iomap *srcmap) > { > + struct f2fs_sb_info *sbi =3D F2FS_I_SB(inode); > struct f2fs_map_blocks map =3D {}; > pgoff_t next_pgofs =3D 0; > - int err; > + block_t pblk; > + int err, i; > > map.m_lblk =3D bytes_to_blks(inode, offset); > map.m_len =3D bytes_to_blks(inode, offset + length - 1) - map.m_l= blk + 1; > @@ -4239,12 +4242,17 @@ static int f2fs_iomap_begin(struct inode *inode, = loff_t offset, loff_t length, > * We should never see delalloc or compressed extents here based = on > * prior flushing and checks. > */ > - if (WARN_ON_ONCE(map.m_pblk =3D=3D NEW_ADDR)) > + pblk =3D map.m_pblk; > + if (map.m_multidev_dio && map.m_flags & F2FS_MAP_MAPPED) > + for (i =3D 0; i < sbi->s_ndevs; i++) > + if (FDEV(i).bdev =3D=3D map.m_bdev) > + pblk +=3D FDEV(i).start_blk; > + if (WARN_ON_ONCE(pblk =3D=3D NEW_ADDR)) > return -EINVAL; > - if (WARN_ON_ONCE(map.m_pblk =3D=3D COMPRESS_ADDR)) > + if (WARN_ON_ONCE(pblk =3D=3D COMPRESS_ADDR)) > return -EINVAL; > > - if (map.m_pblk !=3D NULL_ADDR) { > + if (pblk !=3D NULL_ADDR) { I feel like we should check only whether the block is really mapped or not by checking F2FS_MAP_MAPPED field without changing the pblk, since "0" pblk for the secondary device should remain 0 if it's the correct value. > iomap->length =3D blks_to_bytes(inode, map.m_len); > iomap->type =3D IOMAP_MAPPED; > iomap->flags |=3D IOMAP_F_MERGED; > > _______________________________________________ > Linux-f2fs-devel mailing list > Linux-f2fs-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.sourceforge.net (lists.sourceforge.net [216.105.38.7]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1B718C54E5D for ; Mon, 18 Mar 2024 21:12:27 +0000 (UTC) Received: from [127.0.0.1] (helo=sfs-ml-1.v29.lw.sourceforge.com) by sfs-ml-1.v29.lw.sourceforge.com with esmtp (Exim 4.95) (envelope-from ) id 1rmKHS-0006n1-3V; Mon, 18 Mar 2024 21:12:26 +0000 Received: from [172.30.20.202] (helo=mx.sourceforge.net) by sfs-ml-1.v29.lw.sourceforge.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1rmKHR-0006mv-5I for linux-f2fs-devel@lists.sourceforge.net; Mon, 18 Mar 2024 21:12:25 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=Content-Transfer-Encoding:Content-Type:Cc:To: Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version:Sender: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=jOmSWXBGJKbpv4KQjbyvpjiMj6pPHXaAxI1UbGjWR3A=; b=cQwoQCf5fOS40HIaa3ekerKu5P iNDfWGOgfRfBDImVKmA4Hluc9N+aWhRbUSBfOg2DngUuIBivaWuAIk4cPL6eiO9xV18hQFaa4ZVvi F3iJDvQw+c2BZuzGhUjyVzY3UCmCXCmxWpGuXdMaJei/d8qVVtSTunveNNt4hn/7hSAs=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=Content-Transfer-Encoding:Content-Type:Cc:To:Subject:Message-ID:Date:From :In-Reply-To:References:MIME-Version:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=jOmSWXBGJKbpv4KQjbyvpjiMj6pPHXaAxI1UbGjWR3A=; b=Q8GLdnzAypKv04t/3ayhbBeqHA rMqREjaEcXxdJRAxcCOnPyYzvb9Vml2wBifju0GJdmMKDahfzpqixA/958H2mwbPivwFJoNknARPQ Gsk3SnOsJzw/lzXQjSbTOPO66waDB41+Vhf1sqKcJMZWPN27/5Hp7sN+Hqy/FNI5j04A=; Received: from mail-vk1-f181.google.com ([209.85.221.181]) by sfi-mx-2.v28.lw.sourceforge.com with esmtps (TLS1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.95) id 1rmKHE-0003r9-Pv for linux-f2fs-devel@lists.sourceforge.net; Mon, 18 Mar 2024 21:12:24 +0000 Received: by mail-vk1-f181.google.com with SMTP id 71dfb90a1353d-4d43c633fecso1160423e0c.3 for ; Mon, 18 Mar 2024 14:12:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1710796334; x=1711401134; darn=lists.sourceforge.net; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=jOmSWXBGJKbpv4KQjbyvpjiMj6pPHXaAxI1UbGjWR3A=; b=kKDCztwn/pU8PFZnVuuIrV3TEAu/TQehH/JSXtuOcg0Zo8r81A3UmCYga41b0w6Opv kqHpDd0f3nLHTYLsfNbziFvFniWQihnu9mSw3uem3WWd9gdCw6hdHq6Ij558B9+01WRM vK0EtSIxEPI+VkBTOozCqmzwFTJpSI/fXzJiO1pUbk7cH6emcpa6mdYj2Qz8obCUicPJ 4t6t3fMdCYE6qLOojk6o6kh3/Z6SEN/0qIyRsIiiHMVRaM9UH4wKUcX5sNiTDtNVpbVA cZykjBNvCyGJVHSJcEawv8oHPfcj25IGgcvtgf8Rf0H+1z+SttgACWCDlaP+g7+jV6W2 dvkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710796334; x=1711401134; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jOmSWXBGJKbpv4KQjbyvpjiMj6pPHXaAxI1UbGjWR3A=; b=cwLaCcOPtJey88mKlXO85ztFWgJyHndmBg1m2WR7ccBwpxqtD0C/ewsxQ91EPRG3zc FT8w2dC21kOz6nLxrTMZMt8Yh00YxPbsv/ERZ8tzB3I5otUep6yodEd4QNQ5tPM9cruM HYm9TPLTMS1fw9HwjW5x80fw0TBBusCrrvV/+8y6SeGkERVxYKDzVmv4mqICVlTnv6om uH+u1pGAlqN8OcVKKfADMEiQ7qKiEePS4dBJLdBDSh/MVviOHfcI/O8W/6nY8njRxCv2 vcJxLW2BUKtO4xvy/Bt9++kNvrM7eVqGRUDqFjxzWkfpj6YR+3uYTVZ2TH7sluhGlXJI b7Og== X-Forwarded-Encrypted: i=1; AJvYcCVvA3tDGOqM7XGmwcBV+9X7ddF5cF1RdB4K3oNq47HwO38mwb9nxx/9zK5eLDLVWLwLk+NCCvpE5mk+apm7KBLiE13mNSHyV8rg/tuHs2/k7eIK4S4+ig== X-Gm-Message-State: AOJu0Yx4RZlJoVwW2sky2i56OXAN5UV4A3lEjoLvOSU90VwKiGsSl+s0 N5fsM7pmxmh1F3Zi/uiVCgn0I1ztVZS96iXnKqR3sm6PDbKIaivjyN17EBYJQWoNVOdbun5uf2s p3n18o3kzbfIE+ykrHLq5Urh9E0c= X-Google-Smtp-Source: AGHT+IEAhnFwrXMM6Rg9dK7wlk0KB/AmNzUGURp45Z+sDG85WK9MSZZSjGyY7ZzAgyJc2CGBxoRdPDSNyZeqvGrWC78= X-Received: by 2002:a1f:f401:0:b0:4d3:3446:6bcb with SMTP id s1-20020a1ff401000000b004d334466bcbmr320068vkh.16.1710796333894; Mon, 18 Mar 2024 14:12:13 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Daeho Jeong Date: Mon, 18 Mar 2024 14:12:02 -0700 Message-ID: To: Shinichiro Kawasaki X-Headers-End: 1rmKHE-0003r9-Pv Subject: Re: [f2fs-dev] [bug report]WARNING: CPU: 22 PID: 44011 at fs/iomap/iter.c:51 iomap_iter+0x32b observed with blktests zbd/010 X-BeenThere: linux-f2fs-devel@lists.sourceforge.net X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-block , Jaegeuk Kim , Yi Zhang , Bart Van Assche , "linux-f2fs-devel@lists.sourceforge.net" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net T24gU3VuLCBNYXIgMTcsIDIwMjQgYXQgMTA6NDnigK9QTSBTaGluaWNoaXJvIEthd2FzYWtpIHZp YQpMaW51eC1mMmZzLWRldmVsIDxsaW51eC1mMmZzLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5l dD4gd3JvdGU6Cj4KPiBJIGNvbmZpcm1lZCB0aGF0IHRoZSB0cmlnZ2VyIGNvbW1pdCBpcyBkYmY4 ZTYzZjQ4YWYgYXMgWWkgcmVwb3J0ZWQuIEkgdG9vayBhCj4gbG9vayBpbiB0aGUgY29tbWl0LCBi dXQgaXQgbG9va3MgZmluZSB0byBtZS4gU28gSSB0aG91Z2h0IHRoZSBjYXVzZSBpcyBub3QKPiBp biB0aGUgY29tbWl0IGRpZmYuCj4KPiBJIGZvdW5kIHRoZSBXQVJOIGlzIHByaW50ZWQgd2hlbiB0 aGUgZjJmcyBpcyBzZXQgdXAgd2l0aCBtdWx0aXBsZSBkZXZpY2VzLAo+IGFuZCByZWFkIHJlcXVl c3RzIGFyZSBtYXBwZWQgdG8gdGhlIHZlcnkgZmlyc3QgYmxvY2sgb2YgdGhlIHNlY29uZCBkZXZp Y2UgaW4gdGhlCj4gZGlyZWN0IHJlYWQgcGF0aC4gSW4gdGhpcyBjYXNlLCBmMmZzX21hcF9ibG9j a3MoKSBhbmQgZjJmc19tYXBfYmxvY2tzX2NhY2hlZCgpCj4gbW9kaWZ5IG1hcC0+bV9wYmxrIGFz IHRoZSBwaHlzaWNhbCBibG9jayBhZGRyZXNzIGZyb20gZWFjaCBibG9jayBkZXZpY2UuIEl0Cj4g YmVjb21lcyB6ZXJvIHdoZW4gaXQgaXMgbWFwcGVkIHRvIHRoZSBmaXJzdCBibG9jayBvZiB0aGUg ZGV2aWNlLiBIb3dldmVyLAo+IGYyZnNfaW9tYXBfYmVnaW4oKSBhc3N1bWVzIHRoYXQgbWFwLT5t X3BibGsgaXMgdGhlIHBoeXNpY2FsIGJsb2NrIGFkZHJlc3Mgb2YgdGhlCj4gd2hvbGUgZjJmcywg YWNyb3NzIHRoZSBhbGwgYmxvY2sgZGV2aWNlcy4gSXQgY29tcGFyZXMgbWFwLT5tX3BibGsgYWdh aW5zdAo+IE5VTExfQUREUiA9PSAwLCB0aGVuIGdvIGludG8gdGhlIHVuZXhwZWN0ZWQgYnJhbmNo IGFuZCBzZXRzIHRoZSBpbnZhbGlkCj4gaW9tYXAtPmxlbmd0aC4gVGhlIFdBUk4gY2F0Y2hlcyB0 aGUgaW52YWxpZCBpb21hcC0+bGVuZ3RoLgo+Cj4gVGhpcyBXQVJOIGlzIHByaW50ZWQgZXZlbiBm b3Igbm9uLXpvbmVkIGJsb2NrIGRldmljZXMsIGJ5IGZvbGxvd2luZyBzdGVwcy4KPgo+ICAtIENy ZWF0ZSB0d28gKG5vbi16b25lZCkgbnVsbF9ibGsgZGV2aWNlcyBtZW1vcnkgYmFja2VkIHdpdGgg MTI4TUIgc2l6ZSBlYWNoOgo+ICAgIG51bGxiMCBhbmQgbnVsbGIxLgo+ICAjIG1rZnMuZjJmcyAv ZGV2L251bGxiMCAtYyAvZGV2L251bGxiMQo+ICAjIG1vdW50IC10IGYyZnMgL2Rldi9udWxsYjAg IiR7bW91bnRfZGlyfSIKPiAgIyBkZCBpZj0vZGV2L3plcm8gb2Y9IiR7bW91bnRfZGlyfS90ZXN0 LmRhdCIgYnM9MU0gY291bnQ9MTkyCj4gICMgZGQgaWY9IiR7bW91bnRfZGlyfS90ZXN0LmRhdCIg b2Y9L2Rldi9udWxsIGJzPTFNIGNvdW50PTE5MiBpZmxhZz1kaXJlY3QKPgo+IEkgY3JlYXRlZCBh IGZpeCBjYW5kaWRhdGUgcGF0Y2ggWzFdLiBJdCBtb2RpZmllcyBmMmZzX2lvbWFwX2JlZ2luKCkg dG8gaGFuZGxlCj4gbWFwLT5tX3BibGsgYXMgdGhlIHBoeXNpY2FsIGJsb2NrIGFkZHJlc3MgZnJv bSBlYWNoIGRldmljZSBzdGFydCwgbm90IHRoZQo+IGFkZHJlc3Mgb2Ygd2hvbGUgZjJmcy4gSSBj b25maXJtZWQgaXQgYXZvaWRzIHRoZSBXQVJOLgo+Cj4gQnV0IEknbSBub3Qgc28gc3VyZSBpZiB0 aGUgZml4IGlzIGdvb2QgZW5vdWdoLiBtYXAtPm1fcGJsayBoYXMgZHVhbCBtZWFuaW5ncy4KPiBT b21ldGltZXMgaXQgaG9sZHMgdGhlIHBoeXNpY2FsIGJsb2NrIGFkZHJlc3Mgb2YgZWFjaCBkZXZp Y2UsIGFuZCBzb21ldGltZXMKPiB0aGUgYWRkcmVzcyBvZiB0aGUgd2hvbGUgZjJmcy4gSSdtIG5v dCBzdXJlIHdoYXQgaXMgdGhlIGNvbmRpdGlvbiBmb3IKPiBtYXAtPm1fcGJsayB0byBoYXZlIHdo aWNoIG1lYW5pbmcuIEkgZ3Vlc3MgRjJGU19HRVRfQkxPQ0tfRElPIGZsYWcgaXMgdGhlCj4gY29u ZGl0aW9uLCBidXQgZjJmc19tYXBfYmxvY2tzX2NhY2hlZCgpIGRvZXMgbm90IGVuc3VyZSBpdC4K Pgo+IEFsc28sIEkgbm90aWNlZCB0aGF0IG1hcC0+bV9wYmxrIGlzIHJlZmVycmVkIHRvIGluIG90 aGVyIGZ1bmN0aW9ucyBiZWxvdywgYW5kCj4gbm90IHN1cmUgaWYgdGhleSBuZWVkIHRoZSBzaW1p bGFyIGNoYW5nZSBhcyBJIGRpZCBmb3IgZjJmc19pb21hcF9iZWdpbigpLgo+Cj4gICBmMmZzX2Zp ZW1hcCgpCj4gICBmMmZzX3JlYWRfc2luZ2xlX3BhZ2UoKQo+ICAgZjJmc19ibWFwKCkKPiAgIGNo ZWNrX3N3YXBfYWN0aXZhdGUoKQo+Cj4gSSB3b3VsZCBsaWtlIHRvIGhlYXIgYWR2aWNlcyBmcm9t IGYyZnMgZXhwZXJ0cyBmb3IgdGhlIGZpeC4KPgo+Cj4gWzFdCj4KPiBkaWZmIC0tZ2l0IGEvZnMv ZjJmcy9kYXRhLmMgYi9mcy9mMmZzL2RhdGEuYwo+IGluZGV4IDI2ZTMxNzY5NmIzMy4uNTIzMjIy M2E2OWU1IDEwMDY0NAo+IC0tLSBhL2ZzL2YyZnMvZGF0YS5jCj4gKysrIGIvZnMvZjJmcy9kYXRh LmMKPiBAQCAtMTU2OSw2ICsxNTY5LDcgQEAgc3RhdGljIGJvb2wgZjJmc19tYXBfYmxvY2tzX2Nh Y2hlZChzdHJ1Y3QgaW5vZGUgKmlub2RlLAo+ICAgICAgICAgICAgICAgICBpbnQgYmlkeCA9IGYy ZnNfdGFyZ2V0X2RldmljZV9pbmRleChzYmksIG1hcC0+bV9wYmxrKTsKPiAgICAgICAgICAgICAg ICAgc3RydWN0IGYyZnNfZGV2X2luZm8gKmRldiA9ICZzYmktPmRldnNbYmlkeF07Cj4KPiArICAg ICAgICAgICAgICAgbWFwLT5tX211bHRpZGV2X2RpbyA9IHRydWU7Cj4gICAgICAgICAgICAgICAg IG1hcC0+bV9iZGV2ID0gZGV2LT5iZGV2Owo+ICAgICAgICAgICAgICAgICBtYXAtPm1fcGJsayAt PSBkZXYtPnN0YXJ0X2JsazsKPiAgICAgICAgICAgICAgICAgbWFwLT5tX2xlbiA9IG1pbihtYXAt Pm1fbGVuLCBkZXYtPmVuZF9ibGsgKyAxIC0gbWFwLT5tX3BibGspOwo+IEBAIC00MjExLDkgKzQy MTIsMTEgQEAgc3RhdGljIGludCBmMmZzX2lvbWFwX2JlZ2luKHN0cnVjdCBpbm9kZSAqaW5vZGUs IGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW5ndGgsCj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCBmbGFncywgc3RydWN0IGlvbWFwICppb21hcCwKPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IGlvbWFwICpzcmNtYXApCj4gIHsKPiArICAgICAgIHN0 cnVjdCBmMmZzX3NiX2luZm8gKnNiaSA9IEYyRlNfSV9TQihpbm9kZSk7Cj4gICAgICAgICBzdHJ1 Y3QgZjJmc19tYXBfYmxvY2tzIG1hcCA9IHt9Owo+ICAgICAgICAgcGdvZmZfdCBuZXh0X3Bnb2Zz ID0gMDsKPiAtICAgICAgIGludCBlcnI7Cj4gKyAgICAgICBibG9ja190IHBibGs7Cj4gKyAgICAg ICBpbnQgZXJyLCBpOwo+Cj4gICAgICAgICBtYXAubV9sYmxrID0gYnl0ZXNfdG9fYmxrcyhpbm9k ZSwgb2Zmc2V0KTsKPiAgICAgICAgIG1hcC5tX2xlbiA9IGJ5dGVzX3RvX2Jsa3MoaW5vZGUsIG9m ZnNldCArIGxlbmd0aCAtIDEpIC0gbWFwLm1fbGJsayArIDE7Cj4gQEAgLTQyMzksMTIgKzQyNDIs MTcgQEAgc3RhdGljIGludCBmMmZzX2lvbWFwX2JlZ2luKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxv ZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW5ndGgsCj4gICAgICAgICAgKiBXZSBzaG91bGQgbmV2ZXIg c2VlIGRlbGFsbG9jIG9yIGNvbXByZXNzZWQgZXh0ZW50cyBoZXJlIGJhc2VkIG9uCj4gICAgICAg ICAgKiBwcmlvciBmbHVzaGluZyBhbmQgY2hlY2tzLgo+ICAgICAgICAgICovCj4gLSAgICAgICBp ZiAoV0FSTl9PTl9PTkNFKG1hcC5tX3BibGsgPT0gTkVXX0FERFIpKQo+ICsgICAgICAgcGJsayA9 IG1hcC5tX3BibGs7Cj4gKyAgICAgICBpZiAobWFwLm1fbXVsdGlkZXZfZGlvICYmIG1hcC5tX2Zs YWdzICYgRjJGU19NQVBfTUFQUEVEKQo+ICsgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwg c2JpLT5zX25kZXZzOyBpKyspCj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKEZERVYoaSku YmRldiA9PSBtYXAubV9iZGV2KQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGJs ayArPSBGREVWKGkpLnN0YXJ0X2JsazsKPiArICAgICAgIGlmIChXQVJOX09OX09OQ0UocGJsayA9 PSBORVdfQUREUikpCj4gICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+IC0gICAgICAg aWYgKFdBUk5fT05fT05DRShtYXAubV9wYmxrID09IENPTVBSRVNTX0FERFIpKQo+ICsgICAgICAg aWYgKFdBUk5fT05fT05DRShwYmxrID09IENPTVBSRVNTX0FERFIpKQo+ICAgICAgICAgICAgICAg ICByZXR1cm4gLUVJTlZBTDsKPgo+IC0gICAgICAgaWYgKG1hcC5tX3BibGsgIT0gTlVMTF9BRERS KSB7Cj4gKyAgICAgICBpZiAocGJsayAhPSBOVUxMX0FERFIpIHsKCkkgZmVlbCBsaWtlIHdlIHNo b3VsZCBjaGVjayBvbmx5IHdoZXRoZXIgdGhlIGJsb2NrIGlzIHJlYWxseSBtYXBwZWQgb3IKbm90 IGJ5IGNoZWNraW5nIEYyRlNfTUFQX01BUFBFRCBmaWVsZCB3aXRob3V0IGNoYW5naW5nIHRoZSBw YmxrLCBzaW5jZQoiMCIgcGJsayBmb3IgdGhlIHNlY29uZGFyeSBkZXZpY2Ugc2hvdWxkIHJlbWFp biAwIGlmIGl0J3MgdGhlIGNvcnJlY3QKdmFsdWUuCgo+ICAgICAgICAgICAgICAgICBpb21hcC0+ bGVuZ3RoID0gYmxrc190b19ieXRlcyhpbm9kZSwgbWFwLm1fbGVuKTsKPiAgICAgICAgICAgICAg ICAgaW9tYXAtPnR5cGUgPSBJT01BUF9NQVBQRUQ7Cj4gICAgICAgICAgICAgICAgIGlvbWFwLT5m bGFncyB8PSBJT01BUF9GX01FUkdFRDsKPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCj4gTGludXgtZjJmcy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBMaW51 eC1mMmZzLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldAo+IGh0dHBzOi8vbGlzdHMuc291cmNl Zm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL2xpbnV4LWYyZnMtZGV2ZWwKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1mMmZzLWRldmVsIG1haWxp bmcgbGlzdApMaW51eC1mMmZzLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldApodHRwczovL2xp c3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0aW5mby9saW51eC1mMmZzLWRldmVsCg==