`PageTableEntry::addr` needs a `is_level_1_entry` arg

オープン
#613 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
48/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
rust

調査の方向性

Start at the PageTableEntry::addr entry point and trace the functions that call it, since the issue says they also need the is_level_1_entry flag. Check how PAT support from pull request 548 affects address masking and verify that huge-page addresses mask the potential PAT bit while 4KiB-page addresses remain correct. Done means the flag is propagated through all affected callers and addr returns the correct address for both cases.

索引モデルが issue の本文から書いたものです。

説明

We need to mask off a potential PAT bit at position 12 in the addr method, but only if this is a huge page. Otherwise the address is incorrect. Unfortunately we cannot find out whether an entry is mapping a huge page because the huge page bit is reused as PAT bit for 4KiB pages. So we need an additional is_level_1_entry argument for addr to decide this.

Unfortunately there are a lot of functions that call addr, so these will need a is_level_1_entry flag too...

PAT support was introduced in https://github.com/rust-osdev/x86_64/pull/548

主要言語
Rust
スター
942
フォーク
162
平均マージ
1日 13時間
マージ済み PR(30日)
2

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

rust-osdev/x86_64 のほかの issue

rust-osdev/x86_64 の issue をすべて見る

似ている issue

Rust の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。